调整
This commit is contained in:
parent
29924c6da7
commit
f402635178
Binary file not shown.
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 17 KiB |
|
@ -78,3 +78,12 @@ export function returnVehicle(data) {
|
|||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
// 押金抵扣
|
||||
export function deduction(data) {
|
||||
return request({
|
||||
url: '/appVerify/order/deduction',
|
||||
method: 'post',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
|
|
@ -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 |
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -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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',
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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} 米`;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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, // 申请好的Web端开发者Key,首次调用 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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Reference in New Issue
Block a user