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