Compare commits

..

2 Commits

6 changed files with 47 additions and 240 deletions

View File

@@ -133,15 +133,6 @@ export function getContactQrCodeResult(data){
})
}
// 添加企微
export function updateWechatId(data){
return request({
url:'/supplier/potential/updateWechatId',
method:'POST',
data
})
}
//司机列表
export function driverList(data){
return request({

View File

@@ -154,7 +154,7 @@ export default {
this.isLoading = false
},
initShow(){
this.keyword= ''
this.keyword= '',
this.getNormalList()
}
}

View File

@@ -85,8 +85,8 @@
</el-tree>
</template>
</van-field>
<van-field :border="true" v-model="form.trailCount" type="digit" class="required" name="trailCount" label="拖车数量" placeholder="请输入" :rules="countVerify" />
<van-field :border="true" v-model="form.minorCount" type="digit" class="required" name="minorCount" label="抢修车数量" placeholder="请输入" :rules="countVerify" />
<van-field :border="true" v-model="form.trailCount" name="trailCount" label="拖车数量" placeholder="请输入" />
<van-field :border="true" v-model="form.minorCount" name="minorCount" label="抢修车数量" placeholder="请输入" />
<van-field :border="true" class="required" label="服务区域" placeholder="请选择">
<template #input>
<el-cascader
@@ -100,12 +100,12 @@
clearable></el-cascader>
</template>
</van-field>
<!-- <div class="wei_code_wrap" v-if="form.name && !id">
<div class="wei_code_wrap" v-if="form.name && !id">
<div class="wei_title">请先添加企业微信保证申请流程正常进行</div>
<div class="wei_code_bg">
<img v-if="qrCodeUrl" :src="qrCodeUrl" alt="企业微信二维码" />
</div>
</div>-->
</div>
</div>
</div>
</div>
@@ -138,7 +138,6 @@
errorMsg: '',
phoneVerify: [{ required: true, message: '请输入联系电话' }, { validator: value => { return /^1[3456789]\d{9}$/.test(value) }, message: '联系电话格式不正确' }],
emailVerify: [{ required: true, message: '请输入邮箱' }, { validator: value => { return /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(value) }, message: '邮箱格式不正确' }],
countVerify: [{ required: true, message: '请输入数量' }, { validator: value => /^\d+$/.test(value) && Number(value) >= 0, message: '请输入大于等于0的整数' }],
id:'', //车辆Id
idBackPhotoList: [],
idBackPhoto: '',
@@ -202,12 +201,6 @@
}
},
async mounted() {
const lastRoute = localStorage.getItem('lastRoute');
if (lastRoute) {
const { name, query } = JSON.parse(lastRoute);
this.$router.replace({ name, query });
return;
}
const urlParams = new URLSearchParams(window.location.search);
this.id = this.$route.query.id || urlParams.get('id');
await this.getAreaTree();
@@ -228,6 +221,7 @@
});
this.configId = res?.configId;
this.qrCode = res?.qrCode
console.log('idid', res);
},
async getInfoHandler() {
let res = await getSupplierInfo({
@@ -261,6 +255,7 @@
}
if(_data?.serviceAreaCode) {
this.$set(this.form, 'serviceAreaCode', _data?.serviceAreaCode.split(',').map(item => Number(item)));
// this.form.serviceAreaCode = _data?.serviceAreaCode.split(',').map(item => Number(item));
}
},
showError(msg) {
@@ -296,6 +291,19 @@
this.showError('服务区域不能为空')
return
}
if( !this.qrCode && !this.id) {
await this.QrCodeHandler();
this.showError('请先添加下方企微再申请')
return
}
// this.wechatId='wmOTNXBwAABrvKkE_Fh8ZN8Xm2S9v2wQ'
if(!this.wechatId) {
await this.QrCodeResult();
if( !this.wechatId ) {
this.showError('请先添加企微再申请')
return
}
}
if( this.$refs.tree.getCheckedKeys().length > 0 ) {
await this.saveHandler()
}
@@ -304,6 +312,7 @@
let res = await getContactQrCodeResult({
configId: this.configId
});
console.log('resres', res)
this.wechatId = res?.data?.wechatId
},
async saveHandler() {
@@ -326,36 +335,17 @@
accountUrl:this.licensePhoto,
service: this.$refs.tree.getCheckedKeys().join(',') ,
serviceAreaCode: checkArr.join(','),
wechatId: this.wechatId,
});
Dialog.alert({
title: '提示',
message: "操作成功"
}).then(async () => {
this.goPage('supplierAddResult', { id : res?.data })
setTimeout(() => {
this.clickFlag = true
}, 1000)
});
console.log('rererere', res)
if( res?.noToast ) { // 服务商已存在
this.showError('当前服务商已存在')
if( res?.code != 0 ) {
Dialog.alert({
title: '提示',
message: "该服务商已存在,查看信息"
}).then(async () => {
const target = { name: 'supplierAddResult', query: { id: res?.code } };
localStorage.setItem('lastRoute', JSON.stringify(target));
this.goPage('supplierAddResult', { id : res?.code })
setTimeout(() => {
this.clickFlag = true
}, 1000)
});
}
} else {
Dialog.alert({
title: '提示',
message: "操作成功"
}).then(async () => {
const target = { name: 'supplierAddResult', query: { id: res?.data } };
localStorage.setItem('lastRoute', JSON.stringify(target));
this.goPage('supplierAddResult', { id : res?.data })
setTimeout(() => {
this.clickFlag = true
}, 1000)
});
}
} catch (e) {
this.showError(e)
} finally {

View File

@@ -5,12 +5,6 @@
<img class="wait_icon" src="@/assets/supplier/successIcon.png" alt="">
<div class="info-tip">信息录入完成请等待审核结果</div>
</div>
<div class="wei_code_wrap" v-if="name && id">
<div class="wei_title">请先添加企业微信保证申请流程正常进行</div>
<div class="wei_code_bg">
<img v-if="qrCodeUrl" :src="qrCodeUrl" alt="企业微信二维码" />
</div>
</div>
<div class="btn_wrap">
<div class="btn" @click="searchInfo">信息查看</div>
</div>
@@ -18,83 +12,22 @@
</template>
<script>
import QRCode from 'qrcode'
import {getOrCodeInfo, getContactQrCodeResult, updateWechatId, getSupplierInfo} from "@/api/mine"
import {myMixins} from "@/utils/myMixins"
import {Toast} from "vant";
export default {
name: "supplierAddResult",
mixins:[myMixins],
data() {
return {
id: '',
name: '',
qrCodeUrl: '',
qrCode: '',
configId: '',
wechatId: '',
}
},
async mounted() {
const urlParams = new URLSearchParams(window.location.search);
this.id = this.$route.query.id || urlParams.get('id');
await this.getInfoHandler();
if (this.name && this.id) {
await this.QrCodeHandler();
}
},
methods: {
async getInfoHandler() {
let res = await getSupplierInfo({
id: this.id
});
console.log('66666', res)
let _data = res?.data
this.wechatId = _data?.wechatId;
this.name = _data?.name;
},
async QrCodeHandler() {
await this.QrCodeInfo();
await this.getQrCode();
},
async QrCodeInfo() {
let res = await getOrCodeInfo({ name: this.name });
this.configId = res?.configId;
this.qrCode = res?.qrCode;
},
async getQrCode() {
try {
this.qrCodeUrl = await QRCode.toDataURL(this.qrCode, {
width: 150,
margin: 2,
color: { dark: '#000000', light: '#FFFFFF' },
});
} catch (error) {
console.error('生成二维码失败:', error);
}
},
async QrCodeResult() {
let res = await getContactQrCodeResult({ configId: this.configId });
this.wechatId = res?.data?.wechatId;
},
async updateWechat() {
await updateWechatId({
wechatId: this.wechatId,
id: this.id
})
},
async searchInfo() {
if (!this.wechatId ) {
await this.QrCodeResult();
}
if (!this.wechatId) {
Toast('请先添加企微再查看信息');
return;
}
if(this.wechatId) {
await this.updateWechat()
this.goPage('supplierInfo', { id: this.id })
}
searchInfo() {
this.goPage('supplierInfo', { id : this.id })
}
}
}
@@ -147,23 +80,4 @@
line-height: 46px;
}
}
.wei_code_wrap {
margin-top: 10px;
.wei_title {
font-size: 15px;
color: #FF553B;
text-align: center;
}
.wei_code_bg {
width: 163px;
height: 173px;
background-image: url("~@/assets/supplier/weiCodeBg.png");
background-size: 100% 100%;
margin: 8px auto;
display: flex;
align-items: center;
justify-content: center;
}
}
</style>

View File

@@ -87,11 +87,11 @@
</div>
<div class="info_item">
<div class="label">拖车数量</div>
<div class="content">{{supplierInfo.trailCount>=0 ? supplierInfo.trailCount : ''}}</div>
<div class="content">{{supplierInfo?.trailCount || ''}}</div>
</div>
<div class="info_item">
<div class="label">抢修车数量</div>
<div class="content">{{supplierInfo.minorCount >= 0 ? supplierInfo.minorCount : ''}}</div>
<div class="content">{{supplierInfo?.minorCount || ''}}</div>
</div>
<div class="info_item">
<div class="label">服务区域</div>

View File

@@ -54,11 +54,6 @@
<span
class="content">{{ orderInfo.carClothingToolAmount }}</span>
</div>
<div class="item">
<span class="titleLeft">免拖</span>
<span
class="content">{{ orderInfo.customerDistanceLimit }} {{orderInfo.hedgingMileage && orderInfo.hedgingMileage > 0 ? '(超限对冲,只结免拖)' : ''}}</span>
</div>
<div class="item">
<span class="titleLeft">换电瓶费用</span>
<span
@@ -77,35 +72,35 @@
<div class="inpInfo">
<div class="titleContent">
<div class="flex-between" v-show="abState">
<div><span style="color: red;">*</span> 到事发地距离:</div>
<div> 到事发地距离:</div>
<div class="halfOpcity"><input @input="validateIntegerInput" class="ipt" type="number" v-model="form.supplierSettleMileageAb"/>公里</div>
</div>
<div class="flex-between" v-show="bcState">
<div><span style="color: red;">*</span> 拖车里程:</div>
<div> 拖车里程:</div>
<div class="halfOpcity"><input class="ipt" type="number" v-model="form.supplierSettleMileageBc"/>公里</div>
</div>
<div class="flex-between" v-show="caState">
<div><span style="color: red;">*</span>返程里程:</div>
<div>返程里程:</div>
<div class="halfOpcity"><input class="ipt" type="number" v-model="form.supplierSettleMileageCa"/>公里</div>
</div>
<div class="flex-between" v-show="bridgeAbState">
<div><span v-show="!isUnsuccessfulSettle" style="color: red;">*</span>ab路桥费:</div>
<div>ab路桥费:</div>
<div class="halfOpcity"><input class="ipt" @input="validateIntegerInput" :disabled="isUnsuccessfulSettle" type="number" v-model="form.supplierBridgeAmountAb"/></div>
</div>
<div class="flex-between" v-show="bridgeBcState">
<div><span v-show="!isUnsuccessfulSettle" style="color: red;">*</span>bc路桥费:</div>
<div>bc路桥费:</div>
<div class="halfOpcity"><input class="ipt" @input="validateIntegerInput" :disabled="isUnsuccessfulSettle" type="number" v-model="form.supplierBridgeAmountBc"/></div>
</div>
<div class="flex-between" v-show="bridgeCaState">
<div><span v-show="!isUnsuccessfulSettle" style="color: red;">*</span>ca路桥费:</div>
<div>ca路桥费:</div>
<div class="halfOpcity"><input class="ipt" @input="validateIntegerInput" :disabled="isUnsuccessfulSettle" type="number" v-model="form.supplierBridgeAmountCa"/></div>
</div>
<div class="flex-between" v-show="waitAmountState">
<div><span style="color: red;">*</span>等候费:</div>
<div>等候费:</div>
<div class="halfOpcity inputContent"><input class="ipt" @input="validateIntegerInput" type="number" v-model="form.supplierWaitAmount"/></div>
</div>
<div class="flex-between" v-show="tyreAmountState">
<div><span v-show="!isUnsuccessfulSettle" style="color: red;">*</span>小轮个数:</div>
<div>小轮个数:</div>
<div class="halfOpcity inputContent"><input class="ipt" @input="validateIntegerInput" :disabled="isUnsuccessfulSettle" type="number" v-model="form.tyreNumber"/></div>
</div>
<div class="flex-between" v-show="tyreAmountState">
@@ -113,11 +108,11 @@
<div class="halfOpcity inputContent"><input @input="validateIntegerInput" disabled type="number" v-model="form.supplierTyreAmount"/></div>
</div>
<div class="flex-between" v-show="dilemmaAmountState && basePriceDisabled">
<div><span style="color: red;">*</span>困境费:</div>
<div>困境费:</div>
<div class="halfOpcity inputContent"><input class="ipt" @input="validateIntegerInput" type="number" v-model="form.supplierDilemmaAmount"/></div>
</div>
<div class="flex-between" v-show="basementFeeState">
<div><span v-show="isBasementSettle && !isUnsuccessfulSettle" style="color: red;">*</span>地库费:</div>
<div>地库费:</div>
<div class="halfOpcity inputContent"><input @input="validateIntegerInput" class="ipt" type="number" v-model="form.supplierBasementFee" :disabled="!isBasementSettle || isUnsuccessfulSettle" /></div>
</div>
<div class="flex-between">
@@ -125,7 +120,7 @@
<div class="halfOpcity inputContent"><input type="number" class="ipt" v-model="form.supplierCustomerAmount"/></div>
</div>
<div class="flex-between bgDisable" :class=" { 'flex-between': true, 'bgDisable' : basePriceDisabled } ">
<div><span v-show="!basePriceDisabled && !isBasementSettle" style="color: red;">*</span>基本费用:</div>
<div>基本费用:</div>
<div class="halfOpcity inputContent "><input class="disable" type="number" :readonly="basePriceDisabled || isBasementSettle"
v-model="form.supplierBasePrice"/><span></span></div>
</div>
@@ -662,49 +657,6 @@ export default {
this.goback()
},
async save() {
const isBlank = (v) => v === '' || v === null || v === undefined || parseFloat(v) < 0
if (this.abState && isBlank(this.form.supplierSettleMileageAb)) {
this.$toast('请填写到事发地距离'); return;
}
if (this.bcState && isBlank(this.form.supplierSettleMileageBc)) {
this.$toast('请填写拖车里程'); return;
}
if (this.caState && isBlank(this.form.supplierSettleMileageCa)) {
this.$toast('请填写返程里程'); return;
}
if (this.bridgeAbState && !this.isUnsuccessfulSettle && isBlank(this.form.supplierBridgeAmountAb)) {
this.$toast('请填写ab路桥费'); return;
}
if (this.bridgeBcState && !this.isUnsuccessfulSettle && isBlank(this.form.supplierBridgeAmountBc)) {
this.$toast('请填写bc路桥费'); return;
}
if (this.bridgeCaState && !this.isUnsuccessfulSettle && isBlank(this.form.supplierBridgeAmountCa)) {
this.$toast('请填写ca路桥费'); return;
}
if (this.waitAmountState && isBlank(this.form.supplierWaitAmount)) {
this.$toast('请填写等候费'); return;
}
if (!this.auditFormShow && this.tyreAmountState && !this.isUnsuccessfulSettle && isBlank(this.form.tyreNumber)) {
this.$toast('请填写小轮个数'); return;
}
if (this.dilemmaAmountState && this.basePriceDisabled && isBlank(this.form.supplierDilemmaAmount)) {
this.$toast('请填写困境费'); return;
}
if (this.basementFeeState && this.isBasementSettle && !this.isUnsuccessfulSettle && isBlank(this.form.supplierBasementFee)) {
this.$toast('请填写地库费'); return;
}
if (!this.basePriceDisabled && !this.isBasementSettle && isBlank(this.form.supplierBasePrice)) {
this.$toast('请填写基本费用'); return;
}
if (
this.orderInfo.customerDistanceLimit &&
parseFloat(this.form.supplierSettleMileageBc) > parseFloat(this.orderInfo.customerDistanceLimit)
) {
if (!this.form.supplierCustomerAmount || parseFloat(this.form.supplierCustomerAmount) == 0) {
this.$toast('拖车里程超出免拖范围,请填写收取客户金额');
return;
}
}
if (this.form.supplierOtherAmount > 0) {
if (this.form.supplierOtherAmountRemark == '') {
this.$toast('请填写其他费用说明');
@@ -742,7 +694,6 @@ export default {
await this.compute();
const formData = new FormData();
let obj = this.form;
console.log('obj',obj)
Object.keys(obj).forEach((key) => {
formData.append(key, obj[key]);
});
@@ -774,45 +725,6 @@ export default {
this.$toast('已进入后续流程,不允许操作');
return;
}
const isBlank = (v) => v === '' || v === null || v === undefined || parseFloat(v) < 0
if (this.abState && isBlank(this.form.supplierSettleMileageAb)) {
this.$toast('请填写到事发地距离'); return;
}
if (this.bcState && isBlank(this.form.supplierSettleMileageBc)) {
this.$toast('请填写拖车里程'); return;
}
if (this.caState && isBlank(this.form.supplierSettleMileageCa)) {
this.$toast('请填写返程里程'); return;
}
if (this.bridgeAbState && !this.isUnsuccessfulSettle && isBlank(this.form.supplierBridgeAmountAb)) {
this.$toast('请填写ab路桥费'); return;
}
if (this.bridgeBcState && !this.isUnsuccessfulSettle && isBlank(this.form.supplierBridgeAmountBc)) {
this.$toast('请填写bc路桥费'); return;
}
if (this.bridgeCaState && !this.isUnsuccessfulSettle && isBlank(this.form.supplierBridgeAmountCa)) {
this.$toast('请填写ca路桥费'); return;
}
if (this.waitAmountState && isBlank(this.form.supplierWaitAmount)) {
this.$toast('请填写等候费'); return;
}
if (this.dilemmaAmountState && this.basePriceDisabled && isBlank(this.form.supplierDilemmaAmount)) {
this.$toast('请填写困境费'); return;
}
if (this.basementFeeState && this.isBasementSettle && !this.isUnsuccessfulSettle && isBlank(this.form.supplierBasementFee)) {
this.$toast('请填写地库费'); return;
}
if (!this.basePriceDisabled && !this.isBasementSettle && isBlank(this.form.supplierBasePrice)) {
this.$toast('请填写基本费用'); return;
}
if (
this.orderInfo.customerDistanceLimit &&
parseFloat(this.form.supplierSettleMileageBc) > parseFloat(this.orderInfo.customerDistanceLimit)
) {
if (!this.form.supplierCustomerAmount || parseFloat(this.form.supplierCustomerAmount) == 0) {
this.$toast('拖车里程超出免拖范围,请填写收取客户金额'); return;
}
}
this.loading1 = true;
this.form.supplierExtraPrice = this.form.extraPrice || 0
this.form.supplierBasePrice = this.form.basePrice || 0
@@ -1030,7 +942,7 @@ img {
}
.baseInfo {
width: 100%;
@include wh(100%, 344px);
}