422 lines
15 KiB
Vue
422 lines
15 KiB
Vue
<template>
|
|
<section class="loanDetail">
|
|
<ai-detail>
|
|
<ai-title slot="title" title="贷款审核详情" isShowBottomBorder isShowBack @onBackClick="$router.push({query:{}})">
|
|
<template #rightBtn>
|
|
<el-button v-if="isAuthing&&isFinanceAdmin" type="primary" @click="dialog=true">审核</el-button>
|
|
</template>
|
|
</ai-title>
|
|
<template #content>
|
|
<el-form size="small" label-width="160px">
|
|
<ai-card title="贷款申请">
|
|
<template #content>
|
|
<el-row type="flex" class="flexWrap">
|
|
<el-form-item label="产品名称">
|
|
<el-row type="flex">
|
|
{{ detail.productName }}
|
|
<el-link type="primary"
|
|
@click="$router.push({name:'27338cb83e77461dbd44356a6760df84',query:{id:detail.productId}})">
|
|
产品详情
|
|
</el-link>
|
|
</el-row>
|
|
</el-form-item>
|
|
<el-form-item label="贷款银行">{{ detail.organizationName }}</el-form-item>
|
|
<el-form-item label="贷款金额(万)">{{ detail.loanAmount }}</el-form-item>
|
|
<el-form-item label="期望使用期限">{{ dict.getLabel('productRepaymentTimeline', detail.hopeLifespan) }}
|
|
</el-form-item>
|
|
<el-form-item label="企业主体">
|
|
<el-row type="flex">
|
|
{{ detail.enterpriseName }}
|
|
<el-link type="primary"
|
|
@click="isShow=true">
|
|
企业详情
|
|
</el-link>
|
|
</el-row>
|
|
</el-form-item>
|
|
<el-form-item label="资金用途">{{ dict.getLabel('financialFundPurpose', detail.fundPurpose) }}
|
|
</el-form-item>
|
|
<el-form-item label="联系人">{{ detail.name }}</el-form-item>
|
|
<el-form-item label="身份证号">{{ detail.idNumber }}</el-form-item>
|
|
<el-form-item label="联系方式">{{ detail.phone }}</el-form-item>
|
|
<el-form-item label="申请时间">{{ detail.createTime }}</el-form-item>
|
|
</el-row>
|
|
<el-row>
|
|
<el-form-item label="备注">{{ detail.remark }}</el-form-item>
|
|
</el-row>
|
|
</template>
|
|
</ai-card>
|
|
<ai-card title="办理结果" v-if="!isAuthing">
|
|
<template #content>
|
|
<el-row type="flex" class="flexWrap">
|
|
<el-form-item label="贷款进度">{{ dict.getLabel('financialLoanApplyStatus', detail.status) }}</el-form-item>
|
|
<el-form-item label="贷款银行">{{ detail.organizationName }}</el-form-item>
|
|
<el-form-item label="贷款经理">{{ detail.auditUserName }}</el-form-item>
|
|
<el-form-item label="联系方式 ">{{ detail.auditPhone }}</el-form-item>
|
|
<template v-if="detail.status==1">
|
|
<el-form-item label="放款金额(万)">{{ detail.auditAmount }}</el-form-item>
|
|
<el-form-item label="放款日期">{{ detail.loanDate }}</el-form-item>
|
|
<el-form-item label="实际使用期限">{{ dict.getLabel('productRepaymentTimeline', detail.auditLifespan) }}
|
|
</el-form-item>
|
|
</template>
|
|
<el-form-item label="操作时间">{{ detail.auditTime }}</el-form-item>
|
|
</el-row>
|
|
<el-row>
|
|
<el-form-item v-if="detail.status==2" label="备注">{{ detail.auditDescription }}</el-form-item>
|
|
</el-row>
|
|
</template>
|
|
</ai-card>
|
|
</el-form>
|
|
</template>
|
|
</ai-detail>
|
|
<ai-dialog :visible.sync="dialog" title="审批" @closed="form={}" @onConfirm="submitAudit" width="560px">
|
|
<el-form :model="form" :rules="rules" ref="AuditForm" size="small" label-width="120px">
|
|
<el-form-item label="审批结果" prop="auditStatus">
|
|
<ai-select v-model="form.auditStatus" :selectList="dict.getDict('enterpriseAuditStatus')"/>
|
|
</el-form-item>
|
|
<template v-if="form.auditStatus==1">
|
|
<el-form-item label="放款金额(万)" prop="amount">
|
|
<el-input v-model="form.amount" placeholder="请输入"/>
|
|
</el-form-item>
|
|
<el-form-item label="使用期限" prop="auditLifespan">
|
|
<ai-select v-model="form.auditLifespan" placeholder="请选择"
|
|
:selectList="dict.getDict('productRepaymentTimeline')"/>
|
|
</el-form-item>
|
|
<el-form-item label="放款日期" prop="loanDate">
|
|
<el-date-picker v-model="form.loanDate" placeholder="请选择" clearable value-format="yyyy-MM-dd"/>
|
|
</el-form-item>
|
|
</template>
|
|
<el-form-item v-else-if="form.auditStatus==2" label="审批意见" prop="auditDescription">
|
|
<el-input type="textarea" v-model="form.auditDescription" placeholder="请输入" maxlength="200" show-word-limit/>
|
|
</el-form-item>
|
|
</el-form>
|
|
</ai-dialog>
|
|
<ai-dialog
|
|
class="dialog"
|
|
:title="info.enterpriseName"
|
|
:visible.sync="isShow"
|
|
@close="isShow = false"
|
|
@onConfirm="isShow = false"
|
|
width="1200px">
|
|
<div class="top">
|
|
<div class="top-left">{{ info.subEnterpriseName }}</div>
|
|
<div class="top-right">
|
|
<div class="top-right__top">
|
|
<h2>{{ info.enterpriseName }}</h2>
|
|
<!-- <div class="right">
|
|
<span>下载报告</span>
|
|
</div> -->
|
|
</div>
|
|
<div class="top-right__bottom">
|
|
<ai-wrapper
|
|
label-width="130px">
|
|
<ai-info-item label="法人姓名:"><span style="color: #1890FF;">{{ info.legalPersonName }}</span></ai-info-item>
|
|
<ai-info-item label="企业类型:" :value="$dict.getLabel('enterpriseType', info.enterpriseType)"></ai-info-item>
|
|
<ai-info-item label="统一社会信用代码:" :value="info.unifiedCode"></ai-info-item>
|
|
<ai-info-item label="地址:" isLine :value="info.areaName + info.address"></ai-info-item>
|
|
<ai-info-item label="经营范围:" isLine :value="info.businessScope"></ai-info-item>
|
|
</ai-wrapper>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="bottom">
|
|
<div class="tab">
|
|
<span :class="[currIndex === 0 ? 'active' : '']" @click="currIndex = 0">行政许可</span>
|
|
<span :class="[currIndex === 1 ? 'active' : '']" @click="currIndex = 1">行政处罚</span>
|
|
<span :class="[currIndex === 2 ? 'active' : '']" @click="currIndex = 2">良好信息</span>
|
|
<span :class="[currIndex === 3 ? 'active' : '']" @click="currIndex = 3">失信信息</span>
|
|
</div>
|
|
<div class="table">
|
|
<ai-table
|
|
v-show="currIndex === 0"
|
|
:tableData="info.adminstrativeLicenseList"
|
|
:col-configs="colConfigs1"
|
|
:isShowPagination="false"
|
|
border
|
|
tableSize="small"
|
|
@getList="() => {}">
|
|
</ai-table>
|
|
<ai-table
|
|
v-show="currIndex === 1"
|
|
:tableData="info.administrativeSanctionList"
|
|
:col-configs="colConfigs2"
|
|
:isShowPagination="false"
|
|
border
|
|
tableSize="small"
|
|
@getList="() => {}">
|
|
</ai-table>
|
|
<ai-table
|
|
v-show="currIndex === 2"
|
|
:tableData="info.taxInfoList"
|
|
:col-configs="colConfigs3"
|
|
:isShowPagination="false"
|
|
border
|
|
tableSize="small"
|
|
@getList="() => {}">
|
|
</ai-table>
|
|
<ai-table
|
|
v-show="currIndex === 3"
|
|
:tableData="info.dishonestPersonList"
|
|
:col-configs="colConfigs4"
|
|
:isShowPagination="false"
|
|
border
|
|
tableSize="small"
|
|
@getList="() => {}">
|
|
</ai-table>
|
|
</div>
|
|
</div>
|
|
</ai-dialog>
|
|
</section>
|
|
</template>
|
|
|
|
<script>
|
|
import {mapState} from "vuex";
|
|
|
|
export default {
|
|
name: "loanDetail",
|
|
props: {
|
|
instance: Function,
|
|
dict: Object,
|
|
permissions: Function
|
|
},
|
|
computed: {
|
|
...mapState(['user']),
|
|
isFinanceAdmin() {
|
|
return !!this.user.financeUser?.id
|
|
},
|
|
isAuthing() {
|
|
return this.detail.status == "0"
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
dialog: false,
|
|
detail: {},
|
|
form: {},
|
|
rules: {
|
|
auditStatus: [{required: true, message: "请选择 审批结果"}],
|
|
amount: [
|
|
{required: true, message: "请输入 放款金额"},
|
|
{pattern: /\d+/, message: "请输入 正确的放款金额"},
|
|
],
|
|
auditLifespan: [{required: true, message: "请选择 使用期限"}],
|
|
loanDate: [{required: true, message: "请选择 放款日期"}],
|
|
auditDescription: [{required: true, message: "请输入 审批意见"}],
|
|
},
|
|
info: {},
|
|
currIndex: 0,
|
|
isShow: false,
|
|
colConfigs1: [
|
|
{ prop: 'licenseCode', label: '行政许可决定文书号' },
|
|
{ prop: 'decisionDate', align: 'center', label: '许可决定日期' },
|
|
{ prop: 'endDate', align: 'center', label: '许可有效期至' },
|
|
{ prop: 'licenseOrganization', align: 'center', label: '许可机关' },
|
|
{ prop: 'licenseContent', align: 'center', label: '许可内容' },
|
|
{ prop: 'createTime', align: 'center', label: '数据更新时间' }
|
|
],
|
|
colConfigs2: [
|
|
{ prop: 'sanctionCode', width: '190', label: '行政处罚决定文书号' },
|
|
{ prop: 'sanctionDate', align: 'center', label: '处罚决定日期' },
|
|
{ prop: 'sanctionType', align: 'center', label: '处罚类型', formart: v => this.$dict.getLabel('administrativeSanctionType', v) },
|
|
{ prop: 'sanctionContent', align: 'center', label: '处罚内容' },
|
|
{ prop: 'sanctionBasis', align: 'center', label: '处罚依据' },
|
|
{ prop: 'sanctionOrganization', align: 'center', label: '处罚机关' },
|
|
{ prop: 'createTime', align: 'center', label: '数据更新时间' }
|
|
],
|
|
colConfigs3: [
|
|
{ prop: 'taxpayer', label: '纳税人名称' },
|
|
{ prop: 'taxpayerNumber', align: 'center', label: '纳税人识别号' },
|
|
{ prop: 'taxLevel', align: 'center', label: '纳税人等级' },
|
|
{ prop: 'taxYear', align: 'center', label: '年份' },
|
|
{ prop: 'evaluationUnit', align: 'center', label: '评价单位' },
|
|
{ prop: 'createTime', align: 'center', label: '数据更新时间' }
|
|
],
|
|
colConfigs4: [
|
|
{ prop: 'executionCode', label: '执行案号' },
|
|
{ prop: 'executionTime', align: 'center', label: '执行时间' },
|
|
{ prop: 'dishonestFact', align: 'center', label: '失信事实' },
|
|
{ prop: 'executionSituation', align: 'center', label: '履行情况', formart: v => this.$dict.getLabel('dishonestPersonSituation', v) },
|
|
{ prop: 'executionCourt', align: 'center', label: '执行法院' },
|
|
{ prop: 'executionTime', align: 'center', label: '数据更新时间' }
|
|
],
|
|
}
|
|
},
|
|
methods: {
|
|
getDetail() {
|
|
let {id} = this.$route.query
|
|
this.instance.post("/appfinancialloanapply/queryDetailById", null, {
|
|
params: {id}
|
|
}).then(res => {
|
|
if (res?.data) {
|
|
this.detail = res.data
|
|
if(this.detail.enterpriseId) {
|
|
this.getCompanyInfo()
|
|
}
|
|
}
|
|
})
|
|
},
|
|
getCompanyInfo() {
|
|
this.instance.post(`/appportaluserenterprise/queryCreditEnterpriseDetailById?id=${this.detail.enterpriseId}`, null, {
|
|
withoutToken: true
|
|
}).then(res => {
|
|
if (res.code === 0) {
|
|
this.info = res.data
|
|
this.info.subEnterpriseName = res.data.enterpriseName.substr(0, 4)
|
|
}
|
|
})
|
|
},
|
|
submitAudit() {
|
|
this.$refs.AuditForm.validate(v => {
|
|
if (v) {
|
|
let {id} = this.detail
|
|
this.instance.post("/appfinancialloanapply/auditLoanApply", null, {
|
|
params: {id, ...this.form}
|
|
}).then(res => {
|
|
if (res?.code == 0) {
|
|
this.dialog = false
|
|
this.$message.success("提交成功!")
|
|
this.getDetail()
|
|
}
|
|
})
|
|
}
|
|
})
|
|
}
|
|
},
|
|
created() {
|
|
this.dict.load("auditStatus", "productRepaymentTimeline", "financialFundPurpose", "enterpriseAuditStatus", "financialLoanApplyStatus","financialOrganizationType")
|
|
this.getDetail()
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.loanDetail {
|
|
height: 100%;
|
|
|
|
.flexWrap {
|
|
flex-wrap: wrap;
|
|
|
|
.el-form-item {
|
|
width: 50%;
|
|
|
|
.el-link {
|
|
margin-left: 16px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.el-date-editor {
|
|
width: 100%;
|
|
}
|
|
|
|
.dialog {
|
|
.top {
|
|
display: flex;
|
|
margin-bottom: 20px;
|
|
padding: 34px 30px 16px;
|
|
border: 1px solid #EEEEEE;
|
|
border-radius: 4px;
|
|
|
|
.top-left {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-shrink: 1;
|
|
width: 88px;
|
|
height: 87px;
|
|
line-height: 1.3;
|
|
margin-right: 31px;
|
|
padding: 0 16px;
|
|
text-align: justify;
|
|
background: #8CA3CD;
|
|
color: #FFFFFF;
|
|
font-size: 22px;
|
|
letter-spacing: 6px;
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.top-right {
|
|
flex: 1;
|
|
|
|
.top-right__top {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 27px;
|
|
|
|
h2 {
|
|
color: #333333;
|
|
font-size: 22px;
|
|
}
|
|
|
|
.right {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 97px;
|
|
height: 32px;
|
|
background: #E8F4FF;
|
|
border: 1px solid #A3D3FF;
|
|
border-radius: 3px;
|
|
color: #1890FF;
|
|
font-size: 13px;
|
|
cursor: pointer;
|
|
|
|
&:hover {
|
|
opacity: 0.6;
|
|
}
|
|
}
|
|
}
|
|
|
|
.top-right__bottom {
|
|
padding: 16px 10px 10px 0;
|
|
background: #F6FBFF;
|
|
}
|
|
}
|
|
}
|
|
|
|
.bottom {
|
|
padding-bottom: 20px;
|
|
border: 1px solid #DCDFE6;
|
|
border-radius: 4px;
|
|
|
|
.tab {
|
|
display: flex;
|
|
align-items: center;
|
|
height: 60px;
|
|
margin-bottom: 15px;
|
|
background: #FAFAFA;
|
|
border-radius: 4px;
|
|
|
|
span {
|
|
flex: 1;
|
|
height: 100%;
|
|
line-height: 60px;
|
|
text-align: center;
|
|
color: #555555;
|
|
font-size: 16px;
|
|
cursor: pointer;
|
|
border-bottom: 1px solid #DCDFE6;
|
|
border-right: 1px solid #DCDFE6;
|
|
transition: all ease 0.3s;
|
|
user-select: none;
|
|
|
|
&:last-child {
|
|
border-right: none;
|
|
}
|
|
|
|
&.active {
|
|
border-bottom: 1px solid transparent;
|
|
background: #fff;
|
|
color: #1890FF;
|
|
}
|
|
}
|
|
}
|
|
|
|
.table {
|
|
padding: 0 16px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style>
|