From 8ed97335c93d14d6ac983ab06c8d1dcbfe8d064d Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 8 Jun 2026 13:20:30 +0800 Subject: [PATCH 01/33] =?UTF-8?q?fix(mall):=20=E4=BF=AE=E5=A4=8D=E6=96=87?= =?UTF-8?q?=E7=AB=A0=E8=A1=A8=E5=8D=95=E5=95=86=E5=93=81=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 初始化文章表单 formData,避免商品关联插槽渲染报错 - 禁用父级弹窗点击遮罩关闭,避免打开商品选择时关闭文章弹窗 - 修正文章新增默认值,热门/轮播默认 false,排序默认 0 - 同步修复 antd、antdv-next、ele 三端 --- .../src/views/mall/promotion/article/data.ts | 12 +++++----- .../mall/promotion/article/modules/form.vue | 10 ++++----- .../src/views/mall/promotion/article/data.ts | 12 +++++----- .../mall/promotion/article/modules/form.vue | 10 ++++----- .../src/views/mall/promotion/article/data.ts | 22 +++++++++---------- .../mall/promotion/article/modules/form.vue | 10 ++++----- 6 files changed, 35 insertions(+), 41 deletions(-) diff --git a/apps/web-antd/src/views/mall/promotion/article/data.ts b/apps/web-antd/src/views/mall/promotion/article/data.ts index f007898e5..1724faea4 100644 --- a/apps/web-antd/src/views/mall/promotion/article/data.ts +++ b/apps/web-antd/src/views/mall/promotion/article/data.ts @@ -76,24 +76,22 @@ export function useFormSchema(): VbenFormSchema[] { label: '是否热门', component: 'RadioGroup', componentProps: { - options: getDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING, 'boolean'), buttonStyle: 'solid', optionType: 'button', + options: getDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING, 'boolean'), }, - rules: 'required', - defaultValue: true, + rules: z.boolean().default(false), }, { fieldName: 'recommendBanner', label: '是否轮播图', component: 'RadioGroup', componentProps: { - options: getDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING, 'boolean'), buttonStyle: 'solid', optionType: 'button', + options: getDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING, 'boolean'), }, - rules: 'required', - defaultValue: true, + rules: z.boolean().default(false), }, { fieldName: 'spuId', @@ -110,7 +108,7 @@ export function useFormSchema(): VbenFormSchema[] { min: 0, placeholder: '请输入排序', }, - rules: 'required', + rules: z.number().default(0), }, { fieldName: 'status', diff --git a/apps/web-antd/src/views/mall/promotion/article/modules/form.vue b/apps/web-antd/src/views/mall/promotion/article/modules/form.vue index 0e73e0eca..0caf8634b 100644 --- a/apps/web-antd/src/views/mall/promotion/article/modules/form.vue +++ b/apps/web-antd/src/views/mall/promotion/article/modules/form.vue @@ -20,7 +20,7 @@ import { useFormSchema } from '../data'; const emit = defineEmits(['success']); -const formData = ref(); +const formData = ref>({}); const getTitle = computed(() => { return formData.value?.id ? $t('ui.actionTitle.edit', ['文章']) @@ -43,7 +43,7 @@ const [Form, formApi] = useVbenForm({ const [Modal, modalApi] = useVbenModal({ async onConfirm() { // 同步商品选择到表单,确保验证时能获取到值 - if (formData.value?.spuId) { + if (formData.value.spuId) { await formApi.setFieldValue('spuId', formData.value.spuId); } const { valid } = await formApi.validate(); @@ -65,7 +65,7 @@ const [Modal, modalApi] = useVbenModal({ }, async onOpenChange(isOpen: boolean) { if (!isOpen) { - formData.value = undefined; + formData.value = {}; return; } // 加载数据 @@ -86,11 +86,11 @@ const [Modal, modalApi] = useVbenModal({