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> |