From 98a69d51981ee6a49136024c8b005f134d3313cd Mon Sep 17 00:00:00 2001
From: liulijun <liulijun@hnkhzn.com>
Date: 星期四, 05 三月 2026 17:29:34 +0800
Subject: [PATCH] 增加任务异常提示和空托数量预警
---
项目代码/WMS/WMSClient/src/extension/taskinfo/task.js | 181 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 180 insertions(+), 1 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 dc4970b..495f876 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"
@@ -94,6 +94,185 @@
this.$refs.gridHeader.open();
}
}
+
+ // 鍒濆鍖栦换鍔$姸鎬佹鏌ュ畾鏃跺櫒
+ this.taskStatusMap = {}; // 瀛樺偍浠诲姟鐘舵�佸紑濮嬫椂闂�
+ this.taskTimeoutMinutes = 1; // 浠诲姟瓒呮椂鏃堕棿锛屽崟浣嶄负鍒嗛挓
+ 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];
+ }
+ });
+
+ // 娓呴櫎宸茶В鍐崇殑浠诲姟瓒呮椂娑堟伅
+ this.clearResolvedTaskMessages(currentTaskStatuses);
+ },
+
+ // 娓呴櫎宸茶В鍐崇殑浠诲姟瓒呮椂娑堟伅
+ clearResolvedTaskMessages(currentTaskStatuses) {
+ // 鑾峰彇鍏ㄥ眬瀵硅薄鍜宻tore
+ const globalObj = this.$global || window.$global || {};
+ const store = this.$store || window.$store;
+
+ // 鑾峰彇鎵�鏈夋秷鎭垪琛�
+ const globalMessageList = globalObj.messageList || [];
+ const storeMessageList = store?.state?.messageList || [];
+
+ // 鍚堝苟鎵�鏈夋秷鎭紝鎵惧嚭闇�瑕佹竻闄ょ殑浠诲姟瓒呮椂娑堟伅
+ const allMessages = [...globalMessageList, ...storeMessageList];
+ const taskTimeoutMessages = allMessages.filter(msg => msg.businessType === 'task_timeout');
+
+ // 閬嶅巻鎵�鏈変换鍔¤秴鏃舵秷鎭�
+ taskTimeoutMessages.forEach(msg => {
+ const taskNum = msg.taskNum;
+ // 妫�鏌ヨ浠诲姟鏄惁浠嶇劧澶勪簬鍫嗗灈鏈烘墽琛屼腑鐘舵��
+ 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);
+ }
+ }
+
+ // 浠巗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() {
//妗嗘灦鍒濆鍖栭厤缃悗
@@ -106,7 +285,7 @@
return true;
},
searchAfter(result) {
- //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+ // 鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
return true;
},
addBefore(formData) {
--
Gitblit v1.9.3