From bbdd646b82cb8c84079598b7200b1102fd247b28 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 29 十二月 2025 16:08:48 +0800
Subject: [PATCH] 昭德-巡检上传开发调整

---
 src/pages/management/mould/equipmentRequisitionDialog.vue |  129 ++++++++++++++++++++++++++-----------------
 1 files changed, 78 insertions(+), 51 deletions(-)

diff --git a/src/pages/management/mould/equipmentRequisitionDialog.vue b/src/pages/management/mould/equipmentRequisitionDialog.vue
index bae484b..d92e779 100644
--- a/src/pages/management/mould/equipmentRequisitionDialog.vue
+++ b/src/pages/management/mould/equipmentRequisitionDialog.vue
@@ -54,22 +54,6 @@
             </template>
           </u-form-item>
           
-          <u-form-item v-if="isReturnMode" label="宸蹭娇鐢ㄦ暟閲�" border-bottom>
-            <u-input
-              :value="formData.usageQuantity"
-              disabled
-              placeholder="宸蹭娇鐢ㄦ暟閲�"
-            />
-          </u-form-item>
-          
-          <u-form-item v-if="isReturnMode" label="宸插綊杩樻暟閲�" border-bottom>
-            <u-input
-              :value="formData.totalReturnNo || 0"
-              disabled
-              placeholder="宸插綊杩樻暟閲�"
-            />
-          </u-form-item>
-          
           <u-form-item v-if="!isReturnMode && formData.status !== 2" label="棰嗙敤鏁伴噺" prop="usageQuantity" border-bottom required>
             <view class="number-box-wrapper">
               <u-number-box
@@ -95,12 +79,6 @@
               />
               <text class="info-text" v-if="remainingReturnQuantity > 0">(鏈�澶歿{ remainingReturnQuantity }}鍙�)</text>
               <text class="info-text" v-else>(宸插叏閮ㄥ綊杩�)</text>
-            </view>
-            <view
-              v-if="remainingReturnQuantity > 0 && form.returnQuantity === remainingReturnQuantity"
-              class="tip-text"
-            >
-              馃挕 鎻愮ず锛氭湰娆″綊杩樺悗灏嗗畬鎴愬叏閮ㄥ綊杩�
             </view>
           </u-form-item>
           
@@ -141,8 +119,8 @@
       </scroll-view>
       
       <view class="popup-footer">
-        <u-button @click="handleClose" :customStyle="{ marginRight: '10px', flex: 1 }">鍙栨秷</u-button>
-        <u-button type="primary" @click="debouncedSubmit" v-if="!isViewMode" :customStyle="{ flex: 1 }">纭畾</u-button>
+        <u-button @click="handleClose" :customStyle="{ marginRight: '10px', flex: 1 }" :disabled="isSubmitting">鍙栨秷</u-button>
+        <u-button type="primary" @click="debouncedSubmit" v-if="!isViewMode" :customStyle="{ flex: 1 }" :loading="isSubmitting">纭畾</u-button>
       </view>
     </view>
     
@@ -348,13 +326,18 @@
 // 棰嗙敤鏁伴噺鍙樺寲
 const onUsageQuantityChange = (value) => {
   // 纭繚鍊兼槸鏁板瓧绫诲瀷
-  form.value.usageQuantity = Number(value) || 1;
-  // 瑙﹀彂楠岃瘉
-  nextTick(() => {
-    if (formRef.value) {
-      formRef.value.validateField('usageQuantity');
-    }
-  });
+  const numValue = Number(value) || 1;
+  form.value.usageQuantity = numValue;
+  // 鍙湁鍦ㄥ�兼湁鏁堟椂鎵嶈Е鍙戦獙璇侊紝閬垮厤榛樿鍊�1瑙﹀彂閿欒鎻愮ず
+  if (numValue >= 1) {
+    nextTick(() => {
+      if (formRef.value) {
+        // 娓呴櫎涔嬪墠鐨勯敊璇紝鐒跺悗閲嶆柊楠岃瘉
+        formRef.value.clearValidate('usageQuantity');
+        formRef.value.validateField('usageQuantity');
+      }
+    });
+  }
 };
 
 // 鑾峰彇璁惧鍒楄〃
@@ -458,6 +441,7 @@
 
 const isEdit = computed(() => !!props.formData?.id);
 const formRef = ref();
+const isSubmitting = ref(false);
 
 // 鏃ユ湡閫夋嫨鍣�
 const showDatePickerVisible = ref(false);
@@ -633,14 +617,15 @@
         { 
           required: true, 
           message: "璇疯緭鍏ラ鐢ㄦ暟閲�", 
-          trigger: "change",
+          trigger: "blur",
           validator: (rule, value, callback) => {
             const numValue = Number(value) || 0;
-            if (!value && value !== 0) {
+            // 濡傛灉鍊间负绌烘垨鏈畾涔夛紝鎵嶆姤閿�
+            if (value === null || value === undefined || value === '') {
               callback(new Error("璇疯緭鍏ラ鐢ㄦ暟閲�"));
             } else if (numValue < 1) {
               callback(new Error("鑷冲皯棰嗙敤1鍙�"));
-            } else if (maxQuantity.value !== null && numValue > maxQuantity.value) {
+            } else if (maxQuantity.value !== null && maxQuantity.value > 0 && numValue > maxQuantity.value) {
               callback(new Error("棰嗙敤鏁伴噺涓嶈兘澶т簬璁惧鏁伴噺"));
             } else {
               callback();
@@ -657,6 +642,7 @@
 
 function handleClose() {
   emit("update:modelValue", false);
+  isSubmitting.value = false;
 }
 
 // 閫氱敤闃叉姈鍑芥暟
@@ -674,10 +660,45 @@
 // 闃叉姈鍚庣殑鎻愪氦鏂规硶
 const debouncedSubmit = debounce(handleSubmit, 800);
 
-function handleSubmit() {
-  formRef.value.validate(async (valid) => {
-    if (!valid) return;
+async function handleSubmit() {
+  console.log('handleSubmit 琚皟鐢�');
+  console.log('formRef.value:', formRef.value);
+  console.log('褰撳墠琛ㄥ崟鏁版嵁:', JSON.stringify(form.value));
+  
+  if (isSubmitting.value) {
+    console.log('姝e湪鎻愪氦涓紝蹇界暐閲嶅鐐瑰嚮');
+    return;
+  }
+  
+  if (!formRef.value) {
+    console.error('formRef 涓嶅瓨鍦�');
+    showToast('琛ㄥ崟寮曠敤涓嶅瓨鍦紝璇峰埛鏂伴〉闈㈤噸璇�', 'error');
+    return;
+  }
+  
+  try {
+    console.log('寮�濮嬮獙璇佽〃鍗�...');
+    const valid = await formRef.value.validate().catch((errors) => {
+      console.log('琛ㄥ崟楠岃瘉澶辫触锛岄敊璇俊鎭�:', errors);
+      // 濡傛灉楠岃瘉澶辫触锛宔rrors 鍙兘鏄敊璇暟缁勬垨 false
+      if (errors && Array.isArray(errors) && errors.length > 0) {
+        const firstError = errors[0];
+        showToast(firstError.message || '璇峰畬鍠勮〃鍗曚俊鎭�', 'error');
+      } else {
+        showToast('璇峰畬鍠勮〃鍗曚俊鎭�', 'error');
+      }
+      return false;
+    });
+    console.log('琛ㄥ崟楠岃瘉缁撴灉:', valid);
+    
+    if (!valid) {
+      console.log('琛ㄥ崟楠岃瘉澶辫触锛屽仠姝㈡彁浜�');
+      return;
+    }
 
+    console.log('琛ㄥ崟楠岃瘉閫氳繃锛屽紑濮嬫彁浜�');
+    isSubmitting.value = true;
+    
     let submitData = { ...form.value };
 
     // 褰掕繕妯″紡澶勭悊
@@ -707,10 +728,12 @@
           
           if (!result) {
             showToast('宸插彇娑堝綊杩樻搷浣�', 'info');
+            isSubmitting.value = false;
             return;
           }
         } catch (error) {
           showToast('宸插彇娑堝綊杩樻搷浣�', 'info');
+          isSubmitting.value = false;
           return;
         }
 
@@ -741,21 +764,25 @@
       };
     }
 
-    try {
-      let { code, data } = await addOrEditUsageRecord(submitData);
-      if (code !== 200) {
-        showToast(data.msg || "鎿嶄綔澶辫触", 'error');
-        return;
-      }
-      if (code == 200 && data == 1) {
-        emit("submit", submitData);
-      }
-      handleClose();
-    } catch (error) {
-      console.error("鎻愪氦澶辫触:", error);
-      showToast("鎿嶄綔澶辫触锛岃绋嶅悗鍐嶈瘯", 'error');
+    let { code, data } = await addOrEditUsageRecord(submitData);
+    if (code !== 200) {
+      showToast(data.msg || "鎿嶄綔澶辫触", 'error');
+      isSubmitting.value = false;
+      return;
     }
-  });
+    if (code == 200 && data == 1) {
+      showToast('鎿嶄綔鎴愬姛', 'success');
+      emit("submit", submitData);
+      handleClose();
+    } else {
+      showToast(data.msg || "鎿嶄綔澶辫触", 'error');
+      isSubmitting.value = false;
+    }
+  } catch (error) {
+    console.error("鎻愪氦澶辫触:", error);
+    showToast("鎿嶄綔澶辫触锛岃绋嶅悗鍐嶈瘯", 'error');
+    isSubmitting.value = false;
+  }
 }
 </script>
 

--
Gitblit v1.9.3