baijunde 2 месяцев назад
Родитель
Сommit
9de10b2db6

+ 9 - 3
pages/groupMeal/goods/form-day.vue

@@ -52,6 +52,7 @@
 		},
 		methods: {
 			goBack() {
+				this.saveSaleDays();
 				uni.navigateBack({
 					delta: 1
 				});
@@ -78,6 +79,13 @@
 					this.selectedDayCodes.push(code);
 				}
 				this.form.dayCodes = [...this.selectedDayCodes];
+				this.saveSaleDays();
+			},
+			saveSaleDays() {
+				const goods = uni.getStorageSync('gm_goods') || {};
+				const dayCodes = this.normalizeDayCodes(this.selectedDayCodes);
+				goods.saleDays = dayCodes.join(',');
+				uni.setStorageSync('gm_goods', goods);
 			},
 			goNextStep() {
 				const dayCodes = this.normalizeDayCodes(this.selectedDayCodes);
@@ -87,9 +95,7 @@
 				}
 				this.selectedDayCodes = dayCodes;
 				this.form.dayCodes = [...dayCodes];
-				const goods = uni.getStorageSync('gm_goods') || {};
-				goods.saleDays = dayCodes.join(',');
-				uni.setStorageSync('gm_goods', goods);
+				this.saveSaleDays();
 				uni.navigateTo({
 					url: '/pages/groupMeal/goods/form-step2'
 				});

+ 23 - 2
pages/groupMeal/goods/form-step1.vue

@@ -382,8 +382,29 @@ export default {
 			// 表单校验
 			this.$refs.uForm.validate(valid => {
 				if (valid) {
-					const { categoryName, specialCategoryName, ...form } = this.form;
-					uni.setStorageSync('gm_goods', form);
+					const {
+						categoryName,
+						specialCategoryName,
+						saleDays,
+						dayCodes,
+						gmMerchantPackageDetails,
+						...form
+					} = this.form;
+					const goods = uni.getStorageSync('gm_goods') || {};
+					const nextGoods = {
+						...goods,
+						...form
+					};
+					if (!Object.prototype.hasOwnProperty.call(nextGoods, 'saleDays') && saleDays) {
+						nextGoods.saleDays = saleDays;
+					}
+					if (
+						!Object.prototype.hasOwnProperty.call(nextGoods, 'gmMerchantPackageDetails') &&
+						gmMerchantPackageDetails
+					) {
+						nextGoods.gmMerchantPackageDetails = gmMerchantPackageDetails;
+					}
+					uni.setStorageSync('gm_goods', nextGoods);
 					uni.navigateTo({
 						url: '/pages/groupMeal/goods/form-day'
 					});

+ 56 - 27
pages/groupMeal/goods/form-step2.vue

@@ -169,11 +169,19 @@
 			}
 		},
 		onLoad() {
-			const goods = uni.getStorageSync('gm_goods');
+			const goods = uni.getStorageSync('gm_goods') || {};
 			if (goods.gmMerchantPackageDetails && goods.gmMerchantPackageDetails.length > 0) {
 				this.form.dishCategories.map(a => {
 					let items = goods.gmMerchantPackageDetails.filter(b => b.category == a.id);
-					if (items.length > 0) a.items = items;
+					if (items.length > 0) {
+						a.items = items.map(item => ({
+							...item,
+							id: item.id || dishIdCounter++,
+							name: item.name || '',
+							price: item.price === 0 ? 0 : (item.price || ''),
+							description: item.description || ''
+						}));
+					}
 				});
 			}
 		},
@@ -188,7 +196,7 @@
 				return !!(dish.name || dish.price || dish.description);
 			},
 			isEditedShow(e) {
-				const goods = uni.getStorageSync('gm_goods');
+				const goods = uni.getStorageSync('gm_goods') || {};
 				return goods.gmMerchantPackageDetails && goods.gmMerchantPackageDetails.length > 0 && goods
 					.gmMerchantPackageDetails.some(b => b.category == e.id);;
 			},
@@ -269,34 +277,57 @@
 			},
 			// 上一步
 			goBack() {
+				this.saveDishDetails();
 				uni.navigateBack({
 					delta: 1
 				});
 			},
+			getDishDetails() {
+				const details = [];
+				// 遍历一级分类
+				this.form.dishCategories.forEach(category => {
+					// 检查是否有items属性且为数组
+					if (category.items && Array.isArray(category.items)) {
+						// 遍历二级菜品
+						category.items.forEach(item => {
+							// 创建新对象,只保留需要的属性
+							if (this.isEdited(item)) {
+								details.push({
+									category: category.id,
+									name: item.name,
+									price: item.price,
+									description: item.description
+								});
+							}
+						});
+					}
+				});
+				return details;
+			},
+			saveDishDetails() {
+				const goods = uni.getStorageSync('gm_goods') || {};
+				goods.gmMerchantPackageDetails = this.getDishDetails();
+				uni.setStorageSync('gm_goods', goods);
+			},
+			backToGoodsList() {
+				const pages = getCurrentPages();
+				const listIndex = pages.findIndex(page => page.route === 'pages/groupMeal/goods/list');
+				if (listIndex > -1) {
+					uni.navigateBack({
+						delta: pages.length - 1 - listIndex
+					});
+					return;
+				}
+				uni.redirectTo({
+					url: '/pages/groupMeal/goods/list'
+				});
+			},
 			// 提交审核
 			submit() {
 				this.$refs.formRef.validate().then(res => {
-					const goods = uni.getStorageSync('gm_goods');
+					const goods = uni.getStorageSync('gm_goods') || {};
 					const activeCategories = this.form.dishCategories.filter(c => c.items.some(this.isEdited));
-					const details = [];
-					// 遍历一级分类
-					activeCategories.forEach(category => {
-						// 检查是否有items属性且为数组
-						if (category.items && Array.isArray(category.items)) {
-							// 遍历二级菜品
-							category.items.forEach(item => {
-								// 创建新对象,只保留需要的属性
-								if (this.isEdited(item)) {
-									details.push({
-										category: category.id,
-										name: item.name,
-										price: item.price,
-										description: item.description
-									});
-								}
-							});
-						}
-					});
+					const details = this.getDishDetails();
 					let params = {
 						...goods,
 						gmMerchantPackageDetails: [...details]
@@ -309,9 +340,7 @@
 							// 清除
 							uni.removeStorageSync('gm_goods');
 							// 返回列表
-							uni.navigateBack({
-								delta: 3
-							});
+							this.backToGoodsList();
 						}
 					});
 				}).catch(errors => {
@@ -436,4 +465,4 @@
 			}
 		}
 	}
-</style>
+</style>