37 Commits

Author SHA1 Message Date
58f1f5033d VConsole去除 2026-01-04 17:41:09 +08:00
c8400442a5 微信号更改添加判断 2026-01-04 16:37:05 +08:00
6dbb1377be 确认已添加接口返回null时不做任何处理 2026-01-04 16:01:58 +08:00
847fdc48c6 确认已添加接口返回null时不做任何处理 2026-01-04 15:53:21 +08:00
234853b603 vConsole添加 2026-01-04 15:45:56 +08:00
91b3c069ad 下载app接口替换 2025-12-30 10:41:46 +08:00
0732fdcb8e 人员确认添加二次弹框 2025-12-29 19:04:58 +08:00
64b2099c8b 调度h5的连接下载 2025-12-29 17:45:44 +08:00
ac08b52038 确认信息无误提示语更改 2025-12-29 13:17:10 +08:00
ebfb553829 VConsole去除 2025-12-29 13:12:22 +08:00
77335a1850 确认信息无误添加必填项判断 2025-12-29 13:11:15 +08:00
159ce0fbde 跳转app路径更换 2025-12-28 13:01:48 +08:00
1cc79ba5f5 h5链接替换 2025-12-28 12:04:21 +08:00
c3bdcc8251 样式兼容 2025-12-26 14:12:57 +08:00
78bfd97e0c h5立即打开修改(下方文字修改) 2025-12-26 14:05:36 +08:00
ca5bb1520b h5立即打开修改 2025-12-26 13:52:41 +08:00
cf6d94d54f kpi修改 2025-12-26 13:43:19 +08:00
5845ae76da h5分享链接 2025-12-26 13:43:19 +08:00
0d2082ebaf CRM_25-12-23#story#7473,服务商系统、微信号的输入框只读 2025-12-24 10:21:31 +08:00
0208136ac4 车辆审批需求,责任险可查看 2025-12-23 10:53:47 +08:00
a2907a9fd1 车辆审批需求,责任险可查看 2025-12-23 10:37:39 +08:00
c7a1d95346 车辆审批需求,责任险可查看,保存时添加车辆状态字段 2025-12-23 10:23:52 +08:00
911bf1f5e0 车辆审批需求,车辆新增一个车辆状态为‘ 否-服务商停用’ 2025-12-23 09:21:01 +08:00
a3fd0d6f46 CRM_25-12-23#story#7473,服务商系统,添加是否是主账号判断 2025-12-22 19:51:08 +08:00
6fe09d9674 CRM_25-12-23#story#7473,服务商系统,添加是否是主账号判断 2025-12-22 19:47:44 +08:00
44552c5d35 CRM_25-12-23#story#7473,服务商系统,添加是否是主账号判断 2025-12-22 19:44:35 +08:00
75b727d8b2 车辆审批需求,去除比较提交审批接口,使用原本保存接口,新增canSubmitApproval字段,默认true 2025-12-22 17:19:54 +08:00
4eb791c9c6 CRM_25-12-23#story#7473,服务商系统、调度APP新增服务商人员确认的功能 2025-12-22 13:08:25 +08:00
44e1af7262 CRM_25-12-23#story#7473,服务商系统、调度APP新增服务商人员确认的功能 2025-12-22 13:08:10 +08:00
e0f90ca3b2 VConsole日志添加 2025-12-22 10:02:27 +08:00
7e73da59eb CRM_25-12-23#story#7473,服务商系统、调度APP新增服务商人员确认的功能 2025-12-19 14:16:12 +08:00
361f7f16f8 车辆审批提交,去除备注填写,直接走接口 2025-12-18 18:04:58 +08:00
4734f236cf 车辆审批提交,去除备注填写,直接走接口 2025-12-18 17:33:49 +08:00
89cf401882 CRM_25-12-23#story#7473,服务商系统、调度APP新增服务商人员确认 2025-12-18 14:15:04 +08:00
0fc9be28d1 CRM_25-12-23#story#7473,服务商系统、调度APP新增服务商人员确认 2025-12-17 21:53:36 +08:00
1a567dee57 CRM_25-12-09#story#7474,服务商师傅和车辆修改的审批 2025-12-17 16:19:24 +08:00
ecb87e5bc9 CRM_25-12-23#story#7473,服务商系统、调度APP新增服务商人员确认的功能 2025-12-17 16:19:02 +08:00
13 changed files with 276 additions and 66 deletions

View File

@@ -89,7 +89,7 @@ export function getQrCode(key){
//获取服务商的确认状态 //获取服务商的确认状态
export function getConfirmStatus(key){ export function getConfirmStatus(key){
return request({ return request({
url: '/supplierAppV2/dispatchApp/wechat/getSuppler', url: '/supplierAppV2/dispatchApp/wechat/getSupplier',
method:'GET', method:'GET',
params: key params: key
}) })

View File

@@ -159,3 +159,12 @@ export function getConfigByCode(data){
data data
}) })
} }
//获取最新版本
export function getNewVersion(key){
return request({
url: '/driverApp/app/updateVersion',
method:'GET',
params: key
})
}

BIN
src/assets/greTip.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 868 B

BIN
src/assets/toAppBg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 KiB

BIN
src/assets/yelTip.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 B

View File

@@ -324,6 +324,14 @@ const routes = [
title:'电瓶详情' title:'电瓶详情'
} }
}, },
{
path: '/goToApp',
name: 'goToApp',
component:()=>import('@/views/goToApp/goToApp.vue'),
meta: {
title:'电瓶详情'
}
},
...kpiRouter, ...kpiRouter,
...invoiceRouter, ...invoiceRouter,
...secondHandRouter, ...secondHandRouter,

View File

@@ -48,6 +48,7 @@ service.interceptors.request.use(
service.interceptors.response.use( service.interceptors.response.use(
response => { response => {
console.log('response', response.data)
const res = response.data const res = response.data
if ( res.code === 401 || res.code === 400 || res.code == 500) { if ( res.code === 401 || res.code === 400 || res.code == 500) {
Toast(res.msg || 'Error') Toast(res.msg || 'Error')

View File

@@ -94,6 +94,7 @@ export const myMixins = {
isWebFunc(){ isWebFunc(){
let res=false let res=false
var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
console.log('isMobile',isMobile)
if (!isMobile) {// 是移动端不变 if (!isMobile) {// 是移动端不变
res=true res=true
} }

View File

@@ -0,0 +1,73 @@
<template>
<div class="wrap">
<div class="content">
<div class="goToBtn" @click="goAppHandler">立即打开</div>
<div class="content_tip">
<div class="font_cls">如未安装请点击下载</div>
<div class="font_cls">如已安装未自动跳转 <span @click="downLoadHandler">立即下载</span></div>
</div>
</div>
</div>
</template>
<script>
import { getNewVersion } from "@/api/order"
export default {
name: "goToApp",
methods: {
goAppHandler() {
window.location.href = "rvdriver://page/pagesLogin/phoneLogin?source=h5Link";
},
async downLoadHandler() {
getNewVersion({
appType: 5
}).then((res) => {
window.location.href = res?.result?.path
}).catch(() => {
this.$message.error('请求版本失败,请重试');
});
}
}
}
</script>
<style lang="scss" scoped>
.wrap {
width: 100%;
height: 100vh;
background-image: url('@/assets/toAppBg.png');
background-repeat: no-repeat;
background-size: 100% 100%;
}
.content {
width: 100%;
position: fixed;
top: 74vh;
}
.goToBtn {
width: 70%;
height: 45px;
margin-left: 15%;
background: linear-gradient( 270deg, #2347C0 0%, #72A3FF 100%);
border-radius: 23px;
//font-weight: bold;
font-size: 17px;
color: #FFFFFF;
letter-spacing: 2px;
line-height: 45px;
text-align: center;
}
.content_tip {
width: 100%;
margin-top: 15px;
.font_cls {
font-size: 14px;
color: #808080;
line-height: 20px;
text-align: center;
span {
color: #007BE9;
}
}
}
</style>

View File

@@ -198,7 +198,7 @@
</div> </div>
<div class="isJoin"> <div class="isJoin">
<van-radio-group v-model="vehicleStatus" :class="{ 'disabled-tree': vehicleInfoDisabled }" :disabled="vehicleInfoDisabled" @change="isVehicleChange" class="joinWrap"> <van-radio-group v-model="vehicleStatus" :class="{ 'disabled-tree': vehicleInfoDisabled }" :disabled="vehicleInfoDisabled" @change="isVehicleChange" class="joinWrap">
<van-radio :name="1" style="margin-right: 26px"> <van-radio :name="1" style="margin-right: 14px">
启用 启用
<img <img
slot="icon" slot="icon"
@@ -206,7 +206,7 @@
:src="props.checked ? activeIcon : inactiveIcon" :src="props.checked ? activeIcon : inactiveIcon"
> >
</van-radio> </van-radio>
<van-radio :name="2"> <van-radio :name="2" style="margin-right: 14px">
停用 停用
<img <img
slot="icon" slot="icon"
@@ -214,6 +214,14 @@
:src="props.checked ? activeIcon : inactiveIcon" :src="props.checked ? activeIcon : inactiveIcon"
> >
</van-radio> </van-radio>
<van-radio :name="12" disabled>
-服务商停用
<img
slot="icon"
slot-scope="props"
:src="props.checked ? activeIcon : inactiveIcon"
>
</van-radio>
</van-radio-group> </van-radio-group>
</div> </div>
</div> </div>
@@ -261,6 +269,7 @@
:deletable="!disabledShow" :deletable="!disabledShow"
max-count="1" max-count="1"
:preview-size="54" :preview-size="54"
@click-preview="clickPreview"
/> />
</div> </div>
<div class="lineBot"></div> <div class="lineBot"></div>
@@ -335,7 +344,7 @@
</div> </div>
</div>--> </div>-->
</div> </div>
<two-common-btn class="btn" @cancelClick="h5GoBack" @submitClick="submitAuditHandle" /> <two-common-btn class="btn" @cancelClick="h5GoBack" @submitClick="submitBtn" />
<van-calendar v-model="showDatePicker" :min-date="minDate" <van-calendar v-model="showDatePicker" :min-date="minDate"
:max-date="maxDate" type="range" @confirm="onConfirm" /> :max-date="maxDate" type="range" @confirm="onConfirm" />
@@ -732,11 +741,19 @@ export default {
this.vehicleFrontPhoto = res.data; this.vehicleFrontPhoto = res.data;
await this.ocrCarFrontHandler() await this.ocrCarFrontHandler()
}, },
clickPreview(){
console.log(' this.insurancePicturePhoto', this.insurancePicturePhoto)
if(this.insurancePicturePhoto && this.insurancePicturePhoto.indexOf('.pdf') !== -1){
let url=this.insurancePicturePhoto?.split(',')[0]
window.open(url.replace("http://", "https://"))
}
},
async insurancePictureFilesHandler(file) { async insurancePictureFilesHandler(file) {
const formData = new FormData(); const formData = new FormData();
formData.append("file" , file.file); formData.append("file" , file.file);
let res = await uploadImage(formData); let res = await uploadImage(formData);
this.insurancePicturePhoto = res.data; this.insurancePicturePhoto = res.data;
console.log('insurancePictureFilesHandler',this.insurancePictureFiles)
}, },
async ocrCarFrontHandler() { // 车辆正面 orc 识别 async ocrCarFrontHandler() { // 车辆正面 orc 识别
let res = await ocrHandler({ let res = await ocrHandler({
@@ -886,8 +903,9 @@ export default {
this.insuranceCorp = result.insuranceCorp; this.insuranceCorp = result.insuranceCorp;
this.liabilityInsuranceAudit = result.liabilityInsuranceAudit this.liabilityInsuranceAudit = result.liabilityInsuranceAudit
if(this.insurancePicturePhoto) { if(this.insurancePicturePhoto) {
this.insurancePictureFiles = [{url: this.insurancePicturePhoto}] this.insurancePictureFiles = [{url: this.insurancePicturePhoto?.split(',')[0]}]
} }
console.log('this.insurancePictureFiles',this.insurancePictureFiles)
if( this.vehicleLicenseFront ) { if( this.vehicleLicenseFront ) {
this.vehicleLicenseFrontList = [{ url : this.vehicleLicenseFront }]; this.vehicleLicenseFrontList = [{ url : this.vehicleLicenseFront }];
} }
@@ -969,6 +987,9 @@ export default {
if(key=='serviceIds'){ if(key=='serviceIds'){
this.approvalForm.serviceChange[key]=this.$refs.tree.getCheckedKeys(true) this.approvalForm.serviceChange[key]=this.$refs.tree.getCheckedKeys(true)
} }
if(key=='vehicleType'){
this.approvalForm.serviceChange[key]=this.selectedOption?.join(',') || ''
}
}); });
}else { }else {
this.vehicleInfoChange=false this.vehicleInfoChange=false
@@ -1001,7 +1022,8 @@ export default {
} }
} }
if((this.vehicleInfoChange || this.insuranceChange) && this.id){ if((this.vehicleInfoChange || this.insuranceChange) && this.id){
this.approvalDialogShow=true // this.approvalDialogShow=true
this.submitApprovalHandle()
console.log('11111',this.approvalForm.serviceChange) console.log('11111',this.approvalForm.serviceChange)
console.log('2222',this.approvalForm.insuranceChange) console.log('2222',this.approvalForm.insuranceChange)
}else { }else {
@@ -1027,10 +1049,10 @@ export default {
this.$toast('车辆状态不能为空') this.$toast('车辆状态不能为空')
return return
} }
if(!this.approvalForm.serviceRemark){ /* if(!this.approvalForm.serviceRemark){
this.$toast('车辆和服务备注不能为空') this.$toast('车辆和服务备注不能为空')
return return
} }*/
} }
if(this.insuranceChange){ if(this.insuranceChange){
if(this.hasLiabilityInsurance === null || this.hasLiabilityInsurance === undefined || this.hasLiabilityInsurance === '') { // 有职业责任险,就需要有保单照片 if(this.hasLiabilityInsurance === null || this.hasLiabilityInsurance === undefined || this.hasLiabilityInsurance === '') { // 有职业责任险,就需要有保单照片
@@ -1053,10 +1075,10 @@ export default {
this.$toast('保单有效期不能为空') this.$toast('保单有效期不能为空')
return return
} }
if(!this.approvalForm.insuranceRemark){ /* if(!this.approvalForm.insuranceRemark){
this.$toast('保单备注不能为空') this.$toast('保单备注不能为空')
return return
} }*/
} }
try { try {
this.loading = true; this.loading = true;
@@ -1177,6 +1199,8 @@ export default {
timeObj = this.formatDateTimeRange(this.dateVal) timeObj = this.formatDateTimeRange(this.dateVal)
} }
this.serviceIds = this.$refs.tree.getCheckedKeys(true) this.serviceIds = this.$refs.tree.getCheckedKeys(true)
console.log('1122',this.vehicleStatus)
// return
await saveVehicle({ await saveVehicle({
vehicleId:this.id ? this.id : '', vehicleId:this.id ? this.id : '',
plateNumber:this.carNum ? this.carNum :'', plateNumber:this.carNum ? this.carNum :'',
@@ -1196,6 +1220,8 @@ export default {
liabilityInsuranceStartTime: this.hasLiabilityInsurance == 1 ? (timeObj?.startTime || '' ) : '', liabilityInsuranceStartTime: this.hasLiabilityInsurance == 1 ? (timeObj?.startTime || '' ) : '',
liabilityInsuranceEndTime: this.hasLiabilityInsurance == 1 ? (timeObj?.endTime || '') : '', liabilityInsuranceEndTime: this.hasLiabilityInsurance == 1 ? (timeObj?.endTime || '') : '',
virtualVehicle: this.virtualVehicle, virtualVehicle: this.virtualVehicle,
canSubmitApproval:true,
vehicleStatus:this.vehicleStatus
}) })
if(this.id){ if(this.id){
this.$toast('修改成功') this.$toast('修改成功')

View File

@@ -79,7 +79,7 @@
<div class="carItem" v-for="(item,index) in vehicleList" :key="index" @click.stop="updateVehicle(item)"> <div class="carItem" v-for="(item,index) in vehicleList" :key="index" @click.stop="updateVehicle(item)">
<div class="carCode"> <div class="carCode">
<div class="codeLeft">{{item.plateNumber}} / {{item.vehicleTypeString}} <div class="codeLeft">{{item.plateNumber}} / {{item.vehicleTypeString}}
<span class="ml10" @click.stop="updateStatus(item)" :class="{'insuranceSuccess': item.vehicleStatus == 1, 'insuranceDanger': item.vehicleStatus == 2 ,'insuranceGray': !item.vehicleStatus }">{{ item.vehicleStatus == 1 ? '启用' :( item.vehicleStatus == 2 ? '停用' : '无状态') }} </span> <span class="ml10" @click.stop="updateStatus(item)" :class="{'insuranceSuccess': item.vehicleStatus == 1, 'insuranceDanger': item.vehicleStatus == 2 ,'insuranceGray': !item.vehicleStatus }">{{ item.vehicleStatus == 1 ? '启用' :( item.vehicleStatus == 2 ? '停用' : ( item.vehicleStatus == 12 ? '否-服务商停用' : '无状态')) }} </span>
</div> </div>
</div> </div>

View File

@@ -1626,13 +1626,13 @@ export default {
getTitle(type) { getTitle(type) {
switch (type) { switch (type) {
case 0: case 0:
return '接单时效';
case 1:
return '客户评价'; return '客户评价';
case 2: case 1:
return 'APP使用'; return 'APP使用';
case 3: case 2:
return '时效'; return '时效';
/* case 3:
return '时效';*/
} }
}, },
} }

View File

@@ -1,20 +1,28 @@
<template> <template>
<div class="wrap"> <div class="wrap">
<div class="headerWrap"> <div class="navBar">
<div v-if="isWebFunc()" style="opacity: 0;" class="back"></div> <van-nav-bar
<!-- <img v-else class="back" @click="h5GoBack" src="@/assets/secondHandCar/back.png" />--> title="人员信息"
<span>人员信息</span> :left-arrow="Boolean(!isWebFunc())"
<div style="opacity: 0;" class="back"></div> left-arrow-color="#FFFFFF"
:border="false"
:fixed="true"
:safe-area-inset-top="true"
@click-left="goBack"
/>
</div> </div>
<div :class="{'tipWrap':true,'yelBg':type==3,'greBg':type==4}"> <div :class="{'tipWrap':true,'yelBg':type==3,'greBg':type==4}">
<img v-show="[1,2].includes(type)" src="@/assets/unpass.png" /> <img v-show="[1,2].includes(type)" src="@/assets/unpass.png" />
<img v-show="[3].includes(type)" src="@/assets/yelTip.png" />
<img v-show="[4].includes(type)" src="@/assets/greTip.png" />
<span v-if="type==1">请立即核对或修改以下信息姓名/身份/电话/微信号/邮箱</span> <span v-if="type==1">请立即核对或修改以下信息姓名/身份/电话/微信号/邮箱</span>
<span v-else-if="type==2">角色无法修改如需修改角色请联系区域经理提交审批后请到管理人员模块进行查看</span> <span v-else-if="type==2">角色无法修改如需修改角色请联系区域经理提交审批后请到管理人员模块进行查看</span>
<span v-else-if="type==3">当前信息正在确认中如需调整请联系区域经理</span> <span v-else-if="type==3">当前信息正在确认中如需调整请联系区域经理</span>
<span v-else-if="type==4">当前信息已确认如需调整请联系区域经理</span> <span v-else-if="type==4">当前信息已确认如需调整请联系区域经理</span>
</div> </div>
<van-loading v-show="personList.length<=0" class="loadingWrap" type="spinner" color="#1989fa" /> <van-loading v-show="personList.length<=0" class="loadingWrap" type="spinner" color="#1989fa" />
<div class="contentWrap" v-show="personList.length>0"> <div class="contentWrap" v-show="personList.length>0"
:style="{'height':([1,2].includes(type) && isMaster) ? 'calc(100% - 160px)' : 'calc(100% - 90px)'}">
<div class="itemWrap" v-for="(item,index) in personList" :key="index"> <div class="itemWrap" v-for="(item,index) in personList" :key="index">
<div class="opaCol">人员{{(index+1)}}:</div> <div class="opaCol">人员{{(index+1)}}:</div>
<div class="line"></div> <div class="line"></div>
@@ -33,20 +41,20 @@
<div class="item"> <div class="item">
<div class="left" :class="{'opaCol':type!=2}"><span class="star">*</span><span>电话1</span></div> <div class="left" :class="{'opaCol':type!=2}"><span class="star">*</span><span>电话1</span></div>
<div class="right"> <div class="right">
<van-field :input-align="type==2 ? 'right' : 'left'" :readonly="type!=2" v-model="item.phone1" placeholder="请输入" /> <van-field :input-align="type==2 ? 'right' : 'left'" :readonly="type!=2" v-model.number="item.phone1" placeholder="请输入" @blur="blurHandle" />
</div> </div>
</div> </div>
<div class="item"> <div class="item">
<div class="left" :class="{'opaCol':type!=2}"><span class="star" style="opacity: 0">*</span><span>电话2</span></div> <div class="left" :class="{'opaCol':type!=2}"><span class="star" style="opacity: 0">*</span><span>电话2</span></div>
<div class="right"> <div class="right">
<van-field :input-align="type==2 ? 'right' : 'left'" :readonly="type!=2" v-model="item.phone2" placeholder="请输入" /> <van-field :input-align="type==2 ? 'right' : 'left'" :readonly="type!=2" v-model.number="item.phone2" @blur="blurHandle" placeholder="请输入" />
</div> </div>
</div> </div>
<div class="item"> <div class="item">
<div class="left" :class="{'opaCol':type!=2}"><span class="star">*</span><span>微信号</span></div> <div class="left" :class="{'opaCol':type!=2}"><span class="star">*</span><span>微信号</span></div>
<div class="right wechatRight"> <div class="right wechatRight">
<span class="reviseBtn" v-show="type==2" @click="wechatRevise(item,index)">修改</span> <span class="reviseBtn" v-show="type==2" @click="wechatRevise(item,index)">修改</span>
<van-field :input-align="type==2 ? 'right' : 'left'" :readonly="type!=2" v-model="item.wechatId" /> <van-field :input-align="type==2 ? 'right' : 'left'" readonly v-model="item.wechatName" />
</div> </div>
</div> </div>
<div class="item"> <div class="item">
@@ -57,12 +65,12 @@
</div> </div>
</div> </div>
</div> </div>
<div class="btnWrap"> <div class="btnWrap" v-if="isMaster && [1,2].includes(type)">
<div v-show="type==2" class="audit common" @click="auditHandle">提交审批</div> <div v-show="type==2" class="audit common" @click="auditHandle">提交审批</div>
<div v-show="type==1" class="revise common" @click="reviseHandle">立即修改</div> <div v-show="type==1" class="revise common" @click="reviseHandle">立即修改</div>
<div v-show="type==1" class="confirm common" @click="confirmHandle">确认信息无误</div> <div v-show="type==1" class="confirm common" @click="confirmHandle">确认信息无误</div>
</div> </div>
<van-dialog v-model="dialogShow" title="请先添加企微,成功添加后将更新微信号。" show-cancel-button <van-dialog v-model="dialogShow" title="请将此二维码发送至相应人员进行添加,成功添加后将更新微信号。" show-cancel-button
confirmButtonText="确认已添加" confirmButtonColor="#354E93" className="customDialog" confirmButtonText="确认已添加" confirmButtonColor="#354E93" className="customDialog"
@confirm="wechatConfirm" @cancel="cancelHandle"> @confirm="wechatConfirm" @cancel="cancelHandle">
<img v-if="wechatInfo?.qrCode" :src="wechatInfo.qrCode" style="width: 83%"/> <img v-if="wechatInfo?.qrCode" :src="wechatInfo.qrCode" style="width: 83%"/>
@@ -73,7 +81,7 @@
<script> <script>
import {myMixins} from "@/utils/myMixins" import {myMixins} from "@/utils/myMixins"
import {getConfirmPerson,getConfirmStatus,getQrCode,confirmAddWechat,confirm} from "@/api/authentication"; import {getConfirmPerson,getConfirmStatus,getQrCode,confirmAddWechat,confirm,submitConfirm} from "@/api/authentication";
import { Dialog } from 'vant'; import { Dialog } from 'vant';
export default { export default {
name: "personList", name: "personList",
@@ -84,42 +92,67 @@ export default {
id:'', id:'',
type:'',//1确认信息 2修改 3审批中 4已确认 type:'',//1确认信息 2修改 3审批中 4已确认
personList:[], personList:[],
/* personList:[{name:'',roleName:'法人',phone1:'',phone2:'',wechatId:'',email:'',},
{name:'',roleName:'时空老板',phone1:'',phone2:'',wechatId:'',email:'',},
{name:'',roleName:'时空老板',phone1:'',phone2:'',wechatId:'',email:'',}],*/
dialogShow:false, dialogShow:false,
reviseIndex:-1, reviseIndex:-1,
supplierId:'', supplierId:'',
wechatInfo:'', wechatInfo:'',
personInfoId:'', personInfoId:'',
personInfo:'',
isMaster:false,
} }
}, },
async mounted() { async mounted() {
window.addEventListener('message', (event) => { window.addEventListener('message', (event) => {
if (event.data === 'dialogClosed') { if (event.data === 'dialogClosed') {
console.log('Dialog 已关闭 // 执行关闭后的逻辑'); // console.log('Dialog 已关闭 // 执行关闭后的逻辑');
} }
}); });
// console.log('isWebFunc()',this.isWebFunc())
const urlParams = new URLSearchParams(window.location.search); const urlParams = new URLSearchParams(window.location.search);
this.id=this.$route.query.id || urlParams.get('id'); this.id=this.$route.query.id || urlParams.get('id');
this.supplierId=1128 || this.$route.query.supplierId || urlParams.get('supplierId'); this.supplierId=this.$route.query.supplierId || urlParams.get('supplierId');
// this.supplierId=1128
console.log('1111',this.supplierId)
await this.getPersonList() await this.getPersonList()
}, },
methods:{ methods:{
blurHandle(e){
let val= e.target.value || ''
let flag=this.validatePhone(val)
// console.log('flag',flag)
if(!flag){
this.$toast('手机号格式不正确')
}
},
validatePhone(val) {
console.log('val',val)
if(!val){
return true
}
const purePhone = val
// 情况111位且1开头 → 合法
if (/^1[0-9]{10}$/.test(purePhone)) {
return true
}
// 情况212位且首位是0、第二位是1 → 去0后合法
if (/^01[0-9]{10}$/.test(purePhone)) {
return true
}
// 其他情况 → 不合法
return false
},
async getPersonList(){ async getPersonList(){
let result=await getConfirmStatus({supplierId:this.supplierId}) let result=await getConfirmStatus({supplierId:this.supplierId})
if(!result.data?.wechatConfirmStatus || result.data?.wechatConfirmStatus==1){
this.type=1
}
if(result.data?.wechatConfirmStatus==2){ if(result.data?.wechatConfirmStatus==2){
this.type=3 this.type=3
} }else if(result.data?.wechatConfirmStatus==3){
if(result.data?.wechatConfirmStatus==3){
this.type=4 this.type=4
}else if(!result.data?.wechatConfirmStatus || result.data?.wechatConfirmStatus==1){
this.type=1
} }
this.isMaster=result.data.isMaster
// this.type=2
let res=await getConfirmPerson({supplierId:this.supplierId}) let res=await getConfirmPerson({supplierId:this.supplierId})
console.log('result',result)
if(res.data && res.data.length>0){ if(res.data && res.data.length>0){
this.personList=res.data this.personList=res.data
}else{ }else{
@@ -127,10 +160,33 @@ export default {
} }
}, },
async wechatConfirm(){//确认已添加微信按钮 async wechatConfirm(){//确认已添加微信按钮
Dialog.confirm({
message:'请确认相关人员是否已添加该二维码。',
confirmButtonText:'确认',
cancelButtonText:'取消',
confirmButtonColor:'#354E93',
}).then(async() => {
let res=await confirmAddWechat({supplierId:this.supplierId,supplierPersonInfoId:this.personInfoId}) let res=await confirmAddWechat({supplierId:this.supplierId,supplierPersonInfoId:this.personInfoId})
console.log('----',res) console.log('res',this.personInfo,res.data?.name,this.personInfo.wechatName)
this.personList[this.reviseIndex].wechatId='Nov_1122' if((res.data?.name == this.personInfo.wechatName) || (!res.data && this.personInfo.wechatName)){
console.log('11111111')
this.$set(this.personList[this.reviseIndex],'isChange',false)
}else {
console.log('2222222')
this.$set(this.personList[this.reviseIndex],'isChange',true)
}
console.log('this.personList',this.personList)
let flagRevise=this.personList.some(item => 'isChange' in item && !item.isChange)
console.log('存在未修改',flagRevise)
if(res.data){
this.personList[this.reviseIndex].wechatId=res.data?.externalUserId
this.personList[this.reviseIndex].wechatName=res.data?.name
}
await this.cancelHandle() await this.cancelHandle()
}).catch(async () => {
await this.cancelHandle()
});
}, },
cancelHandle(){ cancelHandle(){
this.dialogShow=false this.dialogShow=false
@@ -139,10 +195,11 @@ export default {
this.personInfoId='' this.personInfoId=''
}, },
async wechatRevise(item,index){ async wechatRevise(item,index){
console.log('index',index) console.log('item,index',item,index)
console.log('item',item) // console.log('item',item)
this.personInfoId=item.id this.personInfoId=item.id
this.reviseIndex=index this.reviseIndex=index
this.personInfo=item
await this.getCode() await this.getCode()
this.dialogShow=true this.dialogShow=true
}, },
@@ -152,37 +209,64 @@ export default {
this.wechatInfo=res.data || '' this.wechatInfo=res.data || ''
}, },
async auditHandle(){//提交审批 async auditHandle(){//提交审批
let flag=this.personList.every(item => item.name && item.phone1 && item.wechatId) let flag=this.personList.every(item => item.name && item.phone1 && item.wechatId && item.wechatName)
if(!flag){ if(!flag){
this.$toast('必填项不可为空') this.$toast('必填项不可为空')
return return
} }
console.log('----',this.personList)
let flagRevise=this.personList.some(item => 'isChange' in item && !item.isChange)
console.log('存在未修改',flagRevise)
if(flagRevise){
this.$toast('您仍未修改微信号,请先修改再提交审批。')
return
}
let phone1Flag= this.personList.every(item => this.validatePhone(item.phone1))
let phone2Flag= this.personList.every(item => (item.phone2 && this.validatePhone(item.phone2) || !item.phone2))
console.log('phone1Flag',phone1Flag)
console.log('phone2Flag',phone2Flag)
if(!phone1Flag || !phone2Flag){
return
}
await submitConfirm({supplierId:this.supplierId,infos:this.personList})
this.$toast('操作成功')
if(this.isWebFunc()){
setTimeout(()=>{
this.closeParentDialog()
},1500)
}else{
setTimeout(()=>{
this.goBack()
},1500)
}
}, },
async reviseHandle(){//修改 async reviseHandle(){//修改
this.type=2 this.type=2
}, },
async confirmHandle(){//确认信息无误 async confirmHandle(){//确认信息无误
let flag=this.personList.every(item => item.name && item.phone1 && item.wechatId && item.wechatName)
if(!flag){
this.$toast('必填项不可为空,请点击“立即修改”将信息补充完整')
return
}
Dialog.confirm({ Dialog.confirm({
message:'请务必仔细确认信息是否无误。', message:'请务必仔细确认信息是否无误。',
confirmButtonText:'确认无误', confirmButtonText:'确认无误',
cancelButtonText:'返回', cancelButtonText:'返回',
confirmButtonColor:'#354E93', confirmButtonColor:'#354E93',
}).then(async() => { }).then(async() => {
console.log('确认无误') // console.log('确认无误')
await confirm({supplierId:this.supplierId}) await confirm({supplierId:this.supplierId})
this.$toast('操作成功')
if(this.isWebFunc()){
setTimeout(()=>{
this.closeParentDialog()
},1500)
}else{
setTimeout(()=>{ setTimeout(()=>{
this.goBack() this.goBack()
},1500) },1500)
}).catch(() => { }
});
},
handle(){
Dialog.alert({
message:'message',
confirmButtonText:this.isWebFunc() ? '确定' : '拨打电话',
showCancelButton:true,
}).then(async() => {
}).catch(() => { }).catch(() => {
}); });
}, },
@@ -194,16 +278,23 @@ export default {
.van-dialog__content{ .van-dialog__content{
text-align: center !important; text-align: center !important;
} }
.van-dialog__header {
box-sizing: border-box;
padding: 12px;
}
} }
</style> </style>
<style scoped lang="scss"> <style scoped lang="scss">
@import "@/styles/common.scss";
@import '@/styles/mixin.scss'; @import '@/styles/mixin.scss';
.wrap { .wrap {
@include wh(100%, 100%); @include wh(100%, 100%);
position: relative; position: relative;
background-color: #F6F6F6; background-color: #F6F6F6;
} }
.navBar{
margin-bottom: 46px;
}
.tipWrap{ .tipWrap{
width: 100%; width: 100%;
box-sizing: border-box; box-sizing: border-box;
@@ -234,7 +325,7 @@ export default {
color: #19AC43; color: #19AC43;
} }
} }
.headerWrap{ /*.headerWrap{
width: 100%; width: 100%;
box-sizing: border-box; box-sizing: border-box;
padding: 15px 16px; padding: 15px 16px;
@@ -250,15 +341,16 @@ export default {
font-size: 16px; font-size: 16px;
color: #203152; color: #203152;
} }
} }*/
.loadingWrap{ .loadingWrap{
width: 100%; width: 100%;
height: calc(100% - 160px); height: calc(100% - 90px);
text-align: center; text-align: center;
line-height: 200px; line-height: 200px;
} }
.contentWrap{ .contentWrap{
height: calc(100% - 160px); //height: calc(100% - 160px);
//height: calc(100% - 90px);//没有按钮时
overflow-y: auto; overflow-y: auto;
.itemWrap{ .itemWrap{
font-size: 14px; font-size: 14px;