From f6f6ce4b15eebac2de79ce11b59915436be38d33 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A4=9C=E7=AC=99=E6=AD=8C?= <2277317060@qq.com>
Date: Mon, 15 Jul 2024 14:27:25 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=BD=93=E6=9C=BAB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../web/controller/broad/BroadController.java |   5 +
 .../src/main/resources/static/board/board.js  |   8 +-
 .../src/main/resources/static/board/board2.js |   1 -
 .../main/resources/static/board/board3.css    | 275 ++++++++++++++
 .../src/main/resources/static/board/board3.js | 245 ++++++++++++
 .../src/main/resources/static/board/doc.js    |   6 +-
 .../resources/templates/board/board1.html     |   3 +-
 .../resources/templates/board/board2.html     |   4 +-
 .../resources/templates/board/board3.html     | 352 ++++++++++++++++++
 .../main/resources/templates/board/doc.html   |   4 +-
 .../main/resources/templates/board/video.html |   4 +-
 11 files changed, 893 insertions(+), 14 deletions(-)
 create mode 100644 haiwei-admin/src/main/resources/static/board/board3.css
 create mode 100644 haiwei-admin/src/main/resources/static/board/board3.js
 create mode 100644 haiwei-admin/src/main/resources/templates/board/board3.html

diff --git a/haiwei-admin/src/main/java/com/haiwei/web/controller/broad/BroadController.java b/haiwei-admin/src/main/java/com/haiwei/web/controller/broad/BroadController.java
index 6fc0c92..6185425 100644
--- a/haiwei-admin/src/main/java/com/haiwei/web/controller/broad/BroadController.java
+++ b/haiwei-admin/src/main/java/com/haiwei/web/controller/broad/BroadController.java
@@ -18,6 +18,11 @@ public class BroadController {
     {
         return prefix + "/board1";
     }
+    @GetMapping("/board3")
+    public String board3()
+    {
+        return prefix + "/board3";
+    }
 
     @GetMapping("/board2")
     public String board2()
diff --git a/haiwei-admin/src/main/resources/static/board/board.js b/haiwei-admin/src/main/resources/static/board/board.js
index 58631f7..df916b7 100644
--- a/haiwei-admin/src/main/resources/static/board/board.js
+++ b/haiwei-admin/src/main/resources/static/board/board.js
@@ -1,4 +1,6 @@
 $(() => {
+
+  let name = '60型一体机A'
   setTimeout(() => {
     $("#centerModal1").show()
     setTimeout(() => {
@@ -7,14 +9,14 @@ $(() => {
   }, 1000)
   // tableAnimation('#chart2')
 
-  $.get(ctx + 'broad/home/deviceInfo', {}, (e) => {
+  $.get(ctx + 'broad/home/deviceInfo', {name}, (e) => {
     let data = e.data[0]
     $('.bg1').html(`<p>${data.deviceFunction}</p>`)
     $('.bg2').html(`<p>${data.deviceParam}</p>`)
 
   })
 
-  $.get(ctx + 'broad/home/queryParam', {}, (e) => {
+  $.get(ctx + 'broad/home/queryParam', {name}, (e) => {
 
     let enumArr = {
       '转速': ' rpm',
@@ -53,7 +55,7 @@ $(() => {
 
   })
 
-  $.get(ctx + 'broad/home/queryDeviceState', {}, (data) => {
+  $.get(ctx + 'broad/home/queryDeviceState', {name}, (data) => {
     let imgSrc = (name) => {
       switch (name) {
         case '运行':
diff --git a/haiwei-admin/src/main/resources/static/board/board2.js b/haiwei-admin/src/main/resources/static/board/board2.js
index 82b8395..d523a87 100644
--- a/haiwei-admin/src/main/resources/static/board/board2.js
+++ b/haiwei-admin/src/main/resources/static/board/board2.js
@@ -1,6 +1,5 @@
 $(() => {
   let VH =(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight)/100;
-
   let itemNum = 0
   let fun = () =>{
     let width = $('#bottom .info .item:eq(0)').outerWidth() + 18
diff --git a/haiwei-admin/src/main/resources/static/board/board3.css b/haiwei-admin/src/main/resources/static/board/board3.css
new file mode 100644
index 0000000..edc93b7
--- /dev/null
+++ b/haiwei-admin/src/main/resources/static/board/board3.css
@@ -0,0 +1,275 @@
+body {
+    background-image: url("../../board/img/bg1.png");
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+}
+
+.topBtn {
+    background-image: url("../../board/img/click1.png");
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+    width: 7.5vw;
+    height: 2.5vw;
+    position: absolute;
+    top: 6%;
+    line-height: 2.5vw;
+    font-size: 1.2vw;
+    text-align: center;
+    color: #aaa;
+}
+
+.topBtnClick {
+    background-image: url("../../board/img/click.png");
+    color: #fff;
+}
+
+.bottomBtn {
+    background-image: url("../../board/img/btnbg.png");
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+    width: 15vw;
+    height: 3vw;
+    position: absolute;
+    bottom: 2.8vw;
+    line-height: 3vw;
+    font-size: 1.2vw;
+    text-align: center;
+    color: #aaa;
+}
+
+.bottomBtnClick {
+    background-image: url("../../board/img/btn1bg.png");
+    color: #fff;
+}
+
+.centerImg {
+    background-image: url("../../board/img/equipment.png");
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+    position: absolute;
+    top: 45%;
+    left: 50%;
+    width: 57vw;
+    height: 31vw;
+    transform: translate(-50%, -50%);
+}
+
+.winDiv {
+    background-image: url("../../board/img/winBG.png");
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+    position: absolute;
+    right: 7.5vw;
+    top: 19%;
+    width: 16vw;
+    height: 32.9vw;
+}
+
+.winDiv p {
+    margin: 0;
+}
+
+.winDiv .title {
+    position: absolute;
+    font-size: 1vw;
+    left: 20%;
+    top: 6%;
+    color: #ddd;
+}
+
+.winDiv .title1 {
+    position: absolute;
+    font-size: 1vw;
+    left: 10%;
+    top: 15%;
+    color: #fff;
+}
+
+.winDiv .bg1 {
+    position: absolute;
+    font-size: 0.8vw;
+    left: 7%;
+    top: calc(15% + 1.5vw);
+    color: #4888bf;
+    width: 87%;
+    height: 45%;
+    border-radius: 3px;
+    border: 2px solid #3f65a1;
+    padding: 1%;
+    overflow: auto;
+}
+
+.winDiv .title2 {
+    position: absolute;
+    font-size: 1vw;
+    left: 10%;
+    top: 67%;
+    color: #fff;
+}
+
+.winDiv .bg2 {
+    position: absolute;
+    font-size: 0.8vw;
+    left: 7%;
+    top: calc(67% + 1.5vw);
+    color: #4888bf;
+    width: 87%;
+    height: 26%;
+    border-radius: 3px;
+    border: 2px solid #3f65a1;
+    padding: 1%;
+    overflow: auto;
+}
+
+.status {
+    /*background-image: url("../../board/img/warnBg.png");*/
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+    position: absolute;
+    width: 10vw;
+    height: 4vw;
+    transform: translateX(-50%);
+}
+
+.status .icon {
+    background-image: url("../../board/img/green.png");
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+    position: absolute;
+    transform: translate(-50%, -50%);
+    top: 50%;
+    left: 20%;
+    width: 30px;
+    height: 30px;
+}
+
+.status span {
+    width: 20vw;
+    font-size: 1vw;
+    color: #fff;
+    position: absolute;
+    transform: translateY(-50%);
+    top: 50%;
+    left: calc(20% + 35px);
+}
+
+.centerInfo {
+    position: absolute;
+    transform: translate(-10px, calc(-100% + 10px));
+    width: 10vw;
+    height: 10vw;
+}
+
+.centerInfo .win {
+    background-image: url("../../board/img/equipmentBg.png");
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+    position: absolute;
+    top: 10%;
+    left: 0;
+    width: 9vw;
+    height: 5.35vw;
+    transform: translateX(-50%);
+}
+
+.centerInfo .win .title {
+    position: absolute;
+    transform: translateY(-50%);
+    top: 16%;
+    left: 10%;
+    color: #fff;
+    font-size: 0.8vw;
+}
+
+.centerInfo .win .span1 {
+    position: absolute;
+    transform: translateY(-50%);
+    top: 50%;
+    left: 10%;
+    color: #fff;
+    font-size: 0.8vw;
+}
+
+.centerInfo .win .span2 {
+    position: absolute;
+    transform: translateY(-50%);
+    top: 80%;
+    left: 10%;
+    color: #fff;
+    font-size: 0.8vw;
+}
+
+.centerInfo .icon {
+    background-image: url("../../board/img/circle.png");
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+    position: absolute;
+    bottom: 0%;
+    left: 0%;
+    width: 20px;
+    height: 20px;
+}
+
+.eqModal {
+    display: none;
+}
+
+.shade {
+    position: absolute;
+    top: 0%;
+    left: 0%;
+    width: 100vw;
+    height: 100vh;
+    background-color: #00000066;
+    z-index: 100;
+}
+
+.centerModal {
+    background-image: url("../../board/img/bigBg.png");
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+    position: absolute;
+    transform: translate(-50%, -50%);
+    top: 50%;
+    left: 50%;
+    width: 70vw;
+    height: 43.7vw;
+    z-index: 101;
+}
+.centerModalInfo{
+    position: absolute;
+    top: 10%;
+    left: 4%;
+    width: 94%;
+    height: 87%;
+    overflow: hidden;
+}
+.chart1{
+    position: absolute;
+    top: 17%;
+    left: 4%;
+    width: 94%;
+    height: 80%;
+}
+.monitoring{
+    position: absolute;
+    top: 9%;
+    left: 4%;
+    width: 92%;
+    height: 90%;
+}
+
+.centerModal1 {
+    opacity: 0;
+    position: absolute;
+    transform: translate(-50%, -50%);
+    top: 50%;
+    left: 16%;
+    width: 18vw;
+    height: 10.125vw;
+    z-index: 101;
+}
+.plugin{
+    width: 100%;
+    height: 100%;
+}
diff --git a/haiwei-admin/src/main/resources/static/board/board3.js b/haiwei-admin/src/main/resources/static/board/board3.js
new file mode 100644
index 0000000..162b78a
--- /dev/null
+++ b/haiwei-admin/src/main/resources/static/board/board3.js
@@ -0,0 +1,245 @@
+$(() => {
+
+  let name = '60型一体机B'
+  setTimeout(() => {
+    $("#centerModal1").show()
+    setTimeout(() => {
+      document.getElementById("monitoringIframe1").contentWindow.login()
+    }, 1000)
+  }, 1000)
+  // tableAnimation('#chart2')
+
+  $.get(ctx + 'broad/home/deviceInfo', {name}, (e) => {
+    let data = e.data[0]
+    $('.bg1').html(`<p>${data.deviceFunction}</p>`)
+    $('.bg2').html(`<p>${data.deviceParam}</p>`)
+
+  })
+
+  $.get(ctx + 'broad/home/queryParam', {name}, (e) => {
+
+    let enumArr = {
+      '转速': ' rpm',
+      '电流': ' A',
+      '温度': ' ℃',
+      '压力': ' MPa',
+    }
+    let data = e.data
+    let arrNum = Array.from(new Set([...e.data.map(e => e.order_by)]))
+    let arr = arrNum.map(e => {
+      let data1 = data.filter(val => val.order_by === e)
+      let obj = {}
+      data1.forEach((e, i) => {
+        obj.left = e.location_x + '%'
+        obj.top = e.location_y + '%'
+        obj.name = e.name
+        obj['data' + (i + 1)] = e.pointname
+        obj['num' + (i + 1)] = e.data
+        obj['unit' + (i + 1)] = enumArr[e.pointname]
+      })
+      return obj
+    })
+    arr.forEach(val => {
+      let html = `
+      <div class="centerInfo" style="top: ${val.top};left:${val.left}">
+        <div class="win" style="display: none">
+          <div class="title">${val.name}</div>
+          <div class="span1">${val.data1}: ${val.num1 || 0}${val.unit1}</div>
+          <div class="span2">${val.data2}: ${val.num2 || 0}${val.unit2}</div>
+        </div>
+        <div class="icon" onclick="show(this)"></div>
+      </div>
+      `
+      $("#centerInfoDiv").append(html)
+    })
+
+  })
+
+  $.get(ctx + 'broad/home/queryDeviceState', {name}, (data) => {
+    let imgSrc = (name) => {
+      switch (name) {
+        case '运行':
+          return 'green'
+        case '停机':
+          return 'yellow'
+        case '故障':
+          return 'red'
+      }
+    }
+    let po = [
+      {
+        top: 33,
+        left: 73
+      },
+      {
+        top: 33,
+        left: 38
+      },
+    ]
+    console.log(data)
+    let html = ``
+    po.forEach((e, i) => {
+      html += `<div class="status" style="top:${e.top}%;left:${e.left}%">
+      <div class="icon" style="background-image: url('../../board/img/${imgSrc(data.data[i].state)}.png');"></div>
+<!--      <span>${data.data[i].state}</span>-->
+    </div>
+      `
+    })
+    $("#statusD").html(html)
+
+  })
+})
+
+let chart = null
+let chart1 = (el, data) => {
+  console.log('chart', chart)
+  let xData = Object.keys(data?.[0] || {})?.filter(e => e !== 'time') || []
+  let series = xData.map(e => {
+    let dataA = data?.map(val => val[e]) || []
+    let isBig = false
+    dataA.forEach(e => {
+      if (e > 40) {
+        isBig = true
+      }
+    })
+    return {
+      name: e,
+      type: "line",
+      smooth: true,
+      symbol: "circle",
+      yAxisIndex: isBig ? 1 : 0,
+      symbolSize: 5,
+      showSymbol: false,
+      data: dataA,
+    }
+  })
+  if (!chart) {
+    chart = echarts.init(el)
+  }
+  console.log('chart', chart)
+  let option = {
+    tooltip: {
+      trigger: "axis",
+      axisPointer: {
+        lineStyle: {
+          color: "#57617B",
+        },
+      },
+    },
+    toolbox: {
+      show: true,
+      feature: {
+        dataZoom: {show: false},
+        dataView: {show: false},
+        magicType: {show: false},
+        restore: {show: false},
+        saveAsImage: {}
+      }
+    },
+    legend: {
+      icon: "rect",
+      itemWidth: 14,
+      itemHeight: 5,
+      itemGap: 13,
+      data: xData,
+      right: "4%",
+      textStyle: {
+        fontSize: 12,
+        color: "#F1F1F3",
+      },
+    },
+    grid: {
+      left: "3%",
+      right: "4%",
+      bottom: "3%",
+      containLabel: true,
+    },
+    xAxis: [
+      {
+        type: "category",
+        boundaryGap: false,
+        axisLine: {
+          lineStyle: {
+            color: "#57617B",
+          },
+        },
+        data: data.map(e => e.time),
+      },
+    ],
+    yAxis: [
+      {
+        type: "value",
+        name: "转速(n/s)",
+        axisTick: {
+          show: false,
+        },
+        axisLine: {
+          lineStyle: {
+            color: "#57617B",
+          },
+        },
+        axisLabel: {
+          margin: 10,
+          textStyle: {
+            fontSize: 14,
+          },
+        },
+        splitLine: {
+          lineStyle: {
+            color: "#57617B",
+          },
+        },
+      },
+      {
+        type: "value",
+        name: "转速(n/s)",
+        axisTick: {
+          show: false,
+        },
+        axisLine: {
+          lineStyle: {
+            color: "#57617B",
+          },
+        },
+        axisLabel: {
+          margin: 10,
+          textStyle: {
+            fontSize: 14,
+          },
+        },
+        splitLine: {
+          lineStyle: {
+            color: "#57617B",
+          },
+        },
+      },
+    ],
+    series: series,
+  };
+  chart.setOption(option)
+}
+
+const show = (e) => {
+  let node = $(e).prev()
+  node.show()
+  setTimeout(() => {
+    node.hide()
+  }, 1000 * 3)
+}
+let tableHeadChangeArr = [
+  "采集时间",
+  "一体机A转速",
+  "一体机A电流",
+  "一体机A机头压力",
+  "一体机A机头温度",
+  "一体机A切刀电流",
+  "一体机A切刀转速"
+]
+const tableHeadChange = (e, val) => {
+  if ($(val).is(":checked")) {
+    tableHeadChangeArr.push(e)
+  } else {
+    tableHeadChangeArr = tableHeadChangeArr.filter(v => v !== e)
+  }
+  console.log(tableHeadChangeArr)
+}
diff --git a/haiwei-admin/src/main/resources/static/board/doc.js b/haiwei-admin/src/main/resources/static/board/doc.js
index 70cc723..a5d076b 100644
--- a/haiwei-admin/src/main/resources/static/board/doc.js
+++ b/haiwei-admin/src/main/resources/static/board/doc.js
@@ -10,14 +10,14 @@ new Vue({
       treeId: null,
       tableData: [],
       tableIds: [],
-      defaultCheckedKeys:[]
+      defaultCheckedKeys: []
     };
   },
   async mounted() {
     await this.getTree()
     let thisId = location.href?.split('?')?.[1]?.split('=')?.[1]
-    if(thisId){
-      let thisTreeItem = this.treeData.find(e=>e.id.toString() === thisId)
+    if (thisId) {
+      let thisTreeItem = this.treeData.find(e => e.id.toString() === thisId)
       this.handleNodeClick(thisTreeItem)
       this.defaultCheckedKeys = [+thisId]
       console.log(this.defaultCheckedKeys)
diff --git a/haiwei-admin/src/main/resources/templates/board/board1.html b/haiwei-admin/src/main/resources/templates/board/board1.html
index 26d9374..dd29275 100644
--- a/haiwei-admin/src/main/resources/templates/board/board1.html
+++ b/haiwei-admin/src/main/resources/templates/board/board1.html
@@ -184,7 +184,8 @@
 </script>
 <div>
   <div class="topBtn" onclick="routerSkip('board/board2')" style="left: 8vw;">首页</div>
-  <div class="topBtn topBtnClick" onclick="routerSkip('board/board1')" style="left: 18.5vw;">60型一体机</div>
+  <div class="topBtn topBtnClick" onclick="routerSkip('board/board1')" style="left: 16.5vw;">60型一体机A</div>
+  <div class="topBtn" onclick="routerSkip('board/board3')" style="left: 25vw;">60型一体机B</div>
   <!--  <div class="topBtn" style="left: 25vw;">60型一体机</div>-->
   <div class="topBtn" onclick="routerSkip('board/video')" style="left: 71vw;">视频展示</div>
   <div class="topBtn" onclick="routerSkip('board/doc')" style="left: 83vw;">文档归档</div>
diff --git a/haiwei-admin/src/main/resources/templates/board/board2.html b/haiwei-admin/src/main/resources/templates/board/board2.html
index fc4ea48..4e32527 100644
--- a/haiwei-admin/src/main/resources/templates/board/board2.html
+++ b/haiwei-admin/src/main/resources/templates/board/board2.html
@@ -19,8 +19,8 @@
 </script>
 <div>
   <div class="topBtn topBtnClick" onclick="routerSkip('board/board2')" style="left: 8vw;">首页</div>
-  <div class="topBtn" onclick="routerSkip('board/board1')" style="left: 18.5vw;">60型一体机</div>
-<!--  <div class="topBtn" style="left: 25vw;">60型一体机</div>-->
+  <div class="topBtn" onclick="routerSkip('board/board1')" style="left: 16.5vw;">60型一体机A</div>
+  <div class="topBtn" onclick="routerSkip('board/board3')" style="left: 25vw;">60型一体机B</div>
   <div class="topBtn"  onclick="routerSkip('board/video')" style="left: 71vw;">视频展示</div>
   <div class="topBtn"  onclick="routerSkip('board/doc')" style="left: 83vw;">文档归档</div>
 
diff --git a/haiwei-admin/src/main/resources/templates/board/board3.html b/haiwei-admin/src/main/resources/templates/board/board3.html
new file mode 100644
index 0000000..326333e
--- /dev/null
+++ b/haiwei-admin/src/main/resources/templates/board/board3.html
@@ -0,0 +1,352 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org">
+<head>
+  <th:block th:include="include :: header('设备智能驾驶舱')"/>
+</head>
+<body class="white-bg">
+<th:block th:include="include :: datetimepicker-css"/>
+<th:block th:include="include :: datetimepicker-js"/>
+<link href="../../board/board.css" rel="stylesheet">
+<script src="../../js/echarts.js"></script>
+<script src="../../js/scrollTable.js"></script>
+<script src="../../js/tableAnimation.js"></script>
+<script>
+
+  let status = {
+    rightInfoS: false,
+    bottomBtn1S: false,
+    bottomBtn2S: false,
+    bottomBtn3S: false,
+  }
+  const routerSkip = (e) => {
+    try {
+      $.modal.openTab('设备智能驾驶舱', ctx + e);
+    } catch (val) {
+      location.href = ctx + e
+    }
+  }
+
+  const showModal = () => {
+    $("#eqModal").show()
+  }
+  const hideModal1 = () => {
+    $("#eqModal").hide()
+  }
+
+  const hideModal = (e, el) => {
+    $("#centerModal1").append(`<iframe src="monitoring1" frameborder="0" id="monitoringIframe1" style="width: 100%;height: 100%"></iframe>`)
+    setTimeout(() => {
+      document.getElementById("monitoringIframe1").contentWindow.login()
+    }, 1000)
+    status[`bottomBtn${e}S`] = false
+    $($(el)[0].parentNode).hide()
+    $("#bottomBtn" + e).css({
+      backgroundImage: status[`bottomBtn${e}S`] ? 'url("../../board/img/btn1bg.png")' : 'url("../../board/img/btnbg.png")'
+    })
+    if (e === 3) {
+      document.getElementById("monitoringIframe").contentWindow.edit()
+      setTimeout(() => {
+        $("#monitoring").empty()
+      }, 100)
+    }
+  }
+  const toggleInfo = () => {
+    $("#rightInfo").toggle()
+    status.rightInfoS = !status.rightInfoS
+    $("#toggleInfoBtn").css({
+      backgroundImage: status.rightInfoS ? 'url("../../board/img/click.png")' : 'url("../../board/img/click1.png")'
+    })
+  }
+  const bottomBtnInfo = (e, el) => {
+    $('#centerModal1').empty()
+    if (e === 3) {
+      $("#monitoring").append(`<iframe src="monitoring" frameborder="0" id="monitoringIframe" style="width: 100%;height: 100%"></iframe>`)
+      setTimeout(() => {
+        document.getElementById("monitoringIframe").contentWindow.login()
+      }, 1000)
+    }
+    $("#modal" + e).show()
+    switch (e) {
+      case 1:
+        status.bottomBtn1S = !status.bottomBtn1S
+        $(el).css({
+          backgroundImage: status.bottomBtn1S ? 'url("../../board/img/btn1bg.png")' : 'url("../../board/img/btnbg.png")'
+        })
+        break
+
+      case 2:
+        status.bottomBtn2S = !status.bottomBtn2S
+        $(el).css({
+          backgroundImage: status.bottomBtn2S ? 'url("../../board/img/btn1bg.png")' : 'url("../../board/img/btnbg.png")'
+        })
+        break
+
+      case 3:
+        status.bottomBtn3S = !status.bottomBtn3S
+        $(el).css({
+          backgroundImage: status.bottomBtn3S ? 'url("../../board/img/btn1bg.png")' : 'url("../../board/img/btnbg.png")'
+        })
+        break
+
+    }
+  }
+  const Modal1Search = () => {
+    let params = {}
+    if ($('#startTime1').val()) {
+      params.beginTime = new Date($('#startTime1').val())
+    }
+    if ($('#endTime1').val()) {
+      params.endTime = new Date($('#endTime1').val())
+    }
+    params.timeInterval=$('#timeInterval1').val();
+    $.get(ctx + 'broad/home/queryParamData', params, (e) => {
+      if (e.data.length > 0) {
+        $('#chart1').remove()
+        $("#modal1 .centerModal .centerModalInfo").append('<div class="chart1" id="chart1"></div>')
+        chart = null
+        chart1(document.getElementById('chart1'), e.data)
+      } else {
+        $("#chart1").html(`<div style="width: 100%;height: 100%;text-align: center;line-height:35vw;color: #fff ">暂无数据</div>`)
+      }
+    })
+  }
+  const Modal2Search = () => {
+    let params = {}
+    params.timeInterval=$('#timeInterval').val();
+    if ($('#startTime2').val()) {
+      params.beginTime = new Date($('#startTime2').val())
+    }
+    if ($('#endTime2').val()) {
+      params.endTime = new Date($('#endTime2').val())
+    }
+    console.log(params)
+    $.get(ctx + 'broad/home/queryParamData', params, (e) => {
+      $("#chart2").empty()
+      tableHeadChangeArr =[
+        "采集时间",
+        "一体机A转速",
+        "一体机A电流",
+        "一体机A机头压力",
+        "一体机A机头温度",
+        "一体机A切刀电流",
+        "一体机A切刀转速"
+      ]
+      if (e.data.length > 0) {
+        dynamicTable({
+          el: '#chart2',
+          rowNum: 10,
+          timeout: 5,
+          header: ['序号', '<input type="checkbox" checked onchange="tableHeadChange(\'采集时间\',this)"/> 采集时间', '<input type="checkbox" checked onchange="tableHeadChange(\'一体机A转速\',this)"/> 一体机A转速', '<input type="checkbox" checked onchange="tableHeadChange(\'一体机A电流\',this)"/> 一体机A电流', '<input type="checkbox" checked onchange="tableHeadChange(\'一体机A机头压力\',this)"/> 一体机A机头压力', '<input type="checkbox" checked onchange="tableHeadChange(\'一体机A机头温度\',this)"/> 一体机A机头温度', '<input type="checkbox" checked onchange="tableHeadChange(\'一体机A切刀电流\',this)"/> 一体机A切刀电流', '<input type="checkbox" checked onchange="tableHeadChange(\'一体机A切刀转速\',this)"/> 一体机A切刀转速'],
+          data: e.data.map((val, i) => [i, val.time, val['一体机A转速'], val['一体机A电流'], val['一体机A机头压力'], val['一体机A机头温度'], val['一体机A切刀电流'], val['一体机A切刀转速']]),
+          index: true,
+          fontColor: '#03BCD4 ',
+          indexBGC: '#86F3FF',
+          headerBGC: '#092A77',
+          oddRowBGC: '#092A77',
+          evenRowBGC: '#092A77',
+        })
+      } else {
+        $("#chart2").html(`<div style="width: 100%;height: 100%;text-align: center;line-height:35vw;color: #fff ">暂无数据</div>`)
+      }
+    })
+  }
+  const derive = () => {
+    let canvasNode = $("#chart1 div canvas")[0]
+    console.log(canvasNode)
+    let canvasURL = canvasNode.toDataURL("image/png");
+    let link = document.createElement("a");
+    link.setAttribute("href", canvasURL);
+    link.setAttribute("download", "picture.png");
+    link.click();
+  }
+  const derive2 = () => {
+    let params = {
+      colms:tableHeadChangeArr.toString()
+    }
+
+    params.timeInterval=$('#timeInterval').val();
+    if ($('#startTime2').val()) {
+      params.beginTime = new Date($('#startTime2').val())
+    }
+    if ($('#endTime2').val()) {
+      params.endTime = new Date($('#endTime2').val())
+    }
+    if ($('#name').val()) {
+      params.name = $('#name').val()
+    }
+    if ($('#type').val()) {
+      params.type = $('#type').val()
+    }
+    $.post(ctx + 'broad/home/exportParamList', params, (e) => {
+      window.location.href = ctx + "common/download?fileName=" + encodeURI(e.msg) + "&delete=" + true;
+    })
+  }
+</script>
+<div>
+  <div class="topBtn" onclick="routerSkip('board/board2')" style="left: 8vw;">首页</div>
+  <div class="topBtn " onclick="routerSkip('board/board1')" style="left: 16.5vw;">60型一体机A</div>
+  <div class="topBtn topBtnClick" onclick="routerSkip('board/board3')" style="left: 25vw;">60型一体机B</div>
+  <div class="topBtn" onclick="routerSkip('board/video')" style="left: 71vw;">视频展示</div>
+  <div class="topBtn" onclick="routerSkip('board/doc')" style="left: 83vw;">文档归档</div>
+  <div class="topBtn" id="toggleInfoBtn" onclick="toggleInfo()" style="left: 83vw;top:13%">设备介绍</div>
+
+  <div class="bottomBtn" id="bottomBtn1" onclick="bottomBtnInfo(1,this)" style="left: 22.5vw;">历史趋势</div>
+  <div class="bottomBtn" id="bottomBtn2" onclick="bottomBtnInfo(2,this)" style="left: 42.5vw;">数据记录</div>
+  <div class="bottomBtn" id="bottomBtn3" onclick="bottomBtnInfo(3,this)" style="left: 62.5vw;">实时监控</div>
+
+  <div class="centerImg">
+    <div id="centerInfoDiv">
+
+      <!--      <div class="centerInfo" onclick="showModal()" style="top: 35%;left:40%">-->
+      <!--        <div class="win">-->
+      <!--          <div class="title">位置1</div>-->
+      <!--          <div class="span1">转速: 50n/s</div>-->
+      <!--          <div class="span2">电流: 45A</div>-->
+      <!--        </div>-->
+      <!--        <div class="icon"></div>-->
+      <!--      </div>-->
+
+      <!--      <div class="centerInfo" onclick="showModal()" style="top: 45%;left:71%">-->
+      <!--        <div class="win">-->
+      <!--          <div class="title">位置1</div>-->
+      <!--          <div class="span1">转速: 50n/s</div>-->
+      <!--          <div class="span2">电流: 45A</div>-->
+      <!--        </div>-->
+      <!--        <div class="icon"></div>-->
+      <!--      </div>-->
+    </div>
+
+  </div>
+
+  <div id="rightInfo" style="display: none">
+    <div class="winDiv">
+      <div class="title">基本信息</div>
+      <div class="title1">设备描述:</div>
+      <div class="bg1">
+      </div>
+      <div class="title2">技术参数:</div>
+      <div class="bg2">
+      </div>
+    </div>
+
+  </div>
+  <div id="statusD">
+  </div>
+
+  <div class="eqModal" id="eqModal">
+    <div class="shade" onclick="hideModal1()"></div>
+    <div class="centerModal"></div>
+  </div>
+
+  <div id="modal1" style="display:none;">
+    <div class="shade" onclick="hideModal(1,this)"></div>
+    <div class="centerModal">
+
+      <div class="centerModalInfo">
+        <div style="display: inline-block">
+          <span style="font-size: 1vw;color: #fff">时间间隔:</span>
+          <select id="timeInterval1" class="form-control m-b" style="width: 10vw;height:2vw;display: inline-block"
+                  th:with="type=${@dict.getType('time_interval')}">
+            <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
+          </select>
+        </div>
+        <span style="font-size: 1vw;color: #fff">起止时间: </span>
+        <input class="form-control" id="startTime1" placeholder="开始时间"
+               style="width: 10vw;height:2vw;display: inline-block"
+               type="text">
+        <span>-</span>
+        <input class="form-control" id="endTime1" placeholder="结束时间"
+               style="width: 10vw;height:2vw;display: inline-block"
+               type="text">
+        <a class="btn btn-primary btn-rounded btn-sm" onclick="Modal1Search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
+        <a class="btn btn-warning btn-rounded btn-sm" onclick="derive()"><i class="fa fa-download"></i>&nbsp;导出</a>
+      </div>
+      <div class="chart1" id="chart1"></div>
+    </div>
+  </div>
+
+  <div id="modal2" style="display:none;">
+    <div class="shade" onclick="hideModal(2,this)"></div>
+    <div class="centerModal">
+      <div class="centerModalInfo">
+        <div style="position:relative;">
+          <div style="display: inline-block">
+            <span style="font-size: 1vw;color: #fff">客户名称: </span>
+            <input id="name" name="loginName" style="width: 10vw;height:2vw;display: inline-block" type="text"/>
+          </div>
+          <div style="display: inline-block">
+            <span style="font-size: 1vw;color: #fff">实验胶种: </span>
+            <input id="type" name="loginName" style="width: 10vw;height:2vw;display: inline-block" type="text"/>
+          </div>
+
+          <div style="display: inline-block">
+            <span style="font-size: 1vw;color: #fff">起止时间: </span>
+            <input class="form-control" id="startTime2" placeholder="开始时间"
+                   style="width: 8vw;height:2vw;display: inline-block"
+                   type="text">
+            <span>-</span>
+            <input class="form-control" id="endTime2" placeholder="结束时间"
+                   style="width: 8vw;height:2vw;display: inline-block"
+                   type="text">
+          </div>
+          <div style="display: inline-block">
+            <span style="font-size: 1vw;color: #fff">时间间隔:</span>
+            <select id="timeInterval" class="form-control m-b" style="width: 10vw;height:2vw;display: inline-block"
+                    th:with="type=${@dict.getType('time_interval')}">
+              <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
+            </select>
+          </div>
+          <a class="btn btn-primary btn-rounded btn-sm" onclick="Modal2Search()"><i
+                  class="fa fa-search"></i>&nbsp;搜索</a>
+          <a class="btn btn-warning btn-rounded btn-sm" onclick="derive2()"><i class="fa fa-download"></i>&nbsp;导出</a>
+        </div>
+        <div class="chart1" id="chart2" style="position:relative;top:2%;left: 0;height: 92%"></div>
+      </div>
+    </div>
+  </div>
+
+  <div id="modal3" style="display:none;">
+    <div class="shade" onclick="hideModal(3,this)"></div>
+    <div class="centerModal">
+      <div class="monitoring" id="monitoring">
+      </div>
+    </div>
+  </div>
+  <div class="centerModal1" id="centerModal1" style="display: none">
+    <iframe frameborder="0" id="monitoringIframe1" src="monitoring1" style="width: 100%;height: 100%"></iframe>
+  </div>
+</div>
+<th:block th:include="include :: footer"/>
+<script src="../../board/board3.js"></script>
+<script>
+
+  layui.use('laydate', function () {
+    var laydate = layui.laydate;
+
+    laydate.render({
+      elem: '#startTime1',
+      type: 'datetime',
+      trigger: 'click'
+    });
+
+    laydate.render({
+      elem: '#endTime1',
+      type: 'datetime',
+      trigger: 'click'
+    });
+
+    laydate.render({
+      elem: '#startTime2',
+      type: 'datetime',
+      trigger: 'click'
+    });
+
+    laydate.render({
+      elem: '#endTime2',
+      type: 'datetime',
+      trigger: 'click'
+    });
+  });
+</script>
+</body>
+</html>
diff --git a/haiwei-admin/src/main/resources/templates/board/doc.html b/haiwei-admin/src/main/resources/templates/board/doc.html
index b9acb4d..f951f33 100644
--- a/haiwei-admin/src/main/resources/templates/board/doc.html
+++ b/haiwei-admin/src/main/resources/templates/board/doc.html
@@ -19,8 +19,8 @@
 </script>
 <div>
   <div class="topBtn" onclick="routerSkip('board/board2')" style="left: 8vw;">首页</div>
-  <div class="topBtn" onclick="routerSkip('board/board1')" style="left: 18.5vw;">60型一体机</div>
-<!--  <div class="topBtn" style="left: 25vw;">60型一体机</div>-->
+  <div class="topBtn " onclick="routerSkip('board/board1')" style="left: 16.5vw;">60型一体机A</div>
+  <div class="topBtn" onclick="routerSkip('board/board3')" style="left: 25vw;">60型一体机B</div>
   <div class="topBtn " onclick="routerSkip('board/video')" style="left: 71vw;">视频展示</div>
   <div class="topBtn topBtnClick" onclick="routerSkip('board/doc')" style="left: 83vw;">文档归档</div>
 
diff --git a/haiwei-admin/src/main/resources/templates/board/video.html b/haiwei-admin/src/main/resources/templates/board/video.html
index f5eb788..063f7c8 100644
--- a/haiwei-admin/src/main/resources/templates/board/video.html
+++ b/haiwei-admin/src/main/resources/templates/board/video.html
@@ -20,8 +20,8 @@
 </script>
 <div>
   <div class="topBtn" onclick="routerSkip('board/board2')" style="left: 8vw;">首页</div>
-  <div class="topBtn " onclick="routerSkip('board/board1')" style="left: 18.5vw;">60型一体机</div>
-<!--  <div class="topBtn" style="left: 25vw;">60型一体机</div>-->
+  <div class="topBtn " onclick="routerSkip('board/board1')" style="left: 16.5vw;">60型一体机A</div>
+  <div class="topBtn" onclick="routerSkip('board/board3')" style="left: 25vw;">60型一体机B</div>
   <div class="topBtn topBtnClick" onclick="routerSkip('board/video')" style="left: 71vw;">视频展示</div>
   <div class="topBtn" onclick="routerSkip('board/doc')" style="left: 83vw;">文档归档</div>