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
| <template>
| <div id="rose-chart">
| <div class="rose-chart-title">累计计量资金分布</div>
| <dv-charts :option="option" />
| </div>
| </template>
|
| <script>
| export default {
| name: 'RoseChart',
| data () {
| return {
| option: {}
| }
| },
| methods: {
| createData () {
| const { randomExtend } = this
|
| this.option = {
| series: [
| {
| type: 'pie',
| radius: '50%',
| roseSort: false,
| data: [
| { name: '路基', value: randomExtend(40, 70) },
| { name: '交安设施', value: randomExtend(20, 30) },
| { name: '日常养护', value: randomExtend(10, 50) },
| { name: '桥通', value: randomExtend(5, 20) },
| { name: '交通事故', value: randomExtend(40, 50) },
| { name: '路面', value: randomExtend(20, 30) },
| { name: '绿化', value: randomExtend(5, 10) },
| { name: '计日工', value: randomExtend(20, 35) },
| { name: '除雪', value: randomExtend(5, 10) }
| ],
| insideLabel: {
| show: false
| },
| outsideLabel: {
| formatter: '{name} {percent}%',
| labelLineEndLength: 20,
| style: {
| fill: '#fff'
| },
| labelLineStyle: {
| stroke: '#fff'
| }
| },
| roseType: true
| }
| ],
| color: ['#da2f00', '#fa3600', '#ff4411', '#ff724c', '#541200', '#801b00', '#a02200', '#5d1400', '#b72700']
| }
| },
| randomExtend (minNum, maxNum) {
| if (arguments.length === 1) {
| return parseInt(Math.random() * minNum + 1, 10)
| } else {
| return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
| }
| }
| },
| mounted () {
| const { createData } = this
|
| createData()
|
| setInterval(createData, 30000)
| }
| }
| </script>
|
| <style lang="less">
| #rose-chart {
| width: 30%;
| height: 100%;
| background-color: rgba(6, 30, 93, 0.5);
| border-top: 2px solid rgba(1, 153, 209, .5);
| box-sizing: border-box;
|
| .rose-chart-title {
| height: 50px;
| font-weight: bold;
| text-indent: 20px;
| font-size: 20px;
| display: flex;
| align-items: center;
| }
|
| .dv-charts-container {
| height: calc(~"100% - 50px");
| }
| }
| </style>
|
|