From c2e29fdee2d0e664961a84e95adf3882efbaf67a Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Sat, 06 Sep 2025 14:23:52 +0800
Subject: [PATCH] Merge branch 'prod' into feature/v5.0/5.0.5

---
 src/views/resource/components/spotDetails.vue |  217 ++++--
 src/api/patchManagement/index.js              |    8 
 src/components/map-container/mapContainer.vue |  192 +++---
 src/views/device/addDevice.vue                |    3 
 .env.jiangwu                                  |    2 
 .env.test                                     |    2 
 src/views/resource/patchManagement.vue        |   31 
 src/views/device/airport.vue                  |    1 
 .env.development                              |    5 
 src/utils/cesium/useBoundary.js               |    1 
 src/views/tickets/orderLog.vue                | 1143 ++++++++++++++++++++++++++-------------
 src/utils/rem.js                              |    7 
 .env.localhost                                |    2 
 src/utils/cesium/publicCesium.js              |   29 
 src/views/resource/components/DrawPolygon.vue |    4 
 src/utils/areaUtils.js                        |   37 +
 16 files changed, 1,079 insertions(+), 605 deletions(-)

diff --git a/.env.development b/.env.development
index 09780be..2d834a7 100644
--- a/.env.development
+++ b/.env.development
@@ -21,7 +21,7 @@
 
 # 服务地址
 VITE_APP_URL = https://wrj.shuixiongit.com/api
-#VITE_APP_URL= http://192.168.1.168 
+#VITE_APP_URL= http://192.168.1.168
 #VITE_APP_URL= http://192.168.1.33
 #新大屏地址
 VITE_APP_DASHBOARD_URL = 'https://wrj.shuixiongit.com/command-center-dashboard/'
@@ -37,7 +37,8 @@
 
 # 图片存放地址
 VITE_APP_TERRAIN_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_terrain/all_terrain
-
+# 行政区划存放地址
+VITE_APP_REGION_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_region
 # 算法仓库图片地址
 VITE_APP_PICTURE_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket
 
diff --git a/.env.jiangwu b/.env.jiangwu
index 83fb5e5..623d388 100644
--- a/.env.jiangwu
+++ b/.env.jiangwu
@@ -38,6 +38,8 @@
 # 地形存放地址
 VITE_APP_TERRAIN_URL = http://192.168.253.121:9000/cloud-bucket/ztzf_terrain
 
+# 行政区划存放地址
+VITE_APP_REGION_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_region
 # 图片资源存放地址
 VITE_APP_IMAGESOURCE_URL = http://192.168.253.121:9000/cloud-bucket
 
diff --git a/.env.localhost b/.env.localhost
index 258a5ec..851dc67 100644
--- a/.env.localhost
+++ b/.env.localhost
@@ -28,6 +28,8 @@
 # 图片存放地址
 VITE_APP_TERRAIN_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_terrain/all_terrain
 
+# 行政区划存放地址
+VITE_APP_REGION_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_region
 # 算法仓库图片地址
 VITE_APP_PICTURE_URL = http://192.168.1.227:80/aiskyminio/cloud-bucket
 
diff --git a/.env.test b/.env.test
index 6e5f172..6f03bb3 100644
--- a/.env.test
+++ b/.env.test
@@ -31,6 +31,8 @@
 # 算法仓库图片地址
 VITE_APP_PICTURE_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket
 
+# 行政区划存放地址
+VITE_APP_REGION_URL = https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_region
 # 是否在打包时开启压缩,支持 gzip 和 brotli
 VITE_BUILD_COMPRESS = gzip
 
diff --git a/src/api/patchManagement/index.js b/src/api/patchManagement/index.js
index 965dae5..5b999f1 100644
--- a/src/api/patchManagement/index.js
+++ b/src/api/patchManagement/index.js
@@ -103,4 +103,12 @@
 		method: 'delete',
 		params,
 	})
+}
+// 获取所有图斑数据
+export const AlltableMapListApi = params => {
+	return request({
+		url: `/drone-device-core/patches/api/v1/Patches/getLotInfoList`,
+		method: 'get',
+		params,
+	})
 }
\ No newline at end of file
diff --git a/src/components/map-container/mapContainer.vue b/src/components/map-container/mapContainer.vue
index 297350b..c88c75e 100644
--- a/src/components/map-container/mapContainer.vue
+++ b/src/components/map-container/mapContainer.vue
@@ -9,61 +9,64 @@
  * Copyright (c) 2024 by shuishen, All Rights Reserved.
 -->
 <template>
-    <div class="map-container">
-        <div class="viewer-container ztzf-cesium" id="viewer-container">
-            <div class="content">
-                <slot name="content"></slot>
-            </div>
+  <div class="map-container">
+    <div class="viewer-container ztzf-cesium" id="viewer-container">
+      <div class="content">
+        <slot name="content"></slot>
+      </div>
 
-            <PlanarRouteLineList :curRouteLineData="curRouteLineData" @routeLineListClick="routeLineListClick" />
-        </div>
+      <PlanarRouteLineList
+        :curRouteLineData="curRouteLineData"
+        @routeLineListClick="routeLineListClick"
+      />
     </div>
+  </div>
 </template>
 
 <script setup>
-import PlanarRouteLineList from '@/components/PlanarRouteLineList/PlanarRouteLineList.vue'
+import PlanarRouteLineList from '@/components/PlanarRouteLineList/PlanarRouteLineList.vue';
 
-import * as Cesium from 'cesium'
-import { Cartesian3, Terrain, Viewer } from 'cesium'
-import { PublicCesium } from '@/utils/cesium/publicCesium'
-import ImageTrailMaterial from '@/utils/cesium/ImageTrailMaterial'
-import { flyVisual } from '@/utils/cesium/mapUtil'
-import * as turf from '@turf/turf'
+import * as Cesium from 'cesium';
+import { Cartesian3, Terrain, Viewer } from 'cesium';
+import { PublicCesium } from '@/utils/cesium/publicCesium';
+import ImageTrailMaterial from '@/utils/cesium/ImageTrailMaterial';
+import { flyVisual } from '@/utils/cesium/mapUtil';
+import * as turf from '@turf/turf';
 
-import { nextTick, onBeforeUnmount, onMounted, onUnmounted } from 'vue'
-import { read } from 'xlsx'
+import { nextTick, onBeforeUnmount, onMounted, onUnmounted } from 'vue';
+import { read } from 'xlsx';
 
-import startPng from '@/assets/map_images/Startingpointicon.png'
-import endPng from '@/assets/map_images/EndPointicon.png'
-import rwqfdImg from '@/assets/images/task/arrow-right-blue.png'
-import newNumPoint from '@/assets/images/task/custom-point.png'
+import startPng from '@/assets/map_images/Startingpointicon.png';
+import endPng from '@/assets/map_images/EndPointicon.png';
+import rwqfdImg from '@/assets/images/task/arrow-right-blue.png';
+import newNumPoint from '@/assets/images/task/custom-point.png';
 
-import { useRouteLine } from '@/hooks/useRouteLine/useRouteLine.js'
-
+import { useRouteLine } from '@/hooks/useRouteLine/useRouteLine.js';
+const viewInstance = shallowRef(null);
 // 加载航线hook
-const { curRouteLineData, routeLineListClick, initViewer, renderPreviewLine } = useRouteLine()
+const { curRouteLineData, routeLineListClick, initViewer, renderPreviewLine } = useRouteLine();
 
-let publicCesiumInstance = null
-let viewer = null
+let publicCesiumInstance = null;
+let viewer = null;
 
-const { VITE_APP_BASE } = import.meta.env
+const { VITE_APP_BASE } = import.meta.env;
 // import * as Cesium from 'cesium'
 // import 'cesium/Build/Cesium/Widgets/widgets.css'
-const isViewerReady = ref(false)
+const isViewerReady = ref(false);
 const { rowDetails } = defineProps({
-    rowDetails: {
-        type: Object,
-        default: () => ({}),
-    }
-})
+  rowDetails: {
+    type: Object,
+    default: () => ({}),
+  },
+});
 
-async function initMap () {
-    if (viewer) return
-    publicCesiumInstance = new PublicCesium({ dom: 'viewer-container',layerMode: 4 })
-    viewer = publicCesiumInstance.getViewer()
-
-    initViewer(viewer)
-    isViewerReady.value = true
+async function initMap() {
+  if (viewer) return;
+  publicCesiumInstance = new PublicCesium({ dom: 'viewer-container', layerMode: 4 });
+  viewer = publicCesiumInstance.getViewer();
+  viewInstance.value = publicCesiumInstance;
+  initViewer(viewer);
+  isViewerReady.value = true;
 }
 
 /**
@@ -72,92 +75,95 @@
  * @param data 数据
  */
 const initAddEntity = (type, data) => {
-    watch(() => isViewerReady.value,
-        (ready) => {
-            if (ready) {
-                viewer.entities.removeAll()
-
-                type === 'point' ? addPoint(data) : addPolyline(data)
-            }
-        },
-        { deep: true, immediate: true } // 初始化时立即执行
-    )
-}
+  watch(
+    () => isViewerReady.value,
+    ready => {
+      if (ready) {
+        viewer.entities.removeAll();
+        if (type === 'initPosition') {
+          viewInstance.value?.flyToContour();
+        } else {
+          type === 'point' ? addPoint(data) : addPolyline(data);
+        }
+      }
+    },
+    { deep: true, immediate: true } // 初始化时立即执行
+  );
+};
 
 /**
  * 添加点标注
  * @param data 数据  数据格式 [lng, lat]
  */
-function addPoint (data) {
-    const [lng, lat] = data
+function addPoint(data) {
+  const [lng, lat] = data;
 
-    if (!lng || !lat) return
+  if (!lng || !lat) return;
 
-    viewer.entities.add({
-        position: Cartesian3.fromDegrees(lng, lat),
-        point: {
-            pixelSize: 10,
-            color: Cesium.Color.BLUE,
-            outlineColor: Cesium.Color.WHITE,
-            outlineWidth: 2
-        }
-    })
+  viewer.entities.add({
+    position: Cartesian3.fromDegrees(lng, lat),
+    point: {
+      pixelSize: 10,
+      color: Cesium.Color.BLUE,
+      outlineColor: Cesium.Color.WHITE,
+      outlineWidth: 2,
+    },
+  });
 
-    // 定位到点位
-    const points = [[lng, lat]]  // 确保格式为二维数组
-    flyVisual({ positionsData:points, viewer,multiple: 10 })
+  // 定位到点位
+  const points = [[lng, lat]]; // 确保格式为二维数组
+  flyVisual({ positionsData: points, viewer, multiple: 10 });
 }
 
 /**
  * 添加点标注
  * @param data 数据  数据格式 [[lng, lat], [lng, lat], [lng, lat]]
  */
-async function addPolyline (data) {
-    await renderPreviewLine(data.url, data.type, data.cb, data.infos)
+async function addPolyline(data) {
+  await renderPreviewLine(data.url, data.type, data.cb, data.infos);
 }
 
 onMounted(() => {
-    nextTick(() => {
-        initMap()
-    })
-})
+  nextTick(() => {
+    initMap();
+  });
+});
 
 onBeforeUnmount(() => {
-    var cesiumContainer = document.getElementById('viewer-container')
-    if (cesiumContainer) {
-        cesiumContainer.remove() // 移除与地图相关的DOM元素
-    }
+  var cesiumContainer = document.getElementById('viewer-container');
+  if (cesiumContainer) {
+    cesiumContainer.remove(); // 移除与地图相关的DOM元素
+  }
 
-    viewer.entities.removeAll()
-    publicCesiumInstance.viewerDestroy()
-    viewer = null
-
-})
+  viewer.entities.removeAll();
+  publicCesiumInstance.viewerDestroy();
+  viewer = null;
+});
 
 defineExpose({
-    initAddEntity
-})
+  initAddEntity,
+});
 </script>
 
 <script>
 export default {
-    name: 'MapContainer'
-}
+  name: 'MapContainer',
+};
 </script>
 
 <style lang="scss" scoped>
 .map-container {
-    position: relative;
-    width: 100% !important;
-    height: 100% !important;
-    overflow: hidden;
+  position: relative;
+  width: 100% !important;
+  height: 100% !important;
+  overflow: hidden;
 }
 
 .viewer-container {
-    position: absolute;
-    top: 0%;
-    left: 0%;
-    width: 100%;
-    height: 100%;
+  position: absolute;
+  top: 0%;
+  left: 0%;
+  width: 100%;
+  height: 100%;
 }
 </style>
diff --git a/src/utils/areaUtils.js b/src/utils/areaUtils.js
new file mode 100644
index 0000000..da5138f
--- /dev/null
+++ b/src/utils/areaUtils.js
@@ -0,0 +1,37 @@
+
+/**
+ * 根据行政区划代码查找对应的行政区划名称
+ * @param {string|number} areaCode - 行政区划代码
+ * @param {Array} regionalData - 行政区划树形数据
+ * @param {boolean} [needFullPath=false] - 是否需要完整路径
+ * @returns {string} 行政区划名称或完整路径
+ */
+export const findAreaName = (areaCode, regionalData = [], needFullPath = false) => {
+    if (!regionalData || regionalData.length === 0) return areaCode;
+  
+    const normalizeCode = code => {
+      if (!code) return '';
+      const strCode = String(code).replace(/0+$/, '');
+      return strCode.length >= 6 ? strCode : '';
+    };
+  
+    const targetCode = normalizeCode(areaCode);
+    
+    const findInTree = (treeNodes, parentPath = []) => {
+      for (const node of treeNodes) {
+        const currentPath = [...parentPath, node.name];
+  
+        if (normalizeCode(node.id) === targetCode) {
+          return needFullPath ? currentPath.join('/') : node.name;
+        }
+  
+        if (node.childrens?.length > 0) {
+          const found = findInTree(node.childrens, currentPath);
+          if (found) return found;
+        }
+      }
+      return null;
+    };
+  
+    return findInTree(regionalData) || areaCode;
+  };
\ No newline at end of file
diff --git a/src/utils/cesium/publicCesium.js b/src/utils/cesium/publicCesium.js
index e5ea8f9..97b0f8a 100644
--- a/src/utils/cesium/publicCesium.js
+++ b/src/utils/cesium/publicCesium.js
@@ -94,7 +94,7 @@
 			terrain = false,
 			layerMode = 0,
 			contour = true,
-			// flyToContour = false,
+			flyToContour = false,
 			multiple = 1.4,
 
 			dockOptions = {},
@@ -158,8 +158,8 @@
 		this.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 4500000
 		this.switchLayers(layerMode)
 		this.switchFlatMode(flatMode)
-		// this.switchContour(contour)
-		// flyToContour && this.flyToContour(contour)
+		this.switchContour(contour)
+		flyToContour && this.flyToContour(contour)
 	}
 
 	getViewer () {
@@ -202,21 +202,22 @@
 	}
 
 	setShowDock (sns) {
-		// this.boundary?.setShowDock(sns)
+		this.boundary?.setShowDock(sns)
 	}
 
 	// 切换轮廓显示
-	// async switchContour (open) {
-	// 	if (open) {
-	// 		await this.boundary?.openContour()
-	// 	} else {
-	// 		this.boundary?.closeContour()
-	// 	}
-	// }
+	async switchContour (open) {
+		if (open) {
+			await this.boundary?.openContour()
+			
+		} else {
+			this.boundary?.closeContour()
+		}
+	}
 	// // 飞向轮廓居中
-	// flyToContour () {
-	// 	this.boundary?.flyToBoundary()
-	// }
+	flyToContour () {
+		this.boundary?.flyToBoundary()
+	}
 
 	// 飞行 flyto
 	flyTo (pointOption, time = 4, height = 3000, orientation = {}, complete = () => { }) {
diff --git a/src/utils/cesium/useBoundary.js b/src/utils/cesium/useBoundary.js
index 6e34a02..d04ffb9 100644
--- a/src/utils/cesium/useBoundary.js
+++ b/src/utils/cesium/useBoundary.js
@@ -217,6 +217,7 @@
 	// 打开边界
 	const openContour = async () => {
 		const areaCode = selectedAreaCode || userAreaCode
+
 		viewer.scene.postRender.removeEventListener(determineScaling)
 		if (!areaCode) return
 		const hierarchy = areaCodeToArr(areaCode.slice(0, 6))
diff --git a/src/utils/rem.js b/src/utils/rem.js
index 741e12b..f2c3ace 100644
--- a/src/utils/rem.js
+++ b/src/utils/rem.js
@@ -10,3 +10,10 @@
 export const pxToRem = width => {
 	return width * 0.1 + 'rem'
 }
+
+
+// 不带单位的px转rem
+export const pxToRemNum = width => {
+	const scale = document.documentElement.clientWidth / 192
+	return width * 0.1 * scale
+}
\ No newline at end of file
diff --git a/src/views/device/addDevice.vue b/src/views/device/addDevice.vue
index b31c6f5..8b12544 100644
--- a/src/views/device/addDevice.vue
+++ b/src/views/device/addDevice.vue
@@ -75,6 +75,7 @@
                 tip: false,
                 searchShow: true,
                 searchMenuSpan: 6,
+                searchGutter: 30,
                 border: true,
                 index: true,
                 indexLabel: '序号',
@@ -95,7 +96,7 @@
                         prop: 'workspace_name',
                         // editDisabled: true,
                         editDisplay: false,
-                        // searchLabelWidth: 130,
+                        labelWidth: 130,
                         search: true,
                         // searchSpan: 4,
                         labelWidth: 130,
diff --git a/src/views/device/airport.vue b/src/views/device/airport.vue
index d2ec01d..f3178d6 100644
--- a/src/views/device/airport.vue
+++ b/src/views/device/airport.vue
@@ -285,7 +285,6 @@
         tip: false,
         searchShow: true,
         searchMenuSpan: 6,
-        searchGutter: 30,
         border: true,
         index: true,
         indexLabel: '序号',
diff --git a/src/views/resource/components/DrawPolygon.vue b/src/views/resource/components/DrawPolygon.vue
index ae7a8ac..81728eb 100644
--- a/src/views/resource/components/DrawPolygon.vue
+++ b/src/views/resource/components/DrawPolygon.vue
@@ -177,7 +177,7 @@
     curPolygonEntity.polyline = {
       width: 2,
       material: Cesium.Color.WHITE,
-      clampToGround: false,
+      clampToGround: true,
     };
 
     curPolygonEntity.polyline.positions = new Cesium.CallbackProperty(function () {
@@ -293,7 +293,7 @@
   background: rgba(0, 0, 0, 0.6);
   white-space: nowrap;
   border-radius: 4px;
-
+pointer-events: none;
   &::after {
     content: '';
     position: absolute;
diff --git a/src/views/resource/components/spotDetails.vue b/src/views/resource/components/spotDetails.vue
index 06c273d..091ca0c 100644
--- a/src/views/resource/components/spotDetails.vue
+++ b/src/views/resource/components/spotDetails.vue
@@ -65,24 +65,31 @@
               :row-class-name="tableRowClassName"
               :data="tableData"
               @row-click="handleLocationPolygon"
+              @current-change="handleTableRowChange"
             >
-              <el-table-column type="index" align="center" width="30" label="序号">
+              <el-table-column type="index" align="center" :width="pxToRemNum(30)" label="序号">
                 <template #default="{ $index }">
                   {{
                     ($index + 1 + (params.page - 1) * params.pageSize).toString().padStart(2, '0')
                   }}
                 </template>
               </el-table-column>
-              <el-table-column prop="dkbh" align="center" label="图斑名称" show-overflow-tooltip />
-              <el-table-column prop="is_exception" align="center" label="图斑状态">
+              <el-table-column prop="dkbh" align="center"  label="图斑名称" show-overflow-tooltip />
+              <el-table-column prop="is_exception" :width="pxToRemNum(50)" align="center" label="图斑状态">
                 <template #default="scope">
                   <span>{{ scope.row.is_exception === 2 ? '异常' : '正常' }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="操作" align="center" v-if="props.title === '图斑编辑'">
+              <el-table-column label="操作"  align="center" v-if="props.title === '图斑编辑'">
                 <template #default="scope">
                   <span class="operationspan" @click="handleDelete(scope.row)">删除</span>
-                  <span class="operationspan" @click="handleSelectionChange(scope.row)">编辑</span>
+                  <span
+                    class="operationspan"
+                    v-if="scope.row.is_exception == 2"
+                    @click.stop="handleSelectionChange(scope.row)"
+                  >
+                    {{ isEditing && selectionIds === scope.row.id ? '取消编辑' : '编辑' }}
+                  </span>
                 </template>
               </el-table-column>
             </el-table>
@@ -103,54 +110,60 @@
           </div>
         </div>
         <!--绘制按钮-->
-        <FunButton
-          ref="funButtonEle"
-          v-model:isBoxSelect="isBoxSelect"
-          v-model:isDrawPolygon="isDrawPolygon"
-        ></FunButton>
+
+        <DrawPolygon
+          ref="drawPolygonRef"
+          v-if="isEditing"
+          @upDateDrawState="handleUpDateDrawState"
+        />
         <!-- 完成/取消 -->
         <div class="btnGroups" v-if="props.title === '图斑编辑'">
           <img @click="handleSave" src="@/assets/images/home/territory/savebtn.png" alt="" />
           <img @click="handleCancel" src="@/assets/images/home/territory/cancelbtn.png" alt="" />
         </div>
         <!-- 地图 -->
-        <div id="spotMap" class="ztzf-cesium" v-show="uploadPatchDialog"></div>
+        <div id="spotMap" v-loading="loading"  element-loading-text="加载中..." element-loading-background="rgba(0, 0, 0, 0.7)" class="ztzf-cesium" v-show="uploadPatchDialog"></div>
       </div>
     </div>
   </el-dialog>
 </template>
 
 <script setup>
+import { pxToRem, pxToRemNum } from '@/utils/rem'
+import DrawPolygon from '@/views/resource/components/DrawPolygon.vue';
 import { ElMessage, ElMessageBox } from 'element-plus';
+import { findAreaName } from '@/utils/areaUtils';
 import {
   patchEditApi,
-  spotManagementTableApi,
-  searchManagementApi,
-  uploadManagementApi,
   tableMapListApi,
   deletePatches,
+  AlltableMapListApi,
+  spotManagementTableApi,
 } from '@/api/patchManagement/index';
 import { getCenterPoint } from '@/utils/cesium/mapUtil.js';
-import { getPatchesSpotList } from '@/api/patchManagement/index';
+
 import * as Cesium from 'cesium';
 import { PublicCesium } from '@/utils/cesium/publicCesium';
 import { ref, watch, onBeforeUnmount, onMounted } from 'vue';
-import FunButton from '@/views/resource/components/FunButton.vue';
 const uploadPatchDialog = defineModel('show');
-const props = defineProps(['title', 'detailid', 'detailList', 'spotTypeOption']);
+const props = defineProps(['title', 'detailid', 'detailList', 'spotTypeOption', 'regionalData']);
 const polygonTableEle = ref(null);
 let publicCesiumInstance = null;
 let viewer = null;
 const viewInstance = shallowRef(null);
 const homeViewer = shallowRef(null);
 let tbJwdList = [];
+const loading = ref(false);
+const tableData = ref([]);
+const AlltableData = ref([]);
 let total = ref(0);
 const refreshonload = inject('searchReset');
 const initialFileName = ref('');
 const initialSpotTypeId = ref('');
 const initialSpotTypeLabel = ref('');
-// 当前选中的图斑面数据
-let nowSelectObj = ref({});
+const spotManagementData = ref(null);
+const isEditing = ref(false);
+const drawPolygonRef = ref(null);
 // 记录上一次点击高亮
 let lastHighlightRow = null;
 // 功能按钮区域相关:编辑图斑等
@@ -191,48 +204,47 @@
   { immediate: true }
 );
 watch(
-  () => props.detailList,
+  () => spotManagementData.value,
   newVal => {
-    if (newVal) {
-      updateInfoList(newVal);
-    }
+    if (newVal) updateInfoList(newVal);
   },
   { immediate: true }
 );
+
+// 图斑编辑详情
+const getspotManagementTableApi = () => {
+  spotManagementTableApi({ id: props.detailid }).then(res => {
+    spotManagementData.value = {
+      ...res.data.data.records[0],
+      dataFrom: res.data.data.records[0].date_from === 0 ? '本地上传' : '国土调查云',
+      areaName: findAreaName(res.data.data.records[0].area_code, props.regionalData, true),
+    };
+  });
+};
+
 // 将 lot_type_id 转换为对应的 label
 const getPatchTypeLabel = lotTypeId => {
   const option = spotTypeOptions.value.find(opt => opt.value === String(lotTypeId));
   return option ? option.label : '';
 };
 const updateInfoList = detailData => {
-  if (detailData && (initialFileName.value === '' || initialSpotTypeId.value === '')) {
+  if (!detailData) return;
+  if (initialFileName.value === '' || initialSpotTypeId.value === '') {
     initialFileName.value = detailData.file_name || '';
     initialSpotTypeId.value = detailData.lot_type_id || '';
-    initialSpotTypeLabel.value = detailData.patches_type_desc
-      ? detailData.patches_type_desc
-      : getPatchTypeLabel(detailData.lot_type_id);
+    initialSpotTypeLabel.value =
+      detailData.patches_type_desc || getPatchTypeLabel(detailData.lot_type_id);
   }
-
   infoList.value = infoList.value.map(item => {
-    let value = detailData[item.field] !== undefined ? detailData[item.field] : item.value;
-
+    const value = detailData[item.field] ?? item.value;
     if (item.name === '图斑类型') {
-      if (detailData.patches_type_desc !== undefined) {
-        return {
-          ...item,
-          value: detailData.patches_type_desc,
-          originalValue: detailData.lot_type_id,
-        };
-      } else if (detailData.lot_type_id !== undefined) {
-        return {
-          ...item,
-          value: getPatchTypeLabel(detailData.lot_type_id),
-          originalValue: detailData.lot_type_id,
-        };
-      }
+      return {
+        ...item,
+        value: detailData.patches_type_desc || getPatchTypeLabel(detailData.lot_type_id),
+        originalValue: detailData.lot_type_id,
+      };
     }
-
-    return { ...item, value: value };
+    return { ...item, value };
   });
 };
 const params = ref({
@@ -254,10 +266,35 @@
     total.value = res.data.data.total || res.data.data.length;
     tbJwdList = [];
     viewer?.entities.removeAll();
-    entitiesAddSpot();
+    if (!AlltableData.value) {
+      viewInstance.value?.flyToContour();
+    } else {
+      entitiesAddSpot();
+    }
   });
 };
+// 所有图斑数据
+const getAlltableMapListApi = () => {
+  loading.value = true;
+  const requestParams = {
+    patchesInfoId: props.detailid,
+  };
+  AlltableMapListApi(requestParams).then(res => {
+    AlltableData.value = res.data.data?.map(item => ({
+      ...item,
+      dkfw: item.sdfw && item.is_exception == 1 ? item.sdfw : item.dkfw,
+    }));
 
+    tbJwdList = [];
+    viewer?.entities.removeAll();
+    if (AlltableData.value.length < 1) {
+      viewInstance.value?.flyToContour();
+    } else {
+      entitiesAddSpot();
+    }
+    loading.value = false;
+  });
+};
 const handleSizeChange = val => {
   params.value.pageSize = val;
   params.value.page = 1;
@@ -267,7 +304,7 @@
   params.value.page = val;
   getTableList();
 };
-const tableData = ref([]);
+
 // 地图
 const initMap = () => {
   if (!document.getElementById('spotMap')) {
@@ -284,11 +321,12 @@
   viewer = publicCesiumInstance.getViewer();
   viewInstance.value = publicCesiumInstance;
   viewer.scene.globe.depthTestAgainstTerrain = true;
+  viewInstance.value.switchContour(true);
 };
 // 初始化所有图斑
 const entitiesAddSpot = () => {
   viewer?.entities.removeAll();
-  tableData.value.forEach(item => {
+  AlltableData.value.forEach(item => {
     // 取出当中经纬度
     const numbersWithCommas = item.dkfw.match(/\d+(\.\d+)?/g);
     if (!numbersWithCommas) return;
@@ -334,10 +372,7 @@
       const boundingSphere = Cesium.BoundingSphere.fromPoints(positions);
       homeViewer.value?.camera.flyToBoundingSphere(boundingSphere, {
         duration: 0,
-        offset: new Cesium.HeadingPitchRange(
-          Cesium.Math.toRadians(-45),
-          Cesium.Math.toRadians(-90)
-        ),
+        offset: new Cesium.HeadingPitchRange(Cesium.Math.toRadians(0), Cesium.Math.toRadians(-90)),
       });
     }
     viewInstance.value?.removeLeftClickEvent('spotHighlighting');
@@ -346,9 +381,6 @@
 };
 
 // 高亮当前选中图斑,并定位
-// const handleLocationPolygon = data => {
-//   updateMapSpotInfo(data);
-// };
 const getEntityByDataId = dataId => {
   if (!homeViewer.value) return null;
   const entityId = `polygon_dk${dataId}`;
@@ -356,6 +388,15 @@
 };
 const handleLocationPolygon = data => {
   if (!data) return;
+
+  // 取消任何现有的绘制状态(与编辑取消逻辑一致)
+  if (isEditing.value) {
+    isEditing.value = false;
+    handleUpDateDrawState(false);
+    selectionIds.value = null;
+    selectionList.value = [];
+  }
+
   const targetEntity = getEntityByDataId(data.id);
   if (targetEntity) {
     updateMapSpotInfo(targetEntity);
@@ -373,6 +414,7 @@
     });
   }
 };
+
 // 鼠标触发点击图斑高亮 pick:可以获取当前图斑数据
 function spotHighlighting(click, pick, viewer) {
   let entities = viewer?.scene
@@ -380,7 +422,7 @@
     .filter(item => item.id)
     .map(i => i.id)
     .filter(i => i._customType === 'pattern_spot_polygon');
-    if (!pick || !(pick.id?.customType == 'pattern_spot_polygon')) return;
+  if (!pick || !(pick.id?.customType == 'pattern_spot_polygon')) return;
   const nowEntity = entities?.[0];
   const nowData = nowEntity.customInfo;
   const clickTableID = tableData.value.findIndex(i => i.id === nowData.id);
@@ -412,15 +454,14 @@
     const lastData = lastEntity.customInfo;
     const originalFillColor =
       lastData.is_exception === 2
-          ? Cesium.Color.RED.withAlpha(0.5)
-          : Cesium.Color.YELLOW.withAlpha(0.5);
-     const originalOutlineColor = lastData.is_exception == 2 
-    ? Cesium.Color.RED 
-    : Cesium.Color.YELLOW; 
+        ? Cesium.Color.RED.withAlpha(0.5)
+        : Cesium.Color.YELLOW.withAlpha(0.5);
+    const originalOutlineColor =
+      lastData.is_exception == 2 ? Cesium.Color.RED : Cesium.Color.YELLOW;
 
-  lastEntity.polygon.material = originalFillColor;
-  lastEntity.polygon.outlineColor = originalOutlineColor;
-  lastEntity.polyline.material = originalOutlineColor;
+    lastEntity.polygon.material = originalFillColor;
+    lastEntity.polygon.outlineColor = originalOutlineColor;
+    lastEntity.polyline.material = originalOutlineColor;
   }
   lastEntity = nowEntity;
   const numbersWithCommas = nowData.dkfw.match(/\d+(\.\d+)?/g);
@@ -430,7 +471,7 @@
       if (index % 2 === 0) acc.push(src.slice(index, index + 2));
       return acc;
     }, []);
-    const polygonCenter = getCenterPoint(groupedArr); 
+    const polygonCenter = getCenterPoint(groupedArr);
     // 相机定位
     homeViewer.value.scene.camera.setView({
       destination: Cesium.Cartesian3.fromDegrees(
@@ -452,15 +493,31 @@
 // 编辑
 const handleSelectionChange = row => {
   let curRowIsSelect = row;
+  curRowIsSelect && handleLocationPolygon(row);
   selectionIds.value = row.id;
   selectionList.value = row;
-  curRowIsSelect && handleLocationPolygon(row);
-  if (row.is_exception == 2 && curRowIsSelect) {
-    isDrawPolygon.value = true;
-    funButtonEle.value.upDateDrawState(true);
-    handleLocationPolygon(row);
+
+  if (isEditing.value) {
+    //当前已编辑 → 取消编辑(关闭绘制、重置状态)
+    isEditing.value = false;
+    handleUpDateDrawState(false); // 通知DrawPolygon取消绘制
   } else {
-    isDrawPolygon.value = false;
+    // 当前未编辑 → 开启编辑(仅异常图斑可编辑)
+    if (row.is_exception === 2 && curRowIsSelect) {
+      isEditing.value = true;
+      handleUpDateDrawState(true); // 通知DrawPolygon开启绘制
+    } else {
+      ElMessage.warning('仅异常图斑支持编辑绘制');
+      isEditing.value = false;
+    }
+  }
+};
+const handleUpDateDrawState = show => {
+  isEditing.value = show; // 同步编辑状态
+  if (!show) {
+    // 绘制关闭时,清空选中的编辑行
+    selectionIds.value = null;
+    selectionList.value = [];
   }
 };
 // 删除
@@ -474,6 +531,8 @@
       if (res.data.code !== 0) return ElMessage.warning('删除失败');
       ElMessage.success('删除成功');
       getTableList();
+      getspotManagementTableApi();
+      getAlltableMapListApi();
     });
   });
 };
@@ -520,6 +579,10 @@
     spotTypeItem.value = initialSpotTypeLabel.value;
     spotTypeItem.originalValue = initialSpotTypeId.value;
   }
+  if (isEditing.value) {
+    isEditing.value = false;
+    handleUpDateDrawState(false);
+  }
   clearSelect();
   isDrawPolygon.value = false; // 关闭地图绘制状态
   uploadPatchDialog.value = false;
@@ -543,12 +606,12 @@
     setTimeout(() => {
       initMap();
       getTableList();
+      getAlltableMapListApi();
+      getspotManagementTableApi();
     }, 0);
   } else {
-    if (funButtonEle.value) {
-      isBoxSelect.value = false;
-      isDrawPolygon.value = false;
-    }
+    isEditing.value = false;
+    handleUpDateDrawState(false);
     destroyMap();
   }
   refreshonload();
@@ -701,6 +764,7 @@
     color: #fff !important;
     .cell {
       padding: 0px !important;
+      font-size: 12px !important;
     }
     // 隔行变色
     .even-row {
@@ -752,9 +816,10 @@
   }
   .operationspan {
     cursor: pointer;
+    color: #409eff;
   }
   .operationspan:first-child {
-    margin-right: 10px;
+    margin-right: 5px;
   }
 
   // 分页
diff --git a/src/views/resource/patchManagement.vue b/src/views/resource/patchManagement.vue
index eb5e28c..1ff8005 100644
--- a/src/views/resource/patchManagement.vue
+++ b/src/views/resource/patchManagement.vue
@@ -84,10 +84,12 @@
       :detailid="detailid"
       :detailList="detailList"
       :spotTypeOption="allspotTypeOption"
+      :regionalData="regionalData"
     ></SpotDetails>
   </basic-container>
 </template>
 <script setup>
+import {findAreaName} from '@/utils/areaUtils'
 import {
   spotManagementTableApi,
   searchManagementApi,
@@ -466,40 +468,13 @@
     data.value = d.records.map(i => ({
       ...i,
       dataFrom: i.date_from === 0 ? '本地上传' : '国土调查云',
-      areaName: findAreaName(i.area_code),
+      areaName: findAreaName(i.area_code, regionalData.value, true) 
     }));
     loading.value = false;
     selectionClear();
   });
 };
-const findAreaName = areaCode => {
-  const nodes = regionalData.value;
-  if (!nodes || nodes.length === 0) return areaCode;
 
-  const normalizeCode = code => {
-    if (!code) return '';
-    const strCode = String(code).replace(/0+$/, '');
-    return strCode.length >= 6 ? strCode : '';
-  };
-  const targetCode = normalizeCode(areaCode);
-  const findInTree = (treeNodes, needFullPath = false, parentPath = []) => {
-    for (const node of treeNodes) {
-      const currentPath = [...parentPath, node.name];
-
-      if (normalizeCode(node.id) === targetCode) {
-        return needFullPath ? currentPath.join('/') : node.name;
-      }
-
-      if (node.childrens?.length > 0) {
-        const found = findInTree(node.childrens, needFullPath, currentPath);
-        if (found) return found;
-      }
-    }
-    return null;
-  };
-
-  return findInTree(nodes, true) || areaCode;
-};
 // 图斑详情/编辑
 const uploadPatch = (row, type = 'detail') => {
   detailid.value = row.id;
diff --git a/src/views/tickets/orderLog.vue b/src/views/tickets/orderLog.vue
index 0e4c724..759bd5c 100644
--- a/src/views/tickets/orderLog.vue
+++ b/src/views/tickets/orderLog.vue
@@ -1,39 +1,73 @@
-
 <template>
   <basic-container>
     <el-tabs v-model="activeTab" @tab-click="handleTabChange">
-      <el-tab-pane v-for="tab in filteredTabs" :key="tab.name" :label="`${tab.label} (${tab.count})`" :name="tab.name">
+      <el-tab-pane
+        v-for="tab in filteredTabs"
+        :key="tab.name"
+        :label="`${tab.label} (${tab.count})`"
+        :name="tab.name"
+      >
         <basic-main-content>
           <!-- 查询条件筛选栏 -->
           <div class="filter-bar">
             <div class="search-bar-box">
               <div class="search-bar-box-item">
-                <el-input v-model="filters.key_word" placeholder="输入工单编号/名称/内容/姓名" clearable
-                  @keyup.enter="handleSearch" />
+                <el-input
+                  v-model="filters.key_word"
+                  placeholder="输入工单编号/名称/内容/姓名"
+                  clearable
+                  @keyup.enter="handleSearch"
+                />
               </div>
 
-<!--              <div class="search-bar-box-item">-->
-<!--                <el-select placeholder="请选择所属单位" v-model="filters.create_dept" clearable>-->
-<!--                  <el-option v-for="dept in departments" :key="dept.value" :label="dept.label" :value="dept.value" />-->
-<!--                </el-select>-->
-<!--              </div>-->
+              <!--              <div class="search-bar-box-item">-->
+              <!--                <el-select placeholder="请选择所属单位" v-model="filters.create_dept" clearable>-->
+              <!--                  <el-option v-for="dept in departments" :key="dept.value" :label="dept.label" :value="dept.value" />-->
+              <!--                </el-select>-->
+              <!--              </div>-->
 
               <div class="search-bar-box-item">
-                <el-date-picker @change="handleSearch" v-model="filters.dateRange" type="daterange" range-separator="至"
-                  start-placeholder="开始日期" end-placeholder="结束日期" :default-value="datePickerDefaultVal" />
+                <el-date-picker
+                  @change="handleSearch"
+                  v-model="filters.dateRange"
+                  type="daterange"
+                  range-separator="至"
+                  start-placeholder="开始日期"
+                  end-placeholder="结束日期"
+                  :default-value="datePickerDefaultVal"
+                />
               </div>
 
               <div class="search-bar-box-item">
-                <el-select @change="handleSearch" v-model="filters.file_id" placeholder="请选择关联航线" filterable clearable>
-                  <el-option v-for="item in wayLineList" :key="item.wayline_id" :label="item.name"
-                    :value="item.wayline_id" />
+                <el-select
+                  @change="handleSearch"
+                  v-model="filters.file_id"
+                  placeholder="请选择关联航线"
+                  filterable
+                  clearable
+                >
+                  <el-option
+                    v-for="item in wayLineList"
+                    :key="item.wayline_id"
+                    :label="item.name"
+                    :value="item.wayline_id"
+                  />
                 </el-select>
               </div>
 
               <div class="search-bar-box-item">
-                <el-select @change="handleSearch" v-model="filters.ai_types" placeholder="关联算法" clearable>
-                  <el-option v-for="item in ai_types" :key="item.dictKey" :label="item.dictValue"
-                    :value="item.dictKey" />
+                <el-select
+                  @change="handleSearch"
+                  v-model="filters.ai_types"
+                  placeholder="关联算法"
+                  clearable
+                >
+                  <el-option
+                    v-for="item in ai_types"
+                    :key="item.dictKey"
+                    :label="item.dictValue"
+                    :value="item.dictKey"
+                  />
                 </el-select>
               </div>
 
@@ -45,46 +79,88 @@
               </div> -->
 
               <div class="search-bar-box-item">
-                <el-select @change="handleSearch" v-model="filters.status" placeholder="请选择工单状态" clearable :disabled="activeTab !== 'all'">
-                  <el-option v-for="item in statuses" :key="item.value" :label="item.label" :value="item.value" />
+                <el-select
+                  @change="handleSearch"
+                  v-model="filters.status"
+                  placeholder="请选择工单状态"
+                  clearable
+                  :disabled="activeTab !== 'all'"
+                >
+                  <el-option
+                    v-for="item in statuses"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  />
                 </el-select>
               </div>
             </div>
 
             <div class="search-bar-box">
               <div class="search-bar-box-item flex-2">
-                <el-date-picker @change="handleSearch" v-model="filters.cycleDateRange" type="daterange" range-separator="至"
-                  start-placeholder="工单周期开始日期" end-placeholder="工单周期结束日期" :default-value="datePickerDefaultVal" />
+                <el-date-picker
+                  @change="handleSearch"
+                  v-model="filters.cycleDateRange"
+                  type="daterange"
+                  range-separator="至"
+                  start-placeholder="工单周期开始日期"
+                  end-placeholder="工单周期结束日期"
+                  :default-value="datePickerDefaultVal"
+                />
               </div>
 
               <div class="search-bar-box-item">
-                <el-select @change="handleSearch" v-model="filters.rep_fre_type" placeholder="请选择频次" clearable>
+                <el-select
+                  @change="handleSearch"
+                  v-model="filters.rep_fre_type"
+                  placeholder="请选择频次"
+                  clearable
+                >
                   <el-option v-for="item in cycles" :key="item" :label="item" :value="item" />
                 </el-select>
               </div>
 
               <div class="search-bar-box-item">
-                <el-time-picker @change="handleSearch" v-model="filters.deal_time" placeholder="请选择执行时间" prop="deal_time" value-format="HH:mm"
+                <el-time-picker
+                  @change="handleSearch"
+                  v-model="filters.deal_time"
+                  placeholder="请选择执行时间"
+                  prop="deal_time"
+                  value-format="HH:mm"
                   :picker-options="{
                     selectableRange: '00:00 - 23:59',
-                  }" />
+                  }"
+                />
               </div>
 
               <div class="search-bar-box-item"></div>
               <div class="search-bar-box-item"></div>
 
               <div class="search-bar-box-item search-btn">
-                <el-button type="primary" icon="el-icon-search" @click="handleSearch">搜索</el-button>
+                <el-button type="primary" icon="el-icon-search" @click="handleSearch"
+                  >搜索</el-button
+                >
                 <el-button icon="el-icon-refresh" @click="handleReset">清空</el-button>
               </div>
             </div>
           </div>
 
           <!-- 表格部分 -->
-          <avue-crud class="ztzf-public-general-avue-crud" :data="tableData" :option="option" v-model:page="page"
-            ref="crud" :table-loading="loading" @current-change="currentChange" @refresh-change="refreshChange"
-            @on-load="onLoad" @search-change="searchChange" @size-change="sizeChange" v-if="activeTab === tab.name">
-            <template #job_info_num="{row}">
+          <avue-crud
+            class="ztzf-public-general-avue-crud"
+            :data="tableData"
+            :option="option"
+            v-model:page="page"
+            ref="crud"
+            :table-loading="loading"
+            @current-change="currentChange"
+            @refresh-change="refreshChange"
+            @on-load="onLoad"
+            @search-change="searchChange"
+            @size-change="sizeChange"
+            v-if="activeTab === tab.name"
+          >
+            <template #job_info_num="{ row }">
               <el-tooltip-copy :content="row.job_info_num" :showCopyText="true" textAlign="left">
                 {{ row.job_info_num }}
               </el-tooltip-copy>
@@ -97,15 +173,28 @@
             </template>
 
             <template #menu-left>
-              <el-button v-if="hasAddBtnPermission() && activeTab != 'WAIT_AUDIT'" type="primary" icon="el-icon-plus"
-                @click="handleAdd">新建工单</el-button>
-              <el-button type="success" plain icon="el-icon-download" @click="exportData">导出</el-button>
+              <el-button
+                v-if="hasAddBtnPermission() && activeTab != 'WAIT_AUDIT'"
+                type="primary"
+                icon="el-icon-plus"
+                @click="handleAdd"
+                >新建工单</el-button
+              >
+              <el-button type="success" plain icon="el-icon-download" @click="exportData"
+                >导出</el-button
+              >
             </template>
 
             <template #menu="{ row }">
               <div class="menu-custom-box">
                 <template v-if="row.status == 1">
-                  <el-button v-if="hasPaddingBtnPermission()" type="text" icon="el-icon-view" @click="handleCheckDetail(row)">审核</el-button>
+                  <el-button
+                    v-if="hasPaddingBtnPermission()"
+                    type="text"
+                    icon="el-icon-view"
+                    @click="handleCheckDetail(row)"
+                    >审核</el-button
+                  >
                 </template>
                 <!-- v-if="
                     (userInfo.user_id == row.create_user || hasRecallPaddingBtnPermission()) &&
@@ -113,25 +202,48 @@
                   " -->
                 <template v-if="row.status == 1">
                   <!--待审核状态-->
-                  <el-button type="text" icon="el-icon-warning" v-if="hasRecallPaddingBtnPermission()"
-                    @click="orderLogRecall(row.id)">撤回</el-button>
+                  <el-button
+                    type="text"
+                    icon="el-icon-warning"
+                    v-if="hasRecallPaddingBtnPermission()"
+                    @click="orderLogRecall(row.id)"
+                    >撤回</el-button
+                  >
                   <!-- <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)">详情</el-button> -->
                 </template>
                 <!--已驳回-->
                 <template v-if="row.status == 2">
-                  <el-button type="text" icon="el-icon-warning" @click="rejectDetail(row.id)">驳回原因</el-button>
-                  <el-button v-if="userInfo.user_id == row.create_user" type="text" icon="el-icon-view" @click="handleViewDetail(row)">编辑</el-button>
-                  <el-button v-else type="text" icon="el-icon-view" @click="handleViewDetail(row)">详情</el-button>
+                  <el-button type="text" icon="el-icon-warning" @click="rejectDetail(row.id)"
+                    >驳回原因</el-button
+                  >
+                  <el-button
+                    v-if="userInfo.user_id == row.create_user"
+                    type="text"
+                    icon="el-icon-view"
+                    @click="handleViewDetail(row)"
+                    >编辑</el-button
+                  >
+                  <el-button v-else type="text" icon="el-icon-view" @click="handleViewDetail(row)"
+                    >详情</el-button
+                  >
                 </template>
                 <!-- 已通过 -->
                 <template v-if="row.status == 3">
-                  <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)">详情</el-button>
+                  <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)"
+                    >详情</el-button
+                  >
                 </template>
                 <!--草稿-->
                 <template v-if="row.status == 0">
-                  <el-button type="text" icon="el-icon-edit" @click="handleViewDetail(row)">编辑</el-button>
-                  <el-button type="text" icon="el-icon-position" @click="userPublishPush(row.id)">发布</el-button>
-                  <el-button type="text" icon="el-icon-delete" @click="deleteOrderLog(row.id)">删除</el-button>
+                  <el-button type="text" icon="el-icon-edit" @click="handleViewDetail(row)"
+                    >编辑</el-button
+                  >
+                  <el-button type="text" icon="el-icon-position" @click="userPublishPush(row.id)"
+                    >发布</el-button
+                  >
+                  <el-button type="text" icon="el-icon-delete" @click="deleteOrderLog(row.id)"
+                    >删除</el-button
+                  >
                 </template>
               </div>
             </template>
@@ -149,19 +261,39 @@
     </el-tabs>
 
     <!-- 新建工单对话框 -->
-    <el-dialog v-model="dialogVisible" title="新建工单" width="70%" :close-on-click-modal="false" @close="resetForm">
+    <el-dialog
+      v-model="dialogVisible"
+      title="新建工单"
+      width="70%"
+      :close-on-click-modal="false"
+      @close="resetForm"
+    >
       <el-form :model="form" :rules="rules" ref="testform" label-width="100px">
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="工单名称" prop="name">
-              <el-input v-model="form.name" placeholder="请输入工单名称" maxlength="100" show-word-limit></el-input>
+              <el-input
+                v-model="form.name"
+                placeholder="请输入工单名称"
+                maxlength="100"
+                show-word-limit
+              ></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="关联航线" prop="file_id">
-              <el-select v-model="form.file_id" placeholder="请选择航线" filterable @change="getFlyingNestBy">
-                <el-option v-for="item in wayLineList" :key="item.wayline_id" :label="item.name"
-                  :value="item.wayline_id" />
+              <el-select
+                v-model="form.file_id"
+                placeholder="请选择航线"
+                filterable
+                @change="getFlyingNestBy"
+              >
+                <el-option
+                  v-for="item in wayLineList"
+                  :key="item.wayline_id"
+                  :label="item.name"
+                  :value="item.wayline_id"
+                />
               </el-select>
             </el-form-item>
           </el-col>
@@ -169,16 +301,30 @@
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="关联机巢" prop="device_sns">
-              <el-select v-model="form.device_sns" placeholder="请选择机巢" multiple :disabled="!device_sns.length">
-                <el-option v-for="item in device_sns" :key="item.device_sn" :label="item.nickname"
-                  :value="item.device_sn" />
+              <el-select
+                v-model="form.device_sns"
+                placeholder="请选择机巢"
+                multiple
+                :disabled="!device_sns.length"
+              >
+                <el-option
+                  v-for="item in device_sns"
+                  :key="item.device_sn"
+                  :label="item.nickname"
+                  :value="item.device_sn"
+                />
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="关联算法" prop="ai_types">
               <el-select v-model="form.ai_types" placeholder="请选择关联算法" multiple>
-                <el-option v-for="item in ai_types" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
+                <el-option
+                  v-for="item in ai_types"
+                  :key="item.dictKey"
+                  :label="item.dictValue"
+                  :value="item.dictKey"
+                />
               </el-select>
             </el-form-item>
           </el-col>
@@ -187,15 +333,27 @@
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="工单内容" prop="content">
-              <el-input type="textarea" v-model="form.content" rows="4" placeholder="请输入工单内容" maxlength="255"
-                show-word-limit></el-input>
+              <el-input
+                type="textarea"
+                v-model="form.content"
+                rows="4"
+                placeholder="请输入工单内容"
+                maxlength="255"
+                show-word-limit
+              ></el-input>
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
             <el-form-item label="周期频次" prop="date_range">
-              <el-date-picker v-model="form.date_range" type="daterange" range-separator="至" start-placeholder="开始日期"
-                end-placeholder="结束日期" :disabled-date="disabledDate" />
+              <el-date-picker
+                v-model="form.date_range"
+                type="daterange"
+                range-separator="至"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                :disabled-date="disabledDate"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="4">
@@ -206,10 +364,15 @@
                 </el-select>
               </div>
               <div class="flex-1">
-                <el-time-picker style="width: 100px" v-model="form.deal_time" prop="deal_time" value-format="HH:mm"
+                <el-time-picker
+                  style="width: 100px"
+                  v-model="form.deal_time"
+                  prop="deal_time"
+                  value-format="HH:mm"
                   :picker-options="{
                     selectableRange: '00:00 - 23:59',
-                  }" />
+                  }"
+                />
               </div>
             </div>
           </el-col>
@@ -232,27 +395,42 @@
     </el-dialog>
 
     <!-- 工单详情对话框 -->
-    <el-dialog align-center v-model="detailVisible" :title="detailTitle" width="70%" :close-on-click-modal="false"
-      @close="resetForm">
+    <el-dialog
+      align-center
+      v-model="detailVisible"
+      :title="detailTitle"
+      width="70%"
+      :close-on-click-modal="false"
+      @close="resetForm"
+    >
       <div class="event-title-center">{{ form.name }}</div>
       <el-form :model="form" :rules="rules" ref="testform" label-width="100px">
         <div class="custom-steps-container">
           <!-- 标题行 -->
-          <div class="steps-titles"  v-if="filters.status !== '0'">
-            <div v-for="(record, index) in form.record_list" :class="{ active: record.user_id >= 0 }" :key="index"
-              class="step-title">
+          <div class="steps-titles" v-if="filters.status !== '0'">
+            <div
+              v-for="(record, index) in form.record_list"
+              :class="{ active: record.user_id >= 0 }"
+              :key="index"
+              class="step-title"
+            >
               {{ record.status_str }}
             </div>
           </div>
 
           <!-- Element Steps 组件 -->
-          <el-steps :active="form.active" align-center class="custom-steps"  v-if="filters.status !== '0'">
+          <el-steps
+            :active="form.active"
+            align-center
+            class="custom-steps"
+            v-if="filters.status !== '0'"
+          >
             <el-step v-for="(record, index) in form.record_list" :key="index">
               <template #description>
                 <span class="step-description" style="position: relative; display: inline-block">
                   {{ record.user_name }}
                 </span>
-                <span class="step-timer ">
+                <span class="step-timer">
                   {{ record.interval_time_str }}
                 </span>
                 <div class="step-description">
@@ -266,14 +444,28 @@
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="工单名称" prop="name">
-              <el-input v-model="form.name" placeholder="请输入工单名称" :disabled="detailTitle === '工单详情'"></el-input>
+              <el-input
+                v-model="form.name"
+                placeholder="请输入工单名称"
+                :disabled="detailTitle === '工单详情'"
+              ></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="关联航线" prop="file_id">
-              <el-select v-model="form.file_id" placeholder="请选择航线" @change="getFlyingNestBy" filterable :disabled="detailTitle === '工单详情'">
-                <el-option v-for="item in wayLineList" :key="item.wayline_id" :label="item.name"
-                  :value="item.wayline_id" />
+              <el-select
+                v-model="form.file_id"
+                placeholder="请选择航线"
+                @change="getFlyingNestBy"
+                filterable
+                :disabled="detailTitle === '工单详情'"
+              >
+                <el-option
+                  v-for="item in wayLineList"
+                  :key="item.wayline_id"
+                  :label="item.name"
+                  :value="item.wayline_id"
+                />
               </el-select>
             </el-form-item>
           </el-col>
@@ -281,16 +473,35 @@
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="关联机巢" prop="device_sns">
-              <el-select v-model="form.device_sns" placeholder="请选择机巢" multiple :disabled="detailTitle === '工单详情'">
-                <el-option v-for="item in device_sns" :key="item.device_sn" :label="item.nickname"
-                  :value="item.device_sn" />
+              <el-select
+                v-model="form.device_sns"
+                placeholder="请选择机巢"
+                multiple
+                :disabled="detailTitle === '工单详情'"
+              >
+                <el-option
+                  v-for="item in device_sns"
+                  :key="item.device_sn"
+                  :label="item.nickname"
+                  :value="item.device_sn"
+                />
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="关联算法" prop="ai_types">
-              <el-select v-model="form.ai_types" placeholder="请选择关联算法" multiple  :disabled="detailTitle === '工单详情'">
-                <el-option v-for="item in ai_types" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
+              <el-select
+                v-model="form.ai_types"
+                placeholder="请选择关联算法"
+                multiple
+                :disabled="detailTitle === '工单详情'"
+              >
+                <el-option
+                  v-for="item in ai_types"
+                  :key="item.dictKey"
+                  :label="item.dictValue"
+                  :value="item.dictKey"
+                />
               </el-select>
             </el-form-item>
           </el-col>
@@ -305,30 +516,54 @@
 
           <el-col :span="6">
             <el-form-item label="周期频次" prop="date_range">
-              <el-date-picker v-model="form.date_range" type="daterange" range-separator="至" start-placeholder="开始日期"
-                end-placeholder="结束日期" :disabled-date="disabledDate"   :disabled="detailTitle === '工单详情'" />
+              <el-date-picker
+                v-model="form.date_range"
+                type="daterange"
+                range-separator="至"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                :disabled-date="disabledDate"
+                :disabled="detailTitle === '工单详情'"
+              />
             </el-form-item>
           </el-col>
 
           <el-col :span="3">
-            <el-select v-model="form.rep_fre_type" placeholder="请选择频次" :disabled="detailTitle === '工单详情'">
+            <el-select
+              v-model="form.rep_fre_type"
+              placeholder="请选择频次"
+              :disabled="detailTitle === '工单详情'"
+            >
               <el-option v-for="item in cycles" :key="item" :label="item" :value="item" />
             </el-select>
           </el-col>
 
           <el-col :span="3">
-            <el-time-picker style="width: 100px" v-model="form.deal_time" prop="deal_time" value-format="HH:mm"
+            <el-time-picker
+              style="width: 100px"
+              v-model="form.deal_time"
+              prop="deal_time"
+              value-format="HH:mm"
               :picker-options="{
                 selectableRange: '00:00 - 23:59',
-              }"  :disabled="detailTitle === '工单详情'"/>
+              }"
+              :disabled="detailTitle === '工单详情'"
+            />
           </el-col>
         </el-row>
 
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="工单内容" prop="content">
-              <el-input type="textarea" v-model="form.content" rows="4" placeholder="请输入工单内容" maxlength="255"
-                show-word-limit  :disabled="detailTitle === '工单详情'"></el-input>
+              <el-input
+                type="textarea"
+                v-model="form.content"
+                rows="4"
+                placeholder="请输入工单内容"
+                maxlength="255"
+                show-word-limit
+                :disabled="detailTitle === '工单详情'"
+              ></el-input>
             </el-form-item>
           </el-col>
         </el-row>
@@ -341,43 +576,75 @@
 
         <el-row>
           <div class="add-box-btns">
-            <el-button type="danger"
+            <el-button
+              type="danger"
               v-if="form.status == 0 || (form.status == 2 && userInfo.user_id == form.create_user)"
-              @click="submitForm(1)">发布</el-button>
-              <el-button type="primary" v-if="form.status == 0 || (form.status == 2 && userInfo.user_id == form.create_user)" @click="submitForm(0)">保存</el-button>
+              @click="submitForm(1)"
+              >发布</el-button
+            >
+            <el-button
+              type="primary"
+              v-if="form.status == 0 || (form.status == 2 && userInfo.user_id == form.create_user)"
+              @click="submitForm(0)"
+              >保存</el-button
+            >
             <!-- <el-button type="primary" v-if="form.status == 0 || userInfo.user_id == form.create_user"
                             @click="submitForm(0)">保存</el-button> -->
 
-            <el-button type="primary" v-if="form.status == 1 && hasPaddingBtnPermission()"
-              @click="orderLogPass(form.id)">通过</el-button>
-            <el-button type="danger" v-if="form.status == 1 && hasRejectionBtnPermission()"
-              @click="orderLogReject(form.id)">驳回</el-button>
+            <el-button
+              type="primary"
+              v-if="form.status == 1 && hasPaddingBtnPermission()"
+              @click="orderLogPass(form.id)"
+              >通过</el-button
+            >
+            <el-button
+              type="danger"
+              v-if="form.status == 1 && hasRejectionBtnPermission()"
+              @click="orderLogReject(form.id)"
+              >驳回</el-button
+            >
           </div>
         </el-row>
       </el-form>
     </el-dialog>
 
     <!-- 工单详情 -->
-    <el-dialog align-center v-model="detailVisibleCopy" title="工单详情" width="70%" :close-on-click-modal="false" @close="resetForm">
+    <el-dialog
+      align-center
+      v-model="detailVisibleCopy"
+      title="工单详情"
+      width="70%"
+      :close-on-click-modal="false"
+      @close="resetForm"
+    >
       <div class="event-title-center">{{ form.name }}</div>
       <el-form :model="form" ref="testform" label-width="100px">
         <div class="custom-steps-container">
           <!-- 标题行 -->
           <div class="steps-titles" v-if="filters.status !== '0'">
-            <div v-for="(record, index) in form.record_list" :class="{ active: record.user_id >= 0 }" :key="index"
-              class="step-title">
+            <div
+              v-for="(record, index) in form.record_list"
+              :class="{ active: record.user_id >= 0 }"
+              :key="index"
+              class="step-title"
+            >
               {{ record.status_str }}
             </div>
           </div>
 
           <!-- Element Steps 组件 -->
-          <el-steps :active="form.active" align-center class="custom-steps" v-if="filters.status !== '0'">
+          <el-steps
+            :active="form.active"
+            align-center
+            class="custom-steps"
+            v-if="filters.status !== '0'"
+          >
             <el-step v-for="(record, index) in form.record_list" :key="index">
               <template #description>
                 <span class="step-description" style="position: relative; display: inline-block">
                   {{ record.user_name }}
                 </span>
-                <span class="step-timer ">
+                <span class="step-timer">
                   {{ record.interval_time_str }}
                 </span>
                 <div class="step-description">
@@ -391,14 +658,22 @@
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="工单名称" prop="name">
-              <el-input v-model="form.name" placeholder="请输入工单名称" :disabled="true"></el-input>
+              <el-input
+                v-model="form.name"
+                placeholder="请输入工单名称"
+                :disabled="true"
+              ></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="关联航线" prop="file_id">
               <el-select v-model="form.file_id" placeholder="请选择航线" :disabled="true">
-                <el-option v-for="item in wayLineList" :key="item.wayline_id" :label="item.name"
-                  :value="item.wayline_id" />
+                <el-option
+                  v-for="item in wayLineList"
+                  :key="item.wayline_id"
+                  :label="item.name"
+                  :value="item.wayline_id"
+                />
               </el-select>
             </el-form-item>
           </el-col>
@@ -407,16 +682,35 @@
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="关联机巢" prop="device_sns">
-              <el-select v-model="form.device_sns" placeholder="请选择机巢" multiple :disabled="true">
-                <el-option v-for="item in device_sns" :key="item.device_sn" :label="item.nickname"
-                  :value="item.device_sn" />
+              <el-select
+                v-model="form.device_sns"
+                placeholder="请选择机巢"
+                multiple
+                :disabled="true"
+              >
+                <el-option
+                  v-for="item in device_sns"
+                  :key="item.device_sn"
+                  :label="item.nickname"
+                  :value="item.device_sn"
+                />
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="关联算法" prop="ai_types">
-              <el-select v-model="form.ai_types" placeholder="请选择关联算法" multiple :disabled="true">
-                <el-option v-for="item in ai_types" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
+              <el-select
+                v-model="form.ai_types"
+                placeholder="请选择关联算法"
+                multiple
+                :disabled="true"
+              >
+                <el-option
+                  v-for="item in ai_types"
+                  :key="item.dictKey"
+                  :label="item.dictValue"
+                  :value="item.dictKey"
+                />
               </el-select>
             </el-form-item>
           </el-col>
@@ -431,8 +725,14 @@
 
           <el-col :span="6">
             <el-form-item label="周期频次" prop="date_range">
-              <el-date-picker v-model="form.date_range" type="daterange" range-separator="至" start-placeholder="开始日期"
-                end-placeholder="结束日期" :disabled="true" />
+              <el-date-picker
+                v-model="form.date_range"
+                type="daterange"
+                range-separator="至"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                :disabled="true"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="3">
@@ -442,18 +742,32 @@
           </el-col>
 
           <el-col :span="3">
-            <el-time-picker style="width: 100px" v-model="form.deal_time" prop="deal_time" :disabled="true"
-              value-format="HH:mm" :picker-options="{
+            <el-time-picker
+              style="width: 100px"
+              v-model="form.deal_time"
+              prop="deal_time"
+              :disabled="true"
+              value-format="HH:mm"
+              :picker-options="{
                 selectableRange: '00:00 - 23:59',
-              }" />
+              }"
+            />
           </el-col>
         </el-row>
 
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="工单内容" prop="content">
-              <el-input type="textarea" v-model="form.content" rows="2" placeholder="请输入工单内容" maxlength="255"
-                show-word-limit :readonly="true" :disabled="true"></el-input>
+              <el-input
+                type="textarea"
+                v-model="form.content"
+                rows="2"
+                placeholder="请输入工单内容"
+                maxlength="255"
+                show-word-limit
+                :readonly="true"
+                :disabled="true"
+              ></el-input>
             </el-form-item>
           </el-col>
         </el-row>
@@ -466,16 +780,27 @@
 
         <el-row>
           <div class="add-box-btns">
-            <el-button type="danger"
+            <el-button
+              type="danger"
               v-if="form.status == 0 || (form.status == 2 && userInfo.user_id == form.create_user)"
-              @click="submitForm(1)">发布</el-button>
+              @click="submitForm(1)"
+              >发布</el-button
+            >
             <!-- <el-button type="primary" v-if="form.status == 0 || userInfo.user_id == form.create_user"
                             @click="submitForm(0)">保存</el-button> -->
 
-            <el-button type="primary" v-if="form.status == 1 && hasPaddingBtnPermission()"
-              @click="orderLogPass(form.id)">通过</el-button>
-            <el-button type="danger" v-if="form.status == 1 && hasRejectionBtnPermission()"
-              @click="orderLogReject(form.id)">驳回</el-button>
+            <el-button
+              type="primary"
+              v-if="form.status == 1 && hasPaddingBtnPermission()"
+              @click="orderLogPass(form.id)"
+              >通过</el-button
+            >
+            <el-button
+              type="danger"
+              v-if="form.status == 1 && hasRejectionBtnPermission()"
+              @click="orderLogReject(form.id)"
+              >驳回</el-button
+            >
             <el-button @click="detailVisibleCopy = false">取消</el-button>
           </div>
         </el-row>
@@ -485,7 +810,7 @@
 </template>
 
 <script>
-import { calculateDefaultRange } from '@/utils/util'
+import { calculateDefaultRange } from '@/utils/util';
 import {
   getList,
   saveUpdateOrderLog,
@@ -497,21 +822,21 @@
   jobStatusNum,
   userPublish,
   deleteOrderLog,
-} from '@/api/tickets/orderLog'
-import { getTicketInfo } from '@/api/tickets/ticket'
-import { getDictionaryByCode } from '@/api/system/dictbiz'
-import { getWaylineFileListByArea } from '@/api/resource/wayline'
-import { export_json_to_excel } from '@/utils/exportExcel'
-import { getFlyingNestBy } from '@/api/device/device'
-import { mapGetters } from 'vuex'
-import NProgress from 'nprogress'
-import { downloadXls } from '@/utils/util'
-import 'nprogress/nprogress.css'
-import { analyzeKmzFile, removeTextKey, XMLToJSON } from '@/utils/cesium/kmz'
+} from '@/api/tickets/orderLog';
+import { getTicketInfo } from '@/api/tickets/ticket';
+import { getDictionaryByCode } from '@/api/system/dictbiz';
+import { getWaylineFileListByArea } from '@/api/resource/wayline';
+import { export_json_to_excel } from '@/utils/exportExcel';
+import { getFlyingNestBy } from '@/api/device/device';
+import { mapGetters } from 'vuex';
+import NProgress from 'nprogress';
+import { downloadXls } from '@/utils/util';
+import 'nprogress/nprogress.css';
+import { analyzeKmzFile, removeTextKey, XMLToJSON } from '@/utils/cesium/kmz';
 import dayjs from 'dayjs';
 import 'dayjs/locale/zh-cn'; // 导入中文语言包
 import weekday from 'dayjs/plugin/weekday';
-import elTooltipCopy from '@/components/ElTooltipCopy.vue'
+import elTooltipCopy from '@/components/ElTooltipCopy.vue';
 
 dayjs.extend(weekday);
 dayjs.locale('zh-cn');
@@ -519,7 +844,7 @@
 export default {
   components: { elTooltipCopy },
   name: 'TicketPage',
-  data () {
+  data() {
     return {
       activeTab: 'all',
 
@@ -587,47 +912,81 @@
 
         column: [
           {
-            label: '工单编号', prop: 'job_info_num', width: 150,
+            label: '工单编号',
+            prop: 'job_info_num',
+            width: 150,
           },
           {
-            label: '工单名称', prop: 'name', width: 100, ellipsis: true, overHidden: true,
+            label: '工单名称',
+            prop: 'name',
+            width: 100,
+            ellipsis: true,
+            overHidden: true,
             showOverflowTooltip: true,
           },
           {
-            label: '工单状态', prop: 'status', width: 88,
+            label: '工单状态',
+            prop: 'status',
+            width: 88,
             showOverflowTooltip: true,
           },
           {
-            label: '所属单位', prop: 'dept_name', ellipsis: true,
+            label: '所属单位',
+            prop: 'dept_name',
+            ellipsis: true,
             showOverflowTooltip: true,
           },
           {
-            label: '创建时间', prop: 'create_time', width: 144, ellipsis: true,
+            label: '创建时间',
+            prop: 'create_time',
+            width: 144,
+            ellipsis: true,
             showOverflowTooltip: true,
           },
           {
-            label: '已执行次数', prop: 'job_num', width: 70, ellipsis: true,
+            label: '已执行次数',
+            prop: 'job_num',
+            width: 70,
+            ellipsis: true,
             showOverflowTooltip: true,
           },
           {
-            label: '工单内容', prop: 'content', ellipsis: true, overHidden: true,
+            label: '工单内容',
+            prop: 'content',
+            ellipsis: true,
+            overHidden: true,
             showOverflowTooltip: true,
           },
           {
-            label: '关联航线', prop: 'wayline_name', ellipsis: true, overHidden: true,
+            label: '关联航线',
+            prop: 'wayline_name',
+            ellipsis: true,
+            overHidden: true,
             showOverflowTooltip: true,
           },
           {
-            label: '关联算法', prop: 'ai_type_str', width: 100, ellipsis: true, overHidden: true,
+            label: '关联算法',
+            prop: 'ai_type_str',
+            width: 100,
+            ellipsis: true,
+            overHidden: true,
             showOverflowTooltip: true,
           },
           {
-            label: '关联机巢', prop: 'device_names', width: 100, ellipsis: true, overHidden: true,
+            label: '关联机巢',
+            prop: 'device_names',
+            width: 100,
+            ellipsis: true,
+            overHidden: true,
             showOverflowTooltip: true,
           },
 
           {
-            label: '创建人', prop: 'creator_name', width: 96, ellipsis: true, overHidden: true,
+            label: '创建人',
+            prop: 'creator_name',
+            width: 96,
+            ellipsis: true,
+            overHidden: true,
             showOverflowTooltip: true,
           },
           // {
@@ -677,55 +1036,54 @@
 
       // 配置时间选择器默认配置
       datePickerDefaultVal: calculateDefaultRange(),
-    }
+    };
   },
-  async created () {
-    var response = await getDictionaryByCode('SF')
-    var word_order_typeResponse = await getDictionaryByCode('WORK_ORDER_TYPE')
-    this.ai_types = response.data.data['SF']
-    this.types = word_order_typeResponse.data.data['WORK_ORDER_TYPE']
+  async created() {
+    var response = await getDictionaryByCode('SF');
+    var word_order_typeResponse = await getDictionaryByCode('WORK_ORDER_TYPE');
+    this.ai_types = response.data.data['SF'];
+    this.types = word_order_typeResponse.data.data['WORK_ORDER_TYPE'];
     //获取航线
-    this.asyncgetWaylineFileListByArea()
-    const response2 = await getTicketInfo()
-    const { dept_data, event_type, ai_type } = response2.data.data
+    this.asyncgetWaylineFileListByArea();
+    const response2 = await getTicketInfo();
+    const { dept_data, event_type, ai_type } = response2.data.data;
     this.departments = dept_data.map(item => ({
       label: item.dept_name,
       value: item.id,
-    }))
+    }));
   },
-  mounted () {
-    this.fetchTableData()
-    const id = this.$route.query.id
-    console.log('idddddd',id);
+  mounted() {
+    this.fetchTableData();
+    const id = this.$route.query.id;
+    console.log('idddddd', id);
 
     if (id) {
       // 确保 id 存在
-      this.handleViewDetail({ id })
-      const find = this.$store.state.tags.bsTagList.find(i => i.path === '/tickets/orderLog')
-        find && (find.query = {})
+      this.handleViewDetail({ id });
+      const find = this.$store.state.tags.bsTagList.find(i => i.path === '/tickets/orderLog');
+      find && (find.query = {});
     } else {
-      console.error('工单ID不存在!')
-
+      console.error('工单ID不存在!');
     }
   },
   computed: {
     ...mapGetters(['userInfo', 'permission']),
-    filteredTabs () {
+    filteredTabs() {
       // rejection_and_draft 权限控制“已驳回”和“草稿”tab
       // console.log(this.permission, '权限信息')
       // console.log(this.userInfo, '权限信息22')
-      const canShowRejectAndDraft = this.permission?.rejection_and_draft === true
+      const canShowRejectAndDraft = this.permission?.rejection_and_draft === true;
       return this.tabs
         .map(tab => {
           if (tab.name === 'DRAFT') {
-            return { ...tab, isShow: canShowRejectAndDraft }
+            return { ...tab, isShow: canShowRejectAndDraft };
           }
           if (tab.name === 'REJECTED') {
-            return { ...tab, isShow: canShowRejectAndDraft }
+            return { ...tab, isShow: canShowRejectAndDraft };
           }
-          return { ...tab, isShow: true }
+          return { ...tab, isShow: true };
         })
-        .filter(tab => tab.isShow)
+        .filter(tab => tab.isShow);
     },
   },
 
@@ -733,98 +1091,98 @@
     handleCellClick(row, column) {
       if (column.no === 1) {
         navigator.clipboard.writeText(row.job_info_num).then(() => {
-          this.$message.success('复制工单编号成功')
-        })
+          this.$message.success('复制工单编号成功');
+        });
       } else if (column.no === 2) {
         navigator.clipboard.writeText(row.name).then(() => {
-          this.$message.success('复制工单名称成功')
-        })
+          this.$message.success('复制工单名称成功');
+        });
       } else if (column.no === 4) {
         navigator.clipboard.writeText(row.dept_name).then(() => {
-          this.$message.success('复制所属单位成功')
-        })
+          this.$message.success('复制所属单位成功');
+        });
       } else if (column.no === 8) {
         navigator.clipboard.writeText(row.wayline_name).then(() => {
-          this.$message.success('复制关联航线成功')
-        })
+          this.$message.success('复制关联航线成功');
+        });
       } else if (column.no === 9) {
         navigator.clipboard.writeText(row.ai_type_str).then(() => {
-          this.$message.success('复制关联算法成功')
-        })
+          this.$message.success('复制关联算法成功');
+        });
       }
     },
-    disabledDate (time) {
-      return time.getTime() < Date.now() - 8.64e7 // 86400000 = 24 * 60 * 60 * 1000
+    disabledDate(time) {
+      return time.getTime() < Date.now() - 8.64e7; // 86400000 = 24 * 60 * 60 * 1000
     },
-    searchChange (params, done) {
+    searchChange(params, done) {
       // console.log('searchChange')
-      this.query = params
-      this.parentId = ''
-      this.page.currentPage = 1
-      this.onLoad(this.page, params)
-      done()
+      this.query = params;
+      this.parentId = '';
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
     },
-    async onLoad (page, params = {}) {
-      this.loading = true
+    async onLoad(page, params = {}) {
+      this.loading = true;
       getList(
         null,
         this.page.currentPage,
         this.page.pageSize,
         Object.assign(params, this.query)
       ).then(res => {
-        this.tableData = res.data.data
-        this.loading = false
-        this.selectionClear()
-      })
+        this.tableData = res.data.data;
+        this.loading = false;
+        this.selectionClear();
+      });
     },
-    selectionClear () {
-      this.selectionList = []
-      this.$refs.crud.toggleSelection()
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
     },
-    async loadAMapScripts () {
+    async loadAMapScripts() {
       try {
         // await loadAMap();
         // await loadAMapUI();
-        this.mapLoaded = true
+        this.mapLoaded = true;
       } catch (error) {
-        console.error('Failed to load AMap scripts:', error)
-        this.$message.error('地图加载失败,请检查网络或API Key配置')
+        console.error('Failed to load AMap scripts:', error);
+        this.$message.error('地图加载失败,请检查网络或API Key配置');
       }
     },
-    formatCycleTime (row) {
-      return `${row.cycle_time_value}`
+    formatCycleTime(row) {
+      return `${row.cycle_time_value}`;
     },
 
-    async fetchTableData () {
-      this.loading = true
+    async fetchTableData() {
+      this.loading = true;
       try {
-        let params = this.getQueryParam()
+        let params = this.getQueryParam();
         // console.log('发送的参数:', params)
-        const response = await getList(params, this.page.currentPage, this.page.pageSize)
+        const response = await getList(params, this.page.currentPage, this.page.pageSize);
         if (!response?.data?.data?.records) {
-          throw new Error('接口返回数据格式不正确')
+          throw new Error('接口返回数据格式不正确');
         }
 
-        const { total, records } = response.data.data
+        const { total, records } = response.data.data;
         this.tableData = records.map(item => {
-          return item
-        })
+          return item;
+        });
 
         // console.log('权限检查:', this.permission)
-        this.page.total = total || 0
-        this.updateGlobalCounts()
+        this.page.total = total || 0;
+        this.updateGlobalCounts();
       } catch (error) {
         // console.error('获取数据失败:', error)
-        this.$message.error(error.message || '获取数据失败')
-        this.tableData = []
-        this.page.total = 0
+        this.$message.error(error.message || '获取数据失败');
+        this.tableData = [];
+        this.page.total = 0;
       } finally {
-        this.loading = false
+        this.loading = false;
       }
     },
 
-    getQueryParam () {
-      const currentTab = this.tabs.find(tab => tab.name === this.activeTab)
+    getQueryParam() {
+      const currentTab = this.tabs.find(tab => tab.name === this.activeTab);
       if (this.filters.dateRange) {
         // console.log(
         //   'this.formatDate(this.filters.dateRange[0])',
@@ -859,29 +1217,29 @@
         deal_time: this.filters.deal_time || undefined,
         current: this.page.currentPage,
         size: this.page.pageSize,
-      }
-      return params
+      };
+      return params;
     },
-    sizeChange (pageSize) {
-      this.page.pageSize = pageSize
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
     },
-    async submitForm (status) {
+    async submitForm(status) {
       this.$refs.testform.validate(async valid => {
         if (valid) {
-          let dateRange = this.form.date_range
+          let dateRange = this.form.date_range;
           // console.log('dateRange' + dateRange)
 
-          this.form.begin_time = this.formatDate(dateRange[0])
-          this.form.end_time = this.formatDate(dateRange[1])
+          this.form.begin_time = this.formatDate(dateRange[0]);
+          this.form.end_time = this.formatDate(dateRange[1]);
 
           // 如果选中日期包含当前天,那么选中的时间点不能小于当前时间
           if (this.form.deal_time) {
-            const selectedDate = dayjs(this.form.date_range[0]).format('YYYY-MM-DD')
-            const selectedTime = dayjs(selectedDate + ' ' + this.form.deal_time).toDate()
-            const now = new Date()
+            const selectedDate = dayjs(this.form.date_range[0]).format('YYYY-MM-DD');
+            const selectedTime = dayjs(selectedDate + ' ' + this.form.deal_time).toDate();
+            const now = new Date();
 
             if (selectedDate === dayjs().format('YYYY-MM-DD') && selectedTime < now) {
-              return this.$message.warning('任务时间不能小于当前时间')
+              return this.$message.warning('任务时间不能小于当前时间');
             }
           }
 
@@ -889,7 +1247,7 @@
             ...this.form,
             status: status,
             ai_types: this.form.ai_types?.length ? this.form.ai_types : [],
-          }
+          };
           // 判断该值this.form.date_range[0] 周几 和rep_fre_type 是不是相等
           // if (this.form.deal_time) {
           //    const weekday = dayjs(this.form.date_range[0]).format('dddd');
@@ -911,23 +1269,23 @@
           //   }
           // }
 
-          await saveUpdateOrderLog(submitData)
-          let id = this.form.id
+          await saveUpdateOrderLog(submitData);
+          let id = this.form.id;
           if (id) {
-            this.$message.success('工单发布成功')
+            this.$message.success('工单发布成功');
           } else {
-            this.$message.success('工单创建成功')
+            this.$message.success('工单创建成功');
           }
-          this.dialogVisible = false
+          this.dialogVisible = false;
           this.detailVisible = false;
-          (this.device_sns = []), (this.wayLineList = []), this.fetchTableData()
+          (this.device_sns = []), (this.wayLineList = []), this.fetchTableData();
         }
-      })
+      });
     },
     //驳回原因显示
-    async rejectDetail (id) {
-      const response = await orderLogDetails(id)
-      let data = response.data.data
+    async rejectDetail(id) {
+      const response = await orderLogDetails(id);
+      let data = response.data.data;
       this.$confirm(data.remark, '驳回原因', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
@@ -935,103 +1293,110 @@
       }).then(() => {
         this.form = {
           ...response.data.data,
-        }
+        };
         // this.detailVisible = true
-        this.handleViewDetail(data)
-      })
+        this.handleViewDetail(data);
+      });
     },
-    formatDate (date) {
-      if (!date) return undefined
-      const d = new Date(date)
+    formatDate(date) {
+      if (!date) return undefined;
+      const d = new Date(date);
       return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(
         d.getDate()
-      ).padStart(2, '0')} 00:00:00`
+      ).padStart(2, '0')} 00:00:00`;
     },
 
-    mapStatus (status) {
+    mapStatus(status) {
       const statusTextMap = {
         0: '草稿',
         1: '待审核',
         2: '已驳回',
         3: '已通过',
-      }
-      return statusTextMap[status] || '未知状态'
+      };
+      return statusTextMap[status] || '未知状态';
     },
 
-    getStatusTagType (status) {
+    getStatusTagType(status) {
       const statusMap = {
         1: 'warning',
         2: 'info',
         3: 'primary',
         4: 'success',
         5: 'danger',
-      }
-      return statusMap[status] || 'info'
+      };
+      return statusMap[status] || 'info';
     },
 
-    handleTabChange (tab) {
-      this.activeTab = tab.props?.name || tab.name
-      this.filters.status = ''
+    handleTabChange(tab) {
+      this.activeTab = tab.props?.name || tab.name;
+      this.filters.status = '';
       if (tab.props?.name === 'WAIT_AUDIT') {
-        this.filters.status = '1'
+        this.filters.status = '1';
       } else if (tab.props?.name === 'REJECTED') {
-        this.filters.status = '2'
+        this.filters.status = '2';
       } else if (tab.props?.name === 'PASS') {
-        this.filters.status = '3'
+        this.filters.status = '3';
       } else if (tab.props?.name === 'DRAFT') {
-        this.filters.status = '0'
+        this.filters.status = '0';
       }
-      this.page.currentPage = 1
-      this.fetchTableData()
+      this.page.currentPage = 1;
+      this.fetchTableData();
     },
 
-    handleSearch () {
-      this.page.currentPage = 1
-      this.fetchTableData()
+    handleSearch() {
+      this.page.currentPage = 1;
+      this.fetchTableData();
     },
 
-    handleReset () {
+    handleReset() {
       this.filters = {
         keyword: '',
         department: '',
         type: '',
         dateRange: [],
         status: '',
-      }
-      this.page.currentPage = 1
-      this.fetchTableData()
+      };
+      this.page.currentPage = 1;
+      this.fetchTableData();
     },
 
-    currentChange (currentPage) {
-      this.page.currentPage = currentPage
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
     },
 
-    async updateGlobalCounts () {
+    async updateGlobalCounts() {
       const counts = {
         all: 0,
         DRAFT: 0,
         WAIT_AUDIT: 0,
         REJECTED: 0,
         PASS: 0,
-      }
-      var reponse = await jobStatusNum()
+      };
+      var reponse = await jobStatusNum();
       // console.log('统计' + reponse.data.data)
       reponse.data.data.forEach(item => {
-        const tab = this.tabs.find(t => t.name === item.dict_key)
+        const tab = this.tabs.find(t => t.name === item.dict_key);
         if (tab) {
-          tab.count = item.num
+          tab.count = item.num;
         }
-      })
+      });
     },
 
-    handleAdd () {
-      this.form = {}
-      this.dialogVisible = true
+    handleAdd() {
+      this.form = {};
+      this.dialogVisible = true;
+
+      this.$nextTick(() => {
+        if (this.$refs.MapContainer && this.$refs.MapContainer.initAddEntity) {
+          this.$refs.MapContainer.initAddEntity('initPosition');
+        }
+      });
+
       //航线列表
-      this.asyncgetWaylineFileListByArea()
+      this.asyncgetWaylineFileListByArea();
     },
 
-    resetForm () {
+    resetForm() {
       this.form = {
         name: '',
         type: '',
@@ -1041,250 +1406,253 @@
         address: '',
         content: '',
         photos: [],
-      }
+      };
       if (this.$refs.testform) {
-        this.$refs.testform.resetFields()
+        this.$refs.testform.resetFields();
       }
     },
 
-    formatLocation (location) {
+    formatLocation(location) {
       if (!Array.isArray(location)) {
-        return '未知位置'
+        return '未知位置';
       }
-      return `${location[0].toFixed(6)}, ${location[1].toFixed(6)}`
+      return `${location[0].toFixed(6)}, ${location[1].toFixed(6)}`;
     },
-    async handleViewDetail (row) {
-      const response = await orderLogDetails(row.id)
-      const data = response.data.data
+    async handleViewDetail(row) {
+      const response = await orderLogDetails(row.id);
+      const data = response.data.data;
       this.form = {
         ...data,
-      }
+      };
 
       // 更新机巢列表
-      this.device_sns = data.device_list
+      this.device_sns = data.device_list;
       this.permission &&
-        (this.permission.order_log_review || this.permission.order_log_recall) &&
-        (data.status == 1 || data.status == 3 || (data.status == 2 && this.userInfo.user_id !== this.form.create_user))
+      (this.permission.order_log_review || this.permission.order_log_recall) &&
+      (data.status == 1 ||
+        data.status == 3 ||
+        (data.status == 2 && this.userInfo.user_id !== this.form.create_user))
         ? (this.detailTitle = '工单详情')
-        : (this.detailTitle = '编辑工单')
+        : (this.detailTitle = '编辑工单');
 
-      this.detailVisible = true
+      this.detailVisible = true;
       // 更新航线列表,追加 wayline_file_region_vo 数据
       if (data.wayline_file_region_vo) {
-        const newWayline = data.wayline_file_region_vo
+        const newWayline = data.wayline_file_region_vo;
 
         // 检查是否已经存在于 this.wayLineList 中
         const isDuplicate = this.wayLineList.some(
-          (item) => item.wayline_id === newWayline.wayline_id
-        )
+          item => item.wayline_id === newWayline.wayline_id
+        );
 
         if (!isDuplicate) {
-          this.wayLineList.push(newWayline)
+          this.wayLineList.push(newWayline);
         }
       }
 
-      this.initMapLine(data.device_map_infos)
-            const find = this.$store.state.tags.bsTagList.find(i => i.path === '/tickets/orderLog')
-        find && (find.query = {})
-
+      this.initMapLine(data.device_map_infos);
+      const find = this.$store.state.tags.bsTagList.find(i => i.path === '/tickets/orderLog');
+      find && (find.query = {});
     },
-    async handleCheckDetail (row) {
-      const response = await orderLogDetails(row.id)
-      const data = response.data.data
+    async handleCheckDetail(row) {
+      const response = await orderLogDetails(row.id);
+      const data = response.data.data;
       this.form = {
         ...data,
-      }
+      };
       // 更新航线列表,追加 wayline_file_region_vo 数据
       // 更新航线列表,追加 wayline_file_region_vo 数据
       if (data.wayline_file_region_vo) {
-        const newWayline = data.wayline_file_region_vo
+        const newWayline = data.wayline_file_region_vo;
 
         // 检查是否已经存在于 this.wayLineList 中
         const isDuplicate = this.wayLineList.some(
-          (item) => item.wayline_id === newWayline.wayline_id
-        )
+          item => item.wayline_id === newWayline.wayline_id
+        );
 
         if (!isDuplicate) {
-          this.wayLineList.push(newWayline)
+          this.wayLineList.push(newWayline);
         }
       }
       // 更新机巢列表
-      this.device_sns = data.device_list
-      this.detailVisibleCopy = true
-      this.initMapLine(data.device_map_infos)
+      this.device_sns = data.device_list;
+      this.detailVisibleCopy = true;
+      this.initMapLine(data.device_map_infos);
     },
     //导出
-    async exportData () {
+    async exportData() {
       this.$confirm('是否智飞工单数据?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning',
       }).then(() => {
-        NProgress.start()
-        let params = this.getQueryParam()
+        NProgress.start();
+        let params = this.getQueryParam();
         orderLogExport(params).then(res => {
-          downloadXls(res.data, `智飞工单${this.$dayjs().format('YYYY-MM-DD')}.xlsx`)
-          NProgress.done()
-        })
-      })
+          downloadXls(res.data, `智飞工单${this.$dayjs().format('YYYY-MM-DD')}.xlsx`);
+          NProgress.done();
+        });
+      });
     },
-    hasAddBtnPermission () {
+    hasAddBtnPermission() {
       // undefined 或 false 都返回 false,只有 true 返回 true
       // console.log('this.permission.order_log_add :', this.permission.order_log_add)
-      return this.permission && this.permission.order_log_add === true
+      return this.permission && this.permission.order_log_add === true;
     },
-    hasPaddingBtnPermission () {
+    hasPaddingBtnPermission() {
       // undefined 或 false 都返回 false,只有 true 返回 true
       // console.log('权限检查:', this.permission)
-      return this.permission && this.permission.order_log_review === true
+      return this.permission && this.permission.order_log_review === true;
     },
-    hasRecallPaddingBtnPermission () {
+    hasRecallPaddingBtnPermission() {
       // undefined 或 false 都返回 false,只有 true 返回 true
       // console.log('权限检查:', this.permission)
       // 智飞工单撤回
-      return this.permission && this.permission.order_log_recall === true
+      return this.permission && this.permission.order_log_recall === true;
     },
     //驳回按钮权限
-    hasRejectionBtnPermission () {
+    hasRejectionBtnPermission() {
       // undefined 或 false 都返回 false,只有 true 返回 true
       // console.log('权限检查:', this.permission)
-      return this.permission && this.permission.rejection_btn === true
+      return this.permission && this.permission.rejection_btn === true;
     },
     //自己点发布
-    userPublishPush (id) {
+    userPublishPush(id) {
       this.$confirm('确定发布吗?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning',
       }).then(() => {
-        let response = userPublish(id)
-        this.$message.success('发布成功')
-        this.fetchTableData()
-      })
+        let response = userPublish(id);
+        this.$message.success('发布成功');
+        this.fetchTableData();
+      });
     },
 
     //删除
-    deleteOrderLog (id) {
+    deleteOrderLog(id) {
       this.$confirm('确定删除吗?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning',
       }).then(() => {
-        let response = deleteOrderLog(id)
-        this.$message.success('删除')
-        this.fetchTableData()
-      })
+        let response = deleteOrderLog(id);
+        this.$message.success('删除');
+        this.fetchTableData();
+      });
     },
-    refreshChange () {
-      this.fetchTableData()
+    refreshChange() {
+      this.fetchTableData();
     },
     //获取航线列表
-    async asyncgetWaylineFileListByArea (name) {
-      var wayLineListResponse = await getWaylineFileListByArea(this.userInfo.detail.areaCode)
-      this.wayLineList = wayLineListResponse.data.data
+    async asyncgetWaylineFileListByArea(name) {
+      var wayLineListResponse = await getWaylineFileListByArea(this.userInfo.detail.areaCode);
+      this.wayLineList = wayLineListResponse.data.data;
 
-      this.initMapLine()
+      this.initMapLine();
     },
 
-    initMapLine (infos = {}, cb = () => { }) {
-      let currentLine = this.wayLineList.find(item => item.wayline_id == this.form.file_id)
+    initMapLine(infos = {}, cb = () => {}) {
+      let currentLine = this.wayLineList.find(item => item.wayline_id == this.form.file_id);
 
-      if (!currentLine) return
+      if (!currentLine) return;
 
       this.$nextTick(() => {
         if (this.$refs.MapContainer && this.$refs.MapContainer.initAddEntity) {
           this.$refs.MapContainer.initAddEntity('polyline', {
-            url: `${import.meta.env.VITE_APP_AIRLINE_URL + currentLine.object_key}?_t=${new Date().getTime()}`,
+            url: `${
+              import.meta.env.VITE_APP_AIRLINE_URL + currentLine.object_key
+            }?_t=${new Date().getTime()}`,
             type: currentLine.wayline_type,
             cb,
-            infos
-          })
+            infos,
+          });
         }
-      })
+      });
     },
 
     //可飞行机巢列表
-    async getFlyingNestBy (waylineId) {
-      const that = this
+    async getFlyingNestBy(waylineId) {
+      const that = this;
 
-       // 先清空
-      that.form.device_sns = []
-      that.device_sns = []
+      // 先清空
+      that.form.device_sns = [];
+      that.device_sns = [];
 
-      this.initMapLine({}, async (polygon) => {
-        const currentLine = that.wayLineList.find(item => item.wayline_id === waylineId)
+      this.initMapLine({}, async polygon => {
+        const currentLine = that.wayLineList.find(item => item.wayline_id === waylineId);
 
         //按照航线来
         const params = {
           type: [2, 4, 5].includes(currentLine.wayline_type) ? 2 : 0,
           wayline_id: waylineId,
-          polygon
-        }
-        var wayLineListResponse = await getFlyingNestBy(params)
+          polygon,
+        };
+        var wayLineListResponse = await getFlyingNestBy(params);
         // 再赋值
-        that.device_sns = wayLineListResponse.data.data
-      })
+        that.device_sns = wayLineListResponse.data.data;
+      });
     },
 
     //撤回
-    async orderLogRecall (id) {
+    async orderLogRecall(id) {
       this.$confirm('确定撤回则到草稿箱。', '是否撤回?', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning',
       }).then(async () => {
-        let reposne = await orderLogRecall(id)
-        this.handleSearch()
-      })
+        let reposne = await orderLogRecall(id);
+        this.handleSearch();
+      });
     },
-    onLoad () {
-      this.fetchTableData()
+    onLoad() {
+      this.fetchTableData();
     },
     /**
      * 通过
      */
-    async orderLogPass (id) {
-      let response = await orderLogPass(id)
-      let data = response.data.data
-      this.$message.success('审核通过')
-      this.detailVisibleCopy = false
+    async orderLogPass(id) {
+      let response = await orderLogPass(id);
+      let data = response.data.data;
+      this.$message.success('审核通过');
+      this.detailVisibleCopy = false;
 
-      this.detailVisible = false
+      this.detailVisible = false;
 
-      this.page.currentPage = 1
-      this.onLoad(this.page, this.query)
+      this.page.currentPage = 1;
+      this.onLoad(this.page, this.query);
       // this.handleViewDetail()
     },
     /**
      * 驳回
      */
-    async orderLogReject (id) {
+    async orderLogReject(id) {
       this.$prompt('', '驳回原因', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
       }).then(async ({ value }) => {
-        let response = await orderLogReject(id, value)
-        let data = response.data.data
-        this.$message.success('驳回成功')
-        this.detailVisibleCopy = false
+        let response = await orderLogReject(id, value);
+        let data = response.data.data;
+        this.$message.success('驳回成功');
+        this.detailVisibleCopy = false;
 
         // this.detailVisible = false
 
-        this.page.currentPage = 1
-        this.onLoad(this.page, this.query)
-      })
+        this.page.currentPage = 1;
+        this.onLoad(this.page, this.query);
+      });
     },
   },
 
   watch: {
     tableData: {
-      handler () {
+      handler() {
         // this.updateTabCounts()
       },
       deep: true,
     },
   },
-}
+};
 </script>
 
 <style lang="scss" scoped>
@@ -1328,7 +1696,7 @@
     &-item {
       flex: 1;
 
-      &> ::v-deep(.el-date-editor) {
+      & > ::v-deep(.el-date-editor) {
         width: 100%;
         box-sizing: border-box;
       }
@@ -1471,11 +1839,10 @@
     justify-content: center;
     flex-wrap: wrap;
 
-    &> ::v-deep(.el-button) {
+    & > ::v-deep(.el-button) {
       flex: 1;
       margin-left: 0;
       margin-right: 10px;
-
     }
   }
 }
@@ -1493,7 +1860,7 @@
 .flex-1 {
   flex: 1;
 
-  &> ::v-deep(div) {
+  & > ::v-deep(div) {
     width: 100% !important;
   }
 }

--
Gitblit v1.9.3