1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
| <!-- 任务事件统计 -->
| <template>
| <common-title title="任务时间统计"></common-title>
| <div class="task-time">
| <div class="chart" ref="chartRef"></div>
| </div>
| </template>
|
| <script setup>
| import CommonTitle from '@/components/CommonTitle.vue';
| import * as echarts from 'echarts';
| import { jobNumBar } from '@/api/home/task';
| import dayjs from 'dayjs';
|
| // 日期
| const currenDate = dayjs().format('YYYY-MM-DD');
| const newTime = ref([currenDate, currenDate]);
|
| const chartRef = ref(null);
| let chart = null;
|
| const option = {
| tooltip: {
| trigger: 'axis',
| axisPointer: {
| type: 'shadow'
| }
| },
| grid: {
| top: '15%',
| left: '3%',
| right: '4%',
| bottom: '3%',
| containLabel: true
| },
| xAxis: {
| type: 'category',
| axisLine: {
| lineStyle: {
| color: '#fff'
| }
| },
| axisLabel: {
| color: '#fff',
| interval: 0,
| rotate: 30
| }
| },
| yAxis: {
| type: 'value',
| axisLine: {
| lineStyle: {
| color: '#fff'
| }
| },
| splitLine: {
| lineStyle: {
| color: 'rgba(255, 255, 255, 0.1)'
| }
| },
| axisLabel: {
| color: '#fff'
| }
| },
| series: [
| {
| type: 'bar',
| barWidth: '40%',
| itemStyle: {
| color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
| { offset: 0, color: '#1EE7E7' },
| { offset: 1, color: 'rgba(30, 231, 231, 0.1)' }
| ])
| }
| }
| ]
| };
|
| // 获取任务时间统计数据
| const getJobNumBar = (value,date_enum) => {
| jobNumBar({date_enum}).then(res => {
| if (res.data.code !== 0) return;
| option.xAxis.data = res.data.data.map(item => item.name);
| option.series[0].data = res.data.data.map(item => item.value);
| chart.setOption(option);
| });
| };
|
|
| onMounted(() => {
| chart = echarts.init(chartRef.value);
| getJobNumBar(newTime.value, 'CURRENT_YEAR');
|
| window.addEventListener('resize', () => {
| chart?.resize();
| });
| });
|
| onUnmounted(() => {
| window.removeEventListener('resize', chart?.resize);
| chart?.dispose();
| });
| </script>
|
| <style lang="scss" scoped>
| .task-time {
| font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
| margin-left: 29px;
| padding: 16px 16px;
| width: 340px;
| height: 400px;
| background: linear-gradient(
| 270deg,
| rgba(31, 62, 122, 0) 0%,
| rgba(31, 62, 122, 0.35) 21%,
| #1f3e7a 100%
| );
| border-radius: 0px 0px 0px 0px;
| opacity: 0.85;
| .chart {
| width: 100%;
| height: 100%;
| }
| }
| </style>
|
|