Compare commits
51 Commits
65e5bd2814
...
prod-25-10
| Author | SHA1 | Date | |
|---|---|---|---|
| 186ae03c36 | |||
| 114e4fee5c | |||
| b81f485d1a | |||
| b513d7922a | |||
| a885ad1633 | |||
| f23bba71be | |||
| 4f5e03d1c8 | |||
| f03f323a6f | |||
| 817a0f1e84 | |||
| ec204dc631 | |||
| d1726e3041 | |||
| 01b724964d | |||
| aabcd9ea29 | |||
| ad8312f54b | |||
| 2c9dac15ce | |||
| 2e0f372a9b | |||
| 740ad98a99 | |||
| ecc6e23663 | |||
| 6dcc59ea2d | |||
| f897506e86 | |||
| 06d530fada | |||
| 3f64c42fbf | |||
| 1b62e6eebf | |||
| 074575b703 | |||
| 6d5a91279a | |||
| e9c3befe50 | |||
| 91f14b9389 | |||
| a6dcd9ef03 | |||
| 77d8bbf27c | |||
| 4c90532462 | |||
| 204d6b354f | |||
| 91aa8f3f05 | |||
| 9f2b343662 | |||
| e02456e807 | |||
| ad0094fda2 | |||
| 87263991ff | |||
| 415a0be018 | |||
| 7aefcd8141 | |||
| 6eb407d956 | |||
| 7cfa03bf74 | |||
| b7ee2bb3d7 | |||
| 066abdeeb0 | |||
| 3b8837ce68 | |||
| 8f730c7d04 | |||
| 56046dc878 | |||
| da9cc2f588 | |||
| ab7593ae2d | |||
| 3a7c06ff2f | |||
| ab82fa04a6 | |||
| 695ce00a66 | |||
| c6c6f9e6a9 |
@ -31,10 +31,14 @@
|
||||
}
|
||||
</script>
|
||||
<script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=2560bbf04daef66c810c5e6a97e8c508&plugin=AMap.AutoComplete,AMap.PlaceSearch,AMap.Geolocation,AMap.Geocoder,AMap.Marker,AMap.Driving"></script>
|
||||
<script src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js"></script>
|
||||
<!-- <script src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js"></script>-->
|
||||
<script>
|
||||
window.selfLink = window.location.href;
|
||||
window.selfSearch = window.location.search;
|
||||
</script>
|
||||
<script>
|
||||
// VConsole 默认会挂载到 `window.VConsole` 上
|
||||
let vConsole = new window.VConsole();
|
||||
// let vConsole = new window.VConsole();
|
||||
(function (doc, win) {
|
||||
// console.log("==window.location.pathname===",window.location.pathname)
|
||||
let docEl = doc.documentElement
|
||||
|
||||
@ -323,6 +323,7 @@ export function jumpPage(data){
|
||||
return request({
|
||||
url:'/supplierAppV2/dispatchApp/user/jumpPage',
|
||||
method:'POST',
|
||||
contentType:'application/json',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
@ -19,6 +19,7 @@ if( token ) {
|
||||
service.interceptors.request.use(
|
||||
config => {
|
||||
let reqUrl=config.url
|
||||
console.log('config',config)
|
||||
config.data = config.contentType ? config.data : qs.stringify(config.data)
|
||||
if (config.testFlag) {
|
||||
config.data = qs.stringify(config.data, {arrayFormat: 'indices', allowDots: true})
|
||||
@ -27,12 +28,17 @@ service.interceptors.request.use(
|
||||
let token = localStorage.getItem('token');
|
||||
// let token='eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJBTkNIQU5HIiwidXNlcklkIjo0NTY3MSwibmFtZSI6IuWuieeVhSIsInVzZXJOYW1lIjoiQU5DSEFORyIsInN1cHBsaWVySWQiOjExMjgsImlzWmQiOjAsImV4cCI6MTc1NTQyMjUyNX0.xzDZhaANJFnbeViIHJA0SEtOyTv7Ja3rKmXqRKRuFkc'
|
||||
// let token='eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJTSEhQWEIiLCJ1c2VySWQiOjU0NzI2LCJuYW1lIjoiI-a1i-ivleWwj-eZveeZvSIsInVzZXJOYW1lIjoiU0hIUFhCIiwic3VwcGxpZXJJZCI6MTAwMDE2NSwiZXhwIjoxNzQ0NTEwNzkwfQ.JPk0OA7slYJN3FIi_uhW4Y0CiWRvl6R1dK8MRTbyhD8'
|
||||
if(!(reqUrl=='/supplier/supplierTraining/trainingTask' || reqUrl=='/supplier/supplierTraining/normalList' || reqUrl=='/supplier/supplierTraining/trainingList')){
|
||||
// if(!(reqUrl=='/supplier/supplierTraining/trainingTask' || reqUrl=='/supplier/supplierTraining/normalList' || reqUrl=='/supplier/supplierTraining/trainingList')){
|
||||
if (reqUrl=='/supplier/supplierTraining/trainingList' && config?.params?.type==1){
|
||||
console.log('司机app使用该请求不挂token')
|
||||
} else {
|
||||
if(token) {
|
||||
config.headers['Authorization'] = `${token}`;
|
||||
config.headers['token'] = `${token}`;
|
||||
}
|
||||
}
|
||||
|
||||
// }
|
||||
return config
|
||||
},
|
||||
error => {
|
||||
|
||||
@ -90,6 +90,7 @@ export default {
|
||||
totalList:[],
|
||||
numInfo:'',
|
||||
keyword:'',
|
||||
serviceTypeName:'',
|
||||
show:false,
|
||||
showEmpty:false,
|
||||
isLoading:false,
|
||||
@ -102,6 +103,7 @@ export default {
|
||||
this.driverId = urlParams.get('driverId');
|
||||
this.time=timeFormat(Date.now())
|
||||
this.keyword=urlParams.get('keyword') || ''
|
||||
this.serviceTypeName=urlParams.get('serviceTypeName') || ''
|
||||
this.getTrainingList();
|
||||
document.addEventListener('visibilitychange', async ( ) => {
|
||||
let state = document.visibilityState
|
||||
@ -129,6 +131,7 @@ export default {
|
||||
type:1,
|
||||
id:this.driverId,
|
||||
text:this.keyword || '',
|
||||
serviceTypeName:this.serviceTypeName || ''
|
||||
})
|
||||
this.totalList=[]
|
||||
this.pageList=[]
|
||||
|
||||
@ -94,6 +94,7 @@ export default {
|
||||
showEmpty:false,
|
||||
supplierId:'',
|
||||
driverId:'',
|
||||
serviceTypeName:'',
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@ -103,6 +104,7 @@ export default {
|
||||
if(this.driverId){
|
||||
this.keyword=urlParams.get('keyword') || ''
|
||||
}
|
||||
this.serviceTypeName=urlParams.get('serviceTypeName') || ''
|
||||
this.getNormalList()
|
||||
},
|
||||
methods:{
|
||||
@ -128,6 +130,7 @@ export default {
|
||||
type:this.supplierId ? 2 : 1,
|
||||
id: this.supplierId ? this.supplierId : this.driverId,
|
||||
text:this.keyword || '',
|
||||
serviceTypeName:this.serviceTypeName || ''
|
||||
})
|
||||
this.totalList=res.data.list
|
||||
let result=[]
|
||||
|
||||
@ -68,6 +68,7 @@ export default {
|
||||
pageList:[],
|
||||
totalList:[],
|
||||
keyword:'',
|
||||
serviceTypeName:'',
|
||||
show:false,
|
||||
showEmpty:false,
|
||||
isLoading:false,
|
||||
@ -77,6 +78,8 @@ export default {
|
||||
mounted() {
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
this.supplierId = urlParams.get('supplierId');
|
||||
this.keyword=urlParams.get('keyword') || ''
|
||||
this.serviceTypeName=urlParams.get('serviceTypeName') || ''
|
||||
this.getTrainingList();
|
||||
document.addEventListener('visibilitychange', async ( ) => {
|
||||
let state = document.visibilityState
|
||||
@ -104,6 +107,7 @@ export default {
|
||||
type:2,
|
||||
id: this.supplierId,
|
||||
text:this.keyword || '',
|
||||
serviceTypeName:this.serviceTypeName || ''
|
||||
})
|
||||
this.totalList=[]
|
||||
this.pageList=[]
|
||||
|
||||
@ -175,7 +175,7 @@ export default {
|
||||
confirmButtonColor: '#0E76F4',
|
||||
showCancelButton: false,
|
||||
}).then(async() => {
|
||||
this.goPage('newTrainingList', { supplierId : this.supplierId })
|
||||
this.goPage('newTrainingList', { supplierId : this.supplierId, type: 'invoice' })
|
||||
}).catch(() => {
|
||||
// on cancel
|
||||
});
|
||||
@ -189,7 +189,9 @@ export default {
|
||||
this.getNotifyList()
|
||||
},
|
||||
async getJumpHandler() {
|
||||
let res = await jumpPage();
|
||||
let res = await jumpPage({
|
||||
type: 'invoice'
|
||||
});
|
||||
return res
|
||||
},
|
||||
getMonth(item) {
|
||||
|
||||
@ -95,6 +95,7 @@
|
||||
multiple
|
||||
:multiple-limit="isMultiple ? 2 : 1"
|
||||
v-model="selectedOption"
|
||||
:disabled="vehicleInfoDisabled"
|
||||
value-key="name"
|
||||
class="elSelect"
|
||||
collapse-tags="collapse-tags"
|
||||
@ -121,6 +122,7 @@
|
||||
value-key="name"
|
||||
class="elSelect"
|
||||
collapse-tags="collapse-tags"
|
||||
:disabled="vehicleInfoDisabled"
|
||||
placeholder="请选择" style="width: 55%"
|
||||
>
|
||||
<el-option
|
||||
@ -190,7 +192,7 @@
|
||||
<span>车辆状态</span>
|
||||
</div>
|
||||
<div class="isJoin">
|
||||
<van-radio-group v-model="vehicleStatus" @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">
|
||||
启用
|
||||
<img
|
||||
@ -305,6 +307,7 @@
|
||||
ref="tree"
|
||||
:highlight-current="true"
|
||||
:expand-on-click-node="false"
|
||||
:class="{ 'disabled-tree': vehicleInfoDisabled }"
|
||||
:data="supplierServiceList"
|
||||
:props="defaultProps">
|
||||
</el-tree>
|
||||
@ -384,6 +387,7 @@ export default {
|
||||
vehicleLicense:'',//牌照
|
||||
vehicleFrontLicensePlate:'',//车头照车牌号码
|
||||
insuranceCorp: '',
|
||||
auditStatus: '',
|
||||
vehicleTypes:[{
|
||||
name: '小修车',
|
||||
value: 1
|
||||
@ -401,7 +405,7 @@ export default {
|
||||
name:'牵引车',
|
||||
value: 5 },
|
||||
{
|
||||
name:'大力神',
|
||||
name:'随车吊平板车',
|
||||
value:6},
|
||||
{
|
||||
name:'充电车',
|
||||
@ -491,6 +495,11 @@ export default {
|
||||
}]
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
vehicleInfoDisabled() {
|
||||
return [1,2].includes(this.auditStatus)
|
||||
},
|
||||
},
|
||||
watch:{
|
||||
selectedOption(newVal){
|
||||
if(newVal == 4){
|
||||
@ -510,7 +519,7 @@ export default {
|
||||
this.vehicleTypes[8].disabled=false
|
||||
this.vehicleTypes[9].disabled=false
|
||||
}
|
||||
if (newVal == 1 || newVal == 7){
|
||||
if (newVal == 1 || newVal == 7 || newVal == 9){
|
||||
let arr = []
|
||||
this.supplierServiceList.forEach((item)=>{
|
||||
if(!(item.name == '拖车服务' || item.name == '大型车救援')){
|
||||
@ -563,6 +572,14 @@ export default {
|
||||
}
|
||||
})
|
||||
this.$forceUpdate();
|
||||
} else if( this.vehicleLicenseInfo?.vehicleType?.includes('载货') || this.vehicleLicenseInfo?.vehicleType?.includes('中型') || this.vehicleLicenseInfo?.vehicleType?.includes('重型')) {
|
||||
this.vehicleTypes.map(item => {
|
||||
if( item.value == 1 || item.value == 9 ) {
|
||||
item.disabled = true;
|
||||
} else {
|
||||
item.disabled = false;
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.vehicleTypes.map(item => {
|
||||
item.disabled = false;
|
||||
@ -658,8 +675,21 @@ export default {
|
||||
this.vehicleLicenseInfo.issueDate = frontInfo?.issueDate;
|
||||
this.vehicleLicenseInfo.issueAuthority = frontInfo?.seal;
|
||||
this.setDefault();
|
||||
this.checkDisabledItems();
|
||||
}
|
||||
},
|
||||
checkDisabledItems() {
|
||||
let _arr = [];
|
||||
this.selectedOption.map(item => {
|
||||
let _tempArr = this.vehicleTypes.filter(_item => _item.disabled && _item.value == item);
|
||||
_arr = [..._arr, ..._tempArr]
|
||||
})
|
||||
if (_arr.length > 0) {
|
||||
this.$toast(`车辆类别数据不合法:${_arr.map(item => item.name).join('、')}`)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
async vehicleBackOcrHandler() { // 行驶证副页 ocr 识别
|
||||
this.vehicleLicenseInfo.recordNumber = '';
|
||||
this.vehicleLicenseInfo.passengerCapacity = '';
|
||||
@ -731,6 +761,7 @@ export default {
|
||||
this.selectedOption=result.vehicleType?.split(',').map((item)=>{
|
||||
return Number(item);
|
||||
});
|
||||
this.auditStatus = result.auditStatus;
|
||||
this.virtualVehicle = result.virtualVehicle;
|
||||
this.$refs.tree.setCheckedKeys(result.serviceIds)
|
||||
this.vehicleStatus = result.vehicleStatus
|
||||
@ -743,7 +774,7 @@ export default {
|
||||
this.vehicleLicense = result.vehicleLicense;
|
||||
this.vehicleFrontLicensePlate = result.vehicleFrontLicensePlate;
|
||||
this.hasLiabilityInsurance = result.hasLiabilityInsurance
|
||||
this.vehicleStatus = result.vehicleStatus
|
||||
this.insuranceCorp = result.insuranceCorp;
|
||||
if(this.insurancePicturePhoto) {
|
||||
this.insurancePictureFiles = [{url: this.insurancePicturePhoto}]
|
||||
}
|
||||
@ -811,6 +842,10 @@ export default {
|
||||
this.$toast('车辆类别不能为空')
|
||||
return
|
||||
}
|
||||
let res = this.checkDisabledItems();
|
||||
if(!res) {
|
||||
return false
|
||||
}
|
||||
if( !this.virtualVehicle ) {
|
||||
this.$toast('车辆属性不能为空')
|
||||
return
|
||||
@ -819,7 +854,7 @@ export default {
|
||||
this.$toast('车辆状态不能为空')
|
||||
return
|
||||
}
|
||||
if(this.hasLiabilityInsurance === null || this.hasLiabilityInsurance === undefined) { // 有职业责任险,就需要有保单照片
|
||||
if(this.hasLiabilityInsurance === null || this.hasLiabilityInsurance === undefined || this.hasLiabilityInsurance === '') { // 有职业责任险,就需要有保单照片
|
||||
this.$toast('救援职业责任险不能为空')
|
||||
return
|
||||
}
|
||||
@ -848,7 +883,7 @@ export default {
|
||||
vehicleId:this.id ? this.id : '',
|
||||
plateNumber:this.carNum ? this.carNum :'',
|
||||
vehicleType:this.selectedOption?.length>0 ? this.selectedOption.join(',') : '',
|
||||
hasPolymerization:this.isJoin,
|
||||
// hasPolymerization:this.isJoin,
|
||||
serviceIds:this.serviceIds ? this.serviceIds : [],
|
||||
vehicleLicenseFront: this.vehicleLicenseFront,
|
||||
vehicleLicenseBack: this.vehicleLicenseBack,
|
||||
@ -985,4 +1020,8 @@ export default {
|
||||
border: none !important;
|
||||
text-align: right !important;
|
||||
}
|
||||
.disabled-tree {
|
||||
pointer-events: none;
|
||||
opacity: 0.6;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -18,9 +18,19 @@
|
||||
</template>
|
||||
</van-nav-bar>
|
||||
</div>
|
||||
<van-search
|
||||
v-model="searchVal"
|
||||
show-action
|
||||
placeholder="车辆名称/车牌号/车架号"
|
||||
@search="resetHandler"
|
||||
>
|
||||
<template #action>
|
||||
<div @click="resetHandler">搜索</div>
|
||||
</template>
|
||||
</van-search>
|
||||
<div class="filterWrap">
|
||||
<!-- <div >-->
|
||||
<el-input v-model="searchVal" @blur="resetHandler" placeholder="车辆名称/车牌号/车架号" :class="{'customSel':true,'customInput':true , 'has-value': searchVal }" >
|
||||
<!--<el-input v-model="searchVal" @blur="resetHandler" placeholder="车辆名称/车牌号/车架号" :class="{'customSel':true,'customInput':true , 'has-value': searchVal }" >
|
||||
<template #suffix>
|
||||
<i
|
||||
v-if="searchVal"
|
||||
@ -28,7 +38,7 @@
|
||||
@click="searchVal = ''"
|
||||
></i>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-input>-->
|
||||
<el-select @change="resetHandler" multiple :collapse-tags="true" v-model="inputStatusList" placeholder="录入状态" :class="{'customSel':true , 'has-value': inputStatusList }" clearable>
|
||||
<el-option
|
||||
v-for="item in inputStatusListOptions"
|
||||
@ -47,7 +57,7 @@
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
<el-select @change="resetHandler" multiple :collapse-tags="true" v-model="liabilityInsuranceAudit" placeholder="职业责任险" :class="{'customSel':true , 'has-value': liabilityInsuranceAudit }" clearable>
|
||||
<el-select @change="resetHandler" multiple :collapse-tags="true" v-model="liabilityInsuranceAuditList" placeholder="职业责任险" :class="{'customSel':true , 'has-value': liabilityInsuranceAuditList }" clearable>
|
||||
<el-option
|
||||
v-for="item in insuresOptions"
|
||||
:key="item.value"
|
||||
@ -58,6 +68,7 @@
|
||||
<!-- </div>-->
|
||||
|
||||
</div>
|
||||
<div class="wrap_cls">
|
||||
<van-pull-refresh v-model="isLoading" @refresh="onRefresh">
|
||||
<van-list
|
||||
v-model="loading"
|
||||
@ -65,40 +76,43 @@
|
||||
finished-text="没有更多了"
|
||||
@load="onLoad"
|
||||
>
|
||||
<div class="carItem" v-for="(item,index) in vehicleList" :key="index">
|
||||
<div class="carItem" v-for="(item,index) in vehicleList" :key="index" @click="updateVehicle(item)">
|
||||
<div class="carCode">
|
||||
<div class="codeLeft">{{item.plateNumber}} / {{item.vehicleTypeString}}</div>
|
||||
<div class="twoBtn">
|
||||
<span> {{ item.vehicleStatus == 1 ? '正常' : '停用' }} </span>
|
||||
<!-- <button v-if="permissonList.includes('vehicleAddBtn')" class="del" @click="deleteItem(item.vehicleId)">删除</button>-->
|
||||
<button v-if="permissonList.includes('vehicleModifyBtn')" class="revise" @click="updateVehicle(item)">修改</button>
|
||||
<div class="codeLeft">{{item.plateNumber}} / {{item.vehicleTypeString}}
|
||||
<span class="ml10" v-if="item.vehicleStatus" :class="{'insuranceSuccess': item.vehicleStatus == 1, 'insuranceDanger': item.vehicleStatus != 1}">{{ item.vehicleStatus == 1 ? '启用' : '停用' }} </span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="juhe flex-between">
|
||||
<span class="zdJuhe mr10">核验:<span :class="item.inputStatus == 1 ? 'isYes' :'isNo'">{{item.inputStatus == 1 ? '已核验' :'未核验'}}</span></span>
|
||||
<span class="zdJuhe">认证:<span :class="item.authStatus == 1 ? 'isYes' :'isNo'">{{item.authStatus == 1 ? '已认证' :'未认证'}}</span></span>
|
||||
<span class="zdJuhe">核验认证</span>
|
||||
<span class="flex-right">
|
||||
<span class="common_cls" v-if="item.inputStatusString" :class="getClass(item.inputStatusString)?.className">{{item.inputStatusString}}</span>
|
||||
<span class="common_cls" v-if="item.authStateString" :class="getClass(item.authStateString)?.className">{{item.authStateString}}</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="juhe">
|
||||
<span class="zdJuhe mr10">最近登录时间:{{item.lastLoginTime}}</span>
|
||||
<div class="juhe flex-between">
|
||||
<span class="zdJuhe">救援责任险</span>
|
||||
<span class="flex-right" v-if="item.rescueInsurance">
|
||||
<span class="common_cls" @click.stop="showTip(item.liabilityInsuranceAuditMsg)" :class="getClass(item.rescueInsurance)?.className">{{item.rescueInsurance}}</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="juhe">
|
||||
<span class="zdJuhe mr10">救援职业责任险情况:<span :class="getClass(item.liabilityInsuranceAudit)?.className">{{getClass(item.liabilityInsuranceAudit)?.title}}</span></span>
|
||||
<div class="juhe flex-between">
|
||||
<span class="zdJuhe">最近登录时间</span>
|
||||
<span class="flex-right">{{item.lastLoginTime}}</span>
|
||||
</div>
|
||||
<!--<div class="carType">{{ item.serviceName }}</div>
|
||||
<div class="juhe">
|
||||
<span class="zdJuhe">是否参与中道聚合: </span>
|
||||
<span :class="item.hasPolymerization.code == 0 ? 'isYes' :'isNo'">{{item.hasPolymerization.label}}</span>
|
||||
</div>-->
|
||||
<van-icon class="arrow_position" v-if="permissonList.includes('vehicleModifyBtn')" name="arrow" />
|
||||
</div>
|
||||
|
||||
</van-list>
|
||||
</van-pull-refresh>
|
||||
</div>
|
||||
|
||||
<van-dialog v-model="show" title="确定删除吗" show-cancel-button @confirm="handleConfirm"></van-dialog>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {Dialog} from "vant";
|
||||
import { myMixins} from "@/utils/myMixins";
|
||||
import {supplierVehicleList,deleteVehicle,userOperationPermissions} from "@/api/mine"
|
||||
export default {
|
||||
@ -115,11 +129,12 @@ export default {
|
||||
isLoading: false,
|
||||
loading: false,
|
||||
finished: false,
|
||||
showPopover: false,
|
||||
permissonList:[],
|
||||
inputStatusList: [],
|
||||
searchVal: '',
|
||||
authStates: [],
|
||||
liabilityInsuranceAudit: [],
|
||||
liabilityInsuranceAuditList: [],
|
||||
inputStatusListOptions: [{
|
||||
name: '行驶证未录入',
|
||||
value: 0
|
||||
@ -162,40 +177,57 @@ export default {
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// this.getVehicleList();
|
||||
this.getPermissions();
|
||||
},
|
||||
methods:{
|
||||
showTip(msg) {
|
||||
Dialog.alert({
|
||||
title: '未通过原因',
|
||||
message: msg,
|
||||
}).then(() => {
|
||||
});
|
||||
},
|
||||
getClass(id) {
|
||||
const ids = String(id)
|
||||
const steps = {
|
||||
'1': {
|
||||
title: '待审核',
|
||||
className: 'insuranceMain'
|
||||
'待审核': {
|
||||
className: 'main_cls'
|
||||
},
|
||||
'2': {
|
||||
title: '有责任险',
|
||||
className: 'insuranceSuccess'
|
||||
'有责任险': {
|
||||
className: 'success_cls'
|
||||
},
|
||||
'3': {
|
||||
title: '有货物险',
|
||||
className: 'insuranceTip'
|
||||
'有货物险': {
|
||||
className: 'info_cls'
|
||||
},
|
||||
'4': {
|
||||
title: '未通过(点击显示原因)',
|
||||
className: 'insuranceDanger'
|
||||
'未通过': {
|
||||
className: 'danger_cls'
|
||||
},
|
||||
'5': {
|
||||
title: '无',
|
||||
className: ''
|
||||
'无': {
|
||||
className: 'default_cls'
|
||||
},
|
||||
'6': {
|
||||
title: '空',
|
||||
className: ''
|
||||
'空': {
|
||||
className: 'default_cls'
|
||||
},
|
||||
'行驶证未录入': {
|
||||
className: 'default_cls'
|
||||
},
|
||||
'行驶证核验通过': {
|
||||
className: 'success_cls'
|
||||
},
|
||||
'行驶证核验不通过': {
|
||||
className: 'danger_cls'
|
||||
},
|
||||
'车头照未录入': {
|
||||
className: 'default_cls'
|
||||
},
|
||||
'车头照认证通过': {
|
||||
className: 'success_cls'
|
||||
},
|
||||
'车头照认证不通过': {
|
||||
className: 'danger_cls'
|
||||
}
|
||||
}
|
||||
|
||||
return steps[ids] || { title: '', className: '' }
|
||||
return steps[ids] || { className: 'default_cls' }
|
||||
},
|
||||
async onLoad(){
|
||||
await this.getVehicleList()
|
||||
@ -205,11 +237,12 @@ export default {
|
||||
// 数据全部加载完成
|
||||
if (this.vehicleList.length >= this.total) {
|
||||
this.finished = true;
|
||||
} else {
|
||||
this.finished = false;
|
||||
}
|
||||
},
|
||||
onRefresh() {
|
||||
this.pageNum=1
|
||||
// this.getVehicleList()
|
||||
async onRefresh() {
|
||||
await this.resetHandler()
|
||||
setTimeout(() => {
|
||||
this.$toast('刷新成功');
|
||||
this.isLoading = false;
|
||||
@ -218,7 +251,11 @@ export default {
|
||||
async getVehicleList(){
|
||||
let result = await supplierVehicleList({
|
||||
pageNum:this.pageNum,
|
||||
pageSize:this.pageSize
|
||||
pageSize:this.pageSize,
|
||||
searchVal: this.searchVal,
|
||||
inputStatusList: this.inputStatusList,
|
||||
authStates: this.authStates,
|
||||
liabilityInsuranceAuditList: this.liabilityInsuranceAuditList,
|
||||
})
|
||||
this.total=result.total
|
||||
if(this.pageNum == 1){// 第一页直接赋值
|
||||
@ -247,18 +284,21 @@ export default {
|
||||
await this.getVehicleList();
|
||||
},
|
||||
async resetHandler() {
|
||||
// debounce(async () => {
|
||||
this.pageNum=1
|
||||
this.finished = false;
|
||||
this.total = 0;
|
||||
// this.vehicleList = [];
|
||||
await this.getVehicleList();
|
||||
// }, 1000)
|
||||
},
|
||||
updateVehicle(item){//修改
|
||||
if( this.permissonList.includes('vehicleModifyBtn') ) {
|
||||
this.$router.push({
|
||||
name:'vehicleAdd',
|
||||
params:{
|
||||
id:item.vehicleId
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
@ -268,12 +308,41 @@ export default {
|
||||
<style scoped lang="scss">
|
||||
@import "@/styles/mixin.scss";
|
||||
@import "@/styles/common.scss";
|
||||
.ml10 {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.wrap{
|
||||
background: #F4F5F7;
|
||||
@include sizingPadding(13px,13px);
|
||||
@include wh(100%, 100%);
|
||||
overflow-y: auto;
|
||||
}
|
||||
.wrap_cls {
|
||||
width: 100%;
|
||||
padding-left: 13px;
|
||||
padding-right: 13px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.common_cls {
|
||||
color: #fff;
|
||||
padding: 4px 8px;
|
||||
border-radius: 3px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
.default_cls {
|
||||
background-color: #B0BEC5;
|
||||
}
|
||||
.danger_cls {
|
||||
background-color: red;
|
||||
}
|
||||
.success_cls {
|
||||
background-color: #4CAF50;
|
||||
}
|
||||
.info_cls {
|
||||
background-color: #FF9800;
|
||||
}
|
||||
.main_cls {
|
||||
background-color: #6C9BFF;
|
||||
}
|
||||
.navBar{
|
||||
margin-bottom: 46px;
|
||||
.rightWrap{
|
||||
@ -292,13 +361,14 @@ export default {
|
||||
}
|
||||
}
|
||||
.carItem{
|
||||
@include wh(100%,110px);
|
||||
@include wh(100%,120px);
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 2px 10px 0px rgba(216,216,216,0.5);
|
||||
@include radiusSizing(6px);
|
||||
padding: 11px 13px 11px 15px;
|
||||
margin-bottom: 10px;
|
||||
@include flexBetween;
|
||||
position: relative;
|
||||
.carCode{
|
||||
@include flexColBet;
|
||||
.codeLeft{
|
||||
@ -334,6 +404,11 @@ export default {
|
||||
opacity: .7;
|
||||
@include fontWeightSize(400,12px)
|
||||
}
|
||||
.zdJuhe {
|
||||
width: 80px;
|
||||
text-align: right;
|
||||
margin-left: -10px;
|
||||
}
|
||||
.isYes{
|
||||
color: #09B820;
|
||||
@include fontWeightSize(400,12px);
|
||||
@ -342,6 +417,13 @@ export default {
|
||||
color: #FF0000;
|
||||
@include fontWeightSize(400,12px);
|
||||
}
|
||||
}
|
||||
.arrow_position {
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
top: 50px;
|
||||
font-size: 20px;
|
||||
opacity: 0.6;
|
||||
}
|
||||
.mr10 {
|
||||
margin-right: 10px;
|
||||
@ -361,11 +443,13 @@ export default {
|
||||
.flex-between {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.filterWrap {
|
||||
width: calc(100% - 5px);
|
||||
padding-right: 5px;
|
||||
width: 100%;
|
||||
padding-right: 13px;
|
||||
padding-left: 13px;
|
||||
display: flex;
|
||||
overflow-x: auto; /* 允许横向滚动 */
|
||||
white-space: nowrap; /* 防止子元素换行 */
|
||||
@ -373,7 +457,7 @@ export default {
|
||||
-webkit-overflow-scrolling: touch; /* 在iOS上平滑滚动 */
|
||||
scrollbar-width: none; /* Firefox */
|
||||
padding-bottom: 10px;
|
||||
padding: 10px;
|
||||
/*padding: 10px;*/
|
||||
margin-bottom: 10px;
|
||||
background-color: #fff;
|
||||
box-sizing: border-box;
|
||||
@ -382,14 +466,14 @@ export default {
|
||||
}
|
||||
.customSel {
|
||||
flex: 0 0 auto; /* 防止子元素被压缩 */
|
||||
width: 100px;
|
||||
width: calc(33% - 5px);
|
||||
/*width: 100%;*/
|
||||
height: 25px;
|
||||
background: #F5F5F5;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: #323233;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
::v-deep .el-input__inner{
|
||||
padding: 0 2px;
|
||||
height: 25px;
|
||||
@ -445,5 +529,11 @@ export default {
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.flex-right {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
justify-content: flex-start;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@ -65,7 +65,7 @@
|
||||
<div class="reciceOrderIWrap" v-if="indexData">
|
||||
<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>
|
||||
<circle-char ref="Doughnut2" :data="indexData && indexData.pinganFavorableRate" :title-text="'平安好评率'" :is-store="false"
|
||||
<circle-char v-if="false" ref="Doughnut2" :data="indexData && indexData.pinganFavorableRate" :title-text="'平安好评率'" :is-store="false"
|
||||
:bg-color="Number(indexData?.pinganFavorableRate || 0) >= 99.4 ? 'green' : 'red'"></circle-char>
|
||||
<circle-char ref="Doughnut3" :data="indexData && indexData.urgeRate" :title-text="'催促率'"
|
||||
:bg-color="Number(indexData?.urgeRate || 0) >= 3 ? 'red' : 'green'"></circle-char>
|
||||
@ -88,8 +88,8 @@
|
||||
<div class="num" :class="{'numRed': Number(indexData?.receiving) > 5, 'numGreen': Number(indexData?.receiving) <= 5 }">{{ indexData && indexData.receiving }}</div>
|
||||
<div class="itemTitle">接单时效(分)</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<div class="center common">
|
||||
<div class="line" v-if="false"></div>
|
||||
<div class="center common" v-if="false">
|
||||
<div class="num" :class="{'numRed': Number(indexData?.pinganJuheSuccessArriving) > 22, 'numGreen': Number(indexData?.pinganJuheSuccessArriving) <= 22 }">{{ indexData && indexData.pinganJuheSuccessArriving }}</div>
|
||||
<div class="itemTitle">平安聚合成功到达时效(分)</div>
|
||||
</div>
|
||||
@ -283,7 +283,7 @@ export default {
|
||||
{name: '总览',value:0}, {name: '月/总'}, {name: '日/总'},{name: '月/师傅'}, {name: '日/师傅'}, {name: '拒单明细'},
|
||||
{name: '超时明细'}, {name: '催促明细'},{name: '投诉明细'}, {name: '不使用APP案件明细'}, {name: '车辆在线情况'} , {name: '聚合失败案件明细'}
|
||||
],
|
||||
list: [{name: '接单指标'}, {name: '客户评价'}, {name: 'APP使用'}, {name: ' 时效 '}],
|
||||
list: [{name: '接单指标'}, {name: '服务评价'}, {name: 'APP使用情况'}, {name: ' 时效 '}],
|
||||
// driverList: [{name: '得分总览'},{name: '接单情况'}, {name: '服务评价'}, {name: 'APP使用情况'}, {name: '时效 '}],
|
||||
driverList: [{name: '接单情况'}, {name: '服务评价'}, {name: 'APP使用情况'}, {name: '时效 '}],//story#7149,要求暂时隐藏得分总览
|
||||
|
||||
@ -384,7 +384,7 @@ export default {
|
||||
return
|
||||
}
|
||||
this.$refs.Doughnut1.initCircle()
|
||||
this.$refs.Doughnut2.initCircle()
|
||||
// this.$refs.Doughnut2.initCircle()
|
||||
this.$refs.Doughnut3.initCircle()
|
||||
this.$refs.Doughnut4.initCircle()
|
||||
this.$refs.Doughnut5.initCircle()
|
||||
@ -1140,7 +1140,7 @@ export default {
|
||||
{label: '催促创建时间 ', prop: 'urgeTime'},
|
||||
{label: '服务商接单时间 ', prop: 'taskAcceptTime'},
|
||||
{label: '备注内容(催促内容) ', prop: 'urgeRemark'},
|
||||
// {label: '催促次数 ', prop: ''},无催促次数,催促一次生成一条新的
|
||||
{label: '催促次数', prop: 'urgeCount'},//无催促次数,催促一次生成一条新的
|
||||
{label: '服务商名称', prop: 'supplierName'},
|
||||
{label: '服务车辆', prop: 'vehicleName'},
|
||||
{label: '服务完成状况', prop: 'orderStatusString'},
|
||||
@ -1597,8 +1597,10 @@ export default {
|
||||
},
|
||||
setType(type) {
|
||||
switch (type) {
|
||||
case 6:
|
||||
case 5:
|
||||
return 1;
|
||||
case 6:
|
||||
return 2;
|
||||
case 7:
|
||||
return 7;
|
||||
case 8:
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
为此中道救援经过与保司沟通协调,特为与中道救援合作紧密的服务商,提供救援职业责任险参保渠道,提升服务商服务能力,降低运营风险,实现共同进步。
|
||||
</div>
|
||||
<div>一、救援职业责任险简介:</div>
|
||||
<div>1、综合保额50万元,可全方位覆盖我们日常的经营活动。</div>
|
||||
<div> 1、综合保额100万元(其中救援责任50万元,物流责任50万元),可全方位覆盖我们日常的经营活动。</div>
|
||||
<div> 2、保费支付可采用救援服务费抵扣的方式,降低资金压力。</div>
|
||||
<div> 3、详细保险条款、保费和其他问题,如需了解,请与辖区区域经理联系。</div>
|
||||
<div> 二、其他意见建议如需交流,请与18621558505曲仁杰联系。</div>
|
||||
|
||||
@ -78,9 +78,11 @@ export default {
|
||||
isLoading:false,
|
||||
showPoup:true,//进入弹框
|
||||
isFinished:false,
|
||||
type: '',
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.type = this.$route.query?.type;
|
||||
// this.onRefresh();
|
||||
this.getList();
|
||||
|
||||
@ -120,6 +122,7 @@ export default {
|
||||
pageSize:this.pageSize,
|
||||
docType:1,
|
||||
trainingType:4,
|
||||
type: this.type,
|
||||
})
|
||||
this.pageList=res.data?.list || [];
|
||||
if(res.data.assessState == 0){
|
||||
|
||||
@ -56,7 +56,7 @@
|
||||
auditTip: '',
|
||||
statusStr: '',
|
||||
verifyStatus: '',
|
||||
type: localStorage.getItem('type')
|
||||
type: 'full',
|
||||
}
|
||||
},
|
||||
mixins: [ myMixins ],
|
||||
@ -74,6 +74,16 @@
|
||||
// },
|
||||
async mounted() {
|
||||
// await this.$onLaunched;
|
||||
// 禁止双击放大
|
||||
let lastTouchEnd = 0;
|
||||
document.addEventListener('touchend', (event) => {
|
||||
const now = Date.now();
|
||||
if (now - lastTouchEnd <= 300) {
|
||||
event.preventDefault(); // 阻止双击放大
|
||||
}
|
||||
lastTouchEnd = now;
|
||||
}, { passive: false });
|
||||
|
||||
await this.refresh()
|
||||
},
|
||||
methods: {
|
||||
@ -105,7 +115,9 @@
|
||||
return this.currentStep > status
|
||||
},
|
||||
showDetail(path) {
|
||||
this.goPage(path)
|
||||
this.goPage(path,{
|
||||
token:localStorage.getItem('token')
|
||||
})
|
||||
},
|
||||
getVerifyStatus() {
|
||||
if( this.type == 'simple' ) {
|
||||
@ -128,6 +140,8 @@
|
||||
padding-bottom: 80px;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch; /* 启用iOS惯性滚动 */
|
||||
scroll-behavior: smooth; /* 平滑滚动(部分浏览器支持) */
|
||||
}
|
||||
.audit_list {
|
||||
padding: 20px 30px;
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
:border="false"
|
||||
:fixed="true"
|
||||
:safe-area-inset-top="true"
|
||||
@click-left="h5GoBack"
|
||||
@click-left="goListPage"
|
||||
/>
|
||||
</div>
|
||||
<tip-bar :title="'温馨提示:服务完成后,平台代收的运费需要提现到您的银行卡账户中,请确保您上传的银行卡信息真实可用。'"></tip-bar>
|
||||
@ -41,7 +41,7 @@
|
||||
import fixedButton from "./component/fixedButton";
|
||||
import photoItem from "./component/photoItem";
|
||||
import tipBar from "./component/tipBar";
|
||||
import { ocrRecognize, driverInfoVerify, driverInfoVerifyDetail } from '@/api/authentication.js'
|
||||
import {ocrRecognize, driverInfoVerify, driverInfoVerifyDetail, infoVerifyProgress} from '@/api/authentication.js'
|
||||
import { leftCopy } from '@/utils/common.js'
|
||||
import { myMixins } from '@/utils/myMixins.js'
|
||||
export default {
|
||||
@ -67,15 +67,22 @@
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
// 禁止双击放大
|
||||
let lastTouchEnd = 0;
|
||||
document.addEventListener('touchend', (event) => {
|
||||
const now = Date.now();
|
||||
if (now - lastTouchEnd <= 300) {
|
||||
event.preventDefault(); // 阻止双击放大
|
||||
}
|
||||
lastTouchEnd = now;
|
||||
}, { passive: false });
|
||||
|
||||
// if(options?.show) {
|
||||
this.show = true
|
||||
// }
|
||||
if( this.show ) {
|
||||
await this.getDetail()
|
||||
}
|
||||
},
|
||||
async onShow() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
async clickHandler() {
|
||||
@ -94,13 +101,25 @@
|
||||
verifyType: 4
|
||||
})
|
||||
setTimeout(() => {
|
||||
this.h5GoBack()
|
||||
this.goListPage()
|
||||
}, 100)
|
||||
console.log('注册', res)
|
||||
} else {
|
||||
this.$toast('银行卡信息识别错误')
|
||||
}
|
||||
},
|
||||
async getRegisterInfo(data) {
|
||||
let res = await infoVerifyProgress( data)
|
||||
localStorage.setItem('infoVerify', res?.data?.infoVerify?.code)
|
||||
localStorage.setItem('failReason', res?.data?.verifyRemark)
|
||||
localStorage.setItem('authIsSuccess', res?.data?.authIsSuccess)
|
||||
localStorage.setItem('name', res?.data?.name)
|
||||
},
|
||||
goListPage(){
|
||||
this.goPage('auditList',{
|
||||
token:localStorage.getItem('token')
|
||||
})
|
||||
},
|
||||
async bankHandler(data) {
|
||||
this.form.bankName = ''
|
||||
this.form.cardNumber = ''
|
||||
@ -136,6 +155,8 @@
|
||||
.content{
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch; /* 启用iOS惯性滚动 */
|
||||
scroll-behavior: smooth; /* 平滑滚动(部分浏览器支持) */
|
||||
}
|
||||
.navBar{
|
||||
margin-bottom: 46px;
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
:border="false"
|
||||
:fixed="true"
|
||||
:safe-area-inset-top="true"
|
||||
@click-left="h5GoBack"
|
||||
@click-left="goListPage"
|
||||
/>
|
||||
</div>
|
||||
<tip-bar :title="'应国家政策要求:从事货运行业的司机用户,身份证照片、驾驶证信息、行驶证信息、人车合影及承运资质信息必须进行实名认证。'"></tip-bar>
|
||||
@ -70,7 +70,7 @@
|
||||
import fixedButton from "./component/fixedButton";
|
||||
import photoItem from "./component/photoItem";
|
||||
import tipBar from "./component/tipBar";
|
||||
import { ocrRecognize, driverInfoVerify, driverInfoVerifyDetail } from '@/api/authentication.js'
|
||||
import {ocrRecognize, driverInfoVerify, driverInfoVerifyDetail, infoVerifyProgress} from '@/api/authentication.js'
|
||||
import { leftCopy } from '@/utils/common.js'
|
||||
import { myMixins } from '@/utils/myMixins.js'
|
||||
export default {
|
||||
@ -97,10 +97,20 @@
|
||||
recordNumber: '', // 档案编号
|
||||
},
|
||||
show: undefined,
|
||||
type: localStorage.getItem('type'),
|
||||
type: 'full',
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
// 禁止双击放大
|
||||
let lastTouchEnd = 0;
|
||||
document.addEventListener('touchend', (event) => {
|
||||
const now = Date.now();
|
||||
if (now - lastTouchEnd <= 300) {
|
||||
event.preventDefault(); // 阻止双击放大
|
||||
}
|
||||
lastTouchEnd = now;
|
||||
}, { passive: false });
|
||||
|
||||
// if(options?.show) {
|
||||
this.show = true
|
||||
// }
|
||||
@ -108,8 +118,6 @@
|
||||
await this.getDetail()
|
||||
}
|
||||
},
|
||||
async onShow() {
|
||||
},
|
||||
methods: {
|
||||
backInit() {
|
||||
this.form.recordNumber = ''
|
||||
@ -179,9 +187,20 @@
|
||||
verifyType: 2
|
||||
})
|
||||
setTimeout(() => {
|
||||
this.h5GoBack()
|
||||
this.goListPage()
|
||||
}, 100)
|
||||
}
|
||||
}, async getRegisterInfo(data) {
|
||||
let res = await infoVerifyProgress( data)
|
||||
localStorage.setItem('infoVerify', res?.data?.infoVerify?.code)
|
||||
localStorage.setItem('failReason', res?.data?.verifyRemark)
|
||||
localStorage.setItem('authIsSuccess', res?.data?.authIsSuccess)
|
||||
localStorage.setItem('name', res?.data?.name)
|
||||
},
|
||||
goListPage(){
|
||||
this.goPage('auditList',{
|
||||
token:localStorage.getItem('token')
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@ -193,8 +212,11 @@
|
||||
background: #F4F5F7;
|
||||
}
|
||||
.content{
|
||||
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch; /* 启用iOS惯性滚动 */
|
||||
scroll-behavior: smooth; /* 平滑滚动(部分浏览器支持) */
|
||||
}
|
||||
.navBar{
|
||||
margin-bottom: 46px;
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
:border="false"
|
||||
:fixed="true"
|
||||
:safe-area-inset-top="true"
|
||||
@click-left="h5GoBack"
|
||||
@click-left="goListPage"
|
||||
/>
|
||||
</div>
|
||||
<tip-bar :title="'应国家政策要求:从事货运行业的司机用户,身份证照片、驾驶证信息、行驶证信息、人车合影及承运资质信息必须进行实名认证。'"></tip-bar>
|
||||
@ -141,7 +141,7 @@
|
||||
import fixedButton from "./component/fixedButton";
|
||||
import photoItem from "./component/photoItem";
|
||||
import tipBar from "./component/tipBar";
|
||||
import { ocrRecognize, driverInfoVerify, driverInfoVerifyDetail } from '@/api/authentication.js'
|
||||
import {ocrRecognize, driverInfoVerify, driverInfoVerifyDetail, infoVerifyProgress} from '@/api/authentication.js'
|
||||
import { leftCopy } from '@/utils/common.js'
|
||||
import { myMixins } from '@/utils/myMixins.js'
|
||||
import {areaList} from "@vant/area-data";
|
||||
@ -190,20 +190,27 @@
|
||||
region:[],
|
||||
},
|
||||
show: undefined,
|
||||
type: localStorage.getItem('type'),
|
||||
type: 'full',
|
||||
tyreOptions:[{value:0,name:'0'},{value:2,name:'2'},{value:4,name:'4'}]
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
// 禁止双击放大
|
||||
let lastTouchEnd = 0;
|
||||
document.addEventListener('touchend', (event) => {
|
||||
const now = Date.now();
|
||||
if (now - lastTouchEnd <= 300) {
|
||||
event.preventDefault(); // 阻止双击放大
|
||||
}
|
||||
lastTouchEnd = now;
|
||||
}, { passive: false });
|
||||
|
||||
// if(options?.show) {
|
||||
this.show = true
|
||||
// }
|
||||
if(this.show) {
|
||||
await this.getDetail()
|
||||
}
|
||||
},
|
||||
async onShow() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
confirmHandle(val){
|
||||
@ -294,9 +301,16 @@
|
||||
verifyType: 3
|
||||
})
|
||||
setTimeout(() => {
|
||||
this.h5GoBack()
|
||||
this.goListPage()
|
||||
}, 100)
|
||||
},
|
||||
async getRegisterInfo(data) {
|
||||
let res = await infoVerifyProgress( data)
|
||||
localStorage.setItem('infoVerify', res?.data?.infoVerify?.code)
|
||||
localStorage.setItem('failReason', res?.data?.verifyRemark)
|
||||
localStorage.setItem('authIsSuccess', res?.data?.authIsSuccess)
|
||||
localStorage.setItem('name', res?.data?.name)
|
||||
},
|
||||
carrierHandler(data) { // 承运人责任险照片
|
||||
console.log("data",data)
|
||||
this.form.carrierLiabilityInsurancePhoto = data
|
||||
@ -361,6 +375,11 @@
|
||||
});
|
||||
return res;
|
||||
},
|
||||
goListPage(){
|
||||
this.goPage('auditList',{
|
||||
token:localStorage.getItem('token')
|
||||
})
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
regionText() {
|
||||
@ -380,9 +399,11 @@
|
||||
margin-bottom: 46px;
|
||||
}
|
||||
.content {
|
||||
/*padding-bottom: 86px;*/
|
||||
padding-bottom: 86px;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch; /* 启用iOS惯性滚动 */
|
||||
scroll-behavior: smooth; /* 平滑滚动(部分浏览器支持) */
|
||||
}
|
||||
.carInfo .title {
|
||||
width: 100% !important;
|
||||
|
||||
@ -9,13 +9,15 @@
|
||||
</van-radio-group>
|
||||
</div>
|
||||
<div class="photoWrap" v-if="inSure == 1">
|
||||
<van-uploader :after-read="(file) => afterRead(file,'urlList')" class="customUploadMul" :max-count="3" :disabled="!showFun()">
|
||||
<van-uploader :after-read="(file) => afterRead(file,'urlList')" class="customUploadMul" @click-upload="(event)=>clickUpload(event,'urlList')">
|
||||
<!-- -->
|
||||
<!-- :max-count="3" v-model="fileList" multiple :deletable="true" -->
|
||||
<template v-if="urlList.length > 0">
|
||||
<div v-for="(item, index) in urlList" :key="'uploaded-' + index" class="uploaded-item">
|
||||
<div v-for="(item, index) in urlList" :key="index" class="uploaded-item">
|
||||
<img class="photo_item" mode="widthFix" :src="item.replace(/http:\/\//g, 'https://')" />
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="urlList.length < 3">
|
||||
<template v-if="urlList.length < 3 && showFun()">
|
||||
<div class="tipWrap">
|
||||
<img class="photo_item" mode="widthFix" src="@/assets/authentication/carInfo_icon5.png"/>
|
||||
<img class="camera" v-if="showFun()" src="@/assets/authentication/camera.png" />
|
||||
@ -31,7 +33,7 @@
|
||||
<span>{{title}}</span>
|
||||
</div>
|
||||
<div class="photo_img flex flex_between">
|
||||
<van-uploader v-if="leftUrl" :after-read="(file) => afterRead(file,'leftImg')" class="customUpload" :disabled="!showFun()">
|
||||
<van-uploader v-if="leftUrl" :after-read="(file) => afterRead(file,'leftImg')" class="customUpload" @click-upload="(event)=>clickUpload(event,'leftImg')">
|
||||
<template v-if="form.leftImg">
|
||||
<img class="photo_item" mode="widthFix" :src="form.leftImg.replace(/http:\/\//g, 'https://')" />
|
||||
</template>
|
||||
@ -40,7 +42,7 @@
|
||||
<img class="camera" v-if="showFun()" src="@/assets/authentication/camera.png" />
|
||||
</template>
|
||||
</van-uploader>
|
||||
<van-uploader v-if="rightUrl" :after-read="(file) => afterRead(file,'rightImg')" class="customUpload" :disabled="!showFun()">
|
||||
<van-uploader v-if="rightUrl" :after-read="(file) => afterRead(file,'rightImg')" class="customUpload" @click-upload="(event)=>clickUpload(event,'rightImg')">
|
||||
<template v-if="form.rightImg">
|
||||
<img class="photo_item" mode="widthFix" :src="form.rightImg.replace(/http:\/\//g, 'https://')" />
|
||||
</template>
|
||||
@ -56,6 +58,8 @@
|
||||
|
||||
<script>
|
||||
import {uploadImage} from "@/api/mine";
|
||||
import { ImagePreview } from 'vant';
|
||||
|
||||
/*let baseUrl=''
|
||||
if (window.location.href.includes('www.sinoassist.com')) {
|
||||
baseUrl = 'https://www.sinoassist.com'
|
||||
@ -95,37 +99,61 @@ export default {
|
||||
isInsure:'',
|
||||
},
|
||||
options:[{value:0,name:'否'},{value:1,name:'是'}],
|
||||
localUrlList: [...this.urlList] // 使用本地副本操作
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
// 监听父组件传入的urlList变化
|
||||
urlList(newVal) {
|
||||
this.localUrlList = [...newVal];
|
||||
},
|
||||
// 监听inSure变化
|
||||
inSure(newVal) {
|
||||
this.form.isInsure = newVal;
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
setTimeout(()=>{
|
||||
this.form.isInsure=this.inSure
|
||||
// this.form.isInsure=1
|
||||
},1500)
|
||||
},
|
||||
methods: {
|
||||
async afterRead(file,type,index){ // 支持多文件上传
|
||||
clickUpload(event,type){
|
||||
if (!this.showFun()) {
|
||||
let url=[]
|
||||
if (type=='leftImg'){
|
||||
url=[this.leftUrl?.replace(/http:\/\//g, 'https://')]
|
||||
}else if(type=='rightImg'){
|
||||
url= [this.rightUrl?.replace(/http:\/\//g, 'https://')]
|
||||
}else{
|
||||
url=this.urlList?.map(item => item?.replace(/http:\/\//g, 'https://'))
|
||||
}
|
||||
ImagePreview({
|
||||
images: url,
|
||||
closeable: true,
|
||||
showIndex:false
|
||||
});
|
||||
console.log(url)
|
||||
event.stopPropagation(); // 阻止事件冒泡
|
||||
event.preventDefault(); // 阻止默认上传行为(如果支持)
|
||||
return false; // 阻止后续逻辑
|
||||
}
|
||||
// 默认行为(允许上传)
|
||||
},
|
||||
async afterRead(file,type){ // 支持多文件上传
|
||||
const formData = new FormData();
|
||||
formData.append("file" , file.file);
|
||||
let res = await uploadImage(formData)
|
||||
if (type=='urlList' && (index==0 || index)){
|
||||
this.$set( this.form.urlList,index,res.data)
|
||||
}else if(type=='urlList'){
|
||||
this.form[type].push(...this.urlList,res.data)
|
||||
if (type=='urlList'){
|
||||
console.log("this.urlList",this.urlList?.length)
|
||||
if(this.urlList?.length==3){
|
||||
const updatedList = [...this.urlList];
|
||||
updatedList[2] = res?.data?.replace(/http:\/\//g, 'https://');
|
||||
this.form.urlList = updatedList;
|
||||
}else{
|
||||
this.form.urlList=[res?.data?.replace(/http:\/\//g, 'https://'),...this.urlList]
|
||||
}
|
||||
const uniqueUrls = this.form.urlList?.reduce((acc, url) => {
|
||||
if (!acc.includes(url)) {
|
||||
acc.push(url);
|
||||
}
|
||||
return acc;
|
||||
}, []);
|
||||
this.$emit(type, uniqueUrls)
|
||||
}else{
|
||||
this.form[type] = res.data
|
||||
}
|
||||
this.$emit(type, this.form[type])
|
||||
}
|
||||
},
|
||||
radioChange(val){
|
||||
this.$emit('insureHandle',val)
|
||||
@ -158,10 +186,23 @@ export default {
|
||||
width: 100% !important;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
/* ::v-deep .van-uploader__preview{
|
||||
width: 100% !important;
|
||||
}*/
|
||||
}
|
||||
.uploaded-item,.tipWrap{
|
||||
width: calc(50% - 3px);
|
||||
}
|
||||
::v-deep .van-uploader__preview{
|
||||
width: calc(50% - 3px);
|
||||
margin: 0 0 8px 0;
|
||||
.van-uploader__preview-image{
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
::v-deep .van-uploader__preview:nth-child(odd){
|
||||
margin-right: 5px !important;
|
||||
}
|
||||
}
|
||||
.photo_wrap {
|
||||
padding: 20px 12px 22px 17px;
|
||||
@ -253,3 +294,8 @@ export default {
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.van-image-preview{
|
||||
z-index: 9999999999 !important;
|
||||
}
|
||||
</style>
|
||||
@ -8,7 +8,7 @@
|
||||
:border="false"
|
||||
:fixed="true"
|
||||
:safe-area-inset-top="true"
|
||||
@click-left="h5GoBack"
|
||||
@click-left="goListPage"
|
||||
/>
|
||||
</div>
|
||||
<tip-bar :title="'应国家政策要求:从事货运行业的司机用户,身份证照片、驾驶证信息、行驶证信息、人车合影及承运资质信息必须进行实名认证。'"></tip-bar>
|
||||
@ -37,7 +37,7 @@
|
||||
<input type="text" disabled placeholder="请输入持卡人性别" v-model="form.sex">
|
||||
<input type="text" placeholder="请输入持卡人身份证号" v-model="form.identityCardNumber">
|
||||
</div>
|
||||
</div>=
|
||||
</div>
|
||||
<fixed-button title="实名认证" @myClick="goRealName" v-if="showFun() && !esignFlag"></fixed-button>
|
||||
<fixed-button @myClick="clickHandler" v-if="showFun() && esignFlag"></fixed-button>
|
||||
<!-- <protocol-dialog></protocol-dialog>-->
|
||||
@ -49,7 +49,13 @@
|
||||
import fixedButton from "./component/fixedButton";
|
||||
import photoItem from "./component/photoItem";
|
||||
import tipBar from "./component/tipBar";
|
||||
import { ocrRecognize, driverInfoVerify, driverInfoVerifyDetail, driverRealName } from '@/api/authentication'
|
||||
import {
|
||||
ocrRecognize,
|
||||
driverInfoVerify,
|
||||
driverInfoVerifyDetail,
|
||||
driverRealName,
|
||||
infoVerifyProgress
|
||||
} from '@/api/authentication'
|
||||
import { leftCopy } from '@/utils/common.js'
|
||||
import { myMixins } from '@/utils/myMixins.js'
|
||||
// import {version} from "@/utils/baseUrl"
|
||||
@ -80,23 +86,40 @@
|
||||
headerUrl: require('@/assets/authentication/person_header.png'),
|
||||
idFront: require('@/assets/authentication/person_idcard1.png'),
|
||||
idBack: require('@/assets/authentication/person_idcard2.png'),
|
||||
user:'',
|
||||
cardId:'',
|
||||
show: undefined,
|
||||
type: localStorage.getItem('type'),
|
||||
type: 'full',
|
||||
esignFlag: false,
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
// if(options?.show) {
|
||||
// 禁止双击放大
|
||||
let lastTouchEnd = 0;
|
||||
document.addEventListener('touchend', (event) => {
|
||||
const now = Date.now();
|
||||
if (now - lastTouchEnd <= 300) {
|
||||
event.preventDefault(); // 阻止双击放大
|
||||
}
|
||||
lastTouchEnd = now;
|
||||
}, { passive: false });
|
||||
|
||||
this.show = true
|
||||
if( this.show ) {
|
||||
await this.getDetail()
|
||||
}
|
||||
// }
|
||||
},
|
||||
async onShow() {
|
||||
this.esignFlag = localStorage.getItem('esignFlag');
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
console.log('window.location',window.location)
|
||||
// console.log("urlParams",urlParams)
|
||||
console.log("decodeURIComponent( window.location.href)",decodeURIComponent( window.location.href))
|
||||
this.esignFlag = urlParams.get('esignFlag') || localStorage.getItem("esignFlag")
|
||||
if(window.location.search){
|
||||
console.log('有参数')
|
||||
this.esignFlag = localStorage.getItem("esignFlag") || urlParams.get('esignFlag')
|
||||
}else {
|
||||
console.log('无参数,说明认证成功')
|
||||
this.esignFlag =true
|
||||
}
|
||||
localStorage.setItem("esignFlag",this.esignFlag )
|
||||
console.log("this.esignFlag ",this.esignFlag )
|
||||
},
|
||||
methods: {
|
||||
async getDetail() {
|
||||
@ -104,6 +127,12 @@
|
||||
verifyType: 1
|
||||
})
|
||||
leftCopy(this.form, {...res?.data?.personalInfoData})
|
||||
let personAuditInfo=localStorage.getItem("personAuditInfo") ? JSON.parse(localStorage.getItem("personAuditInfo")) : ''
|
||||
if(!personAuditInfo){
|
||||
return
|
||||
}
|
||||
console.log('personAuditInfo.form',personAuditInfo.form)
|
||||
this.form={...personAuditInfo.form}
|
||||
},
|
||||
async headerHandler(data) {
|
||||
this.form.icon = data
|
||||
@ -130,7 +159,6 @@
|
||||
imageUrl: url
|
||||
});
|
||||
let idInfo = res?.data?.data?.back?.data
|
||||
// let validPeriod = '2014.07.09-长期'
|
||||
let validPeriod = idInfo?.validPeriod; // 有效期
|
||||
this.form.idCardAuthority = idInfo?.issueAuthority
|
||||
let dateArr = validPeriod.split('-');
|
||||
@ -167,30 +195,20 @@
|
||||
this.$toast('身份证正面照片未上传')
|
||||
return
|
||||
}
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
let token = urlParams.get('token');
|
||||
if(this.form.name && this.form.identityCardNumber) {
|
||||
let res = await driverRealName( {
|
||||
phone: this.form.phone,
|
||||
name: this.form.name,
|
||||
idNo: this.form.identityCardNumber,
|
||||
token:token,
|
||||
jump:1
|
||||
})
|
||||
let info = res?.data
|
||||
console.log('info', info)
|
||||
localStorage.setItem("personAuditInfo",JSON.stringify({form:this.form}))
|
||||
window.location.href=info?.shortLink
|
||||
// window.open(info?.shortLink)
|
||||
/* let env = version=='release' ? 'prod' : 'sml'
|
||||
wx.navigateToMiniProgram({
|
||||
appId: 'wx1cf2708c2de46337', // 上链公证签小程序APPID
|
||||
path: '/pages/index/index', // 上链公证签页面地址
|
||||
extraData: {
|
||||
requestObj: { // 必填,入参
|
||||
flowId: info?.flowId, // 必填,认证流程Id
|
||||
type: 'REALNAME',// 必填,业务类型:实名 REALNAME
|
||||
env: env // 非必填,对接环境:线上 prod(默认), 模拟 sml(用于对接调试阶段)
|
||||
},
|
||||
callbackObj: { // 非必填,回传数据:签署完成后会将此数据完整回传
|
||||
}
|
||||
},
|
||||
})*/
|
||||
} else {
|
||||
this.$toast('身份证信息识别错误')
|
||||
}
|
||||
@ -218,13 +236,26 @@
|
||||
await this.getRegisterInfo({
|
||||
verifyType: 1
|
||||
})
|
||||
localStorage.setItem("personAuditInfo",'')
|
||||
setTimeout(() => {
|
||||
|
||||
this.goListPage()
|
||||
}, 100)
|
||||
} else {
|
||||
this.$toast('身份证信息识别错误')
|
||||
}
|
||||
},
|
||||
goListPage(){
|
||||
this.goPage('auditList',{
|
||||
token:localStorage.getItem('token')
|
||||
})
|
||||
},
|
||||
async getRegisterInfo(data) {
|
||||
let res = await infoVerifyProgress( data)
|
||||
localStorage.setItem('infoVerify', res?.data?.infoVerify?.code)
|
||||
localStorage.setItem('failReason', res?.data?.verifyRemark)
|
||||
localStorage.setItem('authIsSuccess', res?.data?.authIsSuccess)
|
||||
localStorage.setItem('name', res?.data?.name)
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@ -244,7 +275,9 @@
|
||||
}
|
||||
.content {
|
||||
padding-bottom: 86px;
|
||||
height: 100%;
|
||||
height: 90%;
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch; /* 启用iOS惯性滚动 */
|
||||
scroll-behavior: smooth; /* 平滑滚动(部分浏览器支持) */
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user