From 0ffdf00009b0bede0859fa33deddefb55c075a7b Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 01 二月 2026 16:42:36 +0800
Subject: [PATCH] feat:优化增加任务同步接口,允许前端手动控制同步

---
 ruoyi-ui/src/views/task/general/detail.vue |   75 +++++++++++++++++++++++++++++++++++--
 1 files changed, 70 insertions(+), 5 deletions(-)

diff --git a/ruoyi-ui/src/views/task/general/detail.vue b/ruoyi-ui/src/views/task/general/detail.vue
index e65a2a7..bd5a736 100644
--- a/ruoyi-ui/src/views/task/general/detail.vue
+++ b/ruoyi-ui/src/views/task/general/detail.vue
@@ -8,7 +8,7 @@
       
       <!-- 鍩烘湰淇℃伅 -->
       <el-descriptions title="鍩烘湰淇℃伅" :column="2" border>
-        <el-descriptions-item label="浠诲姟缂栧彿">{{ taskDetail.taskCode }}</el-descriptions-item>
+        <el-descriptions-item label="浠诲姟缂栧彿">{{ taskDetail.showTaskCode }}</el-descriptions-item>
         <el-descriptions-item label="浠诲姟绫诲瀷">
           <dict-tag :options="dict.type.sys_task_type" :value="taskDetail.taskType"/>
         </el-descriptions-item>
@@ -74,10 +74,26 @@
             <i class="el-icon-error"></i> 鍚屾澶辫触
           </el-tag>
           <span v-else style="color: #C0C4CC;">--</span>
+          <!-- 鏈悓姝ユ垨鍚屾澶辫触鏃舵樉绀哄悓姝ユ寜閽� -->
+          <el-button
+            v-if="taskDetail.emergencyInfo.syncStatus === 0 || taskDetail.emergencyInfo.syncStatus === 3"
+            type="primary"
+            size="mini"
+            icon="el-icon-refresh"
+            :loading="syncingServiceOrder"
+            @click="syncServiceOrder"
+            style="margin-left: 10px;"
+          >鍚屾鏈嶅姟鍗�</el-button>
         </el-descriptions-item>
         <el-descriptions-item label="鏈嶅姟鍗曞彿">
           <span v-if="taskDetail.emergencyInfo.legacyServiceOrdId">
             <el-tag type="primary" size="small">{{ taskDetail.emergencyInfo.legacyServiceOrdId }}</el-tag>
+          </span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鏈嶅姟鍗曠紪鐮�">
+          <span v-if="taskDetail.emergencyInfo.serviceCode">
+            <el-tag type="success" size="small">{{ taskDetail.emergencyInfo.serviceCode }}</el-tag>
           </span>
           <span v-else style="color: #C0C4CC;">--</span>
         </el-descriptions-item>
@@ -103,10 +119,26 @@
             <i class="el-icon-error"></i> 鍚屾澶辫触
           </el-tag>
           <span v-else style="color: #C0C4CC;">--</span>
+          <!-- 鏈悓姝ユ垨鍚屾澶辫触鏃舵樉绀哄悓姝ユ寜閽� -->
+          <el-button
+            v-if="taskDetail.emergencyInfo.dispatchSyncStatus === 0 || taskDetail.emergencyInfo.dispatchSyncStatus === 3"
+            type="primary"
+            size="mini"
+            icon="el-icon-refresh"
+            :loading="syncingDispatchOrder"
+            @click="syncDispatchOrder"
+            style="margin-left: 10px;"
+          >鍚屾璋冨害鍗�</el-button>
         </el-descriptions-item>
         <el-descriptions-item label="璋冨害鍗曞彿">
           <span v-if="taskDetail.emergencyInfo.legacyDispatchOrdId">
             <el-tag type="primary" size="small">{{ taskDetail.emergencyInfo.legacyDispatchOrdId }}</el-tag>
+          </span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="璋冨害鍗曠紪鐮�">
+          <span v-if="taskDetail.emergencyInfo.dispatchCode">
+            <el-tag type="success" size="small">{{ taskDetail.emergencyInfo.dispatchCode }}</el-tag>
           </span>
           <span v-else style="color: #C0C4CC;">--</span>
         </el-descriptions-item>
@@ -306,12 +338,12 @@
       </el-descriptions>
 
       <!-- 鎿嶄綔鎸夐挳 -->
-      <div style="margin-top: 20px; text-align: center;">
+      <!-- <div style="margin-top: 20px; text-align: center;">
         <el-button type="primary" @click="handleEdit" v-hasPermi="['task:general:edit']">缂栬緫浠诲姟</el-button>
         <el-button type="success" @click="handleAssign" v-hasPermi="['task:general:assign']">鍒嗛厤浠诲姟</el-button>
         <el-button type="warning" @click="handleStatusChange" v-hasPermi="['task:general:status']">鐘舵�佸彉鏇�</el-button>
         <el-button type="info" @click="handleVehicleAssign" v-hasPermi="['task:general:assign']">鍒嗛厤杞﹁締</el-button>
-      </div>
+      </div> -->
     </el-card>
     
     <!-- 鎵ц浜哄憳鍒楄〃 -->
@@ -726,7 +758,7 @@
 </template>
 
 <script>
-import { getTask, updateTask, assignTask, changeTaskStatus, uploadAttachment, deleteAttachment, getTaskVehicles, getAvailableVehicles, assignVehiclesToTask, unassignVehicleFromTask, getPaymentInfo } from "@/api/task";
+import { getTask, updateTask, assignTask, changeTaskStatus, uploadAttachment, deleteAttachment, getTaskVehicles, getAvailableVehicles, assignVehiclesToTask, unassignVehicleFromTask, getPaymentInfo, syncServiceOrder, syncDispatchOrder } from "@/api/task";
 import { listUser } from "@/api/system/user";
 import { getToken } from "@/utils/auth";
 
@@ -815,7 +847,10 @@
         category: [
           { required: true, message: "涓氬姟鍒嗙被涓嶈兘涓虹┖", trigger: "change" }
         ]
-      }
+      },
+      // 鍚屾鍔犺浇鐘舵��
+      syncingServiceOrder: false,
+      syncingDispatchOrder: false
     };
   },
   created() {
@@ -1113,6 +1148,36 @@
       if (!fileType) return false;
       const imageTypes = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'];
       return imageTypes.includes(fileType.toLowerCase());
+    },
+    /** 鎵嬪姩鍚屾鏈嶅姟鍗� */
+    syncServiceOrder() {
+      this.$modal.confirm('鏄惁纭鍚屾鏈嶅姟鍗曞埌鏃х郴缁燂紵').then(() => {
+        this.syncingServiceOrder = true;
+        return syncServiceOrder(this.taskDetail.taskId);
+      }).then(() => {
+        this.$modal.msgSuccess("鏈嶅姟鍗曞悓姝ユ垚鍔�");
+        // 閲嶆柊鍔犺浇浠诲姟璇︽儏
+        this.getDetail();
+      }).catch(() => {
+        // 澶勭悊鍙栨秷鍜岄敊璇�
+      }).finally(() => {
+        this.syncingServiceOrder = false;
+      });
+    },
+    /** 鎵嬪姩鍚屾璋冨害鍗� */
+    syncDispatchOrder() {
+      this.$modal.confirm('鏄惁纭鍚屾璋冨害鍗曞埌鏃х郴缁燂紵').then(() => {
+        this.syncingDispatchOrder = true;
+        return syncDispatchOrder(this.taskDetail.taskId);
+      }).then(() => {
+        this.$modal.msgSuccess("璋冨害鍗曞悓姝ユ垚鍔�");
+        // 閲嶆柊鍔犺浇浠诲姟璇︽儏
+        this.getDetail();
+      }).catch(() => {
+        // 澶勭悊鍙栨秷鍜岄敊璇�
+      }).finally(() => {
+        this.syncingDispatchOrder = false;
+      });
     }
   }
 };

--
Gitblit v1.9.1