system-phone 3.1.1 → 3.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/.gradle/buildOutputCleanup/cache.properties +2 -2
  2. package/SystemPhone.iml +8 -8
  3. package/build/dev-server.js +141 -141
  4. package/build/webpack.base.conf.js +82 -82
  5. package/build.gradle +27 -27
  6. package/gradle/wrapper/gradle-wrapper.properties +5 -5
  7. package/gradlew +183 -183
  8. package/gradlew.bat +100 -100
  9. package/index.html +21 -21
  10. package/package.json +1 -1
  11. package/src/App.vue +25 -25
  12. package/src/Util.js +415 -415
  13. package/src/assets//346/215/242/350/241/250/347/273/264/344/277/256.png +0 -0
  14. package/src/assets//351/200/232/347/224/250/350/203/214/346/231/257/345/233/276.png +0 -0
  15. package/src/components/AloneLoadParams.vue +26 -26
  16. package/src/components/AlreadyService.vue +193 -193
  17. package/src/components/AttendManage.vue +534 -534
  18. package/src/components/LoadAppdata.vue +38 -38
  19. package/src/components/LoginApp.vue +732 -732
  20. package/src/components/LoginAppNew.vue +587 -587
  21. package/src/components/LoginAppV4.vue +716 -716
  22. package/src/components/ModifyPassWord.vue +216 -216
  23. package/src/components/NavBottom.vue +117 -117
  24. package/src/components/NavBottomV.vue +141 -141
  25. package/src/components/NavBottomVVV.vue +185 -185
  26. package/src/components/OnlineManage.vue +256 -256
  27. package/src/components/PhoneAllInfo.vue +68 -68
  28. package/src/components/PhoneChangemeterInfo.vue +116 -116
  29. package/src/components/PhoneImageInfo.vue +102 -102
  30. package/src/components/PhoneInfoTable.vue +39 -39
  31. package/src/components/PhoneMeterInfo.vue +132 -132
  32. package/src/components/PhoneRepairInfo.vue +146 -146
  33. package/src/components/PhoneSafeInfo.vue +101 -101
  34. package/src/components/PhoneSellInfo.vue +148 -148
  35. package/src/components/PhoneSellInfoLite.vue +112 -112
  36. package/src/components/PhoneUser.vue +202 -202
  37. package/src/components/PhoneUserDetil.vue +70 -70
  38. package/src/components/PhoneUserFind.vue +138 -138
  39. package/src/components/RightTree.vue +217 -217
  40. package/src/components/SystemSetUp.vue +332 -332
  41. package/src/components/TabBarPhone.vue +81 -81
  42. package/src/components/Test.vue +14 -14
  43. package/src/components/ToolsPage.vue +199 -199
  44. package/src/components/UploadManage.vue +194 -194
  45. package/src/components/gaomi/NavBottomV.vue +223 -223
  46. package/src/components/gaomi/NavBottomVVVV.vue +210 -210
  47. package/src/components/gaomi/Scroller.vue +63 -63
  48. package/src/components/gaomi/SystemSetUp.vue +186 -186
  49. package/src/components/gaomi/ToolsPage.vue +168 -168
  50. package/src/components/idea/feedBack.vue +150 -150
  51. package/src/components/idea/feedbackAdd.vue +366 -366
  52. package/src/components/info/ConfigInfo.vue +122 -122
  53. package/src/components/info/FindUserInfo.vue +157 -157
  54. package/src/components/info/InfoTable.vue +37 -37
  55. package/src/components/iot/InstructMessage.vue +313 -313
  56. package/src/components/iot/IotBaseInfo.vue +97 -97
  57. package/src/components/iot/IotMeterInfo.vue +77 -77
  58. package/src/components/iot/iotMonitoringMain.vue +501 -501
  59. package/src/components/online/ApplyOnline.vue +581 -581
  60. package/src/components/online/BJZhongRan/ApplyOnline.vue +600 -600
  61. package/src/components/screen/ChargeContentPage.vue +656 -656
  62. package/src/components/screen/ContentPage.vue +611 -611
  63. package/src/components/screen/GongdanContentPage.vue +149 -149
  64. package/src/components/screen/ListCountItem.vue +93 -93
  65. package/src/components/screen/ModuleTitle.vue +48 -48
  66. package/src/components/screen/SafeOrderContentPage.vue +440 -440
  67. package/src/components/screen/SecurityCheckItem.vue +50 -50
  68. package/src/components/screen/TotalItem.vue +76 -76
  69. package/src/components/screen/TotalUserNumber.vue +77 -77
  70. package/src/components/screen/WorkOrderItem.vue +51 -51
  71. package/src/components/screen/WorkOrderRightDownItem.vue +103 -103
  72. package/src/components/screen/WorkOrderRightItem.vue +115 -115
  73. package/src/components/userinfo/paymentQuery.vue +189 -189
  74. package/src/components/userinfo/queryFile.vue +190 -190
  75. package/src/components/wasm.vue +18 -18
  76. package/src/expandcssAndroid.less +521 -521
  77. package/src/filiale/liaoyuan/NavBottomVVV.vue +186 -0
  78. package/src/filiale/liaoyuan/ToolsPage.vue +199 -0
  79. package/src/filiale/liaoyuan/systemphonegrid.js +5 -0
  80. package/src/filiale/yulinyuchuan/AlreadyService.vue +194 -194
  81. package/src/filiale/yulinyuchuan/AttendManage.vue +537 -537
  82. package/src/filiale/yulinyuchuan/LoginApp.vue +741 -741
  83. package/src/filiale/yulinyuchuan/OnlineManage.vue +256 -256
  84. package/src/filiale/yulinyuchuan/SystemSetUp.vue +332 -332
  85. package/src/filiale/yulinyuchuan/UploadManage.vue +195 -195
  86. package/src/filiale/yulinyuchuan/systemphonegrid.js +9 -9
  87. package/src/filiale/yulinyuchuanTY/AlreadyService.vue +194 -0
  88. package/src/filiale/yulinyuchuanTY/AttendManage.vue +537 -0
  89. package/src/filiale/yulinyuchuanTY/LoginApp.vue +741 -0
  90. package/src/filiale/yulinyuchuanTY/OnlineManage.vue +256 -0
  91. package/src/filiale/yulinyuchuanTY/SystemSetUp.vue +332 -0
  92. package/src/filiale/yulinyuchuanTY/UploadManage.vue +195 -0
  93. package/src/filiale/yulinyuchuanTY/systemphonegrid.js +9 -0
  94. package/src/index.js +9 -9
  95. package/src/main.js +38 -38
  96. package/src/plugins/const.js +404 -404
  97. package/src/plugins/vue-py.js +37 -37
  98. package/src/stores/AppData.js +79 -79
  99. package/src/systemphone-gaomi.js +105 -105
  100. package/src/systemphone.js +60 -60
  101. package/src/systemphonegrid.js +185 -185
  102. package/src/util/LdapHelper.js +75 -75
  103. package/static/const.js +404 -404
  104. package/static/layui/font/iconfont.svg +554 -554
  105. package/static/vue-py.js +37 -37
  106. package/static/wasm_exec.js +465 -465
@@ -1,656 +1,656 @@
1
- <template>
2
- <div>
3
- <div class="layui-container" style="background-color: darkblue;height: 100%;padding-top: 10px" >
4
- <div class="layui-row" style="height: 10%;background-color: darkblue;">
5
- <total-item
6
- :text="totalData[0].text"
7
- :charge-total-icon="imgChargeTotal1"
8
- :number-color="totalNumberColor[0]"
9
- :number="totalData[0].number"
10
- ></total-item>
11
- </div>
12
- <div class="layui-row" style="height: 10%;background-color: darkblue;">
13
- <total-item
14
- :text="totalData[1].text"
15
- :charge-total-icon="imgChargeTotal2"
16
- :number-color="totalNumberColor[1]"
17
- :number="totalData[1].number"
18
- ></total-item>
19
- </div>
20
- <div class="layui-row" style="height: 10%;background-color: darkblue;">
21
- <total-item
22
- :text="totalData[2].text"
23
- :charge-total-icon="imgChargeTotal3"
24
- :number-color="totalNumberColor[2]"
25
- :number="totalData[2].number"
26
- ></total-item>
27
- </div>
28
- <div class="layui-row" style="height: 5%;background-color: darkblue;margin-top: 10px">
29
- <module-title :font="countFont"></module-title>
30
- </div>
31
- <div class="layui-row" style="height: 50%;background-color: darkblue;margin-top: 10px">
32
- <div class="count-data-list">
33
- <div class="list-item" v-for="(index, item) in countData" style="height: 20%">
34
- <list-count-item
35
- :text="item.text"
36
- :count="item.count"
37
- :percentage="item.percentage"
38
- :bar-color="countColor[index]"
39
- >
40
- </list-count-item>
41
- </div>
42
- </div>
43
- </div>
44
-
45
- <!-- <div class="layui-row" style="height: 5%;background-color: darkblue;margin-top: 10px">-->
46
- <!-- <module-title-->
47
- <!-- :module-tile-icon="chargeGasAnalysisIcon"-->
48
- <!-- :title="chargeGasAnalysisTitle2"-->
49
- <!-- :font="chargeGasAnalysisFont"-->
50
- <!-- >-->
51
- <!-- </module-title>-->
52
- <!-- </div>-->
53
-
54
-
55
- <!-- <div class="layui-row" style="height: 5%;background-color: darkblue;margin-top: 10px">-->
56
- <!-- <div class="chart" id="saleGasAnalysys2"></div>-->
57
- <!-- </div>-->
58
- </div>
59
- <div class="layui-container" style="height: 100%;background-color: darkblue;margin-top: -10px"
60
- >
61
- <div class="layui-row" style="height: 5%;background-color: darkblue;margin-top: 10px">
62
- <module-title
63
- :module-tile-icon="chargeGasAnalysisIcon"
64
- :title="chargeGasAnalysisTitle1"
65
- :font="chargeGasAnalysisFont"
66
- >
67
- </module-title>
68
- </div>
69
- <div class="layui-row" style="height: 50%;background-color: darkblue;margin-top: 10px">
70
- <div class="chart" id="saleGasAnalysys1" style="background-color: darkblue"></div>
71
- </div>
72
-
73
-
74
- </div>
75
- <div class="layui-container" style="background-color: darkblue;height: 100%;padding-top: 10px" >
76
- <div class="layui-row" style="height: 5%;background-color: darkblue;margin-top: 10px">
77
- <module-title :module-tile-icon="otherBusinessIcon"
78
- :title="otherBusinessTitle" :font="otherBusinessFont"></module-title>
79
- </div>
80
- <div class="layui-row" style="height: 50%;background-color: darkblue">
81
- <div class="chart" id="saleGasAnalysys2" style="background-color: darkblue;height: 180%"></div>
82
- </div>
83
- </div>
84
- </div>
85
- </template>
86
- <script>
87
- import * as echarts from 'echarts';
88
- export default {
89
- title:"ChargeContentPage",
90
- data(){
91
- return {
92
- otherBusinessIcon:require('src/assets/images/收费其他业务.png'),
93
- otherBusinessTitle:'今日其他业务占比',
94
- otherBusinessFont:5,
95
- oterBusinessData:[
96
- {
97
- name: "开户",
98
- value: 1232,
99
- },
100
- {
101
- name: "补换折(卡)",
102
- value: 754,
103
- },
104
- {
105
- name: "换表清零",
106
- value: 611,
107
- },
108
- {
109
- name: "增容",
110
- value: 400,
111
- },
112
- {
113
- name: "销户",
114
- value: 200,
115
- },
116
- {
117
- name: "其他",
118
- value: 466,
119
- },
120
- ],
121
-
122
- leftChartSaleAmountData: [
123
- 1800, 2300, 1600, 1100, 600, 900, 1500, 500, 560, 700, 800, 1300,
124
- ], //物联网表民用用气
125
- leftChartNSaleAmountData: [
126
- 180, 1500, 900, 1300, 800, 350, 1200, 560, 120, 1300, 1452, 1700,
127
- ], //物联网表非民用用气
128
- tongBi: [24, 30, 20, 12, 90, 43, 19, 0, 0, 13, 60, 50], //同比
129
- huanBi: [24, 16, 37, 66, 28, 75, 60, 80, 30, 65, 56, 79], //环比
130
- monthData: [
131
- "1月",
132
- "2月",
133
- "3月",
134
- "4月",
135
- "5月",
136
- "6月",
137
- "7月",
138
- "8月",
139
- "9月",
140
- "10月",
141
- "11月",
142
- "12月",
143
- ],
144
- chargeGasAnalysisIcon: require("src/assets/images/收费售气量分析.png"),
145
- chargeGasAnalysisTitle1: "售气量分析",
146
- chargeGasAnalysisTitle2: "售气量分析(7-12月)",
147
- chargeGasAnalysisFont: 5,
148
- countColor: [
149
- "#EE7A2F",
150
- "#19FBAE",
151
- "#F7DC3D",
152
- "#FFA327",
153
- "#29fb49",
154
- "#EE7A2F",
155
- "#EE7A2F",
156
- ],
157
- countData: [
158
- {
159
- text: "物联网表收费",
160
- count: 12210,
161
- percentage: "54%",
162
- barColor: "#EE7A2F",
163
- },
164
- {
165
- text: "金额卡表收费",
166
- count: 8451,
167
- percentage: "18%",
168
- barColor: "#19FBAE",
169
- },
170
- {
171
- text: "气量卡表收费",
172
- count: 6358,
173
- percentage: "12%",
174
- barColor: "#F7DC3D",
175
- },
176
- {
177
- text: "机表收费",
178
- count: 4107,
179
- percentage: "9%",
180
- barColor: "#FFA327",
181
- },
182
- {
183
- text: "超用收费",
184
- count: 3318,
185
- percentage: "7%",
186
- barColor: "#29fb49",
187
- },
188
- ],
189
- countFont:5,
190
- imgChargeTotal1: require("src/assets/images/收费total1.png"),
191
- imgChargeTotal2: require("src/assets/images/收费total2.png"),
192
- imgChargeTotal3: require("src/assets/images/收费total3.png"),
193
- totalNumberColor: ["#FFAC41", "#F7DC3D", "#00FFDE"],
194
- totalData: [
195
- { number: 1245137, text: "今日售气量" },
196
- { number: 124513, text: "今日售气笔数" },
197
- { number: 1000013, text: "今日售气金额" },
198
- ],
199
-
200
- }
201
- },
202
- ready(){
203
- this.myLeftChart3()
204
- this.otherBusineeChart()
205
- },
206
- methods:{
207
- otherBusineeChart(){
208
- let mychart = echarts.init(document.getElementById('saleGasAnalysys2'));
209
- let data = JSON.parse(JSON.stringify(this.oterBusinessData));
210
- let arrName = getArrayValue(data, "name");
211
- let arrValue = getArrayValue(data, "value");
212
- let sumValue = eval(arrValue.join("+"));
213
- let objData = array2obj(data, "name");
214
- let percentage = getArrPercentage(data,"name")
215
- let optionData = getData(data);
216
- function getArrayValue(array, key) {
217
- var key = key || "value";
218
- var res = [];
219
- if (array) {
220
- array.forEach(function (t) {
221
- res.push(t[key]);
222
- });
223
- }
224
- return res;
225
- }
226
-
227
- function array2obj(array, key) {
228
- var resObj = {};
229
- for (var i = 0; i < array.length; i++) {
230
- resObj[array[i][key]] = array[i];
231
- }
232
- return resObj;
233
- }
234
- function getArrPercentage(arr,key) {
235
- let percentageObj = {}
236
- for(let i=0;i<data.length;i++){
237
- percentageObj[arr[i][key]] = ((data[i].value / sumValue) * 100).toFixed(2) + "%"
238
- }
239
- return percentageObj
240
- }
241
- function getData(data) {
242
- var res = {
243
- series: [],
244
- yAxis: [],
245
- };
246
- for (let i = 0; i < data.length; i++) {
247
- // console.log([70 - i * 15 + '%', 67 - i * 15 + '%']);
248
- res.series.push({
249
- name: "",
250
- type: "pie",
251
- clockWise: false, //顺时加载
252
- hoverAnimation: false, //鼠标移入变大
253
- radius: [78 - i * 13 + "%", 85 - i * 13 + "%"],
254
- center: ["50%", "30%"],
255
- label: {
256
- show: false,
257
- },
258
- itemStyle: {
259
- label: {
260
- show: false,
261
- },
262
- labelLine: {
263
- show: false,
264
- },
265
- borderWidth: 5,
266
- },
267
- data: [
268
- {
269
- value: data[i].value,
270
- name: data[i].name,
271
- },
272
- {
273
- value: sumValue - data[i].value,
274
- name: "",
275
- itemStyle: {
276
- color: "rgba(0,0,0,0)",
277
- borderWidth: 0,
278
- },
279
- tooltip: {
280
- show: false,
281
- },
282
- hoverAnimation: false,
283
- },
284
- ],
285
- });
286
- res.series.push({
287
- name: "",
288
- type: "pie",
289
- silent: true,
290
- z: 1,
291
- clockWise: false, //顺时加载
292
- hoverAnimation: false, //鼠标移入变大
293
- radius: [78 - i * 13 + "%", 85 - i * 13 + "%"],
294
- center: ["50%", "30%"],
295
- label: {
296
- show: false,
297
- },
298
- itemStyle: {
299
- label: {
300
- show: false,
301
- },
302
- labelLine: {
303
- show: false,
304
- },
305
- borderWidth: 5,
306
- },
307
- data: [
308
- {
309
- value: 7.5,
310
- itemStyle: {
311
- color: "rgb(0, 28, 124)",
312
- borderWidth: 0,
313
- },
314
- tooltip: {
315
- show: false,
316
- },
317
- hoverAnimation: false,
318
- },
319
- {
320
- value: 2.5,
321
- name: "",
322
- itemStyle: {
323
- color: "rgb(0, 28, 124)",
324
- borderWidth: 0,
325
- },
326
- tooltip: {
327
- show: false,
328
- },
329
- hoverAnimation: false,
330
- },
331
- ],
332
- });
333
- // res.yAxis.push(((data[i].value / sumValue) * 100).toFixed(2) + "%");
334
- }
335
- return res;
336
- }
337
-
338
- let option = {
339
- // backgroundColor: "#000",
340
- legend: {
341
- show: true,
342
- icon: "circle",
343
- top: "60%",
344
- left: "5%",
345
- data: arrName,
346
- width: 50,
347
- padding: [0, 10],
348
- itemGap: 19,
349
- formatter: function (name) {
350
- return (
351
- "{title|" + name + "} {value|" + objData[name].value + "} {title|" + percentage[name] + "}"
352
- );
353
- },
354
-
355
- textStyle: {
356
- rich: {
357
- title: {
358
- fontSize: 14,
359
- lineHeight: 15,
360
- color: "#B2B0CB",
361
- width: 120
362
- },
363
- value: {
364
- fontSize: 14,
365
- lineHeight: 15,
366
- color: "#B2B0CB",
367
- width: 80
368
- },
369
- },
370
- },
371
- },
372
- // tooltip: {
373
- // show: true,
374
- // trigger: "item",
375
- // formatter: "{a}<br>{b}:{c}({d}%)",
376
- // },
377
- color: [
378
- "rgb(238, 122, 47)",
379
- "rgb(0, 228, 196)",
380
- "rgb(13, 126, 254)",
381
- "rgb(247, 219, 53)",
382
- "rgb(101, 223, 127)",
383
- "rgb(255, 125, 125)"
384
- ],
385
- grid: {
386
- top: "11%",
387
- bottom: "60%",
388
- left: "20%",
389
- containLabel: false,
390
- },
391
- yAxis: [
392
- {
393
- type: "category",
394
- inverse: true,
395
- axisLine: {
396
- show: false,
397
- },
398
- axisTick: {
399
- show: false,
400
- },
401
- axisLabel: {
402
- interval: 0,
403
- inside: true,
404
- textStyle: {
405
- color: "#fff",
406
- fontSize: 13,
407
- },
408
- show: true,
409
- },
410
- data: optionData.yAxis,
411
- },
412
- ],
413
- xAxis: [
414
- {
415
- show: false,
416
- },
417
- ],
418
- series: optionData.series,
419
- };
420
- mychart.setOption(option);
421
- window.addEventListener("resize", function() {
422
- mychart.resize();
423
- });
424
-
425
- },
426
- myLeftChart3() {
427
- let mychart = echarts.init(document.getElementById('saleGasAnalysys1'));
428
-
429
- // 2. 指定配置和数据
430
- let option = {
431
- title: {
432
- show: true,
433
- text: "万m³",
434
- textStyle: {
435
- color: "rgba(255,255,255,.6)",
436
- fontSize: 14,
437
- },
438
- left: 0,
439
- top: 12,
440
- },
441
- color: [
442
- new echarts.graphic.LinearGradient(
443
- 0,
444
- 0,
445
- 0,
446
- 1,
447
- [
448
- {
449
- offset: 0.37,
450
- color: "rgba(0,255,255,0.9)",
451
- },
452
- {
453
- offset: 1,
454
- color: "rgba(3,6,114,0.1)",
455
- },
456
- ],
457
- false
458
- ),
459
- new echarts.graphic.LinearGradient(
460
- 0,
461
- 0,
462
- 0,
463
- 1,
464
- [
465
- {
466
- offset: 0.37,
467
- color: "rgba(1,245,152,0.9)",
468
- },
469
- {
470
- offset: 1,
471
- color: "rgba(3,6,114,0.1)",
472
- },
473
- ],
474
- false
475
- ),
476
- ],
477
-
478
- tooltip: {
479
- // 通过坐标轴来触发
480
- trigger: "axis",
481
- axisPointer: {
482
- type: "cross",
483
- crossStyle: {
484
- color: "#999",
485
- },
486
- },
487
- formatter: function (params) {
488
- let relVal = params[0].name;
489
- for (let i = 0, l = params.length; i < l; i++) {
490
- if (
491
- params[i].seriesName === "同比" ||
492
- params[i].seriesName === "环比"
493
- ) {
494
- relVal +=
495
- "<br/>" +
496
- params[i].seriesName +
497
- " : " +
498
- params[i].value +
499
- "%";
500
- } else {
501
- relVal +=
502
- "<br/>" + params[i].seriesName + " : " + params[i].value;
503
- }
504
- }
505
- return relVal;
506
- },
507
- },
508
- legend: {
509
- // 距离容器10%
510
- right: "30%",
511
- // 修饰图例文字的颜色
512
- textStyle: {
513
- color: "#4c9bfd",
514
- },
515
- itemGap: 30,
516
- // 如果series 里面设置了name,此时图例组件的data可以省略
517
- // data: ["邮件营销", "联盟广告"]
518
- },
519
- grid: {
520
- top: "18%",
521
- left: "0",
522
- right: "4%",
523
- bottom: "3%",
524
- show: true,
525
- borderColor: "#012f4a",
526
- containLabel: true,
527
- },
528
-
529
- xAxis: {
530
- type: "category",
531
- boundaryGap: true,
532
- data: this.monthData,
533
- // 去除刻度
534
- axisTick: {
535
- show: false,
536
- },
537
- // 修饰刻度标签的颜色
538
- axisLabel: {
539
- color: "rgba(255,255,255,.7)",
540
- },
541
- // 去除x坐标轴的颜色
542
- axisLine: {
543
- show: false,
544
- },
545
- },
546
- yAxis: [
547
- {
548
- type: "value",
549
- // interval: 500,
550
- // max: 3500,
551
- // 去除刻度
552
- axisTick: {
553
- show: false,
554
- },
555
- // 修饰刻度标签的颜色
556
- axisLabel: {
557
- color: "rgba(255,255,255,.7)",
558
- },
559
- // 修改y轴分割线的颜色
560
- splitLine: {
561
- lineStyle: {
562
- color: "#012f4a",
563
- },
564
- },
565
- },
566
- {
567
- name: "万m³",
568
- type: "value",
569
- nameTextStyle: {
570
- color: "rgba(255,255,255,.7)",
571
- },
572
- // nameGap: 12,
573
- // interval: 30,
574
- // min: -90,
575
- // 去除刻度
576
- axisTick: {
577
- show: false,
578
- },
579
- // 修饰刻度标签的颜色
580
- axisLabel: {
581
- color: "rgba(255,255,255,.7)",
582
- },
583
- // 修改y轴分割线的颜色
584
- splitLine: {
585
- show: false,
586
- lineStyle: {
587
- color: "#012f4a",
588
- },
589
- },
590
- },
591
- ],
592
- series: [
593
- {
594
- name: "民用",
595
- type: "bar",
596
- barWidth: "15%",
597
- barGap: 0,
598
- emphasis: {
599
- focus: "series",
600
- },
601
- data: JSON.parse(JSON.stringify(this.leftChartSaleAmountData)),
602
- },
603
- {
604
- name: "非民用",
605
- type: "bar",
606
- barWidth: "15%",
607
- barGap: "40%",
608
- data: JSON.parse(JSON.stringify(this.leftChartNSaleAmountData)),
609
- },
610
- {
611
- name: "同比",
612
- type: "line",
613
- stack: "总量",
614
- // 是否让线条圆滑显示
615
- smooth: true,
616
- lineStyle: {
617
- color: "rgba(193,162,81,.9)",
618
- type: "dotted",
619
- width: 3,
620
- join: "miter",
621
- miterLimit: 40,
622
- },
623
- showSymbol: false,
624
- yAxisIndex: 1,
625
- data: JSON.parse(JSON.stringify(this.tongBi)),
626
- },
627
- {
628
- name: "环比",
629
- type: "line",
630
- stack: "总量",
631
- lineStyle: {
632
- color: "rgba(0,212,139,.9)",
633
- },
634
- smooth: true,
635
- showSymbol: false, //取消折线的衔接点
636
- yAxisIndex: 1,
637
- data: JSON.parse(JSON.stringify(this.huanBi)),
638
- },
639
- ],
640
- };
641
- // 3. 把配置和数据给实例对象
642
- mychart.setOption(option);
643
- window.addEventListener("resize", function () {
644
- mychart.resize();
645
- });
646
- },
647
- }
648
- }
649
- </script>
650
- <style lang="less">
651
- #saleGasAnalysys1{
652
- div{
653
- height: 0%;
654
- }
655
- }
656
- </style>
1
+ <template>
2
+ <div>
3
+ <div class="layui-container" style="background-color: darkblue;height: 100%;padding-top: 10px" >
4
+ <div class="layui-row" style="height: 10%;background-color: darkblue;">
5
+ <total-item
6
+ :text="totalData[0].text"
7
+ :charge-total-icon="imgChargeTotal1"
8
+ :number-color="totalNumberColor[0]"
9
+ :number="totalData[0].number"
10
+ ></total-item>
11
+ </div>
12
+ <div class="layui-row" style="height: 10%;background-color: darkblue;">
13
+ <total-item
14
+ :text="totalData[1].text"
15
+ :charge-total-icon="imgChargeTotal2"
16
+ :number-color="totalNumberColor[1]"
17
+ :number="totalData[1].number"
18
+ ></total-item>
19
+ </div>
20
+ <div class="layui-row" style="height: 10%;background-color: darkblue;">
21
+ <total-item
22
+ :text="totalData[2].text"
23
+ :charge-total-icon="imgChargeTotal3"
24
+ :number-color="totalNumberColor[2]"
25
+ :number="totalData[2].number"
26
+ ></total-item>
27
+ </div>
28
+ <div class="layui-row" style="height: 5%;background-color: darkblue;margin-top: 10px">
29
+ <module-title :font="countFont"></module-title>
30
+ </div>
31
+ <div class="layui-row" style="height: 50%;background-color: darkblue;margin-top: 10px">
32
+ <div class="count-data-list">
33
+ <div class="list-item" v-for="(index, item) in countData" style="height: 20%">
34
+ <list-count-item
35
+ :text="item.text"
36
+ :count="item.count"
37
+ :percentage="item.percentage"
38
+ :bar-color="countColor[index]"
39
+ >
40
+ </list-count-item>
41
+ </div>
42
+ </div>
43
+ </div>
44
+
45
+ <!-- <div class="layui-row" style="height: 5%;background-color: darkblue;margin-top: 10px">-->
46
+ <!-- <module-title-->
47
+ <!-- :module-tile-icon="chargeGasAnalysisIcon"-->
48
+ <!-- :title="chargeGasAnalysisTitle2"-->
49
+ <!-- :font="chargeGasAnalysisFont"-->
50
+ <!-- >-->
51
+ <!-- </module-title>-->
52
+ <!-- </div>-->
53
+
54
+
55
+ <!-- <div class="layui-row" style="height: 5%;background-color: darkblue;margin-top: 10px">-->
56
+ <!-- <div class="chart" id="saleGasAnalysys2"></div>-->
57
+ <!-- </div>-->
58
+ </div>
59
+ <div class="layui-container" style="height: 100%;background-color: darkblue;margin-top: -10px"
60
+ >
61
+ <div class="layui-row" style="height: 5%;background-color: darkblue;margin-top: 10px">
62
+ <module-title
63
+ :module-tile-icon="chargeGasAnalysisIcon"
64
+ :title="chargeGasAnalysisTitle1"
65
+ :font="chargeGasAnalysisFont"
66
+ >
67
+ </module-title>
68
+ </div>
69
+ <div class="layui-row" style="height: 50%;background-color: darkblue;margin-top: 10px">
70
+ <div class="chart" id="saleGasAnalysys1" style="background-color: darkblue"></div>
71
+ </div>
72
+
73
+
74
+ </div>
75
+ <div class="layui-container" style="background-color: darkblue;height: 100%;padding-top: 10px" >
76
+ <div class="layui-row" style="height: 5%;background-color: darkblue;margin-top: 10px">
77
+ <module-title :module-tile-icon="otherBusinessIcon"
78
+ :title="otherBusinessTitle" :font="otherBusinessFont"></module-title>
79
+ </div>
80
+ <div class="layui-row" style="height: 50%;background-color: darkblue">
81
+ <div class="chart" id="saleGasAnalysys2" style="background-color: darkblue;height: 180%"></div>
82
+ </div>
83
+ </div>
84
+ </div>
85
+ </template>
86
+ <script>
87
+ import * as echarts from 'echarts';
88
+ export default {
89
+ title:"ChargeContentPage",
90
+ data(){
91
+ return {
92
+ otherBusinessIcon:require('src/assets/images/收费其他业务.png'),
93
+ otherBusinessTitle:'今日其他业务占比',
94
+ otherBusinessFont:5,
95
+ oterBusinessData:[
96
+ {
97
+ name: "开户",
98
+ value: 1232,
99
+ },
100
+ {
101
+ name: "补换折(卡)",
102
+ value: 754,
103
+ },
104
+ {
105
+ name: "换表清零",
106
+ value: 611,
107
+ },
108
+ {
109
+ name: "增容",
110
+ value: 400,
111
+ },
112
+ {
113
+ name: "销户",
114
+ value: 200,
115
+ },
116
+ {
117
+ name: "其他",
118
+ value: 466,
119
+ },
120
+ ],
121
+
122
+ leftChartSaleAmountData: [
123
+ 1800, 2300, 1600, 1100, 600, 900, 1500, 500, 560, 700, 800, 1300,
124
+ ], //物联网表民用用气
125
+ leftChartNSaleAmountData: [
126
+ 180, 1500, 900, 1300, 800, 350, 1200, 560, 120, 1300, 1452, 1700,
127
+ ], //物联网表非民用用气
128
+ tongBi: [24, 30, 20, 12, 90, 43, 19, 0, 0, 13, 60, 50], //同比
129
+ huanBi: [24, 16, 37, 66, 28, 75, 60, 80, 30, 65, 56, 79], //环比
130
+ monthData: [
131
+ "1月",
132
+ "2月",
133
+ "3月",
134
+ "4月",
135
+ "5月",
136
+ "6月",
137
+ "7月",
138
+ "8月",
139
+ "9月",
140
+ "10月",
141
+ "11月",
142
+ "12月",
143
+ ],
144
+ chargeGasAnalysisIcon: require("src/assets/images/收费售气量分析.png"),
145
+ chargeGasAnalysisTitle1: "售气量分析",
146
+ chargeGasAnalysisTitle2: "售气量分析(7-12月)",
147
+ chargeGasAnalysisFont: 5,
148
+ countColor: [
149
+ "#EE7A2F",
150
+ "#19FBAE",
151
+ "#F7DC3D",
152
+ "#FFA327",
153
+ "#29fb49",
154
+ "#EE7A2F",
155
+ "#EE7A2F",
156
+ ],
157
+ countData: [
158
+ {
159
+ text: "物联网表收费",
160
+ count: 12210,
161
+ percentage: "54%",
162
+ barColor: "#EE7A2F",
163
+ },
164
+ {
165
+ text: "金额卡表收费",
166
+ count: 8451,
167
+ percentage: "18%",
168
+ barColor: "#19FBAE",
169
+ },
170
+ {
171
+ text: "气量卡表收费",
172
+ count: 6358,
173
+ percentage: "12%",
174
+ barColor: "#F7DC3D",
175
+ },
176
+ {
177
+ text: "机表收费",
178
+ count: 4107,
179
+ percentage: "9%",
180
+ barColor: "#FFA327",
181
+ },
182
+ {
183
+ text: "超用收费",
184
+ count: 3318,
185
+ percentage: "7%",
186
+ barColor: "#29fb49",
187
+ },
188
+ ],
189
+ countFont:5,
190
+ imgChargeTotal1: require("src/assets/images/收费total1.png"),
191
+ imgChargeTotal2: require("src/assets/images/收费total2.png"),
192
+ imgChargeTotal3: require("src/assets/images/收费total3.png"),
193
+ totalNumberColor: ["#FFAC41", "#F7DC3D", "#00FFDE"],
194
+ totalData: [
195
+ { number: 1245137, text: "今日售气量" },
196
+ { number: 124513, text: "今日售气笔数" },
197
+ { number: 1000013, text: "今日售气金额" },
198
+ ],
199
+
200
+ }
201
+ },
202
+ ready(){
203
+ this.myLeftChart3()
204
+ this.otherBusineeChart()
205
+ },
206
+ methods:{
207
+ otherBusineeChart(){
208
+ let mychart = echarts.init(document.getElementById('saleGasAnalysys2'));
209
+ let data = JSON.parse(JSON.stringify(this.oterBusinessData));
210
+ let arrName = getArrayValue(data, "name");
211
+ let arrValue = getArrayValue(data, "value");
212
+ let sumValue = eval(arrValue.join("+"));
213
+ let objData = array2obj(data, "name");
214
+ let percentage = getArrPercentage(data,"name")
215
+ let optionData = getData(data);
216
+ function getArrayValue(array, key) {
217
+ var key = key || "value";
218
+ var res = [];
219
+ if (array) {
220
+ array.forEach(function (t) {
221
+ res.push(t[key]);
222
+ });
223
+ }
224
+ return res;
225
+ }
226
+
227
+ function array2obj(array, key) {
228
+ var resObj = {};
229
+ for (var i = 0; i < array.length; i++) {
230
+ resObj[array[i][key]] = array[i];
231
+ }
232
+ return resObj;
233
+ }
234
+ function getArrPercentage(arr,key) {
235
+ let percentageObj = {}
236
+ for(let i=0;i<data.length;i++){
237
+ percentageObj[arr[i][key]] = ((data[i].value / sumValue) * 100).toFixed(2) + "%"
238
+ }
239
+ return percentageObj
240
+ }
241
+ function getData(data) {
242
+ var res = {
243
+ series: [],
244
+ yAxis: [],
245
+ };
246
+ for (let i = 0; i < data.length; i++) {
247
+ // console.log([70 - i * 15 + '%', 67 - i * 15 + '%']);
248
+ res.series.push({
249
+ name: "",
250
+ type: "pie",
251
+ clockWise: false, //顺时加载
252
+ hoverAnimation: false, //鼠标移入变大
253
+ radius: [78 - i * 13 + "%", 85 - i * 13 + "%"],
254
+ center: ["50%", "30%"],
255
+ label: {
256
+ show: false,
257
+ },
258
+ itemStyle: {
259
+ label: {
260
+ show: false,
261
+ },
262
+ labelLine: {
263
+ show: false,
264
+ },
265
+ borderWidth: 5,
266
+ },
267
+ data: [
268
+ {
269
+ value: data[i].value,
270
+ name: data[i].name,
271
+ },
272
+ {
273
+ value: sumValue - data[i].value,
274
+ name: "",
275
+ itemStyle: {
276
+ color: "rgba(0,0,0,0)",
277
+ borderWidth: 0,
278
+ },
279
+ tooltip: {
280
+ show: false,
281
+ },
282
+ hoverAnimation: false,
283
+ },
284
+ ],
285
+ });
286
+ res.series.push({
287
+ name: "",
288
+ type: "pie",
289
+ silent: true,
290
+ z: 1,
291
+ clockWise: false, //顺时加载
292
+ hoverAnimation: false, //鼠标移入变大
293
+ radius: [78 - i * 13 + "%", 85 - i * 13 + "%"],
294
+ center: ["50%", "30%"],
295
+ label: {
296
+ show: false,
297
+ },
298
+ itemStyle: {
299
+ label: {
300
+ show: false,
301
+ },
302
+ labelLine: {
303
+ show: false,
304
+ },
305
+ borderWidth: 5,
306
+ },
307
+ data: [
308
+ {
309
+ value: 7.5,
310
+ itemStyle: {
311
+ color: "rgb(0, 28, 124)",
312
+ borderWidth: 0,
313
+ },
314
+ tooltip: {
315
+ show: false,
316
+ },
317
+ hoverAnimation: false,
318
+ },
319
+ {
320
+ value: 2.5,
321
+ name: "",
322
+ itemStyle: {
323
+ color: "rgb(0, 28, 124)",
324
+ borderWidth: 0,
325
+ },
326
+ tooltip: {
327
+ show: false,
328
+ },
329
+ hoverAnimation: false,
330
+ },
331
+ ],
332
+ });
333
+ // res.yAxis.push(((data[i].value / sumValue) * 100).toFixed(2) + "%");
334
+ }
335
+ return res;
336
+ }
337
+
338
+ let option = {
339
+ // backgroundColor: "#000",
340
+ legend: {
341
+ show: true,
342
+ icon: "circle",
343
+ top: "60%",
344
+ left: "5%",
345
+ data: arrName,
346
+ width: 50,
347
+ padding: [0, 10],
348
+ itemGap: 19,
349
+ formatter: function (name) {
350
+ return (
351
+ "{title|" + name + "} {value|" + objData[name].value + "} {title|" + percentage[name] + "}"
352
+ );
353
+ },
354
+
355
+ textStyle: {
356
+ rich: {
357
+ title: {
358
+ fontSize: 14,
359
+ lineHeight: 15,
360
+ color: "#B2B0CB",
361
+ width: 120
362
+ },
363
+ value: {
364
+ fontSize: 14,
365
+ lineHeight: 15,
366
+ color: "#B2B0CB",
367
+ width: 80
368
+ },
369
+ },
370
+ },
371
+ },
372
+ // tooltip: {
373
+ // show: true,
374
+ // trigger: "item",
375
+ // formatter: "{a}<br>{b}:{c}({d}%)",
376
+ // },
377
+ color: [
378
+ "rgb(238, 122, 47)",
379
+ "rgb(0, 228, 196)",
380
+ "rgb(13, 126, 254)",
381
+ "rgb(247, 219, 53)",
382
+ "rgb(101, 223, 127)",
383
+ "rgb(255, 125, 125)"
384
+ ],
385
+ grid: {
386
+ top: "11%",
387
+ bottom: "60%",
388
+ left: "20%",
389
+ containLabel: false,
390
+ },
391
+ yAxis: [
392
+ {
393
+ type: "category",
394
+ inverse: true,
395
+ axisLine: {
396
+ show: false,
397
+ },
398
+ axisTick: {
399
+ show: false,
400
+ },
401
+ axisLabel: {
402
+ interval: 0,
403
+ inside: true,
404
+ textStyle: {
405
+ color: "#fff",
406
+ fontSize: 13,
407
+ },
408
+ show: true,
409
+ },
410
+ data: optionData.yAxis,
411
+ },
412
+ ],
413
+ xAxis: [
414
+ {
415
+ show: false,
416
+ },
417
+ ],
418
+ series: optionData.series,
419
+ };
420
+ mychart.setOption(option);
421
+ window.addEventListener("resize", function() {
422
+ mychart.resize();
423
+ });
424
+
425
+ },
426
+ myLeftChart3() {
427
+ let mychart = echarts.init(document.getElementById('saleGasAnalysys1'));
428
+
429
+ // 2. 指定配置和数据
430
+ let option = {
431
+ title: {
432
+ show: true,
433
+ text: "万m³",
434
+ textStyle: {
435
+ color: "rgba(255,255,255,.6)",
436
+ fontSize: 14,
437
+ },
438
+ left: 0,
439
+ top: 12,
440
+ },
441
+ color: [
442
+ new echarts.graphic.LinearGradient(
443
+ 0,
444
+ 0,
445
+ 0,
446
+ 1,
447
+ [
448
+ {
449
+ offset: 0.37,
450
+ color: "rgba(0,255,255,0.9)",
451
+ },
452
+ {
453
+ offset: 1,
454
+ color: "rgba(3,6,114,0.1)",
455
+ },
456
+ ],
457
+ false
458
+ ),
459
+ new echarts.graphic.LinearGradient(
460
+ 0,
461
+ 0,
462
+ 0,
463
+ 1,
464
+ [
465
+ {
466
+ offset: 0.37,
467
+ color: "rgba(1,245,152,0.9)",
468
+ },
469
+ {
470
+ offset: 1,
471
+ color: "rgba(3,6,114,0.1)",
472
+ },
473
+ ],
474
+ false
475
+ ),
476
+ ],
477
+
478
+ tooltip: {
479
+ // 通过坐标轴来触发
480
+ trigger: "axis",
481
+ axisPointer: {
482
+ type: "cross",
483
+ crossStyle: {
484
+ color: "#999",
485
+ },
486
+ },
487
+ formatter: function (params) {
488
+ let relVal = params[0].name;
489
+ for (let i = 0, l = params.length; i < l; i++) {
490
+ if (
491
+ params[i].seriesName === "同比" ||
492
+ params[i].seriesName === "环比"
493
+ ) {
494
+ relVal +=
495
+ "<br/>" +
496
+ params[i].seriesName +
497
+ " : " +
498
+ params[i].value +
499
+ "%";
500
+ } else {
501
+ relVal +=
502
+ "<br/>" + params[i].seriesName + " : " + params[i].value;
503
+ }
504
+ }
505
+ return relVal;
506
+ },
507
+ },
508
+ legend: {
509
+ // 距离容器10%
510
+ right: "30%",
511
+ // 修饰图例文字的颜色
512
+ textStyle: {
513
+ color: "#4c9bfd",
514
+ },
515
+ itemGap: 30,
516
+ // 如果series 里面设置了name,此时图例组件的data可以省略
517
+ // data: ["邮件营销", "联盟广告"]
518
+ },
519
+ grid: {
520
+ top: "18%",
521
+ left: "0",
522
+ right: "4%",
523
+ bottom: "3%",
524
+ show: true,
525
+ borderColor: "#012f4a",
526
+ containLabel: true,
527
+ },
528
+
529
+ xAxis: {
530
+ type: "category",
531
+ boundaryGap: true,
532
+ data: this.monthData,
533
+ // 去除刻度
534
+ axisTick: {
535
+ show: false,
536
+ },
537
+ // 修饰刻度标签的颜色
538
+ axisLabel: {
539
+ color: "rgba(255,255,255,.7)",
540
+ },
541
+ // 去除x坐标轴的颜色
542
+ axisLine: {
543
+ show: false,
544
+ },
545
+ },
546
+ yAxis: [
547
+ {
548
+ type: "value",
549
+ // interval: 500,
550
+ // max: 3500,
551
+ // 去除刻度
552
+ axisTick: {
553
+ show: false,
554
+ },
555
+ // 修饰刻度标签的颜色
556
+ axisLabel: {
557
+ color: "rgba(255,255,255,.7)",
558
+ },
559
+ // 修改y轴分割线的颜色
560
+ splitLine: {
561
+ lineStyle: {
562
+ color: "#012f4a",
563
+ },
564
+ },
565
+ },
566
+ {
567
+ name: "万m³",
568
+ type: "value",
569
+ nameTextStyle: {
570
+ color: "rgba(255,255,255,.7)",
571
+ },
572
+ // nameGap: 12,
573
+ // interval: 30,
574
+ // min: -90,
575
+ // 去除刻度
576
+ axisTick: {
577
+ show: false,
578
+ },
579
+ // 修饰刻度标签的颜色
580
+ axisLabel: {
581
+ color: "rgba(255,255,255,.7)",
582
+ },
583
+ // 修改y轴分割线的颜色
584
+ splitLine: {
585
+ show: false,
586
+ lineStyle: {
587
+ color: "#012f4a",
588
+ },
589
+ },
590
+ },
591
+ ],
592
+ series: [
593
+ {
594
+ name: "民用",
595
+ type: "bar",
596
+ barWidth: "15%",
597
+ barGap: 0,
598
+ emphasis: {
599
+ focus: "series",
600
+ },
601
+ data: JSON.parse(JSON.stringify(this.leftChartSaleAmountData)),
602
+ },
603
+ {
604
+ name: "非民用",
605
+ type: "bar",
606
+ barWidth: "15%",
607
+ barGap: "40%",
608
+ data: JSON.parse(JSON.stringify(this.leftChartNSaleAmountData)),
609
+ },
610
+ {
611
+ name: "同比",
612
+ type: "line",
613
+ stack: "总量",
614
+ // 是否让线条圆滑显示
615
+ smooth: true,
616
+ lineStyle: {
617
+ color: "rgba(193,162,81,.9)",
618
+ type: "dotted",
619
+ width: 3,
620
+ join: "miter",
621
+ miterLimit: 40,
622
+ },
623
+ showSymbol: false,
624
+ yAxisIndex: 1,
625
+ data: JSON.parse(JSON.stringify(this.tongBi)),
626
+ },
627
+ {
628
+ name: "环比",
629
+ type: "line",
630
+ stack: "总量",
631
+ lineStyle: {
632
+ color: "rgba(0,212,139,.9)",
633
+ },
634
+ smooth: true,
635
+ showSymbol: false, //取消折线的衔接点
636
+ yAxisIndex: 1,
637
+ data: JSON.parse(JSON.stringify(this.huanBi)),
638
+ },
639
+ ],
640
+ };
641
+ // 3. 把配置和数据给实例对象
642
+ mychart.setOption(option);
643
+ window.addEventListener("resize", function () {
644
+ mychart.resize();
645
+ });
646
+ },
647
+ }
648
+ }
649
+ </script>
650
+ <style lang="less">
651
+ #saleGasAnalysys1{
652
+ div{
653
+ height: 0%;
654
+ }
655
+ }
656
+ </style>