From ccee429d379e0108b7445f72ade8d97c110a6fb3 Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期二, 09 十一月 2021 18:01:59 +0800
Subject: [PATCH] 问题修复

---
 src/pages/panoramicView/components/RelateCamera.vue |  133 +++++++++++++++++++++++++++++++------------
 1 files changed, 95 insertions(+), 38 deletions(-)

diff --git a/src/pages/panoramicView/components/RelateCamera.vue b/src/pages/panoramicView/components/RelateCamera.vue
index caf3ada..8933b5a 100644
--- a/src/pages/panoramicView/components/RelateCamera.vue
+++ b/src/pages/panoramicView/components/RelateCamera.vue
@@ -40,6 +40,7 @@
       </div>
     </div>
     <!-- <div class="part" v-if="groupList.length"> -->
+    <el-divider></el-divider>
     <div class="part" v-if="groupList.length!==0 && Object.keys(curGroup)">
       <div class="title">缁樺埗鍖哄煙(鐢ㄤ簬绠楁硶鍒嗘瀽)</div>
       <div class="relative-partment" v-if="curGroup.cameras&&curGroup.cameras.length">
@@ -48,6 +49,7 @@
         </div>
       </div>
     </div>
+    <el-divider></el-divider>
     <div class="part relative-config" v-if="Object.keys(curGroup)">
       <div class="title">
         <div class="left">
@@ -58,7 +60,7 @@
         </div>
       </div>
       <div class="relative-list">
-        <div class="relative-item" v-for="item in relativeList" :key="item.id">
+        <div class="relative-item" v-for="(item,index) in relativeList" :key="item.id">
           <div class="left">
             <el-select v-model="item.sourceObj" value-key="polygonId" size="small">
               <el-option
@@ -80,9 +82,18 @@
           </div>
           <div class="right">
             <el-button type="text" @click="saveRelativePolygon(item)">淇濆瓨</el-button>
-            <div class="btn-del" @click="delRelation(item)">
-              <i class="el-icon-delete"></i>
-            </div>
+
+            <el-popconfirm title="纭畾鍒犻櫎璇ラ厤缃悧?" @onConfirm="delRelation(item)" v-if="item.id">
+              <el-button class="btn-del" slot="reference" type="text" icon="el-icon-delete"></el-button>
+            </el-popconfirm>
+            <el-button
+              @click="delRelation(item,index)"
+              class="btn-del"
+              slot="reference"
+              type="text"
+              icon="el-icon-delete"
+              v-else
+            ></el-button>
           </div>
         </div>
       </div>
@@ -133,7 +144,7 @@
 
 export default {
   components: { SlideCanvas },
-  data () {
+  data() {
     return {
       cameraData: [],
       relativeList: [],
@@ -152,11 +163,11 @@
       cameraAndPolygonData: []
     }
   },
-  mounted () {
+  mounted() {
     this.getAllCameraData();
   },
   methods: {
-    getAllCameraData () {
+    getAllCameraData() {
       let _this = this;
       getCamerasByServer().then(res => {
         if (res.success) {
@@ -167,22 +178,27 @@
         console.log(e)
       })
     },
-    polygonUpdate () {
+    polygonUpdate() {
       this.getAllGroups();
     },
-    delRelation (item) {
+    delRelation(item, index) {
       let _this = this;
-      delRelation(item.id).then(res => {
-        if (res.success) {
-          this.$notify({
-            type: 'success',
-            message: res.data
-          });
-          _this.findRelationByGroup();
-        }
-      })
+      if (item.id) {
+        delRelation(item.id).then(res => {
+          if (res.success) {
+            this.$notify({
+              type: 'success',
+              message: res.data
+            });
+            _this.findRelationByGroup();
+          }
+        })
+      } else {
+        this.relativeList.splice(index, 1);
+      }
+
     },
-    findRelationByGroup () {
+    findRelationByGroup() {
       let _this = this;
       findByGroup({ groupId: this.curGroup.id }).then(res => {
 
@@ -199,8 +215,22 @@
         })
       })
     },
-    saveRelativePolygon (item) {
-      debugger
+    saveRelativePolygon(item) {
+      // debugger
+      if (!item.sourceObj || !item.targetObj) {
+        this.$notify({
+          type: 'warning',
+          message: '璇峰畬鍠勫叧鑱斿尯鍩熶俊鎭�!'
+        });
+        return;
+      }
+      if (item.sourceObj.cameraId == item.targetObj.cameraId) {
+        this.$notify({
+          type: 'warning',
+          message: '鐩稿悓鎽勫儚鏈轰笉瀛樺湪鍏宠仈鍖哄煙锛岃閲嶆柊閫夋嫨!'
+        });
+        return;
+      }
       let _this = this;
       let params = {
         groupId: this.curGroup.id,
@@ -222,17 +252,21 @@
       })
     },
 
-    async findPolygonByIds (cameras) {
+    async findPolygonByIds(cameras) {
       for (var i = 0; i < cameras.length; i++) {
+        if (Object.keys(cameras[i]).length == 0)
+          continue
         let res = await getAllPolygon({ cameraId: cameras[i].id });
         cameras[i].canvasData = res.data;
       }
       return cameras
     },
 
-    async getAllGroupInfo () {
+    async getAllGroupInfo() {
       let _this = this;
+      console.log("_this.cameraData", _this.cameraData)
       let res = await findCameraGroups();
+      console.log("res", res);
       let groupArr = res.data.map(item => {
         let obj = {}; //group
         obj.groupName = item.groupName;
@@ -275,40 +309,55 @@
     //     _this.checkCurrentGroup(_this.groupList[0]);
     //   })
     // },
-    async getAllGroups () {
+    async getAllGroups() {
       let _this = this;
       let groups = await this.getAllGroupInfo();
+      console.log("groups", groups)
       for (var i = 0; i < groups.length; i++) {
         groups[i].cameras = await _this.findPolygonByIds(groups[i].cameras)
       }
       this.groupList = groups;
-      //閫変腑绗竴涓�
-      this.groupList.length && this.checkCurrentGroup(_this.groupList[0]);
+      this.groupList.reverse();
+      //濡傛灉鍒氭柊寤哄垯閫変腑绗竴涓�,缂栬緫鍒欓�変腑缂栬緫鐨勯偅鏉�
+      if (!this.groupForm.id) {
+        this.groupList.length && this.checkCurrentGroup(_this.groupList[0]);
+      } else {
+        let group = this.groupList.find(one => one.id == this.groupForm.id);
+        if (group) {
+          this.groupList.length && this.checkCurrentGroup(group);
+        } else {
+          this.groupList.length && this.checkCurrentGroup(_this.groupList[0]);
+        }
+
+      }
+
 
     },
 
-    addRelation () {
+    addRelation() {
       let obj = { cameraArea1: '', cameraArea2: '' };
       this.relativeList.push(obj)
     },
 
-    editGroup (group) {
+    editGroup(group) {
+      // debugger
       this.groupModelVisible = true;
       //this.$refs['groupForm'].resetFields();
       //this.groupForm = group;
       this.groupForm = JSON.parse(JSON.stringify(group));
     },
-    removeGroup (group) {
+    removeGroup(group) {
       let _this = this;
       delCameraGroup(group.id).then(res => {
         _this.getAllGroups()
       })
     },
-    checkCurrentGroup (group) {
+    checkCurrentGroup(group) {
       this.groupList.forEach(group => {
         group.checked = false;
-      })
+      });
       this.curGroup = group;
+      this.groupForm = JSON.parse(JSON.stringify(group));
       this.curGroup.checked = true;
       this.findRelationByGroup();
       //鏌ヨ绗竴涓垎缁勪笅鎽勫儚鏈哄尯鍩�
@@ -333,10 +382,9 @@
           tempArr = tempArr.concat(cameraArea)
         });
         this.cameraAreas = tempArr;
-        console.log(this.cameraAreas)
       })
     },
-    confirmGroupDialog () {
+    confirmGroupDialog() {
       //璇锋眰淇濆瓨鏂板缓鎴栫紪杈戝垎缁�
       let _this = this;
       let params = {
@@ -371,12 +419,18 @@
       })
       //this.groupList.push(this.groupForm);
       saveCameraGroupInfo(params).then(res => {
+        if (res.success) {
+          this.$notify({
+            type: 'success',
+            message: '淇濆瓨鎴愬姛!'
+          })
+        }
         _this.getAllGroups();
       })
       this.groupModelVisible = false;
 
     },
-    newGroup () {
+    newGroup() {
       this.groupModelVisible = true;
       this.$nextTick(() => {
         this.$refs['groupForm'].resetFields();
@@ -441,8 +495,8 @@
       .details {
         display: -webkit-box;
         overflow: hidden;
-        text-overflow:ellipsis;
-        word-break:break-all;
+        text-overflow: ellipsis;
+        word-break: break-all;
         -webkit-box-orient: vertical;
         -webkit-line-clamp: 2;
         //flex-wrap: wrap;
@@ -461,7 +515,7 @@
       position: relative;
       display: flex;
       &:after {
-        content: '';
+        content: "";
         position: absolute;
         font-size: 0;
         width: 1px;
@@ -483,7 +537,7 @@
     margin-bottom: 20px;
     .relative-partment {
       width: 1200px;
-      margin: 0 auto;
+      // margin: 0 auto;
       display: flex;
       justify-content: space-between;
       .area-wrap {
@@ -513,6 +567,9 @@
         .right {
           display: flex;
           align-items: center;
+          .el-button + .el-button {
+            margin-left: 0;
+          }
         }
         i {
           font-size: 20px;

--
Gitblit v1.8.0