From 0a28b8b848524063e250cb7d32d0be53f83d8d5b Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Fri, 31 Oct 2025 17:02:03 +0800
Subject: [PATCH] feat: 同步信息

---
 src/api/layer/index.js                            |   29 ++++++++++++++
 src/views/layerManagement/components/leftList.vue |   60 +++++++++++++++++++++++++++++-
 2 files changed, 87 insertions(+), 2 deletions(-)

diff --git a/src/api/layer/index.js b/src/api/layer/index.js
index 27a3fd2..37129df 100644
--- a/src/api/layer/index.js
+++ b/src/api/layer/index.js
@@ -78,3 +78,32 @@
     data,
   });
 };
+
+// 同步
+export const areasUpdateApi = data => {
+  return request({
+    url: `/drone-device-core/noFlyZoon/areasUpdate`,
+    method: 'post',
+    data,
+  });
+};
+
+// 获取同步信息
+export const failuresListApi = data => {
+  return request({
+    url: `/drone-device-core/noFlyZoon/failuresList`,
+    method: 'get',
+    data,
+  });
+};
+
+// 取消同步
+export const failuresDelApi = data => {
+  return request({
+    url: `/drone-device-core/noFlyZoon/failuresDel`,
+    method: 'delete',
+    data,
+  });
+};
+
+
diff --git a/src/views/layerManagement/components/leftList.vue b/src/views/layerManagement/components/leftList.vue
index 410a0e6..4e63763 100644
--- a/src/views/layerManagement/components/leftList.vue
+++ b/src/views/layerManagement/components/leftList.vue
@@ -26,6 +26,21 @@
         <el-button class="ztzf-button"> 上传 </el-button>
       </el-upload>
 
+      <template v-if="activeName === '自定义禁飞区'">
+        <template v-if="failuresInfo.length">
+          <el-button  class="ztzf-button" @click="synchronize">
+            继续同步
+          </el-button>
+          <el-button class="ztzf-button" @click="failuresDel">
+            取消同步
+          </el-button>
+        </template>
+        <el-button v-else  class="ztzf-button" @click="synchronize">
+          同步
+        </el-button>
+      </template>
+
+
       <el-button class="ztzf-button" @click="selectAll">全选</el-button>
     </div>
     <div class="tableListBox">
@@ -68,8 +83,15 @@
 </template>
 
 <script setup>
-import { ElMessage } from 'element-plus';
-import { treeDataApi, deleteFenceApi, deleteFolderApi, spatialPlanningApi } from '@/api/layer/index';
+import { ElMessage, ElMessageBox } from 'element-plus';
+import {
+  treeDataApi,
+  deleteFenceApi,
+  deleteFolderApi,
+  spatialPlanningApi,
+  failuresListApi,
+  failuresDelApi, areasUpdateApi
+} from '@/api/layer/index';
 import { inject, nextTick, onMounted, watch } from 'vue';
 const emit = defineEmits(['update:coverData', 'update:deitData', 'newFencesMethods']);
 import EventBus from '@/utils/eventBus';
@@ -268,7 +290,41 @@
   return data.name.includes(value)
 }
 
+// 同步信息
+const failuresInfo = ref([])
+function failuresList() {
+  failuresListApi().then(res => {
+    failuresInfo.value = res.data.data || []
+  })
+}
+
+// 同步
+function synchronize() {
+  const data = failuresInfo.value.map(item => item.device_sn)
+  areasUpdateApi(data).then(res => {
+    if (res.data.data.length){
+      let stringVal = res.data.data.reduce((acc, cur) => {
+        return acc + cur.nickname + '(' + cur.reason + ')' + ','
+      }, '')
+      stringVal = stringVal.slice(0, -1)
+      ElMessageBox.alert(stringVal, '同步失败', {
+        confirmButtonText: '确定',
+      })
+    }else{
+      ElMessage.success('同步成功');
+    }
+  })
+}
+
+// 取消同步
+function failuresDel() {
+  failuresDelApi().then(res => {
+    ElMessage.success('取消同步成功');
+  })
+}
+
 onMounted(() => {
+  failuresList()
   gettreeDataApi();
   EventBus.on('gettreeDataApi', gettreeDataApi);
 });

--
Gitblit v1.9.3