diff --git a/apps/web-antd/src/views/mall/product/spu/components/sku-list.vue b/apps/web-antd/src/views/mall/product/spu/components/sku-list.vue index a5f6f383a..383cda1cd 100644 --- a/apps/web-antd/src/views/mall/product/spu/components/sku-list.vue +++ b/apps/web-antd/src/views/mall/product/spu/components/sku-list.vue @@ -56,6 +56,7 @@ const tableHeaders = ref<{ label: string; prop: string }[]>([]); /** 创建空 SKU 数据 */ function createEmptySku(): MallSpuApi.Sku { return { + name: '', // SKU 名称,提交时会自动使用 SPU 名称 price: 0, marketPrice: 0, costPrice: 0, diff --git a/apps/web-antd/src/views/mall/product/spu/form/index.vue b/apps/web-antd/src/views/mall/product/spu/form/index.vue index 0d654b318..e8aa3ea3a 100644 --- a/apps/web-antd/src/views/mall/product/spu/form/index.vue +++ b/apps/web-antd/src/views/mall/product/spu/form/index.vue @@ -50,6 +50,7 @@ const formData = ref({ subCommissionType: false, skus: [ { + name: '', // SKU 名称,提交时会自动使用 SPU 名称 price: 0, marketPrice: 0, costPrice: 0, @@ -181,6 +182,11 @@ async function handleSubmit() { .merge(otherFormApi) .submitAllForm(true); values.skus = formData.value.skus; + // 校验商品名称不能为空(用于 SKU name) + if (!values.name || values.name.trim() === '') { + message.error('商品名称不能为空'); + return; + } if (values.skus) { try { // 校验 sku @@ -190,6 +196,8 @@ async function handleSubmit() { return; } values.skus.forEach((item) => { + // 给 sku name 赋值(使用商品名称作为 SKU 名称) + item.name = values.name; // 金额转换:元转分 item.price = convertToInteger(item.price); item.marketPrice = convertToInteger(item.marketPrice); @@ -277,6 +285,7 @@ function handleChangeSpec() { // 重置 sku 列表 formData.value.skus = [ { + name: '', // SKU 名称,提交时会自动使用 SPU 名称 price: 0, marketPrice: 0, costPrice: 0, diff --git a/apps/web-ele/src/views/mall/product/spu/components/sku-list.vue b/apps/web-ele/src/views/mall/product/spu/components/sku-list.vue index 06dc595b9..bcf6eb617 100644 --- a/apps/web-ele/src/views/mall/product/spu/components/sku-list.vue +++ b/apps/web-ele/src/views/mall/product/spu/components/sku-list.vue @@ -62,6 +62,7 @@ const tableHeaders = ref<{ label: string; prop: string }[]>([]); /** 创建空 SKU 数据 */ function createEmptySku(): MallSpuApi.Sku { return { + name: '', // SKU 名称,提交时会自动使用 SPU 名称 price: 0, marketPrice: 0, costPrice: 0, diff --git a/apps/web-ele/src/views/mall/product/spu/form/index.vue b/apps/web-ele/src/views/mall/product/spu/form/index.vue index 5f8a53d66..b2d65e30e 100644 --- a/apps/web-ele/src/views/mall/product/spu/form/index.vue +++ b/apps/web-ele/src/views/mall/product/spu/form/index.vue @@ -50,6 +50,7 @@ const formData = ref({ subCommissionType: false, skus: [ { + name: '', // SKU 名称,提交时会自动使用 SPU 名称 price: 0, marketPrice: 0, costPrice: 0, @@ -168,8 +169,8 @@ const [OtherForm, otherFormApi] = useVbenForm({ }); /** tab 切换 */ -function handleTabChange(key: string) { - activeTabName.value = key; +function handleTabChange(key: number | string) { + activeTabName.value = key as string; } /** 提交表单 */ @@ -181,6 +182,11 @@ async function handleSubmit() { .merge(otherFormApi) .submitAllForm(true); values.skus = formData.value.skus; + // 校验商品名称不能为空(用于 SKU name) + if (!values.name || values.name.trim() === '') { + ElMessage.error('商品名称不能为空'); + return; + } if (values.skus) { try { // 校验 sku @@ -190,6 +196,8 @@ async function handleSubmit() { return; } values.skus.forEach((item) => { + // 给 sku name 赋值(使用商品名称作为 SKU 名称) + item.name = values.name; // 金额转换:元转分 item.price = convertToInteger(item.price); item.marketPrice = convertToInteger(item.marketPrice); @@ -277,6 +285,7 @@ function handleChangeSpec() { // 重置 sku 列表 formData.value.skus = [ { + name: '', // SKU 名称,提交时会自动使用 SPU 名称 price: 0, marketPrice: 0, costPrice: 0, @@ -320,7 +329,6 @@ onMounted(async () => {