From 186dee8db959e83a753785290c4a02e681a6a109 Mon Sep 17 00:00:00 2001 From: ZZJ <zzjdsg2300@163.com> Date: 星期一, 10 一月 2022 18:10:46 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/web/vue-smart-ai --- src/pages/gb28181/index/App.vue | 1183 ++++++++++++++++++++++++++++++---------------------------- 1 files changed, 616 insertions(+), 567 deletions(-) diff --git a/src/pages/gb28181/index/App.vue b/src/pages/gb28181/index/App.vue index 3b6935b..498d79b 100644 --- a/src/pages/gb28181/index/App.vue +++ b/src/pages/gb28181/index/App.vue @@ -1,567 +1,616 @@ -<template> - <div class="s-basic-setting"> - <el-menu - :default-openeds="openeds" - background-color="#fff" - text-color="#303133" - active-text-color="#409EFF" - style="height: 100%;" - class="menu-css" - @open="menuOpen" - @close="menuClose" - > - <el-submenu index="0"> - <template slot="title"> - <b class="tree-font">鍥介檯ID</b> - </template> - <el-menu-item-group class="item-group"> - <!-- GB28181璁剧疆 --> - <el-form - :model="gb28181" - :rules="rules" - label-width="130px" - class="alarmSetting" - ref="gb28181" - > - <!-- <el-form-item label="鍥介檯鏈嶅姟鍣↖P" prop="ServerIp"> - <ip-input :ip="gb28181.ServerIp" @on-blur="gb28181.ServerIp = arguments[0]"></ip-input> - </el-form-item>--> - - <div style="text-align: left;margin-bottom: 16px;"> - <el-radio-group v-model="gb28181.idType"> - <el-radio :label="0">杈撳叆宸叉湁ID</el-radio> - <el-radio :label="1">鐢熸垚鏂扮殑ID</el-radio> - </el-radio-group> - </div> - - <el-form-item label="鎵�鍦ㄥ湴"> - <el-select - v-model="locationCity.province" - @change="changeProvince" - size="small" - placeholder="璇烽�夋嫨鐪佷唤" - > - <el-option - v-for="item in locationCity.provinceOptions" - :key="item.id" - :label="item.name" - size="small" - :value="item.id" - ></el-option> - </el-select> - <el-select - class="ml10 mr10" - v-model="locationCity.city" - :disabled="!locationCity.province" - @change="changeCity" - size="small" - placeholder="璇烽�夋嫨鍩庡競" - > - <el-option - v-for="item in locationCity.cityOptions" - :key="item.id" - :label="item.name" - :value="item.id" - ></el-option> - </el-select> - <el-select - v-model="locationCity.county" - :disabled="!locationCity.city" - size="small" - placeholder="璇烽�夋嫨鍖哄幙" - > - <el-option - v-for="item in locationCity.countyOptions" - :key="item.id" - :label="item.name" - :value="item.id" - ></el-option> - </el-select> - <el-button - type="text" - style="position: absolute" - v-show="gb28181.idType === 1" - @click="newGBID" - >鐢熸垚ID</el-button - > - </el-form-item> - - <!-- <el-form-item label="鍥介檯鏈嶅姟鍣ㄧ鍙�" prop="GbServerPort"> - <el-input v-model.number="gb28181.ServerPort" placeholder="璇疯緭鍏�" size="small"></el-input> - </el-form-item>--> - - <el-form-item label="鍥芥爣ID"> - <el-input - v-model="gb28181.PublicId" - placeholder="璇疯緭鍏�" - size="small" - ></el-input> - </el-form-item> - - <el-form-item label="鍥芥爣绔彛" prop="ServerPort"> - <el-input - v-model.number="gb28181.GbServerPort" - placeholder="璇疯緭鍏�" - size="small" - ></el-input> - </el-form-item> - - <el-form-item label="寮�鍚壌鏉�"> - <el-switch v-model="gb28181.IsAuth"></el-switch> - </el-form-item> - - <el-form-item label="閴存潈瀵嗙爜" v-show="gb28181.IsAuth"> - <el-input - v-model="gb28181.Password" - placeholder="璇疯緭鍏�" - size="small" - ></el-input> - </el-form-item> - - <el-form-item> - <el-button type="primary" @click="submitGB28281" size="small" - >淇濆瓨</el-button - > - </el-form-item> - </el-form> - </el-menu-item-group> - </el-submenu> - <el-submenu index="1"> - <template slot="title"> - <b class="tree-font">鎺ュ叆骞冲彴鍒楄〃</b> - </template> - <el-menu-item-group class="item-group"> - <div> - <el-table - :data="tableList" - border - fit - highlight-current-row - style="width: 100%; color:#000" - :header-cell-style="{ background: '#f8f8f8', color: '#222222', height:'30px' }" - > - <el-table-column - type="index" - label="搴忓彿" - align="center" - width="50" - ></el-table-column> - <el-table-column - prop="name" - label="鍚嶇О" - align="center" - ></el-table-column> - <el-table-column - prop="id" - label="ID" - align="center" - ></el-table-column> - <el-table-column - prop="ip" - label="IP" - align="center" - ></el-table-column> - <el-table-column - prop="status" - label="鐘舵��" - align="center" - ></el-table-column> - <el-table-column - prop="mark" - label="澶囨敞" - align="center" - ></el-table-column> - </el-table> - </div> - </el-menu-item-group> - </el-submenu> - <el-submenu index="2"> - <template slot="title"> - <b class="tree-font">鍥介檯鎽勫儚鏈�</b> - </template> - <el-menu-item-group class="item-group"> - <div> - <div> - <el-button type="primary" size="small">鍒锋柊</el-button> - </div> - </div> - </el-menu-item-group> - </el-submenu> - </el-menu> - </div> -</template> - -<script> -import { - getGB28181Config, - saveGB28181Config, - getGb28181AreaList, - newGb28181ID -} from './api' - -import { isPort, isIPv4 } from '@/scripts/validate' - -export default { - name: 'Gb28181Setting', - directives: { - focus: { - inserted: function(el) { - el.querySelector('input').focus() - } - } - }, - data() { - return { - openeds: ['0'], - gb28181: {}, - tableList: [], - idType: 1, - rules: { - ip: [ - { - required: true, - message: '璇疯緭鍏P鍦板潃', - trigger: 'change' - }, - { validator: isIPv4, trigger: 'change' } - ], - ServerIp: [ - { - required: true, - message: '璇疯緭鍏P鍦板潃', - trigger: 'change' - }, - { validator: isIPv4, trigger: 'change' } - ], - ServerPort: [ - { - required: true, - message: '璇疯緭鍏ョ鍙�', - trigger: 'change' - }, - { validator: isPort, trigger: 'change' } - ], - GbServerPort: [ - { - required: true, - message: '璇疯緭鍏ョ鍙�', - trigger: 'change' - }, - { validator: isPort, trigger: 'change' } - ] - }, - locationCity: { - province: '', - city: '', - county: '', - provinceOptions: [], - cityOptions: [], - countyOptions: [] - } - } - }, - mounted() { - //this.$nextTick(()=>{ - this.initGB28181Conf() - //}) - }, - methods: { - initGB28181Conf() { - getGB28181Config().then(rsp => { - if (rsp && rsp.success) { - this.gb28181 = rsp.data - //this.gb28181.idType = 0; - this.$set(this.gb28181, 'idType', 0) - } - }) - getGb28181AreaList().then(rsp => { - if (rsp && rsp.success) { - this.locationCity.provinceOptions = rsp.data - } - }) - }, - submitGB28281() { - this.$refs['gb28181'].validate(valid => { - if (valid) { - saveGB28181Config(this.gb28181).then(rsp => { - if (rsp && rsp.success) { - this.$notify({ - type: 'success', - message: 'GB28181璁剧疆淇濆瓨鎴愬姛' - }) - } - }) - } else { - console.log('error submit!!') - return false - } - }) - }, - changeProvince() { - let pid = this.locationCity.province - getGb28181AreaList({ parentId: pid }).then(rsp => { - if (rsp && rsp.success) { - this.locationCity.cityOptions = rsp.data - this.locationCity.city = this.locationCity.cityOptions[0].id - this.changeCity() - } - }) - }, - changeCity() { - let pid = this.locationCity.city - getGb28181AreaList({ parentId: pid }).then(rsp => { - if (rsp && rsp.success) { - this.locationCity.countyOptions = rsp.data - this.locationCity.county = this.locationCity.countyOptions[0].id - } - }) - }, - newGBID() { - let cCode = this.locationCity.county + '' - newGb28181ID({ code: cCode }).then(rsp => { - if (rsp && rsp.success) { - this.gb28181.PublicId = rsp.data - } - }) - }, - menuOpen(){ - - } - } -} -</script> -<style lang="scss"> -.s-basic-setting { - height: 100%; - padding: 20px; - box-sizing: border-box; - .item-group { - padding: 0 15px; - margin-bottom: 15px; - } - .el-form { - .el-form-item { - text-align: left; - margin-bottom: 16px; - &:last-of-type { - width: 490px; - } - .el-button { - float: right; - } - .el-select { - margin-right: 10px; - } - .el-form-item__content { - text-align: left; - input { - max-width: 360px; - } - .el-date-editor.el-input, - .el-date-editor.el-input__inner { - width: 216px; - } - .el-checkbox__label { - padding-left: 5px; - } - } - - .el-form-item__label { - text-align: left; - } - &.el-form-item.is-required:not(.is-no-asterisk) - > .el-form-item__label:before { - margin-left: -9px; - } - } - } - .alarmSetting { - .el-input { - width: 100%; - // padding-right: 10px; - } - .el-select { - max-width: 113px; - } - .el-slider { - width: calc(100% - 120px); - display: inline-block; - padding-right: 30px; - box-sizing: border-box; - vertical-align: middle; - } - .el-input-number { - width: 100px; - display: inline-block; - .el-input { - width: 100%; - } - } - } - - .time-type { - height: 25px; - width: 413px; - line-height: 28px; - padding: 3px 23px; - font-size: 14px; - font-weight: 600; - background-color: #e4e6ed; - } - #e-basic-setting { - .el-tabs__header { - border: 0px solid #dcdfe6; - .el-tabs__item { - padding: 5px 50px; - height: 50px; - font-family: PingFangSC-Regular; - font-size: 14px; - color: #222222; - text-align: center; - border: 0px solid transparent; - } - .el-tabs__item:nth-child(2) { - padding-left: 50px; - } - .el-tabs__item:last-child { - padding-right: 50px; - } - .el-tabs__item.is-active { - color: #ff7733; - font-weight: bold; - // border-right-color: #fff; - // border-left-color: #fff; - } - .el-tabs__item:not(.is-disabled):hover { - color: #ff7733; - } - } - .el-tabs__active-bar { - background-color: #ff7733; - } - .xiangqin-label { - text-align: left; - width: 85px; - font-size: 14px; - line-height: 30px; - } - .xiangqing-info { - text-align: left; - font-size: 14px; - line-height: 30px; - } - } - - #cut_min_duration { - .el-slider__bar { - background-color: #3d68e1; - } - .el-slider__button { - width: 10px; - height: 10px; - border: 4px solid #3d68e1; - } - } - - #cut_max_duration { - .el-slider__bar { - background-color: #ff9e6e; - } - .el-slider__button { - width: 10px; - height: 10px; - border: 4px solid #ff9e6e; - } - } - .menu-css, - .el-menu { - border-right: none; - list-style: none; - position: relative; - margin: 0; - padding-left: 0; - background-color: #ffffff; - .el-submenu__title { - height: 35px; - line-height: 35px; - font-size: 14px; - color: #303133; - padding: 0 20px; - list-style: none; - cursor: pointer; - position: relative; - -webkit-transition: border-color 0.3s, background-color 0.3s, color 0.3s; - transition: border-color 0.3s, background-color 0.3s, color 0.3s; - -webkit-box-sizing: border-box; - box-sizing: border-box; - white-space: nowrap; - } - .tree-font { - font-family: PingFangSC-Medium; - font-size: 14px; - color: #222222; - text-align: left; - } - li { - text-align: left; - .el-submenu__title { - // border-bottom: solid 1px #e6e6e6; - padding-left: 10px !important; - background-color: #e4e6ed !important; - border-radius: 2px; - .el-submenu__icon-arrow { - position: absolute; - top: 50%; - right: auto; - left: 135px; - margin-top: -7px; - -webkit-transition: -webkit-transform 0.3s; - transition: -webkit-transform 0.3s; - transition: transform 0.3s; - transition: transform 0.3s, -webkit-transform 0.3s; - font-size: 12px; - } - } - } - } - .save-btn { - text-align: right; - position: relative; - right: 40px; - } -} -</style> -<style lang="scss" scoped> -.menu-css, -.el-menu { - border-right: none; - list-style: none; - position: relative; - margin: 0; - padding-left: 0; - background-color: #ffffff; - - .tree-font { - font-family: PingFangSC-Medium; - font-size: 14px; - color: #222222; - text-align: left; - } - li { - text-align: left; - .el-submenu__title { - .el-submenu__icon-arrow { - position: absolute; - top: 50%; - right: 0; - margin-top: -7px; - -webkit-transition: -webkit-transform 0.3s; - transition: -webkit-transform 0.3s; - transition: transform 0.3s; - transition: transform 0.3s, -webkit-transform 0.3s; - font-size: 12px; - } - } - } -} -</style> +<template> + <div class="s-system-manage"> + <div class="s-basic-setting"> + <el-tabs + id="e-basic-setting" + v-model="activeName" + v-loading="loading" + :element-loading-text="loadingText" + type="border-card" + @tab-click="hanleTabClick" + > + <el-tab-pane label="鍥芥爣鏈嶅姟" name="gb28181"> + <div style="width: 775px"> + <!-- GB28181璁剧疆 --> + <el-form :model="gb28181" :rules="rules" label-width="130px" class="alarmSetting" ref="gb28181"> + <!-- <el-form-item label="鍥介檯鏈嶅姟鍣↖P" prop="ServerIp"> + <ip-input :ip="gb28181.ServerIp" @on-blur="gb28181.ServerIp = arguments[0]"></ip-input> + </el-form-item>--> + + <div style="text-align: left;margin-bottom: 16px;"> + <el-radio-group v-model="gb28181.idType"> + <el-radio :label="0">杈撳叆宸叉湁ID</el-radio> + <el-radio :label="1">鐢熸垚鏂扮殑ID</el-radio> + </el-radio-group> + </div> + + <el-form-item label="鎵�鍦ㄥ湴"> + <el-select + v-model="locationCity.province" + @change="changeProvince" + size="small" + placeholder="璇烽�夋嫨鐪佷唤" + :disabled="gb28181.idType === 0" + > + <el-option + v-for="item in locationCity.provinceOptions" + :key="item.id" + :label="item.name" + size="small" + :value="item.id" + ></el-option> + </el-select> + <el-select + class="ml10 mr10" + v-model="locationCity.city" + :disabled="!locationCity.province" + @change="changeCity" + size="small" + placeholder="璇烽�夋嫨鍩庡競" + > + <el-option + v-for="item in locationCity.cityOptions" + :key="item.id" + :label="item.name" + :value="item.id" + ></el-option> + </el-select> + <el-select + v-model="locationCity.county" + :disabled="!locationCity.city" + size="small" + placeholder="璇烽�夋嫨鍖哄幙" + > + <el-option + v-for="item in locationCity.countyOptions" + :key="item.id" + :label="item.name" + :value="item.id" + ></el-option> + </el-select> + <el-button type="text" style="position: absolute" v-show="gb28181.idType === 1" @click="newGBID" + >鐢熸垚ID</el-button + > + </el-form-item> + + <!-- <el-form-item label="鍥介檯鏈嶅姟鍣ㄧ鍙�" prop="GbServerPort"> + <el-input v-model.number="gb28181.ServerPort" placeholder="璇疯緭鍏�" size="small"></el-input> + </el-form-item>--> + + <el-form-item label="鍥芥爣ID"> + <el-input + v-model="gb28181.PublicId" + placeholder="璇疯緭鍏�" + size="small" + :disabled="gb28181.idType === 1" + ></el-input> + </el-form-item> + + <el-form-item label="鍥芥爣绔彛" prop="GbServerPort"> + <el-input v-model.number="gb28181.GbServerPort" placeholder="璇疯緭鍏�" size="small"></el-input> + </el-form-item> + + <el-form-item label="寮�鍚壌鏉�" style="text-align: left"> + <el-switch v-model="gb28181.IsAuth"></el-switch> + </el-form-item> + + <el-form-item label="閴存潈瀵嗙爜"> + <el-input + v-model="gb28181.Password" + placeholder="璇疯緭鍏�" + size="small" + :disabled="!gb28181.IsAuth" + ></el-input> + </el-form-item> + + <el-form-item style="float: right"> + <el-button type="primary" @click="submitGB28281" size="small">淇濆瓨</el-button> + </el-form-item> + </el-form> + </div> + </el-tab-pane> + + <el-tab-pane label="鎺ュ叆骞冲彴鍒楄〃" name="subordinates"> + <el-table + :data="subDevTable" + border + fit + highlight-current-row + style="width: 100%; color:#000" + :header-cell-style="{ background: '#f8f8f8', color: '#222222', height: '30px' }" + > + <el-table-column type="index" label="搴忓彿" align="center" width="50"></el-table-column> + <el-table-column prop="name" label="鍚嶇О" align="center"></el-table-column> + <el-table-column prop="publicid" label="ID" align="center"></el-table-column> + <el-table-column prop="ip" label="IP" align="center"></el-table-column> + <el-table-column prop="status" label="鐘舵��" align="center"> + <template slot-scope="scope"> + <span :style="scope.row.alive ? `color:#047d19` : 'color:#f11a1a;'">{{ + scope.row.alive ? "鍦ㄧ嚎" : "绂荤嚎" + }}</span> + </template> + </el-table-column> + <el-table-column prop="corp" label="澶囨敞" align="center"></el-table-column> + </el-table> + </el-tab-pane> + <el-tab-pane label="鍥芥爣鎽勫儚鏈�" name="cameras"> + <div style="text-align:left"> + <el-button type="primary" size="small" @click="updateCamerasFromVideosvr">鍒锋柊</el-button> + </div> + + <div class="tree-container"> + <div class="tree-box"> + <div class="camera-title"> + <b>鍥芥爣鎽勫儚鏈�</b> + </div> + <tree-menu + ref="ztree" + app="gb28181" + treeName="localTree" + clickType="multiple" + :node="TreeDataPool.treeData" + :height="treeHeight" + :setting="treeSettings" + @itemChecked="onItemCheck" + search + style="width:500px;min-height:500px" + /> + </div> + + <div class="tree-box"> + <div class="camera-title"> + <b>宸查�夋憚鍍忔満</b> + <span>(鏈�澶氬嬀閫�500璺憚鍍忔満)</span> + </div> + <!-- <tree-menu + ref="dstTree" + treeName="localTree" + :node="dstTreeData" + :height="treeHeight" + :setting="treeSettingsSelect" + style="width:500px;min-height:500px" + /> --> + <div class="select-tree-menu" :style="`max-height:${750 - 200}px;`"> + <z-tree :nodes="dstTreeData" :show-checkbox="false" :gb28181="true" search /> + </div> + </div> + + <div class="base-image" v-loading="TreeDataPool.baseImageLoading"> + <span>{{ TreeDataPool.cameraNameForBaseImage }}</span> + <div class="camera-image" v-show="TreeDataPool.cameraNameForBaseImage.length"> + <img :src="'data:image/png;base64,' + TreeDataPool.gb28181CameraBaseImage" width="450px" alt /> + </div> + </div> + </div> + + <el-divider></el-divider> + + <span class="camera-seleted-text"> + 宸查�夋嫨 ( + <b>{{ TreeDataPool.gb28181CheckedCount }}</b> + / {{ TreeDataPool.gb28181ChildNodeCount }} ) 璺� + </span> + + <el-button type="primary" size="small" @click="saveChecked">淇濆瓨</el-button> + </el-tab-pane> + </el-tabs> + </div> + </div> +</template> + +<script> +import { + getGB28181Config, + saveGB28181Config, + getGb28181AreaList, + newGb28181ID, + getAllSubServer, + saveGb28181CamTree +} from "./api" + +import TreeMenu from "@/components/giantTree/index" +import { isPort, isIPv4 } from "@/scripts/validate" +import ZTree from "@/components/giantTree/zTree/ztree" + +export default { + name: "Gb28181Setting", + components: { + TreeMenu, + ZTree + }, + directives: { + focus: { + inserted: function(el) { + el.querySelector("input").focus() + } + } + }, + + data() { + return { + activeName: "gb28181", + treeHeight: 750, + loading: false, + loadingText: "", + openeds: ["0"], + gb28181: {}, + subDevTable: [], + idType: 1, + treeSettings: { + check: { + enable: true + } + }, + treeSettingsSelect: { + check: { + enable: false + } + }, + rules: { + ip: [ + { + required: true, + message: "璇疯緭鍏P鍦板潃", + trigger: "change" + }, + { validator: isIPv4, trigger: "change" } + ], + ServerIp: [ + { + required: true, + message: "璇疯緭鍏P鍦板潃", + trigger: "change" + }, + { validator: isIPv4, trigger: "change" } + ], + ServerPort: [ + { + required: true, + message: "璇疯緭鍏ョ鍙�", + trigger: "change" + }, + { validator: isPort, trigger: "change" } + ], + GbServerPort: [ + { + required: true, + message: "璇疯緭鍏ョ鍙�", + trigger: "change" + }, + { validator: isPort, trigger: "change" } + ] + }, + locationCity: { + province: "", + city: "", + county: "", + provinceOptions: [], + cityOptions: [], + countyOptions: [] + }, + dstTreeData: [] + } + }, + mounted() { + this.TreeDataPool.multiple = true + + // 璁板綍鐩綍鏄惁鎶樺彔 + let foldList = localStorage.getItem("ztree_fold_list") + if (foldList) { + this.TreeDataPool.foldNodeList = JSON.parse(foldList) + } + + this.initGB28181Conf() + }, + methods: { + hanleTabClick(tab, event) { + if (this.activeName == "subordinates") { + getAllSubServer().then((rsp) => { + if (rsp && rsp.success) { + this.subDevTable = rsp.data + } + }) + } else if (this.activeName == "cameras") { + this.getCamerasFromVideosvr() + } + + // this.TreeDataPool.fetchGbTree() + // this.dstTreeData = this.TreeDataPool.gb28181Data + }, + async getCamerasFromVideosvr() { + this.loading = true + await this.TreeDataPool.fetchVideosvrCameras(false) + this.dstTreeData = this.TreeDataPool.newTreeByChecked(this.TreeDataPool.treeData) + this.loading = false + }, + async updateCamerasFromVideosvr() { + this.loading = true + await this.TreeDataPool.fetchVideosvrCameras(true) + this.loading = false + }, + onItemCheck() { + this.dstTreeData = this.TreeDataPool.newTreeByChecked(this.TreeDataPool.activeTreeData) + }, + saveChecked() { + localStorage.setItem("ztree_fold_list", JSON.stringify(this.TreeDataPool.foldNodeList)) + + if (this.TreeDataPool.gb28181CheckedCount > 500) { + this.$message({ + type: "warning", + message: "鏈�澶氫粎鏀寔閫夋嫨500璺憚鍍忔満. 璇烽噸鏂伴�夋嫨" + }) + + return + } + + this.loading = true + + let treeData = this.TreeDataPool.newTreeByChecked(this.TreeDataPool.activeTreeData) + + saveGb28181CamTree({ checkedMenus: treeData }) + .then((rsp) => { + if (rsp && rsp.success) { + this.$message({ + type: "success", + message: "淇濆瓨鎴愬姛" + }) + } + this.loading = false + }) + .catch((err) => { + this.$message({ + type: "error", + message: "淇濆瓨澶辫触" + }) + this.loading = false + }) + }, + initGB28181Conf() { + getGB28181Config().then((rsp) => { + if (rsp && rsp.success) { + this.gb28181 = rsp.data + //this.gb28181.idType = 0; + + this.$set(this.gb28181, "idType", 0) + this.$refs["gb28181"].resetFields() + } + }) + getGb28181AreaList().then((rsp) => { + if (rsp && rsp.success) { + this.locationCity.provinceOptions = rsp.data + } + }) + }, + submitGB28281() { + this.$refs["gb28181"].validate((valid) => { + if (valid) { + saveGB28181Config(this.gb28181).then((rsp) => { + if (rsp && rsp.success) { + this.$notify({ + type: "success", + message: "GB28181璁剧疆淇濆瓨鎴愬姛" + }) + } + }) + } else { + console.log("error submit!!") + return false + } + }) + }, + changeProvince() { + let pid = this.locationCity.province + getGb28181AreaList({ parentId: pid }).then((rsp) => { + if (rsp && rsp.success) { + this.locationCity.cityOptions = rsp.data + this.locationCity.city = this.locationCity.cityOptions[0].id + this.changeCity() + } + }) + }, + changeCity() { + let pid = this.locationCity.city + getGb28181AreaList({ parentId: pid }).then((rsp) => { + if (rsp && rsp.success) { + this.locationCity.countyOptions = rsp.data + this.locationCity.county = this.locationCity.countyOptions[0].id + } + }) + }, + newGBID() { + let cCode = this.locationCity.county + "" + newGb28181ID({ code: cCode }).then((rsp) => { + if (rsp && rsp.success) { + this.gb28181.PublicId = rsp.data + } + }) + }, + menuOpen() {}, + menuClose() {}, + toOpenMenuList(e) { + let t = e.clientY - this.$el.offsetTop + 30 + let l = e.clientX - this.$el.offsetLeft + + window.parent.postMessage( + { + source: location.href.split("/")[location.href.split("/").length - 1], + trigger: "contextmenu", + menuT: t, + menuL: l + }, + "*" + ) + return false + } + } +} +</script> +<style lang="scss"> +.s-system-manage { + width: 100% !important; + min-width: 1067px; + height: 100%; + box-sizing: border-box; + padding: 10px; + background-color: #f8f9fb; + .s-system-manage-breadcrumb { + height: 5%; + box-sizing: border-box; + border: 1px solid #e4e7ed; + box-shadow: #e4e7ed 0px 0px 9px inset; + box-shadow: #e4e7ed 0px 0px 9px inset; + border-radius: 5px; + } + + .el-tabs--border-card { + border: 0px solid #dcdfe6; + -webkit-box-shadow: none; + box-shadow: none; + .el-tabs__header { + border: 0px solid #dcdfe6; + .el-tabs__item { + padding: 5px 50px; + height: 50px; + font-family: PingFangSC-Regular; + font-size: 15px; + color: #222222; + text-align: center; + border: 0px solid transparent; + } + .el-tabs__item:nth-child(2) { + padding-left: 50px !important; + } + .el-tabs__item:last-child { + padding-right: 50px !important; + } + .el-tabs__item.is-active { + color: #3d68e1; + + // border-right-color: #fff; + // border-left-color: #fff; + } + .el-tabs__item:not(.is-disabled):hover { + color: #3d68e1; + } + } + } + .el-tabs__header { + margin-bottom: 0; + } + .el-tabs__content { + height: calc(100% - 64px); + box-sizing: border-box; + overflow-y: auto; + padding: 20px 40px !important; + background: #fff; + .el-tab-pane { + width: 100%; + .s-title { + text-align: left; + padding: 15px 0px; + font-size: 16px; + } + } + } + + .s-table { + border: 1px solid #e8e8e9; + margin-top: 40px; + } + + .ui-top-title { + padding-bottom: 10px; + /* border-bottom: 1px solid #ebebeb; */ + position: relative; + text-align: left; + padding-left: 15px; + font-size: 16px; + font-weight: bold; + } + + .ui-top-title:before { + content: " "; + border-left: 4px solid #f53d3d; + display: inline-block; + height: 16px; + position: absolute; + top: 50%; + left: 0; + margin-top: -13px; + } + + .el-button--text { + color: #3d68e1; + text-decoration: underline; + } + + .camera-seleted-text { + margin-right: 20px; + + .b { + color: #3d68e1; + } + } + + .tree-container { + display: flex; + .tree-box { + width: 500px; + margin: 5px 10px 0px 0px; + border: 1px solid #e4e2e2; + + .camera-title { + text-align: left; + padding: 0px 10px; + margin: 0px 0px; + height: 33px; + background-color: #e4e2e2; + line-height: 33px; + font-size: 14px; + } + } + + .base-image { + margin: 140px 10px; + width: 450px; + height: 300px; + + .camera-image { + background-color: black; + height: 254px; + } + } + .select-tree-menu { + // max-width: 350px; + overflow-x: hidden; + overflow-y: hidden; + margin-bottom: 4px; + } + .select-tree-menu::-webkit-scrollbar { + /*婊氬姩鏉℃暣浣撴牱寮�*/ + width: 4px; /*楂樺鍒嗗埆瀵瑰簲妯珫婊氬姩鏉$殑灏哄*/ + height: 4px; + } + .select-tree-menu::-webkit-scrollbar-thumb { + /*婊氬姩鏉¢噷闈㈠皬鏂瑰潡*/ + border-radius: 5px; + -webkit-box-shadow: inset 0 0 5px rgba(157, 165, 183, 0); + background: rgb(202, 201, 201); + } + .select-tree-menu::-webkit-scrollbar-track { + /*婊氬姩鏉¢噷闈㈣建閬�*/ + -webkit-box-shadow: inset 0 0 5px rgba(157, 165, 183, 0); + border-radius: 0; + background: rgb(235, 234, 234); + } + .select-tree-menu::-webkit-scrollbar-thumb:hover { + background: rgba(0, 0, 0, 0.4); + } + .select-tree-menu:hover { + overflow-x: visible; + overflow-y: auto; + margin-bottom: 0px; + } + } +} +</style> -- Gitblit v1.8.0