付晓文。 il y a 1 mois
Parent
commit
de3aad5ece
2 fichiers modifiés avec 49 ajouts et 1 suppressions
  1. 1 1
      pages/merchantDish/dish/form.vue
  2. 48 0
      pages/merchantDish/dish/sale-time.vue

+ 1 - 1
pages/merchantDish/dish/form.vue

@@ -524,7 +524,7 @@ export default {
 					this.form.productType = CATEGORY_TO_PRODUCT_TYPE[item.category] || 'breakfast';
 					this.form.cover = item.productImage || '';
 					this.form.detail = item.detailImages || '';
-					this.form.isCombo = Number(item.isPackage) === 1 ? 1 : 0;
+					this.form.isCombo = Number(item.isPackage) == 1 ? 1 : 0;
 					// 售价 price,原价 sellingPrice
 					this.form.price = item.price != null ? String(item.price) : '';
 					this.form.sellingPrice =

+ 48 - 0
pages/merchantDish/dish/sale-time.vue

@@ -111,8 +111,56 @@ export default {
 	onLoad(query) {
 		this.fromMulti = query.from === 'multi';
 		if (this.fromMulti) this.mode = 'fixed';
+		this.hydrateFromEditExtra();
 	},
 	methods: {
+		/** 将日期统一为 YYYY-MM-DD,兼容接口带时分秒 */
+		normalizeDate(val) {
+			if (!val) return '';
+			const s = String(val).trim();
+			const m = s.match(/^(\d{4}-\d{2}-\d{2})/);
+			return m ? m[1] : s.slice(0, 10);
+		},
+		/** 编辑回显:优先根据 saleTimes 内容推断,不依赖顶层 saleDateType 一定有值 */
+		hydrateFromEditExtra() {
+			const extra = session.getDishEditExtra() || {};
+			const saleTimes = Array.isArray(extra.saleTimes) ? extra.saleTimes : [];
+			const saleDateType = Number(extra.saleDateType);
+			if (!saleTimes.length && !saleDateType) return;
+
+			// 自定义区间:saleType=2 或带起止日期(接口可能不回顶层 saleDateType)
+			const range = saleTimes.find(
+				(t) => Number(t.saleType) === 2 || t.startDate || t.endDate
+			);
+			if (range && (range.startDate || range.endDate)) {
+				this.mode = 'custom';
+				this.startDate = this.normalizeDate(range.startDate);
+				this.endDate = this.normalizeDate(range.endDate);
+				return;
+			}
+
+			// 固定日期:saleType=1 或带 saleDate
+			const fixedDates = saleTimes
+				.filter((t) => Number(t.saleType) === 1 || t.saleDate)
+				.map((t) => this.normalizeDate(t.saleDate))
+				.filter(Boolean)
+				.sort();
+			if (fixedDates.length || saleDateType === 1) {
+				this.mode = 'fixed';
+				this.selectedDates = fixedDates;
+				if (fixedDates[0]) {
+					const [y, m] = fixedDates[0].split('-').map(Number);
+					if (y) this.year = y;
+					if (m) this.month = m;
+				}
+				return;
+			}
+
+			// 无具体区间:全部日期售卖(仅多规格入口有该选项)
+			if ((saleDateType === 2 || !saleTimes.length) && this.fromMulti) {
+				this.mode = 'all';
+			}
+		},
 		onModeChange() {
 			this.selectedDates = [];
 			this.startDate = '';