This commit is contained in:
邱贞招 2024-07-03 21:18:55 +08:00
parent 29924c6da7
commit f402635178
14 changed files with 510 additions and 135 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -78,3 +78,12 @@ export function returnVehicle(data) {
params: data
})
}
// 押金抵扣
export function deduction(data) {
return request({
url: '/appVerify/order/deduction',
method: 'post',
params: data
})
}

View File

@ -42,3 +42,17 @@ export function delParking(parkingId) {
method: 'delete'
})
}
// 停车区状态修改
export function changeParkingStatus(parkingId, status) {
const data = {
parkingId,
status
}
return request({
url: '/system/parking/changeParkingStatus',
method: 'put',
data: data
})
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@ -175,23 +175,30 @@ export default {
this.map.add(text);
},
formarStatus(status,onlineStatus){
if(onlineStatus == "0"){
return globalConfig.icon.red;
}else{
if(status == "0"){
return globalConfig.icon.gray;
}else if(status == "1"){
return globalConfig.icon.blue;
}else if(status == "2"){
return globalConfig.icon.yellow;
}else if(status == "3"){
return globalConfig.icon.yellow;
}else if(status == "4"){
return globalConfig.icon.light_blue;
}else if(status == "8"){
return globalConfig.icon.gray;
}else if(status == "9"){
return globalConfig.icon.gray;
function formarStatus(status,onlineStatus) {
if(onlineStatus == "0"){
if(status == "3"){
return globalConfig.icon.redyellow;
}else if(status == "4"){
return globalConfig.icon.orangered;
}
return globalConfig.icon.red;
}else{
if(status == "0"){
return globalConfig.icon.gray;
}else if(status == "1"){
return globalConfig.icon.blue;
}else if(status == "2"){
return globalConfig.icon.green;
}else if(status == "3"){
return globalConfig.icon.yellow;
}else if(status == "4"){
return globalConfig.icon.orange;
}else if(status == "8"){
return globalConfig.icon.gray;
}else if(status == "9"){
return globalConfig.icon.gray;
}
}
}
},

View File

@ -18,8 +18,11 @@ export default {
icon: {
'blue': 'data:image/image/png;base64,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',
'red': 'data:image/image/png;base64,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',
'light_blue': 'data:image/image/png;base64,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',
'gray': 'data:image/image/png;base64,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',
'yellow': 'data:image/image/png;base64,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',
'green':'data:image/image/png;base64,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',
'orange':'data:image/image/png;base64,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',
'orangered':'data:image/image/png;base64,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',
'redyellow':'data:image/image/png;base64,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',
}
}

View File

@ -178,12 +178,57 @@
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="12">-->
<!-- <el-form-item label="客服电话" prop="phone">-->
<!-- <el-input v-model="form.servicePhone" placeholder="请输入客服电话" />-->
<!-- </el-form-item>-->
<!-- </el-col>-->
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="客服电话" prop="phone">
<el-input v-model="form.servicePhone" placeholder="请输入客服电话" />
<el-form-item label="自定义客服" prop="customService" label-width="100px">
<el-switch v-model="form.customService" class="drawer-switch" />
</el-form-item>
</el-col>
</el-row>
<div v-if="form.customService == '1'">
<el-row>
<el-col :span="8">
<el-form-item label="自定义客服名称1" prop="serviceName1" label-width="180px">
<el-input v-model="form.serviceName1" placeholder="请输入自定义客服名称" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电话" prop="servicePhone1" >
<el-input v-model="form.servicePhone1" placeholder="请输入客服电话" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="自定义客服名称2" prop="serviceName2" label-width="180px">
<el-input v-model="form.serviceName2" placeholder="请输入自定义客服名称" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电话" prop="servicePhone2" >
<el-input v-model="form.servicePhone2" placeholder="请输入客服电话" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="自定义客服名称3" prop="serviceName3" label-width="180px">
<el-input v-model="form.serviceName3" placeholder="请输入自定义客服名称" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电话" prop="servicePhone3" >
<el-input v-model="form.servicePhone3" placeholder="请输入客服电话" />
</el-form-item>
</el-col>
</el-row>
</div>
<el-row v-if="form.areaTime == 2">
<el-col :span="12">
<el-form-item label="自定义">
@ -392,6 +437,7 @@ export default {
total: 0,
//
dateRange: [],
customService: false,
//
ruleOptions: [],
provinceList: [],
@ -602,13 +648,14 @@ export default {
getArea(areaId).then(response => {
this.form = response.data;
this.form.ruleIds = response.ruleIds
response.data.customService == "1" ? this.form.customService = true : this.form.customService = false
this.open = true;
this.title = "修改运营区";
this.key++;
listFee().then(response => {
this.ruleOptions = response.rows;
this.open = true;
this.title = "添加运营区";
this.title = "修改运营区";
this.key++;
});
// this.getCityList()
@ -635,7 +682,12 @@ export default {
// rest data
let data = { ...rest };
console.log("this.form=================",data)
if (data.customService) {
data.customService = "1";
}else{
data.customService = "0";
}
// console.log(data, 'data without cityList, countyList, provinceList');
// console.log(this.form,'formformformformform');
if (this.form.areaId != null) {

View File

@ -90,6 +90,16 @@
<dict-tag :options="dict.type.et_parking_type" :value="scope.row.type"/>
</template>
</el-table-column>
<el-table-column label="状态" align="center" key="status" >
<template slot-scope="scope">
<el-switch
v-model="scope.row.status"
active-value="0"
inactive-value="1"
@change="handleStatusChange(scope.row)"
></el-switch>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
@ -177,7 +187,14 @@
</template>
<script>
import { listParking, getParking, delParking, addParking, updateParking } from "@/api/system/parking";
import {
listParking,
getParking,
delParking,
addParking,
updateParking,
changeParkingStatus
} from '@/api/system/parking'
import {getArea, optionselect as getAreaOptionselect} from "@/api/system/area";
@ -244,6 +261,17 @@ export default {
this.getAreaList();
},
methods: {
//
handleStatusChange(row) {
let text = row.status === "0" ? "启用" : "停用";
this.$modal.confirm('确认要"' + text + '""' + row.parkingName + '"吗?').then(function() {
return changeParkingStatus(row.parkingId, row.status);
}).then(() => {
this.$modal.msgSuccess(text + "成功");
}).catch(function() {
row.status = row.status === "0" ? "1" : "0";
});
},
mapList(data){
let mapListJson = JSON.stringify(data);
console.log("mapListJson:"+mapListJson);

View File

@ -90,6 +90,16 @@
<dict-tag :options="dict.type.et_parking_type" :value="scope.row.type"/>
</template>
</el-table-column>
<el-table-column label="状态" align="center" key="status" >
<template slot-scope="scope">
<el-switch
v-model="scope.row.status"
active-value="0"
inactive-value="1"
@change="handleStatusChange(scope.row)"
></el-switch>
</template>
</el-table-column>
<!-- <el-table-column label="照片" align="center" prop="picture" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <image-preview :src="scope.row.picture" :width="50" :height="50"/>-->
@ -188,7 +198,14 @@
</template>
<script>
import { listParking, getParking, delParking, addParking, updateParking } from "@/api/system/parking";
import {
listParking,
getParking,
delParking,
addParking,
updateParking,
changeParkingStatus
} from '@/api/system/parking'
import {getArea, optionselect as getAreaOptionselect} from "@/api/system/area";
@ -255,6 +272,17 @@ export default {
this.getAreaList();
},
methods: {
//
handleStatusChange(row) {
let text = row.status === "0" ? "启用" : "停用";
this.$modal.confirm('确认要"' + text + '""' + row.parkingName + '"吗?').then(function() {
return changeParkingStatus(row.parkingId, row.status);
}).then(() => {
this.$modal.msgSuccess(text + "成功");
}).catch(function() {
row.status = row.status === "0" ? "1" : "0";
});
},
mapList(data){
let mapListJson = JSON.stringify(data);
console.log("mapListJson:"+mapListJson);

View File

@ -96,6 +96,16 @@
<image-preview :src="scope.row.picture" :width="50" :height="50"/>
</template>
</el-table-column>
<el-table-column label="状态" align="center" key="status" >
<template slot-scope="scope">
<el-switch
v-model="scope.row.status"
active-value="0"
inactive-value="1"
@change="handleStatusChange(scope.row)"
></el-switch>
</template>
</el-table-column>
<!-- <el-table-column label="区域" align="center" prop="areaId" />-->
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
@ -193,7 +203,7 @@
</template>
<script>
import { listParking, getParking, delParking, addParking, updateParking } from "@/api/system/parking";
import { listParking, getParking, delParking, addParking, updateParking, changeParkingStatus } from "@/api/system/parking";
import {getArea, optionselect as getAreaOptionselect} from "@/api/system/area";
@ -263,6 +273,17 @@ export default {
this.getAreaList();
},
methods: {
//
handleStatusChange(row) {
let text = row.status === "0" ? "启用" : "停用";
this.$modal.confirm('确认要"' + text + '""' + row.parkingName + '"吗?').then(function() {
return changeParkingStatus(row.parkingId, row.status);
}).then(() => {
this.$modal.msgSuccess(text + "成功");
}).catch(function() {
row.status = row.status === "0" ? "1" : "0";
});
},
formatDistance(row) {
if (typeof row.error === 'number') {
return `${row.error}`;

View File

@ -27,6 +27,14 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="车牌号" prop="vehicleNum">
<el-input style="width: 150px"
v-model="queryParams.vehicleNum"
placeholder="请输入车牌号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="在线状态" prop="onlineStatus">
<el-select v-model="queryParams.onlineStatus" placeholder="请选择在线状态" clearable>
<el-option
@ -141,6 +149,7 @@
<el-table-column label="运营区" align="center" prop="areaName" />
<el-table-column label="定位" align="center" prop="location" :show-overflow-tooltip="true"/>
<el-table-column label="电压(V)" align="center" prop="voltage" />
<el-table-column label="信号强度" align="center" prop="signalStrength" />
<el-table-column label="版本" align="center" prop="version" />
<el-table-column label="剩余电量(%)" align="center" prop="remainingPower" />
<el-table-column label="车辆状态" align="center" prop="status">
@ -198,7 +207,7 @@
icon="el-icon-edit"
@click="handleListing(scope.row)"
v-hasPermi="['system:fault:edit']"
>{{ scope.row.status === '0' ? '上架' : '下架' }}</el-button>
>{{ scope.row.status === '0' ? '上线' : '下线' }}</el-button>
<el-button v-if="scope.row.status!= '3'"
size="mini"
type="text"
@ -658,7 +667,7 @@ export default {
let text = form1.status === '0'? '上线': '下线';
form1.status = form1.status === '0'? '1': '0';
if(form1.areaId == null){
this.$modal.msgError("未绑定运营区,无法上")
this.$modal.msgError("未绑定运营区,无法上线")
}else{
this.$modal.confirm('是否确认'+text+'设备MAC为"' + form1.mac + '"的设备吗?').then(function() {
return updateDevice(form1);

View File

@ -1,10 +1,44 @@
<template>
<div class="container">
<div id="container"></div>
<div class="tips">
<div class="tip-item">
<img :src="icons.blue" alt="蓝色">
<span class="span-class">待骑行</span>
</div>
<div class="tip-item">
<img :src="icons.green" alt="绿色">
<span class="span-class">预约中</span>
</div>
<div class="tip-item">
<img :src="icons.yellow" alt="黄色">
<span class="span-class">骑行中</span>
</div>
<div class="tip-item">
<img :src="icons.orange" alt="橙色">
<span class="span-class">临时停车</span>
</div>
<div class="tip-item">
<img :src="icons.red" alt="红色">
<span class="span-class">离线中</span>
</div>
<div class="tip-item">
<img :src="icons.redyellow" alt="红黄">
<span class="span-class">离线骑行</span>
</div>
<div class="tip-item">
<img :src="icons.orangered" alt="橙红">
<span class="span-class">离线临时锁车</span>
</div>
<div class="tip-item">
<img :src="icons.gray" alt="灰色">
<span class="span-class">未上架/下线</span>
</div>
</div>
<div class="input-card">
<!-- <div >{{tips}}</div>-->
<el-button @click="setFitView()">全局查看</el-button>
<el-button @click="changeMapStyle()">切换地图</el-button>
<el-button @click="showMarkers">显示/隐藏文字</el-button>
</div>
</div>
@ -16,7 +50,32 @@
import {listArea} from "@/api/system/area";
import { listParking } from '@/api/system/parking'
function formarStatus(status,onlineStatus) {
if(onlineStatus == "0"){
if(status == "3"){
return globalConfig.icon.redyellow;
}else if(status == "4"){
return globalConfig.icon.orangered;
}
return globalConfig.icon.red;
}else{
if(status == "0"){
return globalConfig.icon.gray;
}else if(status == "1"){
return globalConfig.icon.blue;
}else if(status == "2"){
return globalConfig.icon.green;
}else if(status == "3"){
return globalConfig.icon.yellow;
}else if(status == "4"){
return globalConfig.icon.orange;
}else if(status == "8"){
return globalConfig.icon.gray;
}else if(status == "9"){
return globalConfig.icon.gray;
}
}
}
export default {
name: "map-view",
data() {
@ -24,12 +83,18 @@
AMap: null,
map: null, //
markers: [],
labels: [],
tips: null,
//
areaList: [],
lon: null,
lat: null,
area:null,
icons: globalConfig.icon,
cluster: null,
data: [],
show: false,
//
deviceList: [],
parkingList: [],
@ -45,6 +110,28 @@
this.map?.destroy();
},
methods: {
showMarkers() {
if(this.show){
// this.markers.forEach(marker => {
// marker.show();
// });
this.labels.forEach(label => {
label.show();
});
}else{
// this.markers.forEach(marker => {
// marker.hide();
// });
this.labels.forEach(label => {
label.hide();
});
}
this.show = !this.show;
const elements = document.querySelectorAll('.apiary-marker-name');
elements.forEach(element => {
element.style.visibility = this.show ? 'hidden' : 'visible';
});
},
async getAreaList(){
listArea().then(response => {
this.areaList = response.rows;
@ -105,7 +192,6 @@
AMapLoader.load({
key: globalConfig.aMap.key, // WebKey load
version: "2.0", // JSAPI 1.4.15
plugins: ['AMap.Scale'], // 使'AMap.Scale'
}).then((AMap) => {
this.map = new AMap.Map("container", {
// id
@ -134,44 +220,135 @@
this.addNoriding(JSON.parse(noriding.boundaryStr) || [],noriding.parkingName,noriding.longitude,noriding.latitude);
this.addMarker2(noriding,"https://lxnapi.ccttiot.com/FmX1diEPPbFYe1vcUfKp6qbKzzh2",noriding.parkingName,"#ffcc00");
});
setTimeout(() => {
this.setFitView();
}, 1000);
// setTimeout(() => {
// this.setFitView();
// }, 2000);
}).catch((e) => {
console.log(e);
});
},
//
freshMarker(points) {
let that = this;
//
if (this.cluster != null) {
this.cluster.setData(points);
}else {
this.map.plugin(["AMap.MarkerCluster"], () => {
that.cluster = new AMap.MarkerCluster(
this.map, //
points, // lnglat
{
styles: this.getStyles(),
renderMarker: this.getRenderMarker, //
}
);
that.cluster.on('click', that.onClickCluster)
});
}
},
//
onClickCluster(e) {
this.ids = e.clusterData.map(item => item.apiaryId);
if (this.ids.length > 100) {
this.$message.warning("仅能查看最多100条数据");
return;
}
// > 1
if (this.ids.length > 1) {
this.showDialog = true;
}
},
//
getRenderMarker(context) {
let device = context.data[0];
let content = `
<div class="apiary-marker">
<div style="visibility: ${this.show ? 'hidden' : 'visible'};" class="apiary-marker-name">${device.sn}</div>
<image class="apiary-marker-img" src='${formarStatus(device.status,device.onlineStatus)}'/>
</div>
`
context.marker.setContent(content);
context.marker.on("click", this.onClickMarker(device.sn))
},
//
onClickMarker(e) {
console.log("点击非聚合点====",e)
},
getStyles() {
return [
{
//1-10
url: "//a.amap.com/jsapi_demos/static/images/blue.png", //
size: new AMap.Size(32, 32), //
offset: new AMap.Pixel(-16, -16), //
textColor: "#fff", //
},
{
//11-100
url: "//a.amap.com/jsapi_demos/static/images/green.png",
size: new AMap.Size(32, 32),
offset: new AMap.Pixel(-16, -16),
textColor: "#fff",
},
{
//101-1000
url: "//a.amap.com/jsapi_demos/static/images/orange.png",
size: new AMap.Size(36, 36),
offset: new AMap.Pixel(-18, -18),
textColor: "#fff"
},
{
//1001-10000
url: "//a.amap.com/jsapi_demos/static/images/red.png",
size: new AMap.Size(48, 48),
offset: new AMap.Pixel(-24, -24),
textColor: "#fff"
},
{
//10001-100000
url: "//a.amap.com/jsapi_demos/static/images/red.png",
size: new AMap.Size(48, 48),
offset: new AMap.Pixel(-24, -24),
textColor: "#fff"
},
]
},
addMarker2(parking, icon,title,color) {
let marker = new AMap.Marker({
map: this.map,
icon: new AMap.Icon({
image: icon,
size: new AMap.Size(38, 55), //
imageSize: new AMap.Size(38, 55) //
size: new AMap.Size(25, 36), //
imageSize: new AMap.Size(25, 36) //
}),
position: [parking.longitude, parking.latitude],
offset: new AMap.Pixel(-20, -50)
offset: new AMap.Pixel(-12.5, -36)
});
this.markers.push(marker);
console.log("title============="+title)
// Text
let text = new AMap.Text({
text: title,
anchor: 'center', //
position: [parking.longitude, parking.latitude],
offset: new AMap.Pixel(0, -70),
offset: new AMap.Pixel(0, -50),
style: {
'background-color': color, //
'border': 'none', //
'border-radius': '5px', // 5px
'color': 'white', //
'font-size': '14px', //
'padding': '5px 10px' //
'font-size': '12px', //
}
});
//
this.map.add(text);
console.log("text=============",text)
this.labels.push(text)
},
deviceMarker(){
listDevice({pageNum: 1,pageSize: 999}).then(response => {
@ -180,63 +357,27 @@
//
if (device.longitude !== null && device.latitude !== null &&
!isNaN(device.longitude) && !isNaN(device.latitude)) {
this.addMarker(device.longitude, device.latitude, device.status, device.onlineStatus,device.sn);
this.data.push({
lnglat: [device.longitude, device.latitude],
status: device.status,
onlineStatus: device.onlineStatus,
sn: device.sn
});
// this.addMarker(device.longitude, device.latitude, device.status, device.onlineStatus,device.sn);
} else {
console.warn(`无效的经纬度值: 经度=${device.longitude}, 纬度=${device.latitude}`);
}
});
//
this.freshMarker(this.data);
}).catch(error => {
console.error('获取设备列表失败:', error);
});
},
addMarker(lng, lat, status, onlineStatus,title) {
function formarStatus(status,onlineStatus) {
if(onlineStatus == "0"){
return globalConfig.icon.red;
}else{
if(status == "0"){
return globalConfig.icon.gray;
}else if(status == "1"){
return globalConfig.icon.blue;
}else if(status == "2"){
return globalConfig.icon.yellow;
}else if(status == "3"){
return globalConfig.icon.yellow;
}else if(status == "4"){
return globalConfig.icon.light_blue;
}else if(status == "8"){
return globalConfig.icon.gray;
}else if(status == "9"){
return globalConfig.icon.gray;
}
}
}
let marker = new AMap.Marker({
map: this.map,
icon: formarStatus(status,onlineStatus),
position: [lng, lat],
offset: new AMap.Pixel(-20, -40)
});
// Text
let text = new AMap.Text({
text: title,
anchor: 'center', //
position: [lng, lat],
offset: new AMap.Pixel(0, -55),
style: {
'background-color': '#1890ff', //
'border': 'none', //
'border-radius': '5px', // 5px
'color': 'white', //
'font-size': '14px', //
'padding': '5px 10px' //
}
});
//
this.map.add(text);
},
//
@ -289,21 +430,6 @@
});
});
this.map.add(polygon);
//
// let text = new AMap.Text({
// text: title,
// anchor: 'center', //
// style: {
// 'background-color': 'transparent', //
// 'border': 'none', //
// 'color': '#ff0000', //
// 'font-size': '14px'
// },
// position: [lon,lat] //
// });
//
// this.map.add(text);
},
addNoParking(data) {
let polygon = new AMap.Polygon({
@ -354,21 +480,6 @@
});
});
this.map.add(polygon);
//
// let text = new AMap.Text({
// text: title,
// anchor: 'center', //
// style: {
// 'background-color': 'transparent', //
// 'border': 'none', //
// 'color': '#ff0000', //
// 'font-size': '14px'
// },
// position: [lon,lat] //
// });
//
// this.map.add(text);
}
},
};
@ -388,4 +499,51 @@
right: 15px;
}
}
.tips{
display: flex;
flex-direction: column;
position: absolute;
top: 15px;
left: 15px;
.tip-item {
display: flex;
align-items: center; /* 垂直居中 */
margin-bottom: 10px; /* 可以根据需要调整间距 */
color: #38383b;
.span-class{
background-color: rgba(255, 255, 255, 0.5);
padding: 3px 5px;
border-radius: 5px;
font-weight: 600;
font-size: 13px;
}
}
img{
width: 25px;
padding-top: 5px;
height: auto; /* 保持图片高度自适应 */
margin-right: 10px; /* 图片与文字间距,根据需要调整 */
}
}
</style>
<style lang="scss">
.apiary-marker{
position: relative;
top: -19px;
left: -19px;
display: flex;
flex-direction: column;
align-items: center;
.apiary-marker-img{
width: 25px;
}
.apiary-marker-name{
background-color: #1890ff;
border: none;
border-radius: 5px;
color: white;
font-size: 12px;
padding: 5px;
}
}
</style>

View File

@ -70,7 +70,7 @@
<!-- <el-table-column label="订单id" align="center" prop="orderId" />-->
<el-table-column label="区域" align="center" prop="area" />
<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" width="100"/>
<el-table-column label="设备SN" align="center" prop="sn" />
<el-table-column label="车牌号" align="center" prop="vehicleNum" />
<el-table-column label="状态" align="center" prop="status">
@ -78,27 +78,27 @@
<dict-tag :options="dict.type.et_order_status" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="支付时间" align="center" prop="payTime" width="140">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.payTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="开始骑行时间" align="center" prop="unlockTime" width="140">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.unlockTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="结束骑行时间" align="center" prop="returnTime" width="140">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.returnTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="140">
<el-table-column label="创建时间" align="center" prop="createTime" width="90">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="支付方式" align="center" prop="payType">
<el-table-column label="开始骑行" align="center" prop="unlockTime" width="90">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.unlockTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="结束骑行" align="center" prop="returnTime" width="90">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.returnTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="支付时间" align="center" prop="payTime" width="90">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.payTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="支付方式" align="center" prop="payType" width="80">
<template slot-scope="scope">
<dict-tag :options="dict.type.et_pay_type" :value="scope.row.payType"/>
</template>
@ -108,10 +108,10 @@
<dict-tag :options="dict.type.et_order_type" :value="scope.row.type"/>
</template>
</el-table-column>
<el-table-column label="金额(元)" align="center" prop="totalFee" />
<el-table-column label="金额(元)" align="center" prop="totalFee" width="70"/>
<el-table-column label="备注" align="center" prop="mark" />
<el-table-column label="订单时长" align="center" prop="duration" :formatter="formatDuration"/>
<el-table-column label="距离(公里)" align="center" prop="distance" :formatter="formatDistance"/>
<el-table-column label="距离" align="center" prop="distance" :formatter="formatDistance"/>
<el-table-column label="操作" align="center" width="150" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -129,6 +129,14 @@
@click="changePrice(scope.row)"
v-hasPermi="['system:order:edit']"
>改价</el-button>
<el-button
size="mini"
type="text"
v-if="scope.row.status == 1 || scope.row.status == 3"
icon="el-icon-edit"
@click="deduction(scope.row)"
v-hasPermi="['system:order:edit']"
>押金抵扣</el-button>
<el-button
size="mini"
type="text"
@ -308,7 +316,17 @@
</template>
<script>
import { listOrder, getOrder, delOrder, addOrder, updateOrder, changePrice, refund,returnVehicle } from '@/api/system/order'
import {
listOrder,
getOrder,
delOrder,
addOrder,
updateOrder,
changePrice,
refund,
returnVehicle,
deduction
} from '@/api/system/order'
import TrajectoryMap from '@/components/Map/TrajectoryMap'
import { optionselect as getAreaOptionselect } from '@/api/system/area'
@ -443,6 +461,16 @@ export default {
this.title2 = "改价";
});
},
//
deduction(row){
this.$modal.confirm('是否确认用押金抵扣?').then(function() {
return deduction({orderNo:row.orderNo});
}).then(() => {
this.getList();
this.$modal.msgSuccess("操作成功");
}).catch(() => {
});
},
refund(row){
// console.log('changePrice')
const orderId = row.orderId || this.ids

View File

@ -261,6 +261,18 @@
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="运营区" prop="areaId" >
<el-select v-model="form.areaId" clearable 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-col>
</el-row>
<el-row>
<el-col :span="24">
@ -313,6 +325,7 @@ import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUs
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { listArea } from '@/api/system/area'
export default {
name: "User",
@ -334,6 +347,8 @@ export default {
single: true,
//
multiple: true,
//
areaOptions: [],
//
showSearch: true,
//
@ -447,6 +462,9 @@ export default {
this.loading = false;
}
);
listArea(this.queryParams).then(response => {
this.areaOptions = response.rows;
});
},
/** 查询运营商下拉树结构 */
getDeptTree() {