From b7d451c91ec40bee70f23b1e2cf6a8797643faef Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期六, 25 四月 2026 15:18:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
app/pages/driver-certification/driver-certification.vue | 575 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 531 insertions(+), 44 deletions(-)
diff --git a/app/pages/driver-certification/driver-certification.vue b/app/pages/driver-certification/driver-certification.vue
index 96f76b6..5e361aa 100644
--- a/app/pages/driver-certification/driver-certification.vue
+++ b/app/pages/driver-certification/driver-certification.vue
@@ -27,7 +27,7 @@
<view class="driver-cert-page__scroll">
<view v-if="currentStep === 1" class="driver-cert-card">
<text class="driver-cert-card__title">鍩烘湰淇℃伅</text>
- <text class="driver-cert-card__mobile">娉ㄥ唽鎵嬫満鍙凤細18155114565</text>
+ <text class="driver-cert-card__mobile">娉ㄥ唽鎵嬫満鍙凤細{{ userInfo.telephone || '' }}</text>
<view class="driver-cert-card__field">
<text class="driver-cert-card__label">鍙告満濮撳悕</text>
@@ -39,7 +39,7 @@
<view class="driver-cert-card__field">
<text class="driver-cert-card__label">韬唤璇佸彿</text>
<text class="driver-cert-card__required">*</text>
- <input v-model="form.idCard" class="driver-cert-card__input" placeholder="璇疯緭鍏ュ徃鏈鸿韩浠借瘉鍙风爜"
+ <input type="idcard" maxlength="18" v-model="form.idcard" class="driver-cert-card__input" placeholder="璇疯緭鍏ュ徃鏈鸿韩浠借瘉鍙风爜"
placeholder-style="color: #b9bfc8;" />
</view>
@@ -48,8 +48,8 @@
<text class="driver-cert-card__label">濠氬Щ鐘跺喌</text>
<text class="driver-cert-card__required">*</text>
</view>
- <view class="driver-cert-card__selector">
- <text class="driver-cert-card__selector-text">璇烽�夋嫨</text>
+ <view class="driver-cert-card__selector" @click="showMaritalPicker = true">
+ <text class="driver-cert-card__selector-text" :style="{ color: form.maritalStatus !== '' ? '#333333' : '#b9bfc8' }">{{ getMaritalStatusText(form.maritalStatus) }}</text>
<text class="driver-cert-card__arrow">鈥�</text>
</view>
</view>
@@ -59,8 +59,8 @@
<text class="driver-cert-card__label">灞呬綇鍩庡競</text>
<text class="driver-cert-card__required">*</text>
</view>
- <view class="driver-cert-card__selector">
- <text class="driver-cert-card__selector-text">璇烽�夋嫨鐪佸競鍖�</text>
+ <view class="driver-cert-card__selector" @click="showAreaPicker = true">
+ <text class="driver-cert-card__selector-text" :style="{ color: form.areaName ? '#333333' : '#b9bfc8' }">{{ form.areaName || '璇烽�夋嫨鐪佸競鍖�' }}</text>
<text class="driver-cert-card__arrow">鈥�</text>
</view>
</view>
@@ -68,14 +68,21 @@
<view class="driver-cert-card__field">
<text class="driver-cert-card__label">璇︾粏鍦板潃</text>
<text class="driver-cert-card__required">*</text>
- <input v-model="form.address" class="driver-cert-card__input" placeholder="璇疯緭鍏ヨ缁嗗眳浣忓湴鍧�"
+ <input v-model="form.livePlace" class="driver-cert-card__input" placeholder="璇疯緭鍏ヨ缁嗗眳浣忓湴鍧�"
placeholder-style="color: #b9bfc8;" />
</view>
<view class="driver-cert-card__field">
<text class="driver-cert-card__label">鏀粯瀹濊处鍙�</text>
<text class="driver-cert-card__required">*</text>
- <input v-model="form.alipay" class="driver-cert-card__input" placeholder="璇疯緭鍏ユ敹娆炬敮浠樺疂璐﹀彿"
+ <input v-model="form.aliAccount" class="driver-cert-card__input" placeholder="璇疯緭鍏ユ敹娆炬敮浠樺疂璐﹀彿"
+ placeholder-style="color: #b9bfc8;" />
+ </view>
+
+ <view class="driver-cert-card__field">
+ <text class="driver-cert-card__label">鏀粯瀹濆鍚�</text>
+ <text class="driver-cert-card__required">*</text>
+ <input v-model="form.aliName" class="driver-cert-card__input" placeholder="璇疯緭鍏ユ敮浠樺疂濮撳悕"
placeholder-style="color: #b9bfc8;" />
</view>
@@ -86,15 +93,25 @@
</view>
<view class="driver-cert-card__upload-list">
- <view class="driver-cert-card__upload-item">
- <image class="driver-cert-card__upload-icon" src="/static/image/ic_camera@2x.png"
- mode="aspectFit"></image>
- <text class="driver-cert-card__upload-text">涓婁紶浜哄儚闈�</text>
+ <view class="driver-cert-card__upload-item" @click="handleUpload('idcardImg', 1)" style="height: 196rpx;">
+ <template v-if="previewImages.idcardImg">
+ <image class="driver-cert-card__upload-img" :src="previewImages.idcardImg" mode="widthFix"></image>
+ <view class="driver-cert-card__upload-remove" @click.stop="removeImage('idcardImg')">鍒犻櫎</view>
+ </template>
+ <template v-else>
+ <image class="driver-cert-card__upload-icon" src="/static/image/ic_camera@2x.png" mode="aspectFit"></image>
+ <text class="driver-cert-card__upload-text">涓婁紶浜哄儚闈�</text>
+ </template>
</view>
- <view class="driver-cert-card__upload-item">
- <image class="driver-cert-card__upload-icon" src="/static/image/ic_camera@2x.png"
- mode="aspectFit"></image>
- <text class="driver-cert-card__upload-text">涓婁紶鍥藉窘闈�</text>
+ <view class="driver-cert-card__upload-item" @click="handleUpload('idcardImgBack', 1)" style="height: 196rpx;">
+ <template v-if="previewImages.idcardImgBack">
+ <image class="driver-cert-card__upload-img" :src="previewImages.idcardImgBack" mode="widthFix"></image>
+ <view class="driver-cert-card__upload-remove" @click.stop="removeImage('idcardImgBack')">鍒犻櫎</view>
+ </template>
+ <template v-else>
+ <image class="driver-cert-card__upload-icon" src="/static/image/ic_camera@2x.png" mode="aspectFit"></image>
+ <text class="driver-cert-card__upload-text">涓婁紶鍥藉窘闈�</text>
+ </template>
</view>
</view>
</view>
@@ -115,8 +132,8 @@
<text class="driver-cert-card__label">杞﹁締绫诲瀷</text>
<text class="driver-cert-card__required">*</text>
</view>
- <view class="driver-cert-card__selector">
- <text class="driver-cert-card__selector-text">璇烽�夋嫨</text>
+ <view class="driver-cert-card__selector" @click="showCarTypePicker = true">
+ <text class="driver-cert-card__selector-text" :style="{ color: vehicleForm.carType ? '#333333' : '#b9bfc8' }">{{ getCarTypeText(vehicleForm.carType) }}</text>
<text class="driver-cert-card__arrow">鈥�</text>
</view>
</view>
@@ -128,13 +145,24 @@
placeholder-style="color: #b9bfc8;" />
</view>
- <view class="driver-cert-card__field driver-cert-card__field--select">
+ <view class="driver-cert-card__field driver-cert-card__field--select" style="border: none !important;">
<view class="driver-cert-card__field-head">
- <text class="driver-cert-card__label">椹鹃┒璇佹湁鏁堟湡</text>
+ <text class="driver-cert-card__label">椹鹃┒璇佹湁鏁堟湡璧�</text>
<text class="driver-cert-card__required">*</text>
</view>
- <view class="driver-cert-card__selector">
- <text class="driver-cert-card__selector-text">璇烽�夋嫨</text>
+ <view class="driver-cert-card__selector" @click="openDatePicker('start')">
+ <text class="driver-cert-card__selector-text" :style="{ color: form.cardStartDate ? '#333333' : '#b9bfc8' }">{{ form.cardStartDate || '璇烽�夋嫨' }}</text>
+ <text class="driver-cert-card__arrow">鈥�</text>
+ </view>
+ </view>
+
+ <view class="driver-cert-card__field driver-cert-card__field--select" style="border: none !important;">
+ <view class="driver-cert-card__field-head">
+ <text class="driver-cert-card__label">椹鹃┒璇佹湁鏁堟湡姝�</text>
+ <text class="driver-cert-card__required">*</text>
+ </view>
+ <view class="driver-cert-card__selector" @click="openDatePicker('end')">
+ <text class="driver-cert-card__selector-text" :style="{ color: form.cardEndDate ? '#333333' : '#b9bfc8' }">{{ form.cardEndDate || '璇烽�夋嫨' }}</text>
<text class="driver-cert-card__arrow">鈥�</text>
</view>
</view>
@@ -146,9 +174,12 @@
<text class="driver-cert-card__upload-tip">鏈�澶氫笂浼�3寮犵収鐗�</text>
</view>
<view class="driver-cert-card__upload-list driver-cert-card__upload-list--single">
- <view class="driver-cert-card__upload-item driver-cert-card__upload-item--single">
- <image class="driver-cert-card__upload-image" src="/static/image/btn_upload2@2x.png"
- mode="aspectFit"></image>
+ <view v-for="(img, index) in previewImages.carImgUrls" :key="index" class="driver-cert-card__upload-item driver-cert-card__upload-item--single" @click="previewImg('carImgUrls', index)">
+ <image class="driver-cert-card__upload-image" :src="img" mode="aspectFill"></image>
+ <view class="driver-cert-card__upload-remove" @click.stop="removeImg('carImgUrls', index)">鍒犻櫎</view>
+ </view>
+ <view v-if="previewImages.carImgUrls.length < 3" class="driver-cert-card__upload-item driver-cert-card__upload-item--single" @click="handleUpload('carImgUrls', 3)">
+ <image class="driver-cert-card__upload-image" src="/static/image/btn_upload2@2x.png" mode="aspectFit"></image>
</view>
</view>
</view>
@@ -160,9 +191,12 @@
<text class="driver-cert-card__upload-tip">鏈�澶氫笂浼�3寮犵収鐗�</text>
</view>
<view class="driver-cert-card__upload-list driver-cert-card__upload-list--single">
- <view class="driver-cert-card__upload-item driver-cert-card__upload-item--single">
- <image class="driver-cert-card__upload-image" src="/static/image/btn_upload2@2x.png"
- mode="aspectFit"></image>
+ <view v-for="(img, index) in previewImages.licenseImgUrls" :key="index" class="driver-cert-card__upload-item driver-cert-card__upload-item--single" @click="previewImg('licenseImgUrls', index)">
+ <image class="driver-cert-card__upload-image" :src="img" mode="aspectFill"></image>
+ <view class="driver-cert-card__upload-remove" @click.stop="removeImg('licenseImgUrls', index)">鍒犻櫎</view>
+ </view>
+ <view v-if="previewImages.licenseImgUrls.length < 3" class="driver-cert-card__upload-item driver-cert-card__upload-item--single" @click="handleUpload('licenseImgUrls', 3)">
+ <image class="driver-cert-card__upload-image" src="/static/image/btn_upload2@2x.png" mode="aspectFit"></image>
</view>
</view>
</view>
@@ -173,9 +207,12 @@
<text class="driver-cert-card__upload-tip">鏈�澶氫笂浼�3寮犵収鐗�</text>
</view>
<view class="driver-cert-card__upload-list driver-cert-card__upload-list--single">
- <view class="driver-cert-card__upload-item driver-cert-card__upload-item--single">
- <image class="driver-cert-card__upload-image" src="/static/image/btn_upload2@2x.png"
- mode="aspectFit"></image>
+ <view v-for="(img, index) in previewImages.otherImgUrls" :key="index" class="driver-cert-card__upload-item driver-cert-card__upload-item--single" @click="previewImg('otherImgUrls', index)">
+ <image class="driver-cert-card__upload-image" :src="img" mode="aspectFill"></image>
+ <view class="driver-cert-card__upload-remove" @click.stop="removeImg('otherImgUrls', index)">鍒犻櫎</view>
+ </view>
+ <view v-if="previewImages.otherImgUrls.length < 3" class="driver-cert-card__upload-item driver-cert-card__upload-item--single" @click="handleUpload('otherImgUrls', 3)">
+ <image class="driver-cert-card__upload-image" src="/static/image/btn_upload2@2x.png" mode="aspectFit"></image>
</view>
</view>
</view>
@@ -184,10 +221,10 @@
</view>
<view class="driver-cert-page__bottom-bar">
- <label v-if="currentStep === 2" class="driver-cert-page__agreement">
- <radio class="driver-cert-page__agreement-radio" :checked="true" color="#2D7CFF" />
+ <view v-if="currentStep === 2" class="driver-cert-page__agreement" @click="isAgreed = !isAgreed">
+ <image class="driver-cert-page__agreement-icon" :src="isAgreed ? '/static/image/ic_accept_sel@2x.png' : '/static/image/ic_accept@2x.png'" mode="widthFix"></image>
<text class="driver-cert-page__agreement-text">鎴戝凡闃呰骞跺悓鎰忋�婇闄╁0鏄庛�嬨�併�婅鏉庡瘎瀛樺憳椤荤煡銆嬪強銆婃湇鍔″崗璁��</text>
- </label>
+ </view>
<view class="driver-cert-page__actions" :class="{ 'driver-cert-page__actions--dual': currentStep === 2 }">
<button v-if="currentStep === 2" class="driver-cert-page__submit driver-cert-page__submit--ghost"
@@ -196,32 +233,458 @@
@click="handlePrimaryAction">{{ currentStep === 1 ? '涓嬩竴姝�' : '鎻愪氦璁よ瘉鐢宠' }}</button>
</view>
</view>
+
+ <u-picker
+ :show="showAreaPicker"
+ v-if="areaList && areaList.length > 0"
+ ref="uPicker"
+ confirmColor="#10B2FA"
+ keyName="text"
+ :columns="areaColumns"
+ @confirm="confirmArea"
+ @change="changeAreaHandler"
+ @cancel="showAreaPicker = false" />
+
+ <u-picker
+ :show="showMaritalPicker"
+ confirmColor="#10B2FA"
+ keyName="text"
+ :columns="[maritalOptions]"
+ @confirm="confirmMarital"
+ @cancel="showMaritalPicker = false" />
+
+ <u-picker
+ :show="showCarTypePicker"
+ v-if="carTypeList && carTypeList.length > 0"
+ confirmColor="#10B2FA"
+ keyName="text"
+ :columns="carTypeColumns"
+ @confirm="confirmCarType"
+ @cancel="showCarTypePicker = false" />
+
+ <u-datetime-picker
+ :show="showDatePicker"
+ v-model="datePickerValue"
+ mode="date"
+ :minDate="datePickerMode === 'end' ? this.form.cardStartDate : 0"
+ @confirm="confirmDate"
+ @cancel="showDatePicker = false" />
</view>
</template>
<script>
+ import { mapState } from 'vuex'
export default {
data() {
return {
+ showAreaPicker: false,
+ showMaritalPicker: false,
+ maritalOptions: [
+ { value: '0', text: '鏈' },
+ { value: '1', text: '宸插' },
+ { value: '2', text: '绂诲紓' },
+ { value: '3', text: '涓у伓' }
+ ],
+ areaList: [],
+ areaColumns: [],
currentStep: 1,
form: {
+ areaId: '',
+ areaName: '',
name: '',
- idCard: '',
- address: '',
- alipay: ''
+ idcard: '',
+ maritalStatus: '',
+ livePlace: '',
+ aliAccount: '',
+ aliName: '',
+ idcardImg: '',
+ idcardImgBack: '',
+ carCode: '',
+ carType: '',
+ carColor: '',
+ cardStartDate: '',
+ cardEndDate: '',
+ carImgUrls: [],
+ licenseImgUrls: [],
+ otherImgUrls: []
},
vehicleForm: {
plateNumber: '',
- color: ''
- }
+ color: '',
+ carType: ''
+ },
+ showCarTypePicker: false,
+ carTypeList: [],
+ carTypeColumns: [],
+ showDatePicker: false,
+ datePickerMode: 'start',
+ datePickerValue: Number(new Date()),
+ uploadPaths: {
+ idcardImg: 'driver/idcard/front',
+ idcardImgBack: 'driver/idcard/back',
+ carImgUrls: 'driver/car',
+ licenseImgUrls: 'driver/license',
+ otherImgUrls: 'driver/other'
+ },
+ previewImages: {
+ idcardImg: '',
+ idcardImgBack: '',
+ carImgUrls: [],
+ licenseImgUrls: [],
+ otherImgUrls: []
+ },
+ isAgreed: false,
+ imgPrefix: ''
}
},
+ computed: {
+ ...mapState(['userInfo'])
+ },
+ onLoad() {
+ this.getAreaList()
+ this.getCategoryList()
+ this.getVerifyDetail()
+ },
methods: {
+ getMaritalStatusText(value) {
+ if (!value && value !== 0) return '璇烽�夋嫨'
+ const item = this.maritalOptions.find(option => option.value === String(value))
+ return item ? item.text : '璇烽�夋嫨'
+ },
+ getVerifyDetail() {
+ this.$u.api.verifyDetail().then(res => {
+ if (res.code === 200 && res.data) {
+ if (res.data.auditStatus !== 99) {
+ this.imgPrefix = res.data.imgPrefix
+ this.form.areaId = res.data.areaId || ''
+ this.form.areaName = [res.data.provinceName, res.data.cityName, res.data.districtName].filter(Boolean).join('/')
+ this.form.name = res.data.name || ''
+ this.form.idcard = res.data.idcard || ''
+ this.form.maritalStatus = res.data.maritalStatus !== undefined ? String(res.data.maritalStatus) : ''
+ this.form.livePlace = res.data.livePlace || ''
+ this.form.aliAccount = res.data.aliAccount || ''
+ this.form.aliName = res.data.aliName || ''
+ this.form.idcardImg = res.data.idcardImg || ''
+ this.form.idcardImgBack = res.data.idcardImgBack || ''
+ this.form.cardStartDate = res.data.cardStartDate ? res.data.cardStartDate.split(' ')[0] : ''
+ this.form.cardEndDate = res.data.cardEndDate ? res.data.cardEndDate.split(' ')[0] : ''
+ this.vehicleForm.plateNumber = res.data.carCode || ''
+ this.vehicleForm.carType = res.data.carType || ''
+ this.vehicleForm.color = res.data.carColor || ''
+ this.previewImages.idcardImg = res.data.idcardImg ? res.data.imgPrefix + res.data.idcardImg : ''
+ this.previewImages.idcardImgBack = res.data.idcardImgBack ? res.data.imgPrefix + res.data.idcardImgBack : ''
+ this.form.carImgUrls = (res.data.carImgList || []).map(item => item.fileurl)
+ this.form.licenseImgUrls = (res.data.licenseImgList || []).map(item => item.fileurl)
+ this.form.otherImgUrls = (res.data.otherImgList || []).map(item => item.fileurl)
+ this.previewImages.carImgUrls = (res.data.carImgList || []).map(item => res.data.imgPrefix + item.fileurl)
+ this.previewImages.licenseImgUrls = (res.data.licenseImgList || []).map(item => res.data.imgPrefix + item.fileurl)
+ this.previewImages.otherImgUrls = (res.data.otherImgList || []).map(item => res.data.imgPrefix + item.fileurl)
+ }
+ }
+ })
+ },
+ confirmMarital(e) {
+ const { value } = e.value[0]
+ this.form.maritalStatus = value
+ this.showMaritalPicker = false
+ },
+ handleUpload(field, maxCount = 1) {
+ const currentList = this.previewImages[field]
+ const currentCount = Array.isArray(currentList) ? currentList.length : (currentList ? 1 : 0)
+ if (currentCount >= maxCount) {
+ uni.showToast({ title: `鏈�澶氫笂浼�${maxCount}寮燻, icon: 'none' })
+ return
+ }
+ uni.chooseImage({
+ count: maxCount,
+ sizeType: ['compressed'],
+ sourceType: ['album', 'camera'],
+ success: (res) => {
+ const allTempPaths = res.tempFilePaths
+ const remaining = maxCount - currentCount
+ const tempFilePaths = allTempPaths.slice(0, remaining)
+ this.uploadFiles(field, tempFilePaths, maxCount)
+ }
+ })
+ },
+ uploadFiles(field, tempFilePaths, maxCount) {
+ const uploadPath = this.uploadPaths[field]
+ let uploadedCount = 0
+ const isSingle = maxCount === 1
+ uni.showLoading({ title: '涓婁紶涓�...' })
+ tempFilePaths.forEach((tempPath, index) => {
+ uni.uploadFile({
+ url: this.$baseUrl + '/web/public/upload',
+ filePath: tempPath,
+ name: 'file',
+ formData: {
+ folder: 'driver'
+ },
+ success: (uploadRes) => {
+ const data = JSON.parse(uploadRes.data)
+ if (data.code === 200) {
+ const fullUrl = data.data
+ console.log(fullUrl)
+ if (isSingle) {
+ this.form[field] = fullUrl.imgaddr
+ this.previewImages[field] = fullUrl.url
+ } else {
+ this.form[field].push(fullUrl.imgaddr)
+ this.previewImages[field].push(fullUrl.url)
+ }
+ }
+ uploadedCount++
+ if (uploadedCount === tempFilePaths.length) {
+ uni.hideLoading()
+ }
+ },
+ fail: () => {
+ uploadedCount++
+ uni.showToast({ title: '涓婁紶澶辫触', icon: 'none' })
+ if (uploadedCount === tempFilePaths.length) {
+ uni.hideLoading()
+ }
+ }
+ })
+ })
+ },
+ getFullPath(halfPath) {
+ if (!halfPath) return ''
+ if (halfPath.startsWith('http')) return halfPath
+ const baseUrl = this.$baseUrl || ''
+ return baseUrl + halfPath
+ },
+ previewImg(field, index) {
+ const urls = Array.isArray(this.previewImages[field]) ? this.previewImages[field] : [this.previewImages[field]]
+ uni.previewImage({
+ current: index,
+ urls: urls
+ })
+ },
+ removeImg(field, index) {
+ const isSingle = !Array.isArray(this.form[field])
+ if (isSingle) {
+ this.form[field] = ''
+ this.previewImages[field] = ''
+ } else {
+ this.form[field].splice(index, 1)
+ this.previewImages[field].splice(index, 1)
+ }
+ },
+ removeImage(field) {
+ this.form[field] = ''
+ this.previewImages[field] = ''
+ },
+ getCategoryList() {
+ this.$u.api.getCategoryList({ type: 1 }).then(res => {
+ if (res.code === 200) {
+ this.carTypeList = res.data
+ this.carTypeColumns = [this.carTypeList.map(item => {
+ return {
+ id: item.id,
+ text: item.name
+ }
+ })]
+ }
+ })
+ },
+ getCarTypeText(value) {
+ if (!value) return '璇烽�夋嫨'
+ const item = this.carTypeList.find(option => option.id === value)
+ return item ? item.name : '璇烽�夋嫨'
+ },
+ confirmCarType(e) {
+ const { id, text } = e.value[0]
+ this.vehicleForm.carType = id
+ this.showCarTypePicker = false
+ },
+ openDatePicker(mode) {
+ this.datePickerMode = mode
+ if (mode === 'end' && this.form.cardStartDate) {
+ this.datePickerValue = new Date(this.form.cardStartDate).getTime()
+ } else {
+ this.datePickerValue = Number(new Date())
+ }
+ this.showDatePicker = true
+ },
+ confirmDate(e) {
+ const date = this.formatDate(e.value)
+ if (this.datePickerMode === 'start') {
+ this.form.cardStartDate = date
+ } else {
+ this.form.cardEndDate = date
+ }
+ this.showDatePicker = false
+ },
+ formatDate(timestamp) {
+ const date = new Date(timestamp)
+ const year = date.getFullYear()
+ const month = String(date.getMonth() + 1).padStart(2, '0')
+ const day = String(date.getDate()).padStart(2, '0')
+ return `${year}-${month}-${day}`
+ },
+ getAreaList() {
+ this.$u.api.treeList({
+ type: 0,
+ flag: 1
+ }).then(res => {
+ if (res.code === 200) {
+ this.areaList = res.data
+ this.areaColumns[0] = this.areaList.map(item => {
+ return {
+ id: item.id,
+ text: item.name
+ }
+ })
+ this.areaColumns[1] = this.areaList[0].childList.map(item => {
+ return {
+ id: item.id,
+ text: item.name
+ }
+ })
+ this.areaColumns[2] = this.areaList[0].childList[0].childList.map(item => {
+ return {
+ id: item.id,
+ text: item.name
+ }
+ })
+ }
+ })
+ },
+ changeAreaHandler(e) {
+ const { columnIndex, indexs, picker = this.$refs.uPicker } = e
+ if (columnIndex === 0) {
+ let city = this.areaList[indexs[0]].childList.map(item => {
+ return {
+ id: item.id,
+ text: item.name
+ }
+ })
+ let qu = this.areaList[indexs[0]].childList[0].childList.map(item => {
+ return {
+ id: item.id,
+ text: item.name
+ }
+ })
+ picker.setColumnValues(1, city)
+ picker.setColumnValues(2, qu)
+ } else if (columnIndex === 1) {
+ let qu = this.areaList[indexs[0]].childList[indexs[1]].childList.map(item => {
+ return {
+ id: item.id,
+ text: item.name
+ }
+ })
+ picker.setColumnValues(2, qu)
+ }
+ },
+ confirmArea(e) {
+ this.form.areaId = e.value[e.value.length - 1].id
+ this.form.areaName = e.value[0].text + '/' + e.value[1].text + '/' + e.value[2].text
+ this.showAreaPicker = false
+ },
handlePrimaryAction() {
if (this.currentStep === 1) {
+ if (!this.validateStep1()) return
this.scrollToTop()
this.currentStep = 2
+ } else {
+ if (!this.isAgreed) {
+ uni.showToast({ title: '璇峰厛鍚屾剰鍗忚', icon: 'none' })
+ return
+ }
+ this.submitVerify()
}
+ },
+ validateStep1() {
+ if (!this.form.name) {
+ uni.showToast({ title: '璇疯緭鍏ュ徃鏈哄鍚�', icon: 'none' })
+ return false
+ }
+ if (!this.form.idcard) {
+ uni.showToast({ title: '璇疯緭鍏ヨ韩浠借瘉鍙�', icon: 'none' })
+ return false
+ }
+ if (!this.form.maritalStatus && this.form.maritalStatus !== 0) {
+ uni.showToast({ title: '璇烽�夋嫨濠氬Щ鐘跺喌', icon: 'none' })
+ return false
+ }
+ if (!this.form.areaId) {
+ uni.showToast({ title: '璇烽�夋嫨灞呬綇鍩庡競', icon: 'none' })
+ return false
+ }
+ if (!this.form.livePlace) {
+ uni.showToast({ title: '璇疯緭鍏ヨ缁嗗湴鍧�', icon: 'none' })
+ return false
+ }
+ if (!this.form.aliAccount) {
+ uni.showToast({ title: '璇疯緭鍏ユ敮浠樺疂璐﹀彿', icon: 'none' })
+ return false
+ }
+ if (!this.form.aliName) {
+ uni.showToast({ title: '璇疯緭鍏ユ敮浠樺疂濮撳悕', icon: 'none' })
+ return false
+ }
+ if (!this.form.idcardImg) {
+ uni.showToast({ title: '璇蜂笂浼犺韩浠借瘉浜哄儚闈�', icon: 'none' })
+ return false
+ }
+ if (!this.form.idcardImgBack) {
+ uni.showToast({ title: '璇蜂笂浼犺韩浠借瘉鍥藉窘闈�', icon: 'none' })
+ return false
+ }
+ return true
+ },
+ validateStep2() {
+ if (!this.vehicleForm.plateNumber) {
+ uni.showToast({ title: '璇疯緭鍏ヨ溅鐗屽彿', icon: 'none' })
+ return false
+ }
+ if (!this.vehicleForm.carType) {
+ uni.showToast({ title: '璇烽�夋嫨杞﹁締绫诲瀷', icon: 'none' })
+ return false
+ }
+ if (!this.vehicleForm.color) {
+ uni.showToast({ title: '璇疯緭鍏ヨ溅杈嗛鑹�', icon: 'none' })
+ return false
+ }
+ if (this.form.carImgUrls.length === 0) {
+ uni.showToast({ title: '璇蜂笂浼犺溅杈嗙収鐗�', icon: 'none' })
+ return false
+ }
+ if (this.form.licenseImgUrls.length === 0) {
+ uni.showToast({ title: '璇蜂笂浼犻┚椹惰瘉鐓х墖', icon: 'none' })
+ return false
+ }
+ return true
+ },
+ submitVerify() {
+ if (!this.validateStep2()) return
+ uni.showLoading({ title: '鎻愪氦涓�...' })
+ const submitData = {
+ ...this.form,
+ carType: this.vehicleForm.carType,
+ carColor: this.vehicleForm.color,
+ carCode: this.vehicleForm.plateNumber,
+ carImgUrls: this.form.carImgUrls || [],
+ licenseImgUrls: this.form.licenseImgUrls || [],
+ otherImgUrls: this.form.otherImgUrls || []
+ }
+ console.log(submitData)
+ this.$u.api.submitVerify(submitData).then(res => {
+ uni.hideLoading()
+ if (res.code === 200) {
+ uni.showToast({ title: '鎻愪氦鎴愬姛', icon: 'success' })
+ setTimeout(() => {
+ uni.navigateBack()
+ }, 1500)
+ } else {
+ uni.showToast({ title: res.msg || '鎻愪氦澶辫触', icon: 'none' })
+ }
+ }).catch(err => {
+ uni.hideLoading()
+ uni.showToast({ title: '鎻愪氦澶辫触', icon: 'none' })
+ })
},
goPrevStep() {
this.scrollToTop()
@@ -394,10 +857,11 @@
margin-bottom: 18rpx;
}
- &__agreement-radio {
- transform: scale(0.9);
- transform-origin: left top;
+ &__agreement-icon {
+ width: 40rpx;
+ height: 40rpx;
margin-right: 6rpx;
+ flex-shrink: 0;
}
&__agreement-text {
@@ -489,7 +953,7 @@
}
&__upload-block {
- padding-top: 28rpx;
+ padding: 30rpx 0;
&--stacked {
border-top: 1rpx solid #eef1f5;
@@ -500,7 +964,7 @@
&__upload-list {
display: flex;
gap: 20rpx;
- margin-top: 22rpx;
+ margin-top: 30rpx;
&--single {
gap: 0;
@@ -508,6 +972,7 @@
}
&__upload-item {
+ position: relative;
flex: 1;
height: 144rpx;
border-radius: 16rpx;
@@ -516,6 +981,7 @@
flex-direction: column;
align-items: center;
justify-content: center;
+ overflow: visible;
&--single {
flex: none;
@@ -540,6 +1006,27 @@
color: #8f96a3;
}
+ &__upload-img {
+ width: 100%;
+ border-radius: 8rpx;
+ }
+
+ &__upload-remove {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 40rpx;
+ line-height: 40rpx;
+ text-align: center;
+ background: rgba(0,0,0,0.5);
+ border-radius: 0rpx 0rpx 8rpx 8rpx;
+ font-weight: 400;
+ font-size: 24rpx;
+ color: #FFFFFF;
+ z-index: 99;
+ }
+
&__upload-tip {
margin-left: 10rpx;
font-size: 22rpx;
--
Gitblit v1.9.3