From e018e23189eb9520f6f28ae515b17333351267ff Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期六, 06 八月 2022 05:30:21 +0800
Subject: [PATCH] 完善推送管理功能

---
 src/views/report/components/DevList.vue |  153 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 95 insertions(+), 58 deletions(-)

diff --git a/src/views/report/components/DevList.vue b/src/views/report/components/DevList.vue
index ed9afd2..776aadb 100644
--- a/src/views/report/components/DevList.vue
+++ b/src/views/report/components/DevList.vue
@@ -1,21 +1,34 @@
 <template>
   <div class="event-list">
-    <div class="title">鍛婅鎺ㄩ�侀厤缃�</div>
-    <div class="empty" v-if="eventList.length === 0">
+    <div class="title">
+      <span>鍛婅鎺ㄩ�侀厤缃�</span>
+      <i
+        class="el-icon-circle-plus-outline"
+        style="cursor: pointer;margin-left:15px"
+        v-show="taskList.length > 0"
+        @click="handleAdd"
+      ></i>
+    </div>
+    <div class="empty" v-show="taskList.length == 0">
       <img src="/images/search/1.png" alt="" />
       <div class="des">鎮ㄨ繕鏈坊鍔犳坊鍔犲憡璀︿簨浠舵帹閫佷换鍔�</div>
-      <div class="button add" @click="showSettingBox = true">
+      <div class="button add" @click="handleAdd">
         绔嬪嵆娣诲姞
       </div>
     </div>
     <div class="list scroll">
-      <el-table :data="eventList" style="width: 100%">
-        <el-table-column label="搴忓彿" width="180"> </el-table-column>
-        <el-table-column label="浜嬩欢鍚嶇О" width="180"> </el-table-column>
-        <el-table-column label="浜嬩欢绛夌骇" width="180"> </el-table-column>
-        <el-table-column label="鍏宠仈鍖哄煙" width="180"> </el-table-column>
-        <el-table-column label="璐d换浜�" width="180"> </el-table-column>
-        <el-table-column label="鎺ㄩ�佹柟寮�" width="180"> </el-table-column>
+      <el-table :data="taskList" style="width: 100%">
+        <el-table-column label="搴忓彿" type="index" width="50"> </el-table-column>
+        <el-table-column label="浜嬩欢鍚嶇О" width="180" prop="taskName"> </el-table-column>
+        <el-table-column label="浜嬩欢绛夌骇" width="120" prop="level"> </el-table-column>
+        <el-table-column label="鍏宠仈鍖哄煙" prop="org"> </el-table-column>
+        <el-table-column label="璐d换浜�" width="180" prop="person"> </el-table-column>
+        <el-table-column label="鎵嬫満鍙�" width="180" prop="tel"> </el-table-column>
+        <el-table-column label="鐘舵��" width="100" prop="enable">
+          <template slot-scope="scope">
+            <el-switch v-model="scope.row.enable" active-color="#13ce66" inactive-color="#bbbbbb"> </el-switch>
+          </template>
+        </el-table-column>
         <el-table-column label="鎿嶄綔">
           <template slot-scope="scope">
             <el-button size="mini" @click="handleEdit(scope.$index, scope.row)">缂栬緫</el-button>
@@ -23,77 +36,101 @@
           </template>
         </el-table-column>
       </el-table>
-      <!-- <div class="devItem" v-for="(item, index) in clusterList" :key="index">
-        <div class="mainInfo">
-          <img src="/images/hashrate/cluster.png" alt="" />
-
-          <div class="right">
-            <div class="name">{{ item.cluster_name }}</div>
-            <div class="ip">{{ item.virtual_ip }}</div>
-            <div class="number">璁惧鎬婚噺:{{ item.nodeNum }}</div>
-          </div>
-
-          <div class="button set" @click="setting({ clusterId: item.cluster_id }, item.nodeList)">
-            閰嶇疆
-          </div>
-        </div>
-      </div>
-      <div class="devItem" v-for="(item, index) in devList" :key="index + 'dev'">
-        <div class="mainInfo">
-          <img src="/images/hashrate/equipment.png" alt="" />
-
-          <div class="right">
-            <div class="name">{{ item.devName }}</div>
-            <div class="ip">{{ item.devIp }}</div>
-          </div>
-
-          <div class="button set" @click="setting({ devId: item.devId })">
-            閰嶇疆
-          </div>
-        </div>
-      </div> -->
     </div>
 
-    <SettingBox v-if="showSettingBox" @close="showSettingBox = false" :id="idObj" :nodeList="nodeList"></SettingBox>
+    <SettingBox
+      v-if="showSettingBox"
+      @close="handleClose"
+      :id="idObj"
+      :node-list="editNode"
+      :camera="cameraTree"
+      :menu="menuTree"
+    ></SettingBox>
   </div>
 </template>
 
 <script>
 import SettingBox from "@/views/report/components/SettingBox"
 import { getClusterDevList } from "@/api/clusterManage"
+import { findAllTask, deleteTask } from "@/api/report"
+import { getLocalCameraTree } from "@/api/area"
 
 export default {
   components: {
     SettingBox
   },
-  created() {
-    this.getClusterDevList()
-  },
   data() {
     return {
-      eventList: [],
-      clusterList: [],
-      devList: [],
+      taskList: [],
       showSettingBox: false,
       idObj: {},
-      nodeList: []
+      editNode: {},
+      cameraTree: [],
+      menuTree: []
     }
   },
+  mounted() {
+    this.getCameras()
+    this.getTaskList()
+  },
   methods: {
-    async getClusterDevList() {
-      const res = await getClusterDevList()
-      if (res && res.success) {
-        this.clusterList = res.data.clusterList
-        this.devList = res.data.devList
+    async getCameras() {
+      let clusterId = ""
+      let clusterReq = await getClusterDevList()
+      if (clusterReq && clusterReq.success) {
+        if (clusterReq.data.clusterList.length > 0) {
+          clusterId = clusterReq.data.clusterList[0].cluster_id
+        }
+      }
+      let camereReq = await getLocalCameraTree({ clusterId: clusterId })
+      if (camereReq && camereReq.success) {
+        this.cameraTree = camereReq.data.treeMenu
+        let tmpTree = JSON.parse(JSON.stringify(camereReq.data.treeMenu))
+        for (let i = 0; i < tmpTree.length; i++) this.clearNode(tmpTree[i])
+        this.menuTree = tmpTree
       }
     },
-    setting(id, nodeList) {
-      this.idObj = id
-      this.nodeList = nodeList ? nodeList : []
+    clearNode(tree) {
+      if (tree.children) {
+        tree.children = tree.children.filter((item) => {
+          return item.type == "MENU"
+        })
+      }
+      if (tree.children && tree.children.length > 0) {
+        for (let i = 0; i < tree.children.length; i++) this.clearNode(tree.children[i])
+      } else {
+        delete tree.children
+      }
+    },
+    getTaskList() {
+      findAllTask().then((rsp) => {
+        if (rsp && rsp.success) {
+          this.taskList = rsp.data
+        }
+      })
+    },
+    handleAdd() {
+      this.idObj = ""
+      this.editNode = {}
       this.showSettingBox = true
     },
-    handleEdit(idx, row) {},
-    handleDelete(idx, row) {}
+    handleClose() {
+      this.showSettingBox = false
+      this.getTaskList()
+    },
+    handleEdit(idx, row) {
+      console.log("edit", row)
+      this.idObj = row.id
+      this.editNode = row
+      this.showSettingBox = true
+    },
+    handleDelete(idx, row) {
+      deleteTask({ id: row.id }).then((rsp) => {
+        if (rsp && rsp.success) {
+          this.getTaskList()
+        }
+      })
+    }
   }
 }
 </script>
@@ -104,7 +141,7 @@
   box-sizing: border-box;
   padding: 20px;
   width: 1280px;
-  height: 770px;
+  height: 100%;
   background-color: #fff;
   margin: 0 auto;
 

--
Gitblit v1.8.0