From a7a820b5083e22cb7df3f3deae3dacb9f656e0fa Mon Sep 17 00:00:00 2001 From: dzl <786316265@qq.com> Date: Thu, 16 Oct 2025 17:30:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=83=A8=E5=88=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/ProductForm.vue | 27 ++++++++++++++++----------- src/views/ProductSpecCombinations.vue | 16 +++++++++------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/views/ProductForm.vue b/src/views/ProductForm.vue index 50bc751..0cc972f 100644 --- a/src/views/ProductForm.vue +++ b/src/views/ProductForm.vue @@ -379,10 +379,10 @@ - + @@ -698,6 +698,8 @@ const formRef = ref() const loading = ref(false) const categories = ref([]) +const newProductId = ref(null) + // 计算属性:一级分类 const primaryCategories = computed(() => { return categories.value.filter(cat => cat.level === 1) @@ -971,13 +973,17 @@ const generateCombinations = async () => { try { const productId = route.params.id || 'new' // 如果是新建商品,使用 'new' - await api.specifications.generateCombinations({ + const response = await api.specifications.generateCombinations({ product_id: productId, spec_name_ids: selectedSpecNames.value, default_stock: defaultStock.value }) + + // console.log('生成规格组合响应:', response.data.data.product_id) + + newProductId.value = response.data.data.product_id - await loadCombinations() + loadCombinations(newProductId.value) generateCombinationsDialogVisible.value = false selectedSpecNames.value = [] defaultStock.value = 0 @@ -1011,14 +1017,12 @@ const loadSpecValues = async () => { } // 加载规格组合 -const loadCombinations = async () => { - if (!isEdit.value) return +const loadCombinations = async (productId) => { try { - const { data } = await api.specifications.getCombinations(route.params.id) + const { data } = await api.specifications.getCombinations(productId === undefined ? route.params.id : productId) combinations.value = data.data || [] } catch (error) { - console.error('加载规格组合失败:', error) combinations.value = [] } } @@ -1045,8 +1049,9 @@ const validateSpecs = () => { const deleteCombination = async (combination) => { try { await api.specifications.deleteCombination(combination.id) - await loadCombinations() + await loadCombinations(newProductId.value) ElMessage.success('删除规格组合成功') + // console.log('删除规格组合:', combination.id) } catch (error) { ElMessage.error('删除规格组合失败') } @@ -1260,7 +1265,7 @@ onMounted(async () => { await loadSpecNames() await loadSpecValues() if (isEdit.value) { - await loadCombinations() + await loadCombinations(newProductId.value ? newProductId.value : route.params.id) } }) diff --git a/src/views/ProductSpecCombinations.vue b/src/views/ProductSpecCombinations.vue index 78efcef..e6049b7 100644 --- a/src/views/ProductSpecCombinations.vue +++ b/src/views/ProductSpecCombinations.vue @@ -96,10 +96,10 @@ - + @@ -252,7 +252,9 @@ @@ -375,7 +377,7 @@ const combinationForm = reactive({ points_adjustment: 0, rongdou_adjustment: 0, stock: 0, - is_available: true + status: 'active' }) const combinationRules = { @@ -635,7 +637,7 @@ const editCombination = (combination) => { points_adjustment: combination.points_adjustment || 0, rongdou_adjustment: combination.rongdou_adjustment || 0, stock: combination.stock || 0, - is_available: combination.is_available !== false + status: combination.status || 'active' }) combinationDialogVisible.value = true } @@ -653,7 +655,7 @@ const submitCombinationForm = async () => { points_adjustment: combinationForm.points_adjustment, rongdou_adjustment: combinationForm.rongdou_adjustment, stock: combinationForm.stock, - is_available: combinationForm.is_available + status: combinationForm.status } await api.specifications.updateCombination(combinationForm.id, submitData)