From 82b238214db913000a12fc037c5e0f101a7b9d73 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期五, 27 六月 2025 10:47:30 +0800
Subject: [PATCH] 修改工作流

---
 src/views/flowable/workflow/lossBound/lossBoundHandle.vue |  131 +++++++++++++++++++++++++++++++++++--------
 1 files changed, 107 insertions(+), 24 deletions(-)

diff --git a/src/views/flowable/workflow/lossBound/lossBoundHandle.vue b/src/views/flowable/workflow/lossBound/lossBoundHandle.vue
index d0b2286..5d932c7 100644
--- a/src/views/flowable/workflow/lossBound/lossBoundHandle.vue
+++ b/src/views/flowable/workflow/lossBound/lossBoundHandle.vue
@@ -36,13 +36,13 @@
                   <a-row>
                     <a-col :span="span">
                       <a-form-model-item label="鎶ユ崯鍗曞崟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="outNum">
-                        <a-input :disabled="coldisabled" v-model="tableRowRecord.orderCode"></a-input>
+                        <a-input disabled v-model="tableRowRecord.orderCode"></a-input>
                       </a-form-model-item>
                     </a-col>
                     <a-col :span="span">
                       <a-form-model-item label="鎶ユ崯浜�" :labelCol="labelCol" :wrapperCol="wrapperCol"
                                          prop="outStorehouseType">
-                        <j-dict-select-tag :disabled="coldisabled"
+                        <j-dict-select-tag disabled
                                            v-model="tableRowRecord.losser" dictCode="sys_user,realname,id"
                                            placeholder="璇烽�夋嫨" />
                       </a-form-model-item>
@@ -52,28 +52,28 @@
                     <a-col :span="span">
                       <a-form-model-item label="鎶ユ崯鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol"
                                          prop="outboundTime">
-                        <j-date :disabled="coldisabled" v-model="tableRowRecord.lossTime" :show-time="true"
+                        <j-date disabled v-model="tableRowRecord.lossTime" :show-time="true"
                                 dateFormat="YYYY-MM-DD HH:mm" style="width: 100%" />
                       </a-form-model-item>
                     </a-col>
                     <a-col :span="span">
                       <a-form-model-item label="鎶ユ崯鍘熷洜" :labelCol="labelCol" :wrapperCol="wrapperCol"
                                          prop="subjectMatter">
-                        <a-input :disabled="coldisabled" v-model="tableRowRecord.lossReason"></a-input>
+                        <a-input disabled v-model="tableRowRecord.lossReason"></a-input>
                       </a-form-model-item>
                     </a-col>
                   </a-row>
                   <a-row>
                     <a-col :span="span">
                       <a-form-model-item label="缁忔墜浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="handler">
-                        <j-dict-select-tag :disabled="coldisabled"
+                        <j-dict-select-tag disabled
                                            v-model="tableRowRecord.handler" dictCode="sys_user,realname,id"
                                            placeholder="璇烽�夋嫨" />
                       </a-form-model-item>
                     </a-col>
                     <a-col :span="span">
                       <a-form-model-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark">
-                        <a-textarea :disabled="coldisabled" v-model="tableRowRecord.remark" rows="4" />
+                        <a-textarea disabled v-model="tableRowRecord.remark" rows="4" />
                       </a-form-model-item>
                     </a-col>
                   </a-row>
@@ -119,17 +119,17 @@
           <a-row>
             <a-col ::span="span">
               <a-form-model-item label="鐢宠浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="handler_dictText">
-                <a-input :disabled="coldisabled" v-model="tableRowRecord.handler_dictText"></a-input>
+                <a-input :readOnly="inputReadOnly" v-model="tableRowRecord.handler_dictText"></a-input>
               </a-form-model-item>
             </a-col>
             <a-col ::span="span">
               <a-form-model-item label="鐢宠鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
-                <a-input :disabled="coldisabled" v-model="tableRowRecord.createTime"></a-input>
+                <a-input :readOnly="inputReadOnly" v-model="tableRowRecord.createTime"></a-input>
               </a-form-model-item>
             </a-col>
             <a-col :span="24" class="btxx">
               <a-form-item label="瀹℃壒鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
-                <a-select v-model="assignFileStream.status" placeholder="璇烽�夋嫨瀹℃壒缁撴灉">
+                <a-select :disabled="disableSubmit" v-model="assignFileStream.status" placeholder="璇烽�夋嫨瀹℃壒缁撴灉">
                   <a-select-option value="3">閫氳繃</a-select-option>
                   <a-select-option value="4">椹冲洖</a-select-option>
                 </a-select>
@@ -137,13 +137,26 @@
             </a-col>
             <a-col :span="24" class="btxx">
               <a-form-model-item label="瀹℃壒鎰忚" :labelCol="labelCol" :wrapperCol="wrapperCol">
-                <a-textarea v-model="assignFileStream.approvalOpinion" rows="4" placeholder="璇疯緭鍏ュ鎵规剰瑙�" />
+                <a-textarea :disabled="disableSubmit" v-model="assignFileStream.approvalOpinion" rows="4"
+                            placeholder="璇疯緭鍏ュ鎵规剰瑙�" />
               </a-form-model-item>
             </a-col>
           </a-row>
           <div class="table-operator" style="text-align: right;">
-            <a-button @click="handleQueXiaoTask" type="primary" icon="close">鍙栨秷</a-button>
-            <a-button @click="submitForm">鎻� 浜�</a-button>
+            <a-button
+              @click="handleQueXiaoTask"
+              icon="close"
+              :disabled="isSubmitting"
+              :class="{'disabled-btn': isSubmitting}"
+            >鍙栨秷</a-button>
+            <a-button
+              @click="submitForm"
+              type="primary"
+              :disabled="isSubmitting"
+              :loading="isSubmitting"
+            >
+              鎻� 浜�
+            </a-button>
           </div>
         </a-form-model>
       </div>
@@ -174,7 +187,8 @@
       form: this.$form.createForm(this),
       span: 12,
       span1: 8,
-      coldisabled: true,
+      disableSubmit: false,
+      inputReadOnly: true,
       spinning: false,
       tableRowRecord: {},
       assignFileStream: {},
@@ -294,15 +308,16 @@
       visible: false,
       // 琛ㄥご
       url: {
-        queryOutBoundOrder: '/tms/toolsLossBound/queryById',
-        queryOutBoundDetailList: '/tms/toolsLossBound/listlossboundDetailByMainId',
+        queryLossBoundOrder: '/tms/toolsLossBound/queryById',
+        queryLossBoundDetailList: '/tms/toolsLossBound/listlossboundDetailByMainId',
         diagramView: '/assign/flow/diagramView',
         queryHisTaskList: '/assign/flow/queryHisTaskList',
-        approve: '/tms/outboundOrder/approval'
+        approve: '/tms/toolsLossBound/approval'
       },
       dictOptions: {},
       superFieldList: [],
-      workflowSource: []
+      workflowSource: [],
+      isSubmitting: false,
     }
   },
   created() {
@@ -337,11 +352,27 @@
       }
     },
     handleQueXiaoTask() {
-      this.visible = false
-      this.routeReload()
+      // 濡傛灉姝e湪鎻愪氦锛岄樆姝㈠彇娑堟搷浣�
+      if (this.isSubmitting) return;
+      this.visible = false;
+      this.routeReload();
     },
     submitForm() {
-      const that = this
+      // 濡傛灉姝e湪鎻愪氦锛岄樆姝㈤噸澶嶇偣鍑�
+      if (this.isSubmitting) return;
+
+      // 寮�鍚叏灞�绂侀��
+      this.isSubmitting = true;
+      document.body.classList.add('submitting');
+
+      const that = this;
+
+      // 瀹氫箟涓�涓仮澶嶇姸鎬佺殑鍑芥暟
+      const resetState = () => {
+        that.isSubmitting = false;
+        document.body.classList.remove('submitting');
+      };
+
       if (!that.assignFileStream.status == null || that.assignFileStream.status === undefined) {
         this.$message.warning('璇烽�夋嫨瀹℃壒鐘舵�侊紒')
         return false
@@ -352,6 +383,10 @@
       }
       // 瑙﹀彂琛ㄥ崟楠岃瘉
       this.form.validateFields((err, values) => {
+        if (err) {
+          resetState(); // 楠岃瘉澶辫触锛屾仮澶嶇姸鎬�
+          return;
+        }
         if (!err) {
           that.confirmLoading = true
           let url = this.url.approve
@@ -377,13 +412,23 @@
             } else {
               that.$message.warning(res.message)
             }
-          }).finally(() => {
-            that.confirmLoading = false
           })
+            .catch((error) => {
+              console.error(error);
+              that.$message.error('鎻愪氦澶辫触');
+            })
+            .finally(() => {
+              that.confirmLoading = false;
+              resetState(); // 璇锋眰缁撴潫锛屾仮澶嶇姸鎬�
+            });
         }
 
       })
     },
+    /**
+     * 鑾峰彇娴佺▼鑺傜偣鍜屾祦绋嬪浘
+     * @param record 寰呭姙璁板綍淇℃伅
+     */
     getAllApproveData(item) {
       this.visible = true
       this.loading = true
@@ -394,12 +439,12 @@
           this.hitaskDataSource = res.result
         }
       })
-      getAction(this.url.queryOutBoundOrder, { id: item.dataId }).then((res => {
+      getAction(this.url.queryLossBoundOrder, { id: item.dataId }).then((res => {
         if (res.success) {
           this.tableRowRecord = res.result
         }
       }))
-      getAction(this.url.queryOutBoundDetailList, { lossBoundId: item.dataId }).then(res => {
+      getAction(this.url.queryLossBoundDetailList, { lossBoundId: item.dataId }).then(res => {
         if (res.success) {
           this.dataSource = res.result.records
           if (res.result.total) {
@@ -418,6 +463,44 @@
 }
 </script>
 <style scoped>
+/* 鍏ㄥ眬绂侀�夋牱寮� - 浣滅敤浜庢暣涓〉闈� */
+html.submitting,
+html.submitting body {
+  pointer-events: none !important;
+  cursor: wait !important;
+}
+
+/* 钂欏眰鏁堟灉澧炲己 */
+html.submitting::before {
+  content: '';
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: rgba(255, 255, 255, 0.5);
+  z-index: 9998;
+}
+
+/* 鍔犺浇鎸囩ず鍣� - 鏇存槑鏄剧殑瑙嗚鍙嶉 */
+html.submitting::after {
+  content: '鎻愪氦涓�...';
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  background: #1890ff;
+  color: white;
+  padding: 10px 20px;
+  border-radius: 4px;
+  z-index: 9999;
+}
+
+/* 绂佺敤鐘舵�佹寜閽牱寮� */
+.disabled-btn {
+  opacity: 0.6;
+  cursor: not-allowed !important;
+}
 .shallow-hr {
   border: 0;
   height: 1px; /* 鍒嗙晫绾跨殑楂樺害 */

--
Gitblit v1.9.3