From 847a7773ef1a8ad418c6934d35b5f205a97c04d0 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 06 十二月 2025 17:03:24 +0800
Subject: [PATCH] fix:在任务状态更新时,需要更新日志到旧系统

---
 app/pages/task/index.vue |   83 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 79 insertions(+), 4 deletions(-)

diff --git a/app/pages/task/index.vue b/app/pages/task/index.vue
index 99f61b6..cf1dbff 100644
--- a/app/pages/task/index.vue
+++ b/app/pages/task/index.vue
@@ -221,6 +221,7 @@
   import { listTask, changeTaskStatus } from '@/api/task'
   import { mapState } from 'vuex'
   import { formatDateTime } from '@/utils/common'
+  import { checkTaskCanDepart } from '@/utils/taskValidator'
   
   export default {
     components: {
@@ -461,13 +462,87 @@
       },
       
       // 澶勭悊浠诲姟鎿嶄綔
-      handleTaskAction(task, action) {
+      async handleTaskAction(task, action) {
         switch (action) {
           case 'depart':
             // 鍑哄彂 -> 鐘舵�佸彉涓哄嚭鍙戜腑
-            this.$modal.confirm('纭畾瑕佸嚭鍙戝悧锛�').then(() => {
-              this.updateTaskStatus(task.taskId, 'DEPARTING', '浠诲姟宸插嚭鍙�')
-            }).catch(() => {});
+            // 鏄剧ず鍔犺浇鎻愮ず
+            uni.showLoading({
+              title: '妫�鏌ヤ换鍔$姸鎬�...'
+            });
+            
+            try {
+              // 璋冪敤宸ュ叿绫绘鏌ヤ换鍔℃槸鍚﹀彲浠ュ嚭鍙戯紙鍖呭惈鍩烘湰鏍¢獙鍜屽啿绐佹鏌ワ級
+              const checkResult = await checkTaskCanDepart(task)
+              
+              uni.hideLoading();
+              
+              console.log('鍑哄彂妫�鏌ョ粨鏋�:', checkResult);
+              console.log('valid:', checkResult.valid);
+              console.log('conflicts:', checkResult.conflicts);
+              
+              if (!checkResult.valid) {
+                // 鏍¢獙澶辫触锛屾樉绀烘彁绀轰俊鎭苟鎻愪緵璺宠浆閫夐」
+                const conflicts = checkResult.conflicts || [];
+                const conflictInfo = conflicts.length > 0 ? conflicts[0] : null;
+                
+                console.log('鍐茬獊淇℃伅:', conflictInfo);
+                
+                // 濡傛灉鏈夊啿绐佷换鍔′俊鎭紝鎻愪緵璺宠浆鎸夐挳
+                if (conflictInfo && conflictInfo.taskId) {
+                  console.log('鏄剧ず甯﹁烦杞寜閽殑寮圭獥锛屼换鍔D:', conflictInfo.taskId);
+                  
+                  const conflictTaskId = conflictInfo.taskId;
+                  const message = checkResult.message || conflictInfo.message || '瀛樺湪鍐茬獊浠诲姟';
+                  
+                  uni.showModal({
+                    title: '鎻愮ず',
+                    content: message,
+                    confirmText: '鍘诲鐞�',
+                    cancelText: '鐭ラ亾浜�',
+                    success: function(res) {
+                      console.log('寮圭獥鐐瑰嚮缁撴灉:', res);
+                      if (res.confirm) {
+                        // 鐢ㄦ埛鐐瑰嚮"鐜板湪鍘诲鐞�"锛岃烦杞埌鍐茬獊浠诲姟璇︽儏椤�
+                        console.log('鍑嗗璺宠浆鍒颁换鍔¤鎯呴〉:', conflictTaskId);
+                        uni.navigateTo({
+                          url: `/pagesTask/detail?id=${conflictTaskId}`
+                        });
+                      }
+                    },
+                    fail: function(err) {
+                      console.error('鏄剧ず寮圭獥澶辫触:', err);
+                    }
+                  });
+                } else {
+                  // 娌℃湁鍐茬獊浠诲姟ID锛屽彧鏄剧ず鎻愮ず
+                  console.log('鏄剧ず鏅�氭彁绀哄脊绐�');
+                  uni.showModal({
+                    title: '鎻愮ず',
+                    content: checkResult.message || '浠诲姟鏍¢獙澶辫触',
+                    showCancel: false,
+                    confirmText: '鐭ラ亾浜�',
+                    fail: function(err) {
+                      console.error('鏄剧ず寮圭獥澶辫触:', err);
+                    }
+                  });
+                }
+                return;
+              }
+              
+              // 鎵�鏈夋鏌ラ�氳繃锛屽彲浠ュ嚭鍙�
+              this.$modal.confirm('纭畾瑕佸嚭鍙戝悧锛�').then(() => {
+                this.updateTaskStatus(task.taskId, 'DEPARTING', '浠诲姟宸插嚭鍙�')
+              }).catch(() => {});
+              
+            } catch (error) {
+              uni.hideLoading();
+              console.error('妫�鏌ヤ换鍔$姸鎬佸け璐�:', error);
+              // 妫�鏌ュけ璐ユ椂锛屼粛鐒跺厑璁稿嚭鍙�
+              this.$modal.confirm('妫�鏌ヤ换鍔$姸鎬佸け璐ワ紝鏄惁缁х画鍑哄彂锛�').then(() => {
+                this.updateTaskStatus(task.taskId, 'DEPARTING', '浠诲姟宸插嚭鍙�')
+              }).catch(() => {});
+            }
             break;
             
           case 'cancel':

--
Gitblit v1.9.1