Compare commits
47 Commits
prod-24-06
...
prod-24-07
Author | SHA1 | Date | |
---|---|---|---|
dfe999e88e | |||
abc3aee7dc | |||
1868e8c17e | |||
7b160e12fb | |||
4c393f3f1e | |||
5afbf9df90 | |||
073814bd69 | |||
06fdbc4f84 | |||
86ed97f265 | |||
0aa9f3ec04 | |||
48cd129290 | |||
b8096b39f3 | |||
3a45615e4f | |||
d1b04ec51c | |||
dc091c6dd5 | |||
45914f0577 | |||
42694d57de | |||
61ccb58af2 | |||
f6c33c8c36 | |||
1fbc66a1d6 | |||
b80a748dc9 | |||
f38e2ce614 | |||
febf9a636e | |||
8deaa85c1c | |||
70675fde50 | |||
af297b5892 | |||
f472c878e8 | |||
5df83abfcf | |||
11664e92bf | |||
4be4015e30 | |||
39603134fb | |||
ad49a716b9 | |||
b1945ab42f | |||
4da4cacd7b | |||
39c8bb857b | |||
0dd54330af | |||
a7c7dafa33 | |||
b2af0684fa | |||
cb50de4039 | |||
7785c7ecbe | |||
f45792b527 | |||
793be9d28d | |||
d4c6081f34 | |||
e11946352c | |||
481c37f708 | |||
605bc306a5 | |||
d5d090cdc8 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -6,7 +6,7 @@ node_modules
|
|||||||
# local env files
|
# local env files
|
||||||
.env.local
|
.env.local
|
||||||
.env.*.local
|
.env.*.local
|
||||||
/http.js
|
src/http.js
|
||||||
http.js
|
http.js
|
||||||
# Log files
|
# Log files
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
|
@ -29,5 +29,32 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<script src="https://webapi.amap.com/maps?v=1.4.15&key=2560bbf04daef66c810c5e6a97e8c508&plugin=AMap.Polyline"></script>
|
<script src="https://webapi.amap.com/maps?v=1.4.15&key=2560bbf04daef66c810c5e6a97e8c508&plugin=AMap.Polyline"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// VConsole 默认会挂载到 `window.VConsole` 上
|
||||||
|
// let vConsole = new window.VConsole();
|
||||||
|
(function (doc, win) {
|
||||||
|
let docEl = doc.documentElement
|
||||||
|
let resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'
|
||||||
|
recalc = function () {
|
||||||
|
var clientWidth = docEl.clientWidth;
|
||||||
|
// console.log("clientWidth",clientWidth)
|
||||||
|
if (!clientWidth) return;
|
||||||
|
if (clientWidth < 400) {
|
||||||
|
clientWidth = 400;
|
||||||
|
}
|
||||||
|
docEl.style.fontSize = 18 * (clientWidth / 650) + 'px';
|
||||||
|
};
|
||||||
|
if (!doc.addEventListener) return;
|
||||||
|
var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
||||||
|
if (isMobile) {// 是移动端不变
|
||||||
|
|
||||||
|
}else{
|
||||||
|
win.addEventListener(resizeEvt, recalc, false);
|
||||||
|
doc.addEventListener('DOMContentLoaded', recalc, false);
|
||||||
|
}
|
||||||
|
// console.log("isMobile",isMobile)
|
||||||
|
})(document, window);
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -4,7 +4,7 @@ export function getStatisticsKpiByMonth(data){
|
|||||||
return request({
|
return request({
|
||||||
url: '/supplier/supplierKPI/querySupplierStatisticsKpiByMonth',
|
url: '/supplier/supplierKPI/querySupplierStatisticsKpiByMonth',
|
||||||
method:'POST',
|
method:'POST',
|
||||||
contentType: 'application/json',
|
// contentType: 'application/json',
|
||||||
data
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -13,7 +13,7 @@ export function getStatisticsKpi(data){
|
|||||||
return request({
|
return request({
|
||||||
url: '/supplier/supplierKPI/querySupplierStatisticsKpi',
|
url: '/supplier/supplierKPI/querySupplierStatisticsKpi',
|
||||||
method:'POST',
|
method:'POST',
|
||||||
contentType: 'application/json',
|
// contentType: 'application/json',
|
||||||
data
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -23,7 +23,7 @@ export function getDriverStatisticsKpi(data){
|
|||||||
return request({
|
return request({
|
||||||
url: '/supplier/supplierKPI/querySupplierDriverStatisticsKpi',
|
url: '/supplier/supplierKPI/querySupplierDriverStatisticsKpi',
|
||||||
method:'POST',
|
method:'POST',
|
||||||
contentType: 'application/json',
|
// contentType: 'application/json',
|
||||||
data
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -32,7 +32,27 @@ export function getKpiDetailsData(data){
|
|||||||
return request({
|
return request({
|
||||||
url: '/supplier/supplierKPI/querySupplierKpiDetailsData',
|
url: '/supplier/supplierKPI/querySupplierKpiDetailsData',
|
||||||
method:'POST',
|
method:'POST',
|
||||||
contentType: 'application/json',
|
// contentType: 'application/json',
|
||||||
data
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 关键词搜索服务商名称
|
||||||
|
export function getSupplierId(key) {
|
||||||
|
return request({
|
||||||
|
url: '/supplier/select/supplier',
|
||||||
|
method: 'GET',
|
||||||
|
params: {
|
||||||
|
key: key ,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// supplier/select/driver 关键词搜索司机名称
|
||||||
|
export function getDriverName(key) {
|
||||||
|
return request({
|
||||||
|
url: '/supplier/select/driver',
|
||||||
|
method: 'GET',
|
||||||
|
params: {
|
||||||
|
key: key ,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
@ -111,7 +111,7 @@ export default {
|
|||||||
padding: 13px 24px 0;
|
padding: 13px 24px 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
//overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<div id="supplierScore" ref="supplierScore" style="width: 100%;height: 125px" @click="handle"></div>
|
<div id="supplierScore" ref="supplierScore" class="chart" @click="handle"></div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -14,14 +14,25 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
/* if(this.data){
|
||||||
this.drawHandle();
|
this.drawHandle();
|
||||||
|
}*/
|
||||||
|
setTimeout(()=>{
|
||||||
|
this.drawHandle();
|
||||||
|
},500)
|
||||||
|
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
|
initCircle(){
|
||||||
|
// setTimeout(()=>{
|
||||||
|
this.drawHandle();
|
||||||
|
// },500)
|
||||||
|
},
|
||||||
handle(){
|
handle(){
|
||||||
if(this.titleText == '投诉率'){
|
if(this.titleText == '投诉率'){
|
||||||
console.log(this.titleText)
|
this.$emit('clickComplain')
|
||||||
}else if(this.titleText == '使用率'){
|
}else if(this.titleText == '使用率'){
|
||||||
console.log(this.titleText)
|
this.$emit('clickUse')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 绘制 总分图表
|
// 绘制 总分图表
|
||||||
@ -95,4 +106,8 @@ export default {
|
|||||||
.img{
|
.img{
|
||||||
@include whMarLe(12px,10px,4px);
|
@include whMarLe(12px,10px,4px);
|
||||||
}
|
}
|
||||||
|
.chart{
|
||||||
|
width: 100%;
|
||||||
|
height: 125px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
@ -1,45 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="wrap">
|
|
||||||
<el-table :data="tableData"
|
|
||||||
stripe
|
|
||||||
border
|
|
||||||
style="width: 100%"
|
|
||||||
class="custom-table">
|
|
||||||
<el-table-column
|
|
||||||
v-for="(column,i) in tableData"
|
|
||||||
:key="i"
|
|
||||||
:prop="column.prop"
|
|
||||||
:label="column.label"
|
|
||||||
:fixed="i===0"
|
|
||||||
:width="i===0 ? '40' :'80'"
|
|
||||||
align="center"
|
|
||||||
>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: "commonTable",
|
|
||||||
props: ['tableData'],
|
|
||||||
data() {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
},
|
|
||||||
methods: {}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
@import "@/styles/mixin.scss";
|
|
||||||
::v-deep .el-table thead{
|
|
||||||
font-size: 11px;
|
|
||||||
color: #1D2129;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
::v-deep .el-table th.el-table__cell.is-leaf {
|
|
||||||
background-color: #E5E6EB;
|
|
||||||
}
|
|
||||||
</style>
|
|
172
src/views/kpi/components/noFit-table.vue
Normal file
172
src/views/kpi/components/noFit-table.vue
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
<template>
|
||||||
|
<div class="wrap">
|
||||||
|
<el-table :data="tableData"
|
||||||
|
stripe
|
||||||
|
border
|
||||||
|
style="width: 100%"
|
||||||
|
height="100%"
|
||||||
|
v-loading="loading"
|
||||||
|
:cell-style="setTableCellStyle"
|
||||||
|
class="custom-table">
|
||||||
|
<template v-if="active===1">
|
||||||
|
<el-table-column v-for="item in labelList" :key="item.prop" :label="item.label" :prop="item.prop" align="center">
|
||||||
|
<template slot-scope="scope">{{scope.row[item.prop]}} </template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<el-table-column v-for="column in labelList" :key="column.prop" :prop="column.prop" :label="column.label"
|
||||||
|
align="center" min-width="100" :width="(isMobile && (column.label=='案件编号' || column.label=='服务内容')) ? 70 : 'auto'">
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "noFit-table",
|
||||||
|
props: ['tableData', 'labelList', 'loading', 'isMobile','active'],
|
||||||
|
data() {
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
setTableCellStyle({ row, column,columnIndex }) {
|
||||||
|
// 月总表格被转置,原始方法失效,重新定义对比
|
||||||
|
if(this.active===1){
|
||||||
|
if(row.month == '3′接单率(%)'){
|
||||||
|
if(columnIndex){
|
||||||
|
let res=row[column.property]
|
||||||
|
const rate = parseFloat(res && res.replace('%', ''));
|
||||||
|
if(rate < 95){
|
||||||
|
return {backgroundColor: '#F1B289'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(row.month == '接单时效(分)'){
|
||||||
|
if(columnIndex){
|
||||||
|
let res=row[column.property]
|
||||||
|
if(res > 5){
|
||||||
|
return {backgroundColor: '#F1B289'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(row.month == '到达时效(分)'){
|
||||||
|
if(columnIndex){
|
||||||
|
let res=row[column.property]
|
||||||
|
if(res > 40){
|
||||||
|
return {backgroundColor: '#F1B289'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(row.month == '总聚合成功率(%)'){
|
||||||
|
if(columnIndex){
|
||||||
|
let res=row[column.property]
|
||||||
|
const rate = parseFloat(res && res.replace('%', ''));
|
||||||
|
if(rate < 80){
|
||||||
|
return {backgroundColor: '#F1B289'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(row.month == '使用率(%)'){
|
||||||
|
if(columnIndex){
|
||||||
|
let res=row[column.property]
|
||||||
|
const rate = parseFloat(res && res.replace('%', ''));
|
||||||
|
if(rate < 95){
|
||||||
|
return {backgroundColor: '#F1B289'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(row.month == '投诉率(%)'){
|
||||||
|
if(columnIndex){
|
||||||
|
let res=row[column.property]
|
||||||
|
const rate = parseFloat(res && res.replace('%', ''));
|
||||||
|
if(rate > 0.1){
|
||||||
|
return {backgroundColor: '#F1B289'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 接单率
|
||||||
|
if(column.property=='threeMinutesReceivingRate'){
|
||||||
|
if(columnIndex){
|
||||||
|
const rate = parseFloat(row.threeMinutesReceivingRate && row.threeMinutesReceivingRate.replace('%', ''));
|
||||||
|
if(rate < 95){
|
||||||
|
return {backgroundColor: '#F1B289'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//师傅接单时效》5
|
||||||
|
if(column.property=='receiving'){
|
||||||
|
if(columnIndex){
|
||||||
|
if(row.receiving > 5){
|
||||||
|
return {backgroundColor: '#F1B289'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//到达时效》40
|
||||||
|
if(column.property=='arriving'){
|
||||||
|
if(columnIndex){
|
||||||
|
if(row.arriving > 40){
|
||||||
|
return {backgroundColor: '#F1B289'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//聚合成功率《80
|
||||||
|
if(column.property=='polymerizationSuccessRate'){
|
||||||
|
if(columnIndex){
|
||||||
|
const rate = parseFloat(row.polymerizationSuccessRate && row.polymerizationSuccessRate.replace('%', ''));
|
||||||
|
if(rate < 80){
|
||||||
|
return {backgroundColor: '#F1B289'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//app使用率《95
|
||||||
|
if(column.property=='appRate'){
|
||||||
|
if(columnIndex){
|
||||||
|
const rate = parseFloat(row.appRate && row.appRate.replace('%', ''));
|
||||||
|
if(rate < 95){
|
||||||
|
return {backgroundColor: '#F1B289'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//催促率》3
|
||||||
|
if(column.property=='urgeRate'){
|
||||||
|
if(columnIndex){
|
||||||
|
const rate = parseFloat(row.urgeRate && row.urgeRate.replace('%', ''));
|
||||||
|
if(rate > 3){
|
||||||
|
return {backgroundColor: '#F1B289'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//投诉率》0.1
|
||||||
|
if(column.property=='complainOrderRate'){
|
||||||
|
if(columnIndex){
|
||||||
|
const rate = parseFloat(row.complainOrderRate.replace('%', ''));
|
||||||
|
if(rate > 0.1){
|
||||||
|
return {backgroundColor: '#F1B289'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
@import "@/styles/mixin.scss";
|
||||||
|
::v-deep .el-table{
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
::v-deep .el-table thead{
|
||||||
|
color: #1D2129;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
::v-deep .el-table th.el-table__cell.is-leaf {
|
||||||
|
background-color: #E5E6EB;
|
||||||
|
}
|
||||||
|
::v-deep .el-table .el-table__cell{
|
||||||
|
padding: 4px 0 !important;
|
||||||
|
}
|
||||||
|
</style>
|
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,7 @@
|
|||||||
<div ><span class="opa">车辆名称:</span><span>{{ detailInfo.vehicleName }}</span></div>
|
<div ><span class="opa">车辆名称:</span><span>{{ detailInfo.vehicleName }}</span></div>
|
||||||
<div><span class="opa">车牌号:</span><span>{{ detailInfo.plateNumber }}</span></div>
|
<div><span class="opa">车牌号:</span><span>{{ detailInfo.plateNumber }}</span></div>
|
||||||
<!-- 审批中,通过,终止detailInfo.states ==1 || detailInfo.states ==2 ||detailInfo.states ==3-->
|
<!-- 审批中,通过,终止detailInfo.states ==1 || detailInfo.states ==2 ||detailInfo.states ==3-->
|
||||||
<div class="shopName" v-if="[1,2,3].includes(detailInfo.states)"><span class="opa" >门店信息:</span><span>{{detailInfo.repairPoint || ''}}</span></div>
|
<div class="shopName" v-if="[1,2,3].includes(detailInfo.states)"><span class="opa" >门店信息:</span><span class="textarea">{{detailInfo.repairPoint || ''}}</span></div>
|
||||||
<div class="shopImgList" v-if="[1,2,3].includes(detailInfo.states)">
|
<div class="shopImgList" v-if="[1,2,3].includes(detailInfo.states)">
|
||||||
<template v-if="detailInfo.storePhotoUrls && detailInfo.storePhotoUrls.indexOf(',') !== -1">
|
<template v-if="detailInfo.storePhotoUrls && detailInfo.storePhotoUrls.indexOf(',') !== -1">
|
||||||
<div v-for="(item,index) in (detailInfo.storePhotoUrls?.split(','))" :key="index">
|
<div v-for="(item,index) in (detailInfo.storePhotoUrls?.split(','))" :key="index">
|
||||||
@ -40,7 +40,7 @@
|
|||||||
<div v-if="noPassStatus"><span class="opa">车辆里程:</span><span>{{ parseInt(detailInfo.mileage) || '' }}km</span></div>
|
<div v-if="noPassStatus"><span class="opa">车辆里程:</span><span>{{ parseInt(detailInfo.mileage) || '' }}km</span></div>
|
||||||
<div v-if="noPassStatus"><span class="opa">结算类型:</span><span>{{ detailInfo.paymentType?.label || '' }}</span></div>
|
<div v-if="noPassStatus"><span class="opa">结算类型:</span><span>{{ detailInfo.paymentType?.label || '' }}</span></div>
|
||||||
<div v-if="noPassStatus && detailInfo.paymentType?.code !=2"><span class="opa">维修金额:</span><span>{{ detailInfo.amount || ''}}元</span></div>
|
<div v-if="noPassStatus && detailInfo.paymentType?.code !=2"><span class="opa">维修金额:</span><span>{{ detailInfo.amount || ''}}元</span></div>
|
||||||
<div v-if="noPassStatus && detailInfo.paymentType?.code !=2" class="shopName"><span class="opa">维保项目:</span><span class="project">{{ detailInfo.information ||'' }}</span></div>
|
<div v-if="noPassStatus && detailInfo.paymentType?.code !=2" class="shopName"><span class="opa">维保项目:</span><span class="project textarea">{{ detailInfo.information ||'' }}</span></div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 不通过-->
|
<!-- 不通过-->
|
||||||
<div class="detailInfo" v-if="noPassStatus && detailInfo.paymentType?.code !=2">
|
<div class="detailInfo" v-if="noPassStatus && detailInfo.paymentType?.code !=2">
|
||||||
@ -335,13 +335,16 @@ export default {
|
|||||||
line-height: 27px;
|
line-height: 27px;
|
||||||
}
|
}
|
||||||
.shopName{
|
.shopName{
|
||||||
//width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: baseline;
|
align-items: baseline;
|
||||||
|
.textarea{
|
||||||
|
width: calc(100% - 60px);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.project{
|
.project{
|
||||||
color: #E8A524;
|
color: #E8A524;
|
||||||
width: calc(100% - 60px);
|
//width: calc(100% - 60px);
|
||||||
}
|
}
|
||||||
.shopImgList{
|
.shopImgList{
|
||||||
margin-top: 6px;
|
margin-top: 6px;
|
||||||
|
@ -46,7 +46,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<span class="titleLeft">扣除责任险费:</span>
|
<span class="titleLeft">扣除责任险费:</span>
|
||||||
<span class="content">{{orderInfo.policyAmount}} {{orderInfo.cutInsuranceAmount}}</span>
|
<span class="content">{{orderInfo.policyAmount}} {{orderInfo.cutInsuranceAmount==1 ? '是' : (orderInfo.cutInsuranceAmount==0 ? '否' : ' ')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<span class="leftTitle fontColor">工单照片:</span>
|
<span class="leftTitle fontColor">工单照片:</span>
|
||||||
|
Reference in New Issue
Block a user