mark
2022-10-25 f20a554bdb24e9dfde9dc6a69d78595944f61d15
src/views/hashrate/CameraManage/CameraRules/components/LinkageCameraBox.vue
@@ -1,60 +1,56 @@
<template>
  <div class="CameraBox">
    <div v-if="cameras">
      <div v-for="(camera, index) in cameraArr" :key="index" class="boxItem">
        <div class="header">
          <i class="iconfont">&#xe646;</i>
          <div class="name">{{ camera.cameraName }}</div>
          <el-switch
            v-model="camera.analytics"
            @change="pollEnable($event, index)"
            active-color="#D4E3FA"
            inactive-color="#E9EBEE"
            :width="56"
          >
          </el-switch>
        </div>
        <div class="body">
          <div class="row">
            <div class="label">处理方式:</div>
            <div
              class="button pollingBtn"
              :class="{ active: !camera.dealWay }"
              @click="changePoll(false, index)"
            >
              轮询
            </div>
            <div
              class="button realtimeBtn"
              :class="{ active: camera.dealWay }"
              @click="changePoll(true, index)"
            >
              实时
            </div>
          </div>
          <div class="row">
            <div class="label">分辨率:</div>
            <div class="data">
              {{
                !camera.camearInfo.resolutionWidth ||
                !camera.camearInfo.resolutionHeight ||
                camera.camearInfo.resolutionWidth == 0 ||
                camera.camearInfo.resolutionHeight == 0
                  ? "本机分辨率"
                  : `${camera.camearInfo.resolutionWidth} * ${camera.camearInfo.resolutionHeight}`
              }}
            </div>
          </div>
        </div>
  <div class="CameraBox" v-if="cameras">
    <div v-for="(camera, index) in cameraArr" :key="index" class="boxItem">
      <div class="header">
        <i class="iconfont">&#xe646;</i>
        <div class="name">{{ camera.cameraName }}</div>
        <el-switch
          v-model="camera.analytics"
          @change="pollEnable($event, index)"
          active-color="#D4E3FA"
          inactive-color="#E9EBEE"
          :width="56"
        >
        </el-switch>
      </div>
      <div class="footer">
        <div class="button addModel">添加到模板</div>
        <div class="button addRule" @click="addRule">添加新场景</div>
      <div class="body">
        <div class="row" v-if="camera.analytics">
          <div class="label">处理方式:</div>
          <div
            class="button pollingBtn"
            :class="{ active: !camera.dealWay }"
            @click="changePoll(false, index)"
          >
            轮询
          </div>
          <div
            class="button realtimeBtn"
            :class="{ active: camera.dealWay }"
            @click="changePoll(true, index)"
          >
            实时
          </div>
        </div>
        <div class="row">
          <div class="label">分辨率:</div>
          <div class="data">
            {{
              !camera.camearInfo.resolutionWidth ||
              !camera.camearInfo.resolutionHeight ||
              camera.camearInfo.resolutionWidth == 0 ||
              camera.camearInfo.resolutionHeight == 0
                ? "本机分辨率"
                : `${camera.camearInfo.resolutionWidth} * ${camera.camearInfo.resolutionHeight}`
            }}
          </div>
        </div>
      </div>
    </div>
    <div class="empty" v-else>暂未获得摄像机信息</div>
    <div class="footer">
      <!-- <div class="button addModel">添加到模板</div> -->
      <div class="button addRule" @click="addRule">添加新场景</div>
    </div>
  </div>
</template>
@@ -68,15 +64,16 @@
      type: Array,
    },
  },
  created() {
    this.getCameraInfo();
  },
  data() {
    return {
      cameraArr: [],
    };
  },
  created() {
    this.getCameraInfo();
  },
  computed: {},
  methods: {
    //是否进行视频分析处理
    pollEnable(row, index) {
@@ -112,7 +109,6 @@
              message: "配置失败",
            });
          }
          this.TreeDataPool.fetchTreeData();
        });
      }
      //    this.PollData.statisticTaskInfo();
@@ -120,11 +116,9 @@
    //实时、轮询切换
    changePoll(row, index) {
      if (!this.cameraArr[index].analytics) {
        return;
      }
      //判断是新增还是更新
      console.log(this.cameraArr[index]);
      if (
        this.cameraArr[index].cameraId &&
        this.cameraArr[index].cameraId !== undefined
@@ -172,7 +166,7 @@
            });
          }
        }
        this.TreeDataPool.fetchTreeData();
        //  this.TreeDataPool.fetchTreeData();
        //    this.PollData.statisticTaskInfo();
      }
    },
@@ -183,14 +177,23 @@
    },
    getCameraInfo() {
      this.cameraArr = [];
      if (this.cameras.length <= 0) {
        return;
      }
      let arr = [];
      this.cameras.forEach(async (id) => {
        if (!id) {
          return;
        }
        const rsp = await getCameraInfo(id);
        if (rsp.success) {
          this.cameraArr.push({
          arr.push({
            cameraId: rsp.data.id,
            cameraName: rsp.data.name ? rsp.data.name : "",
            analytics: rsp.data.runType !== -1 ? true : false,
            dealWay: rsp.data.runType !== 1 ? true : false,
            dealWay: rsp.data.runType == 1 ? true : false,
            camearInfo: {
              resolutionWidth: rsp.data.resolutionWidth,
              resolutionHeight: rsp.data.resolutionHeight,
@@ -198,6 +201,9 @@
          });
        }
      });
      this.cameraArr = arr;
      this.$forceUpdate();
    },
  },
  watch: {