From 317d3e5116240d8b849857f5d737bcf61884285b Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期五, 21 五月 2021 14:04:55 +0800
Subject: [PATCH] 优化国标配置

---
 src/Pool/TreeData.ts |  222 +++++++++++++++++++++++--------------------------------
 1 files changed, 93 insertions(+), 129 deletions(-)

diff --git a/src/Pool/TreeData.ts b/src/Pool/TreeData.ts
index 0289f6c..4d5c6a5 100644
--- a/src/Pool/TreeData.ts
+++ b/src/Pool/TreeData.ts
@@ -8,10 +8,11 @@
   refreshGB28181Tree,
   updateCameraArea
 } from '@/api/area'
-import { findAllFile, show, changeEnable } from '@/api/localVedio'
 
 export default class TreeDataPool {
   public openeds: Array<boolean>
+  public activeTreeData: Array<object>
+
   public treeData: Array<object>
   public clusterData: Array<object>
   public gb28181Data: Array<object>
@@ -37,20 +38,6 @@
   public foldNodeList: object
   //璁板綍宸︿晶tab锛歛ctiveName
   public treeActiveName: string
-  //鏈湴瑙嗛锛氳棰戝垎鏋愬鐞�
-  public vedioAnaliyseSwitch: boolean
-  //鏈湴瑙嗛鍒楄〃
-  public localVedioList: Array<any>
-  //鏈湴瑙嗛褰撳墠椤�
-  public localCurrentPage: number
-  //鏈湴瑙嗛姣忛〉鏌ヨ20鏉�
-  public localPageSize: number
-  //鏈湴瑙嗛鎬绘潯鏁�
-  public localTotal: number
-  //鍕鹃�夌殑鏈湴瑙嗛
-  public checkedLocalVedio: Array<any>
-  //褰撳墠閫変腑鐨勬湰鍦拌棰�
-  public clickLocalVideo: object
   //鎺у埗寮�濮嬨�佹殏鍋滄寜閽樉绀虹姸鎬�
   public btnStaus: string
   //鏈湴瑙嗛绫诲瀷
@@ -60,10 +47,19 @@
   //璁板綍澶嶅埗鐨勬憚鍍忔満name
   public ctrlCameraName: string
 
+  // 鏄惁浣跨敤ztree
   public zTree: boolean
+
+  public checkedTreeNode: Array<object>
+
+  // 閫変腑鐨勬憚鍍忔満涓暟
+  public gb28181CheckedCount: number
+  // 鎬绘憚鍍忔満涓暟
+  public gb28181ChildNodeCount: number
 
   constructor() {
     this.openeds = [true, true, false]
+    this.activeTreeData = []
     this.treeData = []
     this.gb28181Data = []
     this.clusterData = []
@@ -84,20 +80,17 @@
     this.selectedNode = {}
     this.treeType = ''
     this.foldNodeList = {}
-    this.vedioAnaliyseSwitch = false
     this.treeActiveName = 'camera'
     this.searchLocalType = 0
-    this.localVedioList = []
-    this.checkedLocalVedio = []
-    this.clickLocalVideo = {}
+
     //1:鏆傚仠鐘舵�侊紱2锛氱瓑寰呯姸鎬�;3:缃伆
     this.btnStaus = '3'
-    this.localCurrentPage = 1
-    this.localPageSize = 20
-    this.localTotal = 0
     this.ctrlCameraId = ''
     this.ctrlCameraName = ''
     this.zTree = false
+    this.checkedTreeNode = []
+    this.gb28181CheckedCount = 0
+    this.gb28181ChildNodeCount = 0
   }
 
   setVideoArr(index: number, value: object, vue: any): void {
@@ -261,8 +254,6 @@
     this.isFold(this.gb28181Data)
     this.selectedNodes = []
     this.selectedNode = {}
-
-    this.cleanLocalVedio()
   }
 
   cleanTree(tree) {
@@ -397,8 +388,6 @@
     if (this.openeds[1]) {
       this.fetchGbTree()
     }
-
-    this.findAllFile({})
   }
 
   async add(name: string, parent: string) {
@@ -434,109 +423,84 @@
     // this.fetchGbTree()
   }
 
-  async findAllFile(params: any) {
-    ; (params.fileName = this.searchInput), (params.type = this.searchLocalType)
-    params.page = this.localCurrentPage
-    params.size = this.localPageSize
-    let res: any = await findAllFile(params)
-    if (res && res.success) {
-      let list = res.data.dataList.map(i => {
-        let obj: any = {}
-        Object.assign(obj, i)
-        if (i.ruleType == 0) {
-          obj.iconStatus2 = '0'
-        } else {
-          obj.iconStatus2 = '1'
-        }
-        if (!i.snapshot_url) {
-          // obj.snapshot_url = require('@/assets/nobody.png')
-          obj.snapshot_url = ''
-        } else {
-          obj.snapshot_url = '/httpImage/' + obj.snapshot_url
-        }
-        if (i.is_running) {
-          obj.iconStatus1 = '1'
-        } else if (i.progress == 100) {
-          obj.iconStatus1 = '2'
-        } else if (i.status == 1 && i.progress == 0 && i.hasRule) {
-          obj.iconStatus1 = '3'
-        } else if (!i.hasRule && i.progress == 0) {
-          obj.iconStatus1 = '4'
-        }
-        obj.checkStatus = false
-        obj.clickStatus = false
-        obj.showCheckBox = false
-        return obj
-      })
-      this.localVedioList = list
-      this.localTotal = res.data.total
-      // console.log(this.localVedioList,this.searchInput,'鏈湴瑙嗛鍒楄〃')
-    }
-  }
-
-  async show() {
-    let res: any = await show()
-    if (res && res.success) {
-      this.vedioAnaliyseSwitch = res.data.videoEnable
-    }
-  }
-
-  async changeEnable() {
-    let res: any = await changeEnable({
-      enable: this.vedioAnaliyseSwitch
-    })
-  }
-
-  getCheckedFiles() {
-    this.checkedLocalVedio = this.localVedioList.filter(i => {
-      return i.checkStatus
-    })
-    this.clickLocalVideo = this.localVedioList.filter(i => {
-      return i.clickStatus
-    })[0]
-
-    if (this.checkedLocalVedio.length === 0) {
-      this.btnStaus = '3'
-      return false
-    }
-    this.checkedLocalVedio.every((i, index) => {
-      let t = ''
-      if (i.status == 0 && i.hasRule) {
-        t = '1'
-      } else if (i.status == 1 && i.hasRule && !i.is_running) {
-        t = '2'
-      } else {
-        t = '3'
-      }
-      if (index == 0) {
-        this.btnStaus = t
-      } else {
-        if (this.btnStaus !== t) {
-          this.btnStaus = '3'
-          return false
-        }
-      }
-    })
-  }
-
-  filterLocalVideoWell() {
-    if (this.localVedioList.length !== 0) {
-      this.localVedioList = this.localVedioList.filter(i => {
-        return i.progress == 100
-      })
-    }
-  }
-
-  cleanLocalVedio() {
-    this.localVedioList.map(i => {
-      i.checkStatus = false
-      i.clickStatus = false
-    })
-    this.checkedLocalVedio = []
-    this.btnStaus = '3'
-  }
-
-  async dropNode(cameraId, areaId) {
+  async dropNode(cameraId: string, areaId: string) {
     await updateCameraArea({ cameraId: cameraId, areaId: areaId })
   }
+
+  getAllChildrenNodes(treeNode, arr) {
+    for (var i = 0; i < treeNode.length; i++) {
+      var sonList = treeNode[i].children;
+      if (!sonList) {
+        if (treeNode[i].type == "camera") {
+          arr.push(treeNode[i]);
+
+          if (treeNode[i].checked) {
+            this.gb28181CheckedCount += 1;
+          }
+        }
+      } else {
+        this.getAllChildrenNodes(sonList, arr);
+      }
+    }
+    return arr;
+  }
+  countChildrenNodes(treeNode) {
+    let arry = []
+
+    this.getAllChildrenNodes(treeNode, arry)
+
+    return arry.length
+  }
+
+  async fetchVideosvrCameras() {
+    const rsp: any = await refreshGB28181Tree()
+
+    if (rsp && rsp.success) {
+      this.selectedNode = {}
+      this.treeData = rsp.data ? rsp.data : []
+      if (this.treeData && this.treeData.length > 0) {
+        this.sortTreeData(this.treeData)
+      }
+
+      // 璁剧疆绂佹鎷栨嫿鎽勫儚鏈哄埌鎽勫儚鏈鸿妭鐐�
+      this.setDropDisable(this.treeData)
+      this.isFold(this.treeData)
+
+      this.activeTreeData = this.treeData
+
+      this.gb28181CheckedCount = 0;
+      this.gb28181ChildNodeCount = this.countChildrenNodes(this.treeData)
+    }
+  }
+
+  removeNoCheckedNode(nodes: Array<any>) {
+    for (let i = 0; i < nodes.length;) {
+      if (!nodes[i].checked) {
+        nodes.splice(i, 1)
+        continue
+      }
+
+      if (nodes[i].children && nodes[i].children.length) {
+        this.removeNoCheckedNode(nodes[i].children)
+      }
+      i++
+    }
+  }
+
+  countCheckedNodes(nodes: Array<any>) {
+    let count = 0
+    nodes.forEach(n => {
+      if (n.type == "camera") {
+        count++
+      }
+    })
+    this.gb28181CheckedCount = count
+  }
+
+  newTreeByChecked(nodes: Array<object>) {
+    let newTree = JSON.parse(JSON.stringify(nodes))
+    this.removeNoCheckedNode(newTree)
+
+    return newTree
+  }
 }

--
Gitblit v1.8.0