10 Commits

5 changed files with 61 additions and 34 deletions

View File

@ -326,10 +326,17 @@ export function jumpPage(data){
data data
}) })
} }
// //发送确认参保
export function sendInsuranceEmail(){ export function sendInsuranceEmail(){
return request({ return request({
url:'/supplierAppV2/dispatchApp/user/sendInsuranceEmail', url:'/supplierAppV2/dispatchApp/user/sendInsuranceEmail',
method:'POST', method:'POST',
}) })
}
// 判断服务商是否参保
export function isSendInsuranceEmail(){
return request({
url:'/supplierAppV2/dispatchApp/user/isSendInsuranceEmail',
method:'POST',
})
} }

View File

@ -88,7 +88,8 @@
<script> <script>
import { Decimal } from 'decimal.js'; import { Decimal } from 'decimal.js';
import {myMixins} from "@/utils/myMixins" import {myMixins} from "@/utils/myMixins"
import {notifyInvoiceList} from "@/api/mine" import {notifyInvoiceList, jumpPage} from "@/api/mine"
import {Dialog} from "vant";
export default { export default {
name: "invoicingNotify", name: "invoicingNotify",
mixins:[myMixins], mixins:[myMixins],
@ -154,7 +155,7 @@ export default {
} }
} }
}, },
changeTabHandler() { async changeTabHandler() {
this.pageNum = 1; this.pageNum = 1;
this.notifyList = []; this.notifyList = [];
this.checkList = []; this.checkList = [];
@ -166,6 +167,20 @@ export default {
this.status = 2; this.status = 2;
this.dispatchAppSearchInvoiced = ''; this.dispatchAppSearchInvoiced = '';
this.pageSize = 10000 this.pageSize = 10000
let res = await this.getJumpHandler();
if(res?.data?.jump) {
Dialog.alert({
message: '您有暂未完成的培训请在中道调度APP上完成培训再进行发票上传',
confirmButtonText: '去培训',
confirmButtonColor: '#0E76F4',
showCancelButton: false,
}).then(async() => {
this.goPage('newTrainingList', { supplierId : this.supplierId })
}).catch(() => {
// on cancel
});
return false
}
} else if(this.active == 3) { // 已开票,需要分页 } else if(this.active == 3) { // 已开票,需要分页
this.status = ''; this.status = '';
this.dispatchAppSearchInvoiced = 1; this.dispatchAppSearchInvoiced = 1;
@ -173,6 +188,10 @@ export default {
} }
this.getNotifyList() this.getNotifyList()
}, },
async getJumpHandler() {
let res = await jumpPage();
return res
},
getMonth(item) { getMonth(item) {
let str = ''; let str = '';
let startTime = new Date(item.createTime); let startTime = new Date(item.createTime);

View File

@ -62,7 +62,7 @@
</div> </div>
<div class="upload_btn_wrap"> <div class="upload_btn_wrap">
<div class="btn_save" @click="createInvoiceHandler">保存</div> <div class="btn_save" @click="createInvoiceHandler">保存</div>
<van-uploader :before-read="beforeRead" :after-read="afterRead" accept=".png,.jpg,.jpeg,.pdf,.ofd"> <van-uploader :before-read="beforeRead" use-before-read :after-read="afterRead" accept=".png,.jpg,.jpeg,.pdf,.ofd">
<div class="btn_upload"> <div class="btn_upload">
<img class="icon_upload" src="@/assets/icon_upload.png" alt=""> <img class="icon_upload" src="@/assets/icon_upload.png" alt="">
上传发票 上传发票
@ -76,13 +76,14 @@
import { Decimal } from 'decimal.js'; import { Decimal } from 'decimal.js';
import { Dialog } from "vant"; import { Dialog } from "vant";
import { myMixins } from "@/utils/myMixins" import { myMixins } from "@/utils/myMixins"
import { uploadInvoice, getBillingInfo, deleteInvoice, createBatch, jumpPage} from "@/api/mine" import { uploadInvoice, getBillingInfo, deleteInvoice, createBatch} from "@/api/mine"
export default { export default {
name: "uploadInvoice", name: "uploadInvoice",
mixins:[ myMixins ], mixins:[ myMixins ],
data(){ data(){
return { return {
list: [], list: [],
fileObj: '',
invoiceMoneyTotal: 0, invoiceMoneyTotal: 0,
tableData: [], tableData: [],
activeObj: {}, activeObj: {},
@ -132,10 +133,10 @@
} }
}, },
methods: { methods: {
async getJumpHandler() { /* async getJumpHandler() {
let res = await jumpPage(); let res = await jumpPage();
return res return res
}, },*/
async initData() { async initData() {
this.list = JSON.parse(localStorage.getItem('list')); this.list = JSON.parse(localStorage.getItem('list'));
this.batchIds = []; this.batchIds = [];
@ -235,18 +236,12 @@
}); });
}, },
async beforeRead (file) { async beforeRead (file) {
let res = await this.getJumpHandler();
if(res?.data?.jump) {
this.$message.warning("您有没有完成的培训请在中道调度APP上完成培训再进行发票上传")
return false
}
const FileExt = file.name.replace(/.+\./, ""); const FileExt = file.name.replace(/.+\./, "");
if (['jpg', 'png', 'jpeg', 'pdf', 'ofd'].indexOf(FileExt.toLowerCase()) === -1) { if (['jpg', 'png', 'jpeg', 'pdf', 'ofd'].indexOf(FileExt.toLowerCase()) === -1) {
this.$toast('请上传后缀名为jpg、jpeg、png、pdf、ofd的文件') this.$toast('请上传后缀名为jpg、jpeg、png、pdf、ofd的文件')
return false; return false
} }
this.$set(this.activeObj, 'fileType', FileExt) this.$set(this.activeObj, 'fileType', FileExt)
return true
}, },
async afterRead (file) { async afterRead (file) {
try { try {

View File

@ -63,7 +63,7 @@
<div :class="{'reciceOrder':true,'webCom':!isMobile,'evaluate':isMobile}"> <div :class="{'reciceOrder':true,'webCom':!isMobile,'evaluate':isMobile}">
<div class="title">客户评价</div> <div class="title">客户评价</div>
<div class="reciceOrderIWrap" v-if="indexData"> <div class="reciceOrderIWrap" v-if="indexData">
<circle-char ref="Doughnut1" :data="indexData && indexData.complainOrderRate" :title-text="'投诉率'" :bg-color="Number(indexData?.complainOrderRate || 0) <= 0.01 ? 'green' : 'red'" <circle-char ref="Doughnut1" :data="indexData && indexData.complainOrderRate" :title-text="'投诉率'" :bg-color="Number(indexData?.complainOrderRate || 0) <= 0.1 ? 'green' : 'red'"
:is-store="false" @clickComplain="clickJumpHandle(7)"></circle-char> :is-store="false" @clickComplain="clickJumpHandle(7)"></circle-char>
<circle-char ref="Doughnut2" :data="indexData && indexData.customerSatisfaction" :title-text="'平安好评率'" <circle-char ref="Doughnut2" :data="indexData && indexData.customerSatisfaction" :title-text="'平安好评率'"
:bg-color="Number(indexData?.customerSatisfaction || 0) >= 99.4 ? 'green' : 'red'"></circle-char> :bg-color="Number(indexData?.customerSatisfaction || 0) >= 99.4 ? 'green' : 'red'"></circle-char>
@ -91,7 +91,7 @@
<div class="line"></div> <div class="line"></div>
<div class="center common"> <div class="center common">
<div class="num" :class="{'numRed': Number(indexData?.polymerizationSuccessArriving) > 22, 'numGreen': Number(indexData?.polymerizationSuccessArriving) <= 22 }">{{ indexData && indexData.polymerizationSuccessArriving }}</div> <div class="num" :class="{'numRed': Number(indexData?.polymerizationSuccessArriving) > 22, 'numGreen': Number(indexData?.polymerizationSuccessArriving) <= 22 }">{{ indexData && indexData.polymerizationSuccessArriving }}</div>
<div class="itemTitle">合成功到达时效(分)</div> <div class="itemTitle">平安聚合成功到达时效(分)</div>
</div> </div>
<div class="line"></div> <div class="line"></div>
<div class="right common"> <div class="right common">
@ -1184,13 +1184,10 @@ export default {
] ]
} else if (this.active === 11) {//车辆在线情况 } else if (this.active === 11) {//车辆在线情况
this.labelList = [ this.labelList = [
{label: '日期', prop: 'date'},
{label: '案件编号', prop: 'orderCode'}, {label: '案件编号', prop: 'orderCode'},
{label: '服务内容', prop: 'serviceName'}, {label: '服务内容', prop: 'serviceName'},
{label: '聚合分类', prop: 'workOrderTypeString'}, {label: '聚合分类', prop: 'workOrderTypeString'},
{label: '聚合供应商', prop: 'supplierName'}, {label: '聚合信息', prop: 'rescuePersonName'},
{label: '聚合车辆', prop: 'driverName'},
{label: '聚合师傅手机号', prop: 'driverPhone'},
{label: '创建时间', prop: 'orderCreateTime'}, {label: '创建时间', prop: 'orderCreateTime'},
] ]
} }
@ -1223,9 +1220,9 @@ export default {
this.startTime = dayjs(new Date()).format('YYYY-MM') + '-01 00:00:00' this.startTime = dayjs(new Date()).format('YYYY-MM') + '-01 00:00:00'
this.endTime = dayjs(new Date()).format('YYYY-MM') + '-' + this.getDayLen()+' 23:59:59'*/ this.endTime = dayjs(new Date()).format('YYYY-MM') + '-' + this.getDayLen()+' 23:59:59'*/
// test // test
let _testDate = new Date('2024-11-01 00:00:01') // let _testDate = new Date('2024-11-01 00:00:01')
const today = dayjs(_testDate); // 获取当前日期 const today = dayjs(); // 获取当前日期
const currentDay = today.date(); // 获取今天是几号1-31 const currentDay = today.date(); // 获取今天是几号1-31
let targetMonth = today; // 默认目标月份是当前月 let targetMonth = today; // 默认目标月份是当前月
if (currentDay === 1) { if (currentDay === 1) {
@ -1306,8 +1303,8 @@ export default {
{ 'month': '拒单量' },{ 'month': '拒单率(%)' },{ 'month': '超时接单量' },{ 'month': '超时率(%)' },{ 'month': '客户取消率(%)' }] { 'month': '拒单量' },{ 'month': '拒单率(%)' },{ 'month': '超时接单量' },{ 'month': '超时率(%)' },{ 'month': '客户取消率(%)' }]
let props = 'prop' //自定义字段名称 let props = 'prop' //自定义字段名称
this.detailList?.map((item,index) => { this.detailList?.map((item,index) => {
let _dispatchOrderCount = Number(item.receiveOrderCount) + Number(item.refuseOrderCount)
item.dispatchOrderCount=this.formatCurrency1( item.dispatchOrderCount); item.dispatchOrderCount=this.formatCurrency1( _dispatchOrderCount );
item.receiveOrderCount=this.formatCurrency1( item.receiveOrderCount); item.receiveOrderCount=this.formatCurrency1( item.receiveOrderCount);
item.finishOrderCount=this.formatCurrency1( item.finishOrderCount); item.finishOrderCount=this.formatCurrency1( item.finishOrderCount);
item.refuseOrderCount=this.formatCurrency1( item.refuseOrderCount); item.refuseOrderCount=this.formatCurrency1( item.refuseOrderCount);
@ -1466,8 +1463,8 @@ export default {
{label: '日', prop: 'date'}, {label: '日', prop: 'date'},
{label: '投诉量', prop: 'complainOrderCount'}, {label: '投诉量', prop: 'complainOrderCount'},
{label: '投诉率', prop: 'complainOrderRate'}, {label: '投诉率', prop: 'complainOrderRate'},
{label: '好评量', prop: 'favorableCount'}, /* {label: '好评量', prop: 'favorableCount'},
{label: '好评率', prop: 'favorableRate'}, {label: '好评率', prop: 'favorableRate'},*/
{label: '平安评价率', prop: 'pinganEvaluateRate'}, {label: '平安评价率', prop: 'pinganEvaluateRate'},
{label: '平安好评率', prop: 'pinganFavorableRate'}, {label: '平安好评率', prop: 'pinganFavorableRate'},
] ]
@ -1487,7 +1484,7 @@ export default {
this.labelList = [ this.labelList = [
{label: '日', prop: 'date'}, {label: '日', prop: 'date'},
{label: '接单时效(分)', prop: 'receiving'}, {label: '接单时效(分)', prop: 'receiving'},
{label: '3分钟联系客户率', prop: 'threeMinutesReceivingRate'}, {label: '3分钟联系客户率', prop: 'threeMinutesContactRate'},
{label: '到达时效(分)', prop: 'arriving'}, {label: '到达时效(分)', prop: 'arriving'},
{label: '平安聚合成功到达时效(分)', prop: 'pinganJuheSuccessArriving'}, {label: '平安聚合成功到达时效(分)', prop: 'pinganJuheSuccessArriving'},
] ]

View File

@ -29,17 +29,24 @@
<div> 如确认参保请点击下方参保按钮会有专人与贵司联系</div> <div> 如确认参保请点击下方参保按钮会有专人与贵司联系</div>
</div> </div>
<div class="upload_btn_wrap"> <div class="upload_btn_wrap">
<div class="btn_save" @click="showPoup = true">参保</div> <div class="btn_save" :style="{'backgroundColor':used ? '#cccccc' : '#354D93'}" @click="showPoup = true">参保</div>
</div> </div>
<div class="poupCommon" v-if="showPoup"> <div class="poupCommon" v-if="showPoup">
<div class="showPoupContainer"> <div class="showPoupContainer">
<img class="insured" src="@/assets/insured-jianbian.png"> <img class="insured" src="@/assets/insured-jianbian.png">
<img class="insure" src="@/assets/insured.png"> <img class="insure" src="@/assets/insured.png">
<div class="con"> <div class="con">
<div class="title">请确认</div> <template v-if="used">
<div class="title">是否参保救援职业责任险</div> <div class="title">您已成功申请参保请等待</div>
<div class="title">专人与贵司联系</div>
</template>
<template v-else>
<div class="title">请确认</div>
<div class="title">是否参保救援职业责任险</div>
</template>
<div class="btnWrap"> <div class="btnWrap">
<div class="btn confirmBtn" @click="saveHandle">确认</div> <div v-if="used" class="btn confirmBtn" @click="showPoup = false">确认</div>
<div v-else class="btn confirmBtn" @click="saveHandle">确认</div>
<div class="btn closeBtn" @click="showPoup = false">取消</div> <div class="btn closeBtn" @click="showPoup = false">取消</div>
</div> </div>
</div> </div>
@ -50,17 +57,19 @@
<script> <script>
import {myMixins} from "@/utils/myMixins" import {myMixins} from "@/utils/myMixins"
import {sendInsuranceEmail} from "@/api/mine" import {sendInsuranceEmail,isSendInsuranceEmail} from "@/api/mine"
export default { export default {
name: "insuredPage", name: "insuredPage",
mixins: [myMixins], mixins: [myMixins],
data() { data() {
return { return {
showPoup: false, showPoup: false,
used:false,
} }
}, },
async mounted() { async mounted() {
let res=await isSendInsuranceEmail()
this.used=res.data
}, },
methods: { methods: {
async saveHandle() { async saveHandle() {
@ -120,7 +129,7 @@ export default {
flex: 1; flex: 1;
} }
.btn_save { .btn_save {
background: #354D93; //background: #354D93;
margin-right: 4px; margin-right: 4px;
} }
} }