| | |
| | | <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: '请è¾å
¥èº«ä»½è¯æ£é¢', 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 |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | |
| | | </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> |