<template> <div style="padding: 20px"> <header style="display: flex;justify-content: space-between;align-items: center;"> <h1 style="font-weight: 600;font-size: 20px">{{$t('会员详情')}}</h1> <div> <el-button type="primary" v-has-permi="['member:certificate']" @click="guarantee(details)">{{ $t('保函证书') }}</el-button> <el-button type="primary" v-has-permi="['member:log']" @click="operationLogFn(details)">{{ $t('操作日志') }}</el-button> <el-button type="primary" v-has-permi="['member:id-card']" @click="identityFn(details , '1')">{{ $t('身份证') }}</el-button> <el-button type="primary" v-has-permi="['member:business-license']" @click="identityFn(details, '2')">{{ $t('营业执照') }}</el-button> <el-button type="danger" v-has-permi="['member:delete']" @click="deleteFn(details)">{{ $t('删除') }}</el-button> </div> </header> <el-descriptions :title="$t('公司信息')" :column="4" border> <el-descriptions-item :label="$t('会员编号')">{{ details.id }}</el-descriptions-item> <el-descriptions-item :label="$t('会员昵称')">{{ details.nickname }}</el-descriptions-item> <el-descriptions-item :label="$t('英文名称')">{{ details.englishName }}</el-descriptions-item> <el-descriptions-item :label="$t('真实姓名')">{{ details.identityName || '-' }}</el-descriptions-item> <el-descriptions-item :label="$t('联系方式')"><span style="margin-right: 10px;">+{{ details.areaCode }}</span><span>{{ details.mobile }}</span> </el-descriptions-item> <el-descriptions-item :label="$t('绑定邮箱')">{{ details.email }}</el-descriptions-item> <el-descriptions-item :label="$t('生日')">{{ details.birthday }}</el-descriptions-item> <el-descriptions-item :label="$t('性别')">{{ details.gender === 0 ? '女' : details.gender === 1 ? '男' : '保密' }} </el-descriptions-item> <el-descriptions-item :label="$t('地址')">{{ details.address }}</el-descriptions-item> <el-descriptions-item :label="$t('部门')">{{details.department}}</el-descriptions-item> <el-descriptions-item :label="$t('职位')">{{details.jobPosition}}</el-descriptions-item> <el-descriptions-item :label="$t('创建时间')">{{details.createTime}}</el-descriptions-item> <el-descriptions-item :label="$t('上次登录')">{{details.loginDate}}</el-descriptions-item> </el-descriptions> <el-descriptions style="margin-top: 20px" :title="$t('基础信息')" :column="4" border> <el-descriptions-item :label="$t('公司名称')">{{details.enterpriseName}}</el-descriptions-item> <el-descriptions-item :label="$t('公司英文名称')">{{details.enterpriseNameEn}}</el-descriptions-item> <el-descriptions-item :label="$t('档口')">{{details.enterpriseStall}}</el-descriptions-item> <el-descriptions-item :label="$t('品牌')">{{details.enterpriseBrand}}</el-descriptions-item> <el-descriptions-item :label="$t('公司地址')">{{details.enterpriseAddress}}</el-descriptions-item> <el-descriptions-item :label="$t('公司简介')">{{details.enterpriseDesc}}</el-descriptions-item> </el-descriptions> <el-descriptions style="margin-top: 20px" :title="$t('认证信息')" :column="4" border> <el-descriptions-item :label="$t('成交')">{{details.customerStatus === 3 ? '成交' : '未成交' }}</el-descriptions-item> <el-descriptions-item :label="$t('认证')"> <span v-if="details.identityAuditStatus === 2 && details.enterpriseAuditStatus === 2" >{{ $t('双认证') }}</span> <span v-else-if="details.identityAuditStatus === 2 && details.enterpriseAuditStatus !== 2 " >{{ $t('身份证') }}</span> <span v-else-if="details.identityAuditStatus !== 2 && details.enterpriseAuditStatus === 2 " >{{ $t('企业') }}</span> <span v-else-if="details.identityAuditStatus !== 2 && details.enterpriseAuditStatus !== 2 " >{{ $t('否') }}</span> </el-descriptions-item> <el-descriptions-item :label="$t('身份证认证状态')">{{ details.identityAuditStatus !== null ? $l(getDictDatas(this.DICT_TYPE.AUDIT_STATUS).find(i => i.value == details.identityAuditStatus),'label') : ''}}</el-descriptions-item> <el-descriptions-item :label="$t('身份证认证状态')">{{details.enterpriseAuditStatus !== null ? $l(getDictDatas(this.DICT_TYPE.AUDIT_STATUS).find(i => i.value == details.enterpriseAuditStatus),'label' ) : '' }}</el-descriptions-item> </el-descriptions> <el-dialog title="保函/证书" :visible.sync="guaranteeShow" :before-close="()=>{guaranteeUrl = ''; guaranteeShow = false;}" width="50%"> <el-form> <el-form-item :label="$t('保函/证书')"> <el-row :gutter="20" type="flex" justify="center"> <el-col :span="12"> <el-input v-model="guaranteeUrl"></el-input> </el-col> <el-col :span="4"> <div style="height: 45px;overflow: hidden;"> <file-upload v-model="guaranteeUrl" :fileType="['png', 'jpg', 'jpeg','pdf']" :limit="1" :isShowTip="false"></file-upload> </div> </el-col> <el-col :span="6"> <div>{{ $t('可上传图片,pdf文档') }}</div> </el-col> </el-row> </el-form-item> </el-form> <div style="text-align: center;"> <el-button @click="setGuarantee">{{ $t('保 存') }}</el-button> </div> </el-dialog> <el-dialog :title="$t('操作日志')" :visible.sync="operationLogShow" width="50%"> <el-table :data="operationLogList"> <el-table-column :label="$t('标题')" prop="title"></el-table-column> <el-table-column :label="$t('操作内容')" prop="content"></el-table-column> <el-table-column :label="$t('操作人')" prop="userId"> <template v-slot="{row}"> {{ details.identityName }} </template> </el-table-column> <el-table-column :label="$t('操作时间')"> <template v-slot:default="scope"> {{ parseTime(scope.row.createTime) }} </template> </el-table-column> <el-table-column :label="$t('操作ip')" prop="ip"></el-table-column> </el-table> <pagination v-show="totalLog > 0" :total="totalLog" :page.sync="operationLogFrom.page" :limit.sync="operationLogFrom.row" @pagination="getOperationLogList"/> </el-dialog> <el-dialog :title="$t('认证')" :visible.sync="attestationShow" width="80%"> <div class="details"> <el-tabs v-model="activeName" @tab-click="handleClick"> <el-tab-pane :label="$t('身份证')" name="1"> <div style="padding:0 40px;box-sizing: border-box;"> <el-form :disabled="[2,3].includes(IdDetails.status) && modifyIdCard" ref="formId" label-position="left" label-width="100px" :rules="rulesId" :model="IdDetails"> <el-form-item :label="$t('姓名')" prop="name"> <el-input v-model="IdDetails.name"></el-input> </el-form-item> <el-form-item :label="$t('证件类型')" prop="cardType"> <dict-selector v-model="IdDetails.cardType" :type="DICT_TYPE.CERTIFICATE_TYPE"></dict-selector> </el-form-item> <el-form-item :label="$t('证件号码')" prop="cardNumber"> <el-input v-model="IdDetails.cardNumber"></el-input> </el-form-item> <el-form-item :label="$t('证件正面照')" prop="img1"> <div> <el-input readonly style="margin-bottom: 20px" v-model="IdDetails.img1"></el-input> <ImageUpload :isShowTip="false" v-model="IdDetails.img1" :limit="1"></ImageUpload> </div> </el-form-item> <el-form-item :label="$t('证件背面照')" prop="img2"> <div> <el-input readonly style="margin-bottom: 20px" v-model="IdDetails.img2"></el-input> <ImageUpload :isShowTip="false" :limit="1" v-model="IdDetails.img2"></ImageUpload> </div> </el-form-item> <el-form-item :label="$t('审核状态')" v-if="modifyIdCard && IdDetails.status !== 0 "> {{ getDictDatas(DICT_TYPE.AUDIT_STATUS)[IdDetails.status] ? getDictDatas(DICT_TYPE.AUDIT_STATUS)[IdDetails.status].label : '' }} </el-form-item> <el-form-item :label="$t('审核时间')" v-if="[2,3].includes(IdDetails.status) && modifyIdCard"> {{ parseTime(IdDetails.auditTime) }} </el-form-item> <el-form-item v-if="modifyIdCard && IdDetails.status !== 0" :label="$t('审核备注')"> <el-input v-model="IdDetails.auditRemark" :disabled="IdDetails.status === 3" type="textarea"></el-input> </el-form-item> </el-form> <div v-if="IdDetails.status === 1" style="text-align: center;margin-top: 20px;"> <el-button type="primary" @click="idCardAuditFn(2)">{{ $t('审核通过') }}</el-button> <el-button type="primary" @click="idCardAuditFn(3)">{{ $t('审核不通过') }}</el-button> <el-button @click="attestationShow = false">{{ $t('取 消') }}</el-button> </div> <div v-if="IdDetails.status === 2 || IdDetails.status === 3" style="text-align: center;margin-top: 20px;"> <el-button type="primary" v-if="modifyIdCard" @click="modifyIdCard = false;">{{ $t('修 改') }} </el-button> <el-button type="primary" v-else @click="setMemberUserUpdateIdCard">{{ $t('提交审核') }}</el-button> <el-button @click="attestationShow = false">{{ $t('取 消') }}</el-button> </div> <div v-if="IdDetails.status === 0" style="text-align: center;margin-top: 20px;"> <el-button type="primary" @click="submitId">{{ $t('上 传') }}</el-button> <el-button @click="attestationShow = false">{{ $t('取 消') }}</el-button> </div> </div> </el-tab-pane> <el-tab-pane :label="$t('营业执照')" name="2"> <div style="width: 500px;padding:0 40px;box-sizing: border-box;"> <el-form :disabled="modifyLicense && [2,3].includes(enterpriseFrom.status)" :rules="rulesEnterprise" :model="enterpriseFrom" label-position="left" ref="formEnter" label-width="100px"> <el-form-item :label="$t('企业名称')" prop="name"> <el-input v-model="enterpriseFrom.name"></el-input> </el-form-item> <el-form-item :label="$t('企业法人')" prop="legalName"> <el-input v-model="enterpriseFrom.legalName"></el-input> </el-form-item> <el-form-item :label="$t('证件号码')" prop="cardNumber"> <el-input v-model="enterpriseFrom.cardNumber"></el-input> </el-form-item> <el-form-item :label="$t('证件照')" prop="img1"> <div> <el-input readonly style="margin-bottom: 20px" v-model="enterpriseFrom.img1"></el-input> <ImageUpload :isShowTip="false" :limit="1" v-model="enterpriseFrom.img1"></ImageUpload> </div> </el-form-item> <el-form-item :label="$t('附件')"> <el-input readonly v-model="enterpriseFrom.img2"></el-input> <ImageUpload :isShowTip="false" :limit="1" v-model="enterpriseFrom.img2"></ImageUpload> </el-form-item> <el-form-item v-if="modifyLicense && enterpriseFrom.status !== 0 " :label="$t('审核状态')"> {{ getDictDatas(DICT_TYPE.AUDIT_STATUS)[enterpriseFrom.status].label }} </el-form-item> <el-form-item v-if="[2,3].includes(enterpriseFrom.status) && modifyLicense " :label="$t('审核时间')"> {{ parseTime(enterpriseFrom.auditTime) }} </el-form-item> <el-form-item v-if="modifyLicense && enterpriseFrom.status !== 0" :label="$t('审核备注')"> <el-input v-model="enterpriseFrom.auditRemark" :disabled="enterpriseFrom.status === 3" type="textarea"></el-input> </el-form-item> </el-form> <div v-if="enterpriseFrom.status === 1" style="text-align: center;margin-top: 20px;"> <el-button type="primary" @click="certificateVerificationFn(2)">{{ $t('审核通过') }}</el-button> <el-button type="primary" @click="certificateVerificationFn(3)">{{ $t('审核不通过') }}</el-button> <el-button @click="attestationShow = false">{{ $t('取 消') }}</el-button> </div> <div v-if="enterpriseFrom.status === 2 || enterpriseFrom.status === 3" style="text-align: center;margin-top: 20px;"> <el-button type="primary" v-if="modifyLicense" @click="modifyLicense = false">{{ $t('修 改') }} </el-button> <el-button type="primary" v-else @click="setMemberUserUpdateEnterprise">{{ $t('提交审核') }}</el-button> <el-button @click="attestationShow = false">{{ $t('取 消') }}</el-button> </div> <div v-if="enterpriseFrom.status === 0" style="text-align: center;margin-top: 20px;"> <el-button type="primary" @click="submit">{{ $t('上 传') }}</el-button> <el-button @click="attestationShow = false">{{ $t('取 消') }}</el-button> </div> </div> </el-tab-pane> </el-tabs> </div> </el-dialog> </div> </template> <script> import { createAuditIdCard, deleteUser, memberGetAuthEnterpriseInfo, memberGetAuthIdcardInfo, memberUserAuditEnterprise, memberUserAuditIdCard, memberUserGet, memberUserUpdateEnterprise, memberUserUpdateIdCard, operationLogApi, seTupdateBackletter, userCreateAuditEnterprise } from "@/api/member/user"; import FileUpload from "@/components/FileUpload/index.vue"; import ImageUpload from "@/components/ImageUpload/index.vue"; import {DICT_TYPE, getDictDatas} from "@/utils/dict"; export default { name: "memberDetails", components: {ImageUpload, FileUpload}, data() { return { // 表单校验 rulesId: { name: [{required: true, message: this.$t('用户昵称不能为空'), trigger: "blur"}], cardType: [{required: true, message: this.$t('证件类型不能为空'), trigger: "blur"}], cardNumber: [{required: true, message: this.$t('证件号码不能为空'), trigger: "blur"}], img1: [{required: true, message: this.$t('身份正面照不能为空'), trigger: ['blur', 'change']}], img2: [{required: true, message: this.$t('身份正面照不能为空'), trigger: ['blur', 'change']}], }, rulesEnterprise: { name: [{required: true, message: this.$t('企业名称不能为空'), trigger: "blur"}], legalName: [{required: true, message: this.$t('企业法人不能为空'), trigger: "blur"}], cardNumber: [{required: true, message: this.$t('证件号码不能为空'), trigger: "blur"}], img1: [{required: true, message: this.$t('证件照不能为空'), trigger: ['blur', 'change']}], }, getDictDatas, DICT_TYPE, details: { "address": "", "areaCode": "", "avatar": "", "backLetterImg": "", "birthday": "", "createTime": "", "customerStatus": "", "department": "", "email": "", "englishName": "", "enterpriseAddress": "", "enterpriseAuditCreateTime": "", "enterpriseAuditRemark": "", "enterpriseAuditStatus": "", "enterpriseAuditTime": "", "enterpriseBrand": "", "enterpriseDesc": "", "enterpriseName": "", "enterpriseNameEn": "", "enterpriseStall": "", "enterpriseWebsite": "", "gender": "", "groupCount": "", "id": "", "identityAuditCreateTime": "", "identityAuditRemark": "", "identityAuditStatus": "", "identityAuditTime": "", "identityName": "", "isDeal": "", "isSimplePassword": "", "jobPosition": "", "loginDate": "", "loginIp": "", "mobile": "", "nickname": "", "password": "", "registDate": "", "registerIp": "", "status": "" }, publicObj: {}, guaranteeShow: false, guaranteeUrl: '', operationLogFrom: { page: 1, row: 10, userId: undefined }, attestationShow: false, modifyLicense: false, modifyIdCard: true,//修改身份证 IdDetails: {}, enterpriseFrom: {}, operationLogShow: false, activeName: "1", operationLogList: [], totalLog: 0, } }, created() { this.getDetails() }, methods: { deleteFn(row) { const nickname = row.nickname; this.$modal.confirm(`${this.$t('是否确认删除昵称为{nickname}的会员?', {nickname})}`).then(function () { return deleteUser(row.id) }).then(res => { this.$message.success(this.$t('删除成功')) this.$router.back() }).catch(() => { // this.$message.success(this.$t('删除失败')) } ) }, getDetails() { memberUserGet({id: this.$route.params.id}).then(r => { console.log(r, 'rrrr') this.details = r.data }) }, // 保函证书 guarantee(row) { this.publicObj = row; this.guaranteeShow = true; this.guaranteeUrl = row.backLetterImg; }, // 操作日志 operationLogFn(row) { this.publicObj = row; this.operationLogFrom.page = 1; this.operationLogFrom.userId = row.id this.operationLogShow = true; this.operationLogList = []; this.getOperationLogList(); }, getOperationLogList() { operationLogApi(this.operationLogFrom).then(r => { if (r.code === 0) { this.operationLogList = r.data.list this.totalLog = r.data.total } }) }, identityFn(row, val) { this.attestationShow = true; this.activeName = val; this.publicObj = row; if (val == 1) { this.getIdentityDetails(); } else { this.getEnterpriseFn(); } }, handleClick(val) { if (val.name == 1) { this.getIdentityDetails(); } else { this.getEnterpriseFn(); } }, getIdentityDetails() { this.resetId(); memberGetAuthIdcardInfo({userId: this.publicObj.id}).then(r => { if (r.code === 0 && !!r.data) { this.IdDetails = r.data } }) }, getEnterpriseFn() { this.resetEnterprise(); memberGetAuthEnterpriseInfo({userId: this.publicObj.id}).then(r => { if (r.code === 0 && !!r.data) { this.enterpriseFrom = r.data } }) }, //身份证审核 idCardAuditFn(val) { let p = { auditStatus: val, userCardAuthId: this.IdDetails.id, auditRemark: this.IdDetails.auditRemark } memberUserAuditIdCard(p).then(r => { if (r.code === 0) { this.$message.success(this.$t('修改成功')); this.getList() this.getIdentityDetails() } }) }, // 企业证书审核 certificateVerificationFn(val) { let p = { auditStatus: val, userEnterpriseAuthId: this.enterpriseFrom.id, auditRemark: this.enterpriseFrom.auditRemark } memberUserAuditEnterprise(p).then(r => { if (r.code === 0) { this.getList() this.getEnterpriseFn(); } }) }, setMemberUserUpdateIdCard() { this.$refs.formId.validate(async valid => { if (valid) { let p = { cardNumber: this.IdDetails.cardNumber, cardType: this.IdDetails.cardType, img1: this.IdDetails.img1, img2: this.IdDetails.img2, name: this.IdDetails.name, userCardAuthId: this.IdDetails.id, auditPass: true, }; memberUserUpdateIdCard(p).then(r => { if (r.code === 0) { this.$message.success(this.$t('修改成功')) if (p.auditPass === true) { this.getIdentityDetails() } this.getList() this.modifyIdCard = true; } }) } }) }, setMemberUserUpdateEnterprise() { this.$refs.formEnter.validate(async valid => { if (valid) { let p = { cardNumber: this.enterpriseFrom.cardNumber, img1: this.enterpriseFrom.img1, img2: this.enterpriseFrom.img2, legalName: this.enterpriseFrom.legalName, name: this.enterpriseFrom.name, userEnterpriseAuthId: this.enterpriseFrom.id, auditPass: true, } memberUserUpdateEnterprise(p).then(r => { if (r.code === 0) { if (p.auditPass === true) { this.getEnterpriseFn(); } this.getList() this.modifyLicense = true; this.$message.success(this.$t('修改成功')); } }) } }) }, submit() { let p = { cardNumber: this.enterpriseFrom.cardNumber, img1: this.enterpriseFrom.img1, img2: this.enterpriseFrom.img2, legalName: this.enterpriseFrom.legalName, name: this.enterpriseFrom.name, userEnterpriseAuthId: this.enterpriseFrom.id, userId: this.publicObj.id } userCreateAuditEnterprise(p).then(r => { if (r.code === 0) { this.$message.success(this.$t('添加成功!')); this.enterpriseFrom.status = 2 this.enterpriseFrom.auditTime = new Date().getTime() this.getEnterpriseFn(); this.getList() } }) }, submitId() { this.$refs.formId.validate(async valid => { if (valid) { let p = { cardNumber: this.IdDetails.cardNumber, cardType: this.IdDetails.cardType, img1: this.IdDetails.img1, img2: this.IdDetails.img2, name: this.IdDetails.name, status: 2, userId: this.publicObj.id }; createAuditIdCard(p).then(r => { if (r.code === 0) { this.$message.success(this.$t('添加成功!')); this.IdDetails.status = 2 this.IdDetails.auditTime = new Date().getTime() this.getIdentityDetails(); this.getList() } }) } }) }, /** 表单重置 */ resetId() { this.IdDetails = { auditRemark: undefined, auditTime: undefined, cardNumber: undefined, cardType: undefined, createTime: undefined, id: 0, img1: undefined, img2: undefined, name: '', status: 0, userId: 0 } },//清空身份证 resetEnterprise() { this.enterpriseFrom = { auditRemark: undefined, auditTime: undefined, cardNumber: undefined, createTime: undefined, id: undefined, img1: undefined, img2: undefined, legalName: undefined, name: undefined, status: 0, userId: undefined } },//清空企业 setGuarantee() { seTupdateBackletter({userId: this.publicObj.id, backLetter: this.guaranteeUrl}).then(r => { if (r.code === 0) { this.publicObj.backLetterImg = this.guaranteeUrl; this.guaranteeShow = false; this.$message.success(this.$t('保存成功')); } }) }, } } </script> <style scoped lang="scss"> </style>