From 781c5222de02cc7943aaf7e449e3a89d30925f1d Mon Sep 17 00:00:00 2001 From: WUSIJIAN <13825895+wsj0228@user.noreply.gitee.com> Date: Sun, 4 Jan 2026 11:42:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96SKU=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/dict/data.ts | 2 +- .../assets/asset/component/skuDialog.vue | 31 +++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/api/system/dict/data.ts b/src/api/system/dict/data.ts index f08a95d..d603be7 100644 --- a/src/api/system/dict/data.ts +++ b/src/api/system/dict/data.ts @@ -14,7 +14,7 @@ export function getDict(dictType :string,defaultValue?:string):Promise { }) } -// 根据字典类型查询字典数据信息 +// 根据字典类型查询字典数据信息(新方案) export function getDicts(dictType :string,defaultValue?:string):Promise { let dv = defaultValue??'' let params ={ diff --git a/src/views/assets/asset/component/skuDialog.vue b/src/views/assets/asset/component/skuDialog.vue index 5cfb140..47a1d2a 100644 --- a/src/views/assets/asset/component/skuDialog.vue +++ b/src/views/assets/asset/component/skuDialog.vue @@ -191,8 +191,25 @@ const specValuesMap = reactive>({}); const skuRules: FormRules = { skuName: [{ required: true, message: '请输入SKU名称', trigger: 'blur' }], - price: [{ required: true, message: '请输入价格', trigger: 'blur' }], - stock: [{ required: true, message: '请输入库存数量', trigger: 'blur' }], + price: [ + { required: true, message: '请输入价格', trigger: 'blur' }, + { type: 'number', min: 0.01, message: '价格必须大于0', trigger: 'blur' } + ], + stock: [ + { required: true, message: '请输入库存数量', trigger: 'blur' }, + { + validator: (rule: any, value: any, callback: any) => { + if (skuForm.unlimitedStock) { + callback(); + } else if (value === 0 || value === undefined || value === null) { + callback(new Error('库存数量必须大于0')); + } else { + callback(); + } + }, + trigger: 'blur' + } + ], imageUrl: [{ required: true, message: '请上传SKU图片', trigger: 'change' }], }; @@ -440,6 +457,16 @@ const onSubmitSku = async () => { await form.validate(async (valid) => { if (!valid) return; + // 校验规格属性必填 + if (assetSpecAttrs.value.length > 0) { + for (const attr of assetSpecAttrs.value) { + if (!specValuesMap[attr.name] || specValuesMap[attr.name].trim() === '') { + ElMessage.warning(`请填写规格属性:${attr.name}`); + return; + } + } + } + submitLoading.value = true; // 构建规格属性对象(优先使用 specValuesMap)