bugfix 修改

This commit is contained in:
2025-12-01 11:30:32 +08:00
parent 19ad185126
commit 75cf3db960
3 changed files with 100 additions and 38 deletions

View File

@@ -83,6 +83,16 @@ export function getDriverName(key) {
}); });
} }
export function getVehicleName(key) {
return request({
url: '/supplier/select/vehicle',
method: 'GET',
params: {
key: key ,
}
});
}
// 车辆 总览 // 车辆 总览
export function vehicleTotalInfo(data) { export function vehicleTotalInfo(data) {
return request({ return request({

View File

@@ -107,6 +107,27 @@
</div> </div>
<!--日总 e --> <!--日总 e -->
<div v-loading="loadingData" class="contentWrap monthTotal" v-if="!([0,1,2, 3].includes(active))"> <div v-loading="loadingData" class="contentWrap monthTotal" v-if="!([0,1,2, 3].includes(active))">
<div class="searchDriverName" v-if="active == 5">
<el-select
v-model="vehicleId"
filterable
remote
clearable
reserve-keyword
placeholder="请输入后选择"
:remote-method="driverremoteMethod"
@change="selectSupplierNameHandle"
:loading="driverselectLoading"
:style="isMobile ? 'width:100%' : 'width:50%'"
>
<el-option
v-for="item in driverselectOption"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="comTab"> <div class="comTab">
<noFit-table :active='active' :is-mobile='isMobile' :table-data="detailList" :label-list="labelList"></noFit-table> <noFit-table :active='active' :is-mobile='isMobile' :table-data="detailList" :label-list="labelList"></noFit-table>
</div> </div>
@@ -149,7 +170,8 @@ import {
vehicleTotalInfo, vehicleTotalInfo,
vehicleInfoBySupplier, vehicleInfoBySupplier,
vehicleInfoByVehicle, vehicleInfoByVehicle,
getKpiDetailsData getKpiDetailsData,
getVehicleName
} from "@/api/kpi.js" } from "@/api/kpi.js"
import {kpiMixins} from "@/utils/kpiMixins" import {kpiMixins} from "@/utils/kpiMixins"
import {myMixins} from "@/utils/myMixins"; import {myMixins} from "@/utils/myMixins";
@@ -190,6 +212,7 @@ export default {
selectOption: [], selectOption: [],
driverId:'',//68517 driverId:'',//68517
driverName:'', driverName:'',
vehicleId: '',
driverselectLoading: false, driverselectLoading: false,
driverselectOption: [], driverselectOption: [],
leftArr:'<<<', leftArr:'<<<',
@@ -304,12 +327,15 @@ export default {
] ]
} }
}, },
async getVehicleInfoByVehicle(type) { async getVehicleInfoByVehicle(type, vehicleId) {
let res = await vehicleInfoByVehicle({ let res = await vehicleInfoByVehicle({
startTime: this.startTime, startTime: this.startTime,
endTime: this.endTime, endTime: this.endTime,
statisticsType: type, statisticsType: type,
supplierId: this.supplierId, supplierId: this.supplierId,
pageNum: this.pageNum,
pageSize: this.pageSize,
vehicleId
}); });
this.detailList = res.data?.map(item => { this.detailList = res.data?.map(item => {
let formatVal =item.createTime ? dayjs(item.createTime).format('DD') : ''; let formatVal =item.createTime ? dayjs(item.createTime).format('DD') : '';
@@ -346,17 +372,6 @@ export default {
{label: '在线时长', prop: 'onlineDuration'}, {label: '在线时长', prop: 'onlineDuration'},
] ]
} }
/* this.detailList = res.data?.map(item => {
item.timeoutRate=this.formatPercentage(item.timeoutRate) || 0;
let formatVal = dayjs(new Date(item.statisticsTime)).format('DD');
let formatVal1 = dayjs(new Date(item.statisticsTime)).format('MM');
return {...item, date: formatVal, month: formatVal1 + '月'};
});*/
console.log('rererewrew', res);
}, },
async getSupplierKpiByOrigin(type) { async getSupplierKpiByOrigin(type) {
let result = await getKpiDetailsData({ let result = await getKpiDetailsData({
@@ -449,6 +464,21 @@ export default {
this.selectOption = []; this.selectOption = [];
} }
}, },
async driverremoteMethod(query){
if (query !== '') {
this.driverselectLoading = true;
try {
const result = await getVehicleName(query);
this.driverselectOption = result.data || []
} catch (error) {
this.driverselectOption = [];
} finally {
this.driverselectLoading = false;
}
} else {
this.driverselectOption = [];
}
},
async selectSupplierNameHandle() { // 下拉切换服务商时调用的接口 async selectSupplierNameHandle() { // 下拉切换服务商时调用的接口
if( this.active == 0 ) { if( this.active == 0 ) {
await this.getVehicleTotalInfo(); await this.getVehicleTotalInfo();
@@ -462,7 +492,23 @@ export default {
} else if(this.active == 4){ } else if(this.active == 4){
await this.getVehicleInfoByVehicle(1); await this.getVehicleInfoByVehicle(1);
} else if(this.active == 5) { } else if(this.active == 5) {
await this.getVehicleInfoByVehicle(2); if( this.vehicleId ) {
await this.getVehicleInfoByVehicle(2, this.vehicleId);
} else {
this.labelList = [
{label: '车辆名称', prop: 'vehicleName'},
{label: '日期', prop: 'statisticsTime'},
{label: '案件量', prop: 'orderCount'},
{label: '完成量', prop: 'finishOrderCount'},
{label: '取消量', prop: 'cancelOrderCount'},
{label: '取消率', prop: 'cancelRate'},
{label: '上游聚合量', prop: 'upMixinCount'},
{label: '中道聚合量', prop: 'zdJuheOrderCount'},
{label: '传统派工量', prop: 'traditionOrderCount'},
{label: '在线时长', prop: 'onlineDuration'},
];
this.detailList = [];
}
} else if(this.active == 6) { } else if(this.active == 6) {
await this.getSupplierKpiByOrigin(1); await this.getSupplierKpiByOrigin(1);
} else if(this.active == 7) { } else if(this.active == 7) {
@@ -544,7 +590,7 @@ export default {
yAxisIndex: 0, // 绑定左Y轴 yAxisIndex: 0, // 绑定左Y轴
stack: 'order', // 堆积分组(同组内数据堆积) stack: 'order', // 堆积分组(同组内数据堆积)
data: seriesData['完成量'], data: seriesData['完成量'],
itemStyle: { color: '#4895ef' }, // 柱状图颜色 itemStyle: { color: '#4299e1' }, // 柱状图颜色
label: { label: {
show: true, // 显示数值标签 show: true, // 显示数值标签
position: 'insideTop', // 标签位置:柱顶内部 position: 'insideTop', // 标签位置:柱顶内部
@@ -560,7 +606,7 @@ export default {
yAxisIndex: 0, // 绑定左Y轴 yAxisIndex: 0, // 绑定左Y轴
stack: 'order', // 与「线上订单」同堆积组 stack: 'order', // 与「线上订单」同堆积组
data: seriesData['取消量'], data: seriesData['取消量'],
itemStyle: { color: '#38b2ac' }, // 柱状图颜色 itemStyle: { color: '#ed8936' }, // 柱状图颜色
label: { label: {
show: true, show: true,
position: 'insideTop', position: 'insideTop',
@@ -576,12 +622,12 @@ export default {
data: seriesData['在线率'], data: seriesData['在线率'],
symbol: 'circle', // 标记点形状:圆形 symbol: 'circle', // 标记点形状:圆形
symbolSize: 6, // 标记点大小 symbolSize: 6, // 标记点大小
lineStyle: { color: '#e53e3e', width: 2 }, // 线条样式 lineStyle: { color: '#48bb78', width: 2 }, // 线条样式
itemStyle: { color: '#e53e3e' }, // 标记点颜色 itemStyle: { color: '#48bb78' }, // 标记点颜色
label: { label: {
show: true, // 显示数值标签 show: true, // 显示数值标签
position: 'top', // 标签位置:点上方 position: 'top', // 标签位置:点上方
color: '#e53e3e', color: '#48bb78',
fontSize: 10 fontSize: 10
} }
} }
@@ -632,6 +678,11 @@ export default {
type: 'pie', type: 'pie',
radius: ['75%'], // 增大饼图半径范围 radius: ['75%'], // 增大饼图半径范围
data: charData, data: charData,
color: [
'#1890FF', // 中道聚合案件 - 蓝色ECharts默认主色
'#FAAD14', // 上游聚合案件 - 黄色ECharts默认辅助色
'#52C41A' // 传统派工案件 - 绿色ECharts默认成功色
],
label: { label: {
show: false // 隐藏文本标签[citation:1] show: false // 隐藏文本标签[citation:1]
}, },

View File

@@ -39,7 +39,7 @@
<van-tabs v-model="active" sticky @click="tabClickHandle"> <van-tabs v-model="active" sticky @click="tabClickHandle">
<van-tab v-for="(item,index) in tabArr" :key="index" :title="item.name"></van-tab> <van-tab v-for="(item,index) in tabArr" :key="index" :title="item.name"></van-tab>
<div v-if="isMobile && !([0,1,2,3].includes(active))" class="tipArrow left">{{ leftArr }}</div> <div v-if="isMobile && !([0,1,2,3].includes(active))" class="tipArrow left">{{ leftArr }}</div>
<div v-if="isMobile && !([9,10, 11].includes(active))" class="tipArrow right">>>></div> <div v-if="isMobile && !([7,8, 9].includes(active))" class="tipArrow right">>>></div>
</van-tabs> </van-tabs>
<div v-loading="loadingData" :class="{'contentWrap':true,'webcontentWrap':!isMobile}" v-if="active===0"> <div v-loading="loadingData" :class="{'contentWrap':true,'webcontentWrap':!isMobile}" v-if="active===0">
<!--<div :class="{'reciceOrder':true,'webCom':!isMobile}"> <!--<div :class="{'reciceOrder':true,'webCom':!isMobile}">
@@ -232,13 +232,13 @@
:total="total"> :total="total">
</el-pagination> </el-pagination>
</div> </div>
<div v-loading="loadingData" class="contentWrap monthTotal" v-if="[5,6,7,8,9,10, 11].includes(active)"> <div v-loading="loadingData" class="contentWrap monthTotal" v-if="[5,6,7,8,9].includes(active)">
<div :class="{'comTab':true,'detailTable':isMobile}"> <div :class="{'comTab':true,'detailTable':isMobile}">
<noFit-table :active='active' :is-mobile='isMobile' :table-data="detailList" :label-list="labelList" <noFit-table :active='active' :is-mobile='isMobile' :table-data="detailList" :label-list="labelList"
></noFit-table> ></noFit-table>
</div> </div>
<el-pagination <el-pagination
v-if="active !== 10" v-if="active !== 8"
small small
:page-sizes="[20, 50, 100]" :page-sizes="[20, 50, 100]"
:current-page.sync="pageNum" :current-page.sync="pageNum"
@@ -279,8 +279,8 @@ export default {
activeIndex: 0, activeIndex: 0,
// //
tabArr: [ tabArr: [
{name: '总览',value:0}, {name: '月/总'}, {name: '日/总'},{name: '月/师傅'}, {name: '日/师傅'}, {name: '拒单明细'}, {name: '总览',value:0}, {name: '月/总'}, {name: '日/总'},{name: '月/师傅'}, {name: '日/师傅'}, /*{name: '拒单明细'},*/
{name: '超时明细'}, {name: '催促明细'},{name: '投诉明细'}, {name: '不使用APP案件明细'}, {name: '车辆在线情况'} , {name: '聚合失败案件明细'} /*{name: '超时明细'},*/ {name: '催促明细'},{name: '投诉明细'}, {name: '不使用APP案件明细'}, {name: '车辆在线情况'} , {name: '聚合失败案件明细'}
], ],
list: [ {name: '服务评价'}, {name: 'APP使用情况'}, {name: ' 时效 '}], list: [ {name: '服务评价'}, {name: 'APP使用情况'}, {name: ' 时效 '}],
// driverList: [{name: '得分总览'},{name: '接单情况'}, {name: '服务评价'}, {name: 'APP使用情况'}, {name: '时效 '}], // driverList: [{name: '得分总览'},{name: '接单情况'}, {name: '服务评价'}, {name: 'APP使用情况'}, {name: '时效 '}],
@@ -1096,7 +1096,7 @@ export default {
this.loading = false; this.loading = false;
} */ } */
else if ([ 5,6,7, 8,9,10,11].includes(this.active)) { else if ([ 5,6,7, 8,9].includes(this.active)) {
this.detailList = [] this.detailList = []
this.labelList = [] this.labelList = []
let result = await getKpiDetailsData({ let result = await getKpiDetailsData({
@@ -1113,7 +1113,7 @@ export default {
return {...item, date: formatVal}; return {...item, date: formatVal};
}); });
this.loading = false this.loading = false
if (this.active === 5) {//拒单明细 /*if (this.active === 5) {//拒单明细
this.labelList = [ this.labelList = [
{label: '案件编号', prop: 'orderCode'}, {label: '案件编号', prop: 'orderCode'},
{label: '服务内容', prop: 'serviceName'}, {label: '服务内容', prop: 'serviceName'},
@@ -1133,7 +1133,8 @@ export default {
{label: '超时时间', prop: 'time'}, {label: '超时时间', prop: 'time'},
{label: '超时原因', prop: 'reason'}, {label: '超时原因', prop: 'reason'},
] ]
} else if (this.active === 7) {//催促明细 } else */
if (this.active === 5) {//催促明细
this.labelList = [ this.labelList = [
{label: '案件编号', prop: 'orderCode'}, {label: '案件编号', prop: 'orderCode'},
{label: '二级合同名称', prop: 'contractName'}, {label: '二级合同名称', prop: 'contractName'},
@@ -1150,7 +1151,7 @@ export default {
{label: '市(B)', prop: 'bCity'}, {label: '市(B)', prop: 'bCity'},
{label: '区(B)', prop: 'area'}, {label: '区(B)', prop: 'area'},
] ]
} else if (this.active === 8) {//投诉明细 } else if (this.active === 6) {//投诉明细
this.labelList = [ this.labelList = [
{label: '案件编号', prop: 'orderCode'}, {label: '案件编号', prop: 'orderCode'},
{label: '服务内容', prop: 'serviceName'}, {label: '服务内容', prop: 'serviceName'},
@@ -1159,7 +1160,7 @@ export default {
{label: '投诉类型', prop: 'complainTypeString'}, {label: '投诉类型', prop: 'complainTypeString'},
{label: '责任供应商扣罚金额', prop: 'compensateFee'}, {label: '责任供应商扣罚金额', prop: 'compensateFee'},
] ]
} else if (this.active === 9) {//不使用App案件明细 } else if (this.active === 7) {//不使用App案件明细
this.labelList = [ this.labelList = [
{label: '案件编号', prop: 'orderCode'}, {label: '案件编号', prop: 'orderCode'},
{label: '服务内容', prop: 'serviceName'}, {label: '服务内容', prop: 'serviceName'},
@@ -1168,7 +1169,7 @@ export default {
{label: '案件创建时间', prop: 'orderCreateTime'}, {label: '案件创建时间', prop: 'orderCreateTime'},
{label: '事发地', prop: 'vehiclePointAddress'}, {label: '事发地', prop: 'vehiclePointAddress'},
] ]
} else if (this.active === 10) {//车辆在线情况 } else if (this.active === 8) {//车辆在线情况
this.labelList = [ this.labelList = [
// {label: '总车辆数', prop: 'totalCount'}, // {label: '总车辆数', prop: 'totalCount'},
{label: '在线车辆数(取每日的12点)', prop: 'twelveClockVehicleCount'}, {label: '在线车辆数(取每日的12点)', prop: 'twelveClockVehicleCount'},
@@ -1177,7 +1178,7 @@ export default {
{label: '在线率(在线车辆数/总车辆数)', prop: 'onlineRate'}, {label: '在线率(在线车辆数/总车辆数)', prop: 'onlineRate'},
// {label: '车辆平均在线时长', prop: ''}, // {label: '车辆平均在线时长', prop: ''},
] ]
} else if (this.active === 11) {//聚合失败案件明细 } else if (this.active === 9) {//聚合失败案件明细
this.labelList = [ this.labelList = [
{label: '案件编号', prop: 'orderCode'}, {label: '案件编号', prop: 'orderCode'},
{label: '服务内容', prop: 'serviceName'}, {label: '服务内容', prop: 'serviceName'},
@@ -1605,19 +1606,19 @@ export default {
}, },
setType(type) { setType(type) {
switch (type) { switch (type) {
case 5: /*case 5:
return 1; return 1;
case 6: case 6:
return 2; return 2;*/
case 7: case 5:
return 7; return 7;
case 8: case 6:
return 3; return 3;
case 9: case 7:
return 4; return 4;
case 10: case 8:
return 5; return 5;
case 11: case 9:
return 6; return 6;
} }
}, },