Commit adf82b696d5ce1bc0c4c0b82338d28db1a52f2b2
1 parent
b5eb431c
调取接口
Showing
21 changed files
with
637 additions
and
411 deletions
index.html
... | ... | @@ -7,6 +7,7 @@ |
7 | 7 | <meta name="renderer" content="webkit"> |
8 | 8 | <meta name="viewport" content="width=1200"> |
9 | 9 | <link rel="shortcut icon" type="image/x-icon" href="static/favicon.ico"> |
10 | + <meta http-equiv="refresh" content="60"> | |
10 | 11 | <title>监控</title> |
11 | 12 | <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=cuMSxNl5LOY6sf1M3nDGtG6tGXl5a0Bb"></script> |
12 | 13 | </head> | ... | ... |
package-lock.json
... | ... | @@ -10876,6 +10876,11 @@ |
10876 | 10876 | "resolved": "http://registry.npm.taobao.org/vue/download/vue-2.5.17.tgz", |
10877 | 10877 | "integrity": "sha1-D4eJrXGL5oyhhyYpgy7VM1icato=" |
10878 | 10878 | }, |
10879 | + "vue-count-to": { | |
10880 | + "version": "1.0.13", | |
10881 | + "resolved": "http://registry.npm.taobao.org/vue-count-to/download/vue-count-to-1.0.13.tgz", | |
10882 | + "integrity": "sha1-PnVz6m5kwrKXL2TgoqsuI8dZD/M=" | |
10883 | + }, | |
10879 | 10884 | "vue-hot-reload-api": { |
10880 | 10885 | "version": "2.3.1", |
10881 | 10886 | "resolved": "http://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.1.tgz", |
... | ... | @@ -10979,6 +10984,11 @@ |
10979 | 10984 | "integrity": "sha1-3EJpcTMwLOMBdSQ1amxht7abShg=", |
10980 | 10985 | "dev": true |
10981 | 10986 | }, |
10987 | + "vuex": { | |
10988 | + "version": "3.1.0", | |
10989 | + "resolved": "http://registry.npm.taobao.org/vuex/download/vuex-3.1.0.tgz", | |
10990 | + "integrity": "sha1-Y0uBUVzwz+l2vR/+lgF1XlH4Q7k=" | |
10991 | + }, | |
10982 | 10992 | "watchpack": { |
10983 | 10993 | "version": "1.6.0", |
10984 | 10994 | "resolved": "http://registry.npm.taobao.org/watchpack/download/watchpack-1.6.0.tgz", | ... | ... |
package.json
src/api/api.js
1 | -import request from '@/utils/request' | |
2 | - | |
3 | -export function fetchList() { | |
4 | - return request({ | |
5 | - url: '/article/list', | |
6 | - method: 'get', | |
7 | - }) | |
8 | -} | |
9 | - | |
10 | -export function fetchArticle(id) { | |
11 | - return request({ | |
12 | - url: '/article/detail', | |
13 | - method: 'get', | |
14 | - params: {id} | |
15 | - }) | |
16 | -} | |
17 | - | |
18 | -export function fetchPv(pv) { | |
19 | - return request({ | |
20 | - url: '/article/pv', | |
21 | - method: 'get', | |
22 | - params: {pv} | |
23 | - }) | |
24 | -} | |
25 | - | |
26 | -export function createArticle(data) { | |
27 | - return request({ | |
28 | - url: '/article/create', | |
29 | - method: 'post', | |
30 | - data | |
31 | - }) | |
32 | -} | |
33 | - | |
34 | -export function updateArticle(data) { | |
35 | - return request({ | |
36 | - url: '/article/update', | |
37 | - method: 'post', | |
38 | - data | |
39 | - }) | |
40 | -} | |
1 | + | |
2 | +import { post} from '../utils/request' | |
3 | +//....设备 | |
4 | +export const deviceAddress = p => post('urban/intelligence/device/queryDeviceStatistic',p) | |
5 | + | |
6 | + | |
7 | +//....设备 | |
8 | +export const moneyAddress = p => post('urban/intelligence/income/queryIncomeStaByOrgIds',p) | |
9 | + | |
10 | +//....收费员 | |
11 | +export const tollAddress = p => post('urban/intelligence/employee/queryEmployeeStaByOrgIds',p) | |
12 | + | |
13 | +//....泊位 | |
14 | +export const berthAddress = p => post('urban/intelligence/berth/queryBerthStatisticByOrgIds',p) | |
15 | + | |
16 | +//....周出场 | |
17 | +export const weekAddress = p => post('urban/intelligence/orderPark/queryOrderParkNumForLastWeek',p) | |
18 | + | |
19 | +//....周出场 | |
20 | +export const dayAddress = p => post('urban/intelligence/orderPark/queryOrderParkNumForToday',p) | |
21 | + | |
22 | +//....消息 | |
23 | +export const msgAddress = p => post('urban/intelligence/orderPark/queryLastOrderPark',p) | |
24 | + | |
25 | +//....停车场总数 | |
26 | +export const parkAddress = p => post('urban/intelligence/park/queryParkNumStatisticByOrgIds',p) | |
27 | + | |
28 | +//....用户数 | |
29 | +export const memberAddress = p => post('urban/intelligence/appuser/queryUserPersonStatistic',p) | |
30 | + | |
31 | +//....收入 | |
32 | +export const incomeAddress = p => post('urban/intelligence/income/queryIncomeStaByOrgIds',p) | |
33 | + | |
34 | +//....收入 | |
35 | +export const serviceAddress = p => post('urban/intelligence/park/queryAreaBlocksByOrgId',p) | |
36 | + | |
37 | +//....服务点下的停车场 | |
38 | +export const parkListAddress = p => post('urban/intelligence/park/queryParkingLotListByAreaBlockId',p) | |
39 | + | |
40 | + | ... | ... |
src/components/allPieChart.vue
src/components/barChart.vue
... | ... | @@ -36,12 +36,14 @@ export default { |
36 | 36 | } |
37 | 37 | }, |
38 | 38 | watch: { |
39 | - chartData: { | |
40 | - deep: true, | |
39 | + chartData:function () { | |
40 | + this.$nextTick(()=>{ | |
41 | + this.initChart() | |
42 | + }) | |
41 | 43 | } |
42 | 44 | }, |
43 | 45 | mounted() { |
44 | - this.initChart() | |
46 | + // this.initChart() | |
45 | 47 | if (this.autoResize) { |
46 | 48 | this.__resizeHandler = debounce(() => { |
47 | 49 | if (this.chart) { |
... | ... | @@ -112,7 +114,7 @@ export default { |
112 | 114 | left: 10, |
113 | 115 | right: 10, |
114 | 116 | bottom: 10, |
115 | - top: 10, | |
117 | + top: 20, | |
116 | 118 | containLabel: true |
117 | 119 | }, |
118 | 120 | tooltip: { | ... | ... |
src/components/halfPieChart.vue
... | ... | @@ -38,12 +38,14 @@ export default { |
38 | 38 | } |
39 | 39 | }, |
40 | 40 | watch: { |
41 | - chartData: { | |
42 | - deep: true, | |
41 | + chartData: function () { | |
42 | + this.$nextTick(()=>{ | |
43 | + this.initChart() | |
44 | + }) | |
43 | 45 | } |
44 | 46 | }, |
45 | 47 | mounted() { |
46 | - this.initChart() | |
48 | + // this.initChart() | |
47 | 49 | if (this.autoResize) { |
48 | 50 | this.__resizeHandler = debounce(() => { |
49 | 51 | if (this.chart) { |
... | ... | @@ -65,7 +67,8 @@ export default { |
65 | 67 | this.chart = null |
66 | 68 | }, |
67 | 69 | methods: { |
68 | - setOptions({xData, yData} = {}) { | |
70 | + setOptions({yData} = {}) { | |
71 | + console.log(yData[0]) | |
69 | 72 | this.chart.setOption({ |
70 | 73 | tooltip: { |
71 | 74 | trigger: 'item', |
... | ... | @@ -86,7 +89,7 @@ export default { |
86 | 89 | }, |
87 | 90 | data: [ |
88 | 91 | { |
89 | - value: 35, | |
92 | + value: yData[0], | |
90 | 93 | name: '空闲', |
91 | 94 | itemStyle: { |
92 | 95 | normal: { |
... | ... | @@ -103,7 +106,7 @@ export default { |
103 | 106 | } |
104 | 107 | }, |
105 | 108 | { |
106 | - value: 55, | |
109 | + value: yData[1], | |
107 | 110 | name: '占有', |
108 | 111 | itemStyle: { |
109 | 112 | normal: { |
... | ... | @@ -129,7 +132,7 @@ export default { |
129 | 132 | }) |
130 | 133 | }, |
131 | 134 | initChart() { |
132 | - this.chart = echarts.init(this.$el, 'macarons') | |
135 | + this.chart = echarts.init(this.$el) | |
133 | 136 | this.setOptions(this.chartData) |
134 | 137 | } |
135 | 138 | } | ... | ... |
src/components/lineChart.vue
... | ... | @@ -36,13 +36,13 @@ export default { |
36 | 36 | } |
37 | 37 | }, |
38 | 38 | watch: { |
39 | - chartData: { | |
40 | - deep: true, | |
39 | + chartData:function () { | |
40 | + this.$nextTick(()=>{ | |
41 | + this.initChart() | |
42 | + }) | |
41 | 43 | } |
42 | 44 | }, |
43 | 45 | mounted() { |
44 | - // console.log(this.chartData) | |
45 | - this.initChart() | |
46 | 46 | if (this.autoResize) { |
47 | 47 | this.__resizeHandler = debounce(() => { |
48 | 48 | if (this.chart) { | ... | ... |
src/main.js
... | ... | @@ -2,6 +2,7 @@ |
2 | 2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. |
3 | 3 | import Vue from 'vue' |
4 | 4 | import App from './App' |
5 | +import store from './store/store' | |
5 | 6 | import './mock/mock' |
6 | 7 | import '@/styles/reset.css'/*引入重置样式*/ |
7 | 8 | // import '@/styles/mixin.scss'/*引入公共样式*/ |
... | ... | @@ -9,6 +10,9 @@ import * as filters from './filters/filters' |
9 | 10 | import util from './utils/formatNum' |
10 | 11 | Vue.prototype.$util = util |
11 | 12 | |
13 | +import _global from './api/variables' | |
14 | +Vue.prototype.GLOBAL = _global | |
15 | + | |
12 | 16 | Object.keys(filters).forEach(key => { |
13 | 17 | Vue.filter(key, filters[key]) |
14 | 18 | }) |
... | ... | @@ -18,6 +22,7 @@ Vue.config.productionTip = false |
18 | 22 | /* eslint-disable no-new */ |
19 | 23 | new Vue({ |
20 | 24 | el: '#app', |
25 | + store, | |
21 | 26 | components: { App }, |
22 | 27 | template: '<App/>' |
23 | 28 | }) | ... | ... |
src/store/store.js
1 | +import Vue from 'vue' | |
2 | +import Vuex from 'vuex' | |
3 | +import createLogger from 'vuex/dist/logger' | |
1 | 4 | |
5 | +Vue.use(Vuex) | |
6 | + | |
7 | +const state = { | |
8 | + orderNum: 0 | |
9 | +} | |
10 | + | |
11 | +const getters = { | |
12 | + getOrderNum: function (state) { | |
13 | + return state.orderNum | |
14 | + } | |
15 | +} | |
16 | + | |
17 | +const mutations = { | |
18 | + changeOrderNum:function (state,str) { | |
19 | + state.orderNum = str | |
20 | + } | |
21 | +} | |
22 | + | |
23 | +const actions = { | |
24 | + transferOrderTotal(context,obj){ | |
25 | + context.commit('changeOrderNum',obj) | |
26 | + } | |
27 | +} | |
28 | + | |
29 | + | |
30 | +const debug = process.env.NODE_ENV !== 'production' | |
31 | + | |
32 | +const store = new Vuex.Store({ | |
33 | + state, | |
34 | + getters, | |
35 | + mutations, | |
36 | + actions, | |
37 | + plugins: debug ? [createLogger()] : [] | |
38 | +}) | |
39 | +export default store; | ... | ... |
src/styles/reset.css
... | ... | @@ -110,12 +110,12 @@ table { |
110 | 110 | } |
111 | 111 | |
112 | 112 | .dislog-wrap{ |
113 | - width:84px; | |
113 | + width:100px; | |
114 | 114 | height: 47px; |
115 | 115 | border-radius:2px; |
116 | 116 | } |
117 | 117 | .dialog-header{ |
118 | - width: 84px; | |
118 | + width: 100px; | |
119 | 119 | height:14px; |
120 | 120 | line-height: 14px; |
121 | 121 | font-size: 12px; |
... | ... | @@ -125,11 +125,11 @@ table { |
125 | 125 | white-space: nowrap; |
126 | 126 | text-overflow: ellipsis; |
127 | 127 | color:rgba(255,255,255,1); |
128 | - background:rgba(68,182,255,.6); | |
128 | + background:rgba(68,182,255,1); | |
129 | 129 | } |
130 | 130 | .dislog-body{ |
131 | 131 | display: flex; |
132 | - background:rgba(1,172,254,.2); | |
132 | + background:rgba(1,172,254,.8); | |
133 | 133 | } |
134 | 134 | .dislog-body li{ |
135 | 135 | text-align: center; | ... | ... |
src/utils/request.js
1 | +//引入axios | |
1 | 2 | import axios from 'axios' |
2 | - | |
3 | -// create an axios instance | |
4 | -const service = axios.create({ | |
5 | - // baseURL: process.env.BASE_API, // api 的 base_url | |
6 | - timeout: 5000 // request timeout | |
3 | +//import qs from 'qs' | |
4 | +let cancel | |
5 | +const CancelToken = axios.CancelToken; | |
6 | +//请求拦截器 // 在发送请求之前做些什么 | |
7 | +axios.interceptors.request.use(config => { | |
8 | + //发起请求时,取消掉当前正在进行的相同请求 | |
9 | + config.headers['x-auth-token'] = '07118983-e37f-4503-a3b1-968750ceb195' | |
10 | + config.data = { | |
11 | + ...config.data, | |
12 | + sysCode: '1001' | |
13 | + } | |
14 | + // config.data = qs.stringify(config.data); | |
15 | + return config | |
16 | +}, error => { | |
17 | + return Promise.reject(error) | |
7 | 18 | }) |
8 | 19 | |
9 | -// request interceptor | |
10 | -service.interceptors.request.use( | |
11 | - config => { | |
12 | - // Do something before request is sent | |
13 | - // if (store.getters.token) { | |
14 | - // // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改 | |
15 | - // config.headers['X-Token'] = getToken() | |
16 | - // } | |
17 | - return config | |
18 | - }, | |
19 | - error => { | |
20 | - // Do something with request error | |
21 | - console.log(error) // for debug | |
22 | - Promise.reject(error) | |
23 | - } | |
24 | -) | |
25 | 20 | |
26 | -// response interceptor | |
27 | -service.interceptors.response.use( | |
28 | - response => response, | |
29 | - /** | |
30 | - * 下面的注释为通过在response里,自定义code来标示请求状态 | |
31 | - * 当code返回如下情况则说明权限有问题,登出并返回到登录页 | |
32 | - * 如想通过 xmlhttprequest 来状态码标识 逻辑可写在下面error中 | |
33 | - * 以下代码均为样例,请结合自生需求加以修改,若不需要,则可删除 | |
34 | - */ | |
35 | - // response => { | |
36 | - // const res = response.data | |
37 | - // if (res.code !== 20000) { | |
38 | - // Message({ | |
39 | - // message: res.message, | |
40 | - // type: 'error', | |
41 | - // duration: 5 * 1000 | |
42 | - // }) | |
43 | - // // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了; | |
44 | - // if (res.code === 50008 || res.code === 50012 || res.code === 50014) { | |
45 | - // // 请自行在引入 MessageBox | |
46 | - // // import { Message, MessageBox } from 'element-ui' | |
47 | - // MessageBox.confirm('你已被登出,可以取消继续留在该页面,或者重新登录', '确定登出', { | |
48 | - // confirmButtonText: '重新登录', | |
49 | - // cancelButtonText: '取消', | |
50 | - // type: 'warning' | |
51 | - // }).then(() => { | |
52 | - // store.dispatch('FedLogOut').then(() => { | |
53 | - // location.reload() // 为了重新实例化vue-router对象 避免bug | |
54 | - // }) | |
55 | - // }) | |
56 | - // } | |
57 | - // return Promise.reject('error') | |
58 | - // } else { | |
59 | - // return response.data | |
60 | - // } | |
61 | - // }, | |
62 | - error => { | |
63 | - console.log('err' + error) // for debug | |
64 | - // Message({ | |
65 | - // message: error.message, | |
66 | - // type: 'error', | |
67 | - // duration: 5 * 1000 | |
68 | - // }) | |
69 | - return Promise.reject(error) | |
21 | +//响应拦截器即异常处理,对响应数据做点什么 | |
22 | +axios.interceptors.response.use(response => { | |
23 | + return response | |
24 | +}, err => { | |
25 | + err.messages=''; | |
26 | + if (err && err.response) { | |
27 | + switch (err.response.status) { | |
28 | + case 400: | |
29 | + err.messages = '错误请求' | |
30 | + break; | |
31 | + case 401: | |
32 | + err.messages = '未授权,请重新登录' | |
33 | + break; | |
34 | + case 403: | |
35 | + err.messages = '拒绝访问' | |
36 | + break; | |
37 | + case 404: | |
38 | + err.messages = '请求错误,未找到该资源' | |
39 | + break; | |
40 | + case 405: | |
41 | + err.messages = '请求方法未允许' | |
42 | + break; | |
43 | + case 408: | |
44 | + err.messages = '请求超时' | |
45 | + break; | |
46 | + case 500: | |
47 | + err.messages = '服务器端出错' | |
48 | + break; | |
49 | + case 501: | |
50 | + err.messages = '网络未实现' | |
51 | + break; | |
52 | + case 502: | |
53 | + err.messages = '网络错误' | |
54 | + break; | |
55 | + case 503: | |
56 | + err.messages = '服务不可用' | |
57 | + break; | |
58 | + case 504: | |
59 | + err.messages = '网络超时' | |
60 | + break; | |
61 | + case 505: | |
62 | + err.messages = 'http版本不支持该请求' | |
63 | + break; | |
64 | + default: | |
65 | + err.messages = `连接错误${err.response.status}` | |
66 | + } | |
67 | + } else { | |
68 | + err.messages = "连接到服务器失败"; | |
70 | 69 | } |
71 | -) | |
70 | + //message.err(err.message) | |
71 | + //return Promise.reject(err.response) | |
72 | + return Promise.resolve(err) | |
73 | +}) | |
74 | +//基础url前缀 | |
75 | +//axios.defaults.baseURL = '/api' | |
76 | +axios.defaults.baseURL = 'http://39.98.54.240:8093/'; | |
77 | +//设置默认请求头 | |
78 | +// axios.defaults.withCredentials=true;//让ajax携带cookie | |
79 | + | |
80 | +// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'; | |
81 | +axios.defaults.timeout = 10000 | |
82 | + | |
83 | + | |
84 | +function post(url, params) { | |
85 | + return new Promise((resolve,reject) => { | |
86 | + axios({ | |
87 | + method: 'post', | |
88 | + url, | |
89 | + data: params, | |
90 | + cancelToken: new CancelToken(c => { | |
91 | + cancel = c | |
92 | + }) | |
93 | + }).then(res => { | |
94 | + resolve(res) | |
95 | + }) | |
96 | + }) | |
97 | +} | |
98 | + | |
99 | + | |
100 | +export {post} | |
72 | 101 | |
73 | -export default service | ... | ... |
src/views/berthsection.vue
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | <li class="pos-rel"> |
7 | 7 | <halfPieChart :chart-data="pieChartData"></halfPieChart> |
8 | 8 | <div class="pos-abs halfPieText"> |
9 | - <p>78%</p> | |
9 | + <p>{{scale}}%</p> | |
10 | 10 | <p>占有</p> |
11 | 11 | </div> |
12 | 12 | </li> |
... | ... | @@ -27,7 +27,7 @@ |
27 | 27 | import titlesection from '../components/titlesection' |
28 | 28 | import totalsection from '../components/total' |
29 | 29 | import halfPieChart from '../components/halfPieChart' |
30 | -import {fetchList} from '../api/api' | |
30 | +import { berthAddress } from '../api/api' | |
31 | 31 | |
32 | 32 | export default { |
33 | 33 | name: 'berthsection', |
... | ... | @@ -39,23 +39,37 @@ export default { |
39 | 39 | data() { |
40 | 40 | return { |
41 | 41 | pieChartData: { |
42 | - yData: [100,200], | |
42 | + yData: [1,1], | |
43 | 43 | legendData: ['空余','占有'] |
44 | 44 | }, |
45 | - totalVal: '21973', | |
46 | - free: '454123', | |
47 | - nofree: '5125' | |
45 | + totalVal: '', | |
46 | + free: '', | |
47 | + nofree: '', | |
48 | + scale: '' | |
48 | 49 | } |
49 | 50 | }, |
50 | 51 | created() { |
52 | + this.getList() | |
51 | 53 | }, |
52 | 54 | methods: { |
53 | 55 | getList() { |
54 | - fetchList() | |
55 | - .then(res => { | |
56 | - console.log(res); | |
57 | - | |
58 | - }); | |
56 | + berthAddress({ | |
57 | + orgIds: this.GLOBAL.paramsvariables | |
58 | + }).then((res)=>{ | |
59 | + let data = res.data.data | |
60 | + console.log(data) | |
61 | + this.totalVal = data.allBerthNum.toString() | |
62 | + this.free = data.freeBerthNum | |
63 | + this.nofree = data.isOccupyBertnNum | |
64 | + this.pieChartData = { | |
65 | + yData: [data.freeBerthNum,data.isOccupyBertnNum], | |
66 | + legendData: ['空余','占有'] | |
67 | + } | |
68 | + // this.pieChartData.yData = [10,20] | |
69 | + // this.pieChartData.yData.push(data.freeBerthNum) | |
70 | + // this.pieChartData.yData.push(data.isOccupyBertnNum) | |
71 | + this.scale = ((data.isOccupyBertnNum/(data.freeBerthNum+data.isOccupyBertnNum))*100).toFixed(0) | |
72 | + }) | |
59 | 73 | }, |
60 | 74 | } |
61 | 75 | } | ... | ... |
src/views/dicisection.vue
... | ... | @@ -15,8 +15,7 @@ |
15 | 15 | <script> |
16 | 16 | import titlesection from '../components/titlesection' |
17 | 17 | import totalsection from '../components/total' |
18 | -import {fetchList} from '../api/api' | |
19 | - | |
18 | +import { deviceAddress } from '../api/api' | |
20 | 19 | export default { |
21 | 20 | name: 'dicisection', |
22 | 21 | components: { |
... | ... | @@ -25,35 +24,22 @@ export default { |
25 | 24 | }, |
26 | 25 | data() { |
27 | 26 | return { |
28 | - totalVal: '219734', | |
29 | - diciList:[ | |
30 | - { | |
31 | - name: '正常', | |
32 | - count: '23454', | |
33 | - percentage: '80%' | |
34 | - }, | |
35 | - { | |
36 | - name: '异常', | |
37 | - count: '12192', | |
38 | - percentage: '60%' | |
39 | - }, | |
40 | - { | |
41 | - name: '正常', | |
42 | - count: '6235', | |
43 | - percentage: '40%' | |
44 | - } | |
45 | - ] | |
27 | + totalVal: '', | |
28 | + diciList:[] | |
46 | 29 | } |
47 | 30 | }, |
48 | 31 | created() { |
32 | + this.getList() | |
49 | 33 | }, |
50 | 34 | methods: { |
51 | 35 | getList() { |
52 | - fetchList() | |
53 | - .then(res => { | |
54 | - console.log(res); | |
55 | - | |
56 | - }); | |
36 | + deviceAddress({ | |
37 | + orgIds: this.GLOBAL.paramsvariables | |
38 | + }).then((response)=>{ | |
39 | + const data = response.data.data | |
40 | + this.totalVal = data[1].num.toString() | |
41 | + this.diciList = data[1].dicList | |
42 | + }) | |
57 | 43 | }, |
58 | 44 | } |
59 | 45 | } | ... | ... |
src/views/mapsection.vue
... | ... | @@ -4,28 +4,28 @@ |
4 | 4 | <li> |
5 | 5 | <img src="../assets/img/parkingtotal.svg"> |
6 | 6 | <div> |
7 | - <p>{{parkingtotal|formatNum}}</p> | |
7 | + <p> <countTo :startVal='startVal' :endVal='parkingtotal' :duration='durationTime'></countTo></p> | |
8 | 8 | <p>停车场总数</p> |
9 | 9 | </div> |
10 | 10 | </li> |
11 | 11 | <li> |
12 | 12 | <img src="../assets/img/membertotal.svg"> |
13 | 13 | <div> |
14 | - <p>{{membertotal|formatNum}}</p> | |
14 | + <p><countTo :startVal='startVal' :endVal='membertotal' :duration='durationTime'></countTo></p> | |
15 | 15 | <p>会员总数</p> |
16 | 16 | </div> |
17 | 17 | </li> |
18 | 18 | <li> |
19 | 19 | <img src="../assets/img/incometotal.svg"> |
20 | 20 | <div> |
21 | - <p>{{incometotal|formatNum}}</p> | |
21 | + <p><countTo :startVal='startVal' :endVal='incometotal' :duration='durationTime'></countTo></p> | |
22 | 22 | <p>今日收入总数</p> |
23 | 23 | </div> |
24 | 24 | </li> |
25 | 25 | <li> |
26 | 26 | <img src="../assets/img/ordertotal.svg"> |
27 | 27 | <div> |
28 | - <p>{{ordertotal|formatNum}}</p> | |
28 | + <p>{{getOrderNum|formatNum}}</p> | |
29 | 29 | <p>今日订单数</p> |
30 | 30 | </div> |
31 | 31 | </li> |
... | ... | @@ -38,7 +38,7 @@ |
38 | 38 | </ul> |
39 | 39 | <div class="park-wrap" ref="parkwrap"> |
40 | 40 | <ul class="content" ref=""> |
41 | - <li v-for="(item, index) in parkList" :key="index" :title="item.name" :class="{'current-active':index===currentIndex}" @click="currentPark(item, index)">{{ item.name }}</li> | |
41 | + <li v-for="(item, index) in parkList" :key="index" :title="item.areaName" :class="{'current-active':index===currentIndex}" @click="currentPark(item.id, index)">{{ item.areaName }}</li> | |
42 | 42 | </ul> |
43 | 43 | </div> |
44 | 44 | <div class="flexfm" ></div> |
... | ... | @@ -50,35 +50,58 @@ import BScroll from 'better-scroll' |
50 | 50 | import busyCar from '../assets/img/busy-status.png'; //以import的方式导入图片文件 |
51 | 51 | import normalCar from '../assets/img/normal-status.png'; //以import的方式导入图片文件 |
52 | 52 | import idleCar from '../assets/img/idle-status.png'; //以import的方式导入图片文件 |
53 | +import countTo from 'vue-count-to' | |
54 | +import { parkAddress, memberAddress, incomeAddress, serviceAddress, parkListAddress } from '../api/api' | |
55 | +import { mapGetters } from 'vuex' | |
53 | 56 | |
54 | 57 | export default { |
55 | 58 | name: 'mapsection', |
59 | + components: { countTo }, | |
56 | 60 | data() { |
57 | 61 | return { |
58 | - parkingtotal: '7338', | |
59 | - membertotal: '738', | |
60 | - incometotal: '1156738', | |
62 | + durationTime:3000, | |
63 | + startVal: 0, | |
64 | + parkingtotal: 0, | |
65 | + membertotal: 0, | |
66 | + incometotal: 0, | |
61 | 67 | ordertotal: '6738', |
62 | - parkList: [ | |
63 | - {name:'西局街道办事处12321312312312',id:'1'}, | |
64 | - {name:'西局街道办事处',id:'2'}, | |
65 | - {name:'西局街道办事处',id:'3'}, | |
66 | - {name:'西局街道办事处',id:'4'}, | |
67 | - {name:'西局街道办事处',id:'5'}, | |
68 | - {name:'西局街道办事处',id:'6'}, | |
69 | - {name:'西局街道办事处',id:'7'}, | |
70 | - {name:'西局街道办事处',id:'8'}, | |
71 | - {name:'西局街道办事处',id:'9'}, | |
72 | - {name:'西局街道办事处',id:'10'}, | |
73 | - {name:'西局街道办事处',id:'11'}, | |
74 | - {name:'西局街道办事处',id:'12'}, | |
75 | - | |
76 | - ], | |
77 | - currentIndex:0 | |
68 | + parkList: [], | |
69 | + currentIndex:0, | |
70 | + firstItem:'' | |
78 | 71 | } |
79 | 72 | }, |
73 | + computed: { | |
74 | + ...mapGetters(['getOrderNum']) | |
75 | + }, | |
80 | 76 | created() { |
81 | - | |
77 | + parkAddress({ | |
78 | + orgIds: this.GLOBAL.paramsvariables | |
79 | + }).then((response)=>{ | |
80 | + const data = response.data.data | |
81 | + this.parkingtotal = data | |
82 | + }) | |
83 | + memberAddress({ | |
84 | + orgIds: this.GLOBAL.paramsvariables | |
85 | + }).then((response)=>{ | |
86 | + const data = response.data.data | |
87 | + this.membertotal = data.registerNum | |
88 | + }) | |
89 | + incomeAddress({ | |
90 | + orgIds: this.GLOBAL.paramsvariables | |
91 | + }).then((response)=>{ | |
92 | + const data = response.data.data | |
93 | + this.incometotal = data.totalPay | |
94 | + }) | |
95 | + serviceAddress({ | |
96 | + orgId: '10003' | |
97 | + }).then((response)=>{ | |
98 | + const data = response.data.data | |
99 | + console.log(data) | |
100 | + this.parkList = data | |
101 | + console.log(data) | |
102 | + this.firstItem = data[0].id | |
103 | + this.currentPark(this.firstItem,0) | |
104 | + }) | |
82 | 105 | }, |
83 | 106 | mounted() { |
84 | 107 | this.$nextTick(() => { |
... | ... | @@ -88,110 +111,132 @@ export default { |
88 | 111 | bounce:true,//取消达到边界的缓冲效果 |
89 | 112 | }) |
90 | 113 | }) |
91 | - let data = { | |
92 | - nurseryInfo: [ | |
93 | - {Name:'万达停车场1',MapPointX:'111.742579',MapPointY:'40.818675',status:0,free:30,total:1000}, | |
94 | - {Name:'万达停车场2',MapPointX:'111.622579',MapPointY:'40.878675',status:1,free:40,total:800}, | |
95 | - {Name:'万达停车场333333',MapPointX:'111.782579',MapPointY:'40.778675',status:2,free:300,total:500} | |
96 | - ] | |
97 | - } | |
98 | - this.baiduMap(data) | |
114 | + // let data = { | |
115 | + // nurseryInfo: [ | |
116 | + // {Name:'万达停车场1',MapPointX:'111.742579',MapPointY:'40.818675',status:0,free:30,total:1000}, | |
117 | + // {Name:'万达停车场2',MapPointX:'111.622579',MapPointY:'40.878675',status:1,free:40,total:800}, | |
118 | + // {Name:'万达停车场333333',MapPointX:'111.782579',MapPointY:'40.778675',status:2,free:300,total:500} | |
119 | + // ] | |
120 | + // } | |
121 | + // this.baiduMap(data) | |
99 | 122 | }, |
100 | 123 | methods: { |
101 | 124 | currentPark(item, index) { |
102 | - console.log(item) | |
103 | 125 | this.currentIndex = index |
104 | - let data = { | |
105 | - nurseryInfo: [ | |
106 | - {Name:'万达停车场11111',MapPointX:'111.742579',MapPointY:'40.818675',status:2,free:300,total:500}, | |
107 | - {Name:'万达停车场22222',MapPointX:'111.622579',MapPointY:'40.878675',status:0,free:30,total:1000}, | |
108 | - {Name:'万达停车场333333',MapPointX:'111.782579',MapPointY:'40.818675',status:1,free:40,total:800} | |
109 | - ] | |
110 | - } | |
111 | - this.baiduMap(data) | |
126 | + let nurseryInfo = [] | |
127 | + | |
128 | + parkListAddress({ | |
129 | + blockIds: [item] | |
130 | + }).then((response)=>{ | |
131 | + const data = response.data.data | |
132 | + console.log(response) | |
133 | + nurseryInfo = data | |
134 | + this.baiduMap(nurseryInfo) | |
135 | + }) | |
136 | + | |
137 | + | |
138 | + | |
112 | 139 | }, |
113 | 140 | baiduMap (data) { |
114 | - var map = new BMap.Map('allmap', {enableMapClick: false}) | |
115 | - var point = new BMap.Point(111.742579, 40.818675) | |
116 | - map.centerAndZoom(point, 12) | |
117 | - var mapStyle={ style : "midnight" } | |
118 | - map.setMapStyle(mapStyle); | |
119 | - // var marker = new BMap.Marker(point) // 创建标注 | |
120 | - // map.addOverlay(marker) // 将标注添加到地图中 | |
141 | + console.log(data.length) | |
142 | + if(data.length === 0){ | |
143 | + var map = new BMap.Map('allmap', {enableMapClick: false}) | |
144 | + var point = new BMap.Point(111.742579, 40.878675) | |
145 | + map.centerAndZoom(point, 14) | |
146 | + var mapStyle={ style : "midnight" } | |
147 | + map.enableScrollWheelZoom(true); | |
148 | + map.setMapStyle(mapStyle); | |
149 | + // var marker = new BMap.Marker(point) // 创建标注 | |
150 | + // map.addOverlay(marker) // 将标注添加到地图中 | |
151 | + map.clearOverlays(); | |
121 | 152 | |
122 | - map.clearOverlays(); | |
123 | - var i = 0; | |
124 | - var points = []; | |
125 | - for (var item in data.nurseryInfo) { | |
126 | - (function (x) { | |
127 | - var itemthat = item; | |
128 | - //创建标注 | |
129 | - var pt = new BMap.Point(data.nurseryInfo[item].MapPointX, data.nurseryInfo[item].MapPointY); | |
130 | - points[i] = pt; | |
131 | - if(data.nurseryInfo[item].status === 0){ | |
153 | + }else{ | |
154 | + var map = new BMap.Map('allmap', {enableMapClick: false}) | |
155 | + var point = new BMap.Point(data[0].lonId, data[0].latId) | |
156 | + map.centerAndZoom(point, 17) | |
157 | + var mapStyle={ style : "midnight" } | |
158 | + map.enableScrollWheelZoom(true); | |
159 | + map.setMapStyle(mapStyle); | |
160 | + // var marker = new BMap.Marker(point) // 创建标注 | |
161 | + // map.addOverlay(marker) // 将标注添加到地图中 | |
162 | + | |
163 | + map.clearOverlays(); | |
164 | + var i = 0; | |
165 | + var points = []; | |
166 | + for (var item in data) { | |
167 | + (function (x) { | |
168 | + var itemthat = item; | |
169 | + //创建标注 | |
170 | + var pt = new BMap.Point(data[item].lonId, data[item].latId); | |
171 | + points[i] = pt; | |
172 | + if(data[item].freeBrethNum/data[item].plBerthNum == 0){ | |
173 | + var myIcon = new BMap.Icon(busyCar, | |
174 | + new BMap.Size(29, 40), { | |
175 | + offset: new BMap.Size(10, 40), | |
176 | + textColor: '#fff' | |
177 | + }); | |
178 | + var marker = new BMap.Marker(pt,{icon:myIcon}); | |
179 | + } else if(data[item].freeBrethNum/data[item].plBerthNum <= 0.3){ | |
180 | + var myIcon = new BMap.Icon(normalCar, | |
181 | + new BMap.Size(29, 40), { | |
182 | + offset: new BMap.Size(10, 40), | |
183 | + textColor: '#fff' | |
184 | + }); | |
185 | + var marker = new BMap.Marker(pt,{icon:myIcon}); | |
186 | + } else { | |
187 | + var myIcon = new BMap.Icon(idleCar, | |
188 | + new BMap.Size(29, 40), { | |
189 | + offset: new BMap.Size(10, 40), | |
190 | + textColor: '#fff' | |
191 | + }); | |
192 | + var marker = new BMap.Marker(pt,{icon:myIcon}); | |
193 | + } | |
132 | 194 | var myIcon = new BMap.Icon(busyCar, |
133 | 195 | new BMap.Size(29, 40), { |
134 | 196 | offset: new BMap.Size(10, 40), |
135 | 197 | textColor: '#fff' |
136 | 198 | }); |
137 | - var marker = new BMap.Marker(pt,{icon:myIcon}); | |
138 | - } else if(data.nurseryInfo[item].status === 1){ | |
139 | - var myIcon = new BMap.Icon(normalCar, | |
140 | - new BMap.Size(29, 40), { | |
141 | - offset: new BMap.Size(10, 40), | |
142 | - textColor: '#fff' | |
143 | - }); | |
144 | - var marker = new BMap.Marker(pt,{icon:myIcon}); | |
145 | - } else { | |
146 | - var myIcon = new BMap.Icon(idleCar, | |
147 | - new BMap.Size(29, 40), { | |
148 | - offset: new BMap.Size(10, 40), | |
149 | - textColor: '#fff' | |
150 | - }); | |
151 | - var marker = new BMap.Marker(pt,{icon:myIcon}); | |
152 | - } | |
153 | - console.log(data) | |
154 | - marker.setTop(true,27000000); | |
155 | - map.addOverlay(marker); | |
156 | - var myLabel; | |
157 | 199 | |
158 | - marker.addEventListener("mouseover", (e)=> { | |
159 | - var that = this; | |
160 | - console.log(e) | |
200 | + marker.setTop(true,27000000); | |
201 | + map.addOverlay(marker); | |
202 | + var myLabel; | |
203 | + | |
204 | + marker.addEventListener("mouseover", (e)=> { | |
205 | + var that = this; | |
161 | 206 | myLabel = new BMap.Label( |
162 | 207 | `<div class="dislog-wrap"> |
163 | - <div class="dialog-header" title="${data.nurseryInfo[itemthat].Name}">${data.nurseryInfo[itemthat].Name}</div> | |
164 | - <ul class="dislog-body"> | |
165 | - <li><div>${data.nurseryInfo[itemthat].free}</div><div>空闲</div></li> | |
166 | - <li><div>/</div><div></div></li> | |
167 | - <li><div>${data.nurseryInfo[itemthat].total}</div><div>总数</div></li> | |
168 | - </ul> | |
169 | - </div>`, | |
170 | - { | |
171 | - offset: new BMap.Size(25, -35), //label的偏移量,为了让label的中心显示在点上 | |
172 | - position: pt | |
173 | - }); | |
208 | + <div class="dialog-header" title="${data[itemthat].plAddress}">${data[itemthat].plAddress}</div> | |
209 | + <ul class="dislog-body"> | |
210 | + <li><div>${data[itemthat].freeBrethNum}</div><div>空闲</div></li> | |
211 | + <li><div>/</div><div></div></li> | |
212 | + <li><div>${data[itemthat].plBerthNum}</div><div>总数</div></li> | |
213 | + </ul> | |
214 | + </div>`, | |
215 | + { | |
216 | + offset: new BMap.Size(25, -35), //label的偏移量,为了让label的中心显示在点上 | |
217 | + position: pt | |
218 | + }); | |
219 | + myLabel.setStyle({ | |
220 | + // color: "#0f0", | |
221 | + // fontSize: "12px", | |
222 | + padding: "0", | |
223 | + // whiteSpace: "normal", | |
224 | + backgroundColor: "", | |
225 | + border: "0px", | |
226 | + zIndex: "1000" | |
227 | + } | |
228 | + ); | |
229 | + marker.setLabel(myLabel) | |
230 | + marker.setTop(true,27000000); | |
174 | 231 | |
175 | - myLabel.setStyle({ | |
176 | - // color: "#0f0", | |
177 | - // fontSize: "12px", | |
178 | - padding: "0", | |
179 | - // whiteSpace: "normal", | |
180 | - backgroundColor: "", | |
181 | - border: "0px", | |
182 | - zIndex: "1000" | |
183 | - } | |
184 | - ); | |
185 | - marker.setLabel(myLabel) | |
186 | - marker.setTop(true,27000000); | |
187 | - | |
188 | - }); | |
232 | + }); | |
233 | + marker.addEventListener("mouseout", function (e) { | |
234 | + map.removeOverlay(myLabel); | |
235 | + }); | |
236 | + i++; | |
237 | + })(i); | |
238 | + } | |
189 | 239 | |
190 | - marker.addEventListener("mouseout", function (e) { | |
191 | - map.removeOverlay(myLabel); | |
192 | - }); | |
193 | - i++; | |
194 | - })(i); | |
195 | 240 | } |
196 | 241 | |
197 | 242 | } |
... | ... | @@ -215,7 +260,7 @@ export default { |
215 | 260 | display: flex; |
216 | 261 | padding-top: 17px; |
217 | 262 | padding-bottom: 18px; |
218 | - background:rgba(0,45,140,.6); | |
263 | + background:rgba(0,45,140,.9); | |
219 | 264 | li{ |
220 | 265 | flex: 1; |
221 | 266 | height: 45px; | ... | ... |
src/views/newssection.vue
1 | 1 | <template> |
2 | 2 | <div > |
3 | 3 | <titlesection title="消息"></titlesection> |
4 | - <div class="nwwest-roll flexfm news-wrap" id="nwwest-roll"> | |
5 | - <ul id="roll-ul"> | |
6 | - <li v-for="item in list" ref="rollul" :class="{anim:animate==true}"> | |
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> | |
4 | + <div class="content"> | |
5 | + <ul class="news-wrap"> | |
6 | + <li class="orderNum">订单编号</li> | |
7 | + <li class="orderPark">停车场</li> | |
8 | + <li class="orderMoney">收费金额</li> | |
9 | + </ul> | |
10 | + <div class="nwwest-roll news-wrap" id="nwwest-roll"> | |
11 | + <ul id="roll-ul" class="roll-ul" :style="{ top }"> | |
12 | + <li v-for="(item,index) in list" ref="rollul" :key="index"> | |
13 | + <div :title="item.orderId">{{item.orderId}}</div> | |
14 | + <div :title="item.plName">{{item.plName}}</div> | |
15 | + <div :title="item.orderActFee">{{item.orderActFee|formatMoney}}</div> | |
13 | 16 | </li> |
14 | 17 | </ul> |
15 | 18 | </div> |
19 | + </div> | |
16 | 20 | </div> |
17 | 21 | </template> |
18 | 22 | |
19 | 23 | <script> |
20 | 24 | import titlesection from '../components/titlesection' |
25 | +import { msgAddress } from '../api/api' | |
21 | 26 | |
22 | 27 | export default { |
23 | 28 | name: 'newssection', |
... | ... | @@ -26,26 +31,38 @@ export default { |
26 | 31 | }, |
27 | 32 | data() { |
28 | 33 | return { |
29 | - animate: true, | |
30 | - list: [ | |
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" } | |
42 | - ] | |
34 | + orderList:"",//公告列表 | |
35 | + //marqueeHeight: '100%', | |
36 | + name: '订单公告', | |
37 | + activeIndex: 0, | |
38 | + intnum: undefined, | |
39 | + list: [] | |
40 | + } | |
41 | + }, | |
42 | + computed: { | |
43 | + top() { | |
44 | + return - this.activeIndex * 36 + 'px'; | |
43 | 45 | } |
44 | 46 | }, |
45 | 47 | created() { |
46 | - setInterval(this.scroll, 2000) | |
48 | + this.onLoad() | |
47 | 49 | }, |
48 | 50 | methods: { |
51 | + onLoad() { | |
52 | + msgAddress({ | |
53 | + orgIds: this.GLOBAL.paramsvariables | |
54 | + }).then((response)=>{ | |
55 | + let data = response.data.data | |
56 | + this.list = data; | |
57 | + var that = this | |
58 | + this.intnum = setInterval(_ => { | |
59 | + that.list.push(that.list[this.activeIndex]); | |
60 | + this.activeIndex += 1; | |
61 | + }, 1000); | |
62 | + }).catch((response)=>{ | |
63 | + console.log(response); | |
64 | + }) | |
65 | + }, | |
49 | 66 | scroll() { |
50 | 67 | this.animate = !this.animate; |
51 | 68 | var that = this; // 在异步函数中会出现this的偏移问题,此处一定要先保存好this的指向 |
... | ... | @@ -55,59 +72,92 @@ export default { |
55 | 72 | that.animate = !that.animate; // 这个地方如果不把animate 取反会出现消息回滚的现象,此时把ul 元素的过渡属性取消掉就可以完美实现无缝滚动的效果了 |
56 | 73 | }, 0) |
57 | 74 | } |
75 | + }, | |
76 | + filters:{ | |
77 | + formatMoney: function (value) { | |
78 | + return (value/100).toFixed(2)+' 元' | |
79 | + } | |
58 | 80 | } |
59 | 81 | } |
60 | 82 | </script> |
61 | 83 | |
62 | 84 | <style lang="scss" scoped> |
63 | - @mixin newsType($img){ | |
64 | - margin-left: 23px; | |
65 | - margin-right: 23px; | |
66 | - width: 26px; | |
67 | - height: 26px; | |
68 | - background-image: url($img); | |
69 | - background-repeat:no-repeat ; | |
70 | - background-position: center center ; | |
85 | + .content{ | |
86 | + height: calc(100% - 30px); | |
87 | + } | |
88 | + .theme-card{ | |
89 | + height: 100%; | |
71 | 90 | } |
91 | + .news-wrap{ | |
92 | + height: 40px; | |
93 | + line-height: 40px; | |
94 | + font-size: 14px; | |
95 | + .roll-ul{ | |
96 | + height: 100%; | |
97 | + position: relative; | |
98 | + transition: top 0.5s; | |
99 | + } | |
100 | + li{ | |
101 | + height: 40px; | |
102 | + float: left; | |
103 | + padding-left: 0; | |
104 | + padding-left: 30px; | |
105 | + background-size: 14px 14px; | |
106 | + background-position: 10px center; | |
107 | + background-repeat: no-repeat; | |
108 | + list-style: none; | |
109 | + overflow: hidden; | |
110 | + color: #fff; | |
111 | + } | |
112 | + .orderNum{ | |
113 | + width: 110px; | |
114 | + background-image: url(../assets/img/orderNum.svg) ; | |
115 | + } | |
116 | + .orderMoney{ | |
117 | + width: 80px; | |
118 | + background-image: url(../assets/img/orderMoney.svg) ; | |
119 | + } | |
120 | + .orderPark{ | |
121 | + width: calc(100% - 230px); | |
122 | + background-image: url(../assets/img/orderPark.svg) ; | |
123 | + } | |
124 | + | |
125 | + } | |
126 | + | |
72 | 127 | .nwwest-roll { |
73 | 128 | width: 100%; |
74 | - height: 210px; | |
129 | + height: calc(100% - 60px); | |
75 | 130 | overflow: hidden; |
76 | 131 | transition: all 0.5s; |
77 | 132 | li{ |
133 | + width: 100%; | |
78 | 134 | height: 26px; |
79 | 135 | line-height: 26px; |
80 | 136 | font-size: 12px; |
137 | + padding-left: 10px; | |
81 | 138 | color: #fff; |
82 | - display: flex; | |
83 | 139 | background:rgba(255,255,255,.1); |
84 | 140 | margin-bottom: 10px; |
85 | - .noticetype1{ | |
86 | - @include newsType("../assets/img/noticetype1.png"); | |
87 | - } | |
88 | - .noticetype2{ | |
89 | - @include newsType("../assets/img/noticetype2.png"); | |
90 | - } | |
91 | - .errortype1{ | |
92 | - @include newsType("../assets/img/errortype1.png"); | |
93 | - } | |
94 | - .errortype2{ | |
95 | - @include newsType("../assets/img/errortype1.png"); | |
96 | - } | |
97 | - .text{ | |
98 | - flex: 1; | |
99 | - overflow:hidden; | |
100 | - text-overflow:ellipsis; | |
101 | - } | |
102 | - .time{ | |
103 | - padding-left: 23px; | |
104 | - padding-right: 23px; | |
105 | - width: 81px; | |
141 | + div{ | |
142 | + float: left; | |
143 | + overflow: hidden; | |
144 | + white-space: nowrap; | |
145 | + text-overflow: ellipsis; | |
146 | + &:nth-of-type(1){ | |
147 | + width: 110px; | |
148 | + } | |
149 | + &:nth-of-type(2){ | |
150 | + width: calc(100% - 220px); | |
151 | + } | |
152 | + &:nth-of-type(3){ | |
153 | + width: 80px; | |
154 | + } | |
155 | + | |
106 | 156 | } |
107 | 157 | } |
108 | 158 | } |
109 | - .anim { | |
110 | - transition: all 0.5s; | |
159 | + .anim { | |
160 | + transition: all 0.5s; | |
111 | 161 | |
112 | - } | |
162 | + } | |
113 | 163 | </style> | ... | ... |
src/views/outsection.vue
... | ... | @@ -8,9 +8,8 @@ |
8 | 8 | |
9 | 9 | <script> |
10 | 10 | import titlesection from '../components/titlesection' |
11 | -import {fetchList} from '../api/api' | |
12 | 11 | import lineChart from '../components/lineChart' |
13 | - | |
12 | +import { weekAddress } from '../api/api' | |
14 | 13 | export default { |
15 | 14 | name: 'outsection', |
16 | 15 | components: { |
... | ... | @@ -19,27 +18,35 @@ export default { |
19 | 18 | }, |
20 | 19 | data() { |
21 | 20 | return { |
22 | - lineChartData: { | |
23 | - xData: ['周一','周二','周三','周四','周五','周六','周日'], | |
24 | - yData: { | |
25 | - indata:[120, 132, 101, 134, 90, 230, 210], | |
26 | - outdata:[220, 182, 191, 234, 290, 330, 310], | |
27 | - }, | |
28 | - legendData: ['出场','进场'] | |
29 | - }, | |
30 | - dzNum: '23454', | |
31 | - ydpNum: '4454' | |
21 | + lineChartData: {}, | |
32 | 22 | } |
33 | 23 | }, |
34 | 24 | created() { |
25 | + this.getList() | |
35 | 26 | }, |
36 | 27 | methods: { |
37 | 28 | getList() { |
38 | - fetchList() | |
39 | - .then(res => { | |
40 | - console.log(res); | |
41 | - | |
42 | - }); | |
29 | + weekAddress({ | |
30 | + orgIds: this.GLOBAL.paramsvariables | |
31 | + }).then((response)=>{ | |
32 | + const data = response.data.data | |
33 | + let xData = [], indata = [], outdata = [], lastInNum; | |
34 | + for (let i=0;i<data.length;i++){ | |
35 | + xData.push(data[i].queryDate) | |
36 | + indata.push(data[i].inNum) | |
37 | + outdata.push(data[i].outNum) | |
38 | + lastInNum = data[data.length-1].inNum | |
39 | + } | |
40 | + this.$store.dispatch('transferOrderTotal',lastInNum) | |
41 | + this.lineChartData = { | |
42 | + xData: xData, | |
43 | + yData: { | |
44 | + indata:indata, | |
45 | + outdata:outdata, | |
46 | + }, | |
47 | + legendData: ['出场','进场'] | |
48 | + } | |
49 | + }) | |
43 | 50 | }, |
44 | 51 | } |
45 | 52 | } | ... | ... |
src/views/pdasection.vue
... | ... | @@ -10,14 +10,7 @@ |
10 | 10 | import titlesection from '../components/titlesection' |
11 | 11 | import totalsection from '../components/total' |
12 | 12 | import barChart from '../components/barChart' |
13 | -import {fetchList} from '../api/api' | |
14 | - | |
15 | -const barChartData = { | |
16 | - data: { | |
17 | - yData: [100, 80, 21], | |
18 | - xData: ['正常', '异常', '故障'] | |
19 | - } | |
20 | -} | |
13 | +import { deviceAddress } from '../api/api' | |
21 | 14 | |
22 | 15 | export default { |
23 | 16 | name: 'pdasection', |
... | ... | @@ -28,8 +21,11 @@ export default { |
28 | 21 | }, |
29 | 22 | data() { |
30 | 23 | return { |
31 | - totalVal: '213734', | |
32 | - barChartData: barChartData.data | |
24 | + totalVal: '', | |
25 | + barChartData: { | |
26 | + // yData: [100,200,300], | |
27 | + // xData: ['正常', '异常', '故障'] | |
28 | + } | |
33 | 29 | } |
34 | 30 | }, |
35 | 31 | created() { |
... | ... | @@ -37,11 +33,18 @@ export default { |
37 | 33 | }, |
38 | 34 | methods: { |
39 | 35 | getList() { |
40 | - fetchList() | |
41 | - .then(res => { | |
42 | - console.log(res); | |
43 | - | |
44 | - }); | |
36 | + deviceAddress({ | |
37 | + orgIds: this.GLOBAL.paramsvariables | |
38 | + }).then((response)=>{ | |
39 | + const data = response.data.data | |
40 | + this.totalVal = data[0].num.toString() | |
41 | + let Xdata = data[0].xData.split(',') | |
42 | + let Ydata = data[0].yData.split(',') | |
43 | + this.barChartData = { | |
44 | + yData: Ydata, | |
45 | + xData: Xdata | |
46 | + } | |
47 | + }) | |
45 | 48 | }, |
46 | 49 | } |
47 | 50 | } | ... | ... |
src/views/sfysection.vue
... | ... | @@ -22,7 +22,7 @@ |
22 | 22 | <script> |
23 | 23 | import titlesection from '../components/titlesection' |
24 | 24 | import totalsection from '../components/total' |
25 | -import {fetchList} from '../api/api' | |
25 | +import { tollAddress } from '../api/api' | |
26 | 26 | |
27 | 27 | export default { |
28 | 28 | name: 'sfysection', |
... | ... | @@ -32,20 +32,24 @@ export default { |
32 | 32 | }, |
33 | 33 | data() { |
34 | 34 | return { |
35 | - totalVal: '219734', | |
36 | - signNum: '454', | |
37 | - nosignNum: '5125' | |
35 | + totalVal: '', | |
36 | + signNum: '', | |
37 | + nosignNum: '' | |
38 | 38 | } |
39 | 39 | }, |
40 | 40 | created() { |
41 | + this.getList() | |
41 | 42 | }, |
42 | 43 | methods: { |
43 | 44 | getList() { |
44 | - fetchList() | |
45 | - .then(res => { | |
46 | - console.log(res); | |
47 | - | |
48 | - }); | |
45 | + tollAddress({ | |
46 | + orgIds: this.GLOBAL.paramsvariables | |
47 | + }).then((response)=>{ | |
48 | + let data = response.data.data | |
49 | + this.totalVal = (data.allTollCollector).toString() | |
50 | + this.signNum = data.signInTollCollector | |
51 | + this.nosignNum = data.unSignInTollCollector | |
52 | + }) | |
49 | 53 | }, |
50 | 54 | } |
51 | 55 | } | ... | ... |
src/views/vehiclesection.vue
... | ... | @@ -8,10 +8,8 @@ |
8 | 8 | |
9 | 9 | <script> |
10 | 10 | import titlesection from '../components/titlesection' |
11 | -import {fetchList} from '../api/api' | |
12 | 11 | import lineChart from '../components/lineChart' |
13 | - | |
14 | - | |
12 | +import { dayAddress } from '../api/api' | |
15 | 13 | |
16 | 14 | export default { |
17 | 15 | name: 'vehiclesection', |
... | ... | @@ -21,27 +19,35 @@ export default { |
21 | 19 | }, |
22 | 20 | data() { |
23 | 21 | return { |
24 | - lineChartData: { | |
25 | - xData: ['周一','周二','周三','周四','周五','周六','周日'], | |
26 | - yData: { | |
27 | - indata:[120, 132, 101, 134, 90, 230, 210], | |
28 | - outdata:[220, 182, 191, 234, 290, 330, 310], | |
29 | - }, | |
30 | - legendData: ['出场1','进场'] | |
31 | - }, | |
22 | + lineChartData: {}, | |
32 | 23 | dzNum: '23454', |
33 | 24 | ydpNum: '4454' |
34 | 25 | } |
35 | 26 | }, |
36 | 27 | created() { |
28 | + this.getList() | |
37 | 29 | }, |
38 | 30 | methods: { |
39 | 31 | getList() { |
40 | - fetchList() | |
41 | - .then(res => { | |
42 | - console.log(res); | |
43 | - | |
44 | - }); | |
32 | + dayAddress({ | |
33 | + orgIds: this.GLOBAL.paramsvariables | |
34 | + }).then((response)=>{ | |
35 | + const data = response.data.data | |
36 | + let xData = [], indata = [], outdata = [] | |
37 | + for (let i=0;i<data.length;i++){ | |
38 | + xData.push(data[i].queryDate) | |
39 | + indata.push(data[i].inNum) | |
40 | + outdata.push(data[i].outNum) | |
41 | + } | |
42 | + this.lineChartData = { | |
43 | + xData: xData, | |
44 | + yData: { | |
45 | + indata:indata, | |
46 | + outdata:outdata, | |
47 | + }, | |
48 | + legendData: ['出场','进场'] | |
49 | + } | |
50 | + }) | |
45 | 51 | }, |
46 | 52 | } |
47 | 53 | } | ... | ... |
src/views/youdaopingsection.vue
1 | 1 | <template> |
2 | 2 | <div> |
3 | - <titlesection title="道闸/诱导屏"></titlesection> | |
3 | + <titlesection title="支付方式"></titlesection> | |
4 | 4 | <ul class="flexfm ydp-dz-wrap"> |
5 | 5 | <li> |
6 | 6 | <div> |
7 | 7 | <div class="bg-wrap"> |
8 | - <p class="dznum-total">{{ dzNum|formatNum }}</p> | |
9 | - <p class="name">道闸</p> | |
8 | + <p class="dznum-total">{{ wxNum|formatNum }}</p> | |
9 | + <p class="name">微信</p> | |
10 | 10 | </div> |
11 | 11 | </div> |
12 | 12 | <div> |
13 | 13 | <div class="bg-wrap"> |
14 | - <p class="ydpnum-total">{{ ydpNum|formatNum }}</p> | |
15 | - <p class="name">诱导屏</p> | |
14 | + <p class="ydpnum-total">{{ zfbNum|formatNum }}</p> | |
15 | + <p class="name">支付宝</p> | |
16 | 16 | </div> |
17 | 17 | </div> |
18 | 18 | </li> |
19 | 19 | <li> |
20 | - <allPieChart :chart-data="pieChartData"/> | |
20 | + <div> | |
21 | + <div class="bg-wrap"> | |
22 | + <p class="dznum-total">{{ xjNum|formatNum }}</p> | |
23 | + <p class="name">现金</p> | |
24 | + </div> | |
25 | + </div> | |
26 | + <div> | |
27 | + <div class="bg-wrap"> | |
28 | + <p class="ydpnum-total">{{ qtNum|formatNum }}</p> | |
29 | + <p class="name">其他</p> | |
30 | + </div> | |
31 | + </div> | |
21 | 32 | </li> |
22 | 33 | </ul> |
23 | 34 | </div> |
... | ... | @@ -26,8 +37,7 @@ |
26 | 37 | <script> |
27 | 38 | import titlesection from '../components/titlesection' |
28 | 39 | import allPieChart from '../components/allPieChart' |
29 | -import {fetchList} from '../api/api' | |
30 | - | |
40 | +import { moneyAddress } from '../api/api' | |
31 | 41 | |
32 | 42 | export default { |
33 | 43 | name: 'youdaopingsection', |
... | ... | @@ -37,20 +47,30 @@ export default { |
37 | 47 | }, |
38 | 48 | data() { |
39 | 49 | return { |
40 | - pieChartData: [35, 55], | |
41 | - dzNum: '23454', | |
42 | - ydpNum: '4454' | |
50 | + pieChartData: [], | |
51 | + wxNum: '', | |
52 | + zfbNum: '', | |
53 | + xjNum: '', | |
54 | + qtNum: '', | |
43 | 55 | } |
44 | 56 | }, |
45 | 57 | created() { |
58 | + this.getList() | |
46 | 59 | }, |
47 | 60 | methods: { |
48 | 61 | getList() { |
49 | - fetchList() | |
50 | - .then(res => { | |
51 | - console.log(res); | |
52 | - | |
53 | - }); | |
62 | + moneyAddress({ | |
63 | + orgIds: this.GLOBAL.paramsvariables | |
64 | + }).then((response)=>{ | |
65 | + const data = response.data.data | |
66 | + this.wxNum = data.wxPay | |
67 | + this.zfbNum = data.aliPay | |
68 | + this.qtNum = data.otherPay | |
69 | + this.xjNum = data.totalPay - data.aliPay - data.wxPay - data.otherPay | |
70 | + // this.dzNum = data[3].num | |
71 | + // this.ydpNum = data[2].num | |
72 | + // this.pieChartData = [data[3].num,data[2].num] | |
73 | + }) | |
54 | 74 | }, |
55 | 75 | } |
56 | 76 | } |
... | ... | @@ -63,8 +83,8 @@ export default { |
63 | 83 | padding: 0 23px; |
64 | 84 | li{ |
65 | 85 | height: 100%; |
66 | - flex: 1; | |
67 | - &:nth-of-type(1)>div{ | |
86 | + width: 50%; | |
87 | + >div{ | |
68 | 88 | height: 50%; |
69 | 89 | .bg-wrap{ |
70 | 90 | width: 115px; | ... | ... |