mirror of
https://github.com/bufanyun/hotgo.git
synced 2025-09-23 19:56:40 +08:00
94 lines
2.3 KiB
Vue
94 lines
2.3 KiB
Vue
<template>
|
|
<n-date-picker v-bind="$props" v-model:value="modelValue" :shortcuts="shortcuts" :clearable="true"/>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { computed, defineComponent, onMounted, ref } from 'vue';
|
|
import {
|
|
dateToTimestamp,
|
|
formatToDate,
|
|
formatToDateTime,
|
|
timestampToTime,
|
|
defShortcuts,
|
|
defRangeShortcuts,
|
|
} from '@/utils/dateUtil';
|
|
import { basicProps } from './props';
|
|
|
|
export default defineComponent({
|
|
name: 'BasicUpload',
|
|
props: {
|
|
...basicProps,
|
|
},
|
|
emits: ['update:formValue', 'update:startValue', 'update:endValue'],
|
|
setup(props, { emit }) {
|
|
const shortcuts = ref<any>({});
|
|
|
|
function getTimestamp(value) {
|
|
let t = dateToTimestamp(value);
|
|
if (t === 0) {
|
|
return new Date().getTime();
|
|
}
|
|
return t;
|
|
}
|
|
|
|
function setTimestamp(value) {
|
|
if (!isTimeType()) {
|
|
return formatToDate(new Date(Number(value)).toDateString());
|
|
} else {
|
|
return formatToDateTime(timestampToTime(Number(value / 1000)));
|
|
}
|
|
}
|
|
|
|
function isRangeType() {
|
|
return props.type.indexOf('range') != -1;
|
|
}
|
|
|
|
function isTimeType() {
|
|
return props.type.indexOf('time') != -1;
|
|
}
|
|
|
|
const modelValue = computed({
|
|
get() {
|
|
if (!isRangeType()) {
|
|
const value = getTimestamp(props.formValue);
|
|
if (props.formValue == ""){
|
|
emit('update:formValue', setTimestamp(value));
|
|
}
|
|
return value;
|
|
} else {
|
|
const value = [getTimestamp(props.startValue), getTimestamp(props.endValue)];
|
|
if (props.startValue == "" && props.endValue == ""){
|
|
emit('update:startValue', setTimestamp(value[0]));
|
|
emit('update:endValue', setTimestamp(value[1]));
|
|
}
|
|
return value
|
|
}
|
|
},
|
|
set(value) {
|
|
if (!isRangeType()) {
|
|
emit('update:formValue', setTimestamp(value));
|
|
} else {
|
|
emit('update:startValue', setTimestamp(value[0]));
|
|
emit('update:endValue', setTimestamp(value[1]));
|
|
}
|
|
},
|
|
});
|
|
|
|
onMounted(async () => {
|
|
if (!isRangeType()) {
|
|
shortcuts.value = defShortcuts();
|
|
} else {
|
|
shortcuts.value = defRangeShortcuts();
|
|
}
|
|
});
|
|
|
|
return {
|
|
modelValue,
|
|
shortcuts,
|
|
};
|
|
},
|
|
});
|
|
</script>
|
|
|
|
<style lang="less"></style>
|