qa-prevention-xgf-app/components/time/index.vue

96 lines
1.9 KiB
Vue

<template>
<view>
<u-form-item
:label="label"
:prop="prop"
:required="required"
:label-position="labelPosition"
@click="fnShowPicker"
>
<view class="select_content">
<u-input
:value="value || '请选择'"
border="none"
input-align="right"
readonly
/>
<u-icon name="arrow-right"></u-icon>
</view>
</u-form-item>
<u-line/>
<u-datetime-picker
v-model="currentValue"
:show="visible"
:max-date="maxDate"
:min-date="minDate"
:mode="mode"
@cancel="visible = false"
@confirm="fnConfirm"
/>
</view>
</template>
<script>
import dayjs from "dayjs";
export default {
props: {
value: {
type: String,
required: true,
default: "",
},
label: {
type: String,
default: "时间",
},
prop: {
type: String,
default: "",
},
mode: {
type: String,
default: "datetime",
},
labelPosition: {
type: String,
default: "left",
},
required: {
type: Boolean,
default: true,
},
maxDate: {
type: Number,
default: dayjs().add(10, "year").valueOf(),
},
minDate: {
type: Number,
default: dayjs().subtract(10, "year").valueOf(),
},
},
data() {
return {
visible: false,
currentValue: this.value ? dayjs(this.value).valueOf() : new Date().getTime(),
}
},
methods: {
fnShowPicker() {
this.visible = true
},
fnConfirm({mode, value}) {
if (mode === "datetime")
this.$emit('input', dayjs(value).format("YYYY-MM-DD HH:mm"))
else if (mode === "date")
this.$emit('input', dayjs(value).format("YYYY-MM-DD"))
else if (mode === "year-month")
this.$emit('input', dayjs(value).format("YYYY-MM"))
this.visible = false;
}
},
}
</script>
<style scoped lang="scss"></style>