| | |
| | | :disabled="false" |
| | | :snapshot_url="Camera.baseImg" |
| | | :canvasDataShow="Camera.canvasData" |
| | | :currentCameraId="Camera.cameraId" |
| | | :currentCamera="Camera" |
| | | :loading="Camera.loading" |
| | | :canvasWidth="canvasWidth" |
| | | :canvasHeight="canvasHeight" |
| | |
| | | v-loading="loading" |
| | | element-loading-text="刷新中,请稍等..." |
| | | element-loading-background="rgba(0, 0, 0, 0.8)" |
| | | :divId="data.cameraId" |
| | | :divId="data.camera.cameraId" |
| | | :isShowDrawArrow="true" |
| | | :isLink="true" |
| | | :disabled="false" |
| | | :loading="data.loading" |
| | | :snapshot_url="data.baseImg" |
| | | :canvasDataShow="data.canvasData" |
| | | :currentCameraId="data.cameraId" |
| | | :currentCamera="data.camera" |
| | | @changeLoading="changeLoading" |
| | | @refresh="refresh2" |
| | | ></polygon-canvas> |
| | |
| | | <!-- 摄像机 --> |
| | | <LinkageCameraBox |
| | | :cameras="item.cameraIds" |
| | | @addLinkageRule="addLinkageRule" |
| | | @addLinkageRule="addLinkageRule(item.cameraIds)" |
| | | ></LinkageCameraBox> |
| | | <div class="Anchor" :id="'linkage_camera' + index"></div> |
| | | |
| | |
| | | :rule="item" |
| | | @edit="editRules(item, index, 'linkage')" |
| | | @addSdk="addSdk('linkage', index)" |
| | | @backToOrigin="backToOrigin('linkage', index)" |
| | | @backToOrigin="backToOrigin('linkage', index, item.cameraIds)" |
| | | @editSdk="editSdk($event, 'linkage', index)" |
| | | @deletRule="deletRule('linkage', index)" |
| | | :id="'linkage_' + index" |
| | |
| | | </div> |
| | | </template> |
| | | |
| | | <div class="empty" @click="addLinkageRule" v-else> |
| | | <div |
| | | class="empty" |
| | | v-if="linkageRule.length <= 0 && !TreeDataPool.multiple" |
| | | > |
| | | <img src="/images/hashrate/联动场景空页面.png" alt="" /> |
| | | <div class="des">暂无联动场景</div> |
| | | </div> |
| | | |
| | | <div |
| | | class="newCameraArea" |
| | | v-if="linkageRule.length <= 0 && TreeDataPool.multiple" |
| | | > |
| | | <LinkageCameraBox |
| | | :cameras="CarmerasId" |
| | | @addLinkageRule="addLinkageRule(CarmerasId)" |
| | | ></LinkageCameraBox> |
| | | |
| | | <div class="empty"> |
| | | <img src="/images/hashrate/联动场景空页面.png" alt="" /> |
| | | <div class="des">暂无联动场景</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | selectedCameraIds() { |
| | | return this.TreeDataPool.selectedNodes; |
| | | }, |
| | | CarmerasId() { |
| | | let arr = []; |
| | | this.Carmeras.forEach((item) => { |
| | | arr.push(item.cameraId); |
| | | }); |
| | | return arr; |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | prevEl: ".swiper-next-border", |
| | | }, |
| | | }, |
| | | showNewLinkage: false, |
| | | newLinkageIds: [], |
| | | |
| | | // swiperOption: { |
| | | // slidesPerView: 5, |
| | |
| | | this.$refs.canvas.showModal(); |
| | | } |
| | | }, |
| | | |
| | | getCanvasData(data) { |
| | | let polyon = { ...data }; |
| | | polyon.camera_id = this.Camera.cameraId; |
| | |
| | | let carmeras = this.Carmeras; |
| | | for (let i = 0; i < carmeras.length; i++) { |
| | | swipers = swipers.concat({ |
| | | cameraId: carmeras[i].cameraId, |
| | | name: carmeras[i].camearInfo.name, |
| | | camera: { |
| | | cameraId: carmeras[i].cameraId, |
| | | cameraName: carmeras[i].cameraName, |
| | | type: carmeras[i].type, |
| | | rtsp: carmeras[i].rtsp, |
| | | }, |
| | | baseImg: carmeras[i].baseImg ? carmeras[i].baseImg : undefined, |
| | | canvasData: carmeras[i].canvasData, |
| | | loading: carmeras[i].loading, |
| | |
| | | this.swipercanvasData = swipers; |
| | | }, |
| | | refresh(url) { |
| | | console.log(url); |
| | | this.Camera.baseImg = url; |
| | | }, |
| | | refresh2(url, id) { |
| | |
| | | this.runType = element.run_type; |
| | | } |
| | | }); |
| | | |
| | | // 获取混合场景 |
| | | this.showRules(id); |
| | | }, |
| | | |
| | | // 获取混合场景 |
| | | showRules(id) { |
| | | if (!id) { |
| | | return; |
| | | } |
| | | if (typeof id === "string") { |
| | | id = [id]; |
| | | } |
| | | let rules = []; |
| | | |
| | | getLinkSceneRule({ cameraIds: [id] }) |
| | | getLinkSceneRule({ cameraIds: id }) |
| | | .then((rsp) => { |
| | | if (rsp && rsp.success) { |
| | | rules = rsp.data.rules; |
| | |
| | | this.showAddBox = true; |
| | | }, |
| | | |
| | | addLinkageRule() { |
| | | if (this.Carmeras.length < 2) { |
| | | addLinkageRule(ids) { |
| | | if (ids.length < 2) { |
| | | this.$message({ |
| | | message: "请至少选择两台摄像机", |
| | | type: "warning", |
| | | }); |
| | | return; |
| | | } |
| | | this.newLinkageIds = ids; |
| | | this.ruleType = "linkage"; |
| | | this.showAddBox = true; |
| | | }, |
| | |
| | | }); |
| | | } else { |
| | | //联动场景 |
| | | let arr = [this.Camera.cameraId]; |
| | | this.Carmeras.forEach((item) => { |
| | | if (item.cameraId != this.Camera.cameraId) { |
| | | arr.push(item.cameraId); |
| | | } |
| | | }); |
| | | newRule.data.cameraIds = arr; |
| | | newRule.data.cameraIds = this.newLinkageIds; |
| | | this.linkageRule.push(newRule.data); |
| | | this.$nextTick(() => { |
| | | this.connectLine2(); |
| | |
| | | } |
| | | |
| | | this.showAddBox = false; |
| | | this.$forceUpdate(); |
| | | } |
| | | this.editData = {}; |
| | | }, |
| | |
| | | }, |
| | | |
| | | //取消修改 |
| | | async backToOrigin(type, index) { |
| | | async backToOrigin(type, index, ids) { |
| | | if (type === "separate") { |
| | | const rsp = await getCameraSceneRule({ |
| | | cameraId: this.Camera.cameraId, |
| | |
| | | this.$forceUpdate(); |
| | | this.connectLine(); |
| | | } else { |
| | | getLinkSceneRule({ cameraIds: [this.Camera.cameraId] }).then((rsp) => { |
| | | getLinkSceneRule({ cameraIds: ids }).then((rsp) => { |
| | | if (rsp && rsp.success) { |
| | | let rules = rsp.data.rules ? rsp.data.rules : []; |
| | | if (rules[index]) { |
| | |
| | | } |
| | | } |
| | | |
| | | .newCameraArea { |
| | | display: flex; |
| | | .empty { |
| | | margin-left: 60px; |
| | | width: 1220px; |
| | | height: 198px; |
| | | border: 1px solid #c0c5cc; |
| | | border-radius: 5px; |
| | | text-align: center; |
| | | background: #f0f5fa; |
| | | img { |
| | | margin-top: 14px; |
| | | width: 250px; |
| | | height: 150px; |
| | | } |
| | | |
| | | .des { |
| | | margin-top: 2px; |
| | | color: #666; |
| | | } |
| | | } |
| | | } |
| | | |
| | | ::v-deep .sourcePoint { |
| | | margin-top: -4px; |
| | | margin-left: -6px; |