ZZJ
2022-05-27 a689af1348938afd3b4506aad9b6d5057193e25d
src/views/hashrate/CameraManage/CameraRules/index.vue
@@ -56,7 +56,7 @@
            :disabled="false"
            :snapshot_url="Camera.baseImg"
            :canvasDataShow="Camera.canvasData"
            :currentCameraId="Camera.cameraId"
            :currentCamera="Camera"
            :loading="Camera.loading"
            :canvasWidth="canvasWidth"
            :canvasHeight="canvasHeight"
@@ -92,14 +92,14 @@
                  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>
@@ -178,7 +178,7 @@
          <!-- 摄像机 -->
          <LinkageCameraBox
            :cameras="item.cameraIds"
            @addLinkageRule="addLinkageRule"
            @addLinkageRule="addLinkageRule(item.cameraIds)"
          ></LinkageCameraBox>
          <div class="Anchor" :id="'linkage_camera' + index"></div>
@@ -189,7 +189,7 @@
              :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"
@@ -198,9 +198,27 @@
        </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>
@@ -286,6 +304,13 @@
    selectedCameraIds() {
      return this.TreeDataPool.selectedNodes;
    },
    CarmerasId() {
      let arr = [];
      this.Carmeras.forEach((item) => {
        arr.push(item.cameraId);
      });
      return arr;
    },
  },
  data() {
    return {
@@ -328,6 +353,8 @@
          prevEl: ".swiper-next-border",
        },
      },
      showNewLinkage: false,
      newLinkageIds: [],
      // swiperOption: {
      //   slidesPerView: 5,
@@ -471,6 +498,7 @@
        this.$refs.canvas.showModal();
      }
    },
    getCanvasData(data) {
      let polyon = { ...data };
      polyon.camera_id = this.Camera.cameraId;
@@ -484,8 +512,12 @@
      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,
@@ -494,6 +526,7 @@
      this.swipercanvasData = swipers;
    },
    refresh(url) {
      console.log(url);
      this.Camera.baseImg = url;
    },
    refresh2(url, id) {
@@ -538,16 +571,19 @@
          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;
@@ -781,14 +817,15 @@
      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;
    },
@@ -808,13 +845,7 @@
          });
        } 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();
@@ -854,6 +885,7 @@
        }
        this.showAddBox = false;
        this.$forceUpdate();
      }
      this.editData = {};
    },
@@ -912,7 +944,7 @@
    },
    //取消修改
    async backToOrigin(type, index) {
    async backToOrigin(type, index, ids) {
      if (type === "separate") {
        const rsp = await getCameraSceneRule({
          cameraId: this.Camera.cameraId,
@@ -931,7 +963,7 @@
        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]) {
@@ -1226,6 +1258,29 @@
      }
    }
    .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;