莫海杰 3 days ago
parent
commit
0bdd800cfd
17 changed files with 1970 additions and 693 deletions
  1. 6 0
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/package-lock.json
  2. 2 1
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/package.json
  3. 1 1
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/public/index.html
  4. 1 1
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/router/index.js
  5. 1 1
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/chart.vue
  6. 106 0
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/AlarmBoard.vue
  7. 151 0
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/DayOutput.vue
  8. 101 0
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/DeviceOeeTime.vue
  9. 252 0
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/GunAirPressure.vue
  10. 277 0
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/GunCurrent.vue
  11. 134 0
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/HourOutput.vue
  12. 70 0
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/TitleHead.vue
  13. 174 0
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/index.vue
  14. 689 689
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/index.vue
  15. 5 0
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/yarn.lock
  16. BIN
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ/Content.zip
  17. 0 0
      skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ/SCADA_DAQ.csproj

+ 6 - 0
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/package-lock.json

@@ -12,6 +12,7 @@
         "@types/echarts": "^4.4.3",
         "axios": "^1.3.4",
         "core-js": "^3.6.4",
+        "dayjs": "^1.11.13",
         "echarts": "^4.6.0",
         "element-ui": "^2.15.13",
         "screenfull": "^5.1.0",
@@ -5944,6 +5945,11 @@
         "node": ">=0.10"
       }
     },
+    "node_modules/dayjs": {
+      "version": "1.11.13",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
+      "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
+    },
     "node_modules/de-indent": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",

+ 2 - 1
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/package.json

@@ -4,7 +4,7 @@
   "private": true,
   "scripts": {
     "server": "vue-cli-service serve --port 8080",
-	"local" :"vue-cli-service serve --mode local",
+    "local": "vue-cli-service serve --mode local",
     "build": "vue-cli-service build",
     "lint": "vue-cli-service lint"
   },
@@ -13,6 +13,7 @@
     "@types/echarts": "^4.4.3",
     "axios": "^1.3.4",
     "core-js": "^3.6.4",
+    "dayjs": "^1.11.13",
     "echarts": "^4.6.0",
     "element-ui": "^2.15.13",
     "screenfull": "^5.1.0",

+ 1 - 1
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/public/index.html

@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <link rel="icon" href="<%= BASE_URL %>logo.png">
-    <title>百亚数据管理看板</title>
+    <title>数据管理看板</title>
   </head>
   <body>
     <noscript>

+ 1 - 1
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/router/index.js

@@ -8,7 +8,7 @@ const routes = [
 	{
 		path: '/',
 		name: 'chart',
-		component: () => import('../views/chart.vue')
+		component: () => import('../views/data-chart/index.vue')
 	},
 	
 	

+ 1 - 1
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/chart.vue

@@ -3,7 +3,7 @@
 		<div class="bg">
 			<dv-loading v-if="loading">Loading...</dv-loading>
 			<div v-else class="host-body">
-				<head-title lineName="百亚设备信息化看板" />
+				<head-title lineName="信息化看板" />
 				<local-time ref="localTime" />
 				<div class="body-box">
 					<el-carousel :autoplay="true" height="1100px" ref="carousel" :interval="8000" arrow="never"

+ 106 - 0
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/AlarmBoard.vue

@@ -0,0 +1,106 @@
+<template>
+  <div>
+    <dv-border-box-8 style="padding: 5px; ">
+      <div style="width:1300px;height:409px;padding: 20px;">
+        <dv-scroll-board
+            style="width:880px;height:380px;overflow: hidden; "
+            :config="config"
+        />
+      </div>
+    </dv-border-box-8>
+  </div>
+</template>
+
+<script>
+import { getAlarmsAPI } from '@/api/chart.js'
+export default {
+  data(){
+    return{
+      olddata:[],
+      config: {
+        header: ['报警内容', '触发时间', '复位时间', '持续时长'],
+        index: true,
+        columnWidth: [70,500,275,275,200],
+        waitTime: 2000,
+        rowNum: 9,
+        align: ['center', 'center', 'center', 'center', 'center'],
+        hoverPause:true,
+        data: []
+      },
+    }
+  },
+  methods: {
+    getAlarms() {
+      return new Promise(resolve => {
+        getAlarmsAPI().then(({Data:res})=>{
+          const getRecoverColor = (duration)=>{
+            if (duration == " ") {
+              return "red"
+            }else{
+              return "green"
+            }
+          }
+          let data = []
+          res.forEach(item => {
+            // [`<span style="color:#37a2da;">${item.AlarmCode}</span>`, `<span style="color:#37a2da;">${item.AlarmCode}</span>`, '行1列3'],
+            // data.push([item.AlarmCode, item.Trigger, item.Recover, item.Duration])
+            // console.log(item);
+            data.push(
+                [
+                  `<span style="color:${getRecoverColor(item.Duration)};">${item.AlarmCode}</span>`,
+                  `<span style="color:${getRecoverColor(item.Duration)};">${item.Trigger}</span>`,
+                  `<span style="color:${getRecoverColor(item.Duration)};">${item.Recover}</span>`,
+                  `<span style="color:${getRecoverColor(item.Duration)};">${item.Duration}</span>`,
+                ]
+            )
+          })
+          if(this.olddata.length == 0){
+            this.olddata = data
+            this.config.data =  this.olddata
+            this.config.data = [...this.config.data]
+            this.config = {...this.config}
+          }else if (this.olddata.toString() != data.toString()) {
+            this.olddata = data
+            this.config.data =  this.olddata
+            this.config.data = [...this.config.data]
+            this.config = {...this.config}
+          }else{
+            return resolve(res)
+          }
+        })
+      })
+    },
+  },
+  mounted(){
+    this.getAlarms()
+    setInterval(()=>{
+      this.getAlarms()
+    },2000)
+  }
+}
+</script>
+
+<style lang="scss">
+
+.dv-scroll-board {
+  .header-item {
+    font-size: 20px;
+    font-weight: bold;
+    height: 20px !important;
+    padding: 0;
+    line-height: 20px !important;
+    display: block;
+  }
+
+  .rows {
+    height: 910px !important;
+
+    .row-item {
+      font-size: 20px;
+      height: 38px !important;
+      line-height: 38px !important;
+      color:rgb(255, 255, 255);
+    }
+  }
+}
+</style>

+ 151 - 0
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/DayOutput.vue

@@ -0,0 +1,151 @@
+<template>
+  <div>
+    <dv-border-box-8 style="padding: 5px;">
+      <div style="height: 100%; width: 100%">
+        <div ref="chartRef" style="width:900px; height:250px;"></div>
+      </div>
+    </dv-border-box-8>
+  </div>
+</template>
+
+<script>
+import * as echarts from "echarts";
+export default {
+  props:{
+    values:{
+      type: Array,
+      default: function () {
+        return [];
+      },
+    },
+    dateTime:{
+      type:Array,
+      default:function (){
+        return [];
+      }
+
+    }
+
+  },
+  watch: {
+    // 侦听数值变化刷新echart
+    values: {
+      deep:true,
+      handler(newVal, oldVal){
+        this.myEcharts()
+      }
+    },
+  },
+  methods: {
+    myEcharts() {
+      const chartDom = this.$refs.chartRef
+      const myChart = this.$echarts.init(chartDom);
+      const option = {
+        tooltip: {
+          trigger: 'axis',
+          formatter: function (params) {
+            return params[0].name + ': ' + params[0].value;
+          }
+        },
+        xAxis: {
+          data: this.dateTime,
+          axisTick: {show: false},
+          axisLine: {show: false},
+          axisLabel: {
+            color: 'white',
+            fontSize: 18,
+          }
+        },
+        yAxis: {
+          splitLine: {show: false},
+          axisTick: {show: false},
+          axisLine: {show: false},
+          axisLabel: {show: false}
+        },
+        legend: {
+          icon: "rect",
+          // itemWidth: 20,
+          // itemHeight: 10,
+          // itemGap: 20,
+          left: "1%",
+          top: "3%",
+          textStyle: {
+            fontSize: 14,
+            color: "#fff",
+          },
+          name: ["近期产量",""],
+          selectedMode: false,
+        },
+        grid: [{
+          bottom: 30,
+          right: 10,
+          left: 20,
+        }],
+        color: ['rgba(0, 194, 255, 1)'],
+        series: [
+        {
+          name: '近期产量',
+          type: 'bar',
+          barWidth: 30,
+          showBackground: true,
+          backgroundStyle: {
+            color: 'rgba(21,136,209,0.1)',
+          },
+          itemStyle: {
+            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+              {
+                offset: 0,
+                color: '#1893FE', //渐变1
+              },
+              {
+                offset: 1,
+                color: '#1EE3E8', //渐变2
+              },
+            ]),
+          },
+          data: this.values,
+          z: 0,
+          zlevel: 0,
+        },
+        {
+          name: '',
+          type: 'pictorialBar',
+          barWidth: 30,
+          itemStyle: {
+            color: '#021C46', //数据的间隔颜色
+          },
+          symbolRepeat: 'true',
+          symbolMargin: 3,
+          symbol: 'rect',
+          symbolSize: [30, 4],
+          data: this.values,
+          z: 1,
+          zlevel: 0,
+          label: {
+            show: true,
+            position: 'top',
+            fontSize: 14,
+            color: '#fff', //柱状顶部文字颜色
+            formatter: function (params) {
+              return params.data;
+            },
+          }
+        },
+      ],
+      };
+      //使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option,true);
+    },
+  },
+  mounted() {
+    this.myEcharts();
+  }
+}
+</script>
+<style>
+.header-item{
+  display: flex;
+  align-items: center;
+  margin:10px;
+}
+</style>

+ 101 - 0
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/DeviceOeeTime.vue

@@ -0,0 +1,101 @@
+<template>
+  <div style="width: 100%;">
+    <dv-border-box-8 style="padding: 20px; width: 100%;height: 300px;">
+      <div style="height: 200px; width: 25%">
+        <div style="margin-bottom: 5px"><img src="../../../../static/img/Title_Icon.png" style="width: 15px; height: 15px;" />本月稼动率</div>
+        <dv-percent-pond :config="configMonthOee" style="width:200px;height:78px;margin-bottom: 20px"/>
+        <div style="margin-bottom: 5px"><img src="../../../../static/img/Title_Icon.png" style="width: 15px; height: 15px;" />今日稼动率</div>
+        <dv-percent-pond :config="configDayOee" style="width:200px;height:78px;"/>
+      </div>
+      <div style="width: 73%; display: flex; justify-content: space-between; flex-wrap: wrap">
+
+          <div>
+            <div style="margin-bottom: 5px"><img src="../../../../static/img/Title_Icon.png" style="width: 15px; height: 15px;" />总时长</div>
+            <div style="position: relative;">
+              <img class="item-bg" src="../../../../static/img/total.png">
+              <span style="position: absolute; left: 135px;top: 34px; font-size: 30px"> {{totalTime}} </span>
+            </div>
+          </div>
+
+          <div>
+            <div style="margin-bottom: 5px"><img src="../../../../static/img/Title_Icon.png" style="width: 15px; height: 15px;" />今日运行</div>
+            <div style="position: relative;">
+              <img class="item-bg" src="../../../../static/img/run.png">
+              <span style="position: absolute; left: 135px;top: 34px; font-size: 30px"> {{runTime}} </span>
+            </div>
+          </div>
+
+
+        <div>
+          <div style="margin-bottom: 5px"><img src="../../../../static/img/Title_Icon.png" style="width: 15px; height: 15px;" />今日待机</div>
+          <div style="position: relative;">
+            <img class="item-bg" src="../../../../static/img/standby.png">
+            <span style="position: absolute; left: 135px;top: 34px; font-size: 30px"> {{standbyTime}} </span>
+          </div>
+        </div>
+
+        <div>
+          <div style="margin-bottom: 5px"><img src="../../../../static/img/Title_Icon.png" style="width: 15px; height: 15px;" />今日报警</div>
+          <div style="position: relative;">
+            <img class="item-bg" src="../../../../static/img/alarm.png">
+            <span style="position: absolute; left: 135px;top: 34px; font-size: 30px"> {{alarmTime}} </span>
+          </div>
+        </div>
+      </div>
+    </dv-border-box-8>
+  </div>
+</template>
+
+<script>
+import {getOEEAPI} from "@/api/chart";
+
+export default {
+  data(){
+    return{
+      configMonthOee: {
+        value: 0,
+      },
+      configDayOee: {
+        value: 0,
+      },
+      totalTime: '00:00:00',
+      runTime: '00:00:00',
+      standbyTime: '00:00:00',
+      alarmTime: '00:00:00',
+    }
+  },
+  methods: {
+    async getDeviceOeeTime(){
+      const { Data:res } = await getOEEAPI()
+      this.configDayOee.value = res.DayOEE
+      this.configMonthOee.value = res.MonthOEE
+      //下面两行代码必须有 先对对象重新赋值 在对对象里的数据重新赋值 不然视图无法更新
+      this.configDayOee = {...this.configDayOee}
+      this.configMonthOee = {...this.configMonthOee}
+      this.totalTime = res.StateTime.TotalTime
+      this.alarmTime = res.StateTime.AlarmTime
+      this.runTime = res.StateTime.RunTime
+      this.standbyTime = res.StateTime.StandbyTime
+    }
+  },
+  async created() {
+    const refreshTimeTask = async () => {
+      await this.getDeviceOeeTime()
+      setTimeout(await refreshTimeTask, 1500)
+    }
+    await refreshTimeTask()
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .border-box-content{
+  width: 100%;
+  display: flex;
+  justify-content: space-between;
+}
+.item-bg{
+  height: 80px;
+  margin-top: 4px;
+}
+</style>

+ 252 - 0
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/GunAirPressure.vue

@@ -0,0 +1,252 @@
+<template>
+  <div>
+    <dv-border-box-8 style="padding: 5px;">
+      <div ref="chartRef" style="width:950px;height:310px;"></div>
+    </dv-border-box-8>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+
+    }
+  },
+  props:{
+    title: {
+      type: String,
+      default: function () {
+        return "";
+      },
+    },
+    chartTitle:{
+      type:String
+    },
+    leftData:{
+      type: Array,
+      default: ()=>[]
+    },
+    centerData:{
+      type: Array,
+      default: ()=>[]
+    },
+    rightData:{
+      type: Array,
+      default: ()=>[]
+    },
+    dataTime:{
+      type:Array,
+      default:()=>[]
+    }
+  },
+  watch: {
+    // 侦听数值变化刷新echart
+    leftData: {
+      deep:true,
+      handler(newVal, oldVal){
+        this.myEcharts();
+      }
+    },
+    centerData: {
+      deep:true,
+      handler(newVal, oldVal){
+        this.myEcharts();
+      }
+    },
+    rightData: {
+      deep:true,
+      handler(newVal, oldVal){
+        this.myEcharts();
+      }
+    },
+    dateTime: {
+      deep:true,
+      handler(newVal, oldVal){
+        this.myEcharts();
+      }
+    },
+  },
+  methods: {
+    myEcharts() {
+      const chartDom = this.$refs.chartRef
+      const myChart = this.$echarts.init(chartDom);
+      let option;
+      option = {
+        tooltip: {
+          trigger: "axis",
+          axisPointer: {
+            lineStyle: {
+              color: {
+                type: "linear",
+                x: 0,
+                y: 0,
+                x2: 0,
+                y2: 1,
+                colorStops: [
+                  {
+                    offset: 0,
+                    color: "rgba(0, 255, 233,0)",
+                  },
+                  {
+                    offset: 0.5,
+                    color: "rgba(255, 255, 255,1)",
+                  },
+                  {
+                    offset: 1,
+                    color: "rgba(0, 255, 233,0)",
+                  },
+                ],
+                global: false,
+              },
+            },
+          },
+          // textStyle: {
+          //   color: "#fff",
+          // },
+          // backgroundColor: "rgba(0, 58, 99, 0.8)", //设置背景颜色
+          // borderColor: "rgba(0, 58, 99, 0.8)",
+          confine: true,
+          formatter: "{b}:{c}",
+        },
+        legend: {
+          icon: "rect",
+          itemWidth: 20,
+          itemHeight: 10,
+          itemGap: 20,
+          right: "4%",
+          top: "2%",
+          textStyle: {
+            fontSize: 14,
+            color: "#fff",
+          },
+          data: ["左枪气压","中枪气压","右枪气压"],
+          selectedMode: false,
+        },
+        grid: {
+          top: "14%",
+          left: "2%",
+          right: "6%",
+          bottom: "2%",
+          containLabel: true,
+        },
+        xAxis: {
+          type: "category",
+          data: this.dataTime,
+          axisLabel: {
+            color: "#ffffff",
+            // interval: 0,
+            // fontSize: 12,
+          },
+          axisLine: {
+            show: true,
+            lineStyle: {
+              color: "rgba(127, 214, 255, .4)",
+            },
+          },
+          splitLine: {
+            show: false,
+          },
+          axisTick: {
+            show: false,
+          },
+          boundaryGap: false,
+        },
+        yAxis: {
+          type: "value",
+          name: "Kpa",
+          nameTextStyle: {
+            color: "#ffffff",
+            fontSize: 12,
+          },
+          axisLine: {
+            show: false,
+            lineStyle: {
+              color: "rgba(127, 214, 255, .4)",
+            },
+          },
+          min: 0,
+          axisLabel: {
+            show: true,
+            color: "#ffffff",
+            fontSize: 12,
+          },
+          axisTick: {
+            show: false,
+          },
+          splitLine: {
+            show: true,
+            lineStyle: {
+              width: 0.8,
+              color: "rgba(127, 214, 255, .4)",
+              type: "dashed",
+            },
+          },
+        },
+        series: [
+          {
+            name: "左枪气压",
+            type: "line",
+            showSymbol: false,
+            smooth: true,
+            // symbolSize: 8,
+            lineStyle: {
+              normal: {
+                color: "rgba(0, 222, 255, 0.77)",
+              },
+            },
+            itemStyle: {
+              color: "rgba(0, 222, 255, 0.77)",
+              borderColor: "rgba(0, 222, 255, 0.77)",
+              borderWidth: 2,
+            },
+            data: this.leftData
+          },
+          {
+            name: "中枪气压",
+            type: "line",
+            showSymbol: false,
+            smooth: true,
+            // symbolSize: 8,
+            lineStyle: {
+              normal: {
+                color: "rgba(255, 202, 0, 0.78)",
+              },
+            },
+            itemStyle: {
+              color: "rgba(255, 202, 0, 0.78)",
+              borderColor: "rgba(255, 202, 0, 0.78)",
+              borderWidth: 2,
+            },
+            data: this.centerData
+          },
+          {
+            name: "右枪气压",
+            type: "line",
+            showSymbol: false,
+            smooth: true,
+            // symbolSize: 8,
+            lineStyle: {
+              normal: {
+                color: "rgba(0, 255, 177, 0.74)",
+              },
+            },
+            itemStyle: {
+              color:  "rgba(0, 255, 177, 0.74)",
+              borderColor:  "rgba(0, 255, 177, 0.74)",
+              borderWidth: 2,
+            },
+            data: this.rightData
+          },
+        ],
+      };
+      //使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option,true);
+    }
+  },
+  mounted() {
+    this.myEcharts();
+  }
+}
+</script>
+

+ 277 - 0
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/GunCurrent.vue

@@ -0,0 +1,277 @@
+<template>
+  <div>
+    <dv-border-box-8 style="padding: 5px;">
+      <div ref="chartRef" style="width:950px;height:310px;"></div>
+    </dv-border-box-8>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+
+    }
+  },
+  props:{
+    title: {
+      type: String,
+      default: function () {
+        return "";
+      },
+    },
+    chartTitle:{
+      type:String
+    },
+    leftData:{
+      type: Array,
+      default: ()=>[]
+    },
+    centerData:{
+      type: Array,
+      default: ()=>[]
+    },
+    rightData:{
+      type: Array,
+      default: ()=>[]
+    },
+    dataTime:{
+      type:Array,
+      default:()=>[]
+    }
+  },
+  watch: {
+    // 侦听数值变化刷新echart
+    leftData: {
+      deep:true,
+      handler(newVal, oldVal){
+        this.myEcharts();
+      }
+    },
+    centerData: {
+      deep:true,
+      handler(newVal, oldVal){
+        this.myEcharts();
+      }
+    },
+    rightData: {
+      deep:true,
+      handler(newVal, oldVal){
+        this.myEcharts();
+      }
+    },
+    dateTime: {
+      deep:true,
+      handler(newVal, oldVal){
+        this.myEcharts();
+      }
+    },
+  },
+  methods: {
+    myEcharts() {
+      const chartDom = this.$refs.chartRef
+      const myChart = this.$echarts.init(chartDom);
+      let option;
+      const color = [
+        [
+          'rgba(0, 222, 255, 0)',
+          'rgba(0, 222, 255, 0.77)',
+          'rgba(0, 222, 255, 1)',
+          'rgb(6, 135, 188)',
+        ],
+        [
+          'rgba(255, 202, 0, 0)',
+          'rgba(255, 202, 0, 0.78)',
+          'rgba(255, 202, 0, 1)',
+          'rgb(135, 134, 60)',
+        ],
+        [
+          'rgba(0, 255, 177, 0)',
+          'rgba(0, 255, 177, 0.74)',
+          'rgba(0, 255, 177, 1)',
+          'rgb(15, 155, 143)',
+        ],
+      ];
+      const dataList = [
+        {
+          name: '左枪电流',
+          value: this.leftData
+        },
+        {
+          name: '中枪电流',
+          value: this.centerData,
+        },
+        {
+          name: '右枪电流',
+          value: this.rightData,
+        },
+      ]
+      let seriesData = (dataList || []).map((item, index) => {
+        return {
+          name: item.name || '',
+          type: 'line',
+          areaStyle: {
+            color: {
+              type: 'linear',
+              x: 0,
+              y: 0,
+              x2: 0,
+              y2: 1,
+              colorStops: [
+                {
+                  offset: 0,
+                  color: color[index][1], // 0% 处的颜色
+                },
+                {
+                  offset: 1,
+                  color: color[index][0], // 100% 处的颜色
+                },
+              ],
+              global: false, // 缺省为 false
+            },
+            // opacity: 0.5,
+          },
+          showSymbol: false,
+          symbolSize: 14,
+          symbol: 'circle',
+          //拐点球配置
+          itemStyle: {
+            normal: {
+              color: color[index][2],
+              shadowColor: color[index][2],
+              shadowBlur: 10,
+            },
+          },
+          lineStyle: {
+            normal: {
+              color: color[index][2],
+              width: 1,
+            },
+          },
+
+          data: item.value || [],
+        };
+      });
+      option = {
+        tooltip: {
+          trigger: "axis",
+          axisPointer: {
+            lineStyle: {
+              color: {
+                type: "linear",
+                x: 0,
+                y: 0,
+                x2: 0,
+                y2: 1,
+                colorStops: [
+                  {
+                    offset: 0,
+                    color: "rgba(0, 255, 233,0)",
+                  },
+                  {
+                    offset: 0.5,
+                    color: "rgba(255, 255, 255,1)",
+                  },
+                  {
+                    offset: 1,
+                    color: "rgba(0, 255, 233,0)",
+                  },
+                ],
+                global: false,
+              },
+            },
+          },
+          // textStyle: {
+          //   color: "#fff",
+          // },
+          // backgroundColor: "rgba(0, 58, 99, 0.8)", //设置背景颜色
+          // borderColor: "rgba(0, 58, 99, 0.8)",
+          confine: true,
+          formatter: "{b}:{c}",
+        },
+        legend: {
+          icon: "rect",
+          itemWidth: 20,
+          itemHeight: 10,
+          itemGap: 20,
+          right: "4%",
+          top: "2%",
+          textStyle: {
+            fontSize: 14,
+            color: "#fff",
+          },
+          data: ["左枪电流","中枪电流","右枪电流"],
+          selectedMode: false,
+        },
+        grid: {
+          top: "14%",
+          left: "2%",
+          right: "6%",
+          bottom: "2%",
+          containLabel: true,
+        },
+        xAxis: {
+          type: "category",
+          data: this.dataTime,
+          axisLabel: {
+            color: "#ffffff",
+            // interval: 0,
+            // fontSize: 12,
+          },
+          axisLine: {
+            show: true,
+            lineStyle: {
+              color: "rgba(127, 214, 255, .4)",
+            },
+          },
+          splitLine: {
+            show: false,
+          },
+          axisTick: {
+            show: false,
+          },
+          boundaryGap: false,
+        },
+        yAxis: {
+          type: "value",
+          name: "A",
+          nameTextStyle: {
+            color: "#ffffff",
+            fontSize: 12,
+          },
+          axisLine: {
+            show: false,
+            lineStyle: {
+              color: "rgba(127, 214, 255, .4)",
+            },
+          },
+          min: 0,
+          axisLabel: {
+            show: true,
+            color: "#ffffff",
+            fontSize: 12,
+          },
+          axisTick: {
+            show: false,
+          },
+          splitLine: {
+            show: true,
+            lineStyle: {
+              width: 0.8,
+              color: "rgba(127, 214, 255, .4)",
+              type: "dashed",
+            },
+          },
+        },
+        series: seriesData,
+      };
+      //使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option,true);
+    }
+  },
+  mounted() {
+    this.myEcharts();
+  }
+}
+</script>
+

+ 134 - 0
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/HourOutput.vue

@@ -0,0 +1,134 @@
+<template>
+  <div>
+    <dv-border-box-8 style="padding: 5px;">
+      <div style="height: 100%; width: 100%">
+        <div ref="chartRef" style="width:900px; height:250px;"></div>
+      </div>
+    </dv-border-box-8>
+  </div>
+</template>
+
+<script>
+export default {
+  props:{
+    values:{
+      type: Array,
+      default: function () {
+        return [];
+      },
+    },
+    dateTime:{
+      type:Array,
+      default:function (){
+        return [];
+      }
+
+    }
+
+  },
+  watch: {
+    // 侦听数值变化刷新echart
+    values: {
+      deep:true,
+      handler(newVal, oldVal){
+        this.myEcharts()
+      }
+    },
+  },
+  methods: {
+    myEcharts() {
+      const chartDom = this.$refs.chartRef
+      const myChart = this.$echarts.init(chartDom);
+      const option = {
+        tooltip: {
+          trigger: 'axis',
+          formatter: function (params) {
+            return params[0].name + ': ' + params[0].value;
+          }
+        },
+        xAxis: {
+          data: this.dateTime,
+          axisTick: {show: false},
+          axisLine: {show: false},
+          axisLabel: {
+            color: 'white',
+            fontSize: 18,
+          }
+        },
+        yAxis: {
+          splitLine: {show: false},
+          axisTick: {show: false},
+          axisLine: {show: false},
+          axisLabel: {show: false}
+        },
+        legend: {
+          icon: "rect",
+          // itemWidth: 20,
+          // itemHeight: 10,
+          // itemGap: 20,
+          left: "1%",
+          top: "3%",
+          textStyle: {
+            fontSize: 14,
+            color: "#fff",
+          },
+          name: ["今日每小时产量",""],
+          selectedMode: false,
+        },
+        grid: [{
+          bottom: 30,
+          right: 10,
+          left: 20,
+        }],
+        color: ['rgba(0, 194, 255, 1)'],
+        series: [
+          {
+            name: '今日每小时产量',
+            type: 'pictorialBar',
+            barCategoryGap: '-130%',
+            symbol: 'path://M0,10 L10,10 C5.5,10 5.5,5 5,0 C4.5,5 4.5,10 0,10 z',
+            itemStyle: {
+              opacity: 0.5
+            },
+            emphasis: {
+              itemStyle: {
+                opacity: 1
+              }
+            },
+            data: this.values,
+            z: 10,
+            label: {
+              show: 'true',
+              color: 'white',
+              fontSize: 18,
+              opacity: 1,
+              fontWeight: 'bold'
+            },
+          },
+          {
+            name: '',
+            type: 'pictorialBar',
+            barGap: '-100%',
+            symbolPosition: 'end',
+            symbolSize: [20, 20],
+            symbolOffset: [0, '-120%'],
+            data: this.values,
+          }
+        ]
+      };
+      //使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option,true);
+    },
+  },
+  mounted() {
+    this.myEcharts();
+  }
+}
+</script>
+<style>
+.header-item{
+  display: flex;
+  align-items: center;
+  margin:10px;
+}
+</style>

+ 70 - 0
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/components/TitleHead.vue

@@ -0,0 +1,70 @@
+<template>
+  <div style="position: relative;">
+    <div class="d-flex jc-center">
+      <dv-decoration-10 class="dv-dec-10" />
+      <div class="d-flex jc-center">
+        <div class="title">
+          <span class="title-text">{{lineName}}</span>
+          <dv-decoration-6 class="dv-dec-6" :reverse="true" :color="['#50e3c2', '#67a1e5']" />
+        </div>
+      </div>
+      <dv-decoration-10 class="dv-dec-10-s" />
+    </div>
+    <dv-decoration-11 style="position:absolute;top: -25px; right: -20px; width: 280px; height: 60px">{{ dateTime }}</dv-decoration-11>
+  </div>
+</template>
+
+<script>
+import dayjs from "dayjs";
+export default {
+  props:['lineName'],
+  data(){
+    return {
+      dateTime: dayjs().format('YYYY-MM-DD HH:mm:ss')
+    }
+  },
+  mounted() {
+    const refreshTimeTask = () => {
+      this.dateTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
+      setTimeout(refreshTimeTask, 850)
+    }
+    refreshTimeTask()
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.dv-dec-10,
+.dv-dec-10-s {
+  width: 24%;
+  height: 10px;
+}
+.dv-dec-10-s {
+  transform: rotateY(180deg);
+}
+.dv-dec-6 {
+  position: absolute;
+  bottom: -30px;
+  left: 50%;
+  width: 250px;
+  height: 8px;
+  transform: translate(-50%);
+}
+.title {
+  position: relative;
+  width: 400px;
+  text-align: center;
+  background-size: cover;
+  margin-top: 5px;
+  background-repeat: no-repeat;
+  .title-text {
+    font-size: 1.8rem;
+    position: absolute;
+    font-weight: bold;
+    bottom: -10px;
+    left: 50%;
+    width: 100%;
+    transform: translate(-50%);
+  }
+}
+</style>

+ 174 - 0
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/data-chart/index.vue

@@ -0,0 +1,174 @@
+<template>
+  <div id="data-chart" ref="appRef">
+    <div class="background">
+      <title-head lineName="信息化看板" />
+      <dv-loading v-if="loading">Loading...</dv-loading>
+      <div v-else>
+        <div class="chart-main-container">
+          <div style="width: 49.5%;">
+            <hour-output
+              :values="hourOutput.values"
+              :date-time="hourOutput.dateTime"
+              style="margin-bottom: 21px;"
+              v-if="hourOutput.values.length !== 0 && hourOutput.dateTime.length !== 0"
+            />
+            <day-output
+                :values="dayOutput.values"
+                :date-time="dayOutput.dateTime"
+                style="margin-bottom: 21px;"
+                v-if="dayOutput.values.length !== 0 && dayOutput.dateTime.length !== 0"
+            />
+            <alarm-board />
+          </div>
+          <div style="width: 49.5%; margin-left: 1%;">
+            <device-oee-time
+                :alarm-time="alarmTime"
+                :run-time="runTime"
+                :standby-time="standbyTime"
+                :total-time="totalTime"
+                style="margin-bottom: 20px;"
+            />
+            <gun-current
+                :left-data="environment.leftCurrent"
+                :center-data="environment.centerCurrent"
+                :right-data="environment.rightCurrent"
+                :data-time="environment.dateTime"
+                style="margin-bottom: 20px;"
+                v-if="hourOutput.values.length !== 0 && hourOutput.dateTime.length !== 0"
+            />
+            <gun-air-pressure
+              :left-data="environment.leftAirPressure"
+              :center-data="environment.centerAirPressure"
+              :right-data="environment.rightAirPressure"
+              :data-time="environment.dateTime"
+              v-if="environment.dateTime.length !== 0 && environment.dateTime.length !== 0"
+            />
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import drawMixin from "@/utils/drawMixin";
+import TitleHead from "./components/TitleHead.vue";
+import HourOutput from "@/views/data-chart/components/HourOutput.vue";
+import GunAirPressure from "@/views/data-chart/components/GunAirPressure.vue";
+import GunCurrent from "@/views/data-chart/components/GunCurrent.vue";
+import DeviceOeeTime from "@/views/data-chart/components/DeviceOeeTime.vue";
+import AlarmBoard from "@/views/data-chart/components/AlarmBoard.vue";
+import DayOutput from "@/views/data-chart/components/DayOutput.vue";
+import {getEnvironmentValuesAPI, getOutputAPI} from '@/api/chart.js'
+// import dayjs from "dayjs";
+export default {
+  mixins: [drawMixin],
+  components: {
+    TitleHead,
+    HourOutput,
+    GunAirPressure,
+    GunCurrent,
+    DeviceOeeTime,
+    AlarmBoard,
+    DayOutput
+  },
+  data() {
+    return {
+      loading: true,
+      hourOutput: {
+        values: [],
+        dateTime: []
+      },
+      dayOutput: {
+        values: [],
+        dateTime: []
+      },
+      environment:{
+        leftAirPressure: [],
+        centerAirPressure: [],
+        rightAirPressure: [],
+        leftCurrent: [],
+        centerCurrent: [],
+        rightCurrent: [],
+        dateTime: []
+      },
+      dayOee: 0,
+      monthOee: 0,
+      totalTime: '',
+      runTime: '',
+      standbyTime: '',
+      alarmTime: '',
+    }
+  },
+  methods:{
+    async getOutput(){
+      const { Data:res } = await getOutputAPI()
+      this.hourOutput.dateTime = res.HourOutputs.Time
+      this.hourOutput.values = res.HourOutputs.Value
+      this.dayOutput.dateTime = res.DayOutputs.Time
+      this.dayOutput.values = res.DayOutputs.Value
+      // for (let i = 0; i < 24; i++) {
+      //   this.hourOutput.values[i] = parseInt(Math.random()*(100-1+1)+1,10)
+      // }
+      // for (let i = 0; i < 14; i++) {
+      //   this.dayOutput.values[i] = parseInt(Math.random()*(1000-1+1)+1,10)
+      // }
+    },
+    async getEnvironment(){
+      const { Data:res } = await getEnvironmentValuesAPI()
+      this.environment.leftAirPressure = res.Left.AirPressure
+      this.environment.centerAirPressure = res.Center.AirPressure
+      this.environment.rightAirPressure = res.Right.AirPressure
+      this.environment.leftCurrent = res.Left.Current
+      this.environment.centerCurrent = res.Center.Current
+      this.environment.rightCurrent = res.Right.Current
+      this.environment.dateTime = res.Time
+      // for (let i = 0; i < 89; i++) {
+      //   this.environment.leftAirPressure[i] = Math.random()*(100-10)+10
+      //   this.environment.centerAirPressure[i] = Math.random()*(100-10)+10
+      //   this.environment.rightAirPressure[i] = Math.random()*(100-10)+10
+      //   this.environment.leftCurrent[i] = Math.random()*(1000-10)+10
+      //   this.environment.centerCurrent[i] = Math.random()*(1000-10)+10
+      //   this.environment.rightCurrent = Math.random()*(1000-10)+10
+      // }
+    }
+  },
+  async created() {
+    const refreshTimeTask = async () => {
+      await this.getOutput()
+      await this.getEnvironment()
+      this.loading = false
+      setTimeout(await refreshTimeTask, 1500)
+    }
+    await refreshTimeTask()
+  }
+}
+</script>
+
+<style scoped lang="scss">
+#data-chart {
+  color: #d3d6dd;
+  width: 1920px;
+  height: 1080px;
+  position: relative;
+  top: 50%;
+  left: 50%;
+  transform-origin: left top;
+  overflow: hidden;
+  .background {
+    width: 100%;
+    height: 100%;
+    padding: 1.2rem 0.9rem 0 0.9rem;
+    background-image: url("~@/assets/pageBg.png");
+    background-size: cover;
+    background-position: center center;
+  }
+  .chart-main-container {
+    width: 100%;
+    height: 100%;
+    margin-top: 40px;
+    display: flex;
+    flex-wrap: wrap;
+  }
+}
+</style>

+ 689 - 689
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/src/views/index.vue

@@ -1,689 +1,689 @@
-<template>
-	<div id="index" ref="appRef">
-		<div class="bg">
-			<dv-loading v-if="loading">Loading...</dv-loading>
-			<div v-else class="host-body">
-				<headTitle :lineName="ProductionLineName"></headTitle>
-				<localTime></localTime>
-
-				<div class="body-box" style="padding-top: 10px;">
-					<!-- 第三行数据 -->
-					<div class="content-box">
-					</div>
-
-					<!-- 第四行数据 -->
-					<div class="bottom-box">
-						<dv-border-box-12>
-							<!-- <bottomRight /> -->
-							<div class="orderWorking" style="width:100%;height:430px;padding: 20px;">
-								<dv-scroll-board :config="config" />
-							</div>
-							<div style="width:100%;height:370px;padding: 20px;">
-								<dv-scroll-board :config="config1" />
-							</div>
-						</dv-border-box-12>
-					</div>
-					<!--底部四个数据-->
-					<div class="buttomBox">
-						<dv-border-box-8>
-							<div class="buttomBox-items">
-								<div class="buttomBox-items-title">
-									<img src="../../static/img/Title_Icon.png" />
-									<span class="buttomBox-items-title-text">当日产量/辆</span>
-								</div>
-								<span class="buttomBox-items-data">{{dayOutput}}</span>
-							</div>
-						</dv-border-box-8>
-						<dv-border-box-8>
-							<div class="buttomBox-items">
-								<div class="buttomBox-items-title">
-									<img src="../../static/img/Title_Icon.png" />
-									<span class="buttomBox-items-title-text">当月产量/辆</span>
-								</div>
-								<span class="buttomBox-items-data">{{MonthOutput}}</span>
-							</div>
-						</dv-border-box-8>
-						<dv-border-box-8>
-							<div class="buttomBox-items">
-								<div class="buttomBox-items-title">
-									<img src="../../static/img/Title_Icon.png" />
-									<span class="buttomBox-items-title-text">累计产量/辆</span>
-								</div>
-								<span class="buttomBox-items-data">{{TotalOutput}}</span>
-							</div>
-						</dv-border-box-8>
-						<dv-border-box-8>
-							<div class="buttomBox-items">
-								<div class="buttomBox-items-title">
-									<img src="../../static/img/Title_Icon.png" />
-									<span class="buttomBox-items-title-text">当天异常次数</span>
-								</div>
-								<span class="buttomBox-items-data">{{alarmCount}}</span>
-							</div>
-
-						</dv-border-box-8>
-						<dv-border-box-8>
-							<div class="buttomBox-items">
-								<div class="buttomBox-items-title">
-									<img src="../../static/img/Title_Icon.png" />
-									<span class="buttomBox-items-title-text">当天异常时间</span>
-								</div>
-								<span class="buttomBox-items-data">{{alarmTime}}</span>
-							</div>
-						</dv-border-box-8>
-					</div>
-					<!-- <div>{{test}}</div> -->
-
-				</div>
-			</div>
-			<!-- <div>{{test}}</div> -->
-
-			<!-- <el-button type="text" id="fullScreenBtn" @click="onclick"></el-button> -->
-			<el-dialog :visible.sync="alarmDialogVisible" width="100%" height="80%"
-				style="margin-bottom: 10px;overflow-y: auto;" :show-close="false" :modal-append-to-body="false">
-				<!-- <dv-border-box-7 :color="['red', 'orange']" padding: 0.5rem,background: rgba(255, 2, 6, 0.2),> -->
-				<div style="width:100%;height:1050px;display: flex; flex-direction: column;">
-					<div :style="[{height:(stateArr.length == 1 ? '100%' : stateArr.length == 2 ? '50%' : '33.3%'),
-						margin: '0.3rem',
-						background: (stateArr[index].state) == '停止' ? 'rgba(255, 2, 6, 0.3)' : (stateArr[index].state) == '求助' ? 'rgba(255, 255, 0, 0.3)' : 'rgba(0, 255, 0, 0.3)'}]"
-						v-for="(item,index) in stateArr" :key="index">
-						<!-- <el-table :data="tableData" border="true" style="width: 100%;background-color: transparent;"
-								:row-class-name="tableRowClassName">
-								<el-table-column prop="state" label="报警类型" width="300">
-								</el-table-column>
-								<el-table-column prop="stateNum" label="工位号" width="1100">
-								</el-table-column>
-								<el-table-column prop="time" label="触发时间" width="500">
-								</el-table-column>
-							</el-table> -->
-						<conpenttest :state="stateArr[index].state" :stationNumber="stateArr[index].stationNumber">
-						</conpenttest>
-					</div>
-				</div>
-				<!-- </dv-border-box-7> -->
-			</el-dialog>
-			<!-- <el-dialog>
-				<div style="width: 100%;height: 100%;background-image: url("../../static/img/announcementBackground.png");">
-					
-				</div>
-			</el-dialog> -->
-			<el-dialog :visible.sync="announcementDialogVisible" width="100%" height="100%"
-				style="margin-bottom: 10px;overflow-y: auto;" :show-close="false" class="announcementDialog"
-				:modal-append-to-body="false">
-				<div style="width: 100%;height: 1080px;">
-					<announcement :title="announcementTitle" :content="announcementContent"
-						:titleFontSize="announcementTitleSize" :contentFontSize="announcementContentSize">
-					</announcement>
-				</div>
-
-			</el-dialog>
-		</div>
-	</div>
-</template>
-
-<script>
-	import drawMixin from "../utils/drawMixin";
-	import headTitle from "./head.vue";
-	import localTime from "./localTime.vue";
-	import conpenttest from "./AlarmModel.vue";
-	import announcement from './announcementModel.vue'
-
-	// import Vue from 'vue'
-	var that = require("../api/product");
-	var notice = [];
-	var configAlign = ['center', 'center', 'center', 'center', 'center'];
-	var configColumnWidth = [500, 570, 245, 245, 240]
-	var configWaitTime = 5000;
-
-	export default {
-		mixins: [drawMixin],
-		data() {
-			return {
-				dayOutput: 0,
-				MonthOutput: 0,
-				TotalOutput: 0,
-				alarmCount: 0,
-				alarmTime: '00:00:00',
-				stateArr: [],
-				height: 500,
-				tableData: [],
-				announcementTitle: '',
-				announcementContent: '',
-				announcementTitleSize: '',
-				announcementContentSize: '',
-				alarmDialogVisible: false,
-				announcementDialogVisible: false,
-				ProductionLineId: '',
-				WorkShopId: '',
-				ProductionLineName: '生产看板',
-				title: '测试',
-				loading: true,
-				decorationColor: ['#568aea', '#000000'],
-				config: {
-					header: ['工单顺序-生产中', '车型', '计划', '完成', '达成率'],
-					data: [],
-					index: false,
-					columnWidth: configColumnWidth,
-					waitTime: configWaitTime,
-					rowNum: 2,
-					align: configAlign
-				},
-				config1: {
-					header: ['工单顺序-待生产', '车型', '计划', '完成', '达成率'],
-					data: [],
-					index: false,
-					columnWidth: configColumnWidth,
-					waitTime: configWaitTime,
-					rowNum: 2,
-					align: configAlign
-				},
-			}
-		},
-		components: {
-			headTitle,
-			localTime,
-			conpenttest,
-			announcement
-			// el-dialog,
-			// el-table,
-			// el-table-column
-		},
-		mounted() {
-			// document.getElementById("fullScreenBtn").click();
-			// this.test = this.$BaseUrl.BaseUrl;
-			// console.log(this.$BaseUrl);
-			console.log("process.env = " + process.env.NODE_ENV);
-			console.log("process.env =", process.env);
-			var isGetInfo = false;
-			//获取产线信息
-			that.GetProductionLineInfo().then(res => {
-				var resData = res.Data
-				isGetInfo = true;
-				this.ProductionLineId = resData.ProductionLineId;
-				this.WorkShopId = resData.WorkShopId;
-				this.ProductionLineName = resData.ProductionLineName + "生产看板";
-				this.PlcName = resData.PlcName;
-				// console.log(res);
-				console.log("车间号=" + this.WorkShopId + ",产线号=" + this.ProductionLineId + ",产线名称=" + this
-					.ProductionLineName + ",PLC名称 =" + this.PlcName);
-			})
-			//定义公告循环显示定时器
-			var noticeInterval;
-
-			var apiInterval = setInterval(() => {
-				if (isGetInfo == false) {
-					that.GetProductionLineInfo().then(res => {
-						var resData = res.Data
-						this.ProductionLineId = resData.ProductionLineId;
-						this.WorkShopId = resData.WorkShopId;
-						this.ProductionLineName = resData.ProductionLineName + "生产看板";
-						// console.log(res);
-						console.log("车间号=" + this.WorkShopId + ",产线号=" + this.ProductionLineId + ",产线名称=" +
-							this
-							.ProductionLineName);
-
-					})
-				}
-
-				//订单详情接口
-				that.GetTaskInfo([this.WorkShopId], [this.ProductionLineId]).then((num) => {
-					//console.log(num.Data)
-					let numData = num.Data;
-					if (numData != null) {
-						// var orderInfoCurrent = [];
-						var workingInfoCurrent = [];
-						var standbyInfoCurrent = [];
-						//OrderState等于生产中
-						num.Data.forEach(element => {
-							let completionRate = element.CompletionRate * 100 + "%";
-
-							let arr = [element.OrderSequence, element.MotorcycleTypeName,
-								element.ScheduledProduction, element.CurrentProduction,
-								completionRate
-							];
-							if (element.OrderState == "生产中") {
-								workingInfoCurrent.push(arr)
-							} else {
-								standbyInfoCurrent.push(arr)
-							}
-							// orderInfoCurrent.push(arr);
-						})
-						if (JSON.stringify(workingInfoCurrent) != JSON.stringify(this.config.data) ||
-							JSON.stringify(standbyInfoCurrent) != JSON.stringify(this.config1.data)) {
-
-							this.config = {
-								header: ['工单顺序-生产中', '车型', '计划', '完成', '达成率'],
-								data: workingInfoCurrent,
-								index: false,
-								columnWidth: configColumnWidth,
-								waitTime: configWaitTime,
-								rowNum: 2,
-								align: configAlign
-							};
-							this.config1 = {
-									header: ['工单顺序-待生产', '车型', '计划', '完成', '达成率'],
-									data: standbyInfoCurrent,
-									index: false,
-									columnWidth: configColumnWidth,
-									waitTime: configWaitTime,
-									rowNum: 2,
-									align: configAlign
-								},
-								console.log("轮播表的config已更新");
-						}
-					}
-				}).catch(() => {
-					this.$message({
-						type: 'warning',
-						message: '服务器连接失败'
-					});
-				});
-
-				// 产量详情接口
-				// that.GetOutputAndOrder([this.WorkShopId], [this.ProductionLineId]).then(res => {
-				// 	let resData = res.Data;
-				// 	if (resData != null) {
-				// 		if (resData.length > 0) {
-				// 			let localYearFullData = resData.filter(t => t.Year == new Date()
-				// 				.getFullYear());
-				// 			// console.log(localYearFullData);
-				// 			if (localYearFullData.length > 0) {
-				// 				this.MonthOutput = localYearFullData[0].Output[
-				// 					`${new Date().getMonth() + 1}`];
-				// 				// console.log("当前时间"+new Date());
-				// 				// console.log(new Date().getMonth()+"月"+localYearFullData[0].Output[`${new Date().getMonth() +1}`]+"辆");
-				// 				// console.log(localYearFullData[0].Output[`${new Date().getMonth()}`]);
-				// 				//getMonth方法获取的是对应的索引值
-				// 				this.MonthOrder = localYearFullData[0].OrderQuantity[
-				// 					`${new Date().getMonth() + 1}`];
-				// 			}
-				// 			let outputTotal = 0;
-				// 			let orderTotal = 0;
-				// 			resData.forEach(element => {
-				// 				for (let i in element.Output) {
-				// 					outputTotal = outputTotal + element.Output[i];
-				// 				}
-				// 				for (let i in element.OrderQuantity) {
-				// 					orderTotal = orderTotal + element.OrderQuantity[i];
-				// 				}
-				// 			});
-				// 			this.TotalOutput = outputTotal;
-				// 			this.TotalOrder = orderTotal;
-				// 		}
-				// 	}
-				// })
-
-				//产线数据接口
-				that.GetLineOutput().then(res => {
-					let resData = res.Data;
-					// console.log(res.Data.length);
-					if (resData.length > 0) {
-						this.dayOutput = resData[0].日产量;
-						this.MonthOutput = resData[0].月产量;
-						this.TotalOutput = resData[0].总产量;
-						// console.log("日产量+",resData[0].日产量);
-					}
-				});
-
-				that.GetLineExceptionData().then(res => {
-					let resData = res.Data;
-					if (resData.length > 0) {
-						this.alarmCount = resData[0].次数;
-						//this.alarmTime = this.formateTime(resData[0].时长);
-					}
-				});
-				
-				
-				that.GetLineExceptionTime().then(res => {
-					let resData = res.Data;
-					this.alarmTime = resData;
-					// if (resData.length > 0) {
-					// 	this.alarmTime = resData;
-					// 	//this.alarmTime = this.formateTime(resData[0].时长);
-					// }
-				});
-				
-
-				//报警接口
-				that.GerAlarms(this.PlcName).then(res => {
-					let resData = res.Data;
-					if (resData != null) {
-						if (resData.length > 0) {
-							var stateArrTemp = [];
-							// resData.filter()
-							resData.forEach(element => {
-								// console.log(element.Desc);
-								if (element.Desc != "停止计时" &&
-									element.Desc != "缺料计时" &&
-									element.Desc != "求助计时") {
-									//Desc的格式
-									let resDataDesc = element.Desc.split("#-");
-									stateArrTemp.push({
-										state: resDataDesc[1],
-										stationNumber: resDataDesc[0]
-									});
-									
-								
-								}
-								
-
-							});
-							var stateMergeArr = stateArrTemp.reduce((total, cur) => {
-								if (total) {
-									let hasValue = total.findIndex(current => {
-										return current.state === cur.state
-									})
-									// total 中不包含这一项,则push到数组
-									hasValue === -1 && total.push({
-										state: cur.state,
-										stationNumber: [cur.stationNumber]
-									})
-									// total 中包含这项,则push到对应工位上
-									hasValue !== -1 && total[hasValue].stationNumber.push(cur
-										.stationNumber)
-									//return 是给到下一次的total的初始值
-									return total
-								}
-							}, [])
-							this.stateArr = stateMergeArr;
-							if (this.announcementDialogVisible == true || stateArrTemp.length == 0) {
-								this.alarmDialogVisible = false;
-							} else if(stateArrTemp.length > 0){
-								this.alarmDialogVisible = true;
-							}
-							// console.log(this.alarmDialogVisible)
-						} 
-						else{
-							this.alarmDialogVisible = false;
-						}
-					}
-
-				});
-			}, 1000)
-			//直接在需要定时器的方法或者生命周期函数中声明并销毁
-
-			var noticeApiInterval = setInterval(() => {
-				//公告接口
-				that.GetNoticeInfo().then(async (res) => {
-					let resData = res.Data;
-					//使用JSON.stringify判断两个数组是否相等
-					if (JSON.stringify(notice) != JSON.stringify(resData)) {
-						if (noticeInterval != null) {
-							clearInterval(noticeInterval);
-							//若下面销毁定时器,则下方使用showNotice方法时也要同时销毁,否则会出现多个定时器
-							// noticeInterval = null;
-						}
-						notice = resData;
-						if (resData.length > 0) {
-							this.announcementTitle = notice[0].NoticeTitle;
-							this.announcementContent = notice[0].NoticeContent;
-							this.announcementTitleSize = notice[0].TitleFontSize + "px";
-							this.announcementContentSize = notice[0].ContentFontSize + "px";
-							var index = 1;
-							var lenth = notice.length;
-							//使用setInterval调用一次停止一次
-							showNotice();
-							var thisData = this;
-
-							function showNotice() {
-								noticeInterval = setInterval(() => {
-									thisData.announcementTitle = notice[index % lenth]
-										.NoticeTitle;
-									thisData.announcementContent = notice[index % lenth]
-										.NoticeContent;
-									thisData.announcementTitleSize = notice[index % lenth]
-										.TitleFontSize + "px";
-									thisData.announcementContentSize = notice[index % lenth]
-										.ContentFontSize + "px";
-									index++;
-									//clearInterval只会停止定时器,不会销毁对象
-									clearInterval(noticeInterval);
-									//若上面判断两个数组是否相等时执行销毁定时器,则此处也要同时销毁,否则会出现多个定时器
-									// noticeInterval = null;
-									showNotice();
-									// console.log((index - 1) % lenth);
-								}, notice[(index - 1) % lenth].DurationSec * 1000)
-							}
-							this.announcementDialogVisible = true;
-						} else {
-							this.announcementDialogVisible = false;
-						}
-						console.log("公告变化");
-					}
-				})
-
-			}, 5000)
-
-			this.$once('hook:beforeDestroy', () => {
-				clearInterval(apiInterval);
-				apiInterval = null;
-				clearInterval(noticeApiInterval);
-				noticeApiInterval = null
-			})
-			this.cancelLoading();
-			// this.onclick();
-			// //获取当前月份的英文格式
-			// console.log("month + " + new Date().toDateString().split(" ")[1]);
-			// //获取当前年份
-			// console.log("year = " + new Date().getFullYear());
-		},
-		beforeDestroy() {
-
-		},
-		showNotice() {
-
-		},
-		methods: {
-			onclick() {
-				document.documentElement.webkitRequestFullScreen();
-				// screenfull.toggle();
-			},
-			cancelLoading() {
-				setTimeout(() => {
-					this.loading = false
-				}, 500)
-			},
-			formateTime(time) {
-				const h = parseInt(time / 3600)
-				const minute = parseInt(time / 60 % 60)
-				const second = Math.ceil(time % 60)
-
-				const hours = h < 10 ? '0' + h : h
-				const formatSecond = second > 59 ? 59 : second
-				// return `${hours > 0 ? `${hours}:` : ''}${minute < 10 ? '0' + minute : minute}:${formatSecond < 10 ? '0' + formatSecond : formatSecond}`
-				return `${hours}:${minute < 10 ? '0' + minute : minute}:${formatSecond < 10 ? '0' + formatSecond : formatSecond}`
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import '../assets/scss/index.scss';
-
-	.dv-scroll-board {
-		.header-item {
-			font-size: 2.7rem;
-			font-weight: bold;
-			height: 4.5rem !important;
-			padding: 0;
-			line-height: 4.5rem !important;
-		}
-
-		.rows {
-			height: 9rem !important;
-
-			.row-item {
-				font-size: 3rem;
-				height: 4.5rem !important;
-				line-height: 4.5rem !important;
-			}
-		}
-	}
-
-	.orderWorking .dv-scroll-board {
-		// .header-item {
-		// 	font-size: 2.5rem;
-		// 	font-weight: bold;
-		// 	height: 4rem !important;
-		// 	padding: 0;
-		// 	line-height: 4rem !important;
-		// }
-
-		.rows {
-			height: 11rem !important;
-
-			.row-item {
-				font-size: 4.5rem;
-				height: 5.5rem !important;
-				line-height: 5.5rem !important;
-			}
-		}
-	}
-
-
-	.buttomBox {
-		display: flex;
-		justify-content: center;
-		height: 6rem;
-		margin-top: 10px;
-	}
-
-	.buttomBox .dv-border-box-8 {
-		margin-left: 10px;
-		margin-right: 10px;
-	}
-
-	.announcementDialog .el-dialog__body {
-		padding: 0px;
-	}
-
-	.buttomBox-items {
-		display: flex;
-		flex-direction: column;
-		justify-content: center;
-		position: relative;
-		align-items: center;
-		height: 100%;
-	}
-
-	.buttomBox-items-title {
-		display: flex;
-		text-align: center;
-		justify-content: center;
-		height: 50%;
-	}
-
-	.buttomBox-items-title img {
-		width: 1rem;
-		height: 1rem;
-	}
-
-	.buttomBox-items-title-text {
-		font-size: 1.8rem;
-		color: white;
-	}
-
-
-	.buttomBox-items-data {
-		font-size: 1.8rem;
-		color: aqua;
-
-	}
-
-	.el-dialog {
-		/* background: rgba(0, 0, 0, .2) !important; */
-		background: rgba(0, 0, 0, 0.2) !important;
-		// border: rgb(255, 112, 46) 5px solid;
-		backdrop-filter: blur(3px);
-		margin-top: 0 !important;
-	}
-
-	.el-dialog__title {
-		color: rgb(255, 255, 255);
-		font-weight: 900;
-		font-size: 3rem;
-		color: red;
-		line-height: 4.5rem;
-	}
-
-	.el-dialog__header {
-		height: 0rem;
-		color: #fff;
-		background: rgba(0, 0, 0, 0.5);
-		text-align: center;
-		// box-shadow: 0 0 1.5vw rgb(97, 255, 255) inset;
-		// background: linear-gradient(#74ffef, #74ffef) left top,
-		//   linear-gradient(#3deeda, #3deeda) left top,
-		//   linear-gradient(#3deeda, #3deeda) right top,
-		//   linear-gradient(#3deeda, #3deeda) right top;
-		/* linear-gradient(#3deeda, #3deeda) left bottom,
-	    linear-gradient(#3deeda, #3deeda) left bottom,
-	    linear-gradient(#3deeda, #3deeda) right bottom,
-	    linear-gradient(#3deeda, #3deeda) right bottom; */
-		background-repeat: no-repeat;
-		background-size: 2px 20px, 20px 2px;
-		padding: 0 !important;
-	}
-
-	.el-dialog__body {
-		padding: 20px;
-		color: #fff;
-		background: rgba(0, 0, 0, 0.5);
-		text-align: left;
-		// box-shadow: 0 0 1.5vw rgb(57, 255, 255) inset;
-		// background: 
-		// linear-gradient(#3deeda, #3deeda) left bottom,
-		// linear-gradient(#3deeda, #3deeda) left bottom,
-		// linear-gradient(#3deeda, #3deeda) right bottom,
-		// linear-gradient(#3deeda, #3deeda) right bottom;
-		background-repeat: no-repeat;
-		background-size: 2px 20px, 20px 2px;
-	}
-
-	.el-table th.el-table__cell>.cell {
-		height: 3rem;
-		line-height: 3rem;
-		font-size: 2rem;
-		background-color: #00BAFF;
-		color: white;
-	}
-
-	.el-table th.el-table__cell {
-		padding: 0;
-	}
-
-	.el-table .stop-row {
-		color: red;
-		background-color: #003B51;
-
-	}
-
-	.el-table .needHelp-row {
-		color: #ffe446;
-		background-color: #003B51;
-	}
-
-	.el-table .less-row {
-		color: lime;
-		background-color: #0A2732;
-	}
-
-	//表格内容行设置
-	.el-table__cell .cell {
-		padding: 0;
-		line-height: 7rem;
-		//background: lightblue;		
-		font-size: 5rem;
-	}
-
-	.el-table .el-table__cell {
-		padding: 0;
-		// height: 6rem;
-	}
-
-	.el-table__row {
-
-		padding: 0;
-		color: white;
-	}
-</style>
+<!--<template>-->
+<!--	<div id="index" ref="appRef">-->
+<!--		<div class="bg">-->
+<!--			<dv-loading v-if="loading">Loading...</dv-loading>-->
+<!--			<div v-else class="host-body">-->
+<!--				<headTitle :lineName="ProductionLineName"></headTitle>-->
+<!--				<localTime></localTime>-->
+
+<!--				<div class="body-box" style="padding-top: 10px;">-->
+<!--					&lt;!&ndash; 第三行数据 &ndash;&gt;-->
+<!--					<div class="content-box">-->
+<!--					</div>-->
+
+<!--					&lt;!&ndash; 第四行数据 &ndash;&gt;-->
+<!--					<div class="bottom-box">-->
+<!--						<dv-border-box-12>-->
+<!--							&lt;!&ndash; <bottomRight /> &ndash;&gt;-->
+<!--							<div class="orderWorking" style="width:100%;height:430px;padding: 20px;">-->
+<!--								<dv-scroll-board :config="config" />-->
+<!--							</div>-->
+<!--							<div style="width:100%;height:370px;padding: 20px;">-->
+<!--								<dv-scroll-board :config="config1" />-->
+<!--							</div>-->
+<!--						</dv-border-box-12>-->
+<!--					</div>-->
+<!--					&lt;!&ndash;底部四个数据&ndash;&gt;-->
+<!--					<div class="buttomBox">-->
+<!--						<dv-border-box-8>-->
+<!--							<div class="buttomBox-items">-->
+<!--								<div class="buttomBox-items-title">-->
+<!--									<img src="../../static/img/Title_Icon.png" />-->
+<!--									<span class="buttomBox-items-title-text">当日产量/辆</span>-->
+<!--								</div>-->
+<!--								<span class="buttomBox-items-data">{{dayOutput}}</span>-->
+<!--							</div>-->
+<!--						</dv-border-box-8>-->
+<!--						<dv-border-box-8>-->
+<!--							<div class="buttomBox-items">-->
+<!--								<div class="buttomBox-items-title">-->
+<!--									<img src="../../static/img/Title_Icon.png" />-->
+<!--									<span class="buttomBox-items-title-text">当月产量/辆</span>-->
+<!--								</div>-->
+<!--								<span class="buttomBox-items-data">{{MonthOutput}}</span>-->
+<!--							</div>-->
+<!--						</dv-border-box-8>-->
+<!--						<dv-border-box-8>-->
+<!--							<div class="buttomBox-items">-->
+<!--								<div class="buttomBox-items-title">-->
+<!--									<img src="../../static/img/Title_Icon.png" />-->
+<!--									<span class="buttomBox-items-title-text">累计产量/辆</span>-->
+<!--								</div>-->
+<!--								<span class="buttomBox-items-data">{{TotalOutput}}</span>-->
+<!--							</div>-->
+<!--						</dv-border-box-8>-->
+<!--						<dv-border-box-8>-->
+<!--							<div class="buttomBox-items">-->
+<!--								<div class="buttomBox-items-title">-->
+<!--									<img src="../../static/img/Title_Icon.png" />-->
+<!--									<span class="buttomBox-items-title-text">当天异常次数</span>-->
+<!--								</div>-->
+<!--								<span class="buttomBox-items-data">{{alarmCount}}</span>-->
+<!--							</div>-->
+
+<!--						</dv-border-box-8>-->
+<!--						<dv-border-box-8>-->
+<!--							<div class="buttomBox-items">-->
+<!--								<div class="buttomBox-items-title">-->
+<!--									<img src="../../static/img/Title_Icon.png" />-->
+<!--									<span class="buttomBox-items-title-text">当天异常时间</span>-->
+<!--								</div>-->
+<!--								<span class="buttomBox-items-data">{{alarmTime}}</span>-->
+<!--							</div>-->
+<!--						</dv-border-box-8>-->
+<!--					</div>-->
+<!--					&lt;!&ndash; <div>{{test}}</div> &ndash;&gt;-->
+
+<!--				</div>-->
+<!--			</div>-->
+<!--			&lt;!&ndash; <div>{{test}}</div> &ndash;&gt;-->
+
+<!--			&lt;!&ndash; <el-button type="text" id="fullScreenBtn" @click="onclick"></el-button> &ndash;&gt;-->
+<!--			<el-dialog :visible.sync="alarmDialogVisible" width="100%" height="80%"-->
+<!--				style="margin-bottom: 10px;overflow-y: auto;" :show-close="false" :modal-append-to-body="false">-->
+<!--				&lt;!&ndash; <dv-border-box-7 :color="['red', 'orange']" padding: 0.5rem,background: rgba(255, 2, 6, 0.2),> &ndash;&gt;-->
+<!--				<div style="width:100%;height:1050px;display: flex; flex-direction: column;">-->
+<!--					<div :style="[{height:(stateArr.length == 1 ? '100%' : stateArr.length == 2 ? '50%' : '33.3%'),-->
+<!--						margin: '0.3rem',-->
+<!--						background: (stateArr[index].state) == '停止' ? 'rgba(255, 2, 6, 0.3)' : (stateArr[index].state) == '求助' ? 'rgba(255, 255, 0, 0.3)' : 'rgba(0, 255, 0, 0.3)'}]"-->
+<!--						v-for="(item,index) in stateArr" :key="index">-->
+<!--						&lt;!&ndash; <el-table :data="tableData" border="true" style="width: 100%;background-color: transparent;"-->
+<!--								:row-class-name="tableRowClassName">-->
+<!--								<el-table-column prop="state" label="报警类型" width="300">-->
+<!--								</el-table-column>-->
+<!--								<el-table-column prop="stateNum" label="工位号" width="1100">-->
+<!--								</el-table-column>-->
+<!--								<el-table-column prop="time" label="触发时间" width="500">-->
+<!--								</el-table-column>-->
+<!--							</el-table> &ndash;&gt;-->
+<!--						<conpenttest :state="stateArr[index].state" :stationNumber="stateArr[index].stationNumber">-->
+<!--						</conpenttest>-->
+<!--					</div>-->
+<!--				</div>-->
+<!--				&lt;!&ndash; </dv-border-box-7> &ndash;&gt;-->
+<!--			</el-dialog>-->
+<!--			&lt;!&ndash; <el-dialog>-->
+<!--				<div style="width: 100%;height: 100%;background-image: url("../../static/img/announcementBackground.png");">-->
+<!--					-->
+<!--				</div>-->
+<!--			</el-dialog> &ndash;&gt;-->
+<!--			<el-dialog :visible.sync="announcementDialogVisible" width="100%" height="100%"-->
+<!--				style="margin-bottom: 10px;overflow-y: auto;" :show-close="false" class="announcementDialog"-->
+<!--				:modal-append-to-body="false">-->
+<!--				<div style="width: 100%;height: 1080px;">-->
+<!--					<announcement :title="announcementTitle" :content="announcementContent"-->
+<!--						:titleFontSize="announcementTitleSize" :contentFontSize="announcementContentSize">-->
+<!--					</announcement>-->
+<!--				</div>-->
+
+<!--			</el-dialog>-->
+<!--		</div>-->
+<!--	</div>-->
+<!--</template>-->
+
+<!--<script>-->
+<!--	import drawMixin from "../utils/drawMixin";-->
+<!--	import headTitle from "./head.vue";-->
+<!--	import localTime from "./localTime.vue";-->
+<!--	import conpenttest from "./AlarmModel.vue";-->
+<!--	import announcement from './announcementModel.vue'-->
+
+<!--	// import Vue from 'vue'-->
+<!--	var that = require("../api/product");-->
+<!--	var notice = [];-->
+<!--	var configAlign = ['center', 'center', 'center', 'center', 'center'];-->
+<!--	var configColumnWidth = [500, 570, 245, 245, 240]-->
+<!--	var configWaitTime = 5000;-->
+
+<!--	export default {-->
+<!--		mixins: [drawMixin],-->
+<!--		data() {-->
+<!--			return {-->
+<!--				dayOutput: 0,-->
+<!--				MonthOutput: 0,-->
+<!--				TotalOutput: 0,-->
+<!--				alarmCount: 0,-->
+<!--				alarmTime: '00:00:00',-->
+<!--				stateArr: [],-->
+<!--				height: 500,-->
+<!--				tableData: [],-->
+<!--				announcementTitle: '',-->
+<!--				announcementContent: '',-->
+<!--				announcementTitleSize: '',-->
+<!--				announcementContentSize: '',-->
+<!--				alarmDialogVisible: false,-->
+<!--				announcementDialogVisible: false,-->
+<!--				ProductionLineId: '',-->
+<!--				WorkShopId: '',-->
+<!--				ProductionLineName: '生产看板',-->
+<!--				title: '测试',-->
+<!--				loading: true,-->
+<!--				decorationColor: ['#568aea', '#000000'],-->
+<!--				config: {-->
+<!--					header: ['工单顺序-生产中', '车型', '计划', '完成', '达成率'],-->
+<!--					data: [],-->
+<!--					index: false,-->
+<!--					columnWidth: configColumnWidth,-->
+<!--					waitTime: configWaitTime,-->
+<!--					rowNum: 2,-->
+<!--					align: configAlign-->
+<!--				},-->
+<!--				config1: {-->
+<!--					header: ['工单顺序-待生产', '车型', '计划', '完成', '达成率'],-->
+<!--					data: [],-->
+<!--					index: false,-->
+<!--					columnWidth: configColumnWidth,-->
+<!--					waitTime: configWaitTime,-->
+<!--					rowNum: 2,-->
+<!--					align: configAlign-->
+<!--				},-->
+<!--			}-->
+<!--		},-->
+<!--		components: {-->
+<!--			headTitle,-->
+<!--			localTime,-->
+<!--			conpenttest,-->
+<!--			announcement-->
+<!--			// el-dialog,-->
+<!--			// el-table,-->
+<!--			// el-table-column-->
+<!--		},-->
+<!--		mounted() {-->
+<!--			// document.getElementById("fullScreenBtn").click();-->
+<!--			// this.test = this.$BaseUrl.BaseUrl;-->
+<!--			// console.log(this.$BaseUrl);-->
+<!--			console.log("process.env = " + process.env.NODE_ENV);-->
+<!--			console.log("process.env =", process.env);-->
+<!--			var isGetInfo = false;-->
+<!--			//获取产线信息-->
+<!--			that.GetProductionLineInfo().then(res => {-->
+<!--				var resData = res.Data-->
+<!--				isGetInfo = true;-->
+<!--				this.ProductionLineId = resData.ProductionLineId;-->
+<!--				this.WorkShopId = resData.WorkShopId;-->
+<!--				this.ProductionLineName = resData.ProductionLineName + "生产看板";-->
+<!--				this.PlcName = resData.PlcName;-->
+<!--				// console.log(res);-->
+<!--				console.log("车间号=" + this.WorkShopId + ",产线号=" + this.ProductionLineId + ",产线名称=" + this-->
+<!--					.ProductionLineName + ",PLC名称 =" + this.PlcName);-->
+<!--			})-->
+<!--			//定义公告循环显示定时器-->
+<!--			var noticeInterval;-->
+
+<!--			var apiInterval = setInterval(() => {-->
+<!--				if (isGetInfo == false) {-->
+<!--					that.GetProductionLineInfo().then(res => {-->
+<!--						var resData = res.Data-->
+<!--						this.ProductionLineId = resData.ProductionLineId;-->
+<!--						this.WorkShopId = resData.WorkShopId;-->
+<!--						this.ProductionLineName = resData.ProductionLineName + "生产看板";-->
+<!--						// console.log(res);-->
+<!--						console.log("车间号=" + this.WorkShopId + ",产线号=" + this.ProductionLineId + ",产线名称=" +-->
+<!--							this-->
+<!--							.ProductionLineName);-->
+
+<!--					})-->
+<!--				}-->
+
+<!--				//订单详情接口-->
+<!--				that.GetTaskInfo([this.WorkShopId], [this.ProductionLineId]).then((num) => {-->
+<!--					//console.log(num.Data)-->
+<!--					let numData = num.Data;-->
+<!--					if (numData != null) {-->
+<!--						// var orderInfoCurrent = [];-->
+<!--						var workingInfoCurrent = [];-->
+<!--						var standbyInfoCurrent = [];-->
+<!--						//OrderState等于生产中-->
+<!--						num.Data.forEach(element => {-->
+<!--							let completionRate = element.CompletionRate * 100 + "%";-->
+
+<!--							let arr = [element.OrderSequence, element.MotorcycleTypeName,-->
+<!--								element.ScheduledProduction, element.CurrentProduction,-->
+<!--								completionRate-->
+<!--							];-->
+<!--							if (element.OrderState == "生产中") {-->
+<!--								workingInfoCurrent.push(arr)-->
+<!--							} else {-->
+<!--								standbyInfoCurrent.push(arr)-->
+<!--							}-->
+<!--							// orderInfoCurrent.push(arr);-->
+<!--						})-->
+<!--						if (JSON.stringify(workingInfoCurrent) != JSON.stringify(this.config.data) ||-->
+<!--							JSON.stringify(standbyInfoCurrent) != JSON.stringify(this.config1.data)) {-->
+
+<!--							this.config = {-->
+<!--								header: ['工单顺序-生产中', '车型', '计划', '完成', '达成率'],-->
+<!--								data: workingInfoCurrent,-->
+<!--								index: false,-->
+<!--								columnWidth: configColumnWidth,-->
+<!--								waitTime: configWaitTime,-->
+<!--								rowNum: 2,-->
+<!--								align: configAlign-->
+<!--							};-->
+<!--							this.config1 = {-->
+<!--									header: ['工单顺序-待生产', '车型', '计划', '完成', '达成率'],-->
+<!--									data: standbyInfoCurrent,-->
+<!--									index: false,-->
+<!--									columnWidth: configColumnWidth,-->
+<!--									waitTime: configWaitTime,-->
+<!--									rowNum: 2,-->
+<!--									align: configAlign-->
+<!--								},-->
+<!--								console.log("轮播表的config已更新");-->
+<!--						}-->
+<!--					}-->
+<!--				}).catch(() => {-->
+<!--					this.$message({-->
+<!--						type: 'warning',-->
+<!--						message: '服务器连接失败'-->
+<!--					});-->
+<!--				});-->
+
+<!--				// 产量详情接口-->
+<!--				// that.GetOutputAndOrder([this.WorkShopId], [this.ProductionLineId]).then(res => {-->
+<!--				// 	let resData = res.Data;-->
+<!--				// 	if (resData != null) {-->
+<!--				// 		if (resData.length > 0) {-->
+<!--				// 			let localYearFullData = resData.filter(t => t.Year == new Date()-->
+<!--				// 				.getFullYear());-->
+<!--				// 			// console.log(localYearFullData);-->
+<!--				// 			if (localYearFullData.length > 0) {-->
+<!--				// 				this.MonthOutput = localYearFullData[0].Output[-->
+<!--				// 					`${new Date().getMonth() + 1}`];-->
+<!--				// 				// console.log("当前时间"+new Date());-->
+<!--				// 				// console.log(new Date().getMonth()+"月"+localYearFullData[0].Output[`${new Date().getMonth() +1}`]+"辆");-->
+<!--				// 				// console.log(localYearFullData[0].Output[`${new Date().getMonth()}`]);-->
+<!--				// 				//getMonth方法获取的是对应的索引值-->
+<!--				// 				this.MonthOrder = localYearFullData[0].OrderQuantity[-->
+<!--				// 					`${new Date().getMonth() + 1}`];-->
+<!--				// 			}-->
+<!--				// 			let outputTotal = 0;-->
+<!--				// 			let orderTotal = 0;-->
+<!--				// 			resData.forEach(element => {-->
+<!--				// 				for (let i in element.Output) {-->
+<!--				// 					outputTotal = outputTotal + element.Output[i];-->
+<!--				// 				}-->
+<!--				// 				for (let i in element.OrderQuantity) {-->
+<!--				// 					orderTotal = orderTotal + element.OrderQuantity[i];-->
+<!--				// 				}-->
+<!--				// 			});-->
+<!--				// 			this.TotalOutput = outputTotal;-->
+<!--				// 			this.TotalOrder = orderTotal;-->
+<!--				// 		}-->
+<!--				// 	}-->
+<!--				// })-->
+
+<!--				//产线数据接口-->
+<!--				that.GetLineOutput().then(res => {-->
+<!--					let resData = res.Data;-->
+<!--					// console.log(res.Data.length);-->
+<!--					if (resData.length > 0) {-->
+<!--						this.dayOutput = resData[0].日产量;-->
+<!--						this.MonthOutput = resData[0].月产量;-->
+<!--						this.TotalOutput = resData[0].总产量;-->
+<!--						// console.log("日产量+",resData[0].日产量);-->
+<!--					}-->
+<!--				});-->
+
+<!--				that.GetLineExceptionData().then(res => {-->
+<!--					let resData = res.Data;-->
+<!--					if (resData.length > 0) {-->
+<!--						this.alarmCount = resData[0].次数;-->
+<!--						//this.alarmTime = this.formateTime(resData[0].时长);-->
+<!--					}-->
+<!--				});-->
+<!--				-->
+<!--				-->
+<!--				that.GetLineExceptionTime().then(res => {-->
+<!--					let resData = res.Data;-->
+<!--					this.alarmTime = resData;-->
+<!--					// if (resData.length > 0) {-->
+<!--					// 	this.alarmTime = resData;-->
+<!--					// 	//this.alarmTime = this.formateTime(resData[0].时长);-->
+<!--					// }-->
+<!--				});-->
+<!--				-->
+
+<!--				//报警接口-->
+<!--				that.GerAlarms(this.PlcName).then(res => {-->
+<!--					let resData = res.Data;-->
+<!--					if (resData != null) {-->
+<!--						if (resData.length > 0) {-->
+<!--							var stateArrTemp = [];-->
+<!--							// resData.filter()-->
+<!--							resData.forEach(element => {-->
+<!--								// console.log(element.Desc);-->
+<!--								if (element.Desc != "停止计时" &&-->
+<!--									element.Desc != "缺料计时" &&-->
+<!--									element.Desc != "求助计时") {-->
+<!--									//Desc的格式-->
+<!--									let resDataDesc = element.Desc.split("#-");-->
+<!--									stateArrTemp.push({-->
+<!--										state: resDataDesc[1],-->
+<!--										stationNumber: resDataDesc[0]-->
+<!--									});-->
+<!--									-->
+<!--								-->
+<!--								}-->
+<!--								-->
+
+<!--							});-->
+<!--							var stateMergeArr = stateArrTemp.reduce((total, cur) => {-->
+<!--								if (total) {-->
+<!--									let hasValue = total.findIndex(current => {-->
+<!--										return current.state === cur.state-->
+<!--									})-->
+<!--									// total 中不包含这一项,则push到数组-->
+<!--									hasValue === -1 && total.push({-->
+<!--										state: cur.state,-->
+<!--										stationNumber: [cur.stationNumber]-->
+<!--									})-->
+<!--									// total 中包含这项,则push到对应工位上-->
+<!--									hasValue !== -1 && total[hasValue].stationNumber.push(cur-->
+<!--										.stationNumber)-->
+<!--									//return 是给到下一次的total的初始值-->
+<!--									return total-->
+<!--								}-->
+<!--							}, [])-->
+<!--							this.stateArr = stateMergeArr;-->
+<!--							if (this.announcementDialogVisible == true || stateArrTemp.length == 0) {-->
+<!--								this.alarmDialogVisible = false;-->
+<!--							} else if(stateArrTemp.length > 0){-->
+<!--								this.alarmDialogVisible = true;-->
+<!--							}-->
+<!--							// console.log(this.alarmDialogVisible)-->
+<!--						} -->
+<!--						else{-->
+<!--							this.alarmDialogVisible = false;-->
+<!--						}-->
+<!--					}-->
+
+<!--				});-->
+<!--			}, 1000)-->
+<!--			//直接在需要定时器的方法或者生命周期函数中声明并销毁-->
+
+<!--			var noticeApiInterval = setInterval(() => {-->
+<!--				//公告接口-->
+<!--				that.GetNoticeInfo().then(async (res) => {-->
+<!--					let resData = res.Data;-->
+<!--					//使用JSON.stringify判断两个数组是否相等-->
+<!--					if (JSON.stringify(notice) != JSON.stringify(resData)) {-->
+<!--						if (noticeInterval != null) {-->
+<!--							clearInterval(noticeInterval);-->
+<!--							//若下面销毁定时器,则下方使用showNotice方法时也要同时销毁,否则会出现多个定时器-->
+<!--							// noticeInterval = null;-->
+<!--						}-->
+<!--						notice = resData;-->
+<!--						if (resData.length > 0) {-->
+<!--							this.announcementTitle = notice[0].NoticeTitle;-->
+<!--							this.announcementContent = notice[0].NoticeContent;-->
+<!--							this.announcementTitleSize = notice[0].TitleFontSize + "px";-->
+<!--							this.announcementContentSize = notice[0].ContentFontSize + "px";-->
+<!--							var index = 1;-->
+<!--							var lenth = notice.length;-->
+<!--							//使用setInterval调用一次停止一次-->
+<!--							showNotice();-->
+<!--							var thisData = this;-->
+
+<!--							function showNotice() {-->
+<!--								noticeInterval = setInterval(() => {-->
+<!--									thisData.announcementTitle = notice[index % lenth]-->
+<!--										.NoticeTitle;-->
+<!--									thisData.announcementContent = notice[index % lenth]-->
+<!--										.NoticeContent;-->
+<!--									thisData.announcementTitleSize = notice[index % lenth]-->
+<!--										.TitleFontSize + "px";-->
+<!--									thisData.announcementContentSize = notice[index % lenth]-->
+<!--										.ContentFontSize + "px";-->
+<!--									index++;-->
+<!--									//clearInterval只会停止定时器,不会销毁对象-->
+<!--									clearInterval(noticeInterval);-->
+<!--									//若上面判断两个数组是否相等时执行销毁定时器,则此处也要同时销毁,否则会出现多个定时器-->
+<!--									// noticeInterval = null;-->
+<!--									showNotice();-->
+<!--									// console.log((index - 1) % lenth);-->
+<!--								}, notice[(index - 1) % lenth].DurationSec * 1000)-->
+<!--							}-->
+<!--							this.announcementDialogVisible = true;-->
+<!--						} else {-->
+<!--							this.announcementDialogVisible = false;-->
+<!--						}-->
+<!--						console.log("公告变化");-->
+<!--					}-->
+<!--				})-->
+
+<!--			}, 5000)-->
+
+<!--			this.$once('hook:beforeDestroy', () => {-->
+<!--				clearInterval(apiInterval);-->
+<!--				apiInterval = null;-->
+<!--				clearInterval(noticeApiInterval);-->
+<!--				noticeApiInterval = null-->
+<!--			})-->
+<!--			this.cancelLoading();-->
+<!--			// this.onclick();-->
+<!--			// //获取当前月份的英文格式-->
+<!--			// console.log("month + " + new Date().toDateString().split(" ")[1]);-->
+<!--			// //获取当前年份-->
+<!--			// console.log("year = " + new Date().getFullYear());-->
+<!--		},-->
+<!--		beforeDestroy() {-->
+
+<!--		},-->
+<!--		showNotice() {-->
+
+<!--		},-->
+<!--		methods: {-->
+<!--			onclick() {-->
+<!--				document.documentElement.webkitRequestFullScreen();-->
+<!--				// screenfull.toggle();-->
+<!--			},-->
+<!--			cancelLoading() {-->
+<!--				setTimeout(() => {-->
+<!--					this.loading = false-->
+<!--				}, 500)-->
+<!--			},-->
+<!--			formateTime(time) {-->
+<!--				const h = parseInt(time / 3600)-->
+<!--				const minute = parseInt(time / 60 % 60)-->
+<!--				const second = Math.ceil(time % 60)-->
+
+<!--				const hours = h < 10 ? '0' + h : h-->
+<!--				const formatSecond = second > 59 ? 59 : second-->
+<!--				// return `${hours > 0 ? `${hours}:` : ''}${minute < 10 ? '0' + minute : minute}:${formatSecond < 10 ? '0' + formatSecond : formatSecond}`-->
+<!--				return `${hours}:${minute < 10 ? '0' + minute : minute}:${formatSecond < 10 ? '0' + formatSecond : formatSecond}`-->
+<!--			},-->
+<!--		}-->
+<!--	}-->
+<!--</script>-->
+
+<!--<style lang="scss">-->
+<!--	@import '../assets/scss/index.scss';-->
+
+<!--	.dv-scroll-board {-->
+<!--		.header-item {-->
+<!--			font-size: 2.7rem;-->
+<!--			font-weight: bold;-->
+<!--			height: 4.5rem !important;-->
+<!--			padding: 0;-->
+<!--			line-height: 4.5rem !important;-->
+<!--		}-->
+
+<!--		.rows {-->
+<!--			height: 9rem !important;-->
+
+<!--			.row-item {-->
+<!--				font-size: 3rem;-->
+<!--				height: 4.5rem !important;-->
+<!--				line-height: 4.5rem !important;-->
+<!--			}-->
+<!--		}-->
+<!--	}-->
+
+<!--	.orderWorking .dv-scroll-board {-->
+<!--		// .header-item {-->
+<!--		// 	font-size: 2.5rem;-->
+<!--		// 	font-weight: bold;-->
+<!--		// 	height: 4rem !important;-->
+<!--		// 	padding: 0;-->
+<!--		// 	line-height: 4rem !important;-->
+<!--		// }-->
+
+<!--		.rows {-->
+<!--			height: 11rem !important;-->
+
+<!--			.row-item {-->
+<!--				font-size: 4.5rem;-->
+<!--				height: 5.5rem !important;-->
+<!--				line-height: 5.5rem !important;-->
+<!--			}-->
+<!--		}-->
+<!--	}-->
+
+
+<!--	.buttomBox {-->
+<!--		display: flex;-->
+<!--		justify-content: center;-->
+<!--		height: 6rem;-->
+<!--		margin-top: 10px;-->
+<!--	}-->
+
+<!--	.buttomBox .dv-border-box-8 {-->
+<!--		margin-left: 10px;-->
+<!--		margin-right: 10px;-->
+<!--	}-->
+
+<!--	.announcementDialog .el-dialog__body {-->
+<!--		padding: 0px;-->
+<!--	}-->
+
+<!--	.buttomBox-items {-->
+<!--		display: flex;-->
+<!--		flex-direction: column;-->
+<!--		justify-content: center;-->
+<!--		position: relative;-->
+<!--		align-items: center;-->
+<!--		height: 100%;-->
+<!--	}-->
+
+<!--	.buttomBox-items-title {-->
+<!--		display: flex;-->
+<!--		text-align: center;-->
+<!--		justify-content: center;-->
+<!--		height: 50%;-->
+<!--	}-->
+
+<!--	.buttomBox-items-title img {-->
+<!--		width: 1rem;-->
+<!--		height: 1rem;-->
+<!--	}-->
+
+<!--	.buttomBox-items-title-text {-->
+<!--		font-size: 1.8rem;-->
+<!--		color: white;-->
+<!--	}-->
+
+
+<!--	.buttomBox-items-data {-->
+<!--		font-size: 1.8rem;-->
+<!--		color: aqua;-->
+
+<!--	}-->
+
+<!--	.el-dialog {-->
+<!--		/* background: rgba(0, 0, 0, .2) !important; */-->
+<!--		background: rgba(0, 0, 0, 0.2) !important;-->
+<!--		// border: rgb(255, 112, 46) 5px solid;-->
+<!--		backdrop-filter: blur(3px);-->
+<!--		margin-top: 0 !important;-->
+<!--	}-->
+
+<!--	.el-dialog__title {-->
+<!--		color: rgb(255, 255, 255);-->
+<!--		font-weight: 900;-->
+<!--		font-size: 3rem;-->
+<!--		color: red;-->
+<!--		line-height: 4.5rem;-->
+<!--	}-->
+
+<!--	.el-dialog__header {-->
+<!--		height: 0rem;-->
+<!--		color: #fff;-->
+<!--		background: rgba(0, 0, 0, 0.5);-->
+<!--		text-align: center;-->
+<!--		// box-shadow: 0 0 1.5vw rgb(97, 255, 255) inset;-->
+<!--		// background: linear-gradient(#74ffef, #74ffef) left top,-->
+<!--		//   linear-gradient(#3deeda, #3deeda) left top,-->
+<!--		//   linear-gradient(#3deeda, #3deeda) right top,-->
+<!--		//   linear-gradient(#3deeda, #3deeda) right top;-->
+<!--		/* linear-gradient(#3deeda, #3deeda) left bottom,-->
+<!--	    linear-gradient(#3deeda, #3deeda) left bottom,-->
+<!--	    linear-gradient(#3deeda, #3deeda) right bottom,-->
+<!--	    linear-gradient(#3deeda, #3deeda) right bottom; */-->
+<!--		background-repeat: no-repeat;-->
+<!--		background-size: 2px 20px, 20px 2px;-->
+<!--		padding: 0 !important;-->
+<!--	}-->
+
+<!--	.el-dialog__body {-->
+<!--		padding: 20px;-->
+<!--		color: #fff;-->
+<!--		background: rgba(0, 0, 0, 0.5);-->
+<!--		text-align: left;-->
+<!--		// box-shadow: 0 0 1.5vw rgb(57, 255, 255) inset;-->
+<!--		// background: -->
+<!--		// linear-gradient(#3deeda, #3deeda) left bottom,-->
+<!--		// linear-gradient(#3deeda, #3deeda) left bottom,-->
+<!--		// linear-gradient(#3deeda, #3deeda) right bottom,-->
+<!--		// linear-gradient(#3deeda, #3deeda) right bottom;-->
+<!--		background-repeat: no-repeat;-->
+<!--		background-size: 2px 20px, 20px 2px;-->
+<!--	}-->
+
+<!--	.el-table th.el-table__cell>.cell {-->
+<!--		height: 3rem;-->
+<!--		line-height: 3rem;-->
+<!--		font-size: 2rem;-->
+<!--		background-color: #00BAFF;-->
+<!--		color: white;-->
+<!--	}-->
+
+<!--	.el-table th.el-table__cell {-->
+<!--		padding: 0;-->
+<!--	}-->
+
+<!--	.el-table .stop-row {-->
+<!--		color: red;-->
+<!--		background-color: #003B51;-->
+
+<!--	}-->
+
+<!--	.el-table .needHelp-row {-->
+<!--		color: #ffe446;-->
+<!--		background-color: #003B51;-->
+<!--	}-->
+
+<!--	.el-table .less-row {-->
+<!--		color: lime;-->
+<!--		background-color: #0A2732;-->
+<!--	}-->
+
+<!--	//表格内容行设置-->
+<!--	.el-table__cell .cell {-->
+<!--		padding: 0;-->
+<!--		line-height: 7rem;-->
+<!--		//background: lightblue;		-->
+<!--		font-size: 5rem;-->
+<!--	}-->
+
+<!--	.el-table .el-table__cell {-->
+<!--		padding: 0;-->
+<!--		// height: 6rem;-->
+<!--	}-->
+
+<!--	.el-table__row {-->
+
+<!--		padding: 0;-->
+<!--		color: white;-->
+<!--	}-->
+<!--</style>-->

+ 5 - 0
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ.EicpApp/yarn.lock

@@ -3228,6 +3228,11 @@
   dependencies:
     "assert-plus" "^1.0.0"
 
+"dayjs@^1.11.13":
+  "integrity" "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
+  "resolved" "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz"
+  "version" "1.11.13"
+
 "de-indent@^1.0.2":
   "integrity" "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg=="
   "resolved" "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz"

BIN
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ/Content.zip


File diff suppressed because it is too large
+ 0 - 0
skoda-scada-daq3.0-master/skoda-scada-daq3.0-master/scada_-daq3.0-master/SCADA_DAQ/SCADA_DAQ.csproj


Some files were not shown because too many files changed in this diff