parent
6db5831718
commit
52e60f5d65
15
README.md
15
README.md
|
|
@ -36,13 +36,15 @@ vue混入代码,主要是自适应相关的代码
|
||||||
布局目录,多了一个管理页
|
布局目录,多了一个管理页
|
||||||
|
|
||||||
## 组件库文档地址
|
## 组件库文档地址
|
||||||
|
|
||||||
https://1x.antdv.com/components/icon/
|
https://1x.antdv.com/components/icon/
|
||||||
|
|
||||||
|
|
||||||
## 路由说明
|
## 路由说明
|
||||||
|
|
||||||
登录页 /login
|
登录页 /login
|
||||||
|
|
||||||
### 管理页
|
### 管理页
|
||||||
|
|
||||||
用户管理 /manager/user
|
用户管理 /manager/user
|
||||||
角色管理 /manager/role
|
角色管理 /manager/role
|
||||||
菜单管理 /manager/menu
|
菜单管理 /manager/menu
|
||||||
|
|
@ -50,25 +52,30 @@ https://1x.antdv.com/components/icon/
|
||||||
工序管理 /manager/organized
|
工序管理 /manager/organized
|
||||||
|
|
||||||
### 用户端
|
### 用户端
|
||||||
|
|
||||||
首页 /home
|
首页 /home
|
||||||
|
|
||||||
#### 有组织
|
#### 有组织
|
||||||
|
|
||||||
有组织排放 /youzuzhi/paifang 待联调
|
有组织排放 /youzuzhi/paifang 待联调
|
||||||
有组织排放统计 /youzuzhi/paifangtongji 待联调
|
有组织排放统计 /youzuzhi/paifangtongji 待联调
|
||||||
|
|
||||||
#### 无组织
|
#### 无组织
|
||||||
|
|
||||||
无组织排放 /wuzuzhi/paifang 待联调
|
无组织排放 /wuzuzhi/paifang 待联调
|
||||||
洗车机管理 /wuzuzhi/xichejiguanli 未做
|
洗车机管理 /wuzuzhi/xichejiguanli (已做)待联调
|
||||||
环境治理 /wuzuzhi/huanjingzhili 待联调
|
环境治理 /wuzuzhi/huanjingzhili 待联调
|
||||||
环卫巡航 /wuzuzhi/huanweixunhang 未做
|
环卫巡航 /wuzuzhi/huanweixunhang (已做)待联调
|
||||||
|
|
||||||
#### 清洁运输
|
#### 清洁运输
|
||||||
|
|
||||||
清洁运输 /cleanTravel/home
|
清洁运输 /cleanTravel/home
|
||||||
厂区车辆台账 /cleanTravel/ledger
|
厂区车辆台账 /cleanTravel/ledger
|
||||||
清洁运输趋势 /cleanTravel/trend
|
清洁运输趋势 /cleanTravel/trend
|
||||||
磅秤台账 /cleanTravel/bangcheng 未做
|
磅秤台账 /cleanTravel/bangcheng (已做)待联调
|
||||||
|
|
||||||
#### 视频广场
|
#### 视频广场
|
||||||
|
|
||||||
视频广场 /video/list 未做
|
视频广场 /video/list 未做
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div style="text-align: left">
|
<div style="text-align: left">
|
||||||
<div class="table-search" v-if="searchItems.length > 0">
|
<div class="table-search" v-if="searchItems.length > 0">
|
||||||
<a-form class="ant-advanced-search-form" :form="form" @submit="handleSearch" layout="inline" @change="handleSearchFormChange">
|
<a-form class="ant-advanced-search-form" :form="form" @submit="handleSearch" layout="inline"
|
||||||
|
@change="handleSearchFormChange">
|
||||||
<a-form-item v-for="menuItem in searchItems" :key="menuItem.key" :label="menuItem.label">
|
<a-form-item v-for="menuItem in searchItems" :key="menuItem.key" :label="menuItem.label">
|
||||||
<a-input
|
<a-input
|
||||||
v-decorator="[menuItem.key]"
|
v-decorator="[menuItem.key]"
|
||||||
|
|
@ -15,10 +14,13 @@
|
||||||
:placeholder="menuItem.placeholder || ''"
|
:placeholder="menuItem.placeholder || ''"
|
||||||
v-else-if="menuItem.type === 'select'"
|
v-else-if="menuItem.type === 'select'"
|
||||||
>
|
>
|
||||||
<a-select-option :value="cItem.value" v-for="cItem in menuItem.children || []" :key="cItem.value">{{ cItem.label }}</a-select-option>
|
<a-select-option :value="cItem.value" v-for="cItem in menuItem.children || []" :key="cItem.value">
|
||||||
|
{{ cItem.label }}
|
||||||
|
</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
<a-range-picker
|
<a-range-picker
|
||||||
:placeholder="menuItem.placeholder || ''" v-decorator="[menuItem.key]" v-else-if="menuItem.type === 'dateRange'" format="YYYY-MM-DD" />
|
:placeholder="menuItem.placeholder || ''" v-decorator="[menuItem.key]"
|
||||||
|
v-else-if="menuItem.type === 'dateRange'" format="YYYY-MM-DD"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item>
|
<a-form-item>
|
||||||
<a-button type="primary" html-type="submit" v-if="!hideSearch">查询</a-button>
|
<a-button type="primary" html-type="submit" v-if="!hideSearch">查询</a-button>
|
||||||
|
|
@ -33,12 +35,18 @@
|
||||||
添加
|
添加
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
<a-table v-bind="tableProps" :pagination="page" :row-key="primaryKey" :columns="realColumns" :data-source="tableDataSource" @change="handleChange" >
|
<a-table v-bind="tableProps" :pagination="page" :row-key="primaryKey" :columns="realColumns"
|
||||||
|
:data-source="tableDataSource" @change="handleChange">
|
||||||
<span slot="action" slot-scope="text, record">
|
<span slot="action" slot-scope="text, record">
|
||||||
<a-button type="danger" size="small" @click="deleteRow(record)">删除</a-button>
|
<a-button type="danger" size="small" @click="deleteRow(record)">删除</a-button>
|
||||||
<a-divider type="vertical"/>
|
<a-divider type="vertical"/>
|
||||||
<a-button type="primary" size="small" @click="editRow(record)">编辑</a-button>
|
<a-button type="primary" size="small" @click="editRow(record)">编辑</a-button>
|
||||||
</span>
|
</span>
|
||||||
|
<span slot="details" slot-scope="text, record">
|
||||||
|
<!-- <a-button type="danger" size="small" @click="deleteRow(record)">删除</a-button>-->
|
||||||
|
<!-- <a-divider type="vertical"/>-->
|
||||||
|
<a-button type="primary" size="small" @click="viewDetails(record)">详情</a-button>
|
||||||
|
</span>
|
||||||
</a-table>
|
</a-table>
|
||||||
<a-modal
|
<a-modal
|
||||||
:title="dialog.title"
|
:title="dialog.title"
|
||||||
|
|
@ -61,7 +69,9 @@
|
||||||
v-else-if="menuItem.type === 'select'"
|
v-else-if="menuItem.type === 'select'"
|
||||||
v-bind="menuItem.props || {}"
|
v-bind="menuItem.props || {}"
|
||||||
>
|
>
|
||||||
<a-select-option :value="cItem.value" v-for="cItem in menuItem.children || []" :key="cItem.value">{{ cItem.label }}</a-select-option>
|
<a-select-option :value="cItem.value" v-for="cItem in menuItem.children || []" :key="cItem.value">
|
||||||
|
{{ cItem.label }}
|
||||||
|
</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
<a-tree-select
|
<a-tree-select
|
||||||
v-bind="menuItem.props || {}"
|
v-bind="menuItem.props || {}"
|
||||||
|
|
@ -74,9 +84,12 @@
|
||||||
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
||||||
v-else-if="menuItem.type === 'treeSelect'"
|
v-else-if="menuItem.type === 'treeSelect'"
|
||||||
>
|
>
|
||||||
<a-select-option :value="cItem.value" v-for="cItem in menuItem.children || []" :key="cItem.value">{{ cItem.label }}</a-select-option>
|
<a-select-option :value="cItem.value" v-for="cItem in menuItem.children || []" :key="cItem.value">
|
||||||
|
{{ cItem.label }}
|
||||||
|
</a-select-option>
|
||||||
</a-tree-select>
|
</a-tree-select>
|
||||||
<a-range-picker v-bind="menuItem.props || {}" v-decorator="gtDecorator(menuItem)" v-else-if="menuItem.type === 'dateRange'" format="YYYY-MM-DD" />
|
<a-range-picker v-bind="menuItem.props || {}" v-decorator="gtDecorator(menuItem)"
|
||||||
|
v-else-if="menuItem.type === 'dateRange'" format="YYYY-MM-DD"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
|
|
@ -161,13 +174,14 @@ export default {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {},
|
||||||
|
|
||||||
},
|
|
||||||
mounted() {
|
mounted() {
|
||||||
this.handleSearch()
|
this.handleSearch()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
viewDetails(data){
|
||||||
|
this.$emit('viewDetails',data)
|
||||||
|
},
|
||||||
gtDecorator(menuItem) {
|
gtDecorator(menuItem) {
|
||||||
if (menuItem.rules) {
|
if (menuItem.rules) {
|
||||||
this.isValidate = true
|
this.isValidate = true
|
||||||
|
|
@ -229,7 +243,6 @@ export default {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
handleChange({pageSize, current}) {
|
handleChange({pageSize, current}) {
|
||||||
this.page.pageSize = pageSize
|
this.page.pageSize = pageSize
|
||||||
|
|
@ -306,9 +319,11 @@ export default {
|
||||||
.table-operations {
|
.table-operations {
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-form-item {
|
.ant-form-item {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-divider-horizontal {
|
.ant-divider-horizontal {
|
||||||
margin: 16px 0;
|
margin: 16px 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,37 +1,31 @@
|
||||||
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<a-page-header
|
<a-page-header
|
||||||
:ghost="false"
|
:ghost="false"
|
||||||
style="border-bottom: 1px solid rgb(235, 237, 240)"
|
style="border-bottom: 1px solid rgb(235, 237, 240)"
|
||||||
title="厂区车辆台账"
|
title="磅秤台账"
|
||||||
@back="() => $router.go(-1)"
|
@back="() => $router.go(-1)"
|
||||||
/>
|
/>
|
||||||
<a-row :gutter="16">
|
<div class="type-button">
|
||||||
<a-col :span="6">
|
<div :class="['tabs-button',activeTabsButton == null?'active-tabs-button':'']" @click="tabsChange(null)">
|
||||||
<a-card title="运输车辆" size="small">
|
全部
|
||||||
<p>card content</p>
|
</div>
|
||||||
</a-card>
|
<div :class="['tabs-button',activeTabsButton == 1?'active-tabs-button':'']" @click="tabsChange(1)">
|
||||||
</a-col>
|
东门
|
||||||
<a-col :span="6">
|
</div>
|
||||||
<a-card title="国Ⅵ输车辆" size="small">
|
<div :class="['tabs-button',activeTabsButton == 2?'active-tabs-button':'']" @click="tabsChange(2)">
|
||||||
<p>card content</p>
|
东门
|
||||||
</a-card>
|
</div>
|
||||||
</a-col>
|
<div :class="['tabs-button',activeTabsButton == 3?'active-tabs-button':'']" @click="tabsChange(3)">
|
||||||
<a-col :span="6">
|
东门
|
||||||
<a-card title="非道路工程机械" size="small">
|
</div>
|
||||||
<p>card content</p>
|
<div :class="['tabs-button',activeTabsButton == 4?'active-tabs-button':'']" @click="tabsChange(4)">
|
||||||
</a-card>
|
东门
|
||||||
</a-col>
|
</div>
|
||||||
<a-col :span="6">
|
</div>
|
||||||
<a-card title="燃油运输车辆" size="small">
|
|
||||||
<p>card content</p>
|
|
||||||
</a-card>
|
|
||||||
</a-col>
|
|
||||||
</a-row>
|
|
||||||
|
|
||||||
<a-divider />
|
<div class="data-info">
|
||||||
|
<div class="left-table">
|
||||||
<Curd
|
<Curd
|
||||||
hide-action
|
hide-action
|
||||||
hide-search
|
hide-search
|
||||||
|
|
@ -40,16 +34,55 @@
|
||||||
:api-conf="apiConf"
|
:api-conf="apiConf"
|
||||||
:form-items="formItems"
|
:form-items="formItems"
|
||||||
@edit="editHandler"
|
@edit="editHandler"
|
||||||
|
@viewDetails="viewDetails"
|
||||||
>
|
>
|
||||||
<template slot="search-button" slot-scope="{ search }">
|
<template slot="search-button" slot-scope="{ search }">
|
||||||
<a-button type="primary" @click="exportList(search)">导出历史数据</a-button>
|
<a-button type="primary" @click="exportList(search)">导出历史数据</a-button>
|
||||||
</template>
|
</template>
|
||||||
</Curd>
|
</Curd>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="right-details" v-if="isShowInfoDetails">
|
||||||
|
<div class="header-title">驾驶人详情</div>
|
||||||
|
|
||||||
|
<img src=""/>
|
||||||
|
|
||||||
|
<div class="group-button">
|
||||||
|
<div :class="['_button',activeButton == 1?'active_button':'']" @click="viewImgByType(1)">出入场抓拍图</div>
|
||||||
|
<div :class="['_button',activeButton == 2?'active_button':'']" @click="viewImgByType(2)">行驶证-正面</div>
|
||||||
|
<div :class="['_button',activeButton == 3?'active_button':'']" @click="viewImgByType(3)">行驶证-反面</div>
|
||||||
|
<div :class="['_button',activeButton == 4?'active_button':'']" @click="viewImgByType(4)">环保清单</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="details-info">
|
||||||
|
<div class="details-info-item">
|
||||||
|
<div class="_title">排放标准:</div>
|
||||||
|
<div class="_title">国0</div>
|
||||||
|
</div>
|
||||||
|
<div class="details-info-item">
|
||||||
|
<div class="_title">VIN:</div>
|
||||||
|
<div class="_title">国0</div>
|
||||||
|
</div>
|
||||||
|
<div class="details-info-item">
|
||||||
|
<div class="_title">发动机号:</div>
|
||||||
|
<div class="_title">国0</div>
|
||||||
|
</div>
|
||||||
|
<div class="details-info-item">
|
||||||
|
<div class="_title">注册日期:</div>
|
||||||
|
<div class="_title">国0</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer-button">
|
||||||
|
<Button type="primary" @click="closeDetails">关闭详情</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import Curd from "../../components/smallCommon/Curd.vue";
|
import Curd from "../../components/smallCommon/Curd.vue";
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "user",
|
name: "user",
|
||||||
layout: "user",
|
layout: "user",
|
||||||
|
|
@ -94,11 +127,21 @@ export default {
|
||||||
dataIndex: 'createDateTime',
|
dataIndex: 'createDateTime',
|
||||||
key: 'createDateTime',
|
key: 'createDateTime',
|
||||||
title: '出厂日期'
|
title: '出厂日期'
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
key: 'operation',
|
||||||
|
scopedSlots: {customRender: 'details'},
|
||||||
|
fixed: 'right',
|
||||||
|
width: 100
|
||||||
|
},
|
||||||
],
|
],
|
||||||
apiConf: {
|
apiConf: {
|
||||||
listApi: {api: '/api/Ledger/list', method: 'get'},
|
listApi: {api: '/api/Ledger/list', method: 'get'},
|
||||||
}
|
},
|
||||||
|
isShowInfoDetails: false,
|
||||||
|
activeButton: 1,
|
||||||
|
activeTabsButton: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -130,6 +173,23 @@ export default {
|
||||||
const [start, end] = time
|
const [start, end] = time
|
||||||
const fmt = 'YYYY-MM-DD'
|
const fmt = 'YYYY-MM-DD'
|
||||||
window.open(`http://101.43.201.20:5000/api/Ledger/export?start=${moment(start).format(fmt)}&end=${moment(end).format(fmt)}`, '_blank')
|
window.open(`http://101.43.201.20:5000/api/Ledger/export?start=${moment(start).format(fmt)}&end=${moment(end).format(fmt)}`, '_blank')
|
||||||
|
},
|
||||||
|
viewDetails(data) {
|
||||||
|
console.log('data:', data)
|
||||||
|
this.isShowInfoDetails = true
|
||||||
|
},
|
||||||
|
//根据选中的图片类型查看图片
|
||||||
|
viewImgByType(value) {
|
||||||
|
this.activeButton = value
|
||||||
|
},
|
||||||
|
//关闭详情
|
||||||
|
closeDetails() {
|
||||||
|
this.isShowInfoDetails = false
|
||||||
|
},
|
||||||
|
|
||||||
|
//方位改变
|
||||||
|
tabsChange(value){
|
||||||
|
this.activeTabsButton = value
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -137,4 +197,99 @@ export default {
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
|
|
||||||
|
.type-button {
|
||||||
|
margin: 20px 300px;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.tabs-button {
|
||||||
|
height: 40px;
|
||||||
|
cursor: pointer;
|
||||||
|
border: 1px solid #e8e8e8;
|
||||||
|
width: 200px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active-tabs-button {
|
||||||
|
background: #0088ff;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.data-info {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
|
|
||||||
|
.left-table {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-details {
|
||||||
|
width: 600px;
|
||||||
|
height: 700px;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #e8e8e8;
|
||||||
|
margin-left: 10px;
|
||||||
|
|
||||||
|
.header-title {
|
||||||
|
font-size: 18px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
margin-top: 10px;
|
||||||
|
width: 500px;
|
||||||
|
height: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.group-button {
|
||||||
|
margin-top: 20px;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
|
width: 500px;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
._button {
|
||||||
|
width: 100px;
|
||||||
|
height: 50px;
|
||||||
|
border: 1px solid #777777;
|
||||||
|
cursor: pointer;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active_button {
|
||||||
|
background: #0088ff;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.details-info {
|
||||||
|
padding-left: 50px;
|
||||||
|
width: 100%;
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: flex-start;
|
||||||
|
|
||||||
|
.details-info-item {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-button {
|
||||||
|
height: 30px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,38 @@
|
||||||
|
<template>
|
||||||
|
<div class="huanweixunhang">
|
||||||
|
<a-page-header
|
||||||
|
:ghost="false"
|
||||||
|
style="border-bottom: 1px solid rgb(235, 237, 240)"
|
||||||
|
title="环卫巡航"
|
||||||
|
@back="() => $router.go(-1)"
|
||||||
|
/>
|
||||||
|
<div class="_map">
|
||||||
|
<Map></Map>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import Map from "../../components/Map.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "huanweixunhang"
|
name: "huanweixunhang",
|
||||||
|
components: {
|
||||||
|
Map
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="huanweixunhang"></div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
|
.huanweixunhang {
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
|
||||||
|
._map {
|
||||||
|
height: 0;
|
||||||
|
flex: 1;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,282 @@
|
||||||
|
<template>
|
||||||
|
<div class="xichejiguanli">
|
||||||
|
<a-page-header
|
||||||
|
:ghost="false"
|
||||||
|
style="border-bottom: 1px solid rgb(235, 237, 240)"
|
||||||
|
title="洗车机管理"
|
||||||
|
@back="() => $router.go(-1)"
|
||||||
|
/>
|
||||||
|
<div class="_body">
|
||||||
|
<div class="left-list">
|
||||||
|
|
||||||
|
<div :class="['car-washing-machine-tabs',activeCarTabs ==1?'active-car-washing-machine-tabs':'']"
|
||||||
|
@click="carChange(1)">
|
||||||
|
<div class="rank-num">1</div>
|
||||||
|
<div class="car-washing-machine-name">西门洗车</div>
|
||||||
|
<div class="state-icon">
|
||||||
|
正常
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div :class="['car-washing-machine-tabs',activeCarTabs ==2?'active-car-washing-machine-tabs':'']"
|
||||||
|
@click="carChange(2)">
|
||||||
|
<div class="rank-num">1</div>
|
||||||
|
<div class="car-washing-machine-name">西门洗车</div>
|
||||||
|
<div class="state-icon">
|
||||||
|
正常
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div :class="['car-washing-machine-tabs',activeCarTabs ==3?'active-car-washing-machine-tabs':'']"
|
||||||
|
@click="carChange(3)">
|
||||||
|
<div class="rank-num">1</div>
|
||||||
|
<div class="car-washing-machine-name">西门洗车</div>
|
||||||
|
<div class="state-icon">
|
||||||
|
正常
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="center-content">
|
||||||
|
<div class="map-content">
|
||||||
|
<Map></Map>
|
||||||
|
</div>
|
||||||
|
<div class="table-content">
|
||||||
|
<Curd
|
||||||
|
hide-action
|
||||||
|
hide-search
|
||||||
|
hide-button
|
||||||
|
:columns="columns"
|
||||||
|
:api-conf="apiConf"
|
||||||
|
:form-items="formItems"
|
||||||
|
@edit="editHandler"
|
||||||
|
>
|
||||||
|
<template slot="search-button" slot-scope="{ search }">
|
||||||
|
<a-button type="primary" @click="exportList(search)">导出历史数据</a-button>
|
||||||
|
</template>
|
||||||
|
</Curd>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="right-content">
|
||||||
|
<div class="_title">洗车机视频</div>
|
||||||
|
<div class="car-wash-video">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="_title">洗车机运行信息</div>
|
||||||
|
<div class="car-run-info">
|
||||||
|
<div class="_title" style="text-align: center;">xxx洗车机</div>
|
||||||
|
|
||||||
|
<div class="details-info">
|
||||||
|
<div class="details-info-item">
|
||||||
|
<div class="_title">运行状态:</div>
|
||||||
|
<div class="_title">正常</div>
|
||||||
|
</div>
|
||||||
|
<div class="details-info-item">
|
||||||
|
<div class="_title">冲洗压力:</div>
|
||||||
|
<div class="_title">500KPA</div>
|
||||||
|
</div>
|
||||||
|
<div class="details-info-item">
|
||||||
|
<div class="_title">冲洗电流:</div>
|
||||||
|
<div class="_title">50A</div>
|
||||||
|
</div>
|
||||||
|
<div class="details-info-item">
|
||||||
|
<div class="_title">冲洗电压:</div>
|
||||||
|
<div class="_title">500KV</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
import Map from "../../components/Map.vue";
|
||||||
|
import Curd from "../../components/smallCommon/Curd.vue";
|
||||||
|
import moment from "moment/moment";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "xichejiguanli"
|
name: "xichejiguanli",
|
||||||
|
components: {
|
||||||
|
Map,
|
||||||
|
Curd
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
activeCarTabs: 1,
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
dataIndex: 'outTime',
|
||||||
|
key: 'outTime',
|
||||||
|
title: '进场日期'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dataIndex: 'carNum',
|
||||||
|
key: 'carNum',
|
||||||
|
title: '车牌号'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dataIndex: 'carModel',
|
||||||
|
key: 'carModel',
|
||||||
|
title: '车型'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dataIndex: 'createDateTime',
|
||||||
|
key: 'createDateTime',
|
||||||
|
title: '清洗时间'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
apiConf: {
|
||||||
|
listApi: {api: '/api/Ledger/list', method: 'get'},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
formItems() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
type: 'dateRange',
|
||||||
|
key: 'time',
|
||||||
|
label: '日期',
|
||||||
|
isSearch: true,
|
||||||
|
placeholder: ['请选择开始日期', '请选择结束日期'],
|
||||||
|
rules: [
|
||||||
|
{required: true, message: '请选择时间范围'}
|
||||||
|
],
|
||||||
|
fields: ['startTime', 'endTime']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
carChange(value) {
|
||||||
|
this.activeCarTabs = value
|
||||||
|
},
|
||||||
|
editHandler(isEdit) {
|
||||||
|
this.isEdit = isEdit
|
||||||
|
},
|
||||||
|
exportList({time}) {
|
||||||
|
const [start, end] = time
|
||||||
|
const fmt = 'YYYY-MM-DD'
|
||||||
|
window.open(`http://101.43.201.20:5000/api/Ledger/export?start=${moment(start).format(fmt)}&end=${moment(end).format(fmt)}`, '_blank')
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="xichejiguanli"></div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
|
.xichejiguanli {
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
|
||||||
|
._body {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
|
padding: 20px;
|
||||||
|
|
||||||
|
.left-list {
|
||||||
|
width: 240px;
|
||||||
|
height: 100%;
|
||||||
|
border: 1px solid #e8e8e8;
|
||||||
|
border-radius: 10px;
|
||||||
|
|
||||||
|
.car-washing-machine-tabs {
|
||||||
|
height: 40px;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
|
align-items: center;
|
||||||
|
padding: 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
border: 1px solid #e8e8e8;
|
||||||
|
margin-top: 10px;
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
border-radius: 10px;
|
||||||
|
|
||||||
|
.rank-num {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.car-washing-machine-name {
|
||||||
|
padding-left: 10px;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.active-car-washing-machine-tabs {
|
||||||
|
background: #0088ff;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.center-content {
|
||||||
|
flex: 1;
|
||||||
|
margin: 0 10px;
|
||||||
|
border: 1px solid #e8e8e8;
|
||||||
|
border-radius: 10px;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
|
||||||
|
.map-content {
|
||||||
|
height: 400px;
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-content {
|
||||||
|
flex: 1;
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-content {
|
||||||
|
width: 300px;
|
||||||
|
border: 1px solid #e8e8e8;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 10px;
|
||||||
|
|
||||||
|
._title {
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.car-wash-video {
|
||||||
|
margin: 20px 0;
|
||||||
|
height: 400px;
|
||||||
|
border: 1px solid #e8e8e8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.car-run-info {
|
||||||
|
margin-top: 20px;
|
||||||
|
border: 1px solid #e8e8e8;
|
||||||
|
height: 260px;
|
||||||
|
padding: 10px;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
|
||||||
|
.details-info {
|
||||||
|
width: 100%;
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: flex-start;
|
||||||
|
|
||||||
|
.details-info-item {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue