ソースを参照

Merge branch 'master' of http://152.136.206.27:3000/dongjh/guan_client

dongjh 1 年間 前
コミット
7f0ab54892

+ 24 - 20
package.json

@@ -10,42 +10,43 @@
     "lint": "vue-cli-service lint"
   },
   "dependencies": {
+    "@antv/data-set": "^0.11.4",
     "@jeecg/antd-online-mini": "3.4.3-beta2",
+    "@tinymce/tinymce-vue": "2.1.0",
+    "@toast-ui/editor": "^2.1.2",
     "ant-design-vue": "^1.7.2",
-    "@antv/data-set": "^0.11.4",
-    "viser-vue": "^2.4.8",
     "axios": "^0.18.0",
+    "china-area-data": "^5.0.1",
+    "clipboard": "^2.0.4",
+    "codemirror": "^5.46.0",
+    "cron-parser": "^2.10.0",
     "dayjs": "^1.8.0",
+    "dom-align": "1.12.0",
+    "echarts": "^5.4.3",
     "enquire.js": "^2.1.6",
     "js-cookie": "^2.2.0",
     "lodash.get": "^4.4.2",
     "lodash.pick": "^4.4.0",
     "md5": "^2.2.1",
     "nprogress": "^0.2.0",
+    "qiankun": "^2.5.1",
+    "tinymce": "5.4.1",
+    "viser-vue": "^2.4.8",
     "vue": "^2.6.10",
+    "vue-area-linkage": "^5.1.0",
     "vue-cropper": "^0.5.4",
     "vue-i18n": "^8.7.0",
     "vue-loader": "^15.7.0",
     "vue-ls": "^3.2.0",
-    "vue-router": "^3.0.1",
-    "vuex": "^3.1.0",
-    "vue-print-nb-jeecg": "^1.0.12",
-    "clipboard": "^2.0.4",
     "vue-photo-preview": "^1.1.3",
+    "vue-print-nb-jeecg": "^1.0.12",
+    "vue-router": "^3.0.1",
     "vue-splitpane": "^1.0.4",
     "vuedraggable": "^2.20.0",
-    "codemirror": "^5.46.0",
-    "@tinymce/tinymce-vue": "2.1.0",
-    "tinymce": "5.4.1",
-    "@toast-ui/editor": "^2.1.2",
-    "vue-area-linkage": "^5.1.0",
-    "china-area-data": "^5.0.1",
-    "dom-align": "1.12.0",
-    "xe-utils": "2.4.8",
+    "vuex": "^3.1.0",
     "vxe-table": "2.9.13",
     "vxe-table-plugin-antd": "1.8.10",
-    "cron-parser": "^2.10.0",
-    "qiankun": "^2.5.1",
+    "xe-utils": "2.4.8",
     "xss": "^1.0.13"
   },
   "devDependencies": {
@@ -55,13 +56,13 @@
     "@vue/cli-service": "^3.3.0",
     "@vue/eslint-config-standard": "^4.0.0",
     "babel-eslint": "7.2.3",
+    "compression-webpack-plugin": "^3.1.0",
     "eslint": "^5.16.0",
     "eslint-plugin-vue": "^5.1.0",
+    "html-webpack-plugin": "^4.2.0",
     "less": "^3.9.0",
     "less-loader": "^4.1.0",
-    "vue-template-compiler": "^2.6.10",
-    "html-webpack-plugin": "^4.2.0",
-    "compression-webpack-plugin": "^3.1.0"
+    "vue-template-compiler": "^2.6.10"
   },
   "eslintConfig": {
     "root": true,
@@ -99,7 +100,10 @@
       "vue/html-closing-bracket-newline": 0,
       "vue/no-parsing-error": 0,
       "no-tabs": 0,
-      "indent": ["off", 2],
+      "indent": [
+        "off",
+        2
+      ],
       "no-console": 0,
       "space-before-function-paren": 0
     }

+ 3 - 0
src/assets/less/uStyle.css

@@ -64,3 +64,6 @@
   border-image-repeat: stretch;
   position: relative;
 }
+.h100 {
+  height: 100%;
+}

+ 3 - 1
src/assets/less/uStyle.less

@@ -21,4 +21,6 @@
   border-image: url('../visualization/moduleBdBg.png') 4 4 fill;
   border-image-repeat: stretch;
   position: relative;
-}
+}
+
+.h100{height: 100%;}

+ 33 - 0
src/views/modules_guAn/visualization/components/common.js

@@ -0,0 +1,33 @@
+ // 取最大值
+const setMax = (num) => {
+  console.log(num)
+  // 1.判断是否小数:  //判断是否含有小数点:要检索的字符串值没有出现,则该方法返回 -1。
+  if (num.toString().indexOf(".") != -1) {//有小数点
+    num = Math.ceil(num);//向上取整 
+  }
+  // 2.向上取整数倍
+  if (num.toString().length < 2) {
+    // 一位数1
+    num = 10;
+  } else if (num.toString().length < 3) {
+    // 2位数
+    num = Math.ceil(num / 5) * 5;// 变成最近的5的倍数
+  } else {
+    // 位数--先判断是不是1000...的倍数
+    var t = '';
+    for (let i = 0; i < num.toString().length - 1; i++) {
+      t += '0';//'0000...'
+    }
+    if ((num % Number(1 + t)) != 0) {//不是100的倍数
+      num = (Number(num.toString().substr(0, 1)) + 1) * Number(1 + t);
+    }
+  }
+  return num
+}
+
+export { setMax }
+
+// export function xxx (){
+//   xxx
+//   return xxx
+// }

+ 1 - 0
src/views/modules_guAn/visualization/components/commonTitle.vue

@@ -36,6 +36,7 @@ export default {
     background: url(../../../../assets/visualization/moduleTitle.png) no-repeat left bottom;
     background-size: 100% 10px;
     .module-title{
+      font-size: 15px;
       color: #18B4C8;
       font-style: italic; /* 设置文字为斜体 */
       margin-left: 15px;

+ 63 - 16
src/views/modules_guAn/visualization/index.vue

@@ -16,17 +16,54 @@
         </div>
         <div class="left-center-con">
           <!-- 左中 -->
-          <data-curve></data-curve>
+          <real-time-curve></real-time-curve>
         </div>
         <div class="left-bottom-con">
           <!-- 左下 -->
-          <test-information></test-information>
+          <!-- <test-information></test-information> -->
+          <full-curve></full-curve>
         </div>
       </div>
       <!-- 中间部分 -->
       <div class="center-container">
         <div class="important">
-          我是3D区域
+          <!-- 我是3D区域 -->
+          <!-- <div class="u-flex" style="color: #fff;width: 100%; height: 100%;flex-direction: column;align-items: center;">
+            <div class="u-flex-cjac" style="width: 100%;">
+              <div style="height: 30px;">I机组</div>
+              <div class="u-flex-jaa" style="width: 100%;">
+                <div>
+                  <div class="f1">I1压机吸气:(111) bar</div>
+                  <div class="f1">I2压机吸气:(2) bar</div>
+                  <div class="f1">J1压机吸气:(11) bar</div>
+                  <div class="f1">J1压机排气:() bar</div>
+                </div>
+                <div>
+                  <div class="f1">I2压机排气:(4)bar</div>
+                  <div class="f1">J2压机吸气:(0) bar</div>
+                  <div class="f1">J2压机排气:() bar</div>
+                  <div class="f1">I1压机排气:(33333333333333333333)bar</div>
+                </div>
+              </div>
+            </div>
+            <div class="u-flex-cjac" style="width: 100%;">
+              <div style="height: 30px;">I机组</div>
+              <div class="u-flex-jaa" style="width: 100%;">
+                <div>
+                  <div class="f1">I1压机吸气:(1111111111) bar</div>
+                  <div class="f1">I2压机吸气:(2) bar</div>
+                  <div class="f1">J1压机吸气:(11) bar</div>
+                  <div class="f1">J1压机排气:() bar</div>
+                </div>
+                <div>
+                  <div class="f1">I2压机排气:(4)bar</div>
+                  <div class="f1">J2压机吸气:(0) bar</div>
+                  <div class="f1">J2压机排气:() bar</div>
+                  <div class="f1">I1压机排气:(33333333333)bar</div>
+                </div>
+              </div>
+            </div>
+          </div> -->
         </div>
         <div class="centen-bottom-con u-flex-jab">
           <!-- 中间 -->
@@ -58,8 +95,9 @@
 </template>
 
 <script>
-import DataCurve from './modules/DataCurve.vue'
 import YuzhiCurve from './modules/YuzhiCurve.vue'
+import RealTimeCurve from './modules/RealTimeCurve.vue'
+import FullCurve from './modules/FullCurve.vue'
 import RunningState from './modules/RunningState.vue'
 import EquipmentInfo from './modules/EquipmentInfo.vue'
 import ModeInfo from './modules/ModeInfo.vue'
@@ -71,7 +109,8 @@ export default {
     name: '',
     components: {
       YuzhiCurve,
-      DataCurve,
+      RealTimeCurve,
+      FullCurve,
       RunningState,
       EquipmentInfo,
       ModeInfo,
@@ -108,7 +147,7 @@ export default {
       left: 0;
       right: 0;
       // border: 1px solid #000;
-      height: 70px;
+      height: 72px;
       text-align: center;
       // line-height: 22px;
       .title-content{
@@ -117,18 +156,26 @@ export default {
         background: url(../../../assets/visualization/pageTitleBg.png) no-repeat center center;
         background-size: auto 100%;
         .text{
-          font-size: 24px;
-          font-weight: 1000;
-          letter-spacing: .2em;
-          text-shadow: 2px 2px 2px rgb(10, 37, 92);
+          font-size: 28px;
+          color: transparent;
+          // font-weight: bold;
+          // 描边 变相加粗
+          -webkit-text-stroke: 0.4px;
+          letter-spacing: .15em;
+          text-shadow: 1px 2px 2px rgb(10, 37, 92);
+          // text-shadow: 1px 2px 2px rgba(10, 68, 134, .67);
           position: relative;
-          font-family: serif;
+          font-family: "黑体";
+          // font-family: "宋体";
+          // font-family: serif;
+          // font-family: "楷体_GB2312		";
           &::before{
             // content: attr(text); // div中设置了text=>相当于又写了一个标题覆盖在原来设置了阴影的文字上面
             content: '高温高湿试验项目';
             position: absolute;
             z-index: 10;
             background-image: linear-gradient(to bottom, #ffffff, #8DD4F7);
+            // background-image: linear-gradient(to bottom, #ffffff, #7ed7fb);
             -webkit-background-clip: text;
             color: transparent;
             // 去除集成父级样式
@@ -143,7 +190,7 @@ export default {
       padding: 60px 20px 20px;
       box-sizing: border-box;
       .left-container{
-        flex: 1;
+        width: 25%;
         height: 100%;
         .left-top-con{
           height: 35%;
@@ -158,13 +205,13 @@ export default {
         }
       }
       .center-container{
-        flex: 1.8;
+        width: 50%;
         height: 100%;
         .important{
           width: 100%;
           height: 70%;
-          text-align: center;
-          line-height: 500px;
+          // text-align: center;
+          // line-height: 500px;
         }
         .centen-bottom-con{
           height: 30%;
@@ -181,7 +228,7 @@ export default {
         }
       }
       .right-container{
-        flex: 1;
+        width: 25%;
         .right-top-con{
           height: 35%;
           padding-bottom: 12px;

+ 0 - 37
src/views/modules_guAn/visualization/modules/DataCurve.vue

@@ -1,37 +0,0 @@
-<template>
-  <div class="data-curve-module">
-    <common-title title="数据查看和提取"></common-title>    
-    <div class="visualization-common-border">
-
-    </div>
-  </div>
-</template>
-
-<script>
-import commonTitle from '../components/commonTitle.vue'
-
-export default {
-  components: { commonTitle },
-  name: '',
-  data () {
-    return {
-    }
-  },
-  created () {
-  },
-  mounted () {
-  },
-  methods: {
-  }
-}
-</script>
-
-<style scoped>
-  @import '~@assets/less/uStyle.less';
-</style>
-<style lang="less">
-  .data-curve-module{
-    width: 100%;
-    height: 100%;
-  }
-</style>

+ 242 - 0
src/views/modules_guAn/visualization/modules/FullCurve.vue

@@ -0,0 +1,242 @@
+<template>
+  <div class="data-curve-module">
+    <!-- <common-title title="数据查看和提取"></common-title>     -->
+    <div style="height: 22.5px;"></div>
+    <div class="visualization-common-border">
+      <div ref="dataCurve" class="h100"></div>
+    </div>
+  </div>
+</template>
+
+<script>
+import * as echarts from "echarts"
+import commonTitle from '../components/commonTitle.vue'
+import { setMax } from "../components/common.js";
+
+export default {
+  components: { commonTitle },
+  name: '',
+  data () {
+    return {
+      uEcharts: null,
+      uOption: null,
+      legendData: [
+        { name: '辐射强度值', value: 9000 },
+        { name: '温度实值', value: 50 },
+        { name: '湿度实值', value: 60.3 },
+      ],
+      fusheData: [150, 230, 224, 218, 135, 147, 260],
+      wenduData: [120, 132, 101, 134, 90, 230, 210],
+      shiduData: [220, 182, 191, 234, 290, 330, 310],
+    }
+  },
+  created () {
+  },
+  mounted () {
+    this.$nextTick(() => {
+      this.initDataCurve()
+    })
+  },
+  methods: {
+    initDataCurve(){
+      var _this = this
+      var maxa = Math.max.apply(null, this.fusheData)
+      var maxb = Math.max.apply(null, [...this.wenduData, ...this.shiduData])
+      this.uEcharts = echarts.init(this.$refs.dataCurve);
+      this.uOption = {
+        color: ['#07D626', '#E30106', '#E39106'], // legend对应颜色
+        grid: {
+          // top: '70',
+          left: '46',
+          bottom: '40'
+        },
+        xAxis: {
+          type: 'category',
+          axisTick: { show: false }, // 横坐标刻度
+          boundaryGap: false, // 坐标轴两边留白(刻度跟数据对应)
+          axisLine: { // 横坐标线样式
+            lineStyle: {
+              color: 'rgba(255,255,255,.1)',
+            },
+          },
+          axisLabel: {
+            textStyle: { // 坐标轴文字
+              color: '#fff'
+            }
+          },
+          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+        },
+        yAxis: [
+          {
+            type: 'value',
+            axisLabel: { // 纵坐标样式
+              textStyle: {
+                color: '#fff',
+              }
+            },
+            splitLine: { // 网格线
+              show: true, // 是否显示
+              lineStyle: { // 网格线样式
+                color: 'rgba(255,255,255,.1)', // 网格线颜色
+                width: 1, //网格线的加粗程度
+                // type: 'dashed' // 网格线类型 dashed:虚线
+              }
+            },
+            name: '光照强度W/㎡', // 刻度
+            nameTextStyle: {
+              color: '#fff',
+              padding: [0, 0, 0, 20],
+            },
+            min: 0,
+            max: setMax(maxa),
+            interval: setMax(maxa) / 5,
+          },
+          {
+            type: 'value',
+            axisLabel: { // 纵坐标样式
+              textStyle: {
+                color: '#fff',
+              }
+            },
+            splitLine: { // 网格线
+              show: true, // 是否显示
+              lineStyle: { // 网格线样式
+                color: 'rgba(255,255,255,.1)', // 网格线颜色
+                width: 1, //网格线的加粗程度
+                // type: 'dashed' // 网格线类型 dashed:虚线
+              }
+            },
+            name: '温湿度值/℃/%', // 刻度
+            nameTextStyle: {
+              color: '#fff',
+              // padding: [0, 0, 0, 20],
+            },
+            min: 0,
+            max: setMax(maxb),
+            interval: setMax(maxb) / 5,
+          },
+        ],
+        legend: {
+          icon: "roundRect", // 样式改为方形rect,改为圆角方形roundRect
+          itemWidth: 14, // 宽度
+          itemHeight: 6, // 高度
+          textStyle: {
+            color: '#fff',
+            fontSize: 11
+          },
+          top: '15',
+          // 使用回调函数
+          formatter: function (name) {
+            console.log(name)
+            var currentObj = _this.legendData.find(item => item.name === name)
+            return name + ':' + currentObj.value;
+          },
+          data: _this.legendData.map(item => item.name),
+        },
+        series: [
+          {
+            name: '辐射强度值',
+            data: [150, 230, 224, 218, 135, 147, 260],
+            type: 'line',
+            // symbol: 'circle',
+            // symbolSize: 2,
+            showSymbol: false, // 只有在 tooltip hover 的时候显示symbol
+            // itemStyle: { // symbol样式
+            //   normal: {
+            //     color: 'rgb(255, 255, 255)',
+            //     borderColor: 'rgba(255, 255, 255, 0.2)', // symbol边框颜色
+            //     borderWidth: 12 // symbol边框宽度
+            //   }
+            // },
+            lineStyle: { // 线条样式
+              normal: {
+                width: 2,
+                color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ // 颜色渐变
+                  {
+                    offset: 0,
+                    color: 'rgb(7, 214, 38, 0)'
+                  },
+                  {
+                    offset: 0.5,
+                    color: 'rgb(7, 214, 38)'
+                  }, 
+                  {
+                    offset: 1,
+                    color: 'rgb(7, 214, 38, 0)'
+                  }
+                ])
+              }
+            }
+          },
+          {
+            name: '温度实值',
+            type: 'line',
+            yAxisIndex: 1, // 关联第几个y轴
+            showSymbol: false,
+            lineStyle: { // 线条样式
+              normal: {
+                width: 2,
+                color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ // 颜色渐变
+                  {
+                    offset: 0,
+                    color: 'rgb(227, 1, 6, 0)'
+                  },
+                  {
+                    offset: 0.5,
+                    color: 'rgb(227, 1, 6)'
+                  }, 
+                  {
+                    offset: 1,
+                    color: 'rgb(227, 1, 6, 0)'
+                  }
+                ])
+              }
+            },
+            data: [120, 132, 101, 134, 90, 230, 210],
+          },
+          {
+            name: '湿度实值',
+            type: 'line',
+            yAxisIndex: 1, // 关联第几个y轴
+            showSymbol: false,
+            lineStyle: { // 线条样式
+              normal: {
+                width: 2,
+                color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ // 颜色渐变
+                  {
+                    offset: 0,
+                    color: 'rgb(227, 145, 6, 0)'
+                  },
+                  {
+                    offset: 0.5,
+                    color: 'rgb(227, 145, 6)'
+                  }, 
+                  {
+                    offset: 1,
+                    color: 'rgb(227, 145, 6, 0)'
+                  }
+                ])
+              }
+            },
+            data: [220, 182, 191, 234, 290, 330, 310],
+          }
+        ]
+      };
+      this.uOption && this.uEcharts.setOption(this.uOption)
+      window.addEventListener("resize", ()=>{
+        this.uEcharts.resize();
+      });
+    }
+  }
+}
+</script>
+
+<style scoped>
+  @import '~@assets/less/uStyle.less';
+</style>
+<style lang="less">
+  .data-curve-module{
+    width: 100%;
+    height: 100%;
+  }
+</style>

+ 1 - 1
src/views/modules_guAn/visualization/modules/ModeInfo.vue

@@ -115,7 +115,7 @@ export default {
     // border: 1px solid rgb(255, 255, 255);
     margin-bottom: 2.5%;
     background-color: #094F8D;
-    color: #0AA1E5;
+    color: #0CB8FE;
     padding-left: 3%;
     border-radius: 2px;
     display: flex;

+ 241 - 0
src/views/modules_guAn/visualization/modules/RealTimeCurve.vue

@@ -0,0 +1,241 @@
+<template>
+  <div class="data-curve-module">
+    <common-title title="数据查看和提取"></common-title>    
+    <div class="visualization-common-border">
+      <div ref="dataCurve" class="h100"></div>
+    </div>
+  </div>
+</template>
+
+<script>
+import * as echarts from "echarts"
+import commonTitle from '../components/commonTitle.vue'
+import { setMax } from "../components/common.js";
+
+export default {
+  components: { commonTitle },
+  name: '',
+  data () {
+    return {
+      uEcharts: null,
+      uOption: null,
+      legendData: [
+        { name: '辐射强度值', value: 9000 },
+        { name: '温度实值', value: 50 },
+        { name: '湿度实值', value: 60.3 },
+      ],
+      fusheData: [150, 230, 224, 218, 135, 147, 260],
+      wenduData: [120, 132, 101, 134, 90, 230, 210],
+      shiduData: [220, 182, 191, 234, 290, 330, 310],
+    }
+  },
+  created () {
+  },
+  mounted () {
+    this.$nextTick(() => {
+      this.initDataCurve()
+    })
+  },
+  methods: {
+    initDataCurve(){
+      var _this = this
+      var maxa = Math.max.apply(null, this.fusheData)
+      var maxb = Math.max.apply(null, [...this.wenduData, ...this.shiduData])
+      this.uEcharts = echarts.init(this.$refs.dataCurve);
+      this.uOption = {
+        color: ['rgb(255, 0, 255)', 'rgb(255, 105, 5)', 'rgb(91, 255, 255)'], // legend对应颜色
+        grid: {
+          // top: '70',
+          left: '46',
+          bottom: '40'
+        },
+        xAxis: {
+          type: 'category',
+          axisTick: { show: false }, // 横坐标刻度
+          boundaryGap: false, // 坐标轴两边留白(刻度跟数据对应)
+          axisLine: { // 横坐标线样式
+            lineStyle: {
+              color: 'rgba(255,255,255,.1)',
+            },
+          },
+          axisLabel: {
+            textStyle: { // 坐标轴文字
+              color: '#fff'
+            }
+          },
+          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+        },
+        yAxis: [
+          {
+            type: 'value',
+            axisLabel: { // 纵坐标样式
+              textStyle: {
+                color: '#fff',
+              }
+            },
+            splitLine: { // 网格线
+              show: true, // 是否显示
+              lineStyle: { // 网格线样式
+                color: 'rgba(255,255,255,.1)', // 网格线颜色
+                width: 1, //网格线的加粗程度
+                // type: 'dashed' // 网格线类型 dashed:虚线
+              }
+            },
+            name: '光照强度W/㎡', // 刻度
+            nameTextStyle: {
+              color: '#fff',
+              padding: [0, 0, 0, 20],
+            },
+            min: 0,
+            max: setMax(maxa),
+            interval: setMax(maxa) / 5,
+          },
+          {
+            type: 'value',
+            axisLabel: { // 纵坐标样式
+              textStyle: {
+                color: '#fff',
+              }
+            },
+            splitLine: { // 网格线
+              show: true, // 是否显示
+              lineStyle: { // 网格线样式
+                color: 'rgba(255,255,255,.1)', // 网格线颜色
+                width: 1, //网格线的加粗程度
+                // type: 'dashed' // 网格线类型 dashed:虚线
+              }
+            },
+            name: '温湿度值/℃/%', // 刻度
+            nameTextStyle: {
+              color: '#fff',
+              // padding: [0, 0, 0, 20],
+            },
+            min: 0,
+            max: setMax(maxb),
+            interval: setMax(maxb) / 5,
+          },
+        ],
+        legend: {
+          icon: "roundRect", // 样式改为方形rect,改为圆角方形roundRect
+          itemWidth: 14, // 宽度
+          itemHeight: 6, // 高度
+          textStyle: {
+            color: '#fff',
+            fontSize: 11
+          },
+          top: '15',
+          // 使用回调函数
+          formatter: function (name) {
+            console.log(name)
+            var currentObj = _this.legendData.find(item => item.name === name)
+            return name + ':' + currentObj.value;
+          },
+          data: _this.legendData.map(item => item.name),
+        },
+        series: [
+          {
+            name: '辐射强度值',
+            data: [150, 230, 224, 218, 135, 147, 260],
+            type: 'line',
+            // symbol: 'circle',
+            // symbolSize: 2,
+            showSymbol: false, // 只有在 tooltip hover 的时候显示symbol
+            // itemStyle: { // symbol样式
+            //   normal: {
+            //     color: 'rgb(255, 255, 255)',
+            //     borderColor: 'rgba(255, 255, 255, 0.2)', // symbol边框颜色
+            //     borderWidth: 12 // symbol边框宽度
+            //   }
+            // },
+            lineStyle: { // 线条样式
+              normal: {
+                width: 2,
+                color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ // 颜色渐变
+                  {
+                    offset: 0,
+                    color: 'rgb(255, 0, 255, 0)'
+                  },
+                  {
+                    offset: 0.5,
+                    color: 'rgb(255, 0, 255)'
+                  }, 
+                  {
+                    offset: 1,
+                    color: 'rgb(255, 0, 255, 0)'
+                  }
+                ])
+              }
+            }
+          },
+          {
+            name: '温度实值',
+            type: 'line',
+            yAxisIndex: 1, // 关联第几个y轴
+            showSymbol: false,
+            lineStyle: { // 线条样式
+              normal: {
+                width: 2,
+                color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ // 颜色渐变
+                  {
+                    offset: 0,
+                    color: 'rgb(255, 105, 0, 0)'
+                  },
+                  {
+                    offset: 0.5,
+                    color: 'rgb(255, 105, 5)'
+                  }, 
+                  {
+                    offset: 1,
+                    color: 'rgb(255, 0, 0, 0)'
+                  }
+                ])
+              }
+            },
+            data: [120, 132, 101, 134, 90, 230, 210],
+          },
+          {
+            name: '湿度实值',
+            type: 'line',
+            yAxisIndex: 1, // 关联第几个y轴
+            showSymbol: false,
+            lineStyle: { // 线条样式
+              normal: {
+                width: 2,
+                color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ // 颜色渐变
+                  {
+                    offset: 0,
+                    color: 'rgb(0, 255, 255, 0)'
+                  },
+                  {
+                    offset: 0.5,
+                    color: 'rgb(91, 255, 255)'
+                  }, 
+                  {
+                    offset: 1,
+                    color: 'rgb(0, 255, 255, 0)'
+                  }
+                ])
+              }
+            },
+            data: [220, 182, 191, 234, 290, 330, 310],
+          }
+        ]
+      };
+      this.uOption && this.uEcharts.setOption(this.uOption)
+      window.addEventListener("resize", ()=>{
+        this.uEcharts.resize();
+      });
+    }
+  }
+}
+</script>
+
+<style scoped>
+  @import '~@assets/less/uStyle.less';
+</style>
+<style lang="less">
+  .data-curve-module{
+    width: 100%;
+    height: 100%;
+  }
+</style>

+ 365 - 4
src/views/modules_guAn/visualization/modules/RunningState.vue

@@ -1,14 +1,139 @@
 <template>
   <div class="running-state-module">
-    <common-title title="程序运行状态"></common-title>    
-    <div class="visualization-common-border">
-
+    <common-title title="程序运行状态"></common-title>
+    <div class="visualization-common-border box">
+      <!-- 左边 -->
+      <div class="le">
+        <div class="itemHead">
+          <div class="lee"></div>
+          <div class="cee">全部</div>
+          <div class="rii">内部</div>
+        </div>
+        <div class="item">
+          <div class="lee">循环设定值</div>
+          <div class="cee">0</div>
+          <div class="rii">0</div>
+        </div>
+        <div class="item">
+          <div class="lee">循环运行值</div>
+          <div class="cee">0</div>
+          <div class="rii">0</div>
+        </div>
+        <div class="itemHead">
+          <div class="lee"></div>
+          <div class="cee">起始</div>
+          <div class="rii">目标</div>
+        </div>
+        <div class="item">
+          <div class="lee">温度</div>
+          <div class="cee">0</div>
+          <div class="rii">0</div>
+        </div>
+        <div class="item">
+          <div class="lee">湿度</div>
+          <div class="cee">0</div>
+          <div class="rii">0</div>
+        </div>
+        <div class="item">
+          <div class="lee">辐射强度</div>
+          <div class="cee">0</div>
+          <div class="rii">0</div>
+        </div>
+        <div style="width: 100%; height: 12%; margin-bottom: 4.5px; display: flex;">
+          <div style="width: 45%; height: 100%; font-size: 11px; color: #0CB8FF; display: flex; align-items: center; justify-content: center;">预计结束时间:</div>
+          <div style="width: 60%; height: 100%; font-size: 8px; color: #FEFFFE; display: flex; align-items: center; justify-content: center;">2023年12月13日08时30分</div>
+        </div>
+      </div>
+      <!-- 中间 -->
+      <div class="ce">
+        <div class="itemHead">
+          <div class="leece">内部循环</div>
+          <div class="ceece">起始段</div>
+          <div class="ceecee">结束段</div>
+          <div class="riice">次数</div>
+        </div>
+        <div class="item">
+          <div class="leece">1</div>
+          <div class="ceece">0</div>
+          <div class="ceecee">0</div>
+          <div class="riice">0</div>
+        </div>
+        <div class="item">
+          <div class="leece">2</div>
+          <div class="ceece">0</div>
+          <div class="ceecee">0</div>
+          <div class="riice">0</div>
+        </div>
+        <div class="item">
+          <div class="leece">3</div>
+          <div class="ceece">0</div>
+          <div class="ceecee">0</div>
+          <div class="riice">0</div>
+        </div>
+        <div class="item">
+          <div class="leece">4</div>
+          <div class="ceece">0</div>
+          <div class="ceecee">0</div>
+          <div class="riice">0</div>
+        </div>
+        <div class="itemHead">
+          <div class="leece">总运行</div>
+          <div class="ceece"></div>
+          <div class="ceecee"></div>
+          <div class="riice"></div>
+        </div>
+        <div class="item">
+          <div class="leece">运行段数</div>
+          <div class="ceece">0</div>
+          <div class="ceecee"></div>
+          <div class="riice"></div>
+        </div>
+        <div class="item">
+          <div class="leece">设定段数</div>
+          <div class="ceece">0</div>
+          <div class="ceecee"></div>
+          <div class="riice"></div>
+        </div>
+      </div>
+      <!-- 右边 -->
+      <div class="ri">
+        <div class="itemHead">
+          <div class="leeri">当前</div>
+          <div class="riiri"></div>
+        </div>
+        <div class="item">
+          <div class="leeri">运行程序号</div>
+          <div class="riiri">0</div>
+        </div>
+        <div class="item">
+          <div class="leeri">运行段号</div>
+          <div class="riiri">0</div>
+        </div>
+        <div class="item">
+          <div class="leeri">运行时间</div>
+          <div class="riiri">0min</div>
+        </div>
+        <div class="item">
+          <div class="leeri">剩余时间</div>
+          <div class="riiri">0min</div>
+        </div>
+        <div class="item">
+          <div class="leeri">总时间</div>
+          <div class="riiri">0min</div>
+        </div>
+        <div class="echarts">
+          <div style="width: 30%; height: 100%; font-size: 12px; color: #0CB8FF; display: flex; align-items: center; padding-left:1%;">进度:</div>
+          <div style="width: 55%; height: 100%;" ref="zhuzhuang"></div>
+          <div style="width: 10%; height: 100%; font-size: 9px; color: #FEFFFE; display: flex; align-items: center; justify-content: center; padding-top:2%">80%</div>
+        </div>
+      </div>
     </div>
   </div>
 </template>
 
 <script>
 import commonTitle from '../components/commonTitle.vue'
+import * as echarts from 'echarts';
 
 export default {
   components: { commonTitle },
@@ -20,8 +145,102 @@ export default {
   created () {
   },
   mounted () {
+    this.drawzhuzhuang() //绘制进度条
+    // echarts自适应
+    window.addEventListener("resize", () =>{
+      this.zhuChart.resize();
+    });
   },
   methods: {
+    drawzhuzhuang(){
+      var chartDom = this.$refs.zhuzhuang
+      this.zhuChart = echarts.init(chartDom);
+      var option;
+
+      option = {
+        grid: {
+        left: '0',
+        // right: '1%',
+        bottom: '58',
+        // top: '1%',
+        // 左侧文字显示
+        // containLabel: true,
+        },
+        xAxis: {
+            show: false,
+            type: 'value',
+            max: 100,
+        },
+        yAxis: [
+            {
+                type: 'category',
+                inverse: false,
+                axisLabel: {
+                    show: true,
+                    textStyle: {
+                        fontSize: '8',
+                        color: '#03fcfe',
+                    },
+                },
+                splitLine: {
+                    show: false,
+                },
+                axisTick: {
+                    show: false,
+                },
+                axisLine: {
+                    show: false,
+                },
+            },
+            {
+                type: 'category',
+                inverse: true,
+                axisTick: 'none',
+                axisLine: 'none',
+                show: true,
+                data: [80],
+            },
+        ],
+        series: [
+            {
+                type: 'bar',
+                showBackground: true,
+                backgroundStyle: {
+                      color: 'rgba(180, 180, 180, 0.2)',
+                      borderRadius:30
+                },
+                // 百分数显示
+                // label:{
+                //     show:true,
+                //     position:'right',
+                //     formatter:'{@score}%',
+                //     textStyle: {
+                //         color: '#03fcfe',
+                //         fontSize: '8',
+                //     },
+                // },
+                itemStyle: {
+                    normal: {
+                        barBorderRadius: 10,
+                        color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [
+                            {
+                                offset: 0,
+                                color: '#1badf9',
+                            },
+                            {
+                                offset: 1,
+                                color: '#03fcfe',
+                            },
+                        ]),
+                    },
+                },
+                barWidth: 10,
+                data: [80],
+            },
+        ],
+      };
+      option && this.zhuChart.setOption(option);
+    },
   }
 }
 </script>
@@ -29,9 +248,151 @@ export default {
 <style scoped>
   @import '~@assets/less/uStyle.less';
 </style>
-<style lang="less">
+<style lang="less" scoped>
   .running-state-module{
     width: 100%;
     height: 100%;
   }
+  .box {
+    // border: 1px solid rgb(255, 255, 255);
+    display: flex;
+    /* row (默认值) : 主轴为水平万向,起点在左端。*/
+    flex-direction: row;
+  }
+  .le {
+    height: 93%;
+    width: 37%;
+    margin: 2% 0% 2% 2%;
+    // border: 1px solid rgb(255, 255, 255);
+  }
+  .ce{
+    height: 93%;
+    width: 37%;
+    margin: 2% 0% 2% 2%;
+    // border: 1px solid rgb(255, 255, 255);
+  }
+  .ri{
+    height: 93%;
+    width: 24%;
+    margin: 2%;
+    // border: 1px solid rgb(255, 255, 255);
+  }
+  .itemHead{
+    width: 100%;
+    height: 10%;
+    // border: 1px solid rgb(255, 255, 255);
+    margin-bottom: 4.5px;
+    background-color: #094F8D;
+    color: #0CB8FE;
+    padding-left: 2%;
+    border-radius: 2px;
+    display: flex;
+    align-items: center;
+  }
+  .item{
+    width: 100%;
+    height: 10%;
+    // border: 1px solid rgb(255, 255, 255);
+    margin-bottom: 4.5px;
+    background-color: #072A54;
+    color: #FEFFFE;
+    padding-left: 2%;
+    border-radius: 2px;
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+  }
+  // 左
+  .lee{
+    width: 40%;
+    height: 100%;
+    font-size: 12px;
+    // border: 1px solid rgb(255, 255, 255);
+    color: #0CB8FF;
+    display: flex;
+    align-items: center;
+  }
+  .cee{
+    width: 30%;
+    height: 100%;
+    font-size: 12px;
+    // border: 1px solid rgb(255, 255, 255);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+  .rii{
+    width: 30%;
+    height: 100%;
+    font-size: 12px;
+    // border: 1px solid rgb(255, 255, 255);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+  // 中
+  .leece{
+    width: 33%;
+    height: 100%;
+    font-size: 12px;
+    // border: 1px solid rgb(255, 255, 255);
+    color: #0CB8FF;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+  .ceece{
+    width: 24%;
+    height: 100%;
+    font-size: 12px;
+    // border: 1px solid rgb(255, 255, 255);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+  .ceecee{
+    width: 24%;
+    height: 100%;
+    font-size: 12px;
+    // border: 1px solid rgb(255, 255, 255);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+  // 右
+  .riice{
+    width: 19%;
+    height: 100%;
+    font-size: 12px;
+    // border: 1px solid rgb(255, 255, 255);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+  .leeri{
+    width: 65%;
+    height: 100%;
+    font-size: 12px;
+    // border: 1px solid rgb(255, 255, 255);
+    color: #0CB8FF;
+    display: flex;
+    align-items: center;
+  }
+  .riiri{
+    width: 35%;
+    height: 100%;
+    font-size: 12px;
+    // border: 1px solid rgb(255, 255, 255);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+  // echarts
+  .echarts{
+    width: 100%;
+    height: 15%;
+    margin-top: 5%;
+    // border: 1px solid rgb(255, 255, 255);
+    display: flex;
+  }
 </style>

+ 35 - 7
src/views/modules_guAn/visualization/modules/TestStatusInfo.vue

@@ -1,17 +1,33 @@
 <template>
   <div class="test-statusInfo-module">
-    <common-title title="试验状态信息"></common-title>    
+    <common-title title="试验状态信息"></common-title>
     <div class="visualization-common-border box">
       <div>
         <div class="item">
           <div class="itemHead">A机组</div>
           <div class="itemCenter">
-            <div>A1压机吸气:(1) bar</div>
-            <div>A2压机吸气:(22) bar</div>
-          </div>
-          <div class="itemCenter">
-            <div>A1压机排气:(21) bar</div>
-            <div>A2压机排气:(2222) bar</div>
+            <!-- <div>
+              <div class="lef">A1压机吸气:</div>
+              <div class="rig">() bar</div>
+            </div>
+            <div>
+              <div class="lef">A2压机吸气:</div>
+              <div class="rig">() bar</div>
+            </div> -->
+            <div>A1压机吸气:() bar</div>
+            <div>A2压机吸气:() bar</div>
+          </div>
+          <div class="itemCenter">
+            <!-- <div>
+              <div class="lef">A1压机排气:</div>
+              <div class="rig">() bar</div>
+            </div>
+            <div>
+              <div class="lef">A2压机排气:</div>
+              <div class="rig">() bar</div>
+            </div> -->
+            <div>A1压机排气:() bar</div>
+            <div>A2压机排气:() bar</div>
           </div>
           <div class="itemCenter">
             <div>B1压机吸气:() bar</div>
@@ -184,4 +200,16 @@ export default {
     justify-content: center;
     flex: 1;
   }
+  .lef{
+    width: 50%;
+    height: 100%;
+    display: flex;
+    justify-content: end;
+  }
+  .rig{
+    width: 50%;
+    height: 100%;
+    display: flex;
+    justify-content: start;
+  }
 </style>

+ 231 - 2
src/views/modules_guAn/visualization/modules/YuzhiCurve.vue

@@ -1,27 +1,256 @@
 <template>
   <div class="yuzhi-curve-module">
-    <common-title title="预制曲线"></common-title>    
+    <common-title title="预制曲线"></common-title>
     <div class="visualization-common-border">
-
+      <div ref="yuzhiCurve" class="h100"></div>
     </div>
   </div>
 </template>
 
 <script>
+import * as echarts from "echarts"
 import commonTitle from '../components/commonTitle.vue'
+import { setMax } from "../components/common.js";
 
 export default {
   components: { commonTitle },
   name: '',
   data () {
     return {
+      uEcharts: null,
+      uOption: null,
+      legendData: [
+        { name: '辐射强度值', value: 9000 },
+        { name: '温度实值', value: 50 },
+        { name: '湿度实值', value: 60.3 },
+      ],
+      fusheData: [150, 230, 224, 218, 135, 147, 260],
+      wenduData: [120, 132, 101, 134, 90, 230, 210],
+      shiduData: [220, 182, 191, 234, 290, 330, 310],
     }
   },
   created () {
   },
   mounted () {
+    this.$nextTick(() => {
+      this.initYuzhiCurve()
+    })
   },
   methods: {
+    initYuzhiCurve(){
+      var _this = this
+      var maxa = Math.max.apply(null, this.fusheData)
+      var maxb = Math.max.apply(null, [...this.wenduData, ...this.shiduData])
+      this.uEcharts = echarts.init(this.$refs.yuzhiCurve);
+      this.uOption = {
+        color: ['#0102c8', '#cfa809', '#49e4e9'], // legend对应颜色
+        grid: {
+          // top: '70',
+          left: '46',
+          bottom: '40'
+        },
+        xAxis: {
+          type: 'category',
+          axisTick: { show: false }, // 横坐标刻度
+          boundaryGap: false, // 坐标轴两边留白(刻度跟数据对应)
+          axisLine: { // 横坐标线样式
+            lineStyle: {
+              color: 'rgba(255,255,255,.1)',
+            },
+          },
+          axisLabel: {
+            textStyle: { // 坐标轴文字
+              color: '#fff'
+            }
+          },
+          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+        },
+        yAxis: [
+          {
+            type: 'value',
+            axisLabel: { // 纵坐标样式
+              textStyle: {
+                color: '#fff',
+              }
+            },
+            splitLine: { // 网格线
+              show: true, // 是否显示
+              lineStyle: { // 网格线样式
+                color: 'rgba(255,255,255,.1)', // 网格线颜色
+                width: 1, //网格线的加粗程度
+                // type: 'dashed' // 网格线类型 dashed:虚线
+              }
+            },
+            name: '光照强度W/㎡', // 刻度
+            nameTextStyle: {
+              color: '#fff',
+              padding: [0, 0, 0, 20],
+            },
+            min: 0,
+            max: setMax(maxa),
+            interval: setMax(maxa) / 5,
+          },
+          {
+            type: 'value',
+            axisLabel: { // 纵坐标样式
+              textStyle: {
+                color: '#fff',
+              }
+            },
+            splitLine: { // 网格线
+              show: true, // 是否显示
+              lineStyle: { // 网格线样式
+                color: 'rgba(255,255,255,.1)', // 网格线颜色
+                width: 1, //网格线的加粗程度
+                // type: 'dashed' // 网格线类型 dashed:虚线
+              }
+            },
+            name: '温湿度值/℃/%', // 刻度
+            nameTextStyle: {
+              color: '#fff',
+              // padding: [0, 0, 0, 20],
+            },
+            min: 0,
+            max: setMax(maxb),
+            interval: setMax(maxb) / 5,
+          },
+        ],
+        legend: {
+          icon: "roundRect", // 样式改为方形rect,改为圆角方形roundRect
+          itemWidth: 14, // 宽度
+          itemHeight: 6, // 高度
+          textStyle: {
+            color: '#fff',
+            fontSize: 11
+          },
+          top: '15',
+          // 使用回调函数
+          formatter: function (name) {
+            console.log(name)
+            var currentObj = _this.legendData.find(item => item.name === name)
+            return name + ':' + currentObj.value;
+          },
+          data: _this.legendData.map(item => item.name),
+        },
+        series: [
+          {
+            name: '辐射强度值',
+            type: 'line',
+            // symbol: 'circle',
+            // symbolSize: 2,
+            showSymbol: false, // 只有在 tooltip hover 的时候显示symbol
+            // itemStyle: { // symbol样式
+            //   normal: {
+            //     color: 'rgb(255, 255, 255)',
+            //     borderColor: 'rgba(255, 255, 255, 0.2)', // symbol边框颜色
+            //     borderWidth: 12 // symbol边框宽度
+            //   }
+            // },
+            lineStyle: { // 线条样式
+              normal: {
+                width: 2,
+                color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ // 颜色渐变
+                  {
+                    offset: 0,
+                    color: 'rgb(1, 2, 200, 0)'
+                  },
+                  {
+                    offset: 0.5,
+                    color: 'rgb(1, 2, 200)'
+                  },
+                  {
+                    offset: 1,
+                    color: 'rgb(1, 2, 200, 0)'
+                  }
+                ])
+              }
+            },
+            data: _this.fusheData,
+          },
+          {
+            name: '温度实值',
+            type: 'line',
+            yAxisIndex: 1, // 关联第几个y轴
+            showSymbol: false,
+            lineStyle: { // 线条样式
+              normal: {
+                width: 2,
+                color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ // 颜色渐变
+                  {
+                    offset: 0,
+                    color: 'rgb(207, 168, 9, 0)'
+                  },
+                  {
+                    offset: 0.5,
+                    color: 'rgb(207, 168, 9)'
+                  },
+                  {
+                    offset: 1,
+                    color: 'rgb(207, 168, 9, 0)'
+                  }
+                ])
+              }
+            },
+            data: _this.wenduData,
+          },
+          {
+            name: '湿度实值',
+            type: 'line',
+            yAxisIndex: 1, // 关联第几个y轴
+            showSymbol: false,
+            lineStyle: { // 线条样式
+              normal: {
+                width: 2,
+                color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ // 颜色渐变
+                  {
+                    offset: 0,
+                    color: 'rgb(73, 228, 233, 0)'
+                  },
+                  {
+                    offset: 0.5,
+                    color: 'rgb(73, 228, 233)'
+                  },
+                  {
+                    offset: 1,
+                    color: 'rgb(73, 228, 233, 0)'
+                  }
+                ])
+              }
+            },
+            data: _this.shiduData,
+          }
+        ]
+      };
+      this.uOption && this.uEcharts.setOption(this.uOption)
+      window.addEventListener("resize", ()=>{
+        this.uEcharts.resize();
+      });
+    },
+    // // 取最大值
+    // setMax(num) {
+    //   // 1.判断是否小数:  //判断是否含有小数点:要检索的字符串值没有出现,则该方法返回 -1。
+    //   if (num.toString().indexOf(".") != -1) {//有小数点
+    //     num = Math.ceil(num);//向上取整 
+    //   }
+    //   // 2.向上取整数倍
+    //   if (num.toString().length < 2) {
+    //     // 一位数1
+    //     num = 10;
+    //   } else if (num.toString().length < 3) {
+    //     // 2位数
+    //     num = Math.ceil(num / 5) * 5;// 变成最近的5的倍数
+    //   } else {
+    //     // 位数--先判断是不是1000...的倍数
+    //     var t = '';
+    //     for (let i = 0; i < num.toString().length - 1; i++) {
+    //       t += '0';//'0000...'
+    //     }
+    //     if ((num % Number(1 + t)) != 0) {//不是100的倍数
+    //       num = (Number(num.toString().substr(0, 1)) + 1) * Number(1 + t);
+    //     }
+    //   }
+    //   return num
+    // }
   }
 }
 </script>

+ 31 - 4
yarn.lock

@@ -895,10 +895,10 @@
     cssnano-preset-default "^4.0.0"
     postcss "^7.0.0"
 
-"@jeecg/antd-online-mini@3.1.0-beta":
-  version "3.1.0-beta"
-  resolved "https://registry.npmmirror.com/@jeecg/antd-online-mini/-/antd-online-mini-3.1.0-beta.tgz#cf3e254259503405a5e83ffa6775ac9fa02fe74c"
-  integrity sha512-pW0zWzExnxjlC3e7DzGYjQibLU22K/7N0kp1ddJrGgX33Ia/wq7ELOcwn6bLzITD89RcvX1JUW/om+IJ1PxOSw==
+"@jeecg/antd-online-mini@3.4.3-beta2":
+  version "3.4.3-beta2"
+  resolved "https://registry.npmmirror.com/@jeecg/antd-online-mini/-/antd-online-mini-3.4.3-beta2.tgz#5903547f48a7d51f2df9773b85d25d28807e57ae"
+  integrity sha512-uZLjtQG/vAcBsCEysE1HceUyzwiHwU+JlNzvHxNnenNDHeaawZa9CfILUImNFJ5JQVqE5J11QpQNb6i5Boo3Gw==
 
 "@mrmlnc/readdir-enhanced@^2.2.1":
   version "2.2.1"
@@ -4573,6 +4573,14 @@ ecc-jsbn@~0.1.1:
     jsbn "~0.1.0"
     safer-buffer "^2.1.0"
 
+echarts@^5.4.3:
+  version "5.4.3"
+  resolved "https://registry.npmmirror.com/echarts/-/echarts-5.4.3.tgz#f5522ef24419164903eedcfd2b506c6fc91fb20c"
+  integrity sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==
+  dependencies:
+    tslib "2.3.0"
+    zrender "5.4.4"
+
 ee-first@1.1.1:
   version "1.1.1"
   resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@@ -11019,6 +11027,11 @@ tsconfig-paths@^3.9.0:
     minimist "^1.2.0"
     strip-bom "^3.0.0"
 
+tslib@2.3.0:
+  version "2.3.0"
+  resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
+  integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
+
 tslib@^1.10.0, tslib@^1.9.0:
   version "1.13.0"
   resolved "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
@@ -11459,6 +11472,13 @@ vue-photo-preview@^1.1.3:
     webpack "^3.6.0"
     webpack-dev-server "^2.9.1"
 
+vue-print-nb-jeecg@^1.0.12:
+  version "1.0.12"
+  resolved "https://registry.yarnpkg.com/vue-print-nb-jeecg/-/vue-print-nb-jeecg-1.0.12.tgz#975e1dac3da8c9736ac81b82a2b099cafe1bb3df"
+  integrity sha512-jHyWm6/TxB1iU2nHL7upQdHVdxb1SJQ9n3XKeYTaruFdbSphLo1vDtTunS2qVCjupk8lui7FlF5rxxSNr0zjZg==
+  dependencies:
+    babel-plugin-transform-runtime "^6.23.0"
+
 vue-ref@^2.0.0:
   version "2.0.0"
   resolved "https://registry.npmjs.org/vue-ref/-/vue-ref-2.0.0.tgz#483084d732abed11da796778a8266a3af0ea1a9c"
@@ -12074,3 +12094,10 @@ yorkie@^2.0.0:
     is-ci "^1.0.10"
     normalize-path "^1.0.0"
     strip-indent "^2.0.0"
+
+zrender@5.4.4:
+  version "5.4.4"
+  resolved "https://registry.npmmirror.com/zrender/-/zrender-5.4.4.tgz#8854f1d95ecc82cf8912f5a11f86657cb8c9e261"
+  integrity sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==
+  dependencies:
+    tslib "2.3.0"