From 453f99625fee2116d3ef732710395248edae307b Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Thu, 08 May 2025 16:49:40 +0800
Subject: [PATCH] 工单复核功能处理

---
 src/views/tickets/ticket.vue |   77 ++++++++++++++++++++++++-
 src/api/tickets/ticket.js    |   72 ++++++++++++++++--------
 2 files changed, 122 insertions(+), 27 deletions(-)

diff --git a/src/api/tickets/ticket.js b/src/api/tickets/ticket.js
index 57df423..a50fedc 100644
--- a/src/api/tickets/ticket.js
+++ b/src/api/tickets/ticket.js
@@ -1,30 +1,30 @@
-import request from '@/axios';
+import request from '@/axios'
 
 export const getList = (data) => {
   return request({
     url: '/drone-device-core/jobEvent/eventPage',
     method: 'post',
     data,
-  });
-};
+  })
+}
 
 // 修改创建工单的方法
 export const createTicket = (data, file) => {
-  const formData = new FormData();
-  
+  const formData = new FormData()
+
   // 创建 eventDto 对象,不显式设置 file 字段
   const eventDto = {
     ...data  // 直接使用传入的 data,不添加 file: null
-  };
+  }
 
   // 添加所有字段到 FormData
   Object.entries(eventDto).forEach(([key, value]) => {
-    formData.append(key, value);
-  });
-  
+    formData.append(key, value)
+  })
+
   // 只有当 file 存在时才添加文件
   if (file) {
-    formData.append("file", file);
+    formData.append("file", file)
   }
 
   return request({
@@ -34,8 +34,8 @@
     headers: {
       'Content-Type': 'multipart/form-data'
     }
-  });
-};
+  })
+}
 
 // 新增接口:获取工单详细信息
 export const getTicketInfo = (id) => {
@@ -43,23 +43,23 @@
     url: '/drone-device-core/jobEvent/getTicketInfo',
     method: 'get',
     params: { id }, // 使用工单 ID 查询
-  });
-};
+  })
+}
 
 // 修改接口:处理待审核状态,动态构建 FormData 提交
 export const flowEvent = (data, file) => {
-  const formData = new FormData();
+  const formData = new FormData()
 
   // 动态添加非空字段到 FormData
   Object.entries(data).forEach(([key, value]) => {
     if (value !== undefined && value !== null) {
-      formData.append(key, value);
+      formData.append(key, value)
     }
-  });
+  })
 
   // 如果 file 存在,则添加到 FormData
   if (file) {
-    formData.append('file', file);
+    formData.append('file', file)
   }
 
   return request({
@@ -69,8 +69,8 @@
     headers: {
       'Content-Type': 'multipart/form-data', // 设置为表单数据格式
     },
-  });
-};
+  })
+}
 
 // 新增接口:获取状态统计数据
 export const getstatusCount = (params) => {
@@ -78,13 +78,37 @@
     url: '/drone-device-core/jobEvent/getstatusCount',
     method: 'get',
     params,
-  });
-};
+  })
+}
 
 export const getStepInfo = (eventNum) => {
   return request({
     url: '/drone-device-core/jobEvent/getStepInfo',
     method: 'get',
     params: { eventNum }
-  });
-};
+  })
+}
+
+// 人工复核接口
+export const getReviewById = (id) => {
+  return request({
+    url: `/drone-device-core/jobEvent/reviewById/${id}`,
+    method: 'get',
+  })
+}
+
+// 获取机器复核可执行时间
+export const getReCheckTime = (id) => {
+  return request({
+    url: `/`,
+    method: 'get',
+  })
+}
+
+// 下发任务
+export const getCreateEventJob = (id) => {
+  return request({
+    url: `/drone-device-core/wayline/waylineJobInfo/createEventJob/${id}`,
+    method: 'post',
+  })
+}
\ No newline at end of file
diff --git a/src/views/tickets/ticket.vue b/src/views/tickets/ticket.vue
index c15b2c1..44caedb 100644
--- a/src/views/tickets/ticket.vue
+++ b/src/views/tickets/ticket.vue
@@ -48,9 +48,12 @@
                 <el-button type="text" icon="el-icon-delete" class="danger-button"
                   @click="handleDelete(row)">删除</el-button>
               </template>
+
               <template v-else>
                 <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)">详情</el-button>
               </template>
+
+              <el-button v-if="row.status === 4" type="text" icon="el-icon-check" @click="reCheck(row)">复核</el-button>
             </template>
             <template #status="{ row }">
               <span :style="getStatusTagType(row.status) ? 'color:' + getStatusTagType(row.status) : ''">
@@ -466,13 +469,34 @@
         </div>
       </template>
     </el-dialog>
+
+    <!-- 复核弹出层 -->
+
+    <el-dialog v-model="reCheckDialog" title="工单复核" width="30%" append-to-body custom-class="re-check-dialog"
+      @close="reCheckDialog = false">
+      <div class="dialog-footer">
+        <el-button type="primary" @click="reCheckConfirm(1)">人工复核</el-button>
+        <el-button type="primary" @click="reCheckConfirm(2)">机器复核</el-button>
+      </div>
+    </el-dialog>
   </basic-container>
 </template>
 
 <script>
+import { ElMessageBox } from 'element-plus'
 import { calculateDefaultRange } from '@/utils/util'
 import { gcj02ToWgs84, wgs84ToGcj02 } from '@/utils/coordinateTransformation'
-import { getList, createTicket, getTicketInfo, flowEvent, getstatusCount, getStepInfo } from '@/api/tickets/ticket'
+import {
+  getList,
+  createTicket,
+  getTicketInfo,
+  flowEvent,
+  getstatusCount,
+  getStepInfo,
+  getReviewById,
+  getReCheckTime,
+  getCreateEventJob
+} from '@/api/tickets/ticket'
 import { export_json_to_excel } from '@/utils/exportExcel'
 import geoJson from '@/assets/geoJson.json'
 
@@ -653,6 +677,9 @@
 
       // 配置时间选择器默认配置
       datePickerDefaultVal: calculateDefaultRange(),
+
+      // 复核弹窗
+      reCheckDialog: false,
     }
   },
   created () {
@@ -828,8 +855,6 @@
 
     showIsReviewText () {
       return (row) => {
-        console.log(row, 111111)
-
         if (['4', '5'].includes(String(row.status))) return row.isReview === 1 ? '是' : '否'
 
         return '/'
@@ -2271,6 +2296,45 @@
       }
 
       return [String(lng), String(lat)]
+    },
+
+    // 复核按钮
+    reCheck (row) {
+      this.reCheckData = row
+      this.reCheckDialog = true
+    },
+
+    // 复核确认框按钮事件
+    reCheckConfirm (key) {
+      const that = this
+      if (key == 1) {
+        getReviewById(this.reCheckData.id).then(res => {
+          this.reCheckDialog = false
+          this.page.currentPage = 1
+          this.fetchTableData()
+          this.fetchTabCounts()
+        })
+      } else {
+        // 获取时间的接口
+        getReCheckTime(that.reCheckData.id).then(res => {
+
+          ElMessageBox.confirm(`确认在该${res.data.data}时间进行复核?`)
+            .then(() => {
+
+              // 生成任务的接口
+              getCreateEventJob(that.reCheckData.id).then(() => {
+                that.page.currentPage = 1
+                that.fetchTableData()
+                that.fetchTabCounts()
+              })
+
+            })
+            .catch(() => {
+              // catch error
+            })
+
+        })
+      }
     }
   },
 }
@@ -2799,6 +2863,13 @@
   }
 }
 
+.re-check-dialog {
+  :deep(.el-dialog__body) {
+    padding: 0;
+    background-color: #f5f7fa;
+  }
+}
+
 .review-container {
   position: relative;
 

--
Gitblit v1.9.3