longyvfengyun
2024-04-24 11b56835ddfde01565181daa7f740a15c5ba79c7
智能母联设备
8个文件已修改
7个文件已添加
1507 ■■■■■ 已修改文件
src/assets/js/config.module.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/const/const_devType.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/tools/regEquipType.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/index.vue 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/IntelDevStateTools.vue 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/diagrams/intelCircuit/images/load.png 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/diagrams/intelCircuit/index.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/diagrams/intelCircuit/js/circuitDiagram.js 504 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/diagrams/intelCircuit/js/state.js 277 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/diagram/index.js 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/hfSwitch.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/intelRealTime.vue 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/js/getIntelDevState.js 342 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/movingRingSystem/index.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/config.module.js
@@ -3,7 +3,7 @@
    label: '平台logo',
    des: '显示平台logo状态',
    fileName: 'gjdw',       // gjdw, nfdw, gjdx, qwh, gdnr
    value: true,
    value: false,
  },
  uKey: {
    label: 'uKey',
@@ -121,8 +121,8 @@
  alarmPopup: {
    label: "告警弹出框",
    des: "登录平台后,右下方告警弹出框提示",
    // value: false
    value: true
    value: false
    // value: true
  },
  WHYC: {
    label: '自用',
@@ -133,5 +133,5 @@
    label: '模拟数据',
    des: '开启数据模拟,实时监控显示为浮充状态',
    value: false
  }
  },
};
src/assets/js/const/const_devType.js
@@ -107,7 +107,11 @@
    {
      value: 9150,
      label: "山东定制BTS"
    }
    },
    {
      value: 2100,
      label: "智能母联"
    },
  ],
  power: [
    {
src/assets/js/tools/regEquipType.js
@@ -42,7 +42,8 @@
        remoteRestartDevice: /^61851/,  // 远程重启装置
        eleOperation: /^60870/,         // 电操核容产品
        peiWang: /^5100/,   // 配网电源
        ups: /^116/
        ups: /^116/,
        intelDev: /^2100/,  // 智能母联
    };
    let effectPtns = [];
    // 数据类型为字符串
src/layout/index.vue
@@ -77,6 +77,7 @@
        devId: "608700010",
        almId: "119020"
      },
      timeoutId: 0,
    };
  },
  mixins: [ResizeMixin, WSMixin],
@@ -342,6 +343,28 @@
        //this.endSpeak();
      });
    },
    resetTimeout() {
      clearTimeout(this.timeoutId); // 清除之前的定时器
      this.timeoutId = window.setTimeout(()=>{
        // 超时后的操作
        this.$alert('超过30分钟未操作,系统自动退出!', '系统提示', {
          type: "warning",
          confirmButtonText: '确定',
        });
        // 退出登录
        this.outSystem();
      }, 30*60*1000); // 重置为30分钟
    },
    outSystem() {
      sessionStorage.removeItem("username");
      sessionStorage.removeItem("userId");
      sessionStorage.removeItem("userPower");
      this.$store.dispatch("tagsView/delAllViews").then(({ visitedViews }) => {
        this.$router.push("/login");
      });
    },
  },
  mounted() {
    // 启动用户互斥登录模块
@@ -353,9 +376,21 @@
    // }, 4000);
    this.getAlarmVoiceSetting();
    // 开启超时30分钟未操作,退出登录
    if(config.autoExit.value) {
      this.resetTimeout();
      // 绑定用户交互事件以重置定时器
      document.addEventListener('click', this.resetTimeout);
      document.addEventListener('mousemove', this.resetTimeout);
      document.addEventListener('keydown', this.resetTimeout);
    }
  },
  destroyed() {
    this.isClose = true;
    // 销毁后移除监听
    document.removeEventListener('click', this.resetTimeout);
    document.removeEventListener('mousemove', this.resetTimeout);
    document.removeEventListener('keydown', this.resetTimeout);
  }
};
</script>
src/router/index.js
@@ -746,6 +746,16 @@
        url: '/dataTest/realTimeForPeiWang'
      },
      component: () => import('@/views/dataTest/realTimeForPeiWang')
    },{
      // 配网电源
      path: 'real-time-intel/:battGroupId',
      name: 'movingRingSystem',
      meta: {
        title: '实时监控',
        icon: '',
        url: '/dataTest/realTimeForIntel'
      },
      component: () => import('@/views/dataTest/intelRealTime.vue')
    },]
  }, {
    path: 'history',
src/views/dataTest/components/IntelDevStateTools.vue
New file
@@ -0,0 +1,77 @@
<script>
import HdwLight from "@/components/HdwLight.vue";
import {getLabelByValue} from "../../../assets/js/tools";
export default {
  name: "IntelDevStateTools",
  methods: {getLabelByValue},
  components: {HdwLight},
  props: {
    list: {
      type: Array,
      default() {
        return [];
      }
    }
  },
  data() {
    return {}
  }
}
</script>
<template>
  <div class="page-tools">
    <div class="page-tools-header">设备状态</div>
    <table class="page-tools-table">
      <tr>
        <td></td>
        <td>DCDC1</td>
        <td>DCDC2</td>
      </tr>
      <tr v-for="(item, key) in list" :key="'key'+key">
        <td class="item-label">{{ item.label }}</td>
        <td>
          <hdw-light v-if="item.type === 'light'" :type="item.value1"></hdw-light>
          <span v-else>
            {{ getLabelByValue(item.value1, item.list) }}
          </span>
        </td>
        <td>
          <hdw-light v-if="item.type === 'light'" :type="item.value1"></hdw-light>
          <span v-else>
            {{ getLabelByValue(item.value2, item.list) }}
          </span>
        </td>
      </tr>
    </table>
  </div>
</template>
<style scoped lang="less">
.page-tools {
  border-radius: 4px;
  overflow: hidden;
  border: 1px solid #00fefe;
  .page-tools-header {
    color: #003d64;
    background-color: #00fefe;
    padding: 4px 16px;
    font-weight: bold;
    text-align: center;
  }
}
.page-tools-table {
  user-select: none;
  width: 100%;
  font-size: 14px;
  color: #00fefe;
  td {
    text-align: center;
    padding: 2px 4px;
    &.item-label {
      text-align: right;
    }
  }
}
</style>
src/views/dataTest/components/diagrams/intelCircuit/images/load.png
src/views/dataTest/components/diagrams/intelCircuit/index.vue
New file
@@ -0,0 +1,48 @@
<script>
import circuitDiagram from './js/circuitDiagram';
import state from './js/state';
export default {
  name: "intelCircuit",
  diagram: "",
  props: {
    update: {
      type: Number,
      default: 0
    },
    isConnect: {
      type: Boolean,
      default: false
    },
  },
  watch: {
    update() {
      this.changeInfo();
    }
  },
  data() {
    return {}
  },
  methods: {
    init() {
      this.changeInfo();
    },
    changeInfo() {
      let diagram = this.$options.diagram;
      let isConnect = this.isConnect;
      state(diagram, {});
    },
  },
  mounted() {
    this.$options.diagram = circuitDiagram(this.$refs.static, this.$refs.flush, this.start);
    // 初始化数据
    this.init();
  }
}
</script>
<template>
  <div class="diagram-content">
    <div class="diagram-stc" ref="static"></div>
    <div class="diagram-flush" ref="flush"></div>
  </div>
</template>
src/views/dataTest/components/diagrams/intelCircuit/js/circuitDiagram.js
New file
@@ -0,0 +1,504 @@
import Diagram from '@/views/dataTest/diagram';
import loadPng from '../images/load.png';
import eleGroupImg from "@/views/dataTest/components/diagrams/eleOperation/images/eleGroup.png";
// 基础配置
const textFont = 20;
let springGreen = "#00F6FF";
let red = '#b370fe';
let yellow = "#FFF000";
let lineWidth = 2;
let arcOpts = {
  flush: false,
  fillStyle: '#50cef5',
  strokeStyle: '#50cef5',
  lineWidth: 2,
  radius: 4,
  type: 'stroke'
};
let splitWidth = 65;
function circuitDiagram(stc, flush, startPoint) {
  let diagram = new Diagram();
  diagram.setCanvas(stc, flush);
  diagram.setWidth(1500);
  diagram.setHeight(768);
  let start = [240, 160]
  if (startPoint) {
    start = startPoint;
  }
  // 线条1
  let line1 = diagram.line({
    id: 'line1',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      start,
      [start[0]+splitWidth*2, start[1]]
    ]
  });
  // 线条2
  let line2 = diagram.line({
    id: 'line2',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      line1[1],
      [line1[1][0]+splitWidth*2, line1[1][1]]
    ]
  });
  // 线条3
  let line3 = diagram.line({
    id: 'line3',
    strokeStyle: springGreen,
    lineWidth: lineWidth,
    points: [
      line1[1],
      [line1[1][0], line1[1][1]+splitWidth*2]
    ]
  });
  diagram.drawImage({
    url: loadPng,
    point: [line3[1][0]-83/2, line3[1][1]-4],
    width: 85,
    height: 133
  });
  let rect1 = diagram.drawRect({
    point: [line2[1][0], line2[1][1]-6],
    size: {
      width: 12,
      height: 12,
    },
  });
  // 线条4
  let line4 = diagram.line({
    id: 'line4',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      rect1.right,
      [rect1.right[0]+splitWidth*2, rect1.right[1]]
    ]
  });
  // 线条5
  let line5 = diagram.line({
    id: 'line5',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      line4[1],
      [line4[1][0]+splitWidth, line4[1][1]]
    ]
  });
  let rect2 = dcDcReact(diagram, line5[1], {
    springGreen,
    lineWidth,
    textReversal: false
  });
  // 线条6
  let line6 = diagram.line({
    id: 'line6',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      rect2.right,
      [rect2.right[0]+splitWidth*2, rect2.right[1]]
    ]
  });
  let diode1 = diagram.diode({
    direction: 'right',
    point: line6[1],
  });
  // 线条7
  let line7 = diagram.line({
    id: 'line7',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      diode1.right,
      [diode1.right[0]+splitWidth*2, diode1.right[1]]
    ]
  });
  let rect3 = diagram.drawRect({
    point: [line7[1][0], line7[1][1]-6],
    size: {
      width: 12,
      height: 12,
    },
  });
  // 线条8
  let line8 = diagram.line({
    id: 'line8',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      rect3.right,
      [rect3.right[0]+splitWidth*2, rect3.right[1]]
    ]
  });
  // 线条9
  let line9 = diagram.line({
    id: 'line9',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      line8[1],
      [line8[1][0]+splitWidth*2, line8[1][1]]
    ]
  });
  // 线条10
  let line10 = diagram.line({
    id: 'line10',
    strokeStyle: springGreen,
    lineWidth: lineWidth,
    points: [
      line8[1],
      [line8[1][0], line8[1][1]+splitWidth*2]
    ]
  });
  diagram.drawImage({
    url: loadPng,
    point: [line10[1][0]-83/2, line10[1][1]-4],
    width: 85,
    height: 133
  });
  // 线条11
  let line11 = diagram.line({
    id: 'line11',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      [line4[0][0]+splitWidth/2, line4[0][1]],
      [line4[0][0]+splitWidth/2, line4[0][1]+splitWidth*3]
    ]
  });
  // 线条12
  let line12 = diagram.line({
    id: 'line12',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      line11[1],
      [line11[1][0], line11[1][1]+splitWidth*3]
    ]
  });
  // 线条13
  let line13 = diagram.line({
    id: 'line13',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      line12[1],
      [line12[1][0]+splitWidth, line12[1][1]]
    ]
  });
  let diode2 = diagram.diode({
    direction: 'left',
    point: line13[1],
  });
  // 线条14
  let line14 = diagram.line({
    id: 'line14',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      diode2.right,
      [diode2.right[0]+splitWidth*2.5, diode2.right[1]]
    ]
  });
  let rect4 = dcDcReact(diagram, line14[1], {
    springGreen,
    lineWidth,
    textReversal: true
  });
  // 线条15
  let line15 = diagram.line({
    id: 'line15',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      [line7[1][0]-splitWidth/2, line7[1][1]],
      [line7[1][0]-splitWidth/2, line11[1][1]]
    ]
  });
  // 线条16
  let line16 = diagram.line({
    id: 'line16',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      line15[1],
      [line15[1][0], line12[1][1]]
    ]
  });
  // 线条17
  let line17 = diagram.line({
    id: 'line17',
    strokeStyle: springGreen,
    lineWidth: lineWidth*2,
    points: [
      line16[1],
      rect4.right
    ]
  });
  addDcDcText(diagram, {
    rect2,
    rect4
  });
  let dashLine1 = diagram.dashLine({
    strokeStyle: '#50cef5',
    points: [
      [rect1.right[0], rect1.right[1]-splitWidth*3/2],
      [rect1.right[0], line13[0][1]+splitWidth],
    ]
  });
  let dashLine2 = diagram.dashLine({
    strokeStyle: '#50cef5',
    points: [
      dashLine1[0],
      [rect3.left[0], dashLine1[0][1]],
    ]
  });
  let dashLine3 = diagram.dashLine({
    strokeStyle: '#50cef5',
    points: [
      dashLine2[1],
      [dashLine2[1][0], dashLine1[1][1]],
    ]
  });
  diagram.dashLine({
    strokeStyle: '#50cef5',
    points: [
      dashLine1[1],
      dashLine3[1]
    ]
  });
  diagram.text({
    text: "直流母线1",
    align: 'start',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [line1[0][0]+16, line1[0][1]-18]
  });
  diagram.text({
    text: "直流母线2",
    align: 'end',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [line9[1][0]-16, line9[1][1]-18]
  });
  return diagram;
}
function dcDcReact(diagram, point, option) {
  let {
    lineWidth,
    textReversal
  } = option;
  let width = 160;
  let height = 80;
  let rect = diagram.drawRect({
    point: [point[0], point[1]-height/2],
    size: {
      width,
      height,
    },
  });
  // 线条1
  diagram.line({
    strokeStyle: "#FFFFFF",
    lineWidth: lineWidth,
    points: [
      rect.bl,
      rect.tr,
    ]
  });
  diagram.text({
    text: textReversal?'DC_OUT':'DC_IN',
    align: 'center',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect.tl[0]+width/4, rect.tl[1]+height/3]
  });
  diagram.text({
    text: textReversal?'DC_IN':'DC_OUT',
    align: 'center',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect.tl[0]+width/4*3, rect.tl[1]+height/3*2]
  });
  return rect;
}
function addDcDcText(diagram, option) {
  let {
    rect2,
    rect4
  } = option;
  diagram.text({
    flush: true,
    id: "dcDc1OutVol",
    text: "输出电压:0V",
    align: 'start',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect2.right[0]+8, rect2.right[1]-18]
  });
  diagram.text({
    flush: true,
    id: "dcDc1OutCurr",
    text: "输出电流:0A",
    align: 'start',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect2.right[0]+8, rect2.right[1]+18]
  });
  diagram.text({
    flush: true,
    id: "dcDc1InVol",
    text: "输入电流:0V",
    align: 'end',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect2.left[0]-8, rect2.left[1]-18]
  });
  diagram.text({
    flush: true,
    id: "dcDc1InCurr",
    text: "输入电流:0A",
    align: 'end',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect2.left[0]-8, rect2.left[1]+18]
  });
  diagram.text({
    flush: true,
    id: "dcDc1Temp",
    text: "模块温度:0℃",
    align: 'center',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect2.top[0], rect2.top[1]-12]
  });
  diagram.text({
    flush: true,
    id: "dcDc2InVol",
    text: "输入电压:0V",
    align: 'start',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect4.right[0]+8, rect4.right[1]-18]
  });
  diagram.text({
    flush: true,
    id: "dcDc2InCurr",
    text: "输入电流:0A",
    align: 'start',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect4.right[0]+8, rect4.right[1]+18]
  });
  diagram.text({
    flush: true,
    id: "dcDc2OutVol",
    text: "输出电流:0V",
    align: 'end',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect4.left[0]-8, rect4.left[1]-18]
  });
  diagram.text({
    flush: true,
    id: "dcDc2OutCurr",
    text: "输出电流:0A",
    align: 'end',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect4.left[0]-8, rect4.left[1]+18]
  });
  diagram.text({
    flush: true,
    id: "dcDc2Temp",
    text: "模块温度:0℃",
    align: 'center',
    fontSize: 16,
    fontWeight: true,
    fillStyle: "#FFFFFF",
    baseline: 'middle',
    point: [rect4.top[0], rect4.top[1]-12]
  });
}
export default circuitDiagram;
src/views/dataTest/components/diagrams/intelCircuit/js/state.js
New file
@@ -0,0 +1,277 @@
// 基础配置
let springGreen = "#50cef5";
let scalcRadius = 9;
function state(diagram, option) {
  // 清除电流
  diagram.del(/^line.*dot$/);
  normal1(diagram, option);
  // normal2(diagram, option);
  dcDc1(diagram, option);
  // dcDc2(diagram, option);
}
function normal1(diagram, option) {
  // 绘制可移动的点
  let line1 = diagram.getOption('line1').points;
  diagram.moveDot({
    id: 'line1_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: line1,
  });
  // 绘制可移动的点
  let line3 = diagram.getOption('line3').points;
  diagram.moveDot({
    id: 'line3_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: line3,
  });
}
function normal2(diagram, option) {
  // 绘制可移动的点
  let line9 = diagram.getOption('line9').points;
  diagram.moveDot({
    id: 'line9_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line9[1],
      line9[0]
    ],
  });
  // 绘制可移动的点
  let line10 = diagram.getOption('line10').points;
  diagram.moveDot({
    id: 'line10_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: line10,
  });
}
function dcDc1(diagram, option) {
  // 绘制可移动的点
  let line2 = diagram.getOption('line2').points;
  diagram.moveDot({
    id: 'line2_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line2[0],
      line2[1]
    ],
  });
  // 绘制可移动的点
  let line4 = diagram.getOption('line4').points;
  let line5 = diagram.getOption('line5').points;
  diagram.moveDot({
    id: 'line4_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line4[0],
      line5[1]
    ],
  });
  // 绘制可移动的点
  let line6 = diagram.getOption('line6').points;
  diagram.moveDot({
    id: 'line6_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line6[0],
      line6[1]
    ],
  });
  // 绘制可移动的点
  let line7 = diagram.getOption('line7').points;
  diagram.moveDot({
    id: 'line7_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line7[0],
      line7[1]
    ],
  });
  // 绘制可移动的点
  let line8 = diagram.getOption('line8').points;
  diagram.moveDot({
    id: 'line8_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line8[0],
      line8[1]
    ],
  });
  // 绘制可移动的点
  let line10 = diagram.getOption('line10').points;
  diagram.moveDot({
    id: 'line10_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line10[0],
      line10[1]
    ],
  });
}
function dcDc2(diagram, option) {
  // 绘制可移动的点
  let line8 = diagram.getOption('line8').points;
  let line15 = diagram.getOption('line15').points;
  diagram.moveDot({
    id: 'line8_dc2_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line8[1],
      line15[0]
    ],
  });
  // 绘制可移动的点
  diagram.moveDot({
    id: 'line15_dc2_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line15[0],
      line15[1]
    ],
  });
  // 绘制可移动的点
  let line16 = diagram.getOption('line16').points;
  diagram.moveDot({
    id: 'line16_dc2_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line16[0],
      line16[1]
    ],
  });
  // 绘制可移动的点
  let line17 = diagram.getOption('line17').points;
  diagram.moveDot({
    id: 'line17_dc2_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line17[0],
      line17[1]
    ],
  });
  // 绘制可移动的点
  let line14 = diagram.getOption('line14').points;
  diagram.moveDot({
    id: 'line14_dc2_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line14[1],
      line14[0]
    ],
  });
  // 绘制可移动的点
  let line13 = diagram.getOption('line13').points;
  diagram.moveDot({
    id: 'line13_dc2_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line13[1],
      line13[0]
    ],
  });
  // 绘制可移动的点
  let line12 = diagram.getOption('line12').points;
  diagram.moveDot({
    id: 'line12_dc2_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line12[1],
      line12[0]
    ],
  });
  // 绘制可移动的点
  let line11 = diagram.getOption('line11').points;
  diagram.moveDot({
    id: 'line11_dc2_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line11[1],
      line11[0]
    ],
  });
  // 绘制可移动的点
  let line2 = diagram.getOption('line2').points;
  diagram.moveDot({
    id: 'line2_dc2_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line11[0],
      line2[0]
    ],
  });
  // 绘制可移动的点
  let line3 = diagram.getOption('line3').points;
  diagram.moveDot({
    id: 'line3_dc2_dot',
    flush: true,
    fillStyle: springGreen,
    radius: scalcRadius,
    points: [
      line3[0],
      line3[1]
    ],
  });
}
export default state;
src/views/dataTest/diagram/index.js
@@ -763,6 +763,9 @@
    case 'right':
      result = this.diodeRight(option);
      break;
    case 'left':
      result = this.diodeLeft(option);
      break;
    default:
      result = this.diodeUp(option);
      break;
@@ -821,6 +824,58 @@
  }
};
// 向左的
Diagram.prototype.diodeLeft = function(option) {
  let ctx = option.flush ? this.f_ctx : this.s_ctx;
  let point = option.point;
  let width = 40;
  let height = width * 2 / 3;
  let lineWidth = 2;
  // line1
  let line1 = this.line({
    strokeStyle: "#b370fe",
    lineWidth: lineWidth,
    points: [
      point,
      [point[0]+ width / 2, point[1]]
    ]
  });
  // line2
  this.line({
    strokeStyle: "#b370fe",
    lineWidth: lineWidth,
    points: [
      [line1[1][0], line1[1][1] - width / 2],
      [line1[1][0], line1[1][1] + width / 2 ]
    ]
  });
  ctx.beginPath();
  ctx.moveTo(line1[1][0], line1[1][1]);
  ctx.lineTo(line1[1][0]+height, line1[1][1] - width / 2);
  ctx.lineTo(line1[1][0]+height, line1[1][1] + width / 2);
  ctx.closePath();
  ctx.fillStyle = "#b370fe";
  ctx.fill();
  // line3
  let line3 = this.line({
    strokeStyle: "#b370fe",
    lineWidth: lineWidth,
    points: [
      [line1[1][0]+ height, line1[1][1]],
      [line1[1][0]+ height + width / 2, line1[1][1]]
    ]
  });
  return  {
    left: line1[0],
    right: line3[1]
  }
}
// 向上的
Diagram.prototype.diodeUp = function (option) {
  let ctx = option.flush ? this.f_ctx : this.s_ctx;
src/views/dataTest/hfSwitch.vue
@@ -3025,6 +3025,7 @@
        { data: "第2路交流输入开关跳闸", status: data.isAcin2Trip },
        { data: "高频开关柜监控单元故障", status: data.isAcinMonitorerr },
        { data: "高频开关柜总告警", status: data.isTotalAlarm },
        { data: "协转与电源通信故障", status: data.isPowerdevCommerr },
        // { data: "高频开关柜温度告警", status: data.temprature },
      ];
      // 1段交流母线输出开关
src/views/dataTest/intelRealTime.vue
New file
@@ -0,0 +1,135 @@
<script>
import HomeList from "@/views/dataTest/movingRingSystem/HomeList.vue";
import {getBattGroupInfo} from "@/views/dataMager/js/battGroupMager";
import ContentBox from "@/components/ContentBox.vue";
import HdwLight from "@/components/HdwLight.vue";
import getIntelDevState from "@/views/dataTest/js/getIntelDevState";
import IntelDevStateTools from "@/views/dataTest/components/IntelDevStateTools.vue";
import IntelCircuit from "@/views/dataTest/components/diagrams/intelCircuit/index.vue";
export default {
  name: "movingRingSysteRrealTime",
  components: {IntelCircuit, IntelDevStateTools, HdwLight, ContentBox, HomeList},
  data() {
    return {
      homeListShow: true,
      batt: {},
      acTabs: "eleLine",
      stateList: getIntelDevState(),
    }
  },
  watch: {
    "$route.params.BattGroupId"(battGroupId) {
      this.$nextTick(() => {
        this.getBattGroupInfo(battGroupId);
      });
    },
  },
  methods: {
    getBattGroupInfo(battGroupId) {
      this.homeListShow = false;
      getBattGroupInfo(battGroupId)
        .then((res) => {
          res = res.data;
          if (res.code) {
            this.leafClick(res.data[0]);
          } else {
            this.$layer.msg("未获取到电池组的信息");
          }
        })
        .catch((error) => {
          console.log(error);
        });
    },
    toggleChange() {
      this.resize();
    },
    leafClick(data) {
      this.batt = data;
    },
    resize() {
    },
    tabClick() {
    }
  },
  computed: {
    battFullName() {
      let batt = this.batt;
      if (batt.stationName && batt.battGroupName) {
        return batt.stationName;
      }
      return "电池组全称";
    },
  },
  mounted() {
    let battGroupId = this.$route.params.battGroupId;
    // console.log("mounted======", battGroupId);
    if (battGroupId) {
      this.getBattGroupInfo(battGroupId);
    }
  }
}
</script>
<template>
  <flex-layout direction="row" class="page-real-time" :no-bg="true">
    <home-list
      v-if="homeListShow"
      slot="header"
      @toggleChange="toggleChange"
      @leaf-click="leafClick"></home-list>
    <content-box
      style="margin-left: 4px; margin-right: 4px"
      :title="battFullName">
      <div class="page-content">
        <div class="state-tools-wrapper">
          <intel-dev-state-tools :list="stateList"></intel-dev-state-tools>
        </div>
        <intel-circuit></intel-circuit>
      </div>
    </content-box>
  </flex-layout>
</template>
<style scoped lang="less">
.page-real-time {
  color: #ffffff;
}
.content-header {
  padding: 0 0 0 8px;
  font-size: 14px;
}
.page-content {
  position: relative;
  padding: 4px;
  box-sizing: border-box;
  height: 100%;
  .state-tools-wrapper {
    position: absolute;
  }
}
.state-list {
  display: table;
  width: 100%;
  .state-tr {
    display: table-row;
    .state-item {
      display: table-cell;
      margin-right: 64px;
      color: #00fefe;
      line-height: 30px;
      .state-label {
        display: inline-block;
      }
      .state-value {
        display: inline-block;
        &.light {
          vertical-align: middle;
        }
      }
    }
  }
}
</style>
src/views/dataTest/js/getIntelDevState.js
New file
@@ -0,0 +1,342 @@
function getIntelDevState() {
  return [
    {
      bit: 0,
      label: "开关机状态",
      type: "text",
      value1: -1,
      value2: 1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "关机",
        },
        {
          value: 1,
          label: "开机",
        },
      ]
    },
    {
      bit: 1,
      label: "输出过压",
      type: "light",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "正常",
        },
        {
          value: 1,
          label: "输出过压",
        },
      ]
    },
    {
      bit: 2,
      label: "输出欠压",
      type: "light",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "正常",
        },
        {
          value: 1,
          label: "输出欠压",
        },
      ]
    },
    {
      bit: 3,
      label: "输出过流",
      type: "light",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "正常",
        },
        {
          value: 1,
          label: "输出过流",
        },
      ]
    },
    {
      bit: 4,
      label: "模块过温",
      type: "light",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "正常",
        },
        {
          value: 1,
          label: "模块过温",
        },
      ]
    },
    {
      bit: 5,
      label: "输入过压",
      type: "light",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "正常",
        },
        {
          value: 1,
          label: "输入过压",
        },
      ]
    },
    {
      bit: 6,
      label: "输入欠压",
      type: "light",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "正常",
        },
        {
          value: 1,
          label: "输入欠压",
        },
      ]
    },
    {
      bit: 7,
      label: "自动运行模式",
      type: "text",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "运行中",
        },
        {
          value: 1,
          label: "未运行",
        },
      ]
    },
    {
      bit: 8,
      label: "输出过压故障保护",
      type: "light",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "正常",
        },
        {
          value: 1,
          label: "故障",
        },
      ]
    },
    {
      bit: 9,
      label: "输出欠压/短路故障保护",
      type: "light",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "正常",
        },
        {
          value: 1,
          label: "故障",
        },
      ]
    },
    {
      bit: 10,
      label: "输出过流/过载故障保护",
      type: "light",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "正常",
        },
        {
          value: 1,
          label: "故障",
        },
      ]
    },
    {
      bit: 11,
      label: "过温故障保护",
      type: "light",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "正常",
        },
        {
          value: 1,
          label: "故障",
        },
      ]
    },
    {
      bit: 12,
      label: "输入过压故障保护",
      type: "light",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "正常",
        },
        {
          value: 1,
          label: "故障",
        },
      ]
    },
    {
      bit: 13,
      label: "输入欠压故障保护",
      type: "light",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "正常",
        },
        {
          value: 1,
          label: "故障",
        },
      ]
    },
    {
      bit: 14,
      label: "输入过流保护",
      type: "light",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "正常",
        },
        {
          value: 1,
          label: "故障",
        },
      ]
    },
    {
      bit: 14,
      label: "预充电自检",
      type: "text",
      value1: -1,
      value2: -1,
      list: [
        {
          value: -1,
          label: "未知"
        },
        {
          value: 0,
          label: "预充电完成",
        },
        {
          value: 1,
          label: "自检中/故障",
        },
      ]
    },
  ];
}
export default getIntelDevState;
src/views/dataTest/movingRingSystem/index.vue
@@ -108,6 +108,12 @@
                "/dataTest/movingRingSystem/real-time-peiWang/" +
                data.battGroupId,
            });
          }else if(regEquipType(dev_id1, "intelDev")) {
            this.$router.push({
              path:
                "/dataTest/movingRingSystem/real-time-intel/" +
                data.battGroupId,
            });
          } else {
            this.$router.push({
              path: "/dataTest/movingRingSystem/real-time/" + data.battGroupId,