From 1f5cb7e48ca586cd7a3122db32b9bdf42179184f Mon Sep 17 00:00:00 2001
From: guoyujie <guoyujie@ng.com>
Date: 星期三, 17 十二月 2025 11:05:05 +0800
Subject: [PATCH] 提交vue-route配置,防止刷新页面访问异常

---
 northglass-erp-client/erp-customer-client/src/views/order/OrderInquiryView.vue |  108 ++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 81 insertions(+), 27 deletions(-)

diff --git a/northglass-erp-client/erp-customer-client/src/views/order/OrderInquiryView.vue b/northglass-erp-client/erp-customer-client/src/views/order/OrderInquiryView.vue
index 299aac9..5dfdd44 100644
--- a/northglass-erp-client/erp-customer-client/src/views/order/OrderInquiryView.vue
+++ b/northglass-erp-client/erp-customer-client/src/views/order/OrderInquiryView.vue
@@ -26,13 +26,14 @@
 
 const dataArr=ref({
   id:0,
+  productId:0,
   product:"",
   width:"",
   height:"",
   workmanship:"",
-  price:"",
-  quantity:"",
-  money:"",
+  price:null,
+  quantity:null,
+  money:null,
   area:""
 })
 
@@ -40,21 +41,39 @@
 
 
 const changeDate =  ()=>{
-  if(product.value==undefined||product.value==""){
-    ElMessage.warning('璇烽�夋嫨浜у搧')
-    return
+  const validateFields = [
+    { value: product.value, message: '璇烽�夋嫨浜у搧' },
+    { value: width.value, message: '璇疯緭鍏ュ搴�' },
+    { value: height.value, message: '璇疯緭鍏ラ珮搴�' },
+    { value: quantity.value, message: '璇疯緭鍏ユ暟閲�' }
+  ];
+
+  for (const { value, message } of validateFields) {
+    if (value === undefined || value === '') {
+      ElMessage.warning(message);
+      return;
+    }
   }
-  if(width.value==undefined||width.value==""){
-    ElMessage.warning('璇疯緭鍏ュ搴�')
-    return
-  }
-  if(height.value==undefined||height.value==""){
-    ElMessage.warning('璇疯緭鍏ラ珮搴�')
-    return
-  }
-  if(quantity.value==undefined||quantity.value==""){
-    ElMessage.warning('璇疯緭鍏ユ暟閲�')
-    return
+
+// 2. 鏁板瓧鏍¢獙锛堥拡瀵� width銆乭eight銆乹uantity锛�
+// 瀹氫箟鏁板瓧鏍¢獙瑙勫垯锛氭暣鏁版垨灏忔暟锛堝彲姝h礋锛屾牴鎹渶姹傝皟鏁达級
+  const isNumber = (val) => {
+    // 姝e垯锛氬厑璁告暣鏁�
+    return /^\d+$/.test(String(val).trim());
+  };
+
+// 瀹氫箟鏁板瓧鏍¢獙鐨勫瓧娈靛拰鎻愮ず
+  const numberFields = [
+    { value: width.value, message: '瀹藉害蹇呴』鏄鏁存暟' },
+    { value: height.value, message: '楂樺害蹇呴』鏄鏁存暟' },
+    { value: quantity.value, message: '鏁伴噺蹇呴』鏄鏁存暟' }
+  ];
+
+  for (const { value, message } of numberFields) {
+    if (!isNumber(value)) {
+      ElMessage.warning(message);
+      return;
+    }
   }
 
   const productId=product.value.split("/")[0]
@@ -62,10 +81,11 @@
     if (res.code === 200 ) {
       if(res.data.money!==0){
         dataArr.value.id=historyData.value.length+1
+        dataArr.value.productId=parseInt(product.value.split("/")[0])
         dataArr.value.product=product.value.split("/")[1]
-        dataArr.value.width=width.value
-        dataArr.value.height=height.value
-        dataArr.value.quantity=quantity.value
+        dataArr.value.width=parseFloat(width.value)
+        dataArr.value.height=parseFloat(height.value)
+        dataArr.value.quantity=parseInt(quantity.value )
         const rawResult = width.value * height.value * quantity.value / 1000000;
         dataArr.value.area=parseFloat(rawResult.toFixed(2))
         dataArr.value.money=parseFloat(dataArr.value.area*res.data.money).toFixed(2)
@@ -75,7 +95,8 @@
 
         const newData = {
           id: dataArr.value.id,
-          product: dataArr.value.product,
+          productId:dataArr.value.productId,
+          productName: dataArr.value.product,
           width: dataArr.value.width,
           height: dataArr.value.height,
           quantity:dataArr.value.quantity,
@@ -85,9 +106,20 @@
           price: dataArr.value.price
         };
         historyData.value.push(newData)
+        ElMessage.success("鏌ヨ鎴愬姛")
 
       }else{
         ElMessage.info("璇ヤ骇鍝佷环鏍兼湭涓婁紶锛岃鑱旂郴")
+        dataArr.value.id=0
+        dataArr.value.productId=0
+        dataArr.value.product=""
+        dataArr.value.width=""
+        dataArr.value.height=""
+        dataArr.value.quantity=""
+        dataArr.value.area=""
+        dataArr.value.money=""
+        dataArr.value.workmanship=""
+        dataArr.value.price=""
       }
 
     }
@@ -104,7 +136,7 @@
   // 纭繚鏁版嵁鏍煎紡姝g‘
   const validData = historyData.value.map(item => ({
     id: item.id,
-    product: item.product,
+    product: item.productName,
     width: item.width,
     height: item.height,
     quantity: item.quantity,
@@ -127,14 +159,32 @@
   dialogVisible.value = true;
 };
 
+const remarks=ref("")
 
 const saveOrder = () => {
   if (historyData.value.length === 0) {
     ElMessage.info('璇烽噸鏂伴�夋嫨鏁版嵁');
     return;
   }
-  ElMessage.success('涓嬪崟鎴愬姛');
-  dialogVisible.value = false;
+
+  let flowData = ref({
+    data: historyData.value,
+    customerId:user.user.customerId,
+    customerName:user.user.customerName,
+    remarks:remarks.value
+  })
+
+  request.post("/customerOrder/saveCustomerOrder", flowData.value).then((res) => {
+    if(res.code==200 && res.data==="true"){
+      ElMessage.success('涓嬪崟鎴愬姛');
+      dialogVisible.value = false;
+      window.location.reload();
+    }
+  }).catch((err)=>{
+    ElMessage.error('涓嬪崟澶辫触')
+  }).finally(()=>{
+  })
+
 };
 
 const xGrid = ref()
@@ -227,11 +277,11 @@
                        :value="item.id+'/'+item.productName"
             />
           </el-select>
-          <el-input  v-model.trim="width" class="input" :placeholder="$t('瀹藉害')"></el-input>
+          <el-input  v-model="width" class="input" :placeholder="$t('瀹藉害')"></el-input>
 
           <el-input  v-model="height" class="input" :placeholder="$t('楂樺害')"></el-input>
 
-          <el-input  v-model="quantity" class="input" :placeholder="$t('鏁伴噺')"></el-input>
+          <el-input  v-model="quantity" class="input"  :placeholder="$t('鏁伴噺')"></el-input>
 
           <el-button  class="button" type="primary" @click="changeDate">鏌ヨ</el-button>
         </div>
@@ -302,7 +352,11 @@
           </el-popconfirm>
         </template>
       </vxe-grid>
-
+      <el-input
+          v-model="remarks"
+          type="textarea"
+          :autosize="{ minRows: 2, maxRows: 20 }"
+      />
     </el-dialog>
 
   </div>

--
Gitblit v1.8.0