From 3a2524692711cf35fc142881b2837368ae2c3d25 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期一, 13 十月 2025 14:57:19 +0800
Subject: [PATCH] 定制商品

---
 api/order.js                  |   11 +++++
 pages/order/myOrder.vue       |    4 +-
 pages/order/orderDetail.vue   |    2 
 pages.json                    |    7 +++
 pages/product/m-buy/goods.vue |   64 ++++++++++++++++++++++++++++++++
 5 files changed, 85 insertions(+), 3 deletions(-)

diff --git a/api/order.js b/api/order.js
index 1e42272..deae057 100644
--- a/api/order.js
+++ b/api/order.js
@@ -82,6 +82,17 @@
   });
 }
 /**
+ * 鑾峰彇璁㈠崟瀹氬埗淇℃伅
+ * @param orderSn 璁㈠崟缂栧彿
+ */
+export function getOrderCustomize(orderSn) {
+  return http.request({
+    url: `/order/order/customize/${orderSn}`,
+    method: Method.GET,
+    needToken: true,
+  });
+}
+/**
  * 鑾峰彇璁㈠崟璇︽儏
  * @param orderSn 璁㈠崟缂栧彿
  */
diff --git a/pages.json b/pages.json
index f95be17..10765d2 100644
--- a/pages.json
+++ b/pages.json
@@ -1865,6 +1865,13 @@
 				  "u-empty": "view"
 				}
         	}
+        },
+        {
+        	"path" : "constomize/constomize",
+        	"style" : 
+        	{
+        		"navigationBarTitleText" : "瀹氬埗淇℃伅"
+        	}
         }
       ]
     },
diff --git a/pages/order/myOrder.vue b/pages/order/myOrder.vue
index 0f790f4..25c3d35 100644
--- a/pages/order/myOrder.vue
+++ b/pages/order/myOrder.vue
@@ -172,7 +172,7 @@
 				    shape="circle"
 				    class="cancel-btn"
 				    size="mini"
-				    v-if="order.orderStatus === 'COMPLETED'&& order.orderType !=='VIRTUAL'"
+				    v-if="order.orderStatus === 'COMPLETED'&& order.orderType !=='VIRTUAL'&& order.customizeFlag !=='CUSTOMIZE'"
 				    @click="buyBack(order)"
 				  >
 				    鍐嶆潵涓�鍗�
@@ -470,7 +470,7 @@
 	  opencustomize(order){
 		  console.log(order)
 	  		uni.navigateTo({
-	  			url:"/pages/order/cardPack?sn=" + order.sn
+	  			url:"/pages/order/constomize/constomize?sn=" + order.sn
 	  		})  
 	  },
 	  //鍐嶆潵涓�鍗�
diff --git a/pages/order/orderDetail.vue b/pages/order/orderDetail.vue
index d89c8d9..2d9f4ba 100644
--- a/pages/order/orderDetail.vue
+++ b/pages/order/orderDetail.vue
@@ -149,7 +149,7 @@
             @click="ByUserMessage(order)">鏌ョ湅鎷煎洟淇℃伅</view>
             <view class="customer-service"
             @click="contact(order.storeId)">鑱旂郴瀹㈡湇</view>
-			<view class="customer-service" v-if="order.orderStatus==='COMPLETED' && order.orderType !=='VIRTUAL'"
+			<view class="customer-service" v-if="order.orderStatus==='COMPLETED' && order.orderType !=='VIRTUAL'&& order.customizeFlag !=='CUSTOMIZE'"
 			@click="buyBack"
 			>鍐嶆潵涓�鍗�</view>
         </view>
diff --git a/pages/product/m-buy/goods.vue b/pages/product/m-buy/goods.vue
index 2821674..f6c92b1 100644
--- a/pages/product/m-buy/goods.vue
+++ b/pages/product/m-buy/goods.vue
@@ -604,6 +604,10 @@
 			this.formValues.templateId = this.consumizetemplateInfo.id;
 			this.formValues.templateName = this.consumizetemplateInfo.name;
 			
+			// 鏌ユ壘瀵瑰簲鐨勬ā鏉垮瓧娈典互鑾峰彇contentType
+			const templateItem = this.consumizetemplateInfo.templateConstomizeTitles.find(item => item.id === fieldId);
+			const contentType = templateItem ? templateItem.contentType : '';
+			
 			// 鏌ユ壘鏄惁宸插瓨鍦ㄨ瀛楁
 			const existingIndex = this.formValues.templateForm.findIndex(item => item.id === fieldId);
 			
@@ -612,6 +616,7 @@
 				this.$set(this.formValues.templateForm, existingIndex, {
 					id: fieldId,
 					templateTitle: templateTitle,
+					contentType: contentType, // 娣诲姞contentType
 					value: value
 				});
 			} else {
@@ -619,6 +624,7 @@
 				this.formValues.templateForm.push({
 					id: fieldId,
 					templateTitle: templateTitle,
+					contentType: contentType, // 娣诲姞contentType
 					value: value
 				});
 			}
@@ -736,6 +742,14 @@
 		 * 娣诲姞鍒拌喘鐗╄溅鎴栬喘涔�
 		 */
 		addToCartOrBuy(val) {
+			// 妫�鏌ュ晢鍝佹槸鍚﹂渶瑕佹ā鏉垮苟涓旀ā鏉挎暟鎹槸鍚﹀畬鏁�
+			if (this.consumizetemplateInfo && this.consumizetemplateInfo.id) {
+				const isValid = this.validateTemplateData();
+				if (!isValid) {
+					return;
+				}
+			}
+			
 			console.log(JSON.stringify(this.formValues))
 			if (!this.selectSkuList) {
 				// 浣跨敤setTimeout寤惰繜鏄剧ず鎻愮ず锛岄伩鍏嶅奖鍝嶅脊绐�
@@ -795,6 +809,56 @@
 				});
 			}
 		},
+		
+		/**
+		 * 楠岃瘉妯℃澘鏁版嵁鏄惁瀹屾暣
+		 */
+		validateTemplateData() {
+			// 妫�鏌ユā鏉垮浘鐗囨槸鍚﹀凡閫夋嫨锛堝鏋滄湁妯℃澘鍥剧墖锛�
+			if (this.consumizetemplateInfo.templateImgs && 
+				this.consumizetemplateInfo.templateImgs.length > 0 && 
+				this.selectedImageObjects.length === 0) {
+				setTimeout(() => {
+					uni.showToast({
+						title: '璇烽�夋嫨妯℃澘鍥剧墖',
+						icon: 'none'
+					});
+				}, 100);
+				return false;
+			}
+			
+			// 妫�鏌ュ姩鎬佽〃鍗曢」鏄惁宸插~鍐�
+			if (this.consumizetemplateInfo.templateConstomizeTitles) {
+				for (const item of this.consumizetemplateInfo.templateConstomizeTitles) {
+					const formItem = this.formValues.templateForm.find(formItem => formItem.id === item.id);
+					
+					// 濡傛灉琛ㄥ崟椤逛笉瀛樺湪鎴栬�呭�间负绌�
+					if (!formItem || !formItem.value || formItem.value.trim() === '') {
+						setTimeout(() => {
+							uni.showToast({
+								title: `璇峰~鍐�${item.templateTitle}`,
+								icon: 'none'
+							});
+						}, 100);
+						return false;
+					}
+					
+					// 鐗瑰埆妫�鏌ュ浘鐗囩被鍨嬬殑琛ㄥ崟椤规槸鍚︽湁涓婁紶
+					if (item.contentType === 'IMAGE' && 
+						(!this.imagePreviewUrls[item.id] || this.imagePreviewUrls[item.id].trim() === '')) {
+						setTimeout(() => {
+							uni.showToast({
+								title: `璇蜂笂浼�${item.templateTitle}`,
+								icon: 'none'
+							});
+						}, 100);
+						return false;
+					}
+				}
+			}
+			
+			return true;
+		},
 		formatSku(list) {
 			// 鏍煎紡鍖栨暟鎹�
 			let arr = [{}];

--
Gitblit v1.8.0