From 610392fca3aca1bd4e3d94bff398ba738a51d625 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 30 四月 2026 15:25:35 +0800
Subject: [PATCH] 支付宝支付dddadd
---
admin/src/components/business/OperaDriverEditWindow.vue | 625 +++++++++++++++++++++++++++-----------------------------
1 files changed, 302 insertions(+), 323 deletions(-)
diff --git a/admin/src/components/business/OperaDriverEditWindow.vue b/admin/src/components/business/OperaDriverEditWindow.vue
index 2986f3a..fc4f9e9 100644
--- a/admin/src/components/business/OperaDriverEditWindow.vue
+++ b/admin/src/components/business/OperaDriverEditWindow.vue
@@ -1,341 +1,270 @@
<template>
<GlobalWindow
- title="缂栬緫闂ㄥ簵"
- :visible.sync="visible"
- width="600px"
- :confirm-working="isWorking.save"
- @confirm="handleConfirm"
+ :title="title"
+ :visible.sync="visible"
+ width="900px"
+ :withFooter="false"
>
- <el-form ref="form" :model="form" :rules="rules">
- <div class="form-section">
- <h4 class="section-title">璐﹀彿淇℃伅</h4>
- <el-form-item label="娉ㄥ唽鎵嬫満鍙�" prop="telephone">
- <el-input v-model="form.telephone" disabled></el-input>
- </el-form-item>
- <div class="password-tip">榛樿瀵嗙爜榛樿涓猴細銆愭墜鏈哄彿鍚庡叚浣�+@123456"锛屽鍚庡叚浣嶄负981923锛岄粯璁ゅ瘑鐮侊細981923@123456</div>
- </div>
-
- <div class="form-section">
- <h4 class="section-title">鍩烘湰淇℃伅</h4>
- <el-form-item label="闂ㄥ簵鍚嶇О" prop="name">
- <el-input v-model="form.name" placeholder="璇疯緭鍏ラ棬搴楀悕绉�"></el-input>
- </el-form-item>
- <el-form-item label="闂ㄥ簵绫诲瀷" prop="companyType">
- <el-radio-group v-model="form.companyType" disabled>
- <el-radio :label="1">浼佷笟</el-radio>
- <el-radio :label="0">涓汉</el-radio>
- </el-radio-group>
- </el-form-item>
- <el-form-item label="鑱旂郴浜�" prop="linkName">
- <el-input v-model="form.linkName" placeholder="璇疯緭鍏ヨ仈绯讳汉"></el-input>
- </el-form-item>
- <el-form-item label="鑱旂郴鐢佃瘽" prop="linkPhone">
- <el-input v-model="form.linkPhone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"></el-input>
- </el-form-item>
- <el-form-item label="韬唤璇佸彿" prop="idcard">
- <el-input v-model="form.idcard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�"></el-input>
- </el-form-item>
- <el-form-item label="鎵�鍦ㄧ渷甯傚尯" prop="areaCode">
- <el-cascader v-model="form.areaCode" :options="areaOptions" placeholder="璇烽�夋嫨鐪佸競鍖�"></el-cascader>
- </el-form-item>
- <el-form-item label="闂ㄥ簵鍦板潃" prop="address">
- <el-input v-model="form.address" placeholder="璇疯緭鍏ラ棬搴楀湴鍧�"></el-input>
- </el-form-item>
- <el-form-item label="缁忕含搴�" prop="longitude">
- <div class="longitude-latitude">
- <el-input v-model="form.longitude" placeholder="缁忓害" style="width: 150px;"></el-input>
- <span class="separator">-</span>
- <el-input v-model="form.latitude" placeholder="绾害" style="width: 150px;"></el-input>
- <el-button type="primary" @click="openMapSelector">閫夋嫨</el-button>
+ <div class="driver-approval">
+ <div class="section">
+ <div class="section-header">
+ <span class="section-title">鍙告満淇℃伅</span>
+ <div class="approval-status">
+ <el-tag v-if="detailInfo.auditStatus === 0" type="warning" class="status-tag">寰呭鏍�</el-tag>
</div>
- </el-form-item>
+ </div>
+ <div class="info-grid">
+ <div class="info-item">
+ <span class="label">鍙告満濮撳悕锛�</span>
+ <span class="value">{{ detailInfo.name || '-' }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">鎺堟潈鎵嬫満鍙凤細</span>
+ <span class="value">{{ detailInfo.telephone || '-' }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">韬唤璇佸彿锛�</span>
+ <span class="value">{{ detailInfo.idcard || '-' }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">濠氬Щ鎯呭喌锛�</span>
+ <span class="value" v-if="detailInfo.maritalStatus === 3">涓у伓</span>
+ <span class="value" v-else-if="detailInfo.maritalStatus === 2">绂诲紓</span>
+ <span class="value" v-else-if="detailInfo.maritalStatus === 1">宸插</span>
+ <span class="value" v-else-if="detailInfo.maritalStatus === 0">鏈</span>
+ <span class="value" v-else>-</span>
+ </div>
+ <div class="info-item">
+ <span class="label">鎬у埆锛�</span>
+ <span class="value">{{ detailInfo.gender === 1 ? '鐢�' : detailInfo.gender === 2 ? '濂�' : '-' }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">鐜板眳浣忓湴鍧�锛�</span>
+ <span class="value">{{ detailInfo.livePlace || '-' }}</span>
+ </div>
+ <div class="info-item" v-if="detailInfo.auditStatus === 3 || detailInfo.auditStatus === 1" >
+ <span class="label">璇勭骇锛�</span>
+ <span class="value" v-if="detailInfo.driverLevel ==5">S</span>
+ <span class="value" v-else-if="detailInfo.driverLevel ==4">A</span>
+ <span class="value" v-else-if="detailInfo.driverLevel ==3">B</span>
+ <span class="value" v-else-if="detailInfo.driverLevel ==2">C</span>
+ <span class="value" v-else-if="detailInfo.driverLevel ==1">D</span>
+ <span class="value" v-else>-</span>
+ </div>
+ <div class="info-item">
+ <span class="label">鐘舵�侊細</span>
+ <span class="value">{{ detailInfo.status === 0 ? '鍚敤' : '绂佺敤' }}</span>
+ </div>
+ </div>
</div>
- <div class="form-section">
- <el-tabs v-model="qualificationTab">
- <el-tab-pane v-if="form.companyType === 1" label="涓讳綋璧勮川锛堜紒涓氾級" name="enterprise">
- <el-form-item label="娉曚汉濮撳悕" prop="legalPersonName">
- <el-input v-model="form.legalPersonName" placeholder="璇疯緭鍏ユ硶浜哄鍚�"></el-input>
- </el-form-item>
- <el-form-item label="娉曚汉鎵嬫満鍙�" prop="legalPersonPhone">
- <el-input v-model="form.legalPersonPhone" placeholder="璇疯緭鍏ユ硶浜烘墜鏈哄彿"></el-input>
- </el-form-item>
- <el-form-item label="娉曚汉韬唤璇佸彿" prop="legalPersonCard">
- <el-input v-model="form.legalPersonCard" placeholder="璇疯緭鍏ユ硶浜鸿韩浠借瘉鍙�"></el-input>
- </el-form-item>
- <el-form-item label="娉曚汉韬唤璇佹闈�" prop="idcardImg">
- <UploadImages
- :fileList="form.idcardImg"
- :uploadData="{ folder: 'shop' }"
- @getFileList="e => form.idcardImg.push(e)"
- @deleteRow="index => form.idcardImg.splice(index, 1)" />
- </el-form-item>
- <el-form-item label="娉曚汉韬唤璇佸弽闈�" prop="idcardImgBack">
- <UploadImages
- :fileList="form.idcardImgBack"
- :uploadData="{ folder: 'shop' }"
- @getFileList="e => form.idcardImgBack.push(e)"
- @deleteRow="index => form.idcardImgBack.splice(index, 1)" />
- </el-form-item>
- <el-form-item label="钀ヤ笟鎵х収" prop="businessImg">
- <UploadImages
- :fileList="form.businessImg"
- :uploadData="{ folder: 'shop' }"
- @getFileList="e => form.businessImg.push(e)"
- @deleteRow="index => form.businessImg.splice(index, 1)" />
- </el-form-item>
- </el-tab-pane>
- <el-tab-pane v-if="form.companyType === 0" label="涓讳綋璧勮川锛堜釜浜猴級" name="personal">
- <el-form-item label="韬唤璇佹闈�" prop="idcardImg">
- <UploadImages
- :fileList="form.idcardImg"
- :uploadData="{ folder: 'shop' }"
- @getFileList="e => form.idcardImg.push(e)"
- @deleteRow="index => form.idcardImg.splice(index, 1)" />
- </el-form-item>
- <el-form-item label="韬唤璇佸弽闈�" prop="idcardImgBack">
- <UploadImages
- :fileList="form.idcardImgBack"
- :uploadData="{ folder: 'shop' }"
- @getFileList="e => form.idcardImgBack.push(e)"
- @deleteRow="index => form.idcardImgBack.splice(index, 1)" />
- </el-form-item>
- <el-form-item label="鏈夋晥鍔冲姩鍚堝悓" prop="laborContractImgs">
- <UploadImages
- :fileList="form.laborContractImgs"
- :uploadData="{ folder: 'shop' }"
- :maxCount="3"
- @getFileList="e => form.laborContractImgs.push(e)"
- @deleteRow="index => form.laborContractImgs.splice(index, 1)" />
- </el-form-item>
- <el-form-item label="绀句繚缂寸撼璇佹槑" prop="socialSecurityImgs">
- <UploadImages
- :fileList="form.socialSecurityImgs"
- :uploadData="{ folder: 'shop' }"
- :maxCount="3"
- @getFileList="e => form.socialSecurityImgs.push(e)"
- @deleteRow="index => form.socialSecurityImgs.splice(index, 1)" />
- </el-form-item>
- </el-tab-pane>
- <el-tab-pane label="闂ㄥ簵鐓х墖鍙婂叾浠栨潗鏂�" name="photos">
- <el-form-item label="闂ㄥ簵闂ㄥご鐓�" prop="storeFrontImgs">
- <UploadImages
- :fileList="form.storeFrontImgs"
- :uploadData="{ folder: 'shop' }"
- :maxCount="3"
- @getFileList="e => form.storeFrontImgs.push(e)"
- @deleteRow="index => form.storeFrontImgs.splice(index, 1)" />
- </el-form-item>
- <el-form-item label="闂ㄥ簵鍐呴儴鐓х墖" prop="storeInteriorImgs">
- <UploadImages
- :fileList="form.storeInteriorImgs"
- :uploadData="{ folder: 'shop' }"
- :maxCount="3"
- @getFileList="e => form.storeInteriorImgs.push(e)"
- @deleteRow="index => form.storeInteriorImgs.splice(index, 1)" />
- </el-form-item>
- <el-form-item label="鍏跺畠鏉愭枡" prop="otherMaterialImgs">
- <UploadImages
- :fileList="form.otherMaterialImgs"
- :uploadData="{ folder: 'shop' }"
- :maxCount="3"
- @getFileList="e => form.otherMaterialImgs.push(e)"
- @deleteRow="index => form.otherMaterialImgs.splice(index, 1)" />
- </el-form-item>
- </el-tab-pane>
- </el-tabs>
+ <div class="section">
+ <div class="section-header">
+ <span class="section-title">杞﹁締淇℃伅</span>
+ </div>
+ <div class="info-grid">
+ <div class="info-item">
+ <span class="label">杞︾墝鍙凤細</span>
+ <span class="value">{{ detailInfo.carCode || '-' }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">杞﹁締绫诲瀷锛�</span>
+ <span class="value">{{ detailInfo.carTypeName || '-' }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">杞﹁締棰滆壊锛�</span>
+ <span class="value">{{ detailInfo.carColor || '-' }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">椹鹃┒璇佹湁鏁堟湡锛�</span>
+ <span class="value">{{ detailInfo.cardStartDate || '-' }} 鑷� {{ detailInfo.cardEndDate || '-' }}</span>
+ </div>
+ </div>
</div>
- </el-form>
+
+ <div class="section">
+ <div class="section-header">
+ <span class="section-title">闄勪欢鏉愭枡</span>
+ </div>
+ <div class="info-grid">
+ <div class="info-item">
+ <span class="label">韬唤璇佹闈細</span>
+ <el-image
+ v-if="detailInfo.idcardImg"
+ style="width: 80px; height: 80px"
+ :src="detailInfo.imgPrefix + detailInfo.idcardImg"
+ :preview-src-list="[detailInfo.imgPrefix + detailInfo.idcardImg]"
+ fit="cover"
+ ></el-image>
+ <span v-else>-</span>
+ </div>
+ <div class="info-item">
+ <span class="label">韬唤璇佸弽闈細</span>
+ <el-image
+ v-if="detailInfo.idcardImgBack"
+ style="width: 80px; height: 80px"
+ :src="detailInfo.imgPrefix + detailInfo.idcardImgBack"
+ :preview-src-list="[detailInfo.imgPrefix + detailInfo.idcardImgBack]"
+ fit="cover"
+ ></el-image>
+ <span v-else>-</span>
+ </div>
+ <div class="info-item full-width">
+ <span class="label">杞﹁締鐓х墖锛�</span>
+ <span v-if="!detailInfo.carImgList">-</span>
+ <div v-else class="image-list">
+ <el-image
+ v-for="(img, index) in detailInfo.carImgList"
+ :key="index"
+ style="width: 80px; height: 80px; margin-right: 10px"
+ :src="img.fileurlFull"
+ :preview-src-list="detailInfo.carImgList.map(item => item.fileurlFull)"
+ fit="cover"
+ ></el-image>
+ </div>
+ </div>
+ <div class="info-item full-width">
+ <span class="label">椹鹃┒璇佺収鐗囷細</span>
+ <span v-if="!detailInfo.licenseImgList">-</span>
+ <div v-else class="image-list">
+ <el-image
+ v-for="(img, index) in detailInfo.licenseImgList"
+ :key="index"
+ style="width: 80px; height: 80px; margin-right: 10px"
+ :src="img.fileurlFull"
+ :preview-src-list="detailInfo.licenseImgList.map(item => item.fileurlFull)"
+ fit="cover"
+ ></el-image>
+ </div>
+ </div>
+ <div class="info-item full-width">
+ <span class="label">鍏跺畠鏉愭枡锛�</span>
+ <span v-if="!detailInfo.otherImgList">-</span>
+ <div v-else class="image-list">
+ <el-image
+ v-for="(img, index) in detailInfo.otherImgList"
+ :key="index"
+ style="width: 80px; height: 80px; margin-right: 10px"
+ :src="img.fileurlFull"
+ :preview-src-list="detailInfo.otherImgList.map(item => item.fileurlFull)"
+ fit="cover"
+ ></el-image>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="approval-form" v-if="detailInfo.auditStatus === 0" >
+ <el-form ref="approvalForm" :model="approvalForm" :rules="approvalForm.auditStatus ===0?approvalRules:approvalRules1">
+ <el-form-item label="瀹℃壒缁撴灉" prop="auditStatus">
+ <el-radio-group v-model="approvalForm.auditStatus" @change="changeRadio">
+ <el-radio :label="0">閫氳繃</el-radio>
+ <el-radio :label="1">鎷掔粷</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="鍙告満璇勭骇" prop="driverLevel" v-if="approvalForm.auditStatus ===0">
+ <el-select v-model="approvalForm.driverLevel" placeholder="璇烽�夋嫨鍙告満璇勭骇" style="width: 300px">
+ <el-option label="S" :value="5"></el-option>
+ <el-option label="A" :value="4"></el-option>
+ <el-option label="B" :value="3"></el-option>
+ <el-option label="C" :value="2"></el-option>
+ <el-option label="D" :value="1"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="瀹℃壒鎰忚" prop="auditRemark" >
+ <el-input
+ type="textarea"
+ v-model="approvalForm.auditRemark"
+ placeholder="璇疯緭鍏ュ鎵规剰瑙�"
+ :rows="3"
+ style="width: 400px"
+ ></el-input>
+ </el-form-item>
+ </el-form>
+ <div class="approval-buttons">
+ <el-button @click="close">鍙栨秷</el-button>
+ <el-button type="primary" @click="handleConfirm" :loading="isWorking">纭畾</el-button>
+ </div>
+ </div>
+ </div>
</GlobalWindow>
</template>
<script>
-import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
-import UploadImages from '@/components/common/uploadImages'
-import { detail, updateById } from '@/api/business/shopInfo'
-import { listByParentId } from '@/api/business/areas'
+import { getById, audit } from '@/api/business/driver'
export default {
- name: 'OperaShopEditWindow',
- extends: BaseOpera,
- components: { GlobalWindow, UploadImages },
+ name: 'OperaDriverApproval',
+ components: { GlobalWindow },
data () {
return {
- form: {
+ title: '鍙告満瀹℃牳',
+ visible: false,
+ isWorking: false,
+ detailInfo: {},
+ approvalForm: {
id: null,
- telephone: '',
- name: '',
- companyType: 1,
- linkName: '',
- linkPhone: '',
- idcard: '',
- areaCode: [],
- provinceId: '',
- cityId: '',
- areaId: '',
- address: '',
- longitude: '',
- latitude: '',
- legalPersonName: '',
- legalPersonPhone: '',
- legalPersonCard: '',
- idcardImg: '',
- idcardImgBack: '',
- businessLicenseImg: '',
- laborContractImgs: '',
- socialSecurityImgs: '',
- storeFrontImgs: '',
- storeInteriorImgs: '',
- otherMaterialImgs: ''
+ auditStatus: 0,
+ driverLevel: '',
+ auditRemark: ''
},
- rules: {
- name: [{ required: true, message: '璇疯緭鍏ラ棬搴楀悕绉�', trigger: 'blur' }],
- companyType: [{ required: true, message: '璇烽�夋嫨闂ㄥ簵绫诲瀷', trigger: 'change' }],
- linkName: [{ required: true, message: '璇疯緭鍏ヨ仈绯讳汉', trigger: 'blur' }],
- linkPhone: [{ required: true, message: '璇疯緭鍏ヨ仈绯荤數璇�', trigger: 'blur' }],
- idcard: [{ required: true, message: '璇疯緭鍏ヨ韩浠借瘉鍙�', trigger: 'blur' }],
- areaCode: [{ required: true, message: '璇烽�夋嫨鐪佸競鍖�', trigger: 'change' }],
- address: [{ required: true, message: '璇疯緭鍏ラ棬搴楀湴鍧�', trigger: 'blur' }],
- longitude: [{ required: true, message: '璇烽�夋嫨缁忕含搴�', trigger: 'blur' }],
- legalPersonName: [{ required: true, message: '璇疯緭鍏ユ硶浜哄鍚�', trigger: 'blur' }],
- legalPersonPhone: [{ required: true, message: '璇疯緭鍏ユ硶浜烘墜鏈哄彿', trigger: 'blur' }],
- legalPersonCard: [{ required: true, message: '璇疯緭鍏ユ硶浜鸿韩浠借瘉鍙�', trigger: 'blur' }],
- businessImg: [{ required: true, message: '璇疯緭鍏ヨ惀涓氭墽鐓�', trigger: 'blur' }],
- idcardImg: [{ required: true, message: '璇疯緭鍏ヨ韩浠借瘉姝i潰', trigger: 'blur' }],
- idcardImgBack: [{ required: true, message: '璇疯緭鍏ヨ韩浠借瘉鍙嶉潰', trigger: 'blur' }],
- laborContractImgs: [{ required: true, message: '璇疯緭鍏ユ湁鏁堝姵鍔ㄥ悎鍚�', trigger: 'blur' }],
- socialSecurityImgs: [{ required: true, message: '璇疯緭鍏ョぞ淇濈即绾宠瘉鏄�', trigger: 'blur' }],
- storeFrontImgs: [{ required: true, message: '璇疯緭鍏ラ棬搴楅棬澶寸収', trigger: 'blur' }],
- storeInteriorImgs: [{ required: true, message: '璇疯緭鍏ラ棬搴楀唴閮ㄧ収鐗�', trigger: 'blur' }]
- // otherMaterialImgs: [{ required: true, message: '璇疯緭鍏ュ叾瀹冩潗鏂�', trigger: 'blur' }]
+ approvalRules: {
+ auditStatus: [{ required: true, message: '璇烽�夋嫨瀹℃壒缁撴灉', trigger: 'change' }],
+ driverLevel: [{ required: true, message: '璇烽�夋嫨鍙告満璇勭骇', trigger: 'change' }]
},
- qualificationTab: 'enterprise',
- areaOptions: [],
- isWorking: {
- save: false
+ approvalRules1: {
+ auditStatus: [{ required: true, message: '璇烽�夋嫨瀹℃壒缁撴灉', trigger: 'change' }],
+ auditRemark: [{ required: true, message: '璇疯緭鍏ュ鎵规剰瑙�', trigger: 'blur' }]
}
}
},
- created () {
- this.config({
- api: '/business/shopInfo',
- 'field.id': 'id'
- })
- this.loadAreaOptions()
- },
methods: {
+ changeRadio(){
+ this.$refs.approvalForm.clearValidate()
+ },
open (title, row) {
- this.isWorking.save = false
- detail(row.id)
- .then(res => {
- this.form = {
- id: res.id,
- telephone: res.telephone || '',
- name: res.name || '',
- companyType: res.companyType ?? 1,
- linkName: res.linkName || '',
- linkPhone: res.linkPhone || '',
- idcard: res.idcard || '',
- areaCode: res.provinceId ? [res.provinceId, res.cityId, res.areaId] : [],
- provinceId: res.provinceId || '',
- cityId: res.cityId || '',
- areaId: res.areaId || '',
- address: res.address || '',
- longitude: res.longitude || '',
- latitude: res.latitude || '',
- legalPersonName: res.legalPersonName || '',
- legalPersonPhone: res.legalPersonPhone || '',
- legalPersonCard: res.legalPersonCard || '',
- businessImg: res.companyType === 1 ? [{ fileurl: res.businessImg, url: res.imgPrefix + res.businessImg }] : [],
- idcardImg: [{ fileurl: res.idcardImg, url: res.imgPrefix + res.idcardImg }],
- idcardImgBack: [{ fileurl: res.idcardImgBack, url: res.imgPrefix + res.idcardImgBack }],
- laborContractImgs: res.laborContractImgs.map(item => ({ fileurl: item, url: res.imgPrefix + item })),
- socialSecurityImgs: res.socialSecurityImgs.map(item => ({ fileurl: item, url: res.imgPrefix + item })),
- storeFrontImgs: res.storeFrontImgs.map(item => ({ fileurl: item, url: res.imgPrefix + item })),
- storeInteriorImgs: res.storeInteriorImgs.map(item => ({ fileurl: item, url: res.imgPrefix + item })),
- otherMaterialImgs: res.otherMaterialImgs ? res.otherMaterialImgs.map(item => ({ fileurl: item, url: res.imgPrefix + item })) : []
- }
- this.qualificationTab = res.companyType === 1 ? 'enterprise' : 'personal'
- this.title = title
- this.visible = true
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- },
- loadAreaOptions () {
- listByParentId({ })
- .then(data => {
- this.areaOptions = this.formatAreaData(data)
- console.log(this.areaOptions)
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- },
- formatAreaData (data) {
- const map = {}
- const result = []
- data.forEach(item => {
- map[item.id] = { value: item.id, label: item.name, children: [] }
- })
- data.forEach(item => {
- if (item.type === 0) {
- result.push(map[item.id])
- } else if (item.type === 1 && item.parentId && map[item.parentId]) {
- map[item.parentId].children.push(map[item.id])
- } else if (item.type === 2 && item.parentId && map[item.parentId]) {
- map[item.parentId].children.push(map[item.id])
- }
- })
- const clearEmptyChildren = (nodes) => {
- nodes.forEach(node => {
- if (node.children.length === 0) {
- node.children = null
- } else {
- clearEmptyChildren(node.children)
- }
- })
+ this.title = title
+ this.approvalForm = {
+ id: row.id,
+ auditStatus: 0,
+ driverLevel: '',
+ auditRemark: ''
}
- clearEmptyChildren(result)
- return result
+ this.$nextTick(() => {
+ this.$refs.approvalForm && this.$refs.approvalForm.clearValidate()
+ })
+ getById(row.id).then(res => {
+ this.detailInfo = res
+ this.visible = true
+ }).catch(e => {
+ this.$tip.apiFailed(e)
+ })
},
- openMapSelector () {
- window.open('https://lbs.qq.com/getPoint/', '_blank')
+ close () {
+ this.visible = false
},
handleConfirm () {
- this.$refs.form.validate(valid => {
+ this.$refs.approvalForm.validate(valid => {
if (!valid) return
- this.isWorking.save = true
- const imageFields = ['laborContractImgs', 'socialSecurityImgs', 'storeFrontImgs', 'storeInteriorImgs', 'otherMaterialImgs']
- const singleImageFields = ['businessImg', 'idcardImg', 'idcardImgBack']
- const data = { ...this.form }
- singleImageFields.forEach(field => {
- if (data[field] && Array.isArray(data[field])) {
- data[field] = data[field].map(item => typeof item === 'object' ? item.fileurl : item).join(',')
- }
+ if (this.approvalForm.status === 2 && !this.approvalForm.remark) {
+ this.$message.warning('璇疯緭鍏ュ鎵规剰瑙�')
+ return
+ }
+ this.isWorking = true
+ audit({
+ id: this.approvalForm.id,
+ auditStatus: this.approvalForm.auditStatus,
+ driverLevel: this.approvalForm.driverLevel,
+ auditRemark: this.approvalForm.auditRemark
+ }).then(res => {
+ this.$tip.apiSuccess(res || '瀹℃牳鎴愬姛')
+ this.$emit('success', this.approvalForm)
+ this.visible = false
+ }).catch(e => {
+ this.$tip.apiFailed(e)
+ }).finally(() => {
+ this.isWorking = false
})
- imageFields.forEach(field => {
- if (data[field] && Array.isArray(data[field])) {
- data[field] = data[field].map(item => typeof item === 'object' ? item.fileurl : item)
- }
- })
- data.provinceId = this.form.areaCode[0] || ''
- data.cityId = this.form.areaCode[1] || ''
- data.areaId = this.form.areaCode[2] || ''
- delete data.areaCode
- updateById(data)
- .then(res => {
- this.$tip.apiSuccess(res || '淇濆瓨鎴愬姛')
- this.visible = false
- this.$emit('success')
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- .finally(() => {
- this.isWorking.save = false
- })
})
}
}
@@ -343,32 +272,82 @@
</script>
<style scoped>
-.form-section {
- margin-bottom: 20px;
+.driver-approval {
+
+}
+.section {
+ margin-bottom: 25px;
+}
+.checkinfo {
+ align-items:start !important;
+ display: flex !important;
+ flex-direction: column !important;
+ background-color: rgb(254 242 242);
+ min-height: 100px;
+ margin-bottom: 30px;
+ padding: 20px;
+}
+.section-header {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ margin-bottom: 15px;
+ flex-wrap: wrap;
}
.section-title {
font-size: 16px;
font-weight: bold;
color: #303133;
- margin-bottom: 15px;
padding-left: 10px;
border-left: 4px solid #2E68EC;
}
-.password-tip {
- color: #909399;
- font-size: 12px;
- margin: -10px 0 15px 0;
+.approval-status {
+ margin-left: auto;
}
-.longitude-latitude {
+.status-tag {
+ font-size: 14px;
+ padding: 4px 12px;
+}
+.info-grid {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 15px;
+ padding: 0 10px;
+}
+.info-item {
display: flex;
- align-items: center;
- gap: 10px;
+ font-size: 14px;
}
-.longitude-latitude .separator {
+.info-item.full-width {
+ grid-column: span 2;
+}
+.info-item .label {
+ color: #909399;
+ min-width: 110px;
+}
+.info-item .value {
color: #606266;
+ word-break: break-all;
}
-.inline-form /deep/ .el-form-item {
- display: block;
- margin-right: 0;
+.image-list {
+ display: flex;
+ flex-wrap: wrap;
+}
+.approval-form {
+ padding: 20px;
+ background: #f5f7fa;
+ border-top: 1px solid #eee;
+}
+.approval-form /deep/ .el-form-item {
+ margin-bottom: 15px;
+}
+.approval-form /deep/ .el-form-item:last-child {
+ margin-bottom: 0;
+}
+.approval-buttons {
+ display: flex;
+ justify-content: flex-end;
+ gap: 10px;
+ margin-top: 15px;
}
</style>
--
Gitblit v1.9.3