调整优化等

This commit is contained in:
邱贞招 2024-06-26 14:57:56 +08:00
parent 65dd5f5ff6
commit 3d0334df5a
13 changed files with 306 additions and 64 deletions

View File

@ -43,6 +43,22 @@ export function delDevice(deviceId) {
}) })
} }
// 一键上线
export function oneClickOnline(deviceId) {
return request({
url: '/system/device/oneClickOnline/' + deviceId,
method: 'post'
})
}
// 一键下线
export function oneClickOffline(deviceId) {
return request({
url: '/system/device/oneClickOffline/' + deviceId,
method: 'post'
})
}
// 查询所有车辆信息 // 查询所有车辆信息
export function allDevice() { export function allDevice() {
return request({ return request({

View File

@ -8,3 +8,11 @@ export function listReconciliation(query) {
params: query params: query
}) })
} }
export function getAreaList() {
return request({
url: '/system/getAreaList',
method: 'get',
})
}

View File

@ -198,6 +198,7 @@ export default {
getGeoAddress(lng, lat) { getGeoAddress(lng, lat) {
console.log('getGeoAddress', lng,lat); console.log('getGeoAddress', lng,lat);
console.log('this.geocoder', this.geocoder); console.log('this.geocoder', this.geocoder);
if(this.geocoder){
return new Promise((resolve, reject) =>{ return new Promise((resolve, reject) =>{
this.geocoder.getAddress([lng, lat], (status, result) => { this.geocoder.getAddress([lng, lat], (status, result) => {
if (status === 'complete' && result.info === 'OK') { if (status === 'complete' && result.info === 'OK') {
@ -209,6 +210,7 @@ export default {
} }
}) })
}) })
}
}, },
// //
loadGeoCoder() { loadGeoCoder() {

View File

@ -296,13 +296,13 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="调度费" label-width="150"> <el-form-item label="运营区外调度费" label-width="150">
<el-input-number style="width: 50%" v-model="form.dispatchFee" <el-input-number style="width: 50%" v-model="form.dispatchFee"
placeholder="车辆超出运行区外的调度费用"></el-input-number> placeholder="车辆超出运行区外的调度费用"></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="管理费" label-width="150"> <el-form-item label="停车点外调度费" label-width="150">
<el-input-number style="width: 50%" v-model="form.vehicleManagementFee" <el-input-number style="width: 50%" v-model="form.vehicleManagementFee"
placeholder="车辆在运营区内但没在停车区产生的调度费用"></el-input-number> placeholder="车辆在运营区内但没在停车区产生的调度费用"></el-input-number>
</el-form-item> </el-form-item>

View File

@ -146,7 +146,7 @@
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="边界" prop="boundaryStr"> <el-form-item label="边界" prop="boundaryStr">
<area-map :key="key" v-model="form.boundaryStr" :dataId="form.areaId" :pathList="form.boundaryStr" @mapList="mapList" @center="center" /> <area-map :key="key" v-model="form.boundaryStr" :dataId="form.areaId" :lon="areaLon" :lat="areaLat" :pathList="form.boundaryStr" @mapList="mapList" @center="center" />
</el-form-item> </el-form-item>
<!-- <span style="color: red">双击区域可重新编辑</span>--> <!-- <span style="color: red">双击区域可重新编辑</span>-->
</el-col> </el-col>
@ -208,6 +208,8 @@ export default {
open: false, open: false,
// keyarea-map // keyarea-map
key: 0, key: 0,
areaLon: null,
areaLat: null,
// //
areaOptions:[], areaOptions:[],
// //
@ -224,6 +226,15 @@ export default {
form: {}, form: {},
// //
rules: { rules: {
parkingName: [
{ required: true, message: "禁停区不能为空", trigger: "blur" }
],
type: [
{ required: true, message: "类型不能为空", trigger: "blur" }
],
boundaryStr: [
{ required: true, message: "边界不能为空", trigger: "blur" }
]
} }
}; };
}, },
@ -249,6 +260,8 @@ export default {
getArea(areaId) { getArea(areaId) {
getArea(areaId).then(response => { getArea(areaId).then(response => {
this.queryParams.areaId = response.data.areaId; this.queryParams.areaId = response.data.areaId;
this.areaLon = response.data.longitude;
this.areaLat = response.data.latitude;
this.defaultAreaId = response.data.areaId; this.defaultAreaId = response.data.areaId;
this.getList(); this.getList();
}); });
@ -266,6 +279,11 @@ export default {
this.parkingList = response.rows; this.parkingList = response.rows;
this.total = response.total; this.total = response.total;
this.defaultAreaId = this.queryParams.areaId; this.defaultAreaId = this.queryParams.areaId;
getArea(this.defaultAreaId).then(response => {
this.queryParams.areaId = response.data.areaId;
this.areaLon = response.data.longitude;
this.areaLat = response.data.latitude;
});
this.loading = false; this.loading = false;
}); });
}, },

View File

@ -157,7 +157,7 @@
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="边界" prop="boundaryStr"> <el-form-item label="边界" prop="boundaryStr">
<area-map :key="key" v-model="form.boundaryStr" :dataId="form.areaId" :pathList="form.boundaryStr" @mapList="mapList" @center="center" /> <area-map :key="key" v-model="form.boundaryStr" :dataId="form.areaId" :lon="areaLon" :lat="areaLat" :pathList="form.boundaryStr" @mapList="mapList" @center="center" />
</el-form-item> </el-form-item>
<!-- <span style="color: red">双击区域可重新编辑</span>--> <!-- <span style="color: red">双击区域可重新编辑</span>-->
</el-col> </el-col>
@ -219,6 +219,8 @@ export default {
open: false, open: false,
// keyarea-map // keyarea-map
key: 0, key: 0,
areaLon: null,
areaLat: null,
// //
areaOptions:[], areaOptions:[],
// //
@ -235,6 +237,15 @@ export default {
form: {}, form: {},
// //
rules: { rules: {
parkingName: [
{ required: true, message: "禁停区不能为空", trigger: "blur" }
],
type: [
{ required: true, message: "类型不能为空", trigger: "blur" }
],
boundaryStr: [
{ required: true, message: "边界不能为空", trigger: "blur" }
]
} }
}; };
}, },
@ -260,6 +271,8 @@ export default {
getArea(areaId) { getArea(areaId) {
getArea(areaId).then(response => { getArea(areaId).then(response => {
this.queryParams.areaId = response.data.areaId; this.queryParams.areaId = response.data.areaId;
this.areaLon = response.data.longitude;
this.areaLat = response.data.latitude;
this.defaultAreaId = response.data.areaId; this.defaultAreaId = response.data.areaId;
this.getList(); this.getList();
}); });
@ -277,6 +290,11 @@ export default {
this.parkingList = response.rows; this.parkingList = response.rows;
this.total = response.total; this.total = response.total;
this.defaultAreaId = this.queryParams.areaId; this.defaultAreaId = this.queryParams.areaId;
getArea(this.defaultAreaId).then(response => {
this.queryParams.areaId = response.data.areaId;
this.areaLon = response.data.longitude;
this.areaLat = response.data.latitude;
});
this.loading = false; this.loading = false;
}); });
}, },

View File

@ -152,7 +152,7 @@
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="边界" prop="boundaryStr"> <el-form-item label="边界" prop="boundaryStr">
<area-map :key="key" v-model="form.boundaryStr" :dataId="form.areaId" :pathList="form.boundaryStr" @mapList="mapList" @center="center" /> <area-map :key="key" v-model="form.boundaryStr" :dataId="form.areaId" :lon="areaLon" :lat="areaLat" :pathList="form.boundaryStr" @mapList="mapList" @center="center" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col > <el-col >
@ -218,6 +218,8 @@ export default {
open: false, open: false,
// keyarea-map // keyarea-map
key: 0, key: 0,
areaLon: null,
areaLat: null,
// //
areaOptions:[], areaOptions:[],
// //
@ -234,6 +236,15 @@ export default {
form: {}, form: {},
// //
rules: { rules: {
parkingName: [
{ required: true, message: "禁停区不能为空", trigger: "blur" }
],
type: [
{ required: true, message: "类型不能为空", trigger: "blur" }
],
boundaryStr: [
{ required: true, message: "边界不能为空", trigger: "blur" }
]
} }
}; };
}, },
@ -259,6 +270,8 @@ export default {
getArea(areaId) { getArea(areaId) {
getArea(areaId).then(response => { getArea(areaId).then(response => {
this.queryParams.areaId = response.data.areaId; this.queryParams.areaId = response.data.areaId;
this.areaLon = response.data.longitude;
this.areaLat = response.data.latitude;
this.defaultAreaId = response.data.areaId; this.defaultAreaId = response.data.areaId;
this.getList(); this.getList();
}); });
@ -276,6 +289,11 @@ export default {
this.parkingList = response.rows; this.parkingList = response.rows;
this.total = response.total; this.total = response.total;
this.defaultAreaId = this.queryParams.areaId; this.defaultAreaId = this.queryParams.areaId;
getArea(this.defaultAreaId).then(response => {
this.queryParams.areaId = response.data.areaId;
this.areaLon = response.data.longitude;
this.areaLat = response.data.latitude;
});
this.loading = false; this.loading = false;
}); });
}, },

View File

@ -1,6 +1,16 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="运营商" prop="deptId" v-if="userName == 'admin'">
<el-select v-model="queryParams.deptId" placeholder="请选择运营商" clearable>
<el-option
v-for="item in deptOptions"
:key="item.deptId"
:label="item.deptName"
:value="item.deptId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="MAC" prop="mac"> <el-form-item label="MAC" prop="mac">
<el-input style="width: 150px" <el-input style="width: 150px"
v-model="queryParams.mac" v-model="queryParams.mac"
@ -86,6 +96,28 @@
v-hasPermi="['system:device:remove']" v-hasPermi="['system:device:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="multiple"
@click="oneClickOnline"
v-hasPermi="['system:device:edit']"
>一键上线</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-lock"
size="mini"
:disabled="multiple"
@click="oneClickOffline"
v-hasPermi="['system:device:edit']"
>一键下线</el-button>
</el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="warning" type="warning"
@ -334,6 +366,7 @@
v-if="showPlaceSearchMap" v-if="showPlaceSearchMap"
ref="map" ref="map"
height="400px" height="400px"
:key="key"
@select-changed="onSelectChange" @select-changed="onSelectChange"
@map-geo="onMapGeo" @map-geo="onMapGeo"
:init-lat="form.latitude" :init-lat="form.latitude"
@ -374,7 +407,7 @@
addDevice, addDevice,
updateDevice, updateDevice,
handleLock, handleLock,
handleUnlocking, ring handleUnlocking, ring,oneClickOnline,oneClickOffline
} from '@/api/system/device' } from '@/api/system/device'
import Map from "@/components/Map"; import Map from "@/components/Map";
import OrderRecord from "@/views/system/device/components/orderRecord.vue"; import OrderRecord from "@/views/system/device/components/orderRecord.vue";
@ -386,6 +419,7 @@ import LocationMap from '@/components/Map/location/LocationMap.vue';
import { listModel} from "@/api/system/model"; import { listModel} from "@/api/system/model";
import QrCode from "@/components/QrCode/index.vue"; import QrCode from "@/components/QrCode/index.vue";
import { listArea } from '@/api/system/area' import { listArea } from '@/api/system/area'
import { listDept } from '@/api/system/dept'
export default { export default {
name: "Device", name: "Device",
@ -409,6 +443,8 @@ export default {
loading: true, loading: true,
// //
ids: [], ids: [],
deptOptions: [],
key: 0,
// //
single: true, single: true,
// //
@ -457,9 +493,6 @@ export default {
mac: [ mac: [
{ required: true, message: "MAC不能为空", trigger: "blur" } { required: true, message: "MAC不能为空", trigger: "blur" }
], ],
// areaId: [
// { required: true, message: "", trigger: "blur" }
// ],
} }
}; };
}, },
@ -468,8 +501,31 @@ export default {
this.userName = this.$store.state.user.name; this.userName = this.$store.state.user.name;
this.getList(); this.getList();
console.log("------"+this.activeIndex) console.log("------"+this.activeIndex)
if(this.userName === 'admin'){
listDept({status: '0' }).then(response => {
this.deptOptions = response.data;
});
}
}, },
methods: { methods: {
oneClickOnline(row){
const deviceIds = row.deviceId || this.ids;
this.$modal.confirm('确认一键上线?').then(function() {
return oneClickOnline(deviceIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("操作成功");
}).catch(() => {});
},
oneClickOffline(row){
const deviceIds = row.deviceId || this.ids;
this.$modal.confirm('确认一键下线?').then(function() {
return oneClickOffline(deviceIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("操作成功");
}).catch(() => {});
},
onMapGeo(data, lat, lng) { onMapGeo(data, lat, lng) {
console.log("onMapGeo", data) console.log("onMapGeo", data)
let component = data.regeocode.addressComponent; let component = data.regeocode.addressComponent;
@ -581,6 +637,7 @@ export default {
this.open2 = true; this.open2 = true;
this.form = row; this.form = row;
this.showPlaceSearchMap = true; this.showPlaceSearchMap = true;
this.key++;
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {

View File

@ -45,6 +45,17 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="交易时间">
<el-date-picker
v-model="dateRange"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -190,6 +201,8 @@ export default {
multiple: true, multiple: true,
// //
showSearch: true, showSearch: true,
//
dateRange: [],
// //
total: 0, total: 0,
// //
@ -232,7 +245,7 @@ export default {
/** 查询资金流水列表 */ /** 查询资金流水列表 */
getList() { getList() {
this.loading = true; this.loading = true;
listFlow(this.queryParams).then(response => { listFlow(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.flowList = response.rows; this.flowList = response.rows;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;

View File

@ -87,7 +87,7 @@
}); });
}, },
deviceMarker(){ deviceMarker(){
listDevice().then(response => { listDevice({pageNum: 1,pageSize: 999}).then(response => {
this.deviceList = response.rows; this.deviceList = response.rows;
this.deviceList.forEach(device => { this.deviceList.forEach(device => {
// //

View File

@ -57,7 +57,7 @@
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="订单id" align="center" prop="orderId" />--> <!-- <el-table-column label="订单id" align="center" prop="orderId" />-->
<el-table-column label="区域" align="center" prop="area" /> <el-table-column label="区域" align="center" prop="area" />
<el-table-column label="订单号" :show-overflow-tooltip="true" align="center" prop="orderNo" /> <el-table-column label="订单号" align="center" prop="orderNo" width="200"/>
<el-table-column label="用户" align="center" prop="userName" /> <el-table-column label="用户" align="center" prop="userName" />
<el-table-column label="设备SN" align="center" prop="sn" /> <el-table-column label="设备SN" align="center" prop="sn" />
<el-table-column label="车牌号" align="center" prop="vehicleNum" /> <el-table-column label="车牌号" align="center" prop="vehicleNum" />
@ -66,22 +66,22 @@
<dict-tag :options="dict.type.et_order_status" :value="scope.row.status"/> <dict-tag :options="dict.type.et_order_status" :value="scope.row.status"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="支付时间" align="center" prop="payTime" width="150"> <el-table-column label="支付时间" align="center" prop="payTime" width="140">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.payTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.payTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="开始骑行时间" align="center" prop="unlockTime" width="150"> <el-table-column label="开始骑行时间" align="center" prop="unlockTime" width="140">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.unlockTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.unlockTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="结束骑行时间" align="center" prop="returnTime" width="150"> <el-table-column label="结束骑行时间" align="center" prop="returnTime" width="140">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.returnTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.returnTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="150"> <el-table-column label="创建时间" align="center" prop="createTime" width="140">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
@ -147,7 +147,7 @@
<!-- 添加或修改订单对话框 --> <!-- 添加或修改订单对话框 -->
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body>
<el-form ref="form" :model="form" label-width="110px"> <el-form ref="form" :model="form" label-width="140px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="支付订单编号:">{{ form.orderNo }}</el-form-item> <el-form-item label="支付订单编号:">{{ form.orderNo }}</el-form-item>
@ -175,6 +175,22 @@
</el-col> </el-col>
</el-row> </el-row>
<h2 style="font-weight: bold;font-size: 18px">行程记录</h2> <h2 style="font-weight: bold;font-size: 18px">行程记录</h2>
<el-row v-if="form.tripLogs">
<template v-for="(log, index) in form.tripLogs" >
<el-row :key="index">
<el-col :span="12">
<el-form-item :label="getTypeText(log.type)+'时间:'">
{{ log.createTime }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="getTypeText(log.type)+'地点:'">
{{ log.longitude }}, {{ log.latitude }}
</el-form-item>
</el-col>
</el-row>
</template>
</el-row>
<!-- 显示路径 --> <!-- 显示路径 -->
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
@ -191,11 +207,11 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="预约费用:">{{ formatFee(form.appointmentFee) }}</el-form-item> <el-form-item label="预约费用:">{{ formatFee(form.appointmentFee) }}</el-form-item>
<el-form-item label="调度费:">{{ formatFee(form.dispatchFee) }}</el-form-item> <el-form-item label="运营区外调度费:">{{ formatFee(form.dispatchFee) }}</el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="骑行费用:" >{{ formatFee(form.ridingFee) }}</el-form-item> <el-form-item label="骑行费用:" >{{ formatFee(form.ridingFee) }}</el-form-item>
<el-form-item label="管理费:" >{{ formatFee(form.manageFee) }}</el-form-item> <el-form-item label="停车点外调度费:" >{{ formatFee(form.manageFee) }}</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
@ -212,25 +228,25 @@
<el-form-item label="计费模板:" >{{ form.rule.name }}</el-form-item> <el-form-item label="计费模板:" >{{ form.rule.name }}</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row v-if="form.etRefund">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="预约费退款:">{{ formatFee(form.payFee) }}</el-form-item> <el-form-item label="预约费退款:">{{ formatFee(form.etRefund.appointmentFee) }}</el-form-item>
<el-form-item label="调度费退款:">{{ formatFee(form.payFee) }}</el-form-item> <el-form-item label="调度费退款:">{{ formatFee(form.etRefund.dispatchFee) }}</el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="骑行费用退款:" >{{ formatFee(form.areaName) }}</el-form-item> <el-form-item label="骑行费用退款:" >{{ formatFee(form.etRefund.ridingFee) }}</el-form-item>
<el-form-item label="管理费退款:" >{{ formatFee(form.remainingPower) }}</el-form-item> <el-form-item label="停车点外调度费退款:" >{{ formatFee(form.etRefund.manageFee) }}</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row v-if="form.etRefund">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="退款原因:">{{ form.mac }}</el-form-item> <el-form-item label="退款原因:">{{ form.etRefund.reason }}</el-form-item>
<el-form-item label="退款时间:">{{ form.sn }}</el-form-item> <el-form-item label="退款时间:">{{ form.etRefund.createTime }}</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row v-if="form.etRefund">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="结算总费用:">{{ formatFee(form.mac) }}</el-form-item> <el-form-item label="结算总费用:">{{ formatFee(form.payFee-form.etRefund.appointmentFee-form.etRefund.dispatchFee-form.etRefund.ridingFee-form.etRefund.manageFee) }}</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
@ -259,13 +275,13 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="管理费(元)" prop="manageFee"> <el-form-item label="停车点外调度费(元)" prop="manageFee">
<el-input v-model="form2.manageFee" placeholder="请输入管理费"/> <el-input v-model="form2.manageFee" placeholder="请输入停车点外调度费"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="title2 === '退款'"> <el-col :span="24" v-if="title2 === '退款'">
<el-form-item label="原因" prop="reason"> <el-form-item label="原因" prop="reason">
<el-input v-model="form2.reason" placeholder="请输入管理费"/> <el-input v-model="form2.reason" placeholder="请输入停车点外调度费"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-col> </el-col>
@ -311,6 +327,7 @@ export default {
showPlaceSearchMap: false, showPlaceSearchMap: false,
// //
open: false, open: false,
open2: false,
vehicleNum: null, vehicleNum: null,
// //
queryParams: { queryParams: {
@ -330,6 +347,14 @@ export default {
vehicleNum: null, vehicleNum: null,
mac: null mac: null
}, },
etRefund: {
appointmentFee: null,
ridingFee: null,
dispatchFee: null,
manageFee: null,
reason: null,
createTime: null
},
rule: { rule: {
name: null name: null
}, },
@ -338,11 +363,16 @@ export default {
payFee: null, payFee: null,
appointmentFee: null, appointmentFee: null,
tripRouteStr: null, tripRouteStr: null,
vehicleNum: null vehicleNum: null,
}, },
form2: { form2: {
orderNo: null, orderNo: null,
appointmentFee: null,
ridingFee: null,
dispatchFee: null,
manageFee: null,
reason: null,
createTime: null
}, },
// //
rules: { rules: {
@ -359,33 +389,49 @@ export default {
}; };
}, },
created() { created() {
this.reset();
this.reset2();
this.getList(); this.getList();
}, },
methods: { methods: {
getTypeText(type) {
switch (type) {
case '1':
return '开锁';
case '2':
return '临时锁车';
case '3':
return '解锁';
case '4':
return '关锁';
default:
return ''; //
}
},
changePrice(row){ changePrice(row){
console.log('changePrice') // console.log('changePrice')
const orderId = row.orderId || this.ids const orderId = row.orderId || this.ids
this.reset2(); this.reset2();
getOrder(orderId).then(response => { getOrder(orderId).then(response => {
this.form2 = response.data; this.form2 = response.data;
console.log("this.form2============="+JSON.stringify(this.form2)); // console.log("this.form2============="+JSON.stringify(this.form2));
this.open2 = true; this.open2 = true;
this.title2 = "改价"; this.title2 = "改价";
}); });
}, },
refund(row){ refund(row){
console.log('changePrice') // console.log('changePrice')
const orderId = row.orderId || this.ids const orderId = row.orderId || this.ids
this.reset2(); this.reset2();
getOrder(orderId).then(response => { getOrder(orderId).then(response => {
this.form2 = response.data; this.form2 = response.data;
console.log("this.form2============="+JSON.stringify(this.form2)); // console.log("this.form2============="+JSON.stringify(this.form2));
this.open2 = true; this.open2 = true;
this.title2 = "退款"; this.title2 = "退款";
}); });
}, },
returnVehicle(row){ returnVehicle(row){
console.log('returnVehicle--------------'+JSON.stringify(row)) // console.log('returnVehicle--------------'+JSON.stringify(row))
this.$modal.confirm('是否确认辅助还车MAC为' + row.sn + '"的设备吗?').then(function() { this.$modal.confirm('是否确认辅助还车MAC为' + row.sn + '"的设备吗?').then(function() {
return returnVehicle({orderNo:row.orderNo,returnType:"2"}); return returnVehicle({orderNo:row.orderNo,returnType:"2"});
}).then(() => { }).then(() => {
@ -395,7 +441,7 @@ export default {
}); });
}, },
formatDistance(row){ formatDistance(row){
console.log("============"+JSON.stringify(row)) // console.log("============"+JSON.stringify(row))
// console.log("============"+row.distance) // console.log("============"+row.distance)
if(row == undefined || row.distance == null){ if(row == undefined || row.distance == null){
return ""; return "";
@ -437,8 +483,10 @@ export default {
return '支付宝'; return '支付宝';
case 'wx': case 'wx':
return '微信'; return '微信';
case 'sys':
return '系统自动';
default: default:
return '未知'; return '';
} }
}, },
formatDuration(row) { formatDuration(row) {
@ -496,6 +544,22 @@ export default {
vehicleNum: null, vehicleNum: null,
mac: null mac: null
}, },
etRefund: {
appointmentFee: null,
ridingFee: null,
dispatchFee: null,
manageFee: null,
reason: null,
createTime: null
},
appointmentFee: null,
ridingFee: null,
dispatchFee: null,
manageFee: null,
returnTime: null,
user: {
nickName: null
},
rule: { rule: {
name: null name: null
} }
@ -505,6 +569,14 @@ export default {
reset2() { reset2() {
this.form2 = { this.form2 = {
orderId: null, orderId: null,
orderNo: null,
payTime: null,
appointmentFee: null,
ridingFee: null,
dispatchFee: null,
manageFee: null,
reason: null,
createTime: null
}; };
this.resetForm("form2"); this.resetForm("form2");
}, },
@ -535,7 +607,11 @@ export default {
this.reset(); this.reset();
const orderId = row.orderId || this.ids const orderId = row.orderId || this.ids
getOrder(orderId).then(response => { getOrder(orderId).then(response => {
console.log("=====getOrder======="+JSON.stringify(response))
this.form = response.data; this.form = response.data;
if (response.data.etRefund) {
this.form.etRefund = response.data.etRefund;
}
this.showPlaceSearchMap = true; this.showPlaceSearchMap = true;
this.open = true; this.open = true;
this.title = "订单详情"; this.title = "订单详情";
@ -544,7 +620,7 @@ export default {
}, },
/** 提交改价 */ /** 提交改价 */
submitChangePrice(){ submitChangePrice(){
console.log("=====submitChangePrice======="+this.form2) // console.log("=====submitChangePrice======="+this.form2)
changePrice(this.form2).then(response => { changePrice(this.form2).then(response => {
this.$modal.msgSuccess("改价成功"); this.$modal.msgSuccess("改价成功");
this.open2 = false; this.open2 = false;
@ -553,7 +629,7 @@ export default {
}, },
/** 提交退款 */ /** 提交退款 */
submitRefund(){ submitRefund(){
console.log("=====submitRefund======="+this.form2) // console.log("=====submitRefund======="+this.form2)
refund(this.form2).then(response => { refund(this.form2).then(response => {
this.$modal.msgSuccess("退款成功"); this.$modal.msgSuccess("退款成功");
this.open2 = false; this.open2 = false;
@ -606,4 +682,7 @@ export default {
.el-form-item--mini.el-form-item { .el-form-item--mini.el-form-item {
margin-bottom: 10px !important; margin-bottom: 10px !important;
} }
.el-dialog:not(.is-fullscreen) {
margin-top: 1vh !important;
}
</style> </style>

View File

@ -1,6 +1,16 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="运营区" prop="areaId" >
<el-select v-model="queryParams.areaId" placeholder="请选择运营区">
<el-option
v-for="item in areaOptions"
:key="item.areaId"
:label="item.areaName"
:value="item.areaId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
v-model="dateRange" v-model="dateRange"
@ -45,19 +55,11 @@
<el-table-column label="调度费用" align="center" prop="dispatchFee" /> <el-table-column label="调度费用" align="center" prop="dispatchFee" />
</el-table> </el-table>
<!-- <pagination-->
<!-- v-show="total>0"-->
<!-- :total="total"-->
<!-- :page.sync="queryParams.pageNum"-->
<!-- :limit.sync="queryParams.pageSize"-->
<!-- @pagination="getList"-->
<!-- />-->
</div> </div>
</template> </template>
<script> <script>
import { listReconciliation } from "@/api/system/reconciliation"; import { listReconciliation,getAreaList } from "@/api/system/reconciliation";
export default { export default {
name: "Reconciliation", name: "Reconciliation",
@ -79,6 +81,8 @@ export default {
total: 0, total: 0,
// 退 // 退
refundList: [], refundList: [],
//
areaOptions: [],
// //
title: "", title: "",
// //
@ -91,7 +95,8 @@ export default {
orderNo: null, orderNo: null,
userId: null, userId: null,
amount: null, amount: null,
itemDesc: null itemDesc: null,
areaId: null,
}, },
// //
form: {}, form: {},
@ -107,7 +112,13 @@ export default {
}; };
}, },
created() { created() {
getAreaList().then(response => {
this.areaOptions = response.data;
if (this.areaOptions.length >= 1) {
this.queryParams.areaId = this.areaOptions[0].areaId;
}
this.getList(); this.getList();
});
}, },
methods: { methods: {
/** 查询退款订单列表 */ /** 查询退款订单列表 */

View File

@ -118,6 +118,8 @@
<el-table-column label="手机号" align="center" key="phonenumber" prop="phonenumber" v-if="columns[3].visible" width="120" /> <el-table-column label="手机号" align="center" key="phonenumber" prop="phonenumber" v-if="columns[3].visible" width="120" />
<el-table-column label="移动端" align="center" key="appName" prop="appName" v-if="columns[3].visible" width="120" /> <el-table-column label="移动端" align="center" key="appName" prop="appName" v-if="columns[3].visible" width="120" />
<el-table-column label="余额" align="center" key="balance" prop="balance" v-if="columns[4].visible" width="120" /> <el-table-column label="余额" align="center" key="balance" prop="balance" v-if="columns[4].visible" width="120" />
<el-table-column label="系统用户" align="center" key="userName" prop="sysUser.userName" v-if="columns[3].visible" width="120" />
<el-table-column label="系统用户昵称" align="center" key="nickName" prop="sysUser.nickName" v-if="columns[3].visible" width="120" />
<el-table-column label="最后登录时间" align="center" prop="createTime" v-if="columns[5].visible" width="160"> <el-table-column label="最后登录时间" align="center" prop="createTime" v-if="columns[5].visible" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.loginDate) }}</span> <span>{{ parseTime(scope.row.loginDate) }}</span>