|
@@ -11,66 +11,45 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
- import { objModifyAssign } from '@/utils/utils';
|
|
|
|
import { ref, watch, useAttrs } from 'vue';
|
|
import { ref, watch, useAttrs } from 'vue';
|
|
|
|
|
|
defineOptions({
|
|
defineOptions({
|
|
name: 'SelectRangeDatetime',
|
|
name: 'SelectRangeDatetime',
|
|
});
|
|
});
|
|
|
|
|
|
- interface KeysType {
|
|
|
|
- startTime: string;
|
|
|
|
- endTime: string;
|
|
|
|
- }
|
|
|
|
|
|
+ type TimeType = number | undefined;
|
|
|
|
|
|
const props = withDefaults(
|
|
const props = withDefaults(
|
|
defineProps<{
|
|
defineProps<{
|
|
- modelValue: Record<string, any>;
|
|
|
|
- keys?: KeysType;
|
|
|
|
|
|
+ startTime: TimeType;
|
|
|
|
+ endTime: TimeType;
|
|
showTime?: boolean;
|
|
showTime?: boolean;
|
|
format?: string;
|
|
format?: string;
|
|
}>(),
|
|
}>(),
|
|
{
|
|
{
|
|
- modelValue: () => {
|
|
|
|
- return {};
|
|
|
|
- },
|
|
|
|
- keys: () => {
|
|
|
|
- return { startTime: 'startTime', endTime: 'endTime' };
|
|
|
|
- },
|
|
|
|
showTime: true,
|
|
showTime: true,
|
|
format: 'YYYY-MM-DD HH:mm',
|
|
format: 'YYYY-MM-DD HH:mm',
|
|
}
|
|
}
|
|
);
|
|
);
|
|
- const emit = defineEmits(['update:modelValue', 'change']);
|
|
|
|
|
|
+ const emit = defineEmits(['update:startTime', 'update:endTime', 'change']);
|
|
const attrs = useAttrs();
|
|
const attrs = useAttrs();
|
|
|
|
|
|
const selected = ref<number[]>();
|
|
const selected = ref<number[]>();
|
|
|
|
|
|
function onChange(value: any) {
|
|
function onChange(value: any) {
|
|
- const { startTime, endTime } = props.keys;
|
|
|
|
- const dt: Record<string, number | undefined> = {};
|
|
|
|
- const vals = value as number[] | undefined;
|
|
|
|
- if (vals) {
|
|
|
|
- dt[startTime] = vals[0];
|
|
|
|
- dt[endTime] = vals[1];
|
|
|
|
- } else {
|
|
|
|
- dt[startTime] = undefined;
|
|
|
|
- dt[endTime] = undefined;
|
|
|
|
- }
|
|
|
|
- objModifyAssign(props.modelValue, dt);
|
|
|
|
- emit('update:modelValue', props.modelValue);
|
|
|
|
- emit('change', props.modelValue);
|
|
|
|
|
|
+ const vals = (value || []) as TimeType[];
|
|
|
|
+ emit('update:startTime', vals[0]);
|
|
|
|
+ emit('update:endTime', vals[1]);
|
|
|
|
+ emit('change', vals);
|
|
}
|
|
}
|
|
|
|
|
|
watch(
|
|
watch(
|
|
- () => props.modelValue,
|
|
|
|
|
|
+ () => [props.startTime, props.endTime],
|
|
(val) => {
|
|
(val) => {
|
|
- const { startTime, endTime } = props.keys;
|
|
|
|
- selected.value = [val[startTime] as number, val[endTime] as number];
|
|
|
|
|
|
+ selected.value = (val || []) as number[];
|
|
},
|
|
},
|
|
{
|
|
{
|
|
immediate: true,
|
|
immediate: true,
|
|
- deep: true,
|
|
|
|
}
|
|
}
|
|
);
|
|
);
|
|
</script>
|
|
</script>
|