From a95cd4cfc856d5861c57c82034f874ee27a3ef13 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期一, 13 十月 2025 12:00:55 +0800
Subject: [PATCH] 定制商品

---
 pages/order/myOrder.vue                     |   17 ++++++++
 pages/commodity-square/coups-goods-list.vue |    2 
 api/trade.js                                |    4 +-
 pages/cart/payment/payOrder.vue             |    8 +++-
 pages/product/m-buy/goods.vue               |   56 ++++++++++++++++++++-------
 5 files changed, 67 insertions(+), 20 deletions(-)

diff --git a/api/trade.js b/api/trade.js
index eadfa3d..1a4d019 100644
--- a/api/trade.js
+++ b/api/trade.js
@@ -204,9 +204,9 @@
 export function getCashierData(params) {
   return http.request({
     url: "payment/cashier/tradeDetail",
-    method: Method.GET,
+    method: Method.POST,
     needToken: true,
-    params,
+    data:params,
   });
 }
 
diff --git a/pages/cart/payment/payOrder.vue b/pages/cart/payment/payOrder.vue
index 74fdb69..6cdba46 100644
--- a/pages/cart/payment/payOrder.vue
+++ b/pages/cart/payment/payOrder.vue
@@ -186,13 +186,17 @@
 				parms.sn = this.sn;
 				parms.orderType = this.orderType;
 				parms.clientType = this.paymentType;
-				if(!this.routerVal.template){
-				const template = decodeURIComponent(this.routerVal.template)
+				if(this.routerVal.template){
+					console.log('鑾峰彇璇︽儏鎵ц浜�')
+				const template = JSON.parse(decodeURIComponent(this.routerVal.template))
+				console.log('鑾峰彇璇︽儏鎵ц浜嗚幏鍙栧埌鐨勫��-----------------------銆�',template)
 				parms.templateId = template.templateId;
 				parms.templateName = template.templateName;
 				parms.chooseImage = template.chooseImage;
+				parms.chooseImageId = template.chooseImageId;
 				parms.templateForm = template.templateForm;
 				}
+				console.log('--------------------->鎵ц鐨勫弬鏁颁负',parms)
 				API_Trade.getCashierData(parms).then((res) => {
 				
 					if(res.data.success){
diff --git a/pages/commodity-square/coups-goods-list.vue b/pages/commodity-square/coups-goods-list.vue
index d2251a5..81c95b9 100644
--- a/pages/commodity-square/coups-goods-list.vue
+++ b/pages/commodity-square/coups-goods-list.vue
@@ -42,7 +42,7 @@
 							<view
 								style="display: flex; justify-content: space-between;align-items:center; 100%;margin-top: 32rpx;width: 100%;">
 								<view class="goodsPrice">锟{item.price}}</view>
-								<view class="addCard" style="display: flex; align-items: center;" v-if="item.goodsType !=='VIRTUAL_GOODS'">
+								<view class="addCard" style="display: flex; align-items: center;" v-if="item.goodsType !=='VIRTUAL_GOODS'&& item.customizeFlag!=='CUSTOMIZE'">
 									<view style="padding: 20rpx 0 20rpx 20rpx;" v-show="item.cardNum && item.cardNum>0"
 										@click.stop="miousCardNum($event,item.id)">
 										<uni-icons type="minus" size="30" color="#96a6bc"></uni-icons>
diff --git a/pages/order/myOrder.vue b/pages/order/myOrder.vue
index 55b224e..0f790f4 100644
--- a/pages/order/myOrder.vue
+++ b/pages/order/myOrder.vue
@@ -112,6 +112,17 @@
 				  >
 				    浼樻儬鍒稿崱鍖�
 				  </view>
+				  <!-- 鏂板锛氬畾鍒跺晢鍝佹牱寮� -->
+				  <view
+				    ripple
+				    shape="circle"
+				    class="cancel-btn"
+				    size="mini"
+				  					v-if="order.customizeFlag === 'CUSTOMIZE'"
+				    @click="opencustomize(order)"
+				  >
+				    瀹氬埗鍟嗗搧
+				  </view>
                   <!-- 鍙栨秷璁㈠崟 -->
 <!--                  <view
                     ripple
@@ -456,6 +467,12 @@
 			url:"/pages/order/cardPack?sn=" + order.sn
 		})  
 	  },
+	  opencustomize(order){
+		  console.log(order)
+	  		uni.navigateTo({
+	  			url:"/pages/order/cardPack?sn=" + order.sn
+	  		})  
+	  },
 	  //鍐嶆潵涓�鍗�
 	  buyBack(order){
       console.log(JSON.stringify(order))
diff --git a/pages/product/m-buy/goods.vue b/pages/product/m-buy/goods.vue
index 6289c32..2821674 100644
--- a/pages/product/m-buy/goods.vue
+++ b/pages/product/m-buy/goods.vue
@@ -113,15 +113,15 @@
 									v-for="(img, index) in consumizetemplateInfo.templateImgs" 
 									:key="img.id"
 									class="image-item"
-									:class="{ selected: selectedImages.includes(img.imgUrl) }"
-									@click="selectImage(img.imgUrl)"
+									:class="{ selected: selectedImageObjects.some(selectedImg => selectedImg.id === img.id) }"
+									@click="selectImage(img)"
 								>
 									<image 
 										:src="getFilePreviewUrlSync(img.imgUrl)" 
 										class="image-preview"
 										mode="aspectFill"
 									/>
-									<view v-if="selectedImages.includes(img.imgUrl)" class="selected-overlay">
+									<view v-if="selectedImageObjects.some(selectedImg => selectedImg.id === img.id)" class="selected-overlay">
 										<uni-icons type="checkmarkempty" size="30" color="#fff"></uni-icons>
 									</view>
 								</view>
@@ -231,10 +231,12 @@
 			
 			// 琛ㄥ崟鐩稿叧鏁版嵁
 			selectedImages: [], // 閫変腑鐨勬ā鏉垮浘鐗�
+			selectedImageObjects: [], // 閫変腑鐨勬ā鏉垮浘鐗囧璞★紙鍖呭惈ID绛夊畬鏁翠俊鎭級
 			formValues: {
 				templateId: "", // 妯℃澘ID
 				templateName: "", // 妯℃澘鍚嶇О
 				chooseImage: "", // 閫変腑鐨勫浘鐗�
+				chooseImageId: "", // 閫変腑鍥剧墖鐨処D
 				templateForm: [] // 琛ㄥ崟鏁扮粍 [{id, templateTitle, value}]
 			}, // 琛ㄥ崟鍊�
 			imagePreviewUrls: {}, // 鍥剧墖棰勮URL
@@ -418,18 +420,28 @@
 			}
 		},
 		
-		// 閫夋嫨妯℃澘鍥剧墖
-		selectImage(imgUrl) {
-			const index = this.selectedImages.indexOf(imgUrl);
-			if (index > -1) {
-				// 濡傛灉宸查�変腑锛屽垯鍙栨秷閫夋嫨
-				this.selectedImages.splice(index, 1);
+		// 閫夋嫨妯℃澘鍥剧墖锛堝崟閫夋ā寮忥級
+		selectImage(imgObject) {
+			// 妫�鏌ュ綋鍓嶉�変腑鐨勫浘鐗囨槸鍚﹀氨鏄偣鍑荤殑鍥剧墖
+			const selectedIndex = this.selectedImageObjects.findIndex(selectedImg => selectedImg.id === imgObject.id);
+			
+			if (selectedIndex > -1) {
+				// 濡傛灉鐐瑰嚮鐨勬槸宸查�変腑鐨勫浘鐗囷紝鍒欏彇娑堥�夋嫨
+				this.selectedImageObjects = [];
+				this.selectedImages = [];
 			} else {
-				// 鍚﹀垯娣诲姞鍒伴�変腑鍒楄〃
-				this.selectedImages.push(imgUrl);
+				// 濡傛灉鐐瑰嚮鐨勬槸鏈�変腑鐨勫浘鐗囷紝鍒欓�変腑璇ュ浘鐗囷紙娓呯┖涔嬪墠鐨勯�夋嫨锛�
+				this.selectedImageObjects = [imgObject];
+				this.selectedImages = [imgObject.imgUrl];
 			}
-			// 鏇存柊formValues涓殑chooseImage
+			
+			// 鏇存柊formValues涓殑chooseImage鍜宑hooseImageId
 			this.formValues.chooseImage = this.selectedImages.join(',');
+			// 灏嗛�変腑鍥剧墖鐨処D涔熷瓨鍌ㄥ埌formValues涓�
+			this.formValues.chooseImageId = this.selectedImageObjects.map(img => img.id).join(',');
+			
+			// 寮哄埗鏇存柊瑙嗗浘浠ョ‘淇漊I姝g‘鍙嶆槧鏁版嵁鍙樺寲
+			this.$forceUpdate();
 		},
 		
 		// 閫夋嫨鍥剧墖锛堝弬鑰僾ideo.vue鐨勫疄鐜帮級
@@ -620,8 +632,11 @@
 		
 		// 琛ㄥ崟鎻愪氦澶勭悊
 		handleFormSubmit() {
-			// 浣跨敤鏂扮殑formValues鏁版嵁缁撴瀯
-			const formData = this.formValues;
+			// 纭繚閫変腑鐨勫浘鐗囧璞′篃琚寘鍚湪鎻愪氦鏁版嵁涓�
+			const formData = {
+				...this.formValues,
+				selectedImageObjects: this.selectedImageObjects
+			};
 			
 			console.log('琛ㄥ崟鏁版嵁:', formData);
 			// 杩欓噷鍙互娣诲姞瀹為檯鐨勮〃鍗曟彁浜ら�昏緫
@@ -762,12 +777,18 @@
 					data.cartType = 'BUY_NOW';
 				}
 
+				// 鍒涘缓鍖呭惈鍥剧墖ID鐨勫畬鏁磋〃鍗曟暟鎹�
+				const templateData = {
+					...this.formValues,
+					selectedImageObjects: this.selectedImageObjects
+				};
+
 				API_trade.addToCart(data).then(res => {
 					if (res.data.code == 200) {
 						// 浣跨敤setTimeout寤惰繜璺宠浆锛岄伩鍏嶅奖鍝嶅脊绐�
 						setTimeout(() => {
 							uni.navigateTo({
-								url: `/pages/order/fillorder?way=${data.cartType}&addr=${this.addr.id || ''}&template=${encodeURIComponent(JSON.stringify(this.formValues))}&parentOrder=${encodeURIComponent(JSON.stringify(this.parentOrder))}`
+								url: `/pages/order/fillorder?way=${data.cartType}&addr=${this.addr.id || ''}&template=${encodeURIComponent(JSON.stringify(templateData))}&parentOrder=${encodeURIComponent(JSON.stringify(this.parentOrder))}`
 							});
 						}, 100);
 					}
@@ -877,7 +898,12 @@
 				this.formValues.templateId = this.consumizetemplateInfo.id;
 				this.formValues.templateName = this.consumizetemplateInfo.name;
 				this.formValues.chooseImage = "";
+				this.formValues.chooseImageId = "";
 				this.formValues.templateForm = [];
+				
+				// 鍒濆鍖栭�変腑鐨勫浘鐗囧璞℃暟缁勫拰鍥剧墖URL鏁扮粍
+				this.selectedImageObjects = [];
+				this.selectedImages = [];
 			}
 		}
 	},

--
Gitblit v1.8.0