Commit 71ee734a authored by 邓春圆's avatar 邓春圆

会员详情页

parent 496f29ed
<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('身份证认证状态')">{{$l(getDictDatas(this.DICT_TYPE.AUDIT_STATUS).find(i => i.value == details.identityAuditStatus),'label')}}</el-descriptions-item>
<el-descriptions-item :label="$t('身份证认证状态')">{{$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>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment