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 |   91 +++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 87 insertions(+), 4 deletions(-)

diff --git a/app/pages/task/detail.vue b/app/pages/task/detail.vue
index 8803e0a..e28d9e9 100644
--- a/app/pages/task/detail.vue
+++ b/app/pages/task/detail.vue
@@ -198,6 +198,7 @@
       <AttachmentUpload 
         :taskId="taskId" 
         title="浠诲姟闄勪欢"
+        :readonly="isTaskFinished"
         @uploaded="onAttachmentUploaded"
         @deleted="onAttachmentDeleted"
       />
@@ -327,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'
   
@@ -341,6 +343,13 @@
       }
     },
     computed: {
+      // 鍒ゆ柇浠诲姟鏄惁宸茬粨鏉燂紙宸插畬鎴愭垨宸插彇娑堬級
+      isTaskFinished() {
+        if (!this.taskDetail || !this.taskDetail.taskStatus) {
+          return false
+        }
+        return ['COMPLETED', 'CANCELLED'].includes(this.taskDetail.taskStatus)
+      },
       // 鏄剧ず浠诲姟绫诲瀷
       displayTaskType() {
         if (!this.taskDetail || !this.taskDetail.taskType) {
@@ -496,10 +505,8 @@
       handleTaskAction(action) {
         switch (action) {
           case 'depart':
-            // 鍑哄彂 -> 鐘舵�佸彉涓哄嚭鍙戜腑
-            this.$modal.confirm('纭畾瑕佸嚭鍙戝悧锛�').then(() => {
-              this.updateTaskStatus('DEPARTING', '浠诲姟宸插嚭鍙�')
-            }).catch(() => {});
+            // 鍑哄彂 -> 妫�鏌ヨ溅杈嗘槸鍚︽湁鍏朵粬姝e湪杩涜涓殑浠诲姟
+            this.checkVehicleAndDepart();
             break;
             
           case 'cancel':
@@ -539,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