longyvfengyun
2024-05-21 ef8dc882844b82df108601b6f3ee325d4fe46f87
内容提交
13个文件已修改
1个文件已添加
6766 ■■■■■ 已修改文件
package.json 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/m-elementui.css 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/config.module.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/ezVideo.vue 150 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/ezVideoItem.vue 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/diagrams/intelCircuit/index.vue 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/diagrams/intelCircuit/js/circuitDiagram.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/diagrams/intelCircuit/js/state.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/diagrams/parallelPower9149/index.vue 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/intelRealTime.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/realTime.vue 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/realTime9149.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yarn.lock 6127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json
@@ -41,14 +41,15 @@
    "video.js": "^7.14.3",
    "videojs-flash": "^2.1.0",
    "videojs-swf": "^5.4.2",
    "vue": "2.6.10",
    "vue": "^2.6.10",
    "vue-draggable-resizable": "^2.2.0",
    "vue-js-modal": "^2.0.1",
    "vue-jsonp": "^0.1.8",
    "vue-layer": "^1.2.0",
    "vue-router": "3.0.6",
    "vue-seamless-scroll": "^1.1.23",
    "vuejs-progress-bar": "^1.2.2",
    "vue-virtual-scroller": "^1.1.2",
    "vuejs-progress-bar": "^1.2.2",
    "vuex": "3.1.0",
    "xlsx": "^0.16.8"
  },
src/assets/css/m-elementui.css
@@ -167,3 +167,12 @@
.el-table-filter .el-checkbox{
  color: #606266;
}
.vm--container {
  width: 0;
  height: 0;
}
.vm--overlay {
  display: none;
}
src/assets/js/config.module.js
@@ -2,8 +2,8 @@
  logo: {
    label: '平台logo',
    des: '显示平台logo状态',
    fileName: 'gdnr',       // gjdw, nfdw, gjdx, qwh, gdnr
    value: true,
    fileName: 'gjdw',       // gjdw, nfdw, gjdx, qwh, gdnr
    value: false,
  },
  uKey: {
    label: 'uKey',
@@ -91,11 +91,11 @@
     * 南京测控: 'njck'
     * 云南昆明供电局:'ynkm'
     */
     name: '',
     // name: '',
    // name: 'sxty',   // 请查看alarmPopup是否开启,logo是否开启且为gjdw
    // name: 'tydc',
    // name: 'njck',
    // name: 'ynkm',
    name: 'ynkm',
    //value: false,
  },
  // 是否要(加验签) 安全模式
@@ -121,8 +121,8 @@
  alarmPopup: {
    label: "告警弹出框",
    des: "登录平台后,右下方告警弹出框提示",
    // value: false
    value: false
    // value: true
  },
  WHYC: {
    label: '自用',
src/components/ezVideo.vue
@@ -1,18 +1,26 @@
<template>
  <div class="ez-open">
    <div :id="id"></div>
  </div>
<!--  <el-row>-->
<!--    <el-col :span="24" v-for="(item, key) in snList" :key="'key'+key">-->
<!--      <ez-video-item :width="width" :height="height" :sn="item"></ez-video-item>-->
<!--    </el-col>-->
<!--  </el-row>-->
  <el-carousel :autoplay="false" trigger="click" indicator-position="none" :interval="0" height="400px">
    <el-carousel-item v-for="(item, key) in snList" :key="'key'+key">
      <ez-video-item :width="width" :height="height" :sn="item"></ez-video-item>
    </el-carousel-item>
  </el-carousel>
</template>
<script>
import EZUIKit from "ezuikit-js";
import {
  getAccessToken
} from '@/assets/js/api';
import ezVideoItem from "@/components/ezVideoItem.vue";
export default {
  name: "ezVideo",
  player: "",
  components: {
    ezVideoItem
  },
  props: {
    type: {
      type: String,
@@ -32,126 +40,18 @@
    },
  },
  data() {
    let id = "video-container-" + Math.random();
    return {
      id: id,
      accessToken: "",
    };
    return {}
  },
  methods: {
    getAccessToken() {
      getAccessToken()
        .then((res) => {
          res = res.data;
          if (res.code) {
            this.accessToken = res.data;
          } else {
            this.accessToken = "";
          }
          this.init();
        })
        .catch((error) => {
          this.init();
          console.log(error);
        });
    },
    init() {
      let player = this.$options.player;
      let width = this.width;
      let height = this.height;
      let type = this.type;
      let url = "ezopen://open.ys7.com/" + this.sn + "/1.live";
      let id = this.id;
      let accessToken = this.accessToken;
      player = new EZUIKit.EZUIKitPlayer({
        autoplay: true,
        id: id,
        accessToken: accessToken,
        url: url,
        template: "theme", // simple - 极简版;standard-标准版;security - 安防版(预览回放);voice-语音版;
        // 视频上方头部控件
        // header: ["capturePicture", "save", "zoom"], // 如果templete参数不为simple,该字段将被覆盖
        // plugin: ['talk'],                       // 加载插件,talk-对讲
        // 视频下方底部控件
        themeData: {
          "footer": {
            "color": "#FFFFFF",
            "activeColor": "#1890FF",
            "backgroundColor": "#00000021",
            "btnList": [
              {
                "iconId": "play",
                "part": "left",
                "defaultActive": 1,
                "memo": "播放",
                "isrender": 1
              },
              {
                "iconId": "capturePicture",
                "part": "left",
                "defaultActive": 0,
                "memo": "截屏按钮",
                "isrender": 1
              },
              {
                "iconId": "sound",
                "part": "left",
                "defaultActive": 0,
                "memo": "声音按钮",
                "isrender": 1
              },
              {
                "iconId": "pantile",
                "part": "left",
                "defaultActive": 0,
                "memo": "云台控制按钮",
                "isrender": 1
              },
              {
                "iconId": "hd",
                "part": "right",
                "defaultActive": 0,
                "memo": "清晰度切换按钮",
                "isrender": 1
              },
              {
                "iconId": "expend",
                "part": "right",
                "defaultActive": 0,
                "memo": "全局全屏按钮",
                "isrender": 1
              }
            ]
          }
        },
        //footer: ["talk", "broadcast", "hd", "fullScreen"], // 如果template参数不为simple,该字段将被覆盖
        // audio: 1, // 是否默认开启声音 0 - 关闭 1 - 开启
        // openSoundCallBack: data => console.log("开启声音回调", data),
        // closeSoundCallBack: data => console.log("关闭声音回调", data),
        // startSaveCallBack: data => console.log("开始录像回调", data),
        // stopSaveCallBack: data => console.log("录像回调", data),
        // capturePictureCallBack: data => console.log("截图成功回调", data),
        // fullScreenCallBack: data => console.log("全屏回调", data),
        // getOSDTimeCallBack: data => console.log("获取OSDTime回调", data),
        width: width,
        height: height,
      });
    },
    stop() {
      let player = this.$options.player;
      if (player) {
        this.player.stop();
      }
    },
  },
  mounted() {
    this.getAccessToken();
  },
  beforeDestroy() {
    this.stop();
  },
  computed: {
    snList() {
      return this.sn.split(",");
    }
  }
};
</script>
<style scoped>
<style scoped lang="less">
.ez-open {
  position: relative;
}
</style>
src/components/ezVideoItem.vue
New file
@@ -0,0 +1,165 @@
<template>
  <div class="ez-open">
    <div :id="id"></div>
  </div>
</template>
<script>
import EZUIKit from "ezuikit-js";
import {
  getAccessToken
} from '@/assets/js/api';
export default {
  name: "ezVideoList",
  player: "",
  props: {
    type: {
      type: String,
      default: "standard",
    },
    width: {
      type: Number,
      default: 600,
    },
    height: {
      type: Number,
      default: 400,
    },
    sn: {
      type: String,
      default: "",
    },
  },
  data() {
    let id = "video-container-" + Math.random();
    return {
      id: id,
      accessToken: "",
      sSn: "",
    };
  },
  computed: {
    snList() {
      return this.sn.split(",");
    }
  },
  methods: {
    getAccessToken() {
      getAccessToken()
        .then((res) => {
          res = res.data;
          if (res.code) {
            this.accessToken = res.data;
          } else {
            this.accessToken = "";
          }
          this.init();
        })
        .catch((error) => {
          this.init();
          console.log(error);
        });
    },
    init() {
      let player = this.$options.player;
      let width = this.width;
      let height = this.height;
      let type = this.type;
      this.sSn = this.snList[0];
      let url = "ezopen://open.ys7.com/" + this.sn + "/1.live";
      let id = this.id;
      let accessToken = this.accessToken;
      player = new EZUIKit.EZUIKitPlayer({
        autoplay: true,
        id: id,
        accessToken: accessToken,
        url: url,
        template: "theme", // simple - 极简版;standard-标准版;security - 安防版(预览回放);voice-语音版;
        // 视频上方头部控件
        // header: ["capturePicture", "save", "zoom"], // 如果templete参数不为simple,该字段将被覆盖
        // plugin: ['talk'],                       // 加载插件,talk-对讲
        // 视频下方底部控件
        themeData: {
          "footer": {
            "color": "#FFFFFF",
            "activeColor": "#1890FF",
            "backgroundColor": "#00000021",
            "btnList": [
              {
                "iconId": "play",
                "part": "left",
                "defaultActive": 1,
                "memo": "播放",
                "isrender": 1
              },
              {
                "iconId": "capturePicture",
                "part": "left",
                "defaultActive": 0,
                "memo": "截屏按钮",
                "isrender": 1
              },
              {
                "iconId": "sound",
                "part": "left",
                "defaultActive": 0,
                "memo": "声音按钮",
                "isrender": 1
              },
              {
                "iconId": "pantile",
                "part": "left",
                "defaultActive": 0,
                "memo": "云台控制按钮",
                "isrender": 1
              },
              {
                "iconId": "hd",
                "part": "right",
                "defaultActive": 0,
                "memo": "清晰度切换按钮",
                "isrender": 1
              },
              {
                "iconId": "expend",
                "part": "right",
                "defaultActive": 0,
                "memo": "全局全屏按钮",
                "isrender": 1
              }
            ]
          }
        },
        //footer: ["talk", "broadcast", "hd", "fullScreen"], // 如果template参数不为simple,该字段将被覆盖
        // audio: 1, // 是否默认开启声音 0 - 关闭 1 - 开启
        // openSoundCallBack: data => console.log("开启声音回调", data),
        // closeSoundCallBack: data => console.log("关闭声音回调", data),
        // startSaveCallBack: data => console.log("开始录像回调", data),
        // stopSaveCallBack: data => console.log("录像回调", data),
        // capturePictureCallBack: data => console.log("截图成功回调", data),
        // fullScreenCallBack: data => console.log("全屏回调", data),
        // getOSDTimeCallBack: data => console.log("获取OSDTime回调", data),
        width: width,
        height: height,
      });
    },
    stop() {
      let player = this.$options.player;
      if (player) {
        this.player.stop();
      }
    },
  },
  mounted() {
    this.getAccessToken();
  },
  beforeDestroy() {
    this.stop();
  },
};
</script>
<style scoped lang="less">
</style>
src/main.js
@@ -4,6 +4,9 @@
import beforeRouteChange from './assets/js/beforeRouteChange'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import VueJSModal from 'vue-js-modal';
Vue.use(VueJSModal);
import AfTableColumn from 'af-table-column-s'
Vue.use(AfTableColumn);
src/views/dataTest/components/diagrams/intelCircuit/index.vue
@@ -2,6 +2,12 @@
import circuitDiagram from "./js/circuitDiagram";
import state from "./js/state";
import getIntelDevState from "@/views/dataTest/js/getIntelDevState";
import const_digit from "@/assets/js/const/const_digit";
const {
  vol: VOL,
  curr: CURR,
  temp: TEMP,
} = const_digit;
export default {
  name: "intelCircuit",
  diagram: "",
@@ -82,61 +88,61 @@
      diagram.setOption(
        "dcDc1InVol",
        "text",
        "输入电压:" + option.dcdc1Inputvol + "V"
        "电压:" + option.dcdc1Inputvol.toHold(VOL) + "V"
      );
      diagram.setOption(
        "dcDc1InCurr",
        "text",
        "输入电流:" + option.dcdc1Inputcurr + "A"
        "输入电流:" + option.dcdc1Inputcurr.toHold(CURR) + "A"
      );
      diagram.setOption(
        "dcDc1OutVol",
        "text",
        "输出电压:" + option.dcdc1Outputvol + "V"
        "输出电压:" + option.dcdc1Outputvol.toHold(VOL) + "V"
      );
      diagram.setOption(
        "dcDc1OutCurr",
        "text",
        "输出电流:" + option.dcdc1Outputcurr + "A"
        "输出电流:" + option.dcdc1Outputcurr.toHold(CURR) + "A"
      );
      diagram.setOption(
        "dcDc1Temp",
        "text",
        "模块温度:" + option.dcdc1Temp + "℃"
        "模块温度:" + option.dcdc1Temp.toHold(TEMP) + "℃"
      );
      diagram.setOption(
        "dcDc2InVol",
        "text",
        "输入电压:" + option.dcdc2Inputvol + "V"
        "电压:" + option.dcdc2Inputvol.toHold(VOL) + "V"
      );
      diagram.setOption(
        "dcDc2InCurr",
        "text",
        "输入电流:" + option.dcdc2Inputcurr + "A"
        "输入电流:" + option.dcdc2Inputcurr.toHold(CURR) + "A"
      );
      diagram.setOption(
        "dcDc2OutVol",
        "text",
        "输出电压:" + option.dcdc2Outputvol + "V"
        "输出电压:" + option.dcdc2Outputvol.toHold(VOL) + "V"
      );
      diagram.setOption(
        "dcDc2OutCurr",
        "text",
        "输出电流:" + option.dcdc2Outputcurr + "A"
        "输出电流:" + option.dcdc2Outputcurr.toHold(CURR) + "A"
      );
      diagram.setOption(
        "dcDc2Temp",
        "text",
        "模块温度:" + option.dcdc2Temp + "℃"
        "模块温度:" + option.dcdc2Temp.toHold(TEMP) + "℃"
      );
      state(diagram, {
@@ -151,11 +157,17 @@
      if(this.isConnect) {
        let state0 = this.state[0];
        if(state0.value1 === 0 && state0.value2 === 0) {
          // dcdc1关机,dcdc2关机
          return 3;
        }else if(state0.value1 === 1 && state0.value2 !== 1) {
          // dcdc1开机,dcdc2关机
          return 2;
        }else if(state0.value1 !== 1 && state0.value2 === 2) {
        }else if(state0.value1 !== 1 && state0.value2 === 1) {
          // dcdc1关机,dcdc2开机
          return 1;
        }else if(state0.value1 === 1 && state0.value2 === 1) {
          // dcdc1开机,dcdc2开机
          return 4;
        }
      }else {
        return 0;
src/views/dataTest/components/diagrams/intelCircuit/js/circuitDiagram.js
@@ -268,7 +268,9 @@
  addDcDcText(diagram, {
    rect2,
    rect4
    rect4,
    line1,
    line9,
  });
  let dashLine1 = diagram.dashLine({
@@ -310,7 +312,7 @@
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [line1[0][0]+16, line1[0][1]-18]
    point: [line1[0][0], line1[0][1]-36]
  });
  diagram.text({
@@ -320,7 +322,7 @@
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [line9[1][0]-16, line9[1][1]-18]
    point: [line9[1][0], line9[1][1]-36]
  });
  // diagram.arrow({
@@ -547,7 +549,9 @@
function addDcDcText(diagram, option) {
  let {
    rect2,
    rect4
    rect4,
    line1,
    line9
  } = option;
  diagram.text({
@@ -577,13 +581,13 @@
  diagram.text({
    flush: true,
    id: "dcDc1InVol",
    text: "输入电流:0V",
    align: 'end',
    text: "电压:0V",
    align: 'start',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect2.left[0]-8, rect2.left[1]-18]
    point: [line1[0][0], line1[0][1]-16]
  });
  diagram.text({
@@ -595,7 +599,7 @@
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect2.left[0]-8, rect2.left[1]+18]
    point: [rect2.left[0]-8, rect2.left[1]-18]
  });
  diagram.text({
@@ -613,13 +617,13 @@
  diagram.text({
    flush: true,
    id: "dcDc2InVol",
    text: "输入电压:0V",
    align: 'start',
    text: "电压:0V",
    align: 'end',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect4.right[0]+8, rect4.right[1]-18]
    point: [line9[1][0]+8, line9[1][1]-16]
  });
  diagram.text({
@@ -631,7 +635,7 @@
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect4.right[0]+8, rect4.right[1]+18]
    point: [rect4.right[0]+8, rect4.right[1]-18]
  });
  diagram.text({
src/views/dataTest/components/diagrams/intelCircuit/js/state.js
@@ -25,6 +25,9 @@
  }else if(type === 3) {
    normal1(diagram, option);
    normal2(diagram, option);
  }else if(type === 4) {
    normal1(diagram, option);
    normal2(diagram, option);
  }
  // normal1(diagram, option);
src/views/dataTest/components/diagrams/parallelPower9149/index.vue
@@ -66,36 +66,36 @@
        this.$options.diagram.stop();
      }
    },
    // setDiagramByType() {
    //   let type = this.type;
    //   let diagram = this.$options.diagram;
    //   switch (type) {
    //     case -1: // 设备断开
    //       diagramStates(diagram, "break");
    //       break;
    //     case 0: // 浮充
    //       diagramStates(diagram, "float");
    //       break;
    //     case 1: // 放电
    //       diagramStates(diagram, "discharge");
    //       break;
    //     case 2: // 充电
    //       diagramStates(diagram, "charge");
    //       break;
    //     case 3: // KD测试
    //       diagramStates(diagram, "kd");
    //       break;
    //     case 4: // 离线养护测试
    //       diagramStates(diagram, "yh");
    //       break;
    //     case 5: // 停电放电
    //       diagramStates(diagram, "powerCutDischarge");
    //       break;
    //     default:
    //       diagramStates(diagram, "");
    //       break;
    //   }
    // },
    setDiagramByType() {
      let type = this.type;
      let diagram = this.$options.diagram;
      switch (type) {
        case -1: // 设备断开
          diagramStates(diagram, "break");
          break;
        case 0: // 浮充
          diagramStates(diagram, "float");
          break;
        case 1: // 放电
          diagramStates(diagram, "discharge");
          break;
        case 2: // 充电
          diagramStates(diagram, "charge");
          break;
        case 3: // KD测试
          diagramStates(diagram, "kd");
          break;
        case 4: // 离线养护测试
          diagramStates(diagram, "yh");
          break;
        case 5: // 停电放电
          diagramStates(diagram, "powerCutDischarge");
          break;
        default:
          diagramStates(diagram, "");
          break;
      }
    },
    updateDiagram(data) {
      let diagram = this.$options.diagram;
      let {
src/views/dataTest/intelRealTime.vue
@@ -7,6 +7,7 @@
import IntelDevStateTools from "@/views/dataTest/components/IntelDevStateTools.vue";
import IntelCircuit from "@/views/dataTest/components/diagrams/intelCircuit/index.vue";
import createWs from "@/assets/js/websocket";
import ezVideo from "@/components/ezVideo";
import { getBit } from "@/assets/js/const/const_storage";
const WSMixin = createWs("Intelligent");
@@ -20,9 +21,12 @@
    HdwLight,
    ContentBox,
    HomeList,
    ezVideo,
  },
  data() {
    return {
      esVideoDialog: false,
      esVideoSn: "",
      homeListShow: true,
      batt: {},
      acTabs: "eleLine",
@@ -58,6 +62,18 @@
    },
  },
  methods: {
    showEsVideoDialog() {
      this.esVideoDialog  = true;
      this.$nextTick(()=>{
        this.$modal.show("videoModal");
      });
    },
    closeEsVideoDialog() {
      this.$modal.hide("videoModal");
      this.$nextTick(()=>{
        this.esVideoDialog  = false;
      });
    },
    getBattGroupInfo(battGroupId) {
      this.homeListShow = false;
      getBattGroupInfo(battGroupId)
@@ -78,6 +94,7 @@
    },
    leafClick(data) {
      this.batt = data;
      this.esVideoSn = data.videoUrl;
      this.$nextTick(() => {
        // 开启循环请求
        this.sendMessage();
@@ -124,7 +141,6 @@
          item.value2 = getBit(data.dcdc2Errcode, item.bit);
        });
      }
      // 更新数据
      this.diagram.update = Math.random();
    },
@@ -171,7 +187,34 @@
          :state="stateList"
        ></intel-circuit>
      </div>
      <div
        slot="box-tools"
        class="box-tools"
        style="right: 8px"
        v-if="esVideoSn"
      >
        <el-tooltip
          class="item"
          effect="dark"
          content="视频监控"
          placement="bottom"
        >
          <i
            class="el-iconfont el-icon-video-camera-solid"
            @click="showEsVideoDialog"
          ></i>
        </el-tooltip>
      </div>
    </content-box>
    <modal name="videoModal" :draggable="true" height="auto" :clickToClose="false" :overlayTransition="null">
      <div class="modal-title-wrapper">
        <div class="modal-title-content">视频监控</div>
        <div class="modal-title-tools">
          <i class="el-icon-close" @click="closeEsVideoDialog"></i>
        </div>
      </div>
      <ez-video v-if="esVideoDialog" :sn="esVideoSn"></ez-video>
    </modal>
  </flex-layout>
</template>
@@ -214,4 +257,21 @@
    }
  }
}
.modal-title-wrapper {
  background-color: #00fefe;
  color: #003d64;
  font-weight: bold;
  display: flex;
  padding: 8px 0;
  .modal-title-content {
    flex: 1;
    padding: 0 8px;
    cursor: move;
  }
  .modal-title-tools {
    padding: 0 8px;
    cursor: pointer;
  }
}
</style>
src/views/dataTest/realTime.vue
@@ -47,7 +47,7 @@
        >
          <i
            class="el-iconfont el-icon-video-camera-solid"
            @click="esVideoDialog = true"
            @click="showEsVideoDialog"
          ></i>
        </el-tooltip>
      </div>
@@ -931,17 +931,26 @@
    >
      <stop-curing v-if="stopCuringDialog.show" :batt="batt"></stop-curing>
    </el-dialog>
    <el-dialog
      title="视频监控"
      width="600px"
      :visible.sync="esVideoDialog"
      :close-on-click-modal="false"
      top="0"
      class="dialog-center"
      :modal-append-to-body="false"
    >
<!--    <el-dialog-->
<!--      title="视频监控"-->
<!--      width="600px"-->
<!--      :visible.sync="esVideoDialog"-->
<!--      :close-on-click-modal="false"-->
<!--      top="0"-->
<!--      class="dialog-center"-->
<!--      :modal-append-to-body="false"-->
<!--    >-->
<!--      <ez-video v-if="esVideoDialog" :sn="esVideoSn"></ez-video>-->
<!--    </el-dialog>-->
    <modal name="videoModal" :draggable="true" height="auto" :clickToClose="false">
      <div class="modal-title-wrapper">
        <div class="modal-title-content">视频监控</div>
        <div class="modal-title-tools">
          <i class="el-icon-close" @click="closeEsVideoDialog"></i>
        </div>
      </div>
      <ez-video v-if="esVideoDialog" :sn="esVideoSn"></ez-video>
    </el-dialog>
    </modal>
    <el-dialog
      title="历史内阻数据"
      width="1200px"
@@ -1897,6 +1906,18 @@
    };
  },
  methods: {
    showEsVideoDialog() {
      this.esVideoDialog  = true;
      this.$nextTick(()=>{
        this.$modal.show("videoModal");
      });
    },
    closeEsVideoDialog() {
      this.$modal.hide("videoModal");
      this.$nextTick(()=>{
        this.esVideoDialog  = false;
      });
    },
    // 成都石化判断
    cdshFan: function () {
      return this.$CFG.clientName.name;
@@ -4754,4 +4775,21 @@
    text-align: right;
  }
}
.modal-title-wrapper {
  background-color: #00fefe;
  color: #003d64;
  font-weight: bold;
  display: flex;
  padding: 8px 0;
  .modal-title-content {
    flex: 1;
    padding: 0 8px;
    cursor: move;
  }
  .modal-title-tools {
    padding: 0 8px;
    cursor: pointer;
  }
}
</style>
src/views/dataTest/realTime9149.vue
@@ -14,7 +14,7 @@
      </div>
      <div slot="box-tools" class="box-tools" style="right: 72px" v-if="esVideoSn">
        <el-tooltip class="item" effect="dark" content="视频监控" placement="bottom">
          <i class="el-iconfont el-icon-video-camera-solid" @click="esVideoDialog = true"></i>
          <i class="el-iconfont el-icon-video-camera-solid" @click="showEsVideoDialog"></i>
        </el-tooltip>
      </div>
      <div style="right: 72px" slot="box-tools" class="box-tools">
@@ -243,10 +243,19 @@
      :close-on-click-modal="false" top="0" class="dialog-center no-bg" :modal-append-to-body="false">
      <history-realtime-data :batt="batt" v-if="historyRealTimeDataDialog.show"></history-realtime-data>
    </el-dialog>
    <el-dialog title="视频监控" width="600px" :visible.sync="esVideoDialog" :close-on-click-modal="false" top="0"
      class="dialog-center" :modal-append-to-body="false">
<!--    <el-dialog title="视频监控" width="600px" :visible.sync="esVideoDialog" :close-on-click-modal="false" top="0"-->
<!--      class="dialog-center" :modal-append-to-body="false">-->
<!--      <ez-video v-if="esVideoDialog" :sn="esVideoSn"></ez-video>-->
<!--    </el-dialog>-->
    <modal name="videoModal" :draggable="true" height="auto" :clickToClose="false">
      <div class="modal-title-wrapper">
        <div class="modal-title-content">视频监控</div>
        <div class="modal-title-tools">
          <i class="el-icon-close" @click="closeEsVideoDialog"></i>
        </div>
      </div>
      <ez-video v-if="esVideoDialog" :sn="esVideoSn"></ez-video>
    </el-dialog>
    </modal>
    <el-dialog title="历史内阻数据" width="1200px" :visible.sync="hisResDialog" :close-on-click-modal="false" top="0"
      class="dialog-center" :modal-append-to-body="false">
      <history-res v-if="hisResDialog" :batt="batt"></history-res>
@@ -299,7 +308,7 @@
import StopCuring from "./components/StopCuring";
import NiBianInfoTab from "./components/NiBianInfoTab";
import dcWorkParams from "./components/dcdc/workParams";
import CircuitDiagram from "./components/diagrams/parallelPower9141";
import CircuitDiagram from "./components/diagrams/parallelPower9149";
import RightMenu from "./components/RightMenu";
import historyRes from "./components/historyRes";
import BalanceSupplyModule from "./components/balance-supply-module.vue";
@@ -911,6 +920,18 @@
    };
  },
  methods: {
    showEsVideoDialog() {
      this.esVideoDialog  = true;
      this.$nextTick(()=>{
        this.$modal.show("videoModal");
      });
    },
    closeEsVideoDialog() {
      this.$modal.hide("videoModal");
      this.$nextTick(()=>{
        this.esVideoDialog  = false;
      });
    },
    tabClick(tab) {
      this.acTabs = tab.name;
      // 根据tab更新电路图
@@ -2703,3 +2724,22 @@
  display: inline-block;
}
</style>
<style scoped lang="less">
.modal-title-wrapper {
  background-color: #00fefe;
  color: #003d64;
  font-weight: bold;
  display: flex;
  padding: 8px 0;
  .modal-title-content {
    flex: 1;
    padding: 0 8px;
    cursor: move;
  }
  .modal-title-tools {
    padding: 0 8px;
    cursor: pointer;
  }
}
</style>
yarn.lock
Diff too large