| | |
| | | public baseImageLoading: boolean |
| | | |
| | | public activeNode: string |
| | | public clusterId: string |
| | | public devId: string |
| | | |
| | | |
| | | constructor() { |
| | |
| | | this.gb28181CameraBaseImage = "" |
| | | this.baseImageLoading = false |
| | | this.activeNode = '' |
| | | this.clusterId = '' |
| | | this.devId = '' |
| | | |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | async refreshGB28181() { |
| | | await refreshGB28181Tree() |
| | | await refreshGB28181Tree({}) |
| | | // this.fetchGbTree() |
| | | } |
| | | |
| | |
| | | if (update) { |
| | | fn = refreshGB28181Tree |
| | | } |
| | | const rsp: any = await fn() |
| | | const rsp: any = await fn({ |
| | | clusterId:this.clusterId, |
| | | devId:this.devId, |
| | | }) |
| | | |
| | | if (rsp && rsp.success) { |
| | | this.selectedNode = {} |
| | |
| | | this.cameraNameForBaseImage = node.name |
| | | |
| | | try { |
| | | const rsp: any = await getCameraBaseImage({ id: node.id }) |
| | | const rsp: any = await getCameraBaseImage({ |
| | | id: node.id, |
| | | clusterId: this.clusterId, |
| | | devId: this.devId, |
| | | }) |
| | | |
| | | if (rsp && rsp.data) { |
| | | this.gb28181CameraBaseImage = rsp.data |
| | |
| | | import request from '@/scripts/httpRequest' |
| | | |
| | | export const getGB28181Config = () => { |
| | | export const getGB28181Config = (query: any) => { |
| | | return request({ |
| | | url: "/data/api-v/sysset/gb28181ConfigShow", |
| | | method: "get" |
| | | url: "/saas/api-s/gb28181/configShow", |
| | | method: "get", |
| | | params:query |
| | | }); |
| | | }; |
| | | |
| | | |
| | | export const saveGB28181Config = (query: any) => { |
| | | return request({ |
| | | url: "/data/api-v/sysset/gb28181ConfEdit", |
| | | url: "/saas/api-s/gb28181/configEdit", |
| | | method: "post", |
| | | data: query |
| | | }); |
| | |
| | | |
| | | export const getGb28181AreaList = (query: any) => { |
| | | return request({ |
| | | url: "/data/api-v/gb28181/findAreaByParentId", |
| | | url: "/saas/api-s/gb28181/findAreaByParentId", |
| | | method: "get", |
| | | params: query |
| | | }); |
| | |
| | | |
| | | export const getAllSubServer = (query: any) => { |
| | | return request({ |
| | | url: "/data/api-v/gb28181/getAllSubServer", |
| | | method: "get", |
| | | params: query |
| | | url: "/saas/api-s/gb28181/getAllSubServer", |
| | | method: "post", |
| | | data: query |
| | | }); |
| | | }; |
| | | |
| | | export const newGb28181ID = (query: any) => { |
| | | return request({ |
| | | url: "/data/api-v/gb28181/newGbId", |
| | | url: "/saas/api-s/gb28181/newGbId", |
| | | method: "get", |
| | | params: query |
| | | }); |
| | |
| | | |
| | | export const saveGb28181CamTree = (query: any) => { |
| | | return request({ |
| | | url: "/data/api-v/gb28181/saveGb28181CamTree", |
| | | url: "/saas/api-s/gb28181/autoSaveGb28181CamTree", |
| | | method: "post", |
| | | data: query |
| | | }); |
| | | }; |
| | | |
| | | export const saveTree = (data) => { |
| | | return request({ |
| | | url: "/saas/api-s/gb28181/saveGb28181CamTree", |
| | | method: "post", |
| | | data |
| | | }); |
| | | }; |
| | | |
| | |
| | | }); |
| | | }; |
| | | |
| | | export const getCameraBaseImage = (query: any) => { |
| | | export const getCameraBaseImage = (data: any) => { |
| | | return request({ |
| | | url: "/data/api-v/gb28181/camera/capture", |
| | | method: "get", |
| | | params: query |
| | | }); |
| | | }; |
| | | |
| | | export const getGb28181Pool = () => { |
| | | return request({ |
| | | url: "/data/api-v/gb28181/treeSelected", |
| | | method: "get" |
| | | }); |
| | | }; |
| | | |
| | | export const refreshGB28181Tree = () => { |
| | | return request({ |
| | | url: "/data/api-v/gb28181/treeRefresh", |
| | | url: "/saas/api-s/gb28181/camera/capture", |
| | | method: "post", |
| | | data |
| | | }); |
| | | }; |
| | | |
| | | export const getGb28181Pool = (data) => { |
| | | return request({ |
| | | url: "/saas/api-s/gb28181/treeSelected", |
| | | method: "post", |
| | | data |
| | | }); |
| | | }; |
| | | |
| | | export const refreshGB28181Tree = (data) => { |
| | | return request({ |
| | | url: "/saas/api-s/gb28181/treeRefresh", |
| | | method: "post", |
| | | data |
| | | }); |
| | | }; |
| | | |
| | |
| | | data: qs.stringify(query) |
| | | }); |
| | | }; |
| | | |
| | | |
| | |
| | | method: "post", |
| | | data: query |
| | | }); |
| | | }; |
| | | }; |
| | | |
| | | // 获取配置 |
| | | export const config = () => { |
| | | return request({ |
| | | url: "/saas/api-s/es/config", |
| | | method: "get", |
| | | }); |
| | | }; |
| | | |
| | | // 保存配置 |
| | | export const saveEsConfig = (query: any) => { |
| | | return request({ |
| | | url: " /saas/api-s/es/saveEsConfig", |
| | | method: "post", |
| | | data: query |
| | | }); |
| | | }; |
| | |
| | | }); |
| | | }; |
| | | |
| | | export const getGB28181Config = () => { |
| | | export const getGB28181Config = (query: any) => { |
| | | return request({ |
| | | url: "/data/api-v/gb28181/configShow", |
| | | method: "get" |
| | | url: "/saas/api-s/gb28181/configShow", |
| | | method: "get", |
| | | params:query |
| | | }); |
| | | }; |
| | | |
| | |
| | | }, |
| | | methods: { |
| | | jump() { |
| | | window.open("http://www.smartai.com/contact"); |
| | | window.open("http://www.smartai.com/about"); |
| | | }, |
| | | jump2() { |
| | | window.open("http://www.smartai.com/consult"); |
| | |
| | | export default { |
| | | methods: { |
| | | jump() { |
| | | window.open("http://www.smartai.com/contact"); |
| | | window.open("http://www.smartai.com/about"); |
| | | }, |
| | | jump2() { |
| | | window.open("http://www.smartai.com/consult"); |
| | |
| | | <template> |
| | | <div class="tree-menu" :style="`max-height:${height - 200}px;`"> |
| | | <div class="devArea"> |
| | | <swiper :options="swiperOption" v-if="showDevArea"> |
| | | <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" |
| | |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | showDevArea: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | nodeList: {}, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | ], |
| | | }, |
| | | 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自己或子元素时,自动初始化swiper |
| | | observeParents: true, //修改swiper的父元素时,自动初始化swiper |
| | | }, |
| | | }; |
| | | }, |
| | | created() { |
| | | this.activeTabObj = |
| | | this.nodeList && this.nodeList.length > 0 ? this.nodeList[0] : ""; |
| | | this.TreeDataPool.zTree = true; |
| | | this.TreeDataPool.activeVideoIndex = sessionStorage.activeIndexVideo |
| | | ? Number(sessionStorage.activeIndexVideo) |
| | |
| | | if (newValue !== this.treeName) { |
| | | this.TreeDataPool.cleanTree(this.treeName); |
| | | } |
| | | }, |
| | | showDevArea: function () { |
| | | this.$forceUpdate(); |
| | | }, |
| | | }, |
| | | methods: { |
| | |
| | | |
| | | this.ztreeObj.selectNode(node, false, true); |
| | | } |
| | | }, |
| | | chooseTab(item) { |
| | | this.$emit("saveTree", this.activeTabObj); |
| | | setTimeout(() => { |
| | | this.activeTabObj = item; |
| | | }, 100); |
| | | }, |
| | | |
| | | findTidByIdFromArr(arr) { |
| | |
| | | }; |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .devArea { |
| | | } |
| | | |
| | | .dialog-box { |
| | | position: absolute; |
| | | width: 220px; |
| | |
| | | .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> |
| | |
| | | if(config.url === '/saas/api-d/device/userClusterInfo') { |
| | | config.data.clusterId = '' |
| | | } |
| | | |
| | | if(config.url === '/saas/api-s/es/saveEsConfig') { |
| | | delete config.data.clusterId |
| | | delete config.data.devId |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | <div class="empty" v-if="devList.length === 0"> |
| | | <img src="/images/search/1.png" alt="" /> |
| | | <div class="des">您还未添加集群或设备,请在设备管理中添加</div> |
| | | <div class="button add">立即添加</div> |
| | | <div class="button add" @click="$router.push('/equipmentList')"> |
| | | 立即添加 |
| | | </div> |
| | | </div> |
| | | <div class="list scroll"> |
| | | <div class="devItem" v-for="(item, index) in devList" :key="index"> |
| | | <div class="devItem" v-for="(item, index) in clusterList" :key="index"> |
| | | <div class="mainInfo"> |
| | | <img |
| | | v-if="item.type == 1" |
| | | src="/images/hashrate/cluster.png" |
| | | alt="" |
| | | /> |
| | | <img v-else src="/images/hashrate/equipment.png" alt="" /> |
| | | <img src="/images/hashrate/cluster.png" alt="" /> |
| | | |
| | | <div class="right"> |
| | | <div class="name">集群123</div> |
| | | <div class="ip">192.168.1.1</div> |
| | | <div class="number">设备总量:7</div> |
| | | <div class="name">{{ item.cluster_name }}</div> |
| | | <div class="ip">{{ item.virtual_ip }}</div> |
| | | <div class="number">设备总量:{{ item.nodeNum }}</div> |
| | | </div> |
| | | |
| | | <div class="button set" @click="showSettingBox = true">配置</div> |
| | | <div |
| | | class="button set" |
| | | @click="setting({ clusterId: item.cluster_id }, item.nodeList)" |
| | | > |
| | | 配置 |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="devItem" |
| | | v-for="(item, index) in devList" |
| | | :key="index + 'dev'" |
| | | > |
| | | <div class="mainInfo"> |
| | | <img src="/images/hashrate/equipment.png" alt="" /> |
| | | |
| | | <div class="right"> |
| | | <div class="name">{{ item.devName }}</div> |
| | | <div class="ip">{{ item.devIp }}</div> |
| | | </div> |
| | | |
| | | <div class="button set" @click="setting({ devId: item.devId })"> |
| | | 配置 |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <SettingBox |
| | | v-if="showSettingBox" |
| | | @close="showSettingBox = false" |
| | | :id="idObj" |
| | | :nodeList="nodeList" |
| | | ></SettingBox> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import SettingBox from "@/views/GB28181/components/SettingBox"; |
| | | import { getClusterDevList } from "@/api/clusterManage"; |
| | | |
| | | export default { |
| | | components: { |
| | | SettingBox, |
| | | }, |
| | | created() { |
| | | this.getClusterDevList(); |
| | | }, |
| | | data() { |
| | | return { |
| | | devList: [ |
| | | { |
| | | type: 1, |
| | | }, |
| | | { |
| | | type: 1, |
| | | }, |
| | | |
| | | { |
| | | type: 1, |
| | | }, |
| | | { |
| | | type: 1, |
| | | }, |
| | | { |
| | | type: 1, |
| | | }, |
| | | { |
| | | type: 1, |
| | | }, |
| | | |
| | | { |
| | | type: 1, |
| | | }, |
| | | { |
| | | type: 1, |
| | | }, |
| | | { |
| | | type: 1, |
| | | }, |
| | | { |
| | | type: 1, |
| | | }, |
| | | { |
| | | type: 1, |
| | | }, |
| | | { |
| | | type: 1, |
| | | }, |
| | | { |
| | | type: 1, |
| | | }, |
| | | { |
| | | type: 1, |
| | | }, |
| | | { |
| | | type: 0, |
| | | }, |
| | | { |
| | | type: 0, |
| | | }, |
| | | ], |
| | | clusterList: [], |
| | | devList: [], |
| | | showSettingBox: false, |
| | | idObj: {}, |
| | | nodeList: [], |
| | | }; |
| | | }, |
| | | methods: { |
| | | async getClusterDevList() { |
| | | const res = await getClusterDevList(); |
| | | if (res && res.success) { |
| | | this.clusterList = res.data.clusterList; |
| | | this.devList = res.data.devList; |
| | | } |
| | | }, |
| | | setting(id, nodeList) { |
| | | this.idObj = id; |
| | | this.nodeList = nodeList ? nodeList : []; |
| | | this.showSettingBox = true; |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | import { isPort, isIPv4 } from "@/scripts/validate"; |
| | | |
| | | export default { |
| | | props: { |
| | | id: {}, |
| | | }, |
| | | created() { |
| | | this.initGB28181Conf(); |
| | | }, |
| | |
| | | }, |
| | | methods: { |
| | | initGB28181Conf() { |
| | | getGB28181Config().then((rsp) => { |
| | | getGB28181Config(this.id).then((rsp) => { |
| | | if (rsp && rsp.success) { |
| | | this.gb28181 = rsp.data; |
| | | //this.gb28181.idType = 0; |
| | |
| | | }); |
| | | getGb28181AreaList().then((rsp) => { |
| | | if (rsp && rsp.success) { |
| | | this.locationCity.provinceOptions = rsp.data; |
| | | this.locationCity.provinceOptions = rsp.data.list; |
| | | } |
| | | }); |
| | | }, |
| | |
| | | let pid = this.locationCity.province; |
| | | getGb28181AreaList({ parentId: pid }).then((rsp) => { |
| | | if (rsp && rsp.success) { |
| | | this.locationCity.cityOptions = rsp.data; |
| | | this.locationCity.cityOptions = rsp.data.list; |
| | | this.locationCity.city = this.locationCity.cityOptions[0].id; |
| | | this.changeCity(); |
| | | } |
| | |
| | | let pid = this.locationCity.city; |
| | | getGb28181AreaList({ parentId: pid }).then((rsp) => { |
| | | if (rsp && rsp.success) { |
| | | this.locationCity.countyOptions = rsp.data; |
| | | this.locationCity.countyOptions = rsp.data.list; |
| | | this.locationCity.county = this.locationCity.countyOptions[0].id; |
| | | } |
| | | }); |
| | |
| | | let cCode = this.locationCity.county + ""; |
| | | newGb28181ID({ code: cCode }).then((rsp) => { |
| | | if (rsp && rsp.success) { |
| | | this.gb28181.PublicId = rsp.data; |
| | | this.gb28181.PublicId = rsp.data.code; |
| | | } |
| | | }); |
| | | }, |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <FormArea @close="$emit('close')" v-if="activeTab === 0"></FormArea> |
| | | <TableArea v-if="activeTab === 1"></TableArea> |
| | | <TreeArea @close="$emit('close')" v-if="activeTab === 2"></TreeArea> |
| | | <FormArea |
| | | :id="id" |
| | | @close="$emit('close')" |
| | | v-if="activeTab === 0" |
| | | ></FormArea> |
| | | <TableArea :id="id" v-if="activeTab === 1"></TableArea> |
| | | <TreeArea |
| | | :id="id" |
| | | :nodeList="nodeList" |
| | | @close="$emit('close')" |
| | | v-if="activeTab === 2" |
| | | ></TreeArea> |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | TableArea, |
| | | TreeArea, |
| | | }, |
| | | props: { |
| | | id: {}, |
| | | nodeList: {}, |
| | | }, |
| | | data() { |
| | | return { |
| | | activeTab: 0, |
| | |
| | | <template> |
| | | <div class="TableArea"> |
| | | <el-table |
| | | :data="subDevTable" |
| | | fit |
| | | highlight-current-row |
| | | style="width: 100%" |
| | | height="500" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | label="序号" |
| | | align="center" |
| | | width="80" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="名称" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="publicid" |
| | | label="ID" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | <el-table-column prop="ip" label="IP"></el-table-column> |
| | | <el-table-column prop="status" label="状态" align="center"> |
| | | <template slot-scope="scope"> |
| | | <span :style="scope.row.alive ? `color:#36B24A` : 'color:#FF4B33;'">{{ |
| | | scope.row.alive ? "在线" : "离线" |
| | | }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="corp" label="备注"></el-table-column> |
| | | </el-table> |
| | | <div class="content"> |
| | | <el-table |
| | | :data="subDevTable" |
| | | fit |
| | | highlight-current-row |
| | | style="width: 100%" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | label="序号" |
| | | align="center" |
| | | width="80" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="名称" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="publicid" |
| | | label="ID" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | <el-table-column prop="ip" label="IP"></el-table-column> |
| | | <el-table-column prop="status" label="状态" align="center"> |
| | | <template slot-scope="scope"> |
| | | <span |
| | | :style="scope.row.alive ? `color:#36B24A` : 'color:#FF4B33;'" |
| | | >{{ scope.row.alive ? "在线" : "离线" }}</span |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="corp" label="备注"></el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import { getAllSubServer } from "@/api/Gb28181"; |
| | | |
| | | export default { |
| | | props: { |
| | | id: {}, |
| | | }, |
| | | created() { |
| | | this.getList(); |
| | | }, |
| | |
| | | }, |
| | | methods: { |
| | | async getList() { |
| | | console.log(12121); |
| | | // const res = await getAllSubServer(); |
| | | this.subDevTable = [ |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "218.11.13.177", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 15060, |
| | | publicid: "34020000002000000001", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 1, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "192.168.5.53", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 5060, |
| | | publicid: "34020000001320000001", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "194.5.215.118", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 60783, |
| | | publicid: "1278", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "138.199.42.181", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 53998, |
| | | publicid: "2376", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "156.146.50.98", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 49420, |
| | | publicid: "2924", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "149.34.242.65", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 54724, |
| | | publicid: "3775", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "188.240.57.118", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 61962, |
| | | publicid: "4423", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "89.37.173.34", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 58343, |
| | | publicid: "4877", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "89.187.162.185", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 56095, |
| | | publicid: "391", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "62.197.145.4", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 60973, |
| | | publicid: "1872", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "45.134.212.244", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 55040, |
| | | publicid: "4379", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "194.33.40.115", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 51789, |
| | | publicid: "4923", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "91.219.215.52", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 52951, |
| | | publicid: "1885", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "185.99.3.103", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 60547, |
| | | publicid: "3377", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "213.152.165.107", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 62282, |
| | | publicid: "769", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "129.227.219.8", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 53877, |
| | | publicid: "1271", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "45.9.249.244", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 57637, |
| | | publicid: "3424", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "45.136.155.91", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 55749, |
| | | publicid: "2877", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "156.146.50.98", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 49162, |
| | | publicid: "2925", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "194.5.215.118", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 50858, |
| | | publicid: "1279", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "188.240.57.118", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 61692, |
| | | publicid: "4424", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "138.199.42.181", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 58970, |
| | | publicid: "2377", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "149.34.242.65", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 54856, |
| | | publicid: "3776", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "89.187.162.185", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 52956, |
| | | publicid: "392", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "194.33.40.115", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 64302, |
| | | publicid: "4924", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "45.134.212.244", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 63807, |
| | | publicid: "4380", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "91.219.215.52", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 64985, |
| | | publicid: "1886", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "45.9.249.244", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 57372, |
| | | publicid: "3425", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "213.152.165.107", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 49539, |
| | | publicid: "770", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "45.136.155.91", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 60032, |
| | | publicid: "2878", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "156.146.50.98", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 65234, |
| | | publicid: "2926", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "188.240.57.118", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 61386, |
| | | publicid: "4425", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "194.5.215.118", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 62886, |
| | | publicid: "1280", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "149.34.242.65", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 57416, |
| | | publicid: "3777", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "194.33.40.115", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 65530, |
| | | publicid: "4925", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "89.187.162.185", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 59341, |
| | | publicid: "393", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "45.134.212.244", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 49608, |
| | | publicid: "4381", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "91.219.215.52", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 62294, |
| | | publicid: "1887", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "45.9.249.244", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 57068, |
| | | publicid: "3426", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "213.152.165.107", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 61066, |
| | | publicid: "771", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "156.146.50.98", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 64946, |
| | | publicid: "2927", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "188.240.57.118", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 61133, |
| | | publicid: "4426", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "194.5.215.118", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 63212, |
| | | publicid: "1281", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "194.33.40.115", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 56324, |
| | | publicid: "4926", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "149.34.242.65", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 50517, |
| | | publicid: "3778", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "45.134.212.244", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 52108, |
| | | publicid: "4382", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "", |
| | | devmode: "gb28181", |
| | | ip: "45.9.249.244", |
| | | name: "", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 56708, |
| | | publicid: "3427", |
| | | username: "", |
| | | }, |
| | | { |
| | | alive: 0, |
| | | corp: "GBT28181", |
| | | devmode: "gb28181", |
| | | ip: "192.168.5.56", |
| | | name: "Camera 01", |
| | | parentid: "11011400011121000001", |
| | | passwd: "", |
| | | port: 5060, |
| | | publicid: "44122500041325000002", |
| | | username: "", |
| | | }, |
| | | ]; |
| | | let params = {}; |
| | | if (this.id.clusterId) { |
| | | params = { |
| | | clusterId: this.id.clusterId, |
| | | devId: "", |
| | | }; |
| | | } else { |
| | | params = { |
| | | clusterId: "", |
| | | devId: this.id.devId, |
| | | }; |
| | | } |
| | | const res = await getAllSubServer(params); |
| | | if (res && res.success) { |
| | | this.subDevTable = res.data; |
| | | } |
| | | }, |
| | | }, |
| | | }; |
| | |
| | | <style lang="scss" scoped > |
| | | .TableArea { |
| | | padding: 30px 0; |
| | | .content { |
| | | height: 500px; |
| | | } |
| | | .el-table ::v-deep { |
| | | background-color: rgb(233, 235, 238); |
| | | padding: 1px; |
| | |
| | | <template> |
| | | <div class="TreeArea"> |
| | | <div class="refresh"> |
| | | <span v-if="nodeList && nodeList.length > 0">配置规则</span> |
| | | <el-switch |
| | | v-model="ruleType" |
| | | active-color="#0065FF" |
| | | inactive-color="#ED7E2F" |
| | | :width="52" |
| | | v-if="nodeList && nodeList.length > 0" |
| | | > |
| | | </el-switch> |
| | | <span |
| | | class="des1" |
| | | @click="ruleType = false" |
| | | v-if="ruleType && nodeList && nodeList.length > 0" |
| | | >自动</span |
| | | > |
| | | <span |
| | | class="des2" |
| | | @click="ruleType = true" |
| | | v-if="!ruleType && nodeList && nodeList.length > 0" |
| | | >手动</span |
| | | > |
| | | <div class="button" @click="updateCamerasFromVideosvr">刷新</div> |
| | | 单台设备最大支持配置500路摄像机,集群最大支持配置路数=集群内设备总量*500 |
| | | </div> |
| | |
| | | :node="TreeDataPool.treeData" |
| | | :height="600" |
| | | :setting="treeSettings" |
| | | :showDevArea="!ruleType" |
| | | :nodeList="nodeList" |
| | | @itemChecked="onItemCheck" |
| | | @saveTree="tempSaveTree" |
| | | search |
| | | style="width: 450px; min-height: 600px" |
| | | /> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { saveGb28181CamTree } from "@/api/Gb28181"; |
| | | import { saveGb28181CamTree, saveTree } from "@/api/Gb28181"; |
| | | import TreeMenu from "@/components/giantTree/index"; |
| | | import ZTree from "@/components/giantTree/zTree/ztree"; |
| | | |
| | |
| | | components: { |
| | | TreeMenu, |
| | | ZTree, |
| | | }, |
| | | props: { |
| | | id: {}, |
| | | nodeList: {}, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | }, |
| | | dstTreeData: [], |
| | | loading: null, |
| | | ruleType: true, |
| | | allTreeData: {}, |
| | | }; |
| | | }, |
| | | created() { |
| | | this.TreeDataPool.clusterId = this.id.clusterId ? this.id.clusterId : ""; |
| | | this.TreeDataPool.devId = this.id.devId ? this.id.devId : ""; |
| | | }, |
| | | mounted() { |
| | | this.TreeDataPool.multiple = true; |
| | |
| | | this.TreeDataPool.activeTreeData |
| | | ); |
| | | }, |
| | | tempSaveTree(tab) { |
| | | console.log(1212); |
| | | console.log(tab); |
| | | this.allTreeData[tab.devId] = this.TreeDataPool.newTreeByChecked( |
| | | this.TreeDataPool.activeTreeData |
| | | ); |
| | | }, |
| | | saveChecked() { |
| | | localStorage.setItem( |
| | | "ztree_fold_list", |
| | |
| | | this.TreeDataPool.activeTreeData |
| | | ); |
| | | |
| | | saveGb28181CamTree({ checkedMenus: treeData }) |
| | | .then((rsp) => { |
| | | if (this.ruleType) { |
| | | saveGb28181CamTree({ |
| | | clusterId: this.id.clusterId ? this.id.clusterId : "", |
| | | devId: this.id.devId ? this.id.devId : "", |
| | | checkedMenus: treeData, |
| | | }).then((rsp) => { |
| | | if (rsp && rsp.success) { |
| | | this.$message({ |
| | | type: "success", |
| | |
| | | }); |
| | | } |
| | | this.loading = false; |
| | | }) |
| | | .catch((err) => { |
| | | this.$message({ |
| | | type: "error", |
| | | message: "保存失败", |
| | | }); |
| | | } else { |
| | | let tab = this.$refs["ztree"].activeTabObj; |
| | | this.allTreeData[tab.devId] = treeData; |
| | | let params = []; |
| | | for (const key in this.allTreeData) { |
| | | params.push({ |
| | | devId: key, |
| | | checkedMenus: this.allTreeData[key], |
| | | }); |
| | | } |
| | | |
| | | saveTree({ |
| | | list: params, |
| | | }).then((rsp) => { |
| | | if (rsp && rsp.success) { |
| | | this.$message({ |
| | | type: "success", |
| | | message: "保存成功", |
| | | }); |
| | | } |
| | | this.loading = false; |
| | | }); |
| | | } |
| | | }, |
| | | }, |
| | | }; |
| | |
| | | align-items: center; |
| | | font-size: 12px; |
| | | color: #666666; |
| | | position: relative; |
| | | |
| | | span { |
| | | font-size: 14px; |
| | | } |
| | | |
| | | .el-switch { |
| | | margin-left: 16px; |
| | | margin-right: 32px; |
| | | } |
| | | |
| | | .des1 { |
| | | top: 7px; |
| | | left: 78px; |
| | | position: absolute; |
| | | font-size: 12px; |
| | | color: #fff; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .des2 { |
| | | top: 7px; |
| | | left: 92px; |
| | | position: absolute; |
| | | font-size: 12px; |
| | | color: #fff; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .button { |
| | | margin-right: 10px; |
| | |
| | | this.$router.push("/"); |
| | | } |
| | | if (index == 2) { |
| | | window.open("http://smartai.com/contact"); |
| | | window.open("http://smartai.com/about"); |
| | | } |
| | | if (index == 4) { |
| | | window.open("http://smartai.com/consult"); |
| | |
| | | |
| | | <li> |
| | | <div class="label">激活码:</div> |
| | | <div class="data">-</div> |
| | | <div class="data" v-if="data.activateCode">{{ data.activateCode }}</div> |
| | | <div class="data" v-else>-</div> |
| | | </li> |
| | | </ul> |
| | | |
| | |
| | | > |
| | | </div> |
| | | <el-table :data="data.algos" stripe style="width: 100%"> |
| | | <el-table-column prop="name" label="名称" width="206" class-name="name"> |
| | | <el-table-column prop="name" label="名称" class-name="name"> |
| | | </el-table-column> |
| | | <el-table-column label="CPU" width="206"> |
| | | <el-table-column label="CPU"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.cpu.toFixed(2) }} %</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="mem" label="内存" width="206"> |
| | | <el-table-column prop="mem" label="内存"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.mem.toFixed(2) }} %</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="dist" label="硬盘" width="206"> |
| | | </el-table-column> |
| | | <el-table-column prop="gpu" label="算力" width="206"> |
| | | <!-- <el-table-column prop="dist" label="硬盘" width="206"> |
| | | </el-table-column> --> |
| | | <el-table-column prop="gpu" label="算力"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.gpu.toFixed(2) }} Mbps</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="net" label="网络"> |
| | | <!-- <el-table-column prop="net" label="网络"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.net.toFixed(2) }} %</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table-column> --> |
| | | </el-table> |
| | | </div> |
| | | |
| | |
| | | box-sizing: border-box; |
| | | display: none; |
| | | position: absolute; |
| | | padding: 20px; |
| | | padding: 20px 10px; |
| | | top: 40px; |
| | | left: -100px; |
| | | width: 247px; |
| | |
| | | :rtspUrl="videoItem.rtsp" |
| | | :isRunning="false" |
| | | :showArea="false" |
| | | :videoUrl="ip" |
| | | v-if=" |
| | | videoItem !== '' && |
| | | videoItem !== undefined && |
| | |
| | | togglePlay: true, |
| | | eventAudio: new Audio(), |
| | | soundPath: "", |
| | | ip: "", |
| | | form: {}, |
| | | // 记录添加状态 |
| | | isAdd: false, |
| | |
| | | if (node.type === "4") { |
| | | getCameraInfo(node.id).then((res) => { |
| | | if (res.success) { |
| | | this.ip = "ws://" + res.data.ip + ":7009/ws"; |
| | | |
| | | if (res.data.resolutions) { |
| | | let list = res.data.resolutions.map((i) => { |
| | | let obj = {}; |
| | |
| | | height: 534px; |
| | | background-color: #fff; |
| | | box-shadow: 0px 2px 16px 0px rgba(0, 43, 106, 0.25); |
| | | z-index: 2100; |
| | | z-index: 2002; |
| | | |
| | | .title { |
| | | box-sizing: border-box; |
| | |
| | | |
| | | setOptArgValueOptions(optArg) { |
| | | let alias = optArg.alias; |
| | | console.log(121212); |
| | | console.log(alias); |
| | | optArg.valueOptions = this.VideoManageData.Dictionary[alias].map((r) => { |
| | | return { |
| | | name: r.name, |
| | |
| | | position: absolute; |
| | | padding-bottom: 13px; |
| | | padding-right: 18px; |
| | | top: 16px; |
| | | top: 12px; |
| | | left: -34px; |
| | | cursor: pointer; |
| | | border-bottom: 1px solid #e9ebee; |
| | |
| | | |
| | | .swiper-next-border { |
| | | position: absolute; |
| | | top: 16px; |
| | | top: 12px; |
| | | right: -34px; |
| | | padding-bottom: 13px; |
| | | padding-left: 18px; |
| | |
| | | <div class="SeparateRules" @click="selectMultiple(false)"> |
| | | <div class="title">独立场景</div> |
| | | <div class="control"> |
| | | <i class="iconfont" @click="openSdkBox($event)"></i> |
| | | <i class="iconfont"></i> |
| | | <i class="iconfont"></i> |
| | | <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | content="算法事件" |
| | | placement="top" |
| | | > |
| | | <i class="iconfont" @click="openSdkBox($event)"></i> |
| | | </el-tooltip> |
| | | <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | content="数据流传" |
| | | placement="top" |
| | | > |
| | | <i class="iconfont"></i> |
| | | </el-tooltip> |
| | | <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | content="模板助手" |
| | | placement="top" |
| | | > |
| | | <i class="iconfont"></i> |
| | | </el-tooltip> |
| | | </div> |
| | | |
| | | <div class="content"> |
| | |
| | | <div class="linkageRule" @click="selectMultiple(true)"> |
| | | <div class="title">联动场景</div> |
| | | <div class="control"> |
| | | <i class="iconfont" @click="showSdkBox = true"></i> |
| | | <i class="iconfont"></i> |
| | | <i class="iconfont"></i> |
| | | <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | content="算法事件" |
| | | placement="top" |
| | | > |
| | | <i class="iconfont" @click="showSdkBox = true"></i> |
| | | </el-tooltip> |
| | | <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | content="数据流传" |
| | | placement="top" |
| | | > |
| | | <i class="iconfont"></i> |
| | | </el-tooltip> |
| | | <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | content="模板助手" |
| | | placement="top" |
| | | > |
| | | <i class="iconfont"></i> |
| | | </el-tooltip> |
| | | </div> |
| | | <template v-if="linkageRule.length > 0"> |
| | | <div class="content" v-for="(item, index) in linkageRule" :key="index"> |
| | |
| | | permission: "statisticMng", |
| | | }, |
| | | |
| | | /* { |
| | | { |
| | | name: "GB28181", |
| | | icon: "/images/manageCenter/统计查询.png", |
| | | icon: "/images/manageCenter/search.png", |
| | | openPath: "/GB28181Open", |
| | | path: "/GB28181Open", |
| | | permission: "statisticMng", |
| | | }, */ |
| | | }, |
| | | ], |
| | | timeList: [ |
| | | { name: "20.103服务器", time: "9天12小时44分39秒" }, |
| | |
| | | <p class="p-clear"> |
| | | <b class="clear-searching" @click="clearSearch">重置</b> |
| | | </p> |
| | | <el-tooltip |
| | | class="item" |
| | | effect="dark" |
| | | content="配置存储路径" |
| | | placement="bottom" |
| | | > |
| | | <span @click="showSetBox = true" class="iconfont setIcon" |
| | | ></span |
| | | > |
| | | </el-tooltip> |
| | | </div> |
| | | <div ref="mid" style="height: calc(100% - 50px)"> |
| | | <div class="left-selection" v-if="VideoPhotoData.uploadDiaplay"> |
| | |
| | | </div> |
| | | </hsc-window> |
| | | </hsc-window-style-metal> |
| | | <SetBox v-if="showSetBox" @close="showSetBox = false"></SetBox> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import UploadImg from "./components/UploadImg"; |
| | | import bus from "@/main"; |
| | | import { getUrlKey } from "@/api/utils.ts"; |
| | | import SetBox from "@/views/search/components/SetBox"; |
| | | export default { |
| | | name: "RightSide", |
| | | components: { |
| | | Card, |
| | | UploadImg, |
| | | SetBox, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | ], |
| | | searchText: "", |
| | | currentPage: 1, |
| | | showSetBox: false, |
| | | }; |
| | | }, |
| | | computed: { |
| | |
| | | color: #2249b4; |
| | | } |
| | | } |
| | | .setIcon { |
| | | margin-left: 10px; |
| | | font-size: 18px; |
| | | color: #1677ff; |
| | | cursor: pointer; |
| | | } |
| | | .clear-searching { |
| | | cursor: pointer; |
| | | text-decoration: underline; |
| | |
| | | ></model-card> |
| | | </el-carousel-item> |
| | | </el-carousel> |
| | | <div class="model-bottom"> |
| | | <!-- <div class="model-bottom"> |
| | | <p class="model-bottom-left" @click="upPage(item.list, index)"> |
| | | <i class="el-icon-arrow-left"></i> |
| | | 上一个 |
| | |
| | | 下一个 |
| | | <i class="el-icon-arrow-right"></i> |
| | | </p> |
| | | </div> |
| | | </div> --> |
| | | </hsc-window> |
| | | </hsc-window-style-metal> |
| | | </div> |
| | |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | <style lang="scss"> |
| | | .layout { |
| | | min-width: 1350px; |
New file |
| | |
| | | <template> |
| | | <div class="SetBox"> |
| | | <div class="title">配置存储路径</div> |
| | | |
| | | <!-- 创建集群表格 --> |
| | | <el-form |
| | | :model="formData" |
| | | :rules="rules" |
| | | ref="Form" |
| | | label-position="left" |
| | | label-width="150px" |
| | | > |
| | | <el-form-item class="h32" prop="enable" label="是否安装数据库"> |
| | | <el-radio-group v-model="formData.enable"> |
| | | <el-radio :label="true">是</el-radio> |
| | | <el-radio :label="false">否</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | |
| | | <el-form-item |
| | | v-if="formData.enable" |
| | | class="h32 ip" |
| | | prop="alarmIp" |
| | | label="数据库存储位置" |
| | | > |
| | | <el-input |
| | | v-model="formData.alarmIp" |
| | | placeholder="例:192.168.20.118:9200" |
| | | class="h32" |
| | | ></el-input> |
| | | |
| | | <el-input |
| | | v-model="formData.alarmPort" |
| | | placeholder="请输入端口" |
| | | class="h32" |
| | | ></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item |
| | | v-if="formData.enable" |
| | | class="h32 ip" |
| | | prop="webPicIp" |
| | | label="文件存储位置" |
| | | > |
| | | <el-input |
| | | v-model="formData.webPicIp" |
| | | placeholder="请输入服务器信息" |
| | | class="h32" |
| | | ></el-input> |
| | | |
| | | <el-input |
| | | v-model="formData.webPicPort" |
| | | placeholder="请输入端口" |
| | | class="h32" |
| | | ></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item |
| | | v-if="formData.enable" |
| | | class="h32" |
| | | prop="esIsAuth" |
| | | label="数据库验证方式" |
| | | > |
| | | <el-radio-group v-model="formData.esIsAuth"> |
| | | <el-radio :label="false">无</el-radio> |
| | | <el-radio :label="true">账户密码验证</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | |
| | | <el-form-item |
| | | v-if="formData.enable && formData.esIsAuth" |
| | | class="h32" |
| | | prop="esUsername" |
| | | label="数据库账号" |
| | | > |
| | | <el-input |
| | | v-model="formData.esUsername" |
| | | placeholder="请输入数据库账号" |
| | | class="h32" |
| | | ></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item |
| | | v-if="formData.enable && formData.esIsAuth" |
| | | class="h32" |
| | | prop="esPassword" |
| | | label="数据库密码" |
| | | > |
| | | <el-input |
| | | v-model="formData.esPassword" |
| | | placeholder="请输入数据库密码" |
| | | class="h32" |
| | | type="password" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <!-- 取消与提交 --> |
| | | <div class="btns"> |
| | | <div class="cancel button" @click="close()">取消</div> |
| | | <div class="quit button" @click="submit">确定</div> |
| | | </div> |
| | | |
| | | <div class="close iconfont" @click="close()"></div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { config, saveEsConfig } from "@/api/search"; |
| | | |
| | | export default { |
| | | created() { |
| | | this.getData(); |
| | | }, |
| | | data() { |
| | | return { |
| | | formData: { |
| | | id: "", //取get结果中的id 第一次保存传空 |
| | | alarmIp: "", //es的ip |
| | | alarmPort: 9200, //es的port |
| | | webPicIp: "", //weedfs的ip |
| | | webPicPort: 6333, //weedfs的port |
| | | enable: false, //启用存储传true,不启用传false |
| | | esIsAuth: false, //es是否开启用户名密码鉴权 |
| | | esUsername: "", //开启鉴权,es用户名 |
| | | esPassword: "", //es密码 |
| | | }, |
| | | rules: { |
| | | enable: [ |
| | | { |
| | | required: true, |
| | | message: "请选择是否安装数据库", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | alarmIp: [ |
| | | { |
| | | required: true, |
| | | message: "请输入数据库存储位置", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | webPicIp: [ |
| | | { required: true, message: "请输入文件存储位置", trigger: "blur" }, |
| | | ], |
| | | esIsAuth: [ |
| | | { |
| | | required: true, |
| | | message: "请选择数据库验证方式", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | esUsername: [ |
| | | { required: true, message: "请输入数据库账号", trigger: "blur" }, |
| | | ], |
| | | esPassword: [ |
| | | { required: true, message: "请输入数据库密码", trigger: "blur" }, |
| | | ], |
| | | }, |
| | | }; |
| | | }, |
| | | methods: { |
| | | close() { |
| | | this.$emit("close"); |
| | | }, |
| | | async getData() { |
| | | const res = await config(); |
| | | if (res && res.success) { |
| | | this.formData = res.data; |
| | | } |
| | | }, |
| | | submit() { |
| | | this.$refs["Form"].validate(async (valid) => { |
| | | if (valid) { |
| | | const res = await saveEsConfig(this.formData); |
| | | if (res && res.success) { |
| | | this.$notify({ |
| | | type: "success", |
| | | message: "保存成功", |
| | | }); |
| | | this.close(); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .SetBox { |
| | | position: relative; |
| | | box-sizing: border-box; |
| | | padding: 20px; |
| | | position: fixed; |
| | | width: 520px; |
| | | height: 490px; |
| | | top: 50%; |
| | | left: 50%; |
| | | margin-top: -260px; |
| | | margin-left: -245px; |
| | | filter: drop-shadow(0px 2px 16px rgba(0, 43, 106, 0.25)); |
| | | z-index: 3000; |
| | | background-color: #fff; |
| | | |
| | | .title { |
| | | margin-bottom: 10px; |
| | | padding-bottom: 20px; |
| | | font-size: 18px; |
| | | font-weight: 700; |
| | | border-bottom: 1px solid #e9ebee; |
| | | } |
| | | |
| | | .el-form-item ::v-deep { |
| | | margin-bottom: 22px; |
| | | |
| | | label { |
| | | color: #666; |
| | | } |
| | | |
| | | .el-form-item__error { |
| | | padding-top: 0; |
| | | } |
| | | |
| | | .el-input { |
| | | .el-input__inner { |
| | | padding: 0 10px; |
| | | color: #3d3d3d; |
| | | border-radius: 0; |
| | | border-color: #c0c5cc; |
| | | &::-webkit-input-placeholder { |
| | | color: #999999; |
| | | } |
| | | |
| | | &:focus { |
| | | border-color: #0065ff; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-form-item.ip ::v-deep { |
| | | .el-form-item__content { |
| | | display: flex; |
| | | |
| | | .el-input { |
| | | flex: 1; |
| | | } |
| | | |
| | | .el-input:first-child { |
| | | margin-right: 10px; |
| | | flex: 2; |
| | | } |
| | | } |
| | | } |
| | | .el-form-item.password ::v-deep { |
| | | .el-form-item__content { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | |
| | | .el-input { |
| | | margin-left: -4px; |
| | | width: 250px; |
| | | } |
| | | |
| | | .createPassword { |
| | | font-size: 14px; |
| | | color: #0065ff; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .search { |
| | | margin-top: 8px; |
| | | width: 64px; |
| | | height: 24px; |
| | | font-size: 12px; |
| | | line-height: 24px; |
| | | text-align: center; |
| | | background-color: #0065ff; |
| | | color: #fff; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .btns { |
| | | padding: 20px 0; |
| | | border-top: 1px solid #e9ebee; |
| | | position: absolute; |
| | | left: 20px; |
| | | right: 20px; |
| | | bottom: 0; |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | text-align: center; |
| | | line-height: 32px; |
| | | font-size: 14px; |
| | | |
| | | .cancel { |
| | | margin-right: 10px; |
| | | width: 60px; |
| | | height: 32px; |
| | | border: 1px solid #0065ff; |
| | | color: #0065ff; |
| | | } |
| | | |
| | | .quit { |
| | | width: 60px; |
| | | height: 32px; |
| | | color: #fff; |
| | | background-color: #0065ff; |
| | | border: 1px solid #0065ff; |
| | | } |
| | | } |
| | | |
| | | .close { |
| | | position: absolute; |
| | | top: 20px; |
| | | right: 20px; |
| | | font-size: 12px; |
| | | color: #666; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | })(); |
| | | }; |
| | | }, |
| | | beforeDestroy() { |
| | | sessionStorage.removeItem("clusterId"); |
| | | sessionStorage.removeItem("devId"); |
| | | }, |
| | | methods: { |
| | | parseUrl() {}, |
| | | selectCluster(val) { |
| | |
| | | } |
| | | |
| | | .search_cluster { |
| | | top: 12px; |
| | | top: 18px; |
| | | left: 172px; |
| | | position: fixed; |
| | | width: 135px; |
| | |
| | | // hotOnly: false, // 热更新 |
| | | proxy: { |
| | | "/api": { |
| | | // target: "http://192.168.20.10:7004", |
| | | // target: "http://192.168.20.10:7009", |
| | | target: "http://192.168.20.115:7070", |
| | | // target: "http://192.168.20.235:7070", |
| | | // target: "http://192.168.20.117:7080", |
| | |
| | | }, |
| | | |
| | | "/ws": { |
| | | target: "http://192.168.20.235:7070", |
| | | target: "http://192.168.20.115:7070", |
| | | // ws: true, |
| | | changeOrigin: true, |
| | | }, |