Bläddra i källkod

今日工单情况修改为当日工单趋势图

seimin 3 år sedan
förälder
incheckning
3339fffff3
4 ändrade filer med 107 tillägg och 106 borttagningar
  1. 1 1
      src/components/OnDutyToday.vue
  2. 100 99
      src/components/TodayWorkOrder.vue
  3. 5 5
      src/views/AppIndex.vue
  4. 1 1
      vue.config.js

+ 1 - 1
src/components/OnDutyToday.vue

@@ -2,7 +2,7 @@
2 2
   <div class="on-duty-today">
3 3
     <div class="on-duty-today__inner" :class="{marquee_top:animate}" :style="{transform:'translateY('+(2.7125*n)+'rem)'}">
4 4
       <div class="on-duty-today__list" v-for="(item1,i) in workList" :key="i">
5
-        <div class="on-duty-today__item" v-for="item2 in item1" :key="item2[2]">
5
+        <div class="on-duty-today__item" v-for="(item2,j) in item1" :key="j">
6 6
           <OnDutyTodayPie :workListItem="item2"></OnDutyTodayPie>
7 7
         </div>
8 8
       </div>

+ 100 - 99
src/components/TodayWorkOrder.vue

@@ -12,9 +12,11 @@ export default {
12 12
     return {
13 13
       timer: null,
14 14
       myChart: null,
15
-      todayWorkOrder: [], // 今日工单情况
16
-      todayGroupWorkOrderNum: [], // 今日工单情况,图表数据,数量
17
-      todayGroupWorkOrderName: []// 今日工单情况,图表数据,名称
15
+      todayWorkOrder: [], // 当日工单趋势图
16
+      todayGroupWorkOrderNum1: [], // 当日工单趋势图,图表数据,工单趋势
17
+      todayGroupWorkOrderNum2: [], // 当日工单趋势图,图表数据,执行中趋势
18
+      todayGroupWorkOrderNum3: [], // 当日工单趋势图,图表数据,超时工单趋势
19
+      todayGroupWorkOrderTimes: [] // 当日工单趋势图,图表数据,时间点
18 20
     }
19 21
   },
20 22
   methods: {
@@ -23,116 +25,111 @@ export default {
23 25
       this.myChart = echarts.init(this.$refs.TodayWorkOrder)
24 26
 
25 27
       const option = {
26
-        title: {
27
-          text: '已完成工单数(单)',
28
-          top: 10,
29
-          left: 15,
28
+        color: ['#49b856', '#c27073', '#c2ab70'],
29
+        legend: {
30
+          data: ['工单趋势', '执行中趋势', '超时工单趋势'],
30 31
           textStyle: {
31
-            color: '#d4d6d7',
32
-            fontSize: 12
32
+            color: '#d4d6d7', // 更改坐标轴文字颜色
33
+            fontSize: 12 // 更改坐标轴文字大小
33 34
           }
34 35
         },
35
-        grid: {
36
-          left: '5%',
37
-          top: '25%',
38
-          bottom: '20%',
39
-          right: '5%'
40
-        },
41
-        xAxis: {
42
-          data: this.todayGroupWorkOrderName,
43
-          axisTick: {
44
-            show: false
45
-          },
46
-          axisLine: {
47
-            lineStyle: {
48
-              color: '#709cc2'
49
-            }
50
-          },
51
-          axisLabel: {
52
-            textStyle: {
53
-              color: '#d4d6d7',
54
-              fontSize: 12
36
+        tooltip: {
37
+          trigger: 'axis',
38
+          axisPointer: {
39
+            type: 'cross',
40
+            label: {
41
+              backgroundColor: '#6a7985'
55 42
             }
56 43
           }
57 44
         },
58
-        yAxis: [
45
+        grid: {
46
+          left: '2%',
47
+          top: '13%',
48
+          bottom: '10%',
49
+          right: '2%',
50
+          containLabel: true
51
+        },
52
+        xAxis: [
59 53
           {
60
-            max: function (value) {
61
-              return value.max
62
-            },
63
-            splitNumber: 5,
64
-            minInterval: 1,
65
-            axisTick: {
66
-              show: false
54
+            type: 'category',
55
+            boundaryGap: false,
56
+            axisLabel: {
57
+              show: true,
58
+              textStyle: {
59
+                color: '#d4d6d7', // 更改坐标轴文字颜色
60
+                fontSize: 12 // 更改坐标轴文字大小
61
+              }
67 62
             },
68 63
             axisLine: {
69 64
               lineStyle: {
70
-                color: '#709cc2'
65
+                color: '#709cc2' // 更改坐标轴颜色
71 66
               }
72 67
             },
68
+            data: this.todayGroupWorkOrderTimes
69
+          }
70
+        ],
71
+        yAxis: [
72
+          {
73
+            max: function (value) {
74
+              return value.max
75
+            },
73 76
             axisLabel: {
77
+              show: true,
74 78
               textStyle: {
75
-                color: '#d4d6d7',
76
-                fontSize: 12
79
+                color: '#d4d6d7', // 更改坐标轴文字颜色
80
+                fontSize: 12 // 更改坐标轴文字大小
77 81
               }
78 82
             },
79
-            splitArea: {
80
-              areaStyle: {
81
-                color: 'rgba(255,255,255,.5)'
83
+            axisLine: {
84
+              lineStyle: {
85
+                color: '#709cc2' // 更改坐标轴颜色
82 86
               }
83 87
             },
84 88
             splitLine: {
85
-              show: true,
86
-              lineStyle: {
87
-                color: 'rgba(255, 255, 255, 0.1)',
88
-                type: 'dashed'
89
-              }
89
+              show: false
90 90
             }
91 91
           }
92 92
         ],
93 93
         series: [
94 94
           {
95
-            name: 'hill',
96
-            type: 'pictorialBar',
97
-            barCategoryGap: '0%',
98
-            barWidth: 122,
99
-            symbol:
100
-              'path://M0,10 L10,10 C5.5,10 5.5,5 5,0 C4.5,5 4.5,10 0,10 z',
101
-            label: {
102
-              show: true,
103
-              position: 'top',
104
-              distance: 0,
105
-              color: '#70c2ab',
106
-              fontWeight: 'bold',
107
-              fontSize: 12
95
+            name: '工单趋势',
96
+            smooth: true,
97
+            type: 'line',
98
+            // label: {
99
+            //   show: true,
100
+            //   position: 'top'
101
+            // },
102
+            areaStyle: {
103
+              color: '#49b856'
108 104
             },
109
-            itemStyle: {
110
-              normal: {
111
-                color: {
112
-                  type: 'linear',
113
-                  x: 0,
114
-                  y: 0,
115
-                  x2: 0,
116
-                  y2: 1,
117
-                  colorStops: [
118
-                    {
119
-                      offset: 0,
120
-                      color: 'rgba(112,194,130, .1)' //  0%  处的颜色
121
-                    },
122
-                    {
123
-                      offset: 1,
124
-                      color: 'rgba(112,194,130, .8)' //  100%  处的颜色
125
-                    }
126
-                  ],
127
-                  global: false //  缺省为  false
128
-                }
129
-              },
130
-              emphasis: {
131
-                opacity: 1
132
-              }
105
+            emphasis: {
106
+              focus: 'series'
107
+            },
108
+            data: this.todayGroupWorkOrderNum1
109
+          },
110
+          {
111
+            name: '执行中趋势',
112
+            smooth: true,
113
+            type: 'line',
114
+            areaStyle: {
115
+              color: '#c27073'
116
+            },
117
+            emphasis: {
118
+              focus: 'series'
133 119
             },
134
-            data: this.todayGroupWorkOrderNum,
135
-            z: 10
120
+            data: this.todayGroupWorkOrderNum2
121
+          },
122
+          {
123
+            name: '超时工单趋势',
124
+            smooth: true,
125
+            type: 'line',
126
+            areaStyle: {
127
+              color: '#c2ab70'
128
+            },
129
+            emphasis: {
130
+              focus: 'series'
131
+            },
132
+            data: this.todayGroupWorkOrderNum3
136 133
           }
137 134
         ]
138 135
       }
@@ -140,24 +137,28 @@ export default {
140 137
     },
141 138
     // 获取数据
142 139
     async getData () {
140
+      const srartTime = this.$moment().format('YYYY-MM-DD') // 今天
141
+      const endTime = this.$moment().format('YYYY-MM-DD') // 今天
143 142
       const result = await post(
144
-        `/largeScreen/getData/todayWorkOrder/${this.hospitalId}`
143
+        `/largeScreen/getData/getTendencyList/${this.hospitalId}`,
144
+        { srartTime, endTime }
145 145
       )
146 146
       this.todayWorkOrder = []
147
-      this.todayGroupWorkOrderNum = []
148
-      this.todayGroupWorkOrderName = []
147
+      this.todayGroupWorkOrderNum1 = []
148
+      this.todayGroupWorkOrderNum2 = []
149
+      this.todayGroupWorkOrderNum3 = []
150
+      this.todayGroupWorkOrderTimes = []
149 151
       this.todayWorkOrder = result.todayWorkOrder[0]
150 152
       this.$emit('todayWorkOrderHandle', JSON.stringify(this.todayWorkOrder))
151
-      // if (result.todayGroupWorkOrder.length > 0) {
152
-      if (result.todayGroupWorkOrder.length > 5) {
153
-        result.todayGroupWorkOrder = result.todayGroupWorkOrder.slice(0, 5)
154
-      }
155
-      result.todayGroupWorkOrder.forEach(item => {
156
-        this.todayGroupWorkOrderNum.push(item[2]) // 获取到的数据
157
-        this.todayGroupWorkOrderName.push(item[1]) // 获取到的名称
153
+      result.list.forEach(item => {
154
+        this.todayGroupWorkOrderTimes.push(
155
+          this.$moment(item[0]).format('HH') + ':00'
156
+        ) // 获取到的数据,时间点
157
+        this.todayGroupWorkOrderNum1.push(item[1]) // 获取到的数据,工单趋势
158
+        this.todayGroupWorkOrderNum2.push(item[2]) // 获取到的数据,执行中趋势
159
+        this.todayGroupWorkOrderNum3.push(item[3]) // 获取到的数据,超时工单趋势
158 160
       })
159 161
       this.draw()
160
-      // }
161 162
       this.polling()
162 163
     },
163 164
     // 轮询请求
@@ -178,7 +179,7 @@ export default {
178 179
 </script>
179 180
 
180 181
 <style lang="less">
181
-.today-work-order{
182
+.today-work-order {
182 183
   height: 2.3875rem;
183 184
   margin: 0 auto;
184 185
 }

+ 5 - 5
src/views/AppIndex.vue

@@ -34,10 +34,10 @@
34 34
               </h2>
35 35
               <OnDutyToday @todayBeOnDutyHandle="todayBeOnDutyHandle"></OnDutyToday>
36 36
             </div>
37
-            <!-- 今日工单情况 -->
37
+            <!-- 当日工单趋势图 -->
38 38
             <div class="app-item">
39 39
               <h2 class="app-item__header app-item__header--big">
40
-                今日工单情况
40
+                当日工单趋势图
41 41
                 <ul class="app-item__headerData">
42 42
                   <li class="app-item__headerDataItem">执行中<em>{{todayWorkOrder[0]}}</em></li>
43 43
                   <li class="app-item__headerDataItem">已超时<em>{{todayWorkOrder[1]}}</em></li>
@@ -110,7 +110,7 @@ export default {
110 110
     GroupPraise, // 近三十天各小组好评率排行榜
111 111
     GroupPerformance, // 近三十天各小组完成以及异常工单数
112 112
     OnDutyToday, // 今日当班情况
113
-    TodayWorkOrder, // 今日工单情况
113
+    TodayWorkOrder, // 当日工单趋势图
114 114
     PointsRanking, // 今日积分前三人员
115 115
     BusinessTypeRatio, // 近三十天各业务类型占比
116 116
     ErrorWorkOrder, // 今日工单异常情况
@@ -121,7 +121,7 @@ export default {
121 121
   data () {
122 122
     return {
123 123
       todayBeOnDuty: [], // 今日当班情况
124
-      todayWorkOrder: [], // 今日工单情况
124
+      todayWorkOrder: [], // 当日工单趋势图
125 125
       todayAbnormityWorkOrder: [], // 今日工单异常情况
126 126
       dictionary: [], // 近三十天各类型工单按时送达率趋势
127 127
       currentDictionary: -1// 近三十天各类型工单按时送达率趋势(id)
@@ -132,7 +132,7 @@ export default {
132 132
     todayBeOnDutyHandle (value) {
133 133
       this.todayBeOnDuty = JSON.parse(value)
134 134
     },
135
-    // 今日工单情况
135
+    // 当日工单趋势图
136 136
     todayWorkOrderHandle (value) {
137 137
       this.todayWorkOrder = JSON.parse(value)
138 138
     },

+ 1 - 1
vue.config.js

@@ -10,7 +10,7 @@ module.exports = {
10 10
     hotOnly: false, // 是否开启热更新
11 11
     proxy: {
12 12
       '/service': {
13
-        target: 'http://192.168.3.87', // API服务器的地址
13
+        target: 'http://192.168.3.108', // API服务器的地址
14 14
         ws: true, // 代理websockets
15 15
         changeOrigin: true, // 虚拟的站点需要更管origin
16 16
         pathRewrite: {