isv-robot 2 năm trước cách đây
mục cha
commit
8ff3a829b8

+ 3 - 0
package.json

@@ -17,6 +17,7 @@
     "ant-design-vue": "^1.7.8",
     "axios": "0.18.1",
     "core-js": "3.6.5",
+    "echarts": "^5.4.1",
     "element-ui": "2.13.2",
     "fuse.js": "^6.4.6",
     "js-base64": "^3.7.2",
@@ -28,6 +29,7 @@
     "path-to-regexp": "2.4.0",
     "screenfull": "^5.1.0",
     "vue": "2.6.10",
+    "vue-echarts": "^6.5.1",
     "vue-router": "3.0.6",
     "vuex": "3.1.0"
   },
@@ -36,6 +38,7 @@
     "@vue/cli-plugin-eslint": "4.4.4",
     "@vue/cli-plugin-unit-jest": "4.4.4",
     "@vue/cli-service": "4.4.4",
+    "@vue/composition-api": "^1.7.1",
     "@vue/test-utils": "1.0.0-beta.29",
     "autoprefixer": "9.5.1",
     "babel-eslint": "10.1.0",

BIN
public/static/images/biaoti_short@2x.png


+ 3 - 0
src/main.js

@@ -1,5 +1,7 @@
 import Vue from 'vue'
 import 'normalize.css/normalize.css' // a modern alternative to CSS resets
+import 'echarts'
+import ECharts from 'vue-echarts'
 
 import {
   Card,
@@ -44,6 +46,7 @@ import * as filters from './filters'
 import ELScrollbar from '@/components/ELScrollbar'
 import './icons/al/iconfont.css' // icon
 
+Vue.component('VChart', ECharts)
 Vue.use(Antd)
 Vue.use(JDictSelectTag)
 Vue.use(JMultiSelectTag)

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 363 - 372
src/utils/encryption/crypto-js/crypto-js.js


+ 63 - 0
src/views/dashboard-screen/chard-wrap/card-wrap.vue

@@ -0,0 +1,63 @@
+<template>
+  <div class="card-wrap">
+    <div class="header">
+      <div class="h-c-wrap">
+        <slot name="title"></slot>
+      </div>
+    </div>
+    <div class="content">
+      <slot name="content" class="slot"></slot>
+    </div>
+  </div>
+</template>
+<script>
+
+export default {
+  name: 'CardWrap',
+  data() {
+    return {}
+  },
+  watch: {},
+  created() {
+  },
+  methods: {}
+}
+</script>
+<style scoped lang="scss">
+.card-wrap {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  border: 1px solid teal;
+
+  .header {
+    height: 48px;
+    width: 80%;
+    flex-shrink: 0;
+    background-image: url("/static/images/biaoti_short@2x.png");
+    background-repeat: no-repeat;
+    background-size: auto 34px;
+    background-position: left bottom;
+    font-size: 26px;
+    color: white;
+    padding-left: 15%;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
+
+    & > .h-c-wrap {
+      vertical-align: top;
+    }
+  }
+
+  .content {
+    flex-grow: 1;
+    width: 100%;
+
+    & > div {
+      height: 100%;
+    }
+  }
+}
+</style>

+ 30 - 12
src/views/dashboard-screen/index.vue

@@ -1,17 +1,31 @@
 <template>
   <div class="dashboard-container">
-    <div class="header"></div>
+    <div class="header" />
     <div class="content-wrap">
       <div class="coner left">
         <div class="o-item map">
           1
         </div>
-        <div class="o-item">2</div>
-        <div class="o-item">3</div>
-        <div class="o-item">4</div>
-        <div class="o-item">5</div>
+        <div class="o-item">
+          <CardWrap>
+            <span slot="title">试验计划兑现情况</span>
+            <div slot="content">
+              <SyjhdxqkChart />
+            </div>
+          </CardWrap>
+        </div>
+        <div class="o-item">
+          <CardWrap />
+        </div>
+        <div class="o-item">
+          <CardWrap />
+
+        </div>
+        <div class="o-item">
+          <CardWrap />
+        </div>
       </div>
-      <div class="coner right"></div>
+      <div class="coner right" />
     </div>
 
   </div>
@@ -19,14 +33,18 @@
 
 <script>
 
+import CardWrap from '@/views/dashboard-screen/chard-wrap/card-wrap.vue'
+import SyjhdxqkChart from '@/views/dashboard-screen/syjhdxqk/index.vue'
+
 export default {
   name: 'Dashboard',
+  components: { CardWrap, SyjhdxqkChart },
   data() {
     return {}
   },
   watch: {
     $route: {
-      handler: function(route) {
+      handler: (route) => {
         this.redirect = route.query && route.query.redirect
       },
       immediate: true
@@ -42,6 +60,9 @@ export default {
 .dashboard-container {
   width: 100%;
   height: 100%;
+  min-height: 977px;
+  min-width: 1920px;
+  overflow-y: auto;
   display: flex;
   flex-direction: column;
   align-items: flex-start;
@@ -69,16 +90,13 @@ export default {
       &.left {
         flex-grow: 1;
         height: 100%;
-        background: teal;
         display: grid;
-        grid-template-rows: 4fr 1fr;
+        grid-template-rows: 2fr 1fr;
         grid-template-columns: 1fr 1fr 1fr 1fr;
         grid-auto-flow: row;
 
         .o-item {
-          font-size: 4em;
-          text-align: center;
-          border: 1px solid #e5e4e9;
+
           &.map {
             grid-column-start: 1;
             grid-column-end: 5;

+ 473 - 0
src/views/dashboard-screen/syjhdxqk/index.vue

@@ -0,0 +1,473 @@
+<template>
+  <div class="chart-wrap">
+    <v-chart autoresize :option="option"/>
+  </div>
+</template>
+
+<script>
+
+export default {
+  name: 'SyjhdxqkChart',
+  data() {
+    return {
+      option: {}
+    }
+  },
+  created() {
+    this.getOption()
+  },
+
+  methods: {
+    getOption() {
+      this.option = {
+        backgroundColor: '#03124500',
+        color: [
+          '#63caff',
+          '#49beff',
+          '#03387a',
+          '#03387a',
+          '#03387a',
+          '#6c93ee',
+          '#a9abff',
+          '#f7a23f',
+          '#27bae7',
+          '#ff6d9d',
+          '#cb79ff',
+          '#f95b5a',
+          '#ccaf27',
+          '#38b99c',
+          '#93d0ff',
+          '#bd74e0',
+          '#fd77da',
+          '#dea700'
+        ],
+        grid: {
+          containLabel: true,
+          left: 20,
+          right: 20,
+          bottom: 10,
+          top: 40
+        },
+        xAxis: {
+          axisLabel: {
+            color: '#c0c3cd',
+            fontSize: 14,
+            interval: 0
+          },
+          axisTick: {
+            lineStyle: {
+              color: '#384267'
+            },
+            show: true
+          },
+          splitLine: {
+            show: false
+          },
+          axisLine: {
+            lineStyle: {
+              color: '#384267',
+              width: 1,
+              type: 'dashed'
+            },
+            show: true
+          },
+          data: ['第一季度', '第二季度', '第三季度', '第四季度'],
+          type: 'category'
+        },
+        yAxis: {
+          axisLabel: {
+            color: '#c0c3cd',
+            fontSize: 14
+          },
+          axisTick: {
+            lineStyle: {
+              color: '#384267',
+              width: 1
+            },
+            show: true
+          },
+          splitLine: {
+            show: false,
+            lineStyle: {
+              color: '#384267',
+              type: 'dashed'
+            }
+          },
+          axisLine: {
+            lineStyle: {
+              color: '#384267',
+              width: 1,
+              type: 'dashed'
+            },
+            show: true
+          },
+          name: ''
+        },
+        series: [
+          {
+            data: [200, 85, 112, 275,],
+            type: 'bar',
+            barMaxWidth: 'auto',
+            barWidth: 30,
+            itemStyle: {
+              color: {
+                x: 0,
+                y: 0,
+                x2: 0,
+                y2: 1,
+                type: 'linear',
+                global: false,
+                colorStops: [
+                  {
+                    offset: 0,
+                    color: '#0b9eff'
+                  },
+                  {
+                    offset: 1,
+                    color: '#63caff'
+                  }
+                ]
+              }
+            },
+            label: {
+              show: true,
+              position: 'top',
+              distance: 10,
+              color: '#fff'
+            }
+          },
+          {
+            data: [1, 1, 1, 1, 1, 1, 1, 1],
+            type: 'pictorialBar',
+            barMaxWidth: '20',
+            symbol: 'diamond',
+            symbolOffset: [0, '50%'],
+            symbolSize: [30, 15]
+          },
+          {
+            data: [200, 85, 112, 275],
+            type: 'pictorialBar',
+            barMaxWidth: '20',
+            symbolPosition: 'end',
+            symbol: 'diamond',
+            symbolOffset: [0, '-50%'],
+            symbolSize: [30, 12],
+            zlevel: 2
+          },
+          {
+            data: [741, 741, 741, 741],
+            type: 'bar',
+            barMaxWidth: 'auto',
+            barWidth: 30,
+            barGap: '-100%',
+            zlevel: -1
+          },
+          {
+            data: [1, 1, 1, 1, 1, 1, 1, 1],
+            type: 'pictorialBar',
+            barMaxWidth: '20',
+            symbol: 'diamond',
+            symbolOffset: [0, '50%'],
+            symbolSize: [30, 15],
+            zlevel: -2
+          },
+          {
+            data: [741, 741, 741, 741],
+            type: 'pictorialBar',
+            barMaxWidth: '20',
+            symbolPosition: 'end',
+            symbol: 'diamond',
+            symbolOffset: [0, '-50%'],
+            symbolSize: [30, 12],
+            zlevel: -1
+          }
+        ],
+        tooltip: {
+          trigger: 'axis',
+          show: false
+        }
+      }
+
+      // const CubeLeft = echarts.graphic.extendShape({
+      //   shape: {
+      //     x: 0,
+      //     y: 0
+      //   },
+      //   buildPath: (ctx, shape) => {
+      //     const xAxisPoint = shape.xAxisPoint
+      //     const c0 = [shape.x, shape.y]
+      //     const c1 = [shape.x - 9, shape.y - 9]
+      //     const c2 = [xAxisPoint[0] - 9, xAxisPoint[1] - 9]
+      //     const c3 = [xAxisPoint[0], xAxisPoint[1]]
+      //     ctx.moveTo(c0[0], c0[1]).lineTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).closePath()
+      //   }
+      // })
+      // const CubeRight = echarts.graphic.extendShape({
+      //   shape: {
+      //     x: 0,
+      //     y: 0
+      //   },
+      //   buildPath: (ctx, shape) => {
+      //     const xAxisPoint = shape.xAxisPoint
+      //     const c1 = [shape.x, shape.y]
+      //     const c2 = [xAxisPoint[0], xAxisPoint[1]]
+      //     const c3 = [xAxisPoint[0] + 18, xAxisPoint[1] - 9]
+      //     const c4 = [shape.x + 18, shape.y - 9]
+      //     ctx.moveTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).lineTo(c4[0], c4[1]).closePath()
+      //   }
+      // })
+      // const CubeTop = echarts.graphic.extendShape({
+      //   shape: {
+      //     x: 0,
+      //     y: 0
+      //   },
+      //   buildPath: (ctx, shape) => {
+      //     const c1 = [shape.x, shape.y]
+      //     const c2 = [shape.x + 18, shape.y - 9]
+      //     const c3 = [shape.x + 9, shape.y - 18]
+      //     const c4 = [shape.x - 9, shape.y - 9]
+      //     ctx.moveTo(c1[0], c1[1]).lineTo(c2[0], c2[1]).lineTo(c3[0], c3[1]).lineTo(c4[0], c4[1]).closePath()
+      //   }
+      // })
+      // echarts.graphic.registerShape('CubeLeft', CubeLeft)
+      // echarts.graphic.registerShape('CubeRight', CubeRight)
+      // echarts.graphic.registerShape('CubeTop', CubeTop)
+      // const MAX = [100, 200, 300, 400]
+      // const VALUE = [2012, 1230, 3790, 2349]
+      // this.option = {
+      //   backgroundColor: '#012366',
+      //   title: {
+      //     text: '',
+      //     top: 32,
+      //     left: 18,
+      //     textStyle: {
+      //       color: '#00F6FF',
+      //       fontSize: 24
+      //     }
+      //   },
+      //   grid: {
+      //     left: 10,
+      //     right: 40,
+      //     bottom: '5%',
+      //     top: 20,
+      //     containLabel: true
+      //   },
+      //   xAxis: {
+      //     type: 'category',
+      //     data: ['第一季度', '第二季度', '第三季度', '第四季度'],
+      //     axisLine: {
+      //       show: true,
+      //       lineStyle: {
+      //         color: 'white'
+      //       }
+      //     },
+      //     offset: 0,
+      //     axisTick: {
+      //       show: false,
+      //       length: 9,
+      //       alignWithLabel: true,
+      //       lineStyle: {
+      //         color: '#7DFFFD'
+      //       }
+      //     },
+      //     axisLabel: {
+      //       fontSize: 12
+      //     }
+      //   },
+      //   yAxis: {
+      //     type: 'value',
+      //     axisLine: {
+      //       show: true,
+      //       lineStyle: {
+      //         color: 'white'
+      //       }
+      //     },
+      //     splitLine: {
+      //       show: false
+      //     },
+      //     axisTick: {
+      //       show: false
+      //     },
+      //     axisLabel: {
+      //       fontSize: 16
+      //     },
+      //     boundaryGap: ['20%', '20%']
+      //   },
+      //   series: [{
+      //     type: 'custom',
+      //     renderItem: (params, api) => {
+      //       const location = api.coord([api.value(0), api.value(1)])
+      //       return {
+      //         type: 'group',
+      //         children: [{
+      //           type: 'CubeLeft',
+      //           shape: {
+      //             api,
+      //             xValue: api.value(0),
+      //             yValue: api.value(1),
+      //             x: location[0],
+      //             y: location[1],
+      //             xAxisPoint: api.coord([api.value(0), 0])
+      //           },
+      //           style: {
+      //             fill: 'rgba(47,102,192,.27)'
+      //           }
+      //         }, {
+      //           type: 'CubeRight',
+      //           shape: {
+      //             api,
+      //             xValue: api.value(0),
+      //             yValue: api.value(1),
+      //             x: location[0],
+      //             y: location[1],
+      //             xAxisPoint: api.coord([api.value(0), 0])
+      //           },
+      //           style: {
+      //             fill: 'rgba(59,128,226,.27)'
+      //           }
+      //         }, {
+      //           type: 'CubeTop',
+      //           shape: {
+      //             api,
+      //             xValue: api.value(0),
+      //             yValue: api.value(1),
+      //             x: location[0],
+      //             y: location[1],
+      //             xAxisPoint: api.coord([api.value(0), 0])
+      //           },
+      //           style: {
+      //             fill: 'rgba(72,156,221,.27)'
+      //           }
+      //         }]
+      //       }
+      //     },
+      //     data: MAX
+      //   }, {
+      //     type: 'custom',
+      //     renderItem: (params, api) => {
+      //       const location = api.coord([api.value(0), api.value(1)])
+      //       return {
+      //         type: 'group',
+      //         children: [{
+      //           type: 'CubeLeft',
+      //           shape: {
+      //             api,
+      //             xValue: api.value(0),
+      //             yValue: api.value(1),
+      //             x: location[0],
+      //             y: location[1],
+      //             xAxisPoint: api.coord([api.value(0), 0])
+      //           },
+      //           style: {
+      //             fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+      //               offset: 0,
+      //               color: '#3B80E2'
+      //             },
+      //             {
+      //               offset: 1,
+      //               color: '#49BEE5'
+      //             }
+      //             ])
+      //           }
+      //         }, {
+      //           type: 'CubeRight',
+      //           shape: {
+      //             api,
+      //             xValue: api.value(0),
+      //             yValue: api.value(1),
+      //             x: location[0],
+      //             y: location[1],
+      //             xAxisPoint: api.coord([api.value(0), 0])
+      //           },
+      //           style: {
+      //             fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+      //               offset: 0,
+      //               color: '#3B80E2'
+      //             },
+      //             {
+      //               offset: 1,
+      //               color: '#49BEE5'
+      //             }
+      //             ])
+      //           }
+      //         }, {
+      //           type: 'CubeTop',
+      //           shape: {
+      //             api,
+      //             xValue: api.value(0),
+      //             yValue: api.value(1),
+      //             x: location[0],
+      //             y: location[1],
+      //             xAxisPoint: api.coord([api.value(0), 0])
+      //           },
+      //           style: {
+      //             fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+      //               offset: 0,
+      //               color: '#3B80E2'
+      //             },
+      //             {
+      //               offset: 1,
+      //               color: '#49BEE5'
+      //             }
+      //             ])
+      //           }
+      //         }]
+      //       }
+      //     },
+      //     data: VALUE
+      //   }, {
+      //     type: 'bar',
+      //     label: {
+      //       normal: {
+      //         show: true,
+      //         position: 'top',
+      //         formatter: (e) => {
+      //           switch (e.name) {
+      //             case '10kV线路':
+      //               return VALUE[0]
+      //             case '公用配变':
+      //               return VALUE[1]
+      //             case '35kV主变':
+      //               return VALUE[2]
+      //             case '水':
+      //           }
+      //         },
+      //         fontSize: 16,
+      //         color: '#fff',
+      //         offset: [4, -25]
+      //       }
+      //     },
+      //     itemStyle: {
+      //       color: 'transparent'
+      //     },
+      //     data: MAX
+      //   }]
+      // }
+    }
+  }
+
+}
+</script>
+
+<style scoped lang="scss">
+
+$xHeight: 120px;
+.chart-wrap {
+  width: 100%;
+  height: 100%;
+
+  .left-bar {
+    width: 35px;
+    display: inline-block;
+  }
+
+  .right-conent {
+    width: calc(100% - 35px);
+    height: 100%;
+    display: grid;
+    grid-template-columns: 1fr 1fr 1fr 1fr;
+    grid-template-rows: auto $xHeight;
+  }
+
+}
+</style>

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác