Files
EdgeAdmin/web/public/js/components/common/datepicker.js

59 lines
1.3 KiB
JavaScript
Raw Normal View History

2021-10-29 14:02:01 +08:00
Vue.component("datepicker", {
props: ["value", "v-name", "name", "v-value", "v-bottom-left", "placeholder"],
2021-10-29 14:02:01 +08:00
mounted: function () {
let that = this
teaweb.datepicker(this.$refs.dayInput, function (v) {
that.day = v
that.change()
}, !!this.vBottomLeft)
},
data: function () {
let name = this.vName
if (name == null) {
name = this.name
}
2021-10-29 14:02:01 +08:00
if (name == null) {
name = "day"
}
let day = this.vValue
if (day == null) {
day = this.value
if (day == null) {
day = ""
}
}
let placeholder = "YYYY-MM-DD"
if (this.placeholder != null) {
placeholder = this.placeholder
2021-10-29 14:02:01 +08:00
}
return {
realName: name,
realPlaceholder: placeholder,
2021-10-29 14:02:01 +08:00
day: day
}
},
watch: {
value: function (v) {
this.day = v
2022-11-04 14:35:32 +08:00
let picker = this.$refs.dayInput.picker
if (picker != null) {
if (v != null && /^\d+-\d+-\d+$/.test(v)) {
picker.setDate(v)
}
}
}
},
2021-10-29 14:02:01 +08:00
methods: {
change: function () {
this.$emit("input", this.day) // support v-model事件触发需要在 change 之前
2021-10-29 14:02:01 +08:00
this.$emit("change", this.day)
}
},
template: `<div style="display: inline-block">
<input type="text" :name="realName" v-model="day" :placeholder="realPlaceholder" style="width:8.6em" maxlength="10" @input="change" ref="dayInput" autocomplete="off"/>
2021-10-29 14:02:01 +08:00
</div>`
})