task#10339,调度app接口对接

This commit is contained in:
2024-01-29 16:40:32 +08:00
parent 017d662d3c
commit 92655a7181
5 changed files with 294 additions and 112 deletions

View File

@ -1,6 +1,6 @@
import request from '@/utils/http' import request from '@/utils/http'
//待报销列表 //司机app待报销列表
export function waitReimburseList(data) { export function waitReimburseList(data) {
return request({ return request({
url: '/driverApp/reimburse/waitReimburseList', url: '/driverApp/reimburse/waitReimburseList',
@ -9,7 +9,7 @@ export function waitReimburseList(data) {
data data
}) })
} }
// 提交报销批次 // 司机app提交报销批次
export function submitReimburseBatch(data) { export function submitReimburseBatch(data) {
return request({ return request({
url: '/driverApp/reimburse/submitReimburseBatch', url: '/driverApp/reimburse/submitReimburseBatch',
@ -18,7 +18,7 @@ export function submitReimburseBatch(data) {
data data
}) })
} }
// 已报销/报销失败列表 // 司机app已报销/报销失败列表
export function reimbursedList(data) { export function reimbursedList(data) {
return request({ return request({
url: '/driverApp/reimburse/reimbursedList', url: '/driverApp/reimburse/reimbursedList',
@ -27,3 +27,56 @@ export function reimbursedList(data) {
data data
}) })
} }
//调度App-报销批次数量
export function reimburseBatchCount() {
return request({
url: '/supplierAppV2/dispatchApp/reimburse/reimburseBatchCount',
method:'POST',
// contentType: 'application/x-www-form-urlencoded',
})
}
// 调度App-报销批次审核
export function reimburseBatchList(data) {
return request({
url: '/supplierAppV2/dispatchApp/reimburse/reimburseBatchList',
method:'POST',
contentType: 'application/json',
data
})
}
//调度App-报销批次订单数量
export function reimburseBatchOrderCount(data) {
return request({
url: '/supplierAppV2/dispatchApp/reimburse/reimburseBatchOrderCount',
method:'POST',
contentType: 'application/json',
data
})
}
//调度App-报销批次订单列表
export function reimburseBatchOrderList(data) {
return request({
url: '/supplierAppV2/dispatchApp/reimburse/reimburseBatchOrderList',
method:'POST',
contentType: 'application/json',
data
})
}
//调度App-报销订单详情
export function reimburseOrderDetail(data) {
return request({
url: '/supplierAppV2/dispatchApp/reimburse/reimburseOrderDetail',
method:'POST',
contentType: 'application/json',
data
})
}
//调度App-报销订单审核
export function reimburseOrderAudit(data) {
return request({
url: '/supplierAppV2/dispatchApp/reimburse/reimburseOrderAudit ',
method:'POST',
contentType: 'application/json',
data
})
}

View File

@ -14,44 +14,22 @@
<div class="tab_wrap"> <div class="tab_wrap">
<div v-for="(item, index) in tabArr" :key="index" <div v-for="(item, index) in tabArr" :key="index"
@click="changeTab(index)"> @click="changeTab(index)">
<sapn :class="{'active' : activeIndex == index , 'alpha' :true}"> {{ item.name }}</sapn> <span :class="{'active' : activeIndex == index , 'alpha' :true}"> {{ item.name }}</span>
<span class="numTip" style="opacity: 1 !important;">{{item.num}}</span> <span class="numTip" style="opacity: 1 !important;">{{item.num}}</span>
</div> </div>
</div> </div>
<div class="listWrap"> <div class="listWrap">
<div class="listItem" @click="goPageDetail"> <div class="listItem" v-for="(item,index) in pageList" :key="index" @click="goPageDetail(item.id)">
<div class="line1"> <div class="line1">
<div><span>审核批次:</span><span>PC1234123443243232131</span></div> <div><span>审核批次:</span><span>{{ item.batchCode }}</span></div>
<div class="right"> <div class="right">
<img class="commonImg" src="@/assets/waitSubmit.png"> <img class="commonImg" :src="getStatus(item.state.code)">
<div class="yelColor">待审核</div> <div :class="getStatusColor(item.state.code)">{{item.state.label}}</div>
<img class="rightArrImg" src="@/assets/list_rightArrow.png"> <img class="rightArrImg" src="@/assets/list_rightArrow.png">
</div> </div>
</div> </div>
<div><span>报销金额:</span><span>1238</span></div> <div><span>报销金额:</span><span>{{ item.reimburseAmount }}</span></div>
</div> <div v-show="activeIndex == 2"><span>审核备注:</span><span style="color: #FF5D2E">{{ item.auditRemark }}</span></div>
<div class="listItem">
<div class="line1">
<div><span>审核批次:</span><span>PC1234123443243232131</span></div>
<div class="right">
<img class="commonImg" src="@/assets/unpass.png">
<div class="oraColor">不通过</div>
<img class="rightArrImg" src="@/assets/list_rightArrow.png">
</div>
</div>
<div><span>报销金额:</span><span>1238</span></div>
<div><span>审核备注:</span><span style="color: #FF5D2E">缺失凭证照片</span></div>
</div>
<div class="listItem">
<div class="line1">
<div><span>审核批次:</span><span>PC1234123443243232131</span></div>
<div class="right">
<img class="commonImg" src="@/assets/dakuan.png">
<div class="greColor">审核通过</div>
<img class="rightArrImg" src="@/assets/list_rightArrow.png">
</div>
</div>
<div><span>报销金额:</span><span>1238</span></div>
</div> </div>
</div> </div>
</div> </div>
@ -60,42 +38,99 @@
<script> <script>
import {myMixins} from "@/utils/myMixins"; import {myMixins} from "@/utils/myMixins";
import {reimburseBatchOrderCount,reimburseBatchOrderList } from "@/api/reimbursementBatch";
export default { export default {
name: "caseAuditList", name: "caseAuditList",
mixins: [myMixins], mixins: [myMixins],
data(){ data(){
return{ return{
tabArr: [{name: '待审核', status: 1,num:1}, {name: '审核通过', status: 2,num:3},{name: '审核不通过', status: 2,num:4},], tabArr: [{name: '待审核', status: 1,num:0}, {name: '审核通过', status: 2,num:0},{name: '审核不通过', status: 2,num:0},],
activeIndex: 0, activeIndex: 0,
pageList:[], pageList:[],
pageNum:1, pageNum:1,
pageSize:10, pageSize:10,
id:'',//批次id
} }
}, },
created() {
this.id = this.$route.params.id;
},
async mounted() {
await this.batchOrderCount();
await this.getList()
},
methods:{ methods:{
async changeTab(index) { async changeTab(index) {
this.activeIndex = index this.activeIndex = index
console.log(' this.activeIndex', this.activeIndex)
this.pageNum = 1 this.pageNum = 1
this.pageList = []; this.pageList = [];
if(this.activeIndex === 0){ await this.getList()
// this.trainingType =1
}else{
// this.trainingType=2
}
// await this.getList()
}, },
goPageDetail(){ async getList(){
console.log("去查看详情") let res=await reimburseBatchOrderList ({
pageNum:this.pageNum,
pageSize:this.pageSize,
batchCode:this.id,
type: this.activeIndex+1
})
this.pageList=res.data
},
async batchOrderCount(){
let res =await reimburseBatchOrderCount({
batchCode:this.id
})
this.tabArr.forEach(tab => {
if (tab.name === '待审核') {
tab.num = res.data.waitAuditCount;
} else if (tab.name === '审核通过') {
tab.num = res.data.auditSuccessCount;
}else{
tab.num = res.data.auditFailCount;
}
});
console.log("数量",res)
},
getStatus(i){
switch (i){
case 0://待提交
case 1://待审核
return require('@/assets/waitSubmit.png')
case 2://审核通过
case 7://已打款
return require('@/assets/dakuan.png')
case 3://审核不通过
return require('@/assets/unpass.png')
case 4://报销失败
return require('@/assets/unSubmit.png')
case 6://代打款
return require('@/assets/waitDakuan.png')
default:
return require('@/assets/waitSubmit.png')
}
},
getStatusColor(i){
switch (i){
case 0://待提交
case 1://待审核
return 'yelColor'
case 2://审核通过
case 6://代打款
case 7://已打款
return 'greColor'
case 3://审核不通过
return 'oraColor'
case 4://报销失败
return 'garyColor'
default:
return 'yelColor'
}
},
goPageDetail(id){
this.$router.push({ this.$router.push({
name: 'caseDetail', // 目标路由的名称 name: 'caseDetail', // 目标路由的名称
/* params: { params: {
id: item.id, // 参数对象的属性 id:id,
postfix:item.postfix, }
index:this.activeIndex,
queryTime: this.time || this.queryTime
}*/
}); });
}, },
} }

View File

@ -16,59 +16,59 @@
<div>DDA2304142407036</div> <div>DDA2304142407036</div>
<div class="map"> <div class="map">
<div class="title"> <div class="title">
<div><span>司机姓名:</span><span>甜甜圈</span></div> <div><span>司机姓名:</span><span>{{ detailInfo.driverName }}</span></div>
<div><span>车牌号:</span><span>沪A123456</span></div> <div><span>车牌号:</span><span>{{ detailInfo.plateNumber }}</span></div>
</div> </div>
</div> </div>
<div class="wiadgeWrap"> <div class="wiadgeWrap">
<div class="lineWrap"> <div class="lineWrap">
<div class="left"> <div class="left">
<img class="commonImg" src="@/assets/camer.png"> <img class="commonImg" :src="detailInfo.bridgeAbUrl">
<span class="free">AB(出发段)路桥费</span> <span class="free">AB(出发段)路桥费</span>
<span>30公里</span> <span>{{detailInfo.bridgeAmountAb}}公里</span>
</div> </div>
<div class="right"> <div class="right">
<span>30</span> <span>{{detailInfo.settleMileageAb}}</span>
<span></span> <span></span>
</div> </div>
</div> </div>
<div class="line"></div> <div class="line"></div>
<div class="lineWrap"> <div class="lineWrap">
<div class="left"> <div class="left">
<img class="commonImg" src="@/assets/camer.png"> <img class="commonImg" :src="detailInfo.bridgeBcUrl">
<span class="free">BC(出发段)路桥费</span> <span class="free">BC(出发段)路桥费</span>
<span>30公里</span> <span>{{detailInfo.bridgeAmountBc}}公里</span>
</div> </div>
<div class="right"> <div class="right">
<span>30</span> <span>{{detailInfo.settleMileageBc}}</span>
<span></span> <span></span>
</div> </div>
</div> </div>
<div class="line"></div> <div class="line"></div>
<div class="lineWrap"> <div class="lineWrap">
<div class="left"> <div class="left">
<img class="commonImg" src="@/assets/camer.png"> <img class="commonImg" :src="detailInfo.bridgeCaUrl">
<span class="free">CA(出发段)路桥费</span> <span class="free">CA(出发段)路桥费</span>
<span>30公里</span> <span>{{detailInfo.bridgeAmountCa}}公里</span>
</div> </div>
<div class="right"> <div class="right">
<span>30</span> <span>{{detailInfo.settleMileageCa}}</span>
<span></span> <span></span>
</div> </div>
</div> </div>
<div class="line"></div> <div class="line"></div>
<div class="totalFree"> <div class="totalFree">
<span>总金额</span> <span>总金额</span>
<span>130</span> <span>{{ detailInfo.settleMileageAb+detailInfo.settleMileageBc+detailInfo.settleMileageCa }}</span>
<span></span> <span></span>
</div> </div>
</div> </div>
</div> </div>
<div class="aduit"> <div class="aduit">
<div class="itemWrap aduitResult"> <div :class="{itemWrap : true,aduitResult: detailInfo.secondAudit}">
<div> <div>
<span class="star">*</span> <span class="star">*</span>
<span>{{firstSubmit == 1 ? '审核结果' : '二次审核结果'}}</span> <span>{{detailInfo.secondAudit ? '二次审核结果' : '审核结果'}}</span>
</div> </div>
<div class="isJoin"> <div class="isJoin">
<van-radio-group v-model="states" @change="isUse" class="joinWrap"> <van-radio-group v-model="states" @change="isUse" class="joinWrap">
@ -80,8 +80,8 @@
:src="props.checked ? activeIcon : inactiveIcon" :src="props.checked ? activeIcon : inactiveIcon"
> >
</van-radio> </van-radio>
<van-radio :name="0" class="item"> <van-radio :name="2" class="item">
{{firstSubmit == 1 ? '不通过' : '报销失败'}} {{detailInfo.secondAudit? '报销失败' : '不通过'}}
<img <img
slot="icon" slot="icon"
slot-scope="props" slot-scope="props"
@ -91,7 +91,7 @@
</van-radio-group> </van-radio-group>
</div> </div>
</div> </div>
<div class="itemWrap"> <div class="itemWrap" v-show="states == 2">
<div> <div>
<div> <div>
<span class="star">*</span> <span class="star">*</span>
@ -99,19 +99,18 @@
</div> </div>
</div> </div>
<select id="mySelect" class="mySelect" v-model="other" @change="getValue" > <select id="mySelect" class="mySelect" v-model="other" @change="getValue" >
<option value="1">缺失凭证照片</option> <option value="缺失凭证照片">缺失凭证照片</option>
<option value="2">申请金额与凭证不一致</option> <option value="申请金额与凭证不一致">申请金额与凭证不一致</option>
<option value="3">非正常产生路桥费</option> <option value="非正常产生路桥费">非正常产生路桥费</option>
<option value="4">其他</option> <option value="其他">其他</option>
</select> </select>
</div> </div>
<div v-show="other == 4"> <div v-show="other == '其他'">
<div>其他原因</div> <div>其他原因</div>
<textarea v-model="otherReason" class="multipleTxt" placeholder="描述"></textarea> <textarea v-model="otherReason" class="multipleTxt" placeholder="描述"></textarea>
</div> </div>
</div> </div>
<div class="submitBtn">提交</div> <div class="submitBtn" @click="noMultipleClicks(submitHandle)">提交</div>
<!-- <common-btn class="submitBtn"></common-btn>-->
</div> </div>
</div> </div>
@ -119,11 +118,13 @@
<script> <script>
import {myMixins} from "@/utils/myMixins"; import {myMixins} from "@/utils/myMixins";
// import CommonBtn from "@/components/commonBtn.vue" import {reimburseOrderDetail,reimburseOrderAudit} from "@/api/reimbursementBatch"
import minePosition from "@/assets/minePosition.png";
import vehiclePosition from "@/assets/vehiclePosition.png";
import desitationPosition from "@/assets/desitationPosition.png";
export default { export default {
name: "caseDetail", name: "caseDetail",
mixins: [myMixins], mixins: [myMixins],
// components:{CommonBtn},
data(){ data(){
return{ return{
states:'', states:'',
@ -132,26 +133,107 @@ export default {
otherReason:'', otherReason:'',
other:'', other:'',
firstSubmit:2, firstSubmit:2,
id:'',
detailInfo:{},
noClick:true,
state:'',//审核状态
} }
}, },
created() {
this.id = this.$route.params.id;
},
async mounted(){
await this.getOrderDetail()
this.$nextTick(() => {
this.initMap();
});
},
methods:{ methods:{
initMap() {
this.map = new AMap.Map('container',{
zoom:14,//级别(缩放比例 3-20 )
center: [this.detailInfo.apointLongtitude,this.detailInfo.apointLatitude],//中心点坐标
viewMode:'2D',//使用3D视图
})
this.map.on('complete', () => {
console.log("地图加载完成")
this.mapMarkers();
});
},
mapMarkers(){
// 车辆位置a点
let marker = new AMap.Marker({
position: [this.detailInfo?.apointLongtitude,this.detailInfo?.apointLatitude
],
icon: new AMap.Icon({
image: minePosition, // 图片的相对路径
size: new AMap.Size(22, 32), // 图标的尺寸
imageSize: new AMap.Size(22, 32) // 图片的实际尺寸
}),
});
this.map.add(marker);
// 事发地b点
let marker1 = new AMap.Marker({
position: [this.detailInfo?.bpointLongtitude,this.detailInfo?.bpointLatitude],
icon: new AMap.Icon({
image: vehiclePosition, // 图片的相对路径
size: new AMap.Size(26, 28), // 图标的尺寸
imageSize: new AMap.Size(26, 28) // 图片的实际尺寸
})
});
this.map.add(marker1);
let 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);
this.map.setFitView([marker,marker1,marker2])
},
async submitHandle(){
if(!this.states){
this.$toast('审核结果必选')
return
}
if(this.states == 1 && !this.other){
this.$toast('审核不通过原因必填')
return
}
if(this.other == '其他' && !this.otherReason){
this.$toast('审核不通过原因是其他时审核原因必填')
return
}
let res = await reimburseOrderAudit({
id:this.id,
state:this.state,
auditRemark:this.other=='其他' ? this.other+ '/' + this.otherReason : this.other,
})
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)
if(this.states == 1){
this.state=2
}else if(this.states == 2){
if(this.detailInfo.secondAudit){
this.state=4
}else{
this.state=3
}
}
}, },
goPageDetail(){ async getOrderDetail(){
console.log("去查看详情") let res=await reimburseOrderDetail({
this.$router.push({ id:this.id
name: 'caseDetail', // 目标路由的名称 })
/* params: { this.detailInfo=res.data
id: item.id, // 参数对象的属性
postfix:item.postfix,
index:this.activeIndex,
queryTime: this.time || this.queryTime
}*/
});
}, },
} }
} }

View File

@ -14,20 +14,20 @@
<div class="tab_wrap"> <div class="tab_wrap">
<div v-for="(item, index) in tabArr" :key="index" <div v-for="(item, index) in tabArr" :key="index"
@click="changeTab(index)"> @click="changeTab(index)">
<sapn :class="{'active' : activeIndex == index , 'alpha' :true}"> {{ item.name }}</sapn> <span :class="{'active' : activeIndex == index , 'alpha' :true}"> {{ item.name }}</span>
<span class="numTip" style="opacity: 1 !important;">{{item.num}}</span> <span class="numTip" style="opacity: 1 !important;">{{item.num}}</span>
</div> </div>
</div> </div>
<div class="listWrap"> <div class="listWrap">
<div class="listItem" v-for="(item,index) in 3" :key="index" @click="goPageDetail"> <div class="listItem" v-for="(item,index) in pageList" :key="index" @click="goPageDetail(item.batchCode)">
<div class="line1"> <div class="line1">
<div><span>审核批次:</span><span>PC1234123443243232131</span></div> <div><span>审核批次:</span><span>{{item.batchCode}}</span></div>
<div class="viewBtn">查看</div> <div class="viewBtn">查看</div>
</div> </div>
<div><span>报销金额:</span><span class="redColor">1238</span><span class="greColor">/1200</span></div> <div><span>报销金额:</span><span class="redColor">{{item.totalAmount}}</span><span class="greColor">/{{item.auditSuccessAmount}}</span></div>
<div><span>案件数量:</span><span>4</span><span class="greColor">/2</span></div> <div><span>案件数量:</span><span>{{item.orderCount}}</span><span class="greColor">/{{item.auditSuccessCount}}</span></div>
<div><span>提交人员:</span><span>王二麻子</span></div> <div><span>提交人员:</span><span>{{ item.createUser }}</span></div>
<div><span>提交时间:</span><span>2024-01-24 12:00:00</span></div> <div><span>提交时间:</span><span>{{ item.createTime }}</span></div>
</div> </div>
</div> </div>
</div> </div>
@ -36,42 +36,55 @@
<script> <script>
import {myMixins} from "@/utils/myMixins"; import {myMixins} from "@/utils/myMixins";
import {reimburseBatchCount, reimburseBatchList} from "@/api/reimbursementBatch"
export default { export default {
name: "caseList", name: "caseList",
mixins: [myMixins], mixins: [myMixins],
data(){ data(){
return{ return{
tabArr: [{name: '待审核', status: 1,num:1}, {name: '已审核', status: 2,num:3},], tabArr: [{name: '待审核', status: 1,num:0}, {name: '已审核', status: 2,num:0},],
activeIndex: 0, activeIndex: 0,
pageList:[], pageList:[],
pageNum:1, pageNum:1,
pageSize:10, pageSize:10,
} }
},
async mounted() {
await this.getCount();
await this.getList()
}, },
methods:{ methods:{
async changeTab(index) { async changeTab(index) {
this.activeIndex = index this.activeIndex = index
console.log(' this.activeIndex', this.activeIndex)
this.pageNum = 1 this.pageNum = 1
this.pageList = []; this.pageList = [];
if(this.activeIndex === 0){ await this.getList()
// this.trainingType =1
}else{
// this.trainingType=2
}
// await this.getList()
}, },
goPageDetail(){ async getList(){
console.log("去查看详情") let res=await reimburseBatchList({
pageNum:this.pageNum,
pageSize:this.pageSize,
type: this.activeIndex+1
})
this.pageList=res.data
},
async getCount(){
let res=await reimburseBatchCount()
this.tabArr.forEach(tab => {
if (tab.name === '待审核') {
tab.num = res.data.waitAuditCount;
} else if (tab.name === '已审核') {
tab.num = res.data.auditSuccessCount;
}
});
},
goPageDetail(id){
this.$router.push({ this.$router.push({
name: 'caseAuditList', // 目标路由的名称 name: 'caseAuditList', // 目标路由的名称
/* params: { params: {
id: item.id, // 参数对象的属性 id: id, // 参数对象的属性
postfix:item.postfix, // queryTime: this.time || this.queryTime
index:this.activeIndex, }
queryTime: this.time || this.queryTime
}*/
}); });
}, },
} }

View File

@ -109,7 +109,6 @@ export default {
if(this.queryType == 5){ if(this.queryType == 5){
await this.getDriverPoi(); await this.getDriverPoi();
} }
// this.initMap();
this.$nextTick(() => { this.$nextTick(() => {
this.initMap(); this.initMap();
}); });