From 310633feef20e9b77d44fd25e0b41778e033b33b Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期二, 11 十一月 2025 21:48:46 +0800
Subject: [PATCH] feat: 车辆GPS统计,并修改了一些变更任务状态的逻辑

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

diff --git a/app/pages/task/detail.vue b/app/pages/task/detail.vue
index fa10be3..e28d9e9 100644
--- a/app/pages/task/detail.vue
+++ b/app/pages/task/detail.vue
@@ -328,6 +328,7 @@
 
 <script>
   import { getTask, changeTaskStatus } from '@/api/task'
+  import { checkVehicleActiveTasks } from '@/api/task'
   import { formatDateTime } from '@/utils/common'
   import AttachmentUpload from '@/components/AttachmentUpload.vue'
   
@@ -504,10 +505,8 @@
       handleTaskAction(action) {
         switch (action) {
           case 'depart':
-            // 鍑哄彂 -> 鐘舵�佸彉涓哄嚭鍙戜腑
-            this.$modal.confirm('纭畾瑕佸嚭鍙戝悧锛�').then(() => {
-              this.updateTaskStatus('DEPARTING', '浠诲姟宸插嚭鍙�')
-            }).catch(() => {});
+            // 鍑哄彂 -> 妫�鏌ヨ溅杈嗘槸鍚︽湁鍏朵粬姝e湪杩涜涓殑浠诲姟
+            this.checkVehicleAndDepart();
             break;
             
           case 'cancel':
@@ -547,6 +546,82 @@
         }
       },
       
+      // 妫�鏌ヨ溅杈嗙姸鎬佸苟鍑哄彂
+      checkVehicleAndDepart() {
+        // 鑾峰彇浠诲姟杞﹁締ID
+        const vehicleId = this.getVehicleId();
+        if (!vehicleId) {
+          this.$modal.showToast('鏈壘鍒颁换鍔¤溅杈嗕俊鎭�');
+          return;
+        }
+        
+        // 鏄剧ず鍔犺浇鎻愮ず
+        uni.showLoading({
+          title: '妫�鏌ヨ溅杈嗙姸鎬�...'
+        });
+        
+        checkVehicleActiveTasks(vehicleId).then(response => {
+          uni.hideLoading();
+          
+          const activeTasks = response.data || [];
+          
+          // 杩囨护鎺夊綋鍓嶄换鍔℃湰韬�
+          const otherActiveTasks = activeTasks.filter(task => task.taskId !== this.taskId);
+          
+          if (otherActiveTasks.length > 0) {
+            // 杞﹁締鏈夊叾浠栨鍦ㄨ繘琛屼腑鐨勪换鍔�
+            const task = otherActiveTasks[0];
+            const taskStatus = this.getStatusText(task.taskStatus);
+            const message = `璇ヨ溅杈嗗凡鏈夋鍦ㄨ浆杩愪腑鐨勪换鍔★紒
+
+浠诲姟鍗曞彿锛�${task.taskCode}
+浠诲姟鐘舵�侊細${taskStatus}
+
+璇峰厛瀹屾垚褰撳墠浠诲姟鍚庡啀鍑哄彂鏂颁换鍔°�俙;
+            
+            uni.showModal({
+              title: '鎻愮ず',
+              content: message,
+              showCancel: false,
+              confirmText: '鎴戠煡閬撲簡'
+            });
+            return;
+          }
+          
+          // 杞﹁締娌℃湁鍏朵粬姝e湪杩涜涓殑浠诲姟锛屽彲浠ュ嚭鍙�
+          this.$modal.confirm('纭畾瑕佸嚭鍙戝悧锛�').then(() => {
+            this.updateTaskStatus('DEPARTING', '浠诲姟宸插嚭鍙�')
+          }).catch(() => {});
+          
+        }).catch(error => {
+          uni.hideLoading();
+          console.error('妫�鏌ヨ溅杈嗙姸鎬佸け璐�:', error);
+          // 妫�鏌ュけ璐ユ椂锛屼粛鐒跺厑璁稿嚭鍙�
+          this.$modal.confirm('妫�鏌ヨ溅杈嗙姸鎬佸け璐ワ紝鏄惁缁х画鍑哄彂锛�').then(() => {
+            this.updateTaskStatus('DEPARTING', '浠诲姟宸插嚭鍙�')
+          }).catch(() => {});
+        });
+      },
+      
+      // 鑾峰彇浠诲姟杞﹁締ID
+      getVehicleId() {
+        if (!this.taskDetail) {
+          return null;
+        }
+        
+        // 浠庤溅杈嗗垪琛ㄤ腑鑾峰彇绗竴涓溅杈嗙殑ID
+        if (this.taskDetail.vehicleList && this.taskDetail.vehicleList.length > 0) {
+          return this.taskDetail.vehicleList[0].vehicleId;
+        }
+        
+        // 鎴栬�呬粠鍗曚釜杞﹁締瀵硅薄鑾峰彇
+        if (this.taskDetail.vehicleId) {
+          return this.taskDetail.vehicleId;
+        }
+        
+        return null;
+      },
+      
       // 鏇存柊浠诲姟鐘舵��
       updateTaskStatus(status, remark) {
         // 鑾峰彇GPS浣嶇疆淇℃伅

--
Gitblit v1.9.1