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