From d44dd830d1e8e5f0e2dbcd10abbcce1dd5fe01ed Mon Sep 17 00:00:00 2001
From: guanqb <18720758508@163.com>
Date: Sat, 04 Feb 2023 17:33:47 +0800
Subject: [PATCH] 1.点位查询树形数据展示,2.视频巡查数据筛选
---
src/views/video/region.vue | 22 +++--
src/views/layout/index.vue | 75 +++++++++++++-----
src/views/video/list.vue | 66 ++++++++++++++++
src/api/video/index.js | 21 ++++
src/styles/element-ui/element-ui.scss | 13 +++
5 files changed, 163 insertions(+), 34 deletions(-)
diff --git a/src/api/video/index.js b/src/api/video/index.js
index e7624a0..038148a 100644
--- a/src/api/video/index.js
+++ b/src/api/video/index.js
@@ -111,14 +111,15 @@
* @param {*} current 当前页
* @param {*} size 每页数据数量
*/
-export const getRegionSaveList = (current, size, name) => {
+export const getRegionSaveList = (current, size, deptId, name) => {
return request({
url: '/api/range/range/page',
method: 'get',
params: {
current,
size,
- name
+ name,
+ deptId
}
})
}
@@ -135,4 +136,20 @@
ids
}
})
+}
+
+/**
+ * 获取监控树形数据
+ * @param {*}
+ * @returns
+ */
+export const getTreeDevices = (params) => {
+ return request({
+ url: '/device/query/tree/36110000002009999000',
+ method: 'get',
+ requestBaseUrl: 'outside',
+ params: {
+ ...params
+ }
+ })
}
\ No newline at end of file
diff --git a/src/styles/element-ui/element-ui.scss b/src/styles/element-ui/element-ui.scss
index c80e0fd..c4c5f05 100644
--- a/src/styles/element-ui/element-ui.scss
+++ b/src/styles/element-ui/element-ui.scss
@@ -431,4 +431,17 @@
transform: translate(-50%, -100%);
border-color: transparent transparent rgba(35, 50, 167, 0.7) transparent;
+}
+
+.el-tree {
+ color: #fff;
+ background: transparent;
+}
+
+.el-tree-node__content:hover {
+ background: transparent;
+}
+
+.el-tree-node:focus>.el-tree-node__content{
+ background-color: #5daaf0;
}
\ No newline at end of file
diff --git a/src/views/layout/index.vue b/src/views/layout/index.vue
index 4df41d1..dd14f17 100644
--- a/src/views/layout/index.vue
+++ b/src/views/layout/index.vue
@@ -12,13 +12,25 @@
<div class="wrapper">
<div class="main-header">
<div class="menu-list left">
- <div @mouseenter="item.childrenFlag = true" @mouseleave="item.childrenFlag = false" class="nav-list"
- @click="goToPath(item)" v-for="(item, index) in menuLeftList" :key="index">
+ <div
+ @mouseenter="item.childrenFlag = true"
+ @mouseleave="item.childrenFlag = false"
+ class="nav-list"
+ @click="goToPath(item)"
+ v-for="(item, index) in menuLeftList"
+ :key="index"
+ >
<span :class="{ on: currentUrl.indexOf(item.path) != -1 }">{{ item.menuName }}</span>
<div class="sub-nav-list" v-show="item.children && item.childrenFlag">
- <div v-for="(subItem, subIndex) in item.children" :key="subIndex" @click="goToPath(subItem)">{{
+ <div
+ v-for="(subItem, subIndex) in item.children"
+ :key="subIndex"
+ @click="goToPath(subItem)"
+ >
+ {{
subItem.menuName
- }}</div>
+ }}
+ </div>
</div>
</div>
</div>
@@ -29,13 +41,25 @@
<!-- 菜单导航 -->
<div class="menu-list right">
- <div @mouseenter="item.childrenFlag = true" @mouseleave="item.childrenFlag = false" class="nav-list"
- @click="goToPath(item)" v-for="(item, index) in menuRightList" :key="index">
+ <div
+ @mouseenter="item.childrenFlag = true"
+ @mouseleave="item.childrenFlag = false"
+ class="nav-list"
+ @click="goToPath(item)"
+ v-for="(item, index) in menuRightList"
+ :key="index"
+ >
<span :class="{ on: currentUrl.indexOf(item.path) != -1 }">{{ item.menuName }}</span>
<div class="sub-nav-list" v-show="item.children && item.childrenFlag">
- <div v-for="(subItem, subIndex) in item.children" :key="subIndex" @click="goToPath(subItem)">{{
+ <div
+ v-for="(subItem, subIndex) in item.children"
+ :key="subIndex"
+ @click="goToPath(subItem)"
+ >
+ {{
subItem.menuName
- }}</div>
+ }}
+ </div>
</div>
</div>
</div>
@@ -74,15 +98,25 @@
<!-- 地图区域 -->
<map-box ref="modalForm">
<!-- 主体内容区域 -->
- <div slot="mainContent" class="main-content" id="MainContent"
- :class="{ 'spread': leftShow && show, 'take-back': leftShow && !show }">
+ <div
+ slot="mainContent"
+ class="main-content"
+ id="MainContent"
+ :class="{ 'spread': leftShow && show, 'take-back': leftShow && !show }"
+ >
<router-view ref="target-name"></router-view>
</div>
- <el-button slot="showButton" v-show="leftShow" class="flexible-btn"
+ <el-button
+ slot="showButton"
+ v-show="leftShow"
+ class="flexible-btn"
:class="{ 'spread': leftShow && show, 'take-back': leftShow && !show }"
- :icon="show ? 'el-icon-arrow-left' : 'el-icon-arrow-right'" id="FlexibleBtn" type="primary"
- @click="flexibelClick"></el-button>
+ :icon="show ? 'el-icon-arrow-left' : 'el-icon-arrow-right'"
+ id="FlexibleBtn"
+ type="primary"
+ @click="flexibelClick"
+ ></el-button>
</map-box>
</div>
</div>
@@ -121,7 +155,7 @@
childrenFlag: false,
children: [
{
- menuName: '设备查询',
+ menuName: '点位查询',
path: '/layout/video/list'
},
{
@@ -323,7 +357,7 @@
overflow: hidden;
letter-spacing: 6px;
- &>img {
+ & > img {
// width: 100%;
height: 80%;
margin: 0 10px 0 10px;
@@ -339,7 +373,7 @@
// border-radius: 10px 16px 10px 16px;
transform: skew(58deg);
- &>span {
+ & > span {
transform: skew(-58deg);
}
}
@@ -353,7 +387,7 @@
// border-radius: 16px 10px 16px 10px;
transform: skew(-58deg);
- &>span {
+ & > span {
transform: skew(58deg);
}
}
@@ -363,11 +397,10 @@
display: flex;
align-items: center;
- &>.nav-list {
-
+ & > .nav-list {
// color: rgba(32, 106, 181, 1);
// border-bottom: 2px solid #409eff;
- &>span.on {
+ & > span.on {
color: rgba(252, 189, 86, 1);
}
}
@@ -496,7 +529,7 @@
justify-content: space-around;
padding-top: 4px;
- &>div {
+ & > div {
width: 100px;
height: 40px;
background-color: rgba(168, 222, 255, 0.6);
diff --git a/src/views/video/list.vue b/src/views/video/list.vue
index 1b933bc..fd3dba4 100644
--- a/src/views/video/list.vue
+++ b/src/views/video/list.vue
@@ -44,7 +44,9 @@
>{{ item.name }}</div>
</div>
- <div class="list-show">
+ <el-tree :props="props" :load="loadNode" lazy @node-click="treeClick"></el-tree>
+
+ <div class="list-show" v-if="false">
<div class="car-list">
<div class="list-box">
<el-table
@@ -153,7 +155,7 @@
<script>
import EntityDraw from "@/utils/EntityDraw.js"
import { listQuery, accurateSearch } from "@/utils/search.js"
-import { getVideoList, getDevices, getRegionList, insertRegionSaveList } from '@/api/video/index.js'
+import { getVideoList, getDevices, getRegionList, insertRegionSaveList, getTreeDevices } from '@/api/video/index.js'
import { getSearchExtensively } from '@/api/dept/index.js'
import flvjs from 'flv.js'
@@ -186,6 +188,15 @@
searchExtensivelyValue: '',
searchExtensivelyValBoxShow: false,
searchExtensivelyArray: [],
+ props: {
+ label: 'name',
+ children: 'zones',
+ isLeaf: (data, node) => {
+ if (node.level === 4) {
+ return true
+ }
+ }
+ },
}
},
@@ -574,6 +585,57 @@
this.searchExtensivelyValue = ''
this.searchExtensivelyChange()
},
+
+ async loadNode (node, resolve) {
+ if (node.level === 0) {
+ return resolve([{ name: '信州分局' }])
+ }
+ if (node.level === 1) {
+ let data = []
+ await getTreeDevices({ page: 1, count: 100, parentId: 361102, onlyCatalog: false }).then(res => {
+ data = res.data.data.list
+ })
+ return resolve(data)
+ }
+ if (node.level > 1) {
+ let data = []
+ await getTreeDevices({ page: 1, count: 100, parentId: node.data.id, onlyCatalog: false }).then(res => {
+ data = res.data.data.list
+ })
+ return resolve(data)
+ }
+ },
+
+ async treeClick (node) {
+ if (node.parent == false) {
+ console.log(node, node.name, node.id, node.basicData.channelId)
+ let flvUrl = ''
+ await this.getDevices(node.id).then(res => {
+ flvUrl = res
+ })
+ console.log(flvUrl, 111)
+ if (typeof flvUrl === 'object') {
+ this.$message.error(flvUrl.msg)
+ return
+ }
+ this.dialogVisible = true
+
+ if (flvjs.isSupported()) {
+ this.$nextTick(() => {
+ var videoElement = document.getElementById('videoElement')
+ this.flvPlayer = flvjs.createPlayer({
+ type: 'flv',
+ isLive: true,
+ hasAudio: false,
+ url: flvUrl
+ })
+ this.flvPlayer.attachMediaElement(videoElement)
+ this.flvPlayer.load()
+ this.flvPlayer.play()
+ })
+ }
+ }
+ },
},
destroyed () {
diff --git a/src/views/video/region.vue b/src/views/video/region.vue
index f46ab75..b7baa7d 100644
--- a/src/views/video/region.vue
+++ b/src/views/video/region.vue
@@ -341,6 +341,8 @@
let graphicLayer = null
export default {
+ inject: ['userInfo'],
+
data () {
return {
currentPage: 1,
@@ -404,7 +406,9 @@
created () {
// this.getVideoList(1, 100)
- this.getRegionSaveList(this.currentPage, this.pagesize)
+ this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id)
+ console.log(this.userInfo.dept_id, 888888)
+
},
mounted () {
@@ -415,7 +419,7 @@
methods: {
handleCurrentChange: function (currentPage) {
this.currentPage = currentPage
- this.getRegionSaveList(this.currentPage, this.pagesize)
+ this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id)
},
@@ -492,8 +496,8 @@
this.playVideoList(`flvPlayer${args}`, `${this.monitorOption[val].flvUrl}`, `videoElement${args}`)
},
- getRegionSaveList (current, size, name) {
- getRegionSaveList(current, size, name).then(res => {
+ getRegionSaveList (current, size, deptId, name) {
+ getRegionSaveList(current, size, deptId, name).then(res => {
this.saveRangeList = res.data.data.records
this.pagesCount = res.data.data.pages
this.initRangeListLayer()
@@ -507,7 +511,7 @@
message: '删除成功',
type: 'warning'
})
- this.getRegionSaveList(this.currentPage, this.pagesize)
+ this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id)
} else {
this.$message({
message: '删除失败'
@@ -697,7 +701,7 @@
if (this.searchValue == '') {
this.searchValBoxShow = false
this.searchArray = []
- this.getRegionSaveList(this.currentPage, this.pagesize, this.searchValue)
+ this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id, this.searchValue)
this.$message({
message: '请输入搜索内容',
type: 'warning'
@@ -705,14 +709,14 @@
} else {
this.searchArray = listQuery(this.saveRangeList, this.searchValue, 'name')
this.searchValBoxShow = true
- this.getRegionSaveList(this.currentPage, this.pagesize, this.searchValue)
+ this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id, this.searchValue)
}
},
searchClick () {
if (this.searchValue != '') {
this.searchValBoxShow = false
- this.getRegionSaveList(this.currentPage, this.pagesize, this.searchValue)
+ this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id, this.searchValue)
} else {
this.$message({
message: '请输入搜索内容',
@@ -726,7 +730,7 @@
this.searchArray = []
// this.monitoringList = [item]
this.searchValue = item.name
- this.getRegionSaveList(this.currentPage, this.pagesize, this.searchValue)
+ this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id, this.searchValue)
},
// 大小重置
--
Gitblit v1.9.3