From 0c665c6b3c7d519f9f1edbb70a693c10a8db4e40 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Thu, 5 Sep 2024 19:02:48 +0800 Subject: [PATCH] =?UTF-8?q?fix(form):=20date=E7=BB=84=E4=BB=B6=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E6=97=B6=E4=B8=8D=E6=98=BE=E7=A4=BA=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/design/src/types.ts | 2 ++ packages/form/src/containers/Container.vue | 2 -- packages/form/src/fields/Date.vue | 2 +- packages/form/src/fields/Daterange.vue | 26 ++++++---------------- 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/packages/design/src/types.ts b/packages/design/src/types.ts index 8f35c558..e13a3bdd 100644 --- a/packages/design/src/types.ts +++ b/packages/design/src/types.ts @@ -107,6 +107,8 @@ export interface DatePickerProps { startPlaceholder?: string; endPlaceholder?: string; format?: string; + dateFormat?: string; + timeFormat?: string; /** 可选,绑定值的格式。 不指定则绑定值为 Date 对象 */ valueFormat?: string; /** 在范围选择器里取消两个日期面板之间的联动 */ diff --git a/packages/form/src/containers/Container.vue b/packages/form/src/containers/Container.vue index fa3ed873..c7a778fa 100644 --- a/packages/form/src/containers/Container.vue +++ b/packages/form/src/containers/Container.vue @@ -45,7 +45,6 @@ { emit('change', v); diff --git a/packages/form/src/fields/Daterange.vue b/packages/form/src/fields/Daterange.vue index f22d6bce..812ba8a2 100644 --- a/packages/form/src/fields/Daterange.vue +++ b/packages/form/src/fields/Daterange.vue @@ -22,7 +22,6 @@ import { ref, watch } from 'vue'; import { TMagicDatePicker } from '@tmagic/design'; import type { DaterangeConfig, FieldProps } from '../schema'; -import { datetimeFormatter } from '../utils/form'; import { useAddField } from '../utils/useAddField'; defineOptions({ @@ -35,7 +34,6 @@ const emit = defineEmits(['change']); useAddField(props.prop); -// eslint-disable-next-line vue/no-setup-props-destructure const { names } = props.config; const value = ref<(Date | undefined)[] | null>([]); @@ -48,8 +46,8 @@ if (props.model !== undefined) { value.value = []; } if (!start || !end) value.value = []; - if (start !== preStart) value.value[0] = new Date(start); - if (end !== preEnd) value.value[1] = new Date(end); + if (start !== preStart) value.value[0] = start; + if (end !== preEnd) value.value[1] = end; }, { immediate: true, @@ -58,8 +56,8 @@ if (props.model !== undefined) { } else if (props.name && props.model[props.name]) { watch( () => props.model[props.name], - (start, preStart) => { - if (start !== preStart) value.value = start.map((item: string) => (item ? new Date(item) : undefined)); + (start) => { + value.value = start; }, { immediate: true, @@ -74,11 +72,7 @@ const setValue = (v: Date[] | Date) => { return; } if (Array.isArray(v)) { - props.model[item] = datetimeFormatter( - v[index]?.toString(), - '', - props.config.valueFormat || 'YYYY/MM/DD HH:mm:ss', - ); + props.model[item] = v[index]; } else { props.model[item] = undefined; } @@ -89,18 +83,12 @@ const changeHandler = (v: Date[]) => { const value = v || []; if (props.name) { - emit( - 'change', - value.map((item?: Date) => { - if (item) return datetimeFormatter(item, '', props.config.valueFormat || 'YYYY/MM/DD HH:mm:ss'); - return undefined; - }), - ); + emit('change', value); } else { if (names?.length) { setValue(value); } - emit('change', value); + emit('change', props.model); } };