From 81946b468aff97b96fe50186246d3a853ce79b1b Mon Sep 17 00:00:00 2001
From: liulijun <liulijun@hnkhzn.com>
Date: 星期五, 06 三月 2026 11:38:48 +0800
Subject: [PATCH] 增加已有任务超时提示在任务完成后自动清除

---
 项目代码/WMS/WMSClient/src/extension/taskinfo/task.js |  507 +++++++++++++++++++++++++++++---------------------------
 1 files changed, 263 insertions(+), 244 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/taskinfo/task.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/taskinfo/task.js"
index 495f876..8a6c791 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/taskinfo/task.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/taskinfo/task.js"
@@ -2,22 +2,22 @@
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
 import gridHeader from './extend/relocationTask.vue'
 let extension = {
-    components: {
-      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
-      gridHeader: gridHeader,
-      gridBody: '',
-      gridFooter: '',
-      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
-      modelHeader: '',
-      modelBody: '',
-      modelFooter: ''
-    },
-    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
-    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
-    methods: {
-       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
-      onInit() {  
-        let TaskHandCancelBtn = this.buttons.find(x => x.value == 'TaskHandCancel');
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: gridHeader,
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+    //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {
+      let TaskHandCancelBtn = this.buttons.find(x => x.value == 'TaskHandCancel');
       if (TaskHandCancelBtn) {
         TaskHandCancelBtn.onClick = function () {
           let rows = this.$refs.table.getSelected();
@@ -25,7 +25,7 @@
           if (rows.length > 1) return this.$error("璇烽�夋嫨涓�鏉℃暟鎹�!");
           var param = rows[0].taskNum;
           this.http
-            .post("api/Task/TaskCancel?taskNum="+param, "鏁版嵁澶勭悊涓�...")
+            .post("api/Task/TaskCancel?taskNum=" + param, "鏁版嵁澶勭悊涓�...")
             .then((x) => {
               if (x.status) {
                 this.$Message.success('浠诲姟鍙栨秷鎴愬姛.');
@@ -39,53 +39,53 @@
       let TaskHandCompletedBtn = this.buttons.find(x => x.value == 'TaskHandCompleted');
       if (TaskHandCompletedBtn) {
         TaskHandCompletedBtn.onClick = function () {
-          this.$confirm("鏄惁纭瀹屾垚浠诲姟","鎵嬪姩浠诲姟瀹屾垚璀﹀憡",{
-              confirmButtonText: "纭畾",
-              cancelButtonText: "鍙栨秷",
-              type: "warning",
-              center: true,
-              }).then(() => {
-                let rows = this.$refs.table.getSelected();
-                if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
-                if (rows.length > 1) return this.$error("璇烽�夋嫨涓�鏉℃暟鎹�!");
-                var param = rows[0].taskNum;
-                this.http
-                .post("api/Task/TaskCompleted?taskNum="+param, "")
-                .then((x) => {
-                    if (x.status) {
-                    this.$Message.success('浠诲姟鎵嬪姩瀹屾垚');
-                    this.refresh();
-                  } else {
-                    return this.$error(x.message);
-                  }
-                });
+          this.$confirm("鏄惁纭瀹屾垚浠诲姟", "鎵嬪姩浠诲姟瀹屾垚璀﹀憡", {
+            confirmButtonText: "纭畾",
+            cancelButtonText: "鍙栨秷",
+            type: "warning",
+            center: true,
+          }).then(() => {
+            let rows = this.$refs.table.getSelected();
+            if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+            if (rows.length > 1) return this.$error("璇烽�夋嫨涓�鏉℃暟鎹�!");
+            var param = rows[0].taskNum;
+            this.http
+              .post("api/Task/TaskCompleted?taskNum=" + param, "")
+              .then((x) => {
+                if (x.status) {
+                  this.$Message.success('浠诲姟鎵嬪姩瀹屾垚');
+                  this.refresh();
+                } else {
+                  return this.$error(x.message);
+                }
               });
+          });
         }
       }
       let ResendTaskBtn = this.buttons.find(x => x.value == 'ResendTask');
       if (ResendTaskBtn) {
         ResendTaskBtn.onClick = function () {
-          this.$confirm("鏄惁纭閲嶆柊涓嬪彂浠诲姟","閲嶆柊涓嬪彂浠诲姟璀﹀憡",{
-              confirmButtonText: "纭畾",
-              cancelButtonText: "鍙栨秷",
-              type: "warning",
-              center: true,
-              }).then(() => {
-                let rows = this.$refs.table.getSelected();
-                if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
-                if (rows.length > 1) return this.$error("璇烽�夋嫨涓�鏉℃暟鎹�!");
-                var param = rows[0].taskNum;
-                this.http
-                .post("api/Task/ResendTask?taskNum="+param, "")
-                .then((x) => {
-                    if (x.status) {
-                    this.$Message.success('浠诲姟閲嶆柊涓嬪彂');
-                    this.refresh();
-                  } else {
-                    return this.$error(x.message);
-                  }
-                });
+          this.$confirm("鏄惁纭閲嶆柊涓嬪彂浠诲姟", "閲嶆柊涓嬪彂浠诲姟璀﹀憡", {
+            confirmButtonText: "纭畾",
+            cancelButtonText: "鍙栨秷",
+            type: "warning",
+            center: true,
+          }).then(() => {
+            let rows = this.$refs.table.getSelected();
+            if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+            if (rows.length > 1) return this.$error("璇烽�夋嫨涓�鏉℃暟鎹�!");
+            var param = rows[0].taskNum;
+            this.http
+              .post("api/Task/ResendTask?taskNum=" + param, "")
+              .then((x) => {
+                if (x.status) {
+                  this.$Message.success('浠诲姟閲嶆柊涓嬪彂');
+                  this.refresh();
+                } else {
+                  return this.$error(x.message);
+                }
               });
+          });
         }
       }
       let relocationBtn = this.buttons.find(x => x.value == 'Relocation');
@@ -94,74 +94,74 @@
           this.$refs.gridHeader.open();
         }
       }
-      
+
       // 鍒濆鍖栦换鍔$姸鎬佹鏌ュ畾鏃跺櫒
       this.taskStatusMap = {}; // 瀛樺偍浠诲姟鐘舵�佸紑濮嬫椂闂�
-      this.taskTimeoutMinutes = 1; // 浠诲姟瓒呮椂鏃堕棿锛屽崟浣嶄负鍒嗛挓
+      this.taskTimeoutMinutes = 10; // 浠诲姟瓒呮椂鏃堕棿锛屽崟浣嶄负鍒嗛挓
       this.checkTaskStatusTimer = setInterval(() => {
         this.checkTaskStatus();
       }, 1000); // 姣�1绉掓鏌ヤ竴娆★紝鎻愰珮妫�鏌ョ簿搴︼紝鍑忓皯寤惰繜
-      },
-      
-      // 妫�鏌ヤ换鍔$姸鎬�
-      checkTaskStatus() {
-        // 鑾峰彇褰撳墠鎵�鏈変换鍔℃暟鎹�
-        const taskData = this.$refs.table?.rowData || this.$refs.table?.tableData || [];
-        const now = new Date();
-        
-        // 鑾峰彇鍏ㄥ眬瀵硅薄鍜宻tore
-        const globalObj = this.$global || window.$global || {};
-        const store = this.$store || window.$store;
-        
-        // 澶勭悊娑堟伅鍒犻櫎閫昏緫锛岄噸缃搴斾换鍔$殑瀹氭椂鍣�
-        const deletedMessages = globalObj.messageDeleted || [];
-        
-        if (deletedMessages.length > 0) {
-          const storeMessageList = store?.state?.messageList || [];
-          
-          // 閬嶅巻琚垹闄ょ殑娑堟伅ID锛岄噸缃搴斾换鍔$殑瀹氭椂鍣�
-          deletedMessages.forEach(deletedId => {
-            const deletedMessage = storeMessageList.find(msg => msg.id === deletedId);
-            if (deletedMessage?.businessType === 'task_timeout' && deletedMessage.taskNum && this.taskStatusMap[deletedMessage.taskNum]) {
-              this.taskStatusMap[deletedMessage.taskNum] = now;
-            }
-          });
-          
-          // 娓呯┖宸插鐞嗙殑鍒犻櫎娑堟伅鍒楄〃
-          globalObj.messageDeleted = [];
-        }
-        
-        // 鑾峰彇褰撳墠鎵�鏈変换鍔″彿鍜岀姸鎬�
-        const currentTaskStatuses = {};
-        taskData.forEach(task => {
-          currentTaskStatuses[task.taskNum] = task.taskStatus;
-        });
-        
-        // 妫�鏌ヤ换鍔$姸鎬�
-        taskData.forEach(task => {
-          if (task.taskStatus === 210) {
-            // 鍫嗗灈鏈烘墽琛屼腑鐘舵��
-            if (!this.taskStatusMap[task.taskNum]) {
-              this.taskStatusMap[task.taskNum] = now;
-            } else {
-              // 璁$畻鎸佺画鏃堕棿锛堝垎閽燂級
-              const duration = (now - this.taskStatusMap[task.taskNum]) / 60000;
-              if (duration >= this.taskTimeoutMinutes) {
-                this.sendTaskWarningMessage(task, duration);
-                delete this.taskStatusMap[task.taskNum];
-              }
-            }
-          } else {
-            // 浠诲姟鐘舵�佸凡鏀瑰彉锛屾竻闄よ褰�
-            delete this.taskStatusMap[task.taskNum];
+    },
+
+    // 妫�鏌ヤ换鍔$姸鎬�
+    checkTaskStatus() {
+      // 鑾峰彇褰撳墠鎵�鏈変换鍔℃暟鎹�
+      const taskData = this.$refs.table?.rowData || this.$refs.table?.tableData || [];
+      const now = new Date();
+
+      // 鑾峰彇鍏ㄥ眬瀵硅薄鍜宻tore
+      const globalObj = this.$global || window.$global || {};
+      const store = this.$store || window.$store;
+
+      // 澶勭悊娑堟伅鍒犻櫎閫昏緫锛岄噸缃搴斾换鍔$殑瀹氭椂鍣�
+      const deletedMessages = globalObj.messageDeleted || [];
+
+      if (deletedMessages.length > 0) {
+        const storeMessageList = store?.state?.messageList || [];
+
+        // 閬嶅巻琚垹闄ょ殑娑堟伅ID锛岄噸缃搴斾换鍔$殑瀹氭椂鍣�
+        deletedMessages.forEach(deletedId => {
+          const deletedMessage = storeMessageList.find(msg => msg.id === deletedId);
+          if (deletedMessage?.businessType === 'task_timeout' && deletedMessage.taskNum && this.taskStatusMap[deletedMessage.taskNum]) {
+            this.taskStatusMap[deletedMessage.taskNum] = now;
           }
         });
-        
-        // 娓呴櫎宸茶В鍐崇殑浠诲姟瓒呮椂娑堟伅
-        this.clearResolvedTaskMessages(currentTaskStatuses);
-      },
-      
+
+        // 娓呯┖宸插鐞嗙殑鍒犻櫎娑堟伅鍒楄〃
+        globalObj.messageDeleted = [];
+      }
+
+      // 鑾峰彇褰撳墠鎵�鏈変换鍔″彿鍜岀姸鎬�
+      const currentTaskStatuses = {};
+      taskData.forEach(task => {
+        currentTaskStatuses[task.taskNum] = task.taskStatus;
+      });
+
+      // 妫�鏌ヤ换鍔$姸鎬�
+      taskData.forEach(task => {
+        if (task.taskStatus === 210) {
+          // 鍫嗗灈鏈烘墽琛屼腑鐘舵��
+          if (!this.taskStatusMap[task.taskNum]) {
+            this.taskStatusMap[task.taskNum] = now;
+          } else {
+            // 璁$畻鎸佺画鏃堕棿锛堝垎閽燂級
+            const duration = (now - this.taskStatusMap[task.taskNum]) / 60000;
+            if (duration >= this.taskTimeoutMinutes) {
+              this.sendTaskWarningMessage(task, duration);
+              delete this.taskStatusMap[task.taskNum];
+            }
+          }
+        } else {
+          // 浠诲姟鐘舵�佸凡鏀瑰彉锛屾竻闄よ褰�
+          delete this.taskStatusMap[task.taskNum];
+        }
+      });
+
       // 娓呴櫎宸茶В鍐崇殑浠诲姟瓒呮椂娑堟伅
+      this.clearResolvedTaskMessages(currentTaskStatuses);
+    },
+
+    // 娓呴櫎宸茶В鍐崇殑浠诲姟瓒呮椂娑堟伅
       clearResolvedTaskMessages(currentTaskStatuses) {
         // 鑾峰彇鍏ㄥ眬瀵硅薄鍜宻tore
         const globalObj = this.$global || window.$global || {};
@@ -178,137 +178,156 @@
         // 閬嶅巻鎵�鏈変换鍔¤秴鏃舵秷鎭�
         taskTimeoutMessages.forEach(msg => {
           const taskNum = msg.taskNum;
-          // 妫�鏌ヨ浠诲姟鏄惁浠嶇劧澶勪簬鍫嗗灈鏈烘墽琛屼腑鐘舵��
-          if (currentTaskStatuses[taskNum] && currentTaskStatuses[taskNum] !== 210) {
-            // 浠诲姟宸蹭笉鍐嶅浜庡爢鍨涙満鎵ц涓姸鎬侊紝娓呴櫎璇ユ秷鎭�
+          // 妫�鏌ユ潯浠讹細
+          // 1. 浠诲姟涓嶅湪褰撳墠浠诲姟鍒楄〃涓紙宸插畬鎴愭垨琚Щ闄わ級
+          // 2. 浠诲姟鍦ㄥ綋鍓嶄换鍔″垪琛ㄤ腑锛屼絾鐘舵�佸凡涓嶅啀鏄爢鍨涙満鎵ц涓�
+          if (!currentTaskStatuses[taskNum] || currentTaskStatuses[taskNum] !== 210) {
+            // 浠诲姟宸插畬鎴愭垨鐘舵�佸凡鏀瑰彉锛屾竻闄よ娑堟伅
             this.handleDeleteTaskMessage(msg);
           }
         });
       },
-      
-      // 澶勭悊鍒犻櫎鍗曚釜浠诲姟娑堟伅
-      handleDeleteTaskMessage(message) {
-        // 鑾峰彇鍏ㄥ眬瀵硅薄鍜宻tore
-        const globalObj = this.$global || window.$global || {};
-        const store = this.$store || window.$store;
-        
-        // 浠庡叏灞�娑堟伅鍒楄〃涓垹闄よ娑堟伅
-        if (globalObj.messageList) {
-          const index = globalObj.messageList.findIndex(msg => msg.id === message.id);
-          if (index !== -1) {
-            globalObj.messageList.splice(index, 1);
-          }
+
+    // 澶勭悊鍒犻櫎鍗曚釜浠诲姟娑堟伅
+    handleDeleteTaskMessage(message) {
+      // 鑾峰彇鍏ㄥ眬瀵硅薄鍜宻tore
+      const globalObj = this.$global || window.$global || {};
+      const store = this.$store || window.$store;
+
+      // 浠庡叏灞�娑堟伅鍒楄〃涓垹闄よ娑堟伅
+      if (globalObj.messageList) {
+        const index = globalObj.messageList.findIndex(msg => msg.id === message.id);
+        if (index !== -1) {
+          globalObj.messageList.splice(index, 1);
         }
-        
-        // 浠巗tore涓垹闄よ娑堟伅
-        if (store) {
-          store.commit('removeMessage', message.id);
-        }
-      },
-      
-      // 鍙戦�佷换鍔¤鍛婃秷鎭�
-      sendTaskWarningMessage(task, duration) {
-        // 鍒涘缓璀﹀憡娑堟伅
-        const warningMessage = {
-          id: Date.now(),
-          title: '浠诲姟寮傚父璀﹀憡',
-          message: `浠诲姟鍙� ${task.taskNum} 宸插湪鍫嗗灈鏈烘墽琛屼腑鐘舵�佽秴杩�${Math.round(duration)}鍒嗛挓锛岃鍙婃椂澶勭悊锛乣,
-          type: 'warning',
-          businessType: 'task_timeout',
-          taskNum: task.taskNum,
-          createTime: new Date().toLocaleString()
-        };
-        
-        // 鑾峰彇鍏ㄥ眬瀵硅薄鍜宻tore锛屾鏌ユ槸鍚﹀瓨鍦ㄧ浉鍚岀殑璀﹀憡娑堟伅
-        const globalObj = this.$global || window.$global || {};
-        const store = this.$store || window.$store;
-        const globalMessageList = globalObj.messageList || [];
-        const storeMessageList = store?.state?.messageList || [];
-        
-        // 妫�鏌ユ槸鍚﹀凡缁忓瓨鍦ㄧ浉鍚岀殑浠诲姟瓒呮椂璀﹀憡
-        const hasExistingWarning = [...globalMessageList, ...storeMessageList].some(msg => 
-          msg.businessType === 'task_timeout' && msg.taskNum === task.taskNum
-        );
-        
-        if (hasExistingWarning) return;
-        
-        // 鍙戦�佹秷鎭埌娑堟伅鍒楄〃
-        try {
-          // 娣诲姞娑堟伅鍒皊tore
-          const $store = this.$store || window.$store;
-          if ($store) {
-            $store.commit('addMessage', warningMessage);
-          }
-          
-          // 娣诲姞娑堟伅鍒板叏灞�娑堟伅鍒楄〃
-          if (globalObj.messageList) {
-            globalObj.messageList.push(warningMessage);
-          }
-          
-          // 鏄剧ず璀﹀憡瀵硅瘽妗嗭紝浼樺厛浣跨敤$alert
-          // const $global = this.$global || window.$global;
-          // const alertOptions = {
-          //   confirmButtonText: '纭畾',
-          //   type: warningMessage.type,
-          //   closeOnClickModal: false,
-          //   closeOnPressEscape: false,
-          //   showCancelButton: false
-          // };
-          
-          // if (this.$alert || window.$alert) {
-          //   const $alert = this.$alert || window.$alert;
-          //   $alert(warningMessage.message, warningMessage.title, alertOptions);
-          // } else if (this.$confirm || window.$confirm) {
-          //   const $confirm = this.$confirm || window.$confirm;
-          //   $confirm(warningMessage.message, warningMessage.title, alertOptions);
-          // } else {
-          //   // 浣跨敤娴忚鍣ㄥ師鐢焌lert浣滀负澶囬��
-          //   alert(`${warningMessage.title}: ${warningMessage.message}`);
-          // }
-        } catch (error) {
-          // 鍑洪敊鏃朵娇鐢ㄦ祻瑙堝櫒鍘熺敓alert浣滀负鏈�缁堝閫�
-          try {
-            alert(`浠诲姟寮傚父璀﹀憡: 浠诲姟鍙� ${task.taskNum} 宸插湪鍫嗗灈鏈烘墽琛屼腑鐘舵�佽秴杩�${Math.round(duration)}鍒嗛挓锛岃鍙婃椂澶勭悊锛乣);
-          } catch (e) {
-            // 蹇界暐鎵�鏈夐敊璇�
-          }
-        }
-      },
-      onInited() {
-        //妗嗘灦鍒濆鍖栭厤缃悗
-        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
-        //this.detailOptions.columns.forEach(column=>{ });
-      },
-      searchBefore(param) {
-        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
-        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
-        return true;
-      },
-      searchAfter(result) {
-        // 鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
-        return true;
-      },
-      addBefore(formData) {
-        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
-        return true;
-      },
-      updateBefore(formData) {
-        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
-        return true;
-      },
-      rowClick({ row, column, event }) {
-        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
-        this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
-      },
-      modelOpenAfter(row) {
-        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
-        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
-        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
-        //(3)this.editFormFields.瀛楁='xxx';
-        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
-        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
       }
+
+      // 浠巗tore涓垹闄よ娑堟伅
+      if (store) {
+        store.commit('removeMessage', message.id);
+      }
+    },
+
+    // 鍙戦�佷换鍔¤鍛婃秷鎭�
+    sendTaskWarningMessage(task, duration) {
+      // 鍒涘缓璀﹀憡娑堟伅
+      const warningMessage = {
+        id: Date.now(),
+        title: '浠诲姟寮傚父璀﹀憡',
+        message: `浠诲姟鍙� ${task.taskNum} 宸插湪鍫嗗灈鏈烘墽琛屼腑鐘舵�佽秴杩�${Math.round(duration)}鍒嗛挓锛岃鍙婃椂澶勭悊锛乣,
+        type: 'warning',
+        businessType: 'task_timeout',
+        taskNum: task.taskNum,
+        createTime: new Date().toLocaleString()
+      };
+
+      // 鑾峰彇鍏ㄥ眬瀵硅薄鍜宻tore锛屾鏌ユ槸鍚﹀瓨鍦ㄧ浉鍚岀殑璀﹀憡娑堟伅
+      const globalObj = this.$global || window.$global || {};
+      const store = this.$store || window.$store;
+      const globalMessageList = globalObj.messageList || [];
+      const storeMessageList = store?.state?.messageList || [];
+
+      // 妫�鏌ユ槸鍚﹀凡缁忓瓨鍦ㄧ浉鍚岀殑浠诲姟瓒呮椂璀﹀憡
+      const hasExistingWarning = [...globalMessageList, ...storeMessageList].some(msg =>
+        msg.businessType === 'task_timeout' && msg.taskNum === task.taskNum
+      );
+
+      if (hasExistingWarning) return;
+
+      // 鍙戦�佹秷鎭埌娑堟伅鍒楄〃
+      try {
+        // 娣诲姞娑堟伅鍒皊tore
+        const $store = this.$store || window.$store;
+        if ($store) {
+          $store.commit('addMessage', warningMessage);
+        }
+
+        // 娣诲姞娑堟伅鍒板叏灞�娑堟伅鍒楄〃
+        if (globalObj.messageList) {
+          globalObj.messageList.push(warningMessage);
+        }
+
+        // 鏄剧ず璀﹀憡瀵硅瘽妗嗭紝浼樺厛浣跨敤$alert
+        // const $global = this.$global || window.$global;
+        // const alertOptions = {
+        //   confirmButtonText: '纭畾',
+        //   type: warningMessage.type,
+        //   closeOnClickModal: false,
+        //   closeOnPressEscape: false,
+        //   showCancelButton: false
+        // };
+
+        // if (this.$alert || window.$alert) {
+        //   const $alert = this.$alert || window.$alert;
+        //   $alert(warningMessage.message, warningMessage.title, alertOptions);
+        // } else if (this.$confirm || window.$confirm) {
+        //   const $confirm = this.$confirm || window.$confirm;
+        //   $confirm(warningMessage.message, warningMessage.title, alertOptions);
+        // } else {
+        //   // 浣跨敤娴忚鍣ㄥ師鐢焌lert浣滀负澶囬��
+        //   alert(`${warningMessage.title}: ${warningMessage.message}`);
+        // }
+      } catch (error) {
+        // 鍑洪敊鏃朵娇鐢ㄦ祻瑙堝櫒鍘熺敓alert浣滀负鏈�缁堝閫�
+        try {
+          alert(`浠诲姟寮傚父璀﹀憡: 浠诲姟鍙� ${task.taskNum} 宸插湪鍫嗗灈鏈烘墽琛屼腑鐘舵�佽秴杩�${Math.round(duration)}鍒嗛挓锛岃鍙婃椂澶勭悊锛乣);
+        } catch (e) {
+          // 蹇界暐鎵�鏈夐敊璇�
+        }
+      }
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      // 鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      
+      // 澶勭悊浠诲姟鍒楄〃鍒锋柊鍚庣殑浠诲姟瓒呮椂娑堟伅娓呯悊
+      // 鎻愬彇褰撳墠浠诲姟鐘舵��
+      const currentTaskStatuses = {};
+      if (result && Array.isArray(result)) {
+        result.forEach(task => {
+          currentTaskStatuses[task.taskNum] = task.taskStatus;
+        });
+      } else if (result && result.result && Array.isArray(result.result)) {
+        // 澶勭悊鍒嗛〉杩斿洖鐨勬暟鎹牸寮�
+        result.result.forEach(task => {
+          currentTaskStatuses[task.taskNum] = task.taskStatus;
+        });
+      }
+      
+      // 娓呴櫎宸茶В鍐崇殑浠诲姟瓒呮椂娑堟伅
+      this.clearResolvedTaskMessages(currentTaskStatuses);
+      
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
     }
-  };
-  export default extension;
-  
\ No newline at end of file
+  }
+};
+export default extension;

--
Gitblit v1.9.3