From 0c504d6e0a2805195ebe6498f73429af414d88b4 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期六, 20 八月 2022 13:40:25 +0800
Subject: [PATCH] 修复用户中心显示
---
src/components/giantTree/index.vue | 399 ++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 257 insertions(+), 142 deletions(-)
diff --git a/src/components/giantTree/index.vue b/src/components/giantTree/index.vue
index 502fc00..1f2ba05 100644
--- a/src/components/giantTree/index.vue
+++ b/src/components/giantTree/index.vue
@@ -1,5 +1,24 @@
<template>
<div class="tree-menu" :style="`max-height:${height - 200}px;`">
+ <div class="devArea" v-if="showDevArea">
+ <swiper :options="swiperOption">
+ <swiper-slide v-for="item in nodeList" :key="item.devId" :class="{ active: activeTabObj.devId === item.devId }">
+ <div class="tab" @click="chooseTab(item)">
+ {{ item.devName }}
+ </div>
+ </swiper-slide>
+ </swiper>
+ <div class="swiper-pre-border" v-if="showDevArea">
+ <div class="icon-btn" slot="button-prev">
+ <i class="iconfont"></i>
+ </div>
+ </div>
+ <div class="swiper-next-border" v-if="showDevArea">
+ <div class="icon-btn" slot="button-next">
+ <i class="iconfont"></i>
+ </div>
+ </div>
+ </div>
<z-tree
:nodes="node"
:show-checkbox="TreeDataPool.multiple"
@@ -18,31 +37,18 @@
@onExpand="itemExpand"
@onCollapse="itemCollapse"
@onShowPic="showCameraPic"
+ :search="search"
/>
+ <div class="empty" v-if="!node.length">鏆傛棤鎽勫儚鏈烘暟鎹�,璇锋坊鍔犳憚鍍忔満!</div>
<div class="dialog-box-bg" v-show="showDialog" @click="hideDialogBox"></div>
- <div
- class="dialog-box"
- v-show="showDialog"
- :style="{ left: clientX + 'px', top: clientY + 'px' }"
- >
- <el-card :body-style="{ padding: '10px' }">
- <el-form
- :model="dialogForm"
- size="mini"
- :rules="rules"
- ref="dialogForm"
- label-width="70px"
- >
+ <div class="dialog-box" v-show="showDialog">
+ <el-card :body-style="{ padding: '5px' }">
+ <el-form :model="dialogForm" size="mini" :rules="rules" ref="dialogForm" label-width="70px">
<el-form-item label="鍚嶇О锛�" prop="name">
- <el-input
- v-model="dialogForm.text"
- oninput="if(value.length>10)value=value.slice(0,10)"
- ></el-input>
+ <el-input v-model="dialogForm.text" oninput="if(value.length>20)value=value.slice(0,20)"></el-input>
</el-form-item>
<div class="text-center pb-2">
- <el-button size="mini" type="primary" @click="submitForm"
- >淇濆瓨</el-button
- >
+ <el-button size="mini" type="primary" @click="submitForm">淇濆瓨</el-button>
<el-button size="mini" @click="hideDialogBox">鍙栨秷</el-button>
</div>
</el-form>
@@ -52,40 +58,49 @@
</template>
<script>
-import ZTree from "./zTree/ztree";
+import ZTree from "./zTree/ztree"
export default {
name: "GiantTreeMenu",
components: {
- ZTree,
+ ZTree
},
props: {
app: {
type: String,
- default: "Video",
+ default: "Video"
},
node: {
- type: Array,
+ type: Array
},
treeName: {
type: String,
- default: "",
+ default: ""
},
gb28181: {
type: Boolean,
- default: false,
+ default: false
},
height: {
type: Number,
- default: 0,
+ default: 0
},
setting: {
type: Object,
require: false,
- default: function () {
- return {};
- },
+ default: function() {
+ return {}
+ }
},
+ search: {
+ type: Boolean,
+ default: false
+ },
+ showDevArea: {
+ type: Boolean,
+ default: false
+ },
+ nodeList: {}
},
data() {
return {
@@ -93,154 +108,154 @@
clientX: 0,
clientY: 0,
dialogForm: {
- text: "",
+ text: ""
},
rules: {
text: [
{ required: true, message: "璇疯緭鍏ヨ妭鐐瑰悕绉�", trigger: "change" },
- { min: 2, max: 10, message: "闀垮害鍦�2鍒�10涓瓧", trigger: "change" },
- ],
+ { min: 2, max: 10, message: "闀垮害鍦�2鍒�10涓瓧", trigger: "change" }
+ ]
},
curNodeTid: "",
- };
+
+ activeTabObj: {},
+ swiperOption: {
+ slidesPerView: 3,
+ spaceBetween: 0,
+ pagination: {
+ el: ".swiper-pagination",
+ clickable: true
+ },
+ navigation: {
+ nextEl: ".swiper-next-border",
+ prevEl: ".swiper-pre-border"
+ },
+ observer: true, //淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
+ observeParents: true //淇敼swiper鐨勭埗鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
+ }
+ }
},
created() {
- this.TreeDataPool.zTree = true;
+ this.activeTabObj = this.nodeList && this.nodeList.length > 0 ? this.nodeList[0] : ""
+ this.TreeDataPool.zTree = true
this.TreeDataPool.activeVideoIndex = sessionStorage.activeIndexVideo
? Number(sessionStorage.activeIndexVideo)
- : this.TreeDataPool.activeVideoIndex;
+ : this.TreeDataPool.activeVideoIndex
},
watch: {
- "TreeDataPool.treeType": function (newValue) {
+ "TreeDataPool.treeType": function(newValue) {
if (newValue !== this.treeName) {
- this.TreeDataPool.cleanTree(this.treeName);
+ this.TreeDataPool.cleanTree(this.treeName)
}
},
+ showDevArea: function() {
+ this.$forceUpdate()
+ }
},
methods: {
- handleCreated: function (ztreeObj) {
- let _this = this;
- this.ztreeObj = ztreeObj;
- ztreeObj.expandAll(true);
+ handleCreated: function(ztreeObj) {
+ let _this = this
+ this.ztreeObj = ztreeObj
+ ztreeObj.expandAll(true)
// onCreated 涓搷浣渮treeObj瀵硅薄灞曞紑绗竴涓妭鐐�
// ztreeObj.expandNode(ztreeObj.getNodes()[0], true);
// 鎽勫儚鏈洪厤缃垏鎹㈡椂, 璁剧疆閫変腑鐘舵��
if (this.TreeDataPool.selectedNode.id) {
// 鍙栨秷鎵�鏈夊閫夌殑鑺傜偣,浠呬繚鐣欏綋鍓嶅崟閫夌殑鑺傜偣
- this.TreeDataPool.selectedNodes = [this.TreeDataPool.selectedNode.id];
- this.curNodeTid = this.TreeDataPool.selectedNode.tId;
+ this.TreeDataPool.selectedNodes = [this.TreeDataPool.selectedNode.id]
+ this.curNodeTid = this.TreeDataPool.selectedNode.tId
//鎽勫儚鏈轰俊鎭洿鏂颁俊鎭悗锛屽鏋滆妭鐐逛綅缃湁鍙榯Id灏变笉鍑嗕簡,this.TreeDataPool.selectedNode姝ゆ椂杩樻槸鏃х殑淇℃伅
- let ztreeNodes = ztreeObj.getNodes();
+ let ztreeNodes = ztreeObj.getNodes()
//var curNodeTid = '';
- _this.findTidByIdFromArr(ztreeNodes);
- this.TreeDataPool.selectedNode.tId = _this.curNodeTid;
- let node = this.ztreeObj.getNodeByTId(
- this.TreeDataPool.selectedNode.tId
- );
+ _this.findTidByIdFromArr(ztreeNodes)
+ this.TreeDataPool.selectedNode.tId = _this.curNodeTid
+ let node = this.ztreeObj.getNodeByTId(this.TreeDataPool.selectedNode.tId)
// 澶氶�夋椂, 閫変腑鍗曢�夊崟鍑荤殑鑺傜偣
if (this.TreeDataPool.multiple) {
- this.ztreeObj.checkAllNodes(false);
- this.ztreeObj.checkNode(node, true, false, false);
+ this.ztreeObj.checkAllNodes(false)
+ this.ztreeObj.checkNode(node, true, false, false)
}
- this.ztreeObj.selectNode(node, false, true);
+ this.ztreeObj.selectNode(node, false, true)
}
+ },
+ chooseTab(item) {
+ this.$emit("saveTree", this.activeTabObj)
+ setTimeout(() => {
+ this.activeTabObj = item
+ }, 100)
},
findTidByIdFromArr(arr) {
- let len = arr.length;
- let _this = this;
+ let len = arr.length
+ let _this = this
for (var i = 0; i < len; i++) {
if (arr[i].id == this.TreeDataPool.selectedNode.id) {
- _this.curNodeTid = arr[i].tId;
- break;
+ _this.curNodeTid = arr[i].tId
+ break
}
if (arr[i].children) {
- this.findTidByIdFromArr(arr[i].children);
+ this.findTidByIdFromArr(arr[i].children)
}
}
},
onDblClick(evt, treeId, item) {
if (item.type !== "4" || this.app !== "Camera") {
- return;
+ return
}
- this.TreeDataPool.activeVideoId = item.id;
- let videoArr = this.TreeDataPool.videoArr;
- let nullVideoIndex = "";
+ this.TreeDataPool.activeVideoId = item.id
+ let videoArr = this.TreeDataPool.videoArr
+ let nullVideoIndex = ""
if (
this.TreeDataPool.activeForceChoose &&
this.TreeDataPool.activeVideoIndex !== "" &&
this.TreeDataPool.activeVideoIndex <= videoArr.length - 1
) {
- this.TreeDataPool.setVideoArr(
- this.TreeDataPool.activeVideoIndex,
- undefined,
- this
- );
+ this.TreeDataPool.setVideoArr(this.TreeDataPool.activeVideoIndex, undefined, this)
this.$nextTick(() => {
- this.TreeDataPool.setVideoArr(
- this.TreeDataPool.activeVideoIndex,
- item,
- this
- );
- });
- return;
+ this.TreeDataPool.setVideoArr(this.TreeDataPool.activeVideoIndex, item, this)
+ })
+ return
}
for (let i = 0; i < videoArr.length; i++) {
// eslint-disable-next-line
- if (
- videoArr[i] === "" ||
- videoArr[i] === undefined ||
- videoArr[i] === null
- ) {
- nullVideoIndex = i;
- break;
+ if (videoArr[i] === "" || videoArr[i] === undefined || videoArr[i] === null) {
+ nullVideoIndex = i
+ break
} else {
- nullVideoIndex = "";
+ nullVideoIndex = ""
}
}
if (nullVideoIndex === "") {
- this.TreeDataPool.setVideoArr(
- this.TreeDataPool.activeVideoIndex,
- undefined,
- this
- );
+ this.TreeDataPool.setVideoArr(this.TreeDataPool.activeVideoIndex, undefined, this)
this.$nextTick(() => {
- this.TreeDataPool.setVideoArr(
- this.TreeDataPool.activeVideoIndex,
- item,
- this
- );
- });
+ this.TreeDataPool.setVideoArr(this.TreeDataPool.activeVideoIndex, item, this)
+ })
} else {
// this.TreeDataPool.setVideoArr(this.TreeDataPool.activeVideoIndex, undefined, this);
this.$nextTick(() => {
- this.TreeDataPool.setVideoArr(
- this.TreeDataPool.activeVideoIndex,
- item,
- this
- );
- });
- this.TreeDataPool.activeVideoIndex = nullVideoIndex;
+ this.TreeDataPool.setVideoArr(this.TreeDataPool.activeVideoIndex, item, this)
+ })
+ this.TreeDataPool.activeVideoIndex = nullVideoIndex
}
},
addCamera(node) {
- this.$emit("addDevice", node);
+ this.$emit("addDevice", node)
},
importCameras(node) {
- this.$emit("import", node);
+ this.$emit("import", node)
},
addNode(node) {
this.dialogForm = {
text: "",
method: "add",
- node: node.id,
- };
- this.showDialogBox(event);
+ node: node.id
+ }
+ this.showDialogBox(event)
},
editNode(node) {
this.dialogForm = {
@@ -248,58 +263,57 @@
method: "edit",
node: node.id,
alias: node.alias,
- gb28181: this.gb28181,
- };
- this.showDialogBox(event);
+ gb28181: this.gb28181
+ }
+ this.showDialogBox(event)
},
delNode(node) {
- this.TreeDataPool.del(node.id);
+ this.TreeDataPool.del(node.id)
},
submitForm() {
// 鎻愪氦鏂板鎴栬�呯紪杈戝尯鍩熻妭鐐硅〃鍗�
this.$refs.dialogForm.validate((valid) => {
if (valid) {
if (this.dialogForm.method == "add") {
- this.TreeDataPool.add(this.dialogForm.text, this.dialogForm.node);
+ this.TreeDataPool.add(this.dialogForm.text, this.dialogForm.node)
} else if (this.dialogForm.method == "edit") {
this.TreeDataPool.update(
this.dialogForm.text,
this.dialogForm.node,
this.gb28181 ? this.dialogForm.text : "",
this.dialogForm.gb28181
- );
+ )
}
} else {
- return false;
+ return false
}
- });
- this.hideDialogBox();
+ })
+ this.hideDialogBox()
},
hideDialogBox() {
- this.showDialog = false;
- this.dialogForm = { text: "" };
+ this.showDialog = false
+ this.dialogForm = { text: "" }
},
showDialogBox(event) {
- let { clientX = 0, offsetY = 0 } = event;
+ let { clientX = 0, offsetY = 0 } = event
// this.clientX = clientX - 120;
- this.clientX = 50;
- this.clientY = offsetY;
- this.showDialog = true;
+ this.clientX = 50
+ this.clientY = offsetY
+ this.showDialog = true
},
itemClick(evt, treeId, treeNode) {
- console.log("click");
- this.TreeDataPool.selectedNode = treeNode;
- this.TreeDataPool.activeNode = treeNode;
- this.TreeDataPool.treeType = this.treeName;
+ this.TreeDataPool.selectedNode = treeNode
+ this.TreeDataPool.activeNode = treeNode
+ this.TreeDataPool.treeType = this.treeName
// 澶氶��
if (this.TreeDataPool.multiple) {
// 鍗曞嚮鏌愪竴涓妭鐐规枃瀛楁椂 鍙栨秷鎵�鏈夊嬀閫夌姸鎬� 鐒跺悗閫変腑鑷韩
- this.ztreeObj.checkAllNodes(false);
- this.ztreeObj.checkNode(treeNode, true, false, false);
+ this.ztreeObj.checkAllNodes(false)
+ this.ztreeObj.checkNode(treeNode, true, false, false)
}
- this.TreeDataPool.updateZTreeCheckNodes([treeNode]);
+ this.TreeDataPool.updateZTreeCheckNodes([treeNode])
},
// itemClick(treeNode) {
// this.TreeDataPool.selectedNode = treeNode;
@@ -315,42 +329,68 @@
// this.TreeDataPool.updateZTreeCheckNodes([treeNode]);
// },
itemCheck(evt, treeId, treeNode) {
- this.TreeDataPool.selectedNode = treeNode;
- this.TreeDataPool.treeType = this.treeName;
+ if (treeNode) {
+ this.TreeDataPool.selectedNode = treeNode
+ }
+ this.TreeDataPool.treeType = this.treeName
+
// 澶氶��
// this.ztreeObj.checkNode(treeNode, true, false, false);
- let checkedNodes = this.ztreeObj.getCheckedNodes(true);
- this.TreeDataPool.updateZTreeCheckNodes(checkedNodes);
+ let checkedNodes = this.ztreeObj.getCheckedNodes(true)
+ this.TreeDataPool.updateZTreeCheckNodes(checkedNodes)
// 瀹炴椂缁熻閫変腑涓暟
- this.TreeDataPool.countCheckedNodes(checkedNodes);
+ this.TreeDataPool.countCheckedNodes(checkedNodes)
// 淇濆瓨涓�浠芥暟鎹�
- this.TreeDataPool.activeTreeData = this.ztreeObj.getNodes();
+ this.TreeDataPool.activeTreeData = this.ztreeObj.getNodes()
+ this.$emit("itemChecked", treeNode)
},
//灞曞紑
itemExpand(e, id, node) {
- delete this.TreeDataPool.foldNodeList[node.id];
+ delete this.TreeDataPool.foldNodeList[node.id]
},
// 鎶樺彔
itemCollapse(e, id, node) {
- this.TreeDataPool.foldNodeList[node.id] = true;
+ this.TreeDataPool.foldNodeList[node.id] = true
},
dropNode(node, item, draggedItem, e) {
// console.log('dropNode', node, item, draggedItem);
- this.TreeDataPool.dropNode(draggedItem.id, item.id);
+ this.TreeDataPool.dropNode(draggedItem.id, item.id)
},
showCameraPic(nodeId) {
- this.TreeDataPool.showBaseImage(nodeId);
+ this.TreeDataPool.showBaseImage(nodeId)
},
- },
-};
+ updateNodes(ids) {
+ // 鍙栨秷鎵�鏈夐�変腑鐘舵��
+ this.ztreeObj.checkAllNodes(false)
+
+ // nodes 杞暟缁�
+ let treeNodes = this.ztreeObj.getNodes()
+ let nodeArry = this.ztreeObj.transformToArray(treeNodes)
+
+ // 鍒ゆ柇鏄惁琚�変腑
+ for (let i = 0; i < nodeArry.length; i++) {
+ if (ids.indexOf(nodeArry[i].id) > -1) {
+ this.ztreeObj.checkNode(nodeArry[i], true, false, false)
+ }
+ }
+ let checkedNodes = this.ztreeObj.getCheckedNodes(true)
+ this.TreeDataPool.updateZTreeCheckNodes(checkedNodes)
+ }
+ }
+}
</script>
<style lang="scss" scoped>
+.devArea {
+}
+
.dialog-box {
- position: absolute;
- width: 220px;
- z-index: 1;
+ top: 415px;
+ left: 43px;
+ position: fixed;
+ width: 260px;
+ z-index: 3;
}
.dialog-box-bg {
position: absolute;
@@ -408,6 +448,10 @@
overflow-x: auto;
overflow-y: hidden;
margin-bottom: 4px;
+ max-height: 70vh;
+}
+.empty {
+ line-height: 76px;
}
.tree-menu::-webkit-scrollbar {
/*婊氬姩鏉℃暣浣撴牱寮�*/
@@ -432,4 +476,75 @@
.tree-menu:hover {
overflow-y: auto;
}
+
+.devArea {
+ position: relative;
+ margin: 20px;
+ background: #f0f5fa;
+ padding: 0 40px;
+
+ .swiper-slide {
+ display: flex;
+ align-items: center;
+ height: 46px;
+
+ &.active {
+ .tab {
+ color: #0064ff;
+ }
+ border-bottom: 2px solid #0064ff;
+ }
+
+ .tab {
+ margin: 0 12px 0 24px;
+ font-size: 14px;
+ color: #666;
+ cursor: pointer;
+ }
+
+ .iconfont {
+ font-size: 12px;
+ color: #dbdbdb;
+ }
+ }
+
+ .swiper-pre-border {
+ position: absolute;
+ padding-bottom: 13px;
+ padding-right: 18px;
+ top: 12px;
+ left: 10px;
+ cursor: pointer;
+
+ i {
+ font-size: 16px;
+ color: #999;
+ }
+ }
+
+ .swiper-next-border {
+ position: absolute;
+ top: 12px;
+ right: 10px;
+ padding-bottom: 13px;
+ padding-left: 18px;
+ cursor: pointer;
+
+ i {
+ font-size: 16px;
+ color: #999;
+ }
+ }
+
+ .swiper-button-disabled {
+ cursor: not-allowed;
+ i {
+ color: #dbdbdb;
+ }
+ }
+
+ .del {
+ cursor: pointer;
+ }
+}
</style>
--
Gitblit v1.8.0