task#10514,调度app详情地图展示

This commit is contained in:
2024-01-30 14:10:28 +08:00
parent 92655a7181
commit 56f7df75e7
8 changed files with 214 additions and 36 deletions

View File

@ -28,6 +28,6 @@
serviceHost: 'https://api.sinoassist.com/_AMapService', serviceHost: 'https://api.sinoassist.com/_AMapService',
} }
</script> </script>
<script src="https://webapi.amap.com/maps?v=1.4.15&key=2560bbf04daef66c810c5e6a97e8c508"></script> <script src="https://webapi.amap.com/maps?v=1.4.15&key=2560bbf04daef66c810c5e6a97e8c508&plugin=AMap.Polyline"></script>
</body> </body>
</html> </html>

BIN
src/assets/realApoint.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
src/assets/realBpoint.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
src/assets/realCpoint.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -15,12 +15,18 @@ let token = urlParams.get('token') ;
localStorage.setItem('token', token); localStorage.setItem('token', token);
service.interceptors.request.use( service.interceptors.request.use(
config => { config => {
let reqUrl=config.url
config.data = config.contentType ? config.data : qs.stringify(config.data) config.data = config.contentType ? config.data : qs.stringify(config.data)
config.headers['Content-Type'] = config.contentType || 'application/x-www-form-urlencoded' config.headers['Content-Type'] = config.contentType || 'application/x-www-form-urlencoded'
const token = localStorage.getItem('token'); // const token = localStorage.getItem('token');
// let token='eyJhbGciOiJIUzI1NilsInR5cCI6IkpXVCJ9.eyJzdWliOiJiZXNoaTAxliwiYXVkljpblnN1cHBsaWVyLWFwcCJdLCJuYmYiOiE2OTQwNzYzNTQsInVzZXJfaW5mbyl6eyJ1c2VySWQiOjUONTg4LCJwaG9uZSI6ljE4MTE2MzMOOTAyliwibmFtZSI6lumXg-a1i-ivleWViilsInN1cHBsaWVyTmFtZSI6luS4iua1t-a1i-ivleS-m-W6l0WVhilsInN1cHBsaWVySWQiOiMzMDQxLCJzdXBwbGcIR5cGUiOiEsInVzZXJuYW1lljoiY2VzaGkwMSIsInVzZXJUeXBlljoicmVzY3VIQXBwliwiYXVOaG9yaXRpZXMiOltdfSwic2NvcGUiOlsiYWxsllOsImlzcyl6Imh0dHBzOi8vc2lub2Fzc2lzdC5ib20iLCJleHAiOiE20TQxNjl3NTQsImlhdC16MTY5NDA3NiM1NHo.bPzhfNNw-VLnNJcmR9OpWPavX6hWYNOTOsHD1oMvZ3A' // let token='28adfbc810248f777b062e9a9177f273'
config.headers['Authorization'] = `${token}`; let token='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJzb25nIiwiYXVkIjpbInN1cHBsaWVyLWFwcCJdLCJuYmYiOjE3MDY1ODU2NzIsInVzZXJfaW5mbyI6eyJ1c2VySWQiOjU0NjU0LCJwaG9uZSI6IjE3NjMwMDM1NjU4IiwibmFtZSI6InNvbmciLCJzdXBwbGllck5hbWUiOiLkuIrmtbfmtYvor5XmnI3liqHllYYiLCJzdXBwbGllcklkIjozMzA0MSwic3VwcGxpZXJUeXBlIjoxLCJ1c2VybmFtZSI6InNvbmciLCJ1c2VyVHlwZSI6InJlc2N1ZUFwcCIsImRldmljZUlkIjoiMjJiNDljYTIwZjliODMzMGQ5ODcyMTczZjM5ZWE2OGJjIiwiYXV0aG9yaXRpZXMiOltdfSwic2NvcGUiOlsiYWxsIl0sImlzcyI6Imh0dHBzOi8vc2lub2Fzc2lzdC5jb20iLCJleHAiOjE3MDY2NzIwNzIsImlhdCI6MTcwNjU4NTY3Mn0.8pvEpomf59DxeB71s2kPB5CAvKCqxuyn2RycQ-ScYLU'
// alert(token) if (reqUrl.includes("/driverApp")) {
config.headers['token'] = `${token}`;
} else {
console.log("调度app")
config.headers['Authorization'] = `${token}`;
}
return config return config
}, },
error => { error => {

View File

@ -19,6 +19,7 @@
<div><span>司机姓名:</span><span>{{ detailInfo.driverName }}</span></div> <div><span>司机姓名:</span><span>{{ detailInfo.driverName }}</span></div>
<div><span>车牌号:</span><span>{{ detailInfo.plateNumber }}</span></div> <div><span>车牌号:</span><span>{{ detailInfo.plateNumber }}</span></div>
</div> </div>
<div class="mapContainer" id="container"></div>
</div> </div>
<div class="wiadgeWrap"> <div class="wiadgeWrap">
<div class="lineWrap"> <div class="lineWrap">
@ -119,9 +120,9 @@
<script> <script>
import {myMixins} from "@/utils/myMixins"; import {myMixins} from "@/utils/myMixins";
import {reimburseOrderDetail,reimburseOrderAudit} from "@/api/reimbursementBatch" import {reimburseOrderDetail,reimburseOrderAudit} from "@/api/reimbursementBatch"
import minePosition from "@/assets/minePosition.png"; import minePosition from "@/assets/realApoint.png";
import vehiclePosition from "@/assets/vehiclePosition.png"; import vehiclePosition from "@/assets/realBpoint.png";
import desitationPosition from "@/assets/desitationPosition.png"; import desitationPosition from "@/assets/realCpoint.png";
export default { export default {
name: "caseDetail", name: "caseDetail",
mixins: [myMixins], mixins: [myMixins],
@ -137,6 +138,9 @@ export default {
detailInfo:{}, detailInfo:{},
noClick:true, noClick:true,
state:'',//审核状态 state:'',//审核状态
map: '',
abPath:[],
bcPath:[]
} }
}, },
created() { created() {
@ -156,19 +160,34 @@ export default {
viewMode:'2D',//使用3D视图 viewMode:'2D',//使用3D视图
}) })
this.map.on('complete', () => { this.map.on('complete', () => {
console.log("地图加载完成")
this.mapMarkers(); this.mapMarkers();
}); });
}, },
mapMarkers(){ mapMarkers(){
if(this.abPath && this.abPath.length>0){
console.log("创建折现1")
let polyline1 = new AMap.Polyline({
path: [...this.bcPath],
strokeColor: '#005DC7', // 路径线颜色
strokeWeight: 9 // 路径线宽度
});
this.map.add(polyline1);
}
if(this.bcPath && this.bcPath.length>0){
let polyline2 = new AMap.Polyline({
path: [...this.bcPath],
strokeColor: '#005DC7 ', // 路径线颜色
strokeWeight: 5 // 路径线宽度
});
this.map.add(polyline2);
}
// 车辆位置a点 // 车辆位置a点
let marker = new AMap.Marker({ let marker = new AMap.Marker({
position: [this.detailInfo?.apointLongtitude,this.detailInfo?.apointLatitude position: [this.detailInfo?.apointLongtitude,this.detailInfo?.apointLatitude],
],
icon: new AMap.Icon({ icon: new AMap.Icon({
image: minePosition, // 图片的相对路径 image: minePosition, // 图片的相对路径
size: new AMap.Size(22, 32), // 图标的尺寸 size: new AMap.Size(43, 43), // 图标的尺寸
imageSize: new AMap.Size(22, 32) // 图片的实际尺寸 imageSize: new AMap.Size(43, 43) // 图片的实际尺寸
}), }),
}); });
this.map.add(marker); this.map.add(marker);
@ -177,22 +196,40 @@ export default {
position: [this.detailInfo?.bpointLongtitude,this.detailInfo?.bpointLatitude], position: [this.detailInfo?.bpointLongtitude,this.detailInfo?.bpointLatitude],
icon: new AMap.Icon({ icon: new AMap.Icon({
image: vehiclePosition, // 图片的相对路径 image: vehiclePosition, // 图片的相对路径
size: new AMap.Size(26, 28), // 图标的尺寸 size: new AMap.Size(43, 43), // 图标的尺寸
imageSize: new AMap.Size(26, 28) // 图片的实际尺寸 imageSize: new AMap.Size(43, 43) // 图片的实际尺寸
}) })
}); });
this.map.add(marker1); this.map.add(marker1);
let marker2 = new AMap.Marker({ let marker2=''
position: [this.detailInfo?.cpointLongtitude,this.detailInfo?.cpointLatitude], if(this.detailInfo.cpointLongtitude && this.detailInfo.cpointLatitude){
marker2 = new AMap.Marker({
position: [this.detailInfo?.cpointLongtitude,this.detailInfo?.cpointLatitude],
icon: new AMap.Icon({
image: desitationPosition, // 图片的相对路径
size: new AMap.Size(28, 28), // 图标的尺寸
imageSize: new AMap.Size(28, 28) // 图片的实际尺寸
})
});
this.map.add(marker2);
}
if(this.detailInfo.cpointLongtitude && this.detailInfo.cpointLatitude){
this.map.setFitView([marker,marker1,marker2])
}else{
this.map.setFitView([marker,marker1])
}
},
/* setMarker(lng,lat,imgIcon){
new AMap.Marker({
position: [lng,lat],
icon: new AMap.Icon({ icon: new AMap.Icon({
image: desitationPosition, // 图片的相对路径 image: imgIcon, // 图片的相对路径
size: new AMap.Size(28, 28), // 图标的尺寸 size: new AMap.Size(43, 43), // 图标的尺寸
imageSize: new AMap.Size(28, 28) // 图片的实际尺寸 imageSize: new AMap.Size(43, 43) // 图片的实际尺寸
}) })
}); });
this.map.add(marker2); },*/
this.map.setFitView([marker,marker1,marker2])
},
async submitHandle(){ async submitHandle(){
if(!this.states){ if(!this.states){
this.$toast('审核结果必选') this.$toast('审核结果必选')
@ -214,11 +251,11 @@ export default {
console.log("ressssss",res) console.log("ressssss",res)
}, },
getValue(){ getValue(){
console.log("other",this.other) // console.log("other",this.other)
}, },
isUse(e){ isUse(e){
this.states=e this.states=e
console.log("this.states",this.states) // console.log("this.states",this.states)
if(this.states == 1){ if(this.states == 1){
this.state=2 this.state=2
}else if(this.states == 2){ }else if(this.states == 2){
@ -231,9 +268,17 @@ export default {
}, },
async getOrderDetail(){ async getOrderDetail(){
let res=await reimburseOrderDetail({ let res=await reimburseOrderDetail({
id:this.id id:8//this.id
}) })
this.detailInfo=res.data this.detailInfo=res.data
this.detailInfo?.gpsTrackQOsAB.forEach((item)=>{
let tempArr = new AMap.LngLat(item.lon, item.lat);
this.abPath.push(tempArr)
})
this.detailInfo?.gpsTrackQOsBC.forEach((item)=>{
this.bcPath.push([item.lon,item.lat])
})
console.log("this.abPath",this.abPath)
}, },
} }
} }
@ -293,6 +338,9 @@ export default {
} }
} }
} }
.mapContainer{
@include wh(100%,173px)
}
} }
} }
.wiadgeWrap{ .wiadgeWrap{
@ -439,4 +487,10 @@ export default {
@include widHeiMar(16px,16px,6px) @include widHeiMar(16px,16px,6px)
} }
} }
::v-deep .amap-copyright{
display: none !important;
}
::v-deep .amap-logo{
display: none !important;
}
</style> </style>

View File

@ -17,9 +17,10 @@
{{ item.name }} {{ item.name }}
</div> </div>
</div> </div>
<div class="listWrap"> <!-- <van-pull-refresh v-model="isLoading" @refresh="onRefresh" v-show="!show" style="min-height: 80%;position: relative">-->
<div class="itemWrap" v-for="(item,index) in pageList" :key="index"> <div class="listWrap">
<div class="contentWrap" @click="goDetail"> <div class="itemWrap" v-for="(item,index) in pageList" :key="index">
<div class="contentWrap" @click="goDetail">
<div class="line1"> <div class="line1">
<div><span>订单编号:</span><span>{{item.userOrderCode}}</span></div> <div><span>订单编号:</span><span>{{item.userOrderCode}}</span></div>
<div class="right"> <div class="right">
@ -32,12 +33,102 @@
<div v-show="activeIndex == 2"><span>审核备注:</span><span style="color: #FF5D2E">{{item.auditRemark}}</span></div> <div v-show="activeIndex == 2"><span>审核备注:</span><span style="color: #FF5D2E">{{item.auditRemark}}</span></div>
<div v-show="activeIndex != 0"><span>审核人员:</span><span>{{item.auditUser}}</span></div> <div v-show="activeIndex != 0"><span>审核人员:</span><span>{{item.auditUser}}</span></div>
<div v-show="activeIndex != 0"><span>审核时间:</span><span>{{item.auditTime}}</span></div> <div v-show="activeIndex != 0"><span>审核时间:</span><span>{{item.auditTime}}</span></div>
</div>
<img v-show="activeIndex == 0" class="checkImg" @click="toggleSelection(item)" :src="item.isSelected ? require('@/assets/baoxiao_check.png') : require('@/assets/baoxiao_uncheck.png')">
</div>
<div class="itemWrap" v-for="(item,index) in pageList" :key="index">
<div class="contentWrap" @click="goDetail">
<div class="line1">
<div><span>订单编号:</span><span>{{item.userOrderCode}}</span></div>
<div class="right">
<img class="commonImg" :src="getStatus(item.state)">
<div :class="getStatusColor(item.state)">{{item.stateStr}}</div>
<img class="rightArrImg" src="@/assets/list_rightArrow.png">
</div>
</div>
<div><span>报销金额:</span><span>{{item.reimburseAmount}}</span></div>
<div v-show="activeIndex == 2"><span>审核备注:</span><span style="color: #FF5D2E">{{item.auditRemark}}</span></div>
<div v-show="activeIndex != 0"><span>审核人员:</span><span>{{item.auditUser}}</span></div>
<div v-show="activeIndex != 0"><span>审核时间:</span><span>{{item.auditTime}}</span></div>
</div>
<img v-show="activeIndex == 0" class="checkImg" @click="toggleSelection(item)" :src="item.isSelected ? require('@/assets/baoxiao_check.png') : require('@/assets/baoxiao_uncheck.png')">
</div>
<div class="itemWrap" v-for="(item,index) in pageList" :key="index">
<div class="contentWrap" @click="goDetail">
<div class="line1">
<div><span>订单编号:</span><span>{{item.userOrderCode}}</span></div>
<div class="right">
<img class="commonImg" :src="getStatus(item.state)">
<div :class="getStatusColor(item.state)">{{item.stateStr}}</div>
<img class="rightArrImg" src="@/assets/list_rightArrow.png">
</div>
</div>
<div><span>报销金额:</span><span>{{item.reimburseAmount}}</span></div>
<div v-show="activeIndex == 2"><span>审核备注:</span><span style="color: #FF5D2E">{{item.auditRemark}}</span></div>
<div v-show="activeIndex != 0"><span>审核人员:</span><span>{{item.auditUser}}</span></div>
<div v-show="activeIndex != 0"><span>审核时间:</span><span>{{item.auditTime}}</span></div>
</div>
<img v-show="activeIndex == 0" class="checkImg" @click="toggleSelection(item)" :src="item.isSelected ? require('@/assets/baoxiao_check.png') : require('@/assets/baoxiao_uncheck.png')">
</div>
<div class="itemWrap" v-for="(item,index) in pageList" :key="index">
<div class="contentWrap" @click="goDetail">
<div class="line1">
<div><span>订单编号:</span><span>{{item.userOrderCode}}</span></div>
<div class="right">
<img class="commonImg" :src="getStatus(item.state)">
<div :class="getStatusColor(item.state)">{{item.stateStr}}</div>
<img class="rightArrImg" src="@/assets/list_rightArrow.png">
</div>
</div>
<div><span>报销金额:</span><span>{{item.reimburseAmount}}</span></div>
<div v-show="activeIndex == 2"><span>审核备注:</span><span style="color: #FF5D2E">{{item.auditRemark}}</span></div>
<div v-show="activeIndex != 0"><span>审核人员:</span><span>{{item.auditUser}}</span></div>
<div v-show="activeIndex != 0"><span>审核时间:</span><span>{{item.auditTime}}</span></div>
</div>
<img v-show="activeIndex == 0" class="checkImg" @click="toggleSelection(item)" :src="item.isSelected ? require('@/assets/baoxiao_check.png') : require('@/assets/baoxiao_uncheck.png')">
</div>
<div class="itemWrap" v-for="(item,index) in pageList" :key="index">
<div class="contentWrap" @click="goDetail">
<div class="line1">
<div><span>订单编号:</span><span>{{item.userOrderCode}}</span></div>
<div class="right">
<img class="commonImg" :src="getStatus(item.state)">
<div :class="getStatusColor(item.state)">{{item.stateStr}}</div>
<img class="rightArrImg" src="@/assets/list_rightArrow.png">
</div>
</div>
<div><span>报销金额:</span><span>{{item.reimburseAmount}}</span></div>
<div v-show="activeIndex == 2"><span>审核备注:</span><span style="color: #FF5D2E">{{item.auditRemark}}</span></div>
<div v-show="activeIndex != 0"><span>审核人员:</span><span>{{item.auditUser}}</span></div>
<div v-show="activeIndex != 0"><span>审核时间:</span><span>{{item.auditTime}}</span></div>
</div>
<img v-show="activeIndex == 0" class="checkImg" @click="toggleSelection(item)" :src="item.isSelected ? require('@/assets/baoxiao_check.png') : require('@/assets/baoxiao_uncheck.png')">
</div>
<div class="itemWrap" v-for="(item,index) in pageList" :key="index">
<div class="contentWrap" @click="goDetail">
<div class="line1">
<div><span>订单编号:</span><span>{{item.userOrderCode}}</span></div>
<div class="right">
<img class="commonImg" :src="getStatus(item.state)">
<div :class="getStatusColor(item.state)">{{item.stateStr}}</div>
<img class="rightArrImg" src="@/assets/list_rightArrow.png">
</div>
</div>
<div><span>报销金额:</span><span>{{item.reimburseAmount}}</span></div>
<div v-show="activeIndex == 2"><span>审核备注:</span><span style="color: #FF5D2E">{{item.auditRemark}}</span></div>
<div v-show="activeIndex != 0"><span>审核人员:</span><span>{{item.auditUser}}</span></div>
<div v-show="activeIndex != 0"><span>审核时间:</span><span>{{item.auditTime}}</span></div>
</div>
<img v-show="activeIndex == 0" class="checkImg" @click="toggleSelection(item)" :src="item.isSelected ? require('@/assets/baoxiao_check.png') : require('@/assets/baoxiao_uncheck.png')">
</div>
</div> </div>
<img v-show="activeIndex == 0" class="checkImg" @click="toggleSelection(item)" :src="item.isSelected ? require('@/assets/baoxiao_check.png') : require('@/assets/baoxiao_uncheck.png')"> <!-- </van-pull-refresh>-->
</div> <!-- <div v-show="activeIndex == 0" class="submitBtn" @click="noMultipleClicks(submitHandle)">提交</div>-->
<s v-show="activeIndex == 0" class="submitBtn" @click="noMultipleClicks(submitHandle)">提交</s> <!-- <div class="bgEmptyImg" v-show="show" >-->
<!-- <img src="@/assets/empty.png" />-->
</div> </div>
</div> <!-- </div>-->
</template> </template>
@ -54,20 +145,35 @@ export default {
pageList:[], pageList:[],
pageNum:1, pageNum:1,
pageSize:10, pageSize:10,
total: 0,
isCheck:false, isCheck:false,
driverId: 78948, driverId: 78948,
submitData:[], submitData:[],
noClick:true, noClick:true,
loading:false, loading:false,
isLoading: false,
finished: false,
} }
}, },
computed:{
show() {
return (this.pageList.length < 0 || this.pageList.length == 0); // 判断数组长度是否大于 0
},
},
mounted() { mounted() {
this.getList() this.getList()
}, },
methods:{ methods:{
onRefresh() {
this.pageNum=1;
// this.getDriverList()
setTimeout(() => {
this.$toast('刷新成功');
this.isLoading = false;
}, 1000);
},
toggleSelection(item) { toggleSelection(item) {
item.isSelected = !item.isSelected; // 切换 isSelected 属性的值 item.isSelected = !item.isSelected; // 切换 isSelected 属性的值
console.log("item",item)
}, },
async submitHandle(){ async submitHandle(){
this.pageList.forEach((item)=>{ this.pageList.forEach((item)=>{
@ -86,8 +192,9 @@ export default {
}, },
async changeTab(index) { async changeTab(index) {
this.activeIndex = index this.activeIndex = index
this.total = 0;
this.pageNum = 1 this.pageNum = 1
this.pageList = []; this.orderList = [];
await this.getList() await this.getList()
}, },
goDetail(){ goDetail(){
@ -264,4 +371,15 @@ export default {
.garyColor{ .garyColor{
color: #9C9C9C; color: #9C9C9C;
} }
.bgEmptyImg{
@include flexTwoCenter;
height: 90% ;
background-color: #FAFAFA;
img{
width: 100%;
}
}
//::v-deep .van-pull-refresh__track{
// position: static !important;
//}
</style> </style>

View File

@ -34,7 +34,7 @@
</div> </div>
</div> </div>
<van-pull-refresh v-model="isLoading" @refresh="onRefresh" v-show="!show" style="min-height: 80%;"> <van-pull-refresh v-model="isLoading" @refresh="onRefresh" v-show="!show" >
<div > <div >
<div class="content_wrap" v-for="(item,index) in orderList" :key="index"> <div class="content_wrap" v-for="(item,index) in orderList" :key="index">
<div class="codeTxt common"> <div class="codeTxt common">