Commit f7236c4a9099d0ec3128861f8b485e28acb01146
1 parent
088419b4
添加公共组件设备树
Showing
11 changed files
with
244 additions
and
25 deletions
src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorage.java
| @@ -180,7 +180,7 @@ public interface IVideoManagerStorage { | @@ -180,7 +180,7 @@ public interface IVideoManagerStorage { | ||
| 180 | * @param count | 180 | * @param count |
| 181 | * @return | 181 | * @return |
| 182 | */ | 182 | */ |
| 183 | - PageInfo querySubChannels(String deviceId, String channelId, String query, Boolean hasSubChannel, String online, int page, int count); | 183 | + PageInfo querySubChannels(String deviceId, String channelId, String query, Boolean hasSubChannel, Boolean online, int page, int count); |
| 184 | 184 | ||
| 185 | 185 | ||
| 186 | /** | 186 | /** |
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
| @@ -246,7 +246,9 @@ public interface DeviceChannelMapper { | @@ -246,7 +246,9 @@ public interface DeviceChannelMapper { | ||
| 246 | " channelId as \"value\",\n" + | 246 | " channelId as \"value\",\n" + |
| 247 | " channelId as \"key\",\n" + | 247 | " channelId as \"key\",\n" + |
| 248 | " longitude,\n" + | 248 | " longitude,\n" + |
| 249 | - " latitude\n" + | 249 | + " latitude,\n" + |
| 250 | + " PTZType,\n" + | ||
| 251 | + " subCount\n" + | ||
| 250 | " from device_channel\n" + | 252 | " from device_channel\n" + |
| 251 | " where deviceId = #{deviceId}") | 253 | " where deviceId = #{deviceId}") |
| 252 | List<DeviceChannelTree> tree(String deviceId); | 254 | List<DeviceChannelTree> tree(String deviceId); |
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
| @@ -365,9 +365,9 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage { | @@ -365,9 +365,9 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage { | ||
| 365 | } | 365 | } |
| 366 | 366 | ||
| 367 | @Override | 367 | @Override |
| 368 | - public PageInfo<DeviceChannel> querySubChannels(String deviceId, String parentChannelId, String query, Boolean hasSubChannel, String online, int page, int count) { | 368 | + public PageInfo<DeviceChannel> querySubChannels(String deviceId, String parentChannelId, String query, Boolean hasSubChannel, Boolean online, int page, int count) { |
| 369 | PageHelper.startPage(page, count); | 369 | PageHelper.startPage(page, count); |
| 370 | - List<DeviceChannel> all = deviceChannelMapper.queryChannels(deviceId, parentChannelId, null, null, null); | 370 | + List<DeviceChannel> all = deviceChannelMapper.queryChannels(deviceId, parentChannelId, query, hasSubChannel, online); |
| 371 | return new PageInfo<>(all); | 371 | return new PageInfo<>(all); |
| 372 | } | 372 | } |
| 373 | 373 |
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
| @@ -235,7 +235,7 @@ public class DeviceQuery { | @@ -235,7 +235,7 @@ public class DeviceQuery { | ||
| 235 | @ApiImplicitParam(name="page", value = "当前页", required = true, dataTypeClass = Integer.class), | 235 | @ApiImplicitParam(name="page", value = "当前页", required = true, dataTypeClass = Integer.class), |
| 236 | @ApiImplicitParam(name="count", value = "每页条数", required = true, dataTypeClass = Integer.class), | 236 | @ApiImplicitParam(name="count", value = "每页条数", required = true, dataTypeClass = Integer.class), |
| 237 | @ApiImplicitParam(name="query", value = "查询内容", dataTypeClass = String.class), | 237 | @ApiImplicitParam(name="query", value = "查询内容", dataTypeClass = String.class), |
| 238 | - @ApiImplicitParam(name="online", value = "是否在线", dataTypeClass = String.class), | 238 | + @ApiImplicitParam(name="online", value = "是否在线", dataTypeClass = Boolean.class), |
| 239 | @ApiImplicitParam(name="channelType", value = "通道类型, 子目录", dataTypeClass = Boolean.class), | 239 | @ApiImplicitParam(name="channelType", value = "通道类型, 子目录", dataTypeClass = Boolean.class), |
| 240 | }) | 240 | }) |
| 241 | @GetMapping("/sub_channels/{deviceId}/{channelId}/channels") | 241 | @GetMapping("/sub_channels/{deviceId}/{channelId}/channels") |
| @@ -244,7 +244,7 @@ public class DeviceQuery { | @@ -244,7 +244,7 @@ public class DeviceQuery { | ||
| 244 | int page, | 244 | int page, |
| 245 | int count, | 245 | int count, |
| 246 | @RequestParam(required = false) String query, | 246 | @RequestParam(required = false) String query, |
| 247 | - @RequestParam(required = false) String online, | 247 | + @RequestParam(required = false) Boolean online, |
| 248 | @RequestParam(required = false) Boolean channelType){ | 248 | @RequestParam(required = false) Boolean channelType){ |
| 249 | 249 | ||
| 250 | // if (logger.isDebugEnabled()) { | 250 | // if (logger.isDebugEnabled()) { |
web_src/index.html
| @@ -22,7 +22,7 @@ | @@ -22,7 +22,7 @@ | ||
| 22 | // 地图瓦片地址 | 22 | // 地图瓦片地址 |
| 23 | tilesUrl: "http://webrd0{1-4}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8", | 23 | tilesUrl: "http://webrd0{1-4}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8", |
| 24 | // 瓦片大小 | 24 | // 瓦片大小 |
| 25 | - tileSize: 512, | 25 | + tileSize: 256, |
| 26 | // 默认层级 | 26 | // 默认层级 |
| 27 | zoom:10, | 27 | zoom:10, |
| 28 | // 默认地图中心点 | 28 | // 默认地图中心点 |
web_src/src/components/UiHeader.vue
| @@ -10,6 +10,7 @@ | @@ -10,6 +10,7 @@ | ||
| 10 | <el-menu-item index="/cloudRecord">云端录像</el-menu-item> | 10 | <el-menu-item index="/cloudRecord">云端录像</el-menu-item> |
| 11 | <el-menu-item index="/mediaServerManger">节点管理</el-menu-item> | 11 | <el-menu-item index="/mediaServerManger">节点管理</el-menu-item> |
| 12 | <el-menu-item index="/parentPlatformList/15/1">国标级联</el-menu-item> | 12 | <el-menu-item index="/parentPlatformList/15/1">国标级联</el-menu-item> |
| 13 | + <el-menu-item index="/test">设备树</el-menu-item> | ||
| 13 | <el-menu-item @click="openDoc">在线文档</el-menu-item> | 14 | <el-menu-item @click="openDoc">在线文档</el-menu-item> |
| 14 | <!-- <el-submenu index="/setting">--> | 15 | <!-- <el-submenu index="/setting">--> |
| 15 | <!-- <template slot="title">系统设置</template>--> | 16 | <!-- <template slot="title">系统设置</template>--> |
web_src/src/components/common/DeviceTree.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div id="DeviceTree" style="width: 100%;height: 100%; background-color: #FFFFFF"> | ||
| 3 | + <el-container> | ||
| 4 | + <el-header>设备列表</el-header> | ||
| 5 | + <el-main style="background-color: #ffffff;"> | ||
| 6 | + <div class="device-tree-main-box"> | ||
| 7 | + <el-tree :props="defaultProps" :load="loadNode" lazy @node-click="handleNodeClick"@node-contextmenu="handleContextMenu"> | ||
| 8 | + <span class="custom-tree-node" slot-scope="{ node, data }" style="width: 100%"> | ||
| 9 | + <span v-if="node.data.type === 0 && node.data.online" title="在线设备" class="device-online iconfont icon-jiedianleizhukongzhongxin2"></span> | ||
| 10 | + <span v-if="node.data.type === 0 && !node.data.online " title="离线设备" class="device-offline iconfont icon-jiedianleizhukongzhongxin2"></span> | ||
| 11 | + <span v-if="node.data.type === 2 && node.data.online" title="目录" class="device-online iconfont icon-jiedianleilianjipingtai"></span> | ||
| 12 | + <span v-if="node.data.type === 2 && !node.data.online" title="目录" class="device-offline iconfont icon-jiedianleilianjipingtai"></span> | ||
| 13 | + <span v-if="node.data.type === 3 && node.data.online " title="在线通道" class="device-online iconfont icon-shebeileijiankongdian"></span> | ||
| 14 | + <span v-if="node.data.type === 3 && !node.data.online" title="在线通道" class="device-offline iconfont icon-shebeileijiankongdian"></span> | ||
| 15 | + <span v-if="node.data.type === 4 && node.data.online " title="在线通道-球机" class="device-online iconfont icon-shebeileiqiuji"></span> | ||
| 16 | + <span v-if="node.data.type === 4 && !node.data.online" title="在线通道-球机" class="device-offline iconfont icon-shebeileiqiuji"></span> | ||
| 17 | + <span v-if="node.data.type === 5 && node.data.online " title="在线通道-半球" class="device-online iconfont icon-shebeileibanqiu"></span> | ||
| 18 | + <span v-if="node.data.type === 5 && !node.data.online" title="在线通道-半球" class="device-offline iconfont icon-shebeileibanqiu"></span> | ||
| 19 | + <span v-if="node.data.type === 6 && node.data.online " title="在线通道-枪机" class="device-online iconfont icon-shebeileiqiangjitongdao"></span> | ||
| 20 | + <span v-if="node.data.type === 6 && !node.data.online" title="在线通道-枪机" class="device-offline iconfont icon-shebeileiqiangjitongdao"></span> | ||
| 21 | + <span v-if="node.data.online" style="padding-left: 1px" class="device-online">{{ node.label }}</span> | ||
| 22 | + <span v-if="!node.data.online" style="padding-left: 1px" class="device-offline">{{ node.label }}</span> | ||
| 23 | + <span> | ||
| 24 | + <i v-if="node.data.hasGPS && node.data.online" style="color: #9d9d9d" class="device-online iconfont icon-dizhi"></i> | ||
| 25 | + <i v-if="node.data.hasGPS && !node.data.online" style="color: #9d9d9d" class="device-offline iconfont icon-dizhi"></i> | ||
| 26 | + </span> | ||
| 27 | + </span> | ||
| 28 | + </el-tree> | ||
| 29 | + </div> | ||
| 30 | + </el-main> | ||
| 31 | + </el-container> | ||
| 32 | + </div> | ||
| 33 | +</template> | ||
| 34 | + | ||
| 35 | +<script> | ||
| 36 | +import DeviceService from "../service/DeviceService.js"; | ||
| 37 | + | ||
| 38 | +export default { | ||
| 39 | + name: 'DeviceTree', | ||
| 40 | + data() { | ||
| 41 | + return { | ||
| 42 | + deviceService: new DeviceService(), | ||
| 43 | + defaultProps: { | ||
| 44 | + children: 'children', | ||
| 45 | + label: 'name', | ||
| 46 | + isLeaf: 'isLeaf' | ||
| 47 | + } | ||
| 48 | + }; | ||
| 49 | + }, | ||
| 50 | + props: ['clickEvent', 'contextMenuEvent'], | ||
| 51 | + methods: { | ||
| 52 | + handleNodeClick(data) { | ||
| 53 | + console.log("点击事件") | ||
| 54 | + if(typeof (this.clickEvent) == "function") { | ||
| 55 | + this.clickEvent(data.userData) | ||
| 56 | + } | ||
| 57 | + }, | ||
| 58 | + handleContextMenu(data) { | ||
| 59 | + console.log("右键点击事件") | ||
| 60 | + if(typeof (this.contextMenuEvent) == "function") { | ||
| 61 | + this.contextMenuEvent(data.userData) | ||
| 62 | + } | ||
| 63 | + }, | ||
| 64 | + loadNode: function(node, resolve){ | ||
| 65 | + if (node.level === 0) { | ||
| 66 | + this.deviceService.getAllDeviceList((data)=>{ | ||
| 67 | + console.log(data) | ||
| 68 | + if (data.length > 0) { | ||
| 69 | + let nodeList = [] | ||
| 70 | + for (let i = 0; i < data.length; i++) { | ||
| 71 | + console.log(data[i].name) | ||
| 72 | + let node = { | ||
| 73 | + name: data[i].name || data[i].deviceId, | ||
| 74 | + isLeaf: false, | ||
| 75 | + id: data[i].deviceId, | ||
| 76 | + type: data[i].online, | ||
| 77 | + online: data[i].online === 1, | ||
| 78 | + userData: data[i] | ||
| 79 | + } | ||
| 80 | + nodeList.push(node); | ||
| 81 | + } | ||
| 82 | + resolve(nodeList) | ||
| 83 | + }else { | ||
| 84 | + resolve([]) | ||
| 85 | + } | ||
| 86 | + }, (error)=>{ | ||
| 87 | + | ||
| 88 | + }) | ||
| 89 | + } | ||
| 90 | + if (node.level === 1) { | ||
| 91 | + this.deviceService.getAllChannel(true, node.data.id, (catalogData) => { | ||
| 92 | + this.deviceService.getAllChannel(false, node.data.id, (channelData) => { | ||
| 93 | + let data = catalogData.concat(channelData) | ||
| 94 | + this.channelDataHandler(data, resolve) | ||
| 95 | + }) | ||
| 96 | + }) | ||
| 97 | + }else if (node.level > 1){ | ||
| 98 | + this.deviceService.getAllSubChannel(true, node.data.deviceId, node.data.id, (catalogData)=>{ | ||
| 99 | + this.deviceService.getAllSubChannel(false, node.data.deviceId, node.data.id, (channelData)=>{ | ||
| 100 | + let data = catalogData.concat(channelData) | ||
| 101 | + this.channelDataHandler(data, resolve) | ||
| 102 | + }) | ||
| 103 | + }) | ||
| 104 | + } | ||
| 105 | + }, | ||
| 106 | + channelDataHandler: function (data, resolve) { | ||
| 107 | + if (data.length > 0) { | ||
| 108 | + let nodeList = [] | ||
| 109 | + for (let i = 0; i < data.length; i++) { | ||
| 110 | + let type = 3; | ||
| 111 | + if (data[i].subCount > 0) { | ||
| 112 | + type = 2; | ||
| 113 | + }else if (data[i].ptztype === 1 ) { // 1-球机;2-半球;3-固定枪机;4-遥控枪机 | ||
| 114 | + type = 4; | ||
| 115 | + }else if (data[i].ptztype === 2) { | ||
| 116 | + type = 5; | ||
| 117 | + }else if (data[i].ptztype === 3 || data[i].ptztype === 4) { | ||
| 118 | + type = 6; | ||
| 119 | + } | ||
| 120 | + let node = { | ||
| 121 | + name: data[i].name || data[i].channelId, | ||
| 122 | + isLeaf: data[i].subCount === 0, | ||
| 123 | + id: data[i].channelId, | ||
| 124 | + deviceId: data[i].deviceId, | ||
| 125 | + type: type, | ||
| 126 | + online: data[i].status === 1, | ||
| 127 | + hasGPS: data[i].longitude*data[i].latitude !== 0, | ||
| 128 | + userData: data[i] | ||
| 129 | + } | ||
| 130 | + nodeList.push(node); | ||
| 131 | + } | ||
| 132 | + resolve(nodeList) | ||
| 133 | + }else { | ||
| 134 | + resolve([]) | ||
| 135 | + } | ||
| 136 | + } | ||
| 137 | + }, | ||
| 138 | + destroyed() { | ||
| 139 | + // if (this.jessibuca) { | ||
| 140 | + // this.jessibuca.destroy(); | ||
| 141 | + // } | ||
| 142 | + // this.playing = false; | ||
| 143 | + // this.loaded = false; | ||
| 144 | + // this.performance = ""; | ||
| 145 | + }, | ||
| 146 | +} | ||
| 147 | +</script> | ||
| 148 | + | ||
| 149 | +<style> | ||
| 150 | +.device-tree-main-box{ | ||
| 151 | + text-align: left; | ||
| 152 | +} | ||
| 153 | +.device-online{ | ||
| 154 | + color: #252525; | ||
| 155 | +} | ||
| 156 | +.device-offline{ | ||
| 157 | + color: #727272; | ||
| 158 | +} | ||
| 159 | +</style> |
web_src/src/components/service/DeviceService.js
| @@ -46,21 +46,21 @@ class DeviceService{ | @@ -46,21 +46,21 @@ class DeviceService{ | ||
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | 48 | ||
| 49 | - getAllCatalog(deviceId, callback, errorCallback) { | 49 | + getAllChannel(isCatalog, deviceId, callback, errorCallback) { |
| 50 | let currentPage = 1; | 50 | let currentPage = 1; |
| 51 | let count = 100; | 51 | let count = 100; |
| 52 | let catalogList = [] | 52 | let catalogList = [] |
| 53 | - this.getAllCatalogIteration(deviceId, catalogList, currentPage, count, callback, errorCallback) | 53 | + this.getAllChannelIteration(isCatalog, deviceId, catalogList, currentPage, count, callback, errorCallback) |
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | - getAllCatalogIteration(deviceId, catalogList, currentPage, count, callback, errorCallback) { | ||
| 57 | - this.getCatalog(deviceId, currentPage, count, (data) => { | 56 | + getAllChannelIteration(isCatalog, deviceId, catalogList, currentPage, count, callback, errorCallback) { |
| 57 | + this.getChanel(isCatalog, deviceId, currentPage, count, (data) => { | ||
| 58 | console.log(data) | 58 | console.log(data) |
| 59 | if (data.list) { | 59 | if (data.list) { |
| 60 | catalogList = catalogList.concat(data.list); | 60 | catalogList = catalogList.concat(data.list); |
| 61 | if (catalogList.length < data.total) { | 61 | if (catalogList.length < data.total) { |
| 62 | currentPage ++ | 62 | currentPage ++ |
| 63 | - this.getAllCatalogIteration(deviceId, catalogList, currentPage, count, callback, errorCallback) | 63 | + this.getAllChannelIteration(isCatalog, deviceId, catalogList, currentPage, count, callback, errorCallback) |
| 64 | }else { | 64 | }else { |
| 65 | console.log(2222) | 65 | console.log(2222) |
| 66 | if (typeof (callback) == "function") callback(catalogList) | 66 | if (typeof (callback) == "function") callback(catalogList) |
| @@ -68,7 +68,7 @@ class DeviceService{ | @@ -68,7 +68,7 @@ class DeviceService{ | ||
| 68 | } | 68 | } |
| 69 | }, errorCallback) | 69 | }, errorCallback) |
| 70 | } | 70 | } |
| 71 | - getCatalog(deviceId, currentPage, count, callback, errorCallback) { | 71 | + getChanel(isCatalog, deviceId, currentPage, count, callback, errorCallback) { |
| 72 | this.$axios({ | 72 | this.$axios({ |
| 73 | method: 'get', | 73 | method: 'get', |
| 74 | url: `/api/device/query/devices/${deviceId}/channels`, | 74 | url: `/api/device/query/devices/${deviceId}/channels`, |
| @@ -77,7 +77,7 @@ class DeviceService{ | @@ -77,7 +77,7 @@ class DeviceService{ | ||
| 77 | count: count, | 77 | count: count, |
| 78 | query: "", | 78 | query: "", |
| 79 | online: "", | 79 | online: "", |
| 80 | - channelType: true | 80 | + channelType: isCatalog |
| 81 | } | 81 | } |
| 82 | }).then((res) =>{ | 82 | }).then((res) =>{ |
| 83 | if (typeof (callback) == "function") callback(res.data) | 83 | if (typeof (callback) == "function") callback(res.data) |
| @@ -85,29 +85,28 @@ class DeviceService{ | @@ -85,29 +85,28 @@ class DeviceService{ | ||
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | 87 | ||
| 88 | - getAllSubCatalog(deviceId, channelId, callback, errorCallback) { | 88 | + getAllSubChannel(isCatalog, deviceId, channelId, callback, errorCallback) { |
| 89 | let currentPage = 1; | 89 | let currentPage = 1; |
| 90 | let count = 100; | 90 | let count = 100; |
| 91 | let catalogList = [] | 91 | let catalogList = [] |
| 92 | - this.getAllSubCatalogIteration(deviceId, channelId, catalogList, currentPage, count, callback, errorCallback) | 92 | + this.getAllSubChannelIteration(isCatalog, deviceId, channelId, catalogList, currentPage, count, callback, errorCallback) |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | - getAllSubCatalogIteration(deviceId,channelId, catalogList, currentPage, count, callback, errorCallback) { | ||
| 96 | - this.getSubCatalog(deviceId, channelId, currentPage, count, (data) => { | 95 | + getAllSubChannelIteration(isCatalog, deviceId,channelId, catalogList, currentPage, count, callback, errorCallback) { |
| 96 | + this.getSubChannel(isCatalog, deviceId, channelId, currentPage, count, (data) => { | ||
| 97 | console.log(data) | 97 | console.log(data) |
| 98 | if (data.list) { | 98 | if (data.list) { |
| 99 | catalogList = catalogList.concat(data.list); | 99 | catalogList = catalogList.concat(data.list); |
| 100 | if (catalogList.length < data.total) { | 100 | if (catalogList.length < data.total) { |
| 101 | currentPage ++ | 101 | currentPage ++ |
| 102 | - this.getAllSubCatalogIteration(deviceId, channelId, catalogList, currentPage, count, callback, errorCallback) | 102 | + this.getAllSubChannelIteration(isCatalog, deviceId, channelId, catalogList, currentPage, count, callback, errorCallback) |
| 103 | }else { | 103 | }else { |
| 104 | - console.log(2222) | ||
| 105 | if (typeof (callback) == "function") callback(catalogList) | 104 | if (typeof (callback) == "function") callback(catalogList) |
| 106 | } | 105 | } |
| 107 | } | 106 | } |
| 108 | }, errorCallback) | 107 | }, errorCallback) |
| 109 | } | 108 | } |
| 110 | - getSubCatalog(deviceId, channelId, currentPage, count, callback, errorCallback) { | 109 | + getSubChannel(isCatalog, deviceId, channelId, currentPage, count, callback, errorCallback) { |
| 111 | this.$axios({ | 110 | this.$axios({ |
| 112 | method: 'get', | 111 | method: 'get', |
| 113 | url: `/api/device/query/sub_channels/${deviceId}/${channelId}/channels`, | 112 | url: `/api/device/query/sub_channels/${deviceId}/${channelId}/channels`, |
| @@ -116,12 +115,22 @@ class DeviceService{ | @@ -116,12 +115,22 @@ class DeviceService{ | ||
| 116 | count: count, | 115 | count: count, |
| 117 | query: "", | 116 | query: "", |
| 118 | online: "", | 117 | online: "", |
| 119 | - channelType: true | 118 | + channelType: isCatalog |
| 120 | } | 119 | } |
| 121 | }).then((res) =>{ | 120 | }).then((res) =>{ |
| 122 | if (typeof (callback) == "function") callback(res.data) | 121 | if (typeof (callback) == "function") callback(res.data) |
| 123 | }).catch(errorCallback); | 122 | }).catch(errorCallback); |
| 124 | } | 123 | } |
| 124 | + getDeviceTree(deviceId, callback, errorCallback){ | ||
| 125 | + this.$axios({ | ||
| 126 | + method: 'get', | ||
| 127 | + url: `/api/device/query/${deviceId}/tree`, | ||
| 128 | + params:{} | ||
| 129 | + }).then((res) =>{ | ||
| 130 | + console.log(res.data) | ||
| 131 | + if (typeof (callback) == "function") callback(res.data.data) | ||
| 132 | + }).catch(errorCallback); | ||
| 133 | + } | ||
| 125 | } | 134 | } |
| 126 | 135 | ||
| 127 | export default DeviceService; | 136 | export default DeviceService; |
web_src/src/router/index.js
| @@ -15,6 +15,7 @@ import web from '../components/setting/Web.vue' | @@ -15,6 +15,7 @@ import web from '../components/setting/Web.vue' | ||
| 15 | import sip from '../components/setting/Sip.vue' | 15 | import sip from '../components/setting/Sip.vue' |
| 16 | import media from '../components/setting/Media.vue' | 16 | import media from '../components/setting/Media.vue' |
| 17 | import live from '../components/live.vue' | 17 | import live from '../components/live.vue' |
| 18 | +import deviceTree from '../components/common/DeviceTree.vue' | ||
| 18 | 19 | ||
| 19 | import wasmPlayer from '../components/common/jessibuca.vue' | 20 | import wasmPlayer from '../components/common/jessibuca.vue' |
| 20 | import rtcPlayer from '../components/dialog/rtcPlayer.vue' | 21 | import rtcPlayer from '../components/dialog/rtcPlayer.vue' |
| @@ -115,5 +116,10 @@ export default new VueRouter({ | @@ -115,5 +116,10 @@ export default new VueRouter({ | ||
| 115 | name: 'rtcPlayer', | 116 | name: 'rtcPlayer', |
| 116 | component: rtcPlayer, | 117 | component: rtcPlayer, |
| 117 | }, | 118 | }, |
| 119 | + { | ||
| 120 | + path: '/test', | ||
| 121 | + name: 'deviceTree', | ||
| 122 | + component: deviceTree, | ||
| 123 | + }, | ||
| 118 | ] | 124 | ] |
| 119 | }) | 125 | }) |
web_src/static/css/iconfont.css
| 1 | @font-face { | 1 | @font-face { |
| 2 | font-family: "iconfont"; /* Project id 1291092 */ | 2 | font-family: "iconfont"; /* Project id 1291092 */ |
| 3 | - src: url('iconfont.woff2?t=1647245982270') format('woff2'), | ||
| 4 | - url('iconfont.woff?t=1647245982270') format('woff'), | ||
| 5 | - url('iconfont.ttf?t=1647245982270') format('truetype'); | 3 | + src: url('iconfont.woff2?t=1650436696596') format('woff2'); |
| 6 | } | 4 | } |
| 7 | 5 | ||
| 8 | .iconfont { | 6 | .iconfont { |
| @@ -13,6 +11,50 @@ | @@ -13,6 +11,50 @@ | ||
| 13 | -moz-osx-font-smoothing: grayscale; | 11 | -moz-osx-font-smoothing: grayscale; |
| 14 | } | 12 | } |
| 15 | 13 | ||
| 14 | +.icon-jiedianleizhukongzhongxin1:before { | ||
| 15 | + content: "\e9d0"; | ||
| 16 | +} | ||
| 17 | + | ||
| 18 | +.icon-jiedianleizhukongzhongxin2:before { | ||
| 19 | + content: "\e9d1"; | ||
| 20 | +} | ||
| 21 | + | ||
| 22 | +.icon-jiedianleilianjipingtai:before { | ||
| 23 | + content: "\e9d3"; | ||
| 24 | +} | ||
| 25 | + | ||
| 26 | +.icon-jiedianleiquyu:before { | ||
| 27 | + content: "\e9d4"; | ||
| 28 | +} | ||
| 29 | + | ||
| 30 | +.icon-shebeileigis:before { | ||
| 31 | + content: "\e9ec"; | ||
| 32 | +} | ||
| 33 | + | ||
| 34 | +.icon-shebeileibanqiu:before { | ||
| 35 | + content: "\e9f5"; | ||
| 36 | +} | ||
| 37 | + | ||
| 38 | +.icon-shebeileibanqiugis:before { | ||
| 39 | + content: "\e9f6"; | ||
| 40 | +} | ||
| 41 | + | ||
| 42 | +.icon-shebeileijiankongdian:before { | ||
| 43 | + content: "\ea07"; | ||
| 44 | +} | ||
| 45 | + | ||
| 46 | +.icon-shebeileiqiangjitongdao:before { | ||
| 47 | + content: "\ea15"; | ||
| 48 | +} | ||
| 49 | + | ||
| 50 | +.icon-shebeileiqiuji:before { | ||
| 51 | + content: "\ea17"; | ||
| 52 | +} | ||
| 53 | + | ||
| 54 | +.icon-shebeileiqiujigis:before { | ||
| 55 | + content: "\ea18"; | ||
| 56 | +} | ||
| 57 | + | ||
| 16 | .icon-xitongxinxi:before { | 58 | .icon-xitongxinxi:before { |
| 17 | content: "\e7d6"; | 59 | content: "\e7d6"; |
| 18 | } | 60 | } |
web_src/static/css/iconfont.woff2
No preview for this file type