付晓文。 hace 1 mes
padre
commit
b297f0d5a4
Se han modificado 2 ficheros con 20 adiciones y 14 borrados
  1. 7 4
      pages/merchantDish/dish/form.vue
  2. 13 10
      pages/merchantDish/dish/sale-time.vue

+ 7 - 4
pages/merchantDish/dish/form.vue

@@ -478,19 +478,22 @@ export default {
 		mapSpecsFromApi(specs) {
 			if (!specs || !specs.length) return JSON.parse(JSON.stringify(DEFAULT_SPECS));
 			const groupMap = {};
-			specs.forEach((s) => {
+			specs.forEach((s, idx) => {
 				const key = s.specName || '规格';
 				if (!groupMap[key]) {
 					groupMap[key] = {
-						id: s.id || key,
+						id: `g_${key}`,
 						name: key,
 						values: []
 					};
 				}
+				// isSelected: 1 选中,0 未选中;兼容旧数据无该字段时视为选中
+				const selected = s.isSelected == null ? true : Number(s.isSelected) === 1;
 				groupMap[key].values.push({
-					id: s.id || `${key}_${s.optionName}`,
+					id: s.id || `${key}_${s.optionName || idx}`,
+					persistId: s.id || null,
 					name: s.optionName,
-					selected: true
+					selected
 				});
 			});
 			return Object.values(groupMap);

+ 13 - 10
pages/merchantDish/dish/sale-time.vue

@@ -201,16 +201,19 @@ export default {
 		buildSpecsAndSkus(draft) {
 			const specs = [];
 			(draft.specs || []).forEach((spec, si) => {
-				(spec.values || [])
-					.filter((v) => v.selected)
-					.forEach((v, oi) => {
-						specs.push({
-							specName: spec.name,
-							optionName: v.name,
-							specSort: si,
-							optionSort: oi
-						});
-					});
+				// 选中/未选中都提交,isSelected: 1 选中,0 未选中
+				(spec.values || []).forEach((v, oi) => {
+					const row = {
+						specName: spec.name,
+						optionName: v.name,
+						specSort: si,
+						optionSort: oi,
+						isSelected: v.selected ? 1 : 0
+					};
+					// 编辑时回传后端规格选项 id
+					if (v.persistId) row.id = v.persistId;
+					specs.push(row);
+				});
 			});
 			const skus = (draft.combos || []).map((c, i) => ({
 				specOptionNames: (c.label || '').replace(/\s*\|\s*/g, '/'),