Commit feb955a5c4ccd0c70710a0811bb1fa6c31c4b749
1 parent
9ce9cfea
车流量section
Showing
9 changed files
with
232 additions
and
34 deletions
src/assets/img/errortype1.png
0 → 100644
858 Bytes
src/assets/img/errortype5.png
0 → 100644
893 Bytes
src/assets/img/noticetype1.png
0 → 100644
853 Bytes
src/assets/img/noticetype2.png
0 → 100644
798 Bytes
src/components/lineChart.vue
0 → 100644
1 | +<template> | ||
2 | + <div :class="className" :style="{height:height,width:width}"></div> | ||
3 | +</template> | ||
4 | + | ||
5 | +<script> | ||
6 | +import echarts from 'echarts' | ||
7 | + | ||
8 | +require('echarts/theme/macarons') // echarts theme | ||
9 | +import {debounce} from '../utils/debounce' | ||
10 | + | ||
11 | +export default { | ||
12 | + name: 'lineChart', | ||
13 | + props: { | ||
14 | + className: { | ||
15 | + type: String, | ||
16 | + default: 'chart' | ||
17 | + }, | ||
18 | + width: { | ||
19 | + type: String, | ||
20 | + default: '100%' | ||
21 | + }, | ||
22 | + height: { | ||
23 | + type: String, | ||
24 | + default: '205px' | ||
25 | + }, | ||
26 | + autoResize: { | ||
27 | + type: Boolean, | ||
28 | + default: true | ||
29 | + }, | ||
30 | + chartData: { | ||
31 | + type: Object, | ||
32 | + required: true | ||
33 | + } | ||
34 | + }, | ||
35 | + data() { | ||
36 | + return { | ||
37 | + chart: null, | ||
38 | + sidebarElm: null | ||
39 | + } | ||
40 | + }, | ||
41 | + watch: { | ||
42 | + chartData: { | ||
43 | + deep: true, | ||
44 | + } | ||
45 | + }, | ||
46 | + mounted() { | ||
47 | + this.initChart() | ||
48 | + if (this.autoResize) { | ||
49 | + this.__resizeHandler = debounce(() => { | ||
50 | + if (this.chart) { | ||
51 | + this.chart.resize() | ||
52 | + } | ||
53 | + }, 100) | ||
54 | + window.addEventListener('resize', this.__resizeHandler) | ||
55 | + } | ||
56 | + }, | ||
57 | + beforeDestroy() { | ||
58 | + if (!this.chart) { | ||
59 | + return | ||
60 | + } | ||
61 | + if (this.autoResize) { | ||
62 | + window.removeEventListener('resize', this.__resizeHandler) | ||
63 | + } | ||
64 | + | ||
65 | + this.chart.dispose() | ||
66 | + this.chart = null | ||
67 | + }, | ||
68 | + methods: { | ||
69 | + setOptions({xData, yData} = {}) { | ||
70 | + this.chart.setOption({ | ||
71 | + tooltip: { | ||
72 | + trigger: 'axis' | ||
73 | + }, | ||
74 | + legend: { | ||
75 | + data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎'] | ||
76 | + }, | ||
77 | + grid: { | ||
78 | + left: '3%', | ||
79 | + right: '4%', | ||
80 | + bottom: '3%', | ||
81 | + containLabel: true | ||
82 | + }, | ||
83 | + | ||
84 | + xAxis: { | ||
85 | + type: 'category', | ||
86 | + boundaryGap: false, | ||
87 | + data: ['周一','周二','周三','周四','周五','周六','周日'] | ||
88 | + }, | ||
89 | + yAxis: { | ||
90 | + type: 'value' | ||
91 | + }, | ||
92 | + series: [ | ||
93 | + { | ||
94 | + name:'邮件营销', | ||
95 | + type:'line', | ||
96 | + stack: '总量', | ||
97 | + data:[120, 132, 101, 134, 90, 230, 210] | ||
98 | + }, | ||
99 | + { | ||
100 | + name:'联盟广告', | ||
101 | + type:'line', | ||
102 | + stack: '总量', | ||
103 | + data:[220, 182, 191, 234, 290, 330, 310] | ||
104 | + }, | ||
105 | + { | ||
106 | + name:'视频广告', | ||
107 | + type:'line', | ||
108 | + stack: '总量', | ||
109 | + data:[150, 232, 201, 154, 190, 330, 410] | ||
110 | + }, | ||
111 | + { | ||
112 | + name:'直接访问', | ||
113 | + type:'line', | ||
114 | + stack: '总量', | ||
115 | + data:[320, 332, 301, 334, 390, 330, 320] | ||
116 | + }, | ||
117 | + { | ||
118 | + name:'搜索引擎', | ||
119 | + type:'line', | ||
120 | + stack: '总量', | ||
121 | + data:[820, 932, 901, 934, 1290, 1330, 1320] | ||
122 | + } | ||
123 | + ] | ||
124 | + | ||
125 | + }) | ||
126 | + }, | ||
127 | + initChart() { | ||
128 | + this.chart = echarts.init(this.$el, 'macarons') | ||
129 | + this.setOptions(this.chartData) | ||
130 | + } | ||
131 | + } | ||
132 | +} | ||
133 | +</script> |
src/views/mainContainer.vue
@@ -10,7 +10,7 @@ | @@ -10,7 +10,7 @@ | ||
10 | <div class="heightper-top"></div> | 10 | <div class="heightper-top"></div> |
11 | <div class="heightper-bottom"> | 11 | <div class="heightper-bottom"> |
12 | <outsection style="width: 50%;float: left"></outsection> | 12 | <outsection style="width: 50%;float: left"></outsection> |
13 | - <outsection style="width: 50%;float: left"></outsection> | 13 | + <vehiclesection style="width: 50%;float: left"></vehiclesection> |
14 | </div> | 14 | </div> |
15 | </li> | 15 | </li> |
16 | <li> | 16 | <li> |
@@ -32,7 +32,7 @@ import sfysection from '../views/sfysection' | @@ -32,7 +32,7 @@ import sfysection from '../views/sfysection' | ||
32 | import berthsection from '../views/berthsection' | 32 | import berthsection from '../views/berthsection' |
33 | import newssection from '../views/newssection' | 33 | import newssection from '../views/newssection' |
34 | import outsection from '../views/outsection' | 34 | import outsection from '../views/outsection' |
35 | - | 35 | +import vehiclesection from '../views/vehiclesection' |
36 | 36 | ||
37 | export default { | 37 | export default { |
38 | name: 'mainContainer', | 38 | name: 'mainContainer', |
@@ -44,7 +44,8 @@ export default { | @@ -44,7 +44,8 @@ export default { | ||
44 | sfysection, | 44 | sfysection, |
45 | berthsection, | 45 | berthsection, |
46 | newssection, | 46 | newssection, |
47 | - outsection | 47 | + outsection, |
48 | + vehiclesection | ||
48 | }, | 49 | }, |
49 | data() { | 50 | data() { |
50 | return { | 51 | return { |
src/views/newssection.vue
@@ -4,9 +4,12 @@ | @@ -4,9 +4,12 @@ | ||
4 | <div class="nwwest-roll flexfm news-wrap" id="nwwest-roll"> | 4 | <div class="nwwest-roll flexfm news-wrap" id="nwwest-roll"> |
5 | <ul id="roll-ul"> | 5 | <ul id="roll-ul"> |
6 | <li v-for="item in list" ref="rollul" :class="{anim:animate==true}"> | 6 | <li v-for="item in list" ref="rollul" :class="{anim:animate==true}"> |
7 | - <span class="noticetype"></span> | ||
8 | - <span class="text" :title="item.site">{{item.site}}</span> | ||
9 | - <span class="time">{{item.gsmc}}</span> | 7 | + <div class="noticetype1" v-if="item.type===1"></div> |
8 | + <div class="noticetype2" v-else-if="item.type===2"></div> | ||
9 | + <div class="errortype1" v-else-if="item.type===3"></div> | ||
10 | + <div class="errortype2" v-else></div> | ||
11 | + <div class="text" :title="item.site">{{item.site}}</div> | ||
12 | + <div class="time">{{item.gsmc}}</div> | ||
10 | </li> | 13 | </li> |
11 | </ul> | 14 | </ul> |
12 | </div> | 15 | </div> |
@@ -25,17 +28,17 @@ export default { | @@ -25,17 +28,17 @@ export default { | ||
25 | return { | 28 | return { |
26 | animate: true, | 29 | animate: true, |
27 | list: [ | 30 | list: [ |
28 | - { "name": "于先生1", "site": "北京门头沟区1北京门头沟区1北京门头沟区1", "gsmc": "10-02" }, | ||
29 | - { "name": "于先生2", "site": "北京门头沟区2", "gsmc": "10-02" }, | ||
30 | - { "name": "于先生3", "site": "北京门头沟区3北京门头沟区3北京门头沟区3北京门头沟区3北京门头沟区3北京门头沟区3", "gsmc": "10-02" }, | ||
31 | - { "name": "于先生4", "site": "北京门头沟区4", "gsmc": "10-02" }, | ||
32 | - { "name": "于先生5", "site": "北京门头沟区5", "gsmc": "10-02" }, | ||
33 | - { "name": "于先生6", "site": "北京门头北京门头沟区6北京门头沟区6北京门头沟区6北京门头沟区6沟区6", "gsmc": "10-02" }, | ||
34 | - { "name": "于先生7", "site": "北京门头沟区7", "gsmc": "10-02" }, | ||
35 | - { "name": "于先生8", "site": "北京门头沟区8", "gsmc": "10-02" }, | ||
36 | - { "name": "于先生9", "site": "北京门头北京门头沟区9北京门头沟区9北京门头沟区9沟区9", "gsmc": "10-02" }, | ||
37 | - { "name": "于先生10", "site": "北京门头沟区10", "gsmc": "10-02" }, | ||
38 | - { "name": "于先生11", "site": "北京门北京门头沟区11北京门头沟区11北京门头沟区11头沟区11", "gsmc": "10-02" } | 31 | + {"type":1, "name": "于先生1", "site": "北京门头沟区1北京门头沟区1北京门头沟区1", "gsmc": "10-02" }, |
32 | + {"type":2, "name": "于先生2", "site": "北京门头沟区2", "gsmc": "10-02" }, | ||
33 | + {"type":3, "name": "于先生3", "site": "北京门头沟区3北京门头沟区3北京门头沟区3北京门头沟区3北京门头沟区3北京门头沟区3", "gsmc": "10-02" }, | ||
34 | + {"type":4, "name": "于先生4", "site": "北京门头沟区4", "gsmc": "10-02" }, | ||
35 | + {"type":1, "name": "于先生5", "site": "北京门头沟区5", "gsmc": "10-02" }, | ||
36 | + {"type":2, "name": "于先生6", "site": "北京门头北京门头沟区6北京门头沟区6北京门头沟区6北京门头沟区6沟区6", "gsmc": "10-02" }, | ||
37 | + {"type":3, "name": "于先生7", "site": "北京门头沟区7", "gsmc": "10-02" }, | ||
38 | + {"type":4, "name": "于先生8", "site": "北京门头沟区8", "gsmc": "10-02" }, | ||
39 | + {"type":1, "name": "于先生9", "site": "北京门头北京门头沟区9北京门头沟区9北京门头沟区9沟区9", "gsmc": "10-02" }, | ||
40 | + {"type":2, "name": "于先生10", "site": "北京门头沟区10", "gsmc": "10-02" }, | ||
41 | + {"type":3, "name": "于先生11", "site": "北京门北京门头沟区11北京门头沟区11北京门头沟区11头沟区11", "gsmc": "10-02" } | ||
39 | ] | 42 | ] |
40 | } | 43 | } |
41 | }, | 44 | }, |
@@ -60,6 +63,14 @@ export default { | @@ -60,6 +63,14 @@ export default { | ||
60 | </script> | 63 | </script> |
61 | 64 | ||
62 | <style lang="scss" scoped> | 65 | <style lang="scss" scoped> |
66 | + @mixin newsType($img){ | ||
67 | + margin-left: 23px; | ||
68 | + margin-right: 23px; | ||
69 | + width: 26px; | ||
70 | + height: 26px; | ||
71 | + background-image: url($img); | ||
72 | + background-repeat:no-repeat ; | ||
73 | + } | ||
63 | .nwwest-roll { | 74 | .nwwest-roll { |
64 | width: 100%; | 75 | width: 100%; |
65 | height: 210px; | 76 | height: 210px; |
@@ -73,19 +84,17 @@ export default { | @@ -73,19 +84,17 @@ export default { | ||
73 | display: flex; | 84 | display: flex; |
74 | background:rgba(255,255,255,.1); | 85 | background:rgba(255,255,255,.1); |
75 | margin-bottom: 10px; | 86 | margin-bottom: 10px; |
76 | - .noticetype{ | ||
77 | - margin-left: 23px; | ||
78 | - margin-right: 23px; | ||
79 | - width: 26px; | ||
80 | - height: 26px; | ||
81 | - background: url("../assets/img/noticetype.png") no-repeat; | 87 | + .noticetype1{ |
88 | + @include newsType("../assets/img/noticetype1.png"); | ||
89 | + } | ||
90 | + .noticetype2{ | ||
91 | + @include newsType("../assets/img/noticetype2.png"); | ||
92 | + } | ||
93 | + .errortype1{ | ||
94 | + @include newsType("../assets/img/errortype1.png"); | ||
82 | } | 95 | } |
83 | - .errortype{ | ||
84 | - margin-left: 23px; | ||
85 | - margin-right: 23px; | ||
86 | - width: 26px; | ||
87 | - height: 26px; | ||
88 | - background: #f00; | 96 | + .errortype2{ |
97 | + @include newsType("../assets/img/errortype1.png"); | ||
89 | } | 98 | } |
90 | .text{ | 99 | .text{ |
91 | width:calc(100% - 100px); | 100 | width:calc(100% - 100px); |
src/views/outsection.vue
1 | <template> | 1 | <template> |
2 | <div> | 2 | <div> |
3 | <titlesection title="周出场统计"></titlesection> | 3 | <titlesection title="周出场统计"></titlesection> |
4 | - <ul class="flexfm ydp-dz-wrap"> | ||
5 | - | ||
6 | - </ul> | 4 | + <lineChart class="flexfm inout-wrap"> |
5 | + </lineChart> | ||
7 | </div> | 6 | </div> |
8 | </template> | 7 | </template> |
9 | 8 | ||
10 | <script> | 9 | <script> |
11 | import titlesection from '../components/titlesection' | 10 | import titlesection from '../components/titlesection' |
12 | import {fetchList} from '../api/api' | 11 | import {fetchList} from '../api/api' |
12 | +import lineChart from '../components/lineChart' | ||
13 | 13 | ||
14 | const lineChartData = { | 14 | const lineChartData = { |
15 | newVisitis: { | 15 | newVisitis: { |
@@ -22,7 +22,8 @@ const lineChartData = { | @@ -22,7 +22,8 @@ const lineChartData = { | ||
22 | export default { | 22 | export default { |
23 | name: 'outsection', | 23 | name: 'outsection', |
24 | components: { | 24 | components: { |
25 | - titlesection | 25 | + titlesection, |
26 | + lineChart | ||
26 | }, | 27 | }, |
27 | data() { | 28 | data() { |
28 | return { | 29 | return { |
@@ -46,7 +47,7 @@ export default { | @@ -46,7 +47,7 @@ export default { | ||
46 | </script> | 47 | </script> |
47 | 48 | ||
48 | <style lang="scss" scoped> | 49 | <style lang="scss" scoped> |
49 | - .ydp-dz-wrap{ | 50 | + .inout-wrap{ |
50 | display: flex; | 51 | display: flex; |
51 | 52 | ||
52 | } | 53 | } |
src/views/vehiclesection.vue
0 → 100644
1 | +<template> | ||
2 | + <div> | ||
3 | + <titlesection title="今日车流量"></titlesection> | ||
4 | + <lineChart class="flexfm inout-wrap"> | ||
5 | + </lineChart> | ||
6 | + </div> | ||
7 | +</template> | ||
8 | + | ||
9 | +<script> | ||
10 | +import titlesection from '../components/titlesection' | ||
11 | +import {fetchList} from '../api/api' | ||
12 | +import lineChart from '../components/lineChart' | ||
13 | + | ||
14 | +const lineChartData = { | ||
15 | + newVisitis: { | ||
16 | + yData: [100, 120, 161], | ||
17 | + xData: ['正常', '异常', '故障'] | ||
18 | + } | ||
19 | +} | ||
20 | + | ||
21 | + | ||
22 | +export default { | ||
23 | + name: 'vehiclesection', | ||
24 | + components: { | ||
25 | + titlesection, | ||
26 | + lineChart | ||
27 | + }, | ||
28 | + data() { | ||
29 | + return { | ||
30 | + lineChartData: lineChartData.newVisitis, | ||
31 | + dzNum: '23454', | ||
32 | + ydpNum: '4454' | ||
33 | + } | ||
34 | + }, | ||
35 | + created() { | ||
36 | + }, | ||
37 | + methods: { | ||
38 | + getList() { | ||
39 | + fetchList() | ||
40 | + .then(res => { | ||
41 | + console.log(res); | ||
42 | + | ||
43 | + }); | ||
44 | + }, | ||
45 | + } | ||
46 | +} | ||
47 | +</script> | ||
48 | + | ||
49 | +<style lang="scss" scoped> | ||
50 | + .inout-wrap{ | ||
51 | + display: flex; | ||
52 | + | ||
53 | + } | ||
54 | +</style> |