视频监控
This commit is contained in:
@@ -34,17 +34,17 @@
|
|||||||
<div class="addressBook-left__list--wrapper">
|
<div class="addressBook-left__list--wrapper">
|
||||||
<div class="addressBook-left__list" v-show="tabIndex === 0">
|
<div class="addressBook-left__list" v-show="tabIndex === 0">
|
||||||
<el-tree
|
<el-tree
|
||||||
:filter-node-method="filterNode"
|
:filter-node-method="filterNode"
|
||||||
ref="tree"
|
ref="tree"
|
||||||
:props="defaultProps"
|
:props="defaultProps"
|
||||||
node-key="id"
|
node-key="id"
|
||||||
:data="unitList"
|
:data="unitList"
|
||||||
highlight-current
|
highlight-current
|
||||||
@node-contextmenu="nodeContextmenu"
|
@node-contextmenu="nodeContextmenu"
|
||||||
:current-node-key="search.departmentId"
|
:current-node-key="search.departmentId"
|
||||||
:default-expanded-keys="defaultExpanded"
|
:default-expanded-keys="defaultExpanded"
|
||||||
:default-checked-keys="defaultChecked"
|
:default-checked-keys="defaultChecked"
|
||||||
@current-change="onTreeChange">
|
@current-change="onTreeChange">
|
||||||
</el-tree>
|
</el-tree>
|
||||||
<ul
|
<ul
|
||||||
v-if="isShowMenu"
|
v-if="isShowMenu"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<section class="AppMonitorManage">
|
<section class="AppMonitorManage">
|
||||||
<device-slider :show.sync="slider" :ins="instance" :dict="dict" @select="handleSelectMonitor"
|
<device-slider :show.sync="slider" :ins="instance" :dict="dict" @treeCommand="handleSliderOption" @select="handleSelectMonitor"
|
||||||
:render-item="renderTreeItem" ref="DeviceSlider"/>
|
:render-item="renderTreeItem" ref="DeviceSlider"/>
|
||||||
<div class="monitorPane">
|
<div class="monitorPane">
|
||||||
<div class="headerBar">
|
<div class="headerBar">
|
||||||
@@ -151,14 +151,6 @@
|
|||||||
<div class="flexRow">
|
<div class="flexRow">
|
||||||
<i class={['iconfont', 'iconshipinjiankong', show]}/>
|
<i class={['iconfont', 'iconshipinjiankong', show]}/>
|
||||||
<div>{node.label}</div>
|
<div>{node.label}</div>
|
||||||
<el-dropdown class="menuBtn" onCommand={e => this.handleSliderOption(e, data)}>
|
|
||||||
<i class="iconfont iconMore"/>
|
|
||||||
<el-dropdown-menu slot="dropdown">
|
|
||||||
<el-dropdown-item command="edit">修改名称</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="area">行政地区</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="locate">地图标绘</el-dropdown-item>
|
|
||||||
</el-dropdown-menu>
|
|
||||||
</el-dropdown>
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
} else return (
|
} else return (
|
||||||
@@ -171,17 +163,20 @@
|
|||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
handleSliderOption(command, data) {
|
handleSliderOption(e) {
|
||||||
this.selected = JSON.parse(JSON.stringify({...data, command}))
|
this.selected = {
|
||||||
this.selected.areaId = data.areaId || this.user.info.areaId
|
command: e.type,
|
||||||
if (command == "edit") {//修改名称
|
...e.node
|
||||||
|
}
|
||||||
|
this.selected.areaId = e.node.areaId || this.user.info.areaId
|
||||||
|
if (e.type == "edit") {//修改名称
|
||||||
this.dialog = true
|
this.dialog = true
|
||||||
} else if (command == "area") {//绑定areaId
|
} else if (e.type == "area") {//绑定areaId
|
||||||
this.$refs.BindArea?.chooseArea()
|
this.$refs.BindArea?.chooseArea()
|
||||||
} else if (command == "locate") {//地图标绘
|
} else if (e.type == "locate") {//地图标绘
|
||||||
this.latlng = data.lat && data.lng ? {
|
this.latlng = e.node.lat && e.node.lng ? {
|
||||||
lat: data.lat,
|
lat: e.node.lat,
|
||||||
lng: data.lng
|
lng: e.node.lng
|
||||||
} : ''
|
} : ''
|
||||||
this.locate = true
|
this.locate = true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,10 +24,17 @@
|
|||||||
</div>
|
</div>
|
||||||
<div title>设备列表</div>
|
<div title>设备列表</div>
|
||||||
<div fill class="deviceList">
|
<div fill class="deviceList">
|
||||||
<el-scrollbar>
|
<el-tree ref="deviceTree" :render-content="renderItem" :data="treeData" :props="propsConfig" @node-click="handleNodeClick" @node-contextmenu="nodeContextmenu"
|
||||||
<el-tree ref="deviceTree" :data="treeData" :props="propsConfig" @node-click="handleNodeClick"
|
:filter-node-method="handleFilter"/>
|
||||||
:render-content="renderItem" :filter-node-method="handleFilter"/>
|
<ul
|
||||||
</el-scrollbar>
|
v-if="isShowMenu && menuInfo.node.type === '1'"
|
||||||
|
class="el-dropdown-menu el-popper"
|
||||||
|
:style="{top: menuInfo.y + 'px', left: menuInfo.x + 'px', position: 'fixed', zIndex: 2023}"
|
||||||
|
x-placement="top-end">
|
||||||
|
<li class="el-dropdown-menu__item" @click="handleTreeCommand('edit', menuInfo.node)">修改名称</li>
|
||||||
|
<li class="el-dropdown-menu__item" @click="handleTreeCommand('area', menuInfo.node)">行政地区</li>
|
||||||
|
<li class="el-dropdown-menu__item" @click="handleTreeCommand('locate', menuInfo.node)">地图标绘</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="rightBtn" :class="{show}" @click="handleShow">
|
<div class="rightBtn" :class="{show}" @click="handleShow">
|
||||||
@@ -82,8 +89,14 @@ export default {
|
|||||||
noArea: [],
|
noArea: [],
|
||||||
staData: [],
|
staData: [],
|
||||||
name: '',
|
name: '',
|
||||||
|
isShowMenu: false,
|
||||||
search: {
|
search: {
|
||||||
bind: ''
|
bind: ''
|
||||||
|
},
|
||||||
|
menuInfo: {
|
||||||
|
x: '',
|
||||||
|
y: '',
|
||||||
|
node: {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -91,6 +104,10 @@ export default {
|
|||||||
handleShow() {
|
handleShow() {
|
||||||
this.$emit('update:show', !this.show)
|
this.$emit('update:show', !this.show)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
bindEvent() {
|
||||||
|
this.isShowMenu = false
|
||||||
|
},
|
||||||
getDevices() {
|
getDevices() {
|
||||||
this.ins.post("/app/appzyvideoequipment/tree", null, {
|
this.ins.post("/app/appzyvideoequipment/tree", null, {
|
||||||
params: {size: 999}
|
params: {size: 999}
|
||||||
@@ -103,6 +120,25 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
handleTreeCommand (e, node) {
|
||||||
|
this.$emit('treeCommand', {
|
||||||
|
type: e,
|
||||||
|
node
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
nodeContextmenu(e, node) {
|
||||||
|
this.isShowMenu = true
|
||||||
|
let y = e.y + 6
|
||||||
|
if (y + 202 > document.body.clientHeight) {
|
||||||
|
y = y - 202
|
||||||
|
}
|
||||||
|
this.menuInfo = {
|
||||||
|
x: e.x + 16, y,
|
||||||
|
node
|
||||||
|
}
|
||||||
|
},
|
||||||
handleNodeClick(data) {
|
handleNodeClick(data) {
|
||||||
this.$emit('select', data)
|
this.$emit('select', data)
|
||||||
},
|
},
|
||||||
@@ -124,6 +160,10 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.dict.load("deviceStatus")
|
this.dict.load("deviceStatus")
|
||||||
this.getDevices()
|
this.getDevices()
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted () {
|
||||||
|
document.querySelector('html').addEventListener('click', this.bindEvent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -134,12 +174,36 @@ export default {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
div[flex] {
|
div[flex] {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.deviceList {
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
|
::v-deep .el-tree {
|
||||||
|
width: -webkit-fit-content;
|
||||||
|
width: -moz-fit-content;
|
||||||
|
width: fit-content;
|
||||||
|
min-width: 100%;
|
||||||
|
}
|
||||||
|
&::-webkit-scrollbar {
|
||||||
|
width : 10px;
|
||||||
|
height: 15px;
|
||||||
|
}
|
||||||
|
&::-webkit-scrollbar-thumb {
|
||||||
|
box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.2);
|
||||||
|
background: #535353;
|
||||||
|
}
|
||||||
|
&::-webkit-scrollbar-track {
|
||||||
|
box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.2);
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
div[fill] {
|
div[fill] {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user