|
|
|
<template>
|
|
|
|
<div>
|
|
|
|
<el-tabs v-model="curTab"
|
|
|
|
@tab-click="tabChange">
|
|
|
|
<el-tab-pane label="配置风控"
|
|
|
|
name="tab1">
|
|
|
|
<el-form ref="formRef"
|
|
|
|
:model="form"
|
|
|
|
label-width="120px"
|
|
|
|
label-suffix=":"
|
|
|
|
class="form h-[calc(100vh-230px)] pr-1 overflow-auto"
|
|
|
|
status-icon>
|
|
|
|
<!-- <div class="h-[calc(100vh-170px)] pr-1 overflow-auto"> -->
|
|
|
|
<div class="step">
|
|
|
|
<h6 class="step-name mb-7">办理账户</h6>
|
|
|
|
<el-form-item label="提供材料"
|
|
|
|
prop="accountMaterials">
|
|
|
|
<div>
|
|
|
|
<div class="radio-wrap flex-col items-start mb-1">
|
|
|
|
<el-radio-group v-model="form.provideMaterialSelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers"
|
|
|
|
:key="i"
|
|
|
|
:label="item.id">{{ item.name }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
<template v-if="form.provideMaterialSelectedStatus === 797">
|
|
|
|
<p class="tips">选择需要提供的申请人材料(至少选一样)</p>
|
|
|
|
<el-checkbox-group v-if="config.length"
|
|
|
|
v-model="form.accountMaterials">
|
|
|
|
<el-checkbox v-for="(item, i) in config[0]?.recordChildren[0]?.recordChildren[1]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</template>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="发放账户"
|
|
|
|
prop="sendingAccount">
|
|
|
|
<div>
|
|
|
|
<div class="radio-wrap flex-col items-start">
|
|
|
|
<el-radio-group v-if="config.length"
|
|
|
|
v-model="form.issueAccountSelectStatus">
|
|
|
|
<el-radio v-for="(item, i) in config[0]?.recordChildren[1]?.recordChildren[1]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
<template v-if="form.issueAccountSelectStatus === 801 && config.length">
|
|
|
|
<p class="tips">选择需要发放的账户(至少选一样)</p>
|
|
|
|
|
|
|
|
<el-checkbox-group v-model="form.sendingAccount">
|
|
|
|
<el-checkbox v-for="(item, i) in config[0]?.recordChildren[1]?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
</div>
|
|
|
|
<div class="step">
|
|
|
|
<h6 class="step-name mb-7">贷款申请</h6>
|
|
|
|
<el-form-item label="申请方式"
|
|
|
|
prop="loanApplicationMethod">
|
|
|
|
<p class="mr-5 text-xs text-[#666]">选择申请方式(至少选一样)</p>
|
|
|
|
<el-checkbox-group v-if="config.length"
|
|
|
|
style="font-size: 14px"
|
|
|
|
v-model="form.loanApplicationMethod">
|
|
|
|
<el-checkbox v-for="(item, i) in config[1]?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="提供材料"
|
|
|
|
prop="borrowerMaterial">
|
|
|
|
<div class="flex-1">
|
|
|
|
<div>
|
|
|
|
<p class="field-name mb-0">借款人材料</p>
|
|
|
|
<div class="radio-wrap flex-col items-start">
|
|
|
|
<el-radio-group v-model="form.borrowerMaterialSelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers"
|
|
|
|
:key="i"
|
|
|
|
:label="item.id">{{ item.name }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div v-if="form.borrowerMaterialSelectedStatus === 797">
|
|
|
|
<p class="my-2 text-xs text-[#666]">选择需要提供的借款人材料(至少选一样)</p>
|
|
|
|
<el-checkbox-group v-if="config.length"
|
|
|
|
v-model="form.borrowerMaterial"
|
|
|
|
@change="denyAll('borrowerMaterial', 770)">
|
|
|
|
<el-checkbox v-for="(item, i) in config[1]?.recordChildren[1]?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- 企业 -->
|
|
|
|
<template v-if="info.productType">
|
|
|
|
<p class="field-name mt-5">企业材料</p>
|
|
|
|
<div>
|
|
|
|
<div class="radio-wrap flex-col items-start mb-2">
|
|
|
|
<el-radio-group v-model="form.enterpriseMaterialSelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers"
|
|
|
|
:key="i"
|
|
|
|
:label="item.id">{{ item.name }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<template v-if="form.enterpriseMaterialSelectedStatus === 797">
|
|
|
|
<p class="tips">选择需要提供的企业材料(至少选一样)</p>
|
|
|
|
<el-checkbox-group v-if="config.length"
|
|
|
|
v-model="form.enterpriseMaterial">
|
|
|
|
<el-checkbox v-for="(item, i) in config[1]?.recordChildren[2]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</template>
|
|
|
|
</div>
|
|
|
|
<p class="field-name mt-5">抵押物</p>
|
|
|
|
<div>
|
|
|
|
<div class="radio-wrap flex-col items-start mb-2">
|
|
|
|
<el-radio-group v-model="form.mortgagedPropertySelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers"
|
|
|
|
:key="i"
|
|
|
|
:label="item.id">{{ item.name }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
<template v-if="form.mortgagedPropertySelectedStatus === 797">
|
|
|
|
<p class="tips">选择需要提供的抵押物材料(至少选一样)</p>
|
|
|
|
<el-checkbox-group v-if="config.length"
|
|
|
|
v-model="form.collateral">
|
|
|
|
<el-checkbox v-for="(item, i) in config[1]?.recordChildren[3]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</template>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
<!-- 个人 -->
|
|
|
|
<template v-else>
|
|
|
|
<p class="field-name mt-5 mb-0">配偶材料</p>
|
|
|
|
<div>
|
|
|
|
<div class="radio-wrap flex-col items-start mb-1">
|
|
|
|
<el-radio-group v-model="form.mateMaterialSelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers"
|
|
|
|
:key="i"
|
|
|
|
:label="item.id">{{ item.name }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<template v-if="form.mateMaterialSelectedStatus === 797">
|
|
|
|
<p class="tips">选择需要提供的配偶材料(至少选一样)</p>
|
|
|
|
<el-checkbox-group v-if="config.length"
|
|
|
|
v-model="form.mateMaterial"
|
|
|
|
@change="denyAll('mateMaterial', 350)">
|
|
|
|
<el-checkbox v-for="(item, i) in config[1]?.recordChildren[2]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</template>
|
|
|
|
</div>
|
|
|
|
<p class="field-name mt-5">经营类材料</p>
|
|
|
|
<div>
|
|
|
|
<div class="radio-wrap flex-col items-start mb-1">
|
|
|
|
<el-radio-group v-model="form.businessMaterialsSelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers"
|
|
|
|
:key="i"
|
|
|
|
:label="item.id">{{ item.name }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<template v-if="form.businessMaterialsSelectedStatus === 797">
|
|
|
|
<p class="tips">选择需要提供的经营类材料(至少选一样)</p>
|
|
|
|
<el-checkbox-group v-if="config.length"
|
|
|
|
v-model="form.businessMaterials"
|
|
|
|
@change="denyAll('businessMaterials', 351)">
|
|
|
|
<el-checkbox v-for="(item, i) in config[1]?.recordChildren[3]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</template>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
<p class="field-name mt-5">补充材料</p>
|
|
|
|
<div>
|
|
|
|
<div class="radio-wrap flex-col items-start mb-1">
|
|
|
|
<el-radio-group v-model="form.supplementMaterialSelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers"
|
|
|
|
:key="i"
|
|
|
|
:label="item.id">{{ item.name }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<template v-if="form.supplementMaterialSelectedStatus === 797">
|
|
|
|
<p class="tips">选择需要提供的补充材料(至少选一样)</p>
|
|
|
|
<el-checkbox-group v-if="config.length"
|
|
|
|
v-model="form.supplementaryMaterials"
|
|
|
|
@change="denyAll('supplementaryMaterials', 352)">
|
|
|
|
<el-checkbox v-for="(item, i) in config[1]?.recordChildren[4]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</template>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
</div>
|
|
|
|
<div class="step">
|
|
|
|
<h6 class="step-name mb-7">系统跑批准入风控策略</h6>
|
|
|
|
<el-form-item label="跑批对象"
|
|
|
|
prop="runBatchObject">
|
|
|
|
<div>
|
|
|
|
<div class="radio-wrap flex-col items-start mb-2">
|
|
|
|
<el-radio-group v-if="config.length"
|
|
|
|
v-model="form.runBatchObjectSelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in config[2]?.recordChildren[0]?.recordChildren[1]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
<template v-if="form.runBatchObjectSelectedStatus === 803">
|
|
|
|
<p class="tips">选择需要跑批的对象(至少选一样)</p>
|
|
|
|
<el-checkbox-group v-if="config.length"
|
|
|
|
v-model="form.runBatchObject">
|
|
|
|
<el-checkbox v-for="(item, i) in config[2]?.recordChildren[0]?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</template>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="准入策略"
|
|
|
|
label-width="130px">
|
|
|
|
<div v-if="config.length && form.bankRiskControlAllocationTacticsList.length"
|
|
|
|
class="flex-1">
|
|
|
|
<div v-for="(item, i) in config[2]?.recordChildren[1]?.recordChildren"
|
|
|
|
:key="i"
|
|
|
|
class="flex items-center mb-3">
|
|
|
|
<div class="radio-wrap">
|
|
|
|
<span class="label min-w-[130px]">{{ item.name }}</span>
|
|
|
|
<el-radio-group v-model="form.bankRiskControlAllocationTacticsList[i].tacticsSelectedStatus"
|
|
|
|
@change="getStrategy">
|
|
|
|
<el-radio v-for="(option, j) in item?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="j"
|
|
|
|
:label="option.itemId">{{ option.options }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<template v-if="form.bankRiskControlAllocationTacticsList[i].tacticsSelectedStatus === 803">
|
|
|
|
<el-select class="ml-5 mr-3"
|
|
|
|
v-model="form.bankRiskControlAllocationTacticsList[i].tacticsId"
|
|
|
|
placeholder="请选择">
|
|
|
|
<el-option v-for="(item, i) in govList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.strategyName"
|
|
|
|
:value="item.governmentId" />
|
|
|
|
</el-select>
|
|
|
|
|
|
|
|
<img v-if="form.bankRiskControlAllocationTacticsList[i].tacticsId"
|
|
|
|
src="@/assets/svgs/preview.svg"
|
|
|
|
alt=""
|
|
|
|
class="cursor-pointer"
|
|
|
|
@click="preview(form.bankRiskControlAllocationTacticsList[i].tacticsId, '150')">
|
|
|
|
</template>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="信用评分策略"
|
|
|
|
label-width="130px"
|
|
|
|
prop="personalCreditScoringStrategySelectedStatus">
|
|
|
|
<div v-if="config.length"
|
|
|
|
class="flex-1">
|
|
|
|
<div v-for="(item, i) in config[2]?.recordChildren[2]?.recordChildren"
|
|
|
|
:key="i"
|
|
|
|
class="flex items-center mb-3">
|
|
|
|
<div class="radio-wrap">
|
|
|
|
<span class="label">{{ item.name }}</span>
|
|
|
|
<el-radio-group v-model="form.creditScoringStrategyList[i].tacticsSelectedStatus">
|
|
|
|
<el-radio v-for="(option, j) in item?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="j"
|
|
|
|
:label="option.itemId">{{ option.options }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<el-select v-if="form.creditScoringStrategyList[i].tacticsSelectedStatus === 803"
|
|
|
|
class="ml-5"
|
|
|
|
v-model="form.creditScoringStrategyList[i].tacticsId"
|
|
|
|
placeholder="请选择">
|
|
|
|
<el-option v-for="item in credits.filter(e => !e.scoringObject)"
|
|
|
|
:key="item"
|
|
|
|
:value="item.scoreCardName" />
|
|
|
|
</el-select>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="风险度策略">
|
|
|
|
<div class="flex-1">
|
|
|
|
<div class="flex items-center mb-3">
|
|
|
|
<div class="radio-wrap">
|
|
|
|
<span class="label">个人风险度策略</span>
|
|
|
|
<el-radio-group v-model="form.personalRiskDegreeStrategySelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers1"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="flex items-center mb-3">
|
|
|
|
<div class="radio-wrap">
|
|
|
|
<span class="label">企业风险度策略</span>
|
|
|
|
<el-radio-group v-model="form.enterpriseRiskDegreeStrategySelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers1"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="利率定价模型"
|
|
|
|
label-width="130px">
|
|
|
|
<div v-if="config.length"
|
|
|
|
class="flex-1">
|
|
|
|
<div v-for="(item, i) in config[2]?.recordChildren[4]?.recordChildren.slice(0,2)"
|
|
|
|
:key="i"
|
|
|
|
class="radio-wrap mb-3">
|
|
|
|
<span class="label">{{ item.name }}</span>
|
|
|
|
<el-radio-group v-model="form.interestRatePricingModelList[i].tacticsSelectedStatus">
|
|
|
|
<el-radio v-for="(option, j) in whethers1"
|
|
|
|
:key="j"
|
|
|
|
:label="option.itemId">{{ option.options }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
<el-select v-if="form.interestRatePricingModelList[i].tacticsSelectedStatus === 803"
|
|
|
|
class="ml-5"
|
|
|
|
v-model="form.interestRatePricingModelList[i].tacticsId"
|
|
|
|
placeholder="请选择">
|
|
|
|
<el-option v-for="item in config[2]?.recordChildren[4]?.recordChildren[1]?.recordChildren[1]?.subject?.itemList"
|
|
|
|
:key="item.itemId"
|
|
|
|
:label="item.options"
|
|
|
|
:value="item.itemId" />
|
|
|
|
</el-select>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="radio-wrap items-start mb-3">
|
|
|
|
<span class="label">企业额度模型</span>
|
|
|
|
<el-radio-group v-model="form.enterpriseQuotaModelSelectedStatus">
|
|
|
|
<el-radio v-for="(option, j) in whethers1"
|
|
|
|
:key="j"
|
|
|
|
:label="option.itemId">{{ option.options }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
|
|
|
|
<el-checkbox-group v-if="form.enterpriseQuotaModelSelectedStatus === 803"
|
|
|
|
v-model="form.enterpriseQuotaModel"
|
|
|
|
class="ml-5">
|
|
|
|
<el-checkbox v-for="(item, i) in config[2]?.recordChildren[4]?.recordChildren[2]?.recordChildren[1]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId"
|
|
|
|
class="flex">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="radio-wrap items-start mb-3">
|
|
|
|
<span class="label">企业利率模型</span>
|
|
|
|
<el-radio-group v-model="form.interestRatePricingModelList[2].tacticsSelectedStatus">
|
|
|
|
<el-radio v-for="(option, j) in whethers1"
|
|
|
|
:key="j"
|
|
|
|
:label="option.itemId">{{ option.options }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
<el-select v-if="form.interestRatePricingModelList[2].tacticsSelectedStatus === 803"
|
|
|
|
class="ml-5"
|
|
|
|
v-model="form.interestRatePricingModelList[2].tacticsId"
|
|
|
|
placeholder="请选择">
|
|
|
|
<el-option v-for="item in config[2]?.recordChildren[4]?.recordChildren[1]?.recordChildren[1]?.subject?.itemList"
|
|
|
|
:key="item.itemId"
|
|
|
|
:label="item.options"
|
|
|
|
:value="item.itemId" />
|
|
|
|
</el-select>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
</div>
|
|
|
|
<div class="step">
|
|
|
|
<h6 class="step-name mb-7">尽职调查</h6>
|
|
|
|
<el-form-item label="尽调方式"
|
|
|
|
prop="dueDiligenceMode">
|
|
|
|
<div>
|
|
|
|
<p class="tips leading-[32px]">选择尽调方式(至少选一样)</p>
|
|
|
|
<el-checkbox-group v-if="config.length"
|
|
|
|
v-model="form.dueDiligenceMode">
|
|
|
|
<el-checkbox v-for="(item, i) in config[3]?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="尽调内容"
|
|
|
|
prop="dueDiligenceContent">
|
|
|
|
<div>
|
|
|
|
<p class="tips leading-[32px]">选择尽调内容(至少选一样)</p>
|
|
|
|
<el-checkbox-group v-if="config.length"
|
|
|
|
v-model="form.dueDiligenceContent">
|
|
|
|
<el-checkbox v-for="(item, i) in config[3]?.recordChildren[1]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
</div>
|
|
|
|
<div class="step">
|
|
|
|
<h6 class="step-name mb-7">贷款审查</h6>
|
|
|
|
<el-form-item label="审查内容"
|
|
|
|
prop="reviewContent">
|
|
|
|
<div>
|
|
|
|
<p class="tips leading-[32px]">选择审查材料(至少选一样)</p>
|
|
|
|
<el-checkbox-group v-if="config.length"
|
|
|
|
v-model="form.reviewContent">
|
|
|
|
<el-checkbox v-for="(item, i) in config[4]?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="审查签字"
|
|
|
|
prop="reviewSignature">
|
|
|
|
<div>
|
|
|
|
<p class="tips leading-[32px]">选择签字表单(至少选一样)</p>
|
|
|
|
<el-radio v-model="form.reviewSignature"
|
|
|
|
:label="info.productType ? 262 : 115">《用信调查申报表》</el-radio>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
</div>
|
|
|
|
<div class="step">
|
|
|
|
<h6 class="step-name mb-7">贷款审批</h6>
|
|
|
|
<el-form-item label="审批内容"
|
|
|
|
prop="reviewApproveContent">
|
|
|
|
<div>
|
|
|
|
<p class="tips leading-[32px]">选择审批材料(至少选一样)</p>
|
|
|
|
<el-checkbox-group v-if="config.length"
|
|
|
|
v-model="form.reviewApproveContent">
|
|
|
|
<el-checkbox v-for="(item, i) in config[5]?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="i"
|
|
|
|
:label="item.itemId">{{ item.options }}</el-checkbox>
|
|
|
|
</el-checkbox-group>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="审批签字"
|
|
|
|
prop="approvalSignature">
|
|
|
|
<div>
|
|
|
|
<p class="tips leading-[32px]">选择签字表单(至少选一样)</p>
|
|
|
|
<el-radio v-model="form.approvalSignature"
|
|
|
|
:label="info.productType ? 264 : 117">《用信调查申报表》</el-radio>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
</div>
|
|
|
|
<div class="step">
|
|
|
|
<h6 class="step-name mb-7">签订合同</h6>
|
|
|
|
<el-form-item label="提供的材料"
|
|
|
|
prop="contractMaterials">
|
|
|
|
<div>
|
|
|
|
<div class="radio-wrap mr-5">
|
|
|
|
<el-radio-group v-model="form.contractSupplyMaterialsSelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers"
|
|
|
|
:key="i"
|
|
|
|
:label="item.id">{{ item.name }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
<el-radio v-if="form.contractSupplyMaterialsSelectedStatus === 797"
|
|
|
|
v-model="form.contractMaterials"
|
|
|
|
:label="info.productType ? 265 : 118">抵押物所有权证明</el-radio>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="合同模板">
|
|
|
|
<div class="flex-1">
|
|
|
|
<div class="flex items-center mb-3">
|
|
|
|
<div class="radio-wrap">
|
|
|
|
<span class="label">借贷合同</span>
|
|
|
|
<el-radio-group v-model="form.loanContractSelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers"
|
|
|
|
:key="i"
|
|
|
|
:label="item.id">{{ item.name }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<el-select v-if="form.loanContractSelectedStatus === 797 && config.length"
|
|
|
|
class="ml-5"
|
|
|
|
v-model="form.loanContract"
|
|
|
|
placeholder="请选择">
|
|
|
|
<el-option v-for="item in config[6]?.recordChildren[1]?.recordChildren[0]?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="item.itemId"
|
|
|
|
:label="item.options"
|
|
|
|
:value="item.itemId" />
|
|
|
|
</el-select>
|
|
|
|
</div>
|
|
|
|
<div class="flex items-center mb-3">
|
|
|
|
<div class="radio-wrap">
|
|
|
|
<span class="label">抵押合同</span>
|
|
|
|
<el-radio-group v-model="form.mortgageContractSelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers"
|
|
|
|
:key="i"
|
|
|
|
:label="item.id">{{ item.name }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<el-select v-if="form.mortgageContractSelectedStatus === 797 && config.length"
|
|
|
|
class="ml-5"
|
|
|
|
v-model="form.mortgageContract"
|
|
|
|
placeholder="请选择">
|
|
|
|
<el-option v-for="item in config[6]?.recordChildren[1]?.recordChildren[1]?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="item.itemId"
|
|
|
|
:label="item.options"
|
|
|
|
:value="item.itemId" />
|
|
|
|
</el-select>
|
|
|
|
</div>
|
|
|
|
<div class="flex items-center mb-3">
|
|
|
|
<div class="radio-wrap">
|
|
|
|
<span class="label">质押合同</span>
|
|
|
|
<el-radio-group v-model="form.pledgeContractSelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers"
|
|
|
|
:key="i"
|
|
|
|
:label="item.id">{{ item.name }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
<el-select v-if="form.pledgeContractSelectedStatus === 797 && config.length"
|
|
|
|
class="ml-5"
|
|
|
|
v-model="form.pledgeContract"
|
|
|
|
placeholder="请选择">
|
|
|
|
<el-option v-for="item in config[6]?.recordChildren[1]?.recordChildren[2]?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="item.itemId"
|
|
|
|
:label="item.options"
|
|
|
|
:value="item.itemId" />
|
|
|
|
</el-select>
|
|
|
|
</div>
|
|
|
|
<div class="flex items-center">
|
|
|
|
<div class="radio-wrap">
|
|
|
|
<span class="label">担保合同</span>
|
|
|
|
<el-radio-group v-model="form.guaranteeContractSelectedStatus">
|
|
|
|
<el-radio v-for="(item, i) in whethers"
|
|
|
|
:key="i"
|
|
|
|
:label="item.id">{{ item.name }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</div>
|
|
|
|
<el-select v-if="form.guaranteeContractSelectedStatus === 797 && config.length"
|
|
|
|
class="ml-5"
|
|
|
|
v-model="form.guaranteeContract"
|
|
|
|
placeholder="请选择">
|
|
|
|
<el-option v-for="item in config[6]?.recordChildren[1]?.recordChildren[3]?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="item.itemId"
|
|
|
|
:label="item.options"
|
|
|
|
:value="item.itemId" />
|
|
|
|
</el-select>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
</div>
|
|
|
|
<div class="step">
|
|
|
|
<h6 class="step-name mb-7">贷后管理</h6>
|
|
|
|
<el-form-item label="选择策略">
|
|
|
|
<div v-if="config.length"
|
|
|
|
class="flex-1">
|
|
|
|
<div v-for="(item, i) in config[7]?.recordChildren"
|
|
|
|
:key="i"
|
|
|
|
class="radio-wrap mb-3">
|
|
|
|
<span class="label min-w-[85px]">{{ item.name }}</span>
|
|
|
|
<el-radio-group v-model="form.postLoanSelectionStrategyList[i].tacticsSelectedStatus">
|
|
|
|
<el-radio v-for="(option, j) in item?.recordChildren[0]?.subject?.itemList"
|
|
|
|
:key="j"
|
|
|
|
:label="option.itemId">{{ option.options }}</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
<el-select v-if="form.postLoanSelectionStrategyList[i].tacticsSelectedStatus === 803"
|
|
|
|
class="ml-5"
|
|
|
|
v-model="form.postLoanSelectionStrategyList[i].tacticsId"
|
|
|
|
placeholder="请选择">
|
|
|
|
<el-option v-for="item in config[2]?.recordChildren[4]?.recordChildren[1]?.recordChildren[1]?.subject?.itemList"
|
|
|
|
:key="item.itemId"
|
|
|
|
:label="item.options"
|
|
|
|
:value="item.itemId" />
|
|
|
|
</el-select>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
</div>
|
|
|
|
</el-form>
|
|
|
|
<div class="forms step-form">
|
|
|
|
<div class="flex justify-end">
|
|
|
|
<div class="submit"
|
|
|
|
@click="submit(formRef)">完成,提交审批</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-tab-pane>
|
|
|
|
<el-tab-pane :label="info.approvalTime ? '产品详情' : '产品要素'"
|
|
|
|
name="tab2">
|
|
|
|
<div class="h-[calc(100vh-170px)] pr-1 overflow-auto">
|
|
|
|
<info />
|
|
|
|
</div>
|
|
|
|
</el-tab-pane>
|
|
|
|
</el-tabs>
|
|
|
|
|
|
|
|
<el-drawer v-model="visible"
|
|
|
|
title="查看政务黑名单策略"
|
|
|
|
size="100%"
|
|
|
|
custom-class="model-drawer">
|
|
|
|
<component :is="curPreview"
|
|
|
|
v-model:id="curPreviewId"
|
|
|
|
disabled />
|
|
|
|
</el-drawer>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
import { ref, reactive, computed, watch, defineAsyncComponent, getCurrentInstance } from 'vue';
|
|
|
|
import { ElMessage } from 'element-plus';
|
|
|
|
import type { TabsPaneContext, FormInstance } from 'element-plus';
|
|
|
|
import { findById, riskSave, riskUpdate, riskControlDetailsAreDisplayed } from '@/api/bank';
|
|
|
|
import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment';
|
|
|
|
import { listCredit, accessStrategyGovernmentBlacklistList } from '@/api/model';
|
|
|
|
import { useRouter, useRoute } from 'vue-router';
|
|
|
|
import { handleId, getIds, getUsername } from '@/utils/common';
|
|
|
|
import Info from './Info.vue';
|
|
|
|
import Cookies from 'js-cookie';
|
|
|
|
|
|
|
|
const emit = defineEmits(['getList']);
|
|
|
|
interface RuleForm {
|
|
|
|
provideMaterialSelectedStatus?: number;
|
|
|
|
accountMaterials?: number[];
|
|
|
|
approvalSignature?: number;
|
|
|
|
bankProductsId?: number;
|
|
|
|
borrowerMaterialSelectedStatus?: number;
|
|
|
|
borrowerMaterial?: number[];
|
|
|
|
businessMaterialsSelectedStatus?: number;
|
|
|
|
businessMaterials?: number[];
|
|
|
|
mortgagedPropertySelectedStatus?: number;
|
|
|
|
collateral?: number[];
|
|
|
|
contractSupplyMaterialsSelectedStatus?: number;
|
|
|
|
contractMaterials?: number;
|
|
|
|
corporateInterestRateModel?: number[];
|
|
|
|
dueDiligenceContent?: number[];
|
|
|
|
dueDiligenceMode?: number[];
|
|
|
|
enterpriseMaterialSelectedStatus?: number;
|
|
|
|
enterpriseMaterial?: number[];
|
|
|
|
guaranteeContractSelectedStatus?: number;
|
|
|
|
guaranteeContract?: number;
|
|
|
|
loanApplicationMethod?: number[];
|
|
|
|
loanContractSelectedStatus?: number;
|
|
|
|
loanContract?: number;
|
|
|
|
mateMaterialSelectedStatus?: number;
|
|
|
|
mateMaterial?: number[];
|
|
|
|
materialsForLoanApproval?: number[];
|
|
|
|
mortgageContractSelectedStatus?: number;
|
|
|
|
mortgageContract?: number;
|
|
|
|
pledgeContractSelectedStatus?: number;
|
|
|
|
pledgeContract?: number;
|
|
|
|
reviewApproveContent?: number[];
|
|
|
|
reviewContent?: number[];
|
|
|
|
reviewSignature?: number;
|
|
|
|
runBatchObjectSelectedStatus?: number;
|
|
|
|
runBatchObject?: number[];
|
|
|
|
issueAccountSelectStatus?: number;
|
|
|
|
sendingAccount?: number[];
|
|
|
|
supplementMaterialSelectedStatus?: number;
|
|
|
|
supplementaryMaterials?: number[];
|
|
|
|
bankRiskControlAllocationTacticsList: Record<string, any>[];
|
|
|
|
creditScoringStrategyList: Record<string, any>[];
|
|
|
|
interestRatePricingModelList: Record<string, any>[];
|
|
|
|
postLoanSelectionStrategyList: Record<string, any>[];
|
|
|
|
enterpriseRiskDegreeStrategySelectedStatus?: number;
|
|
|
|
personalRiskDegreeStrategySelectedStatus?: number;
|
|
|
|
enterpriseQuotaModelSelectedStatus?: number;
|
|
|
|
enterpriseQuotaModel?: number[];
|
|
|
|
}
|
|
|
|
const router = useRouter();
|
|
|
|
const route = useRoute();
|
|
|
|
const id = computed(() => +route.query.id);
|
|
|
|
const curTab = ref<string>(route.query.show ? 'tab2' : 'tab1');
|
|
|
|
const config = ref<any[]>([]);
|
|
|
|
const credits = ref<Record<string, any>[]>([]);
|
|
|
|
const info = ref<Record<string, any>>({});
|
|
|
|
const whethers = ref<Record<string, any>>([
|
|
|
|
{
|
|
|
|
id: 797,
|
|
|
|
name: '需要提供',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: 798,
|
|
|
|
name: '无需提供',
|
|
|
|
},
|
|
|
|
]);
|
|
|
|
const whethers1 = ref<Record<string, any>>([
|
|
|
|
{
|
|
|
|
itemId: 803,
|
|
|
|
options: '需要跑批',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
itemId: 804,
|
|
|
|
options: '无需跑批',
|
|
|
|
},
|
|
|
|
]);
|
|
|
|
const formRef = ref<FormInstance>();
|
|
|
|
const userName = ref<string>();
|
|
|
|
const curPreview = ref<string>('150');
|
|
|
|
const curPreviewId = ref<number>();
|
|
|
|
const visible = ref<boolean>(false);
|
|
|
|
const govList = ref<Record<string, any>[]>([]);
|
|
|
|
|
|
|
|
let form = reactive<RuleForm>({
|
|
|
|
...getIds(),
|
|
|
|
provideMaterialSelectedStatus: '',
|
|
|
|
accountMaterials: [],
|
|
|
|
approvalSignature: '',
|
|
|
|
bankProductsId: computed(() => +route.query.id),
|
|
|
|
borrowerMaterialSelectedStatus: '',
|
|
|
|
borrowerMaterial: [],
|
|
|
|
businessMaterialsSelectedStatus: '',
|
|
|
|
businessMaterials: [],
|
|
|
|
mortgagedPropertySelectedStatus: '',
|
|
|
|
collateral: [],
|
|
|
|
contractSupplyMaterialsSelectedStatus: '',
|
|
|
|
contractMaterials: '',
|
|
|
|
corporateInterestRateModel: [],
|
|
|
|
dueDiligenceContent: [],
|
|
|
|
dueDiligenceMode: [],
|
|
|
|
enterpriseMaterialSelectedStatus: '',
|
|
|
|
enterpriseMaterial: [],
|
|
|
|
guaranteeContractSelectedStatus: '',
|
|
|
|
guaranteeContract: '',
|
|
|
|
loanApplicationMethod: [],
|
|
|
|
loanContractSelectedStatus: '',
|
|
|
|
loanContract: '',
|
|
|
|
mateMaterialSelectedStatus: '',
|
|
|
|
mateMaterial: [],
|
|
|
|
materialsForLoanApproval: [],
|
|
|
|
mortgageContractSelectedStatus: '',
|
|
|
|
mortgageContract: '',
|
|
|
|
pledgeContractSelectedStatus: '',
|
|
|
|
pledgeContract: '',
|
|
|
|
reviewApproveContent: [],
|
|
|
|
reviewContent: [],
|
|
|
|
reviewSignature: '',
|
|
|
|
runBatchObjectSelectedStatus: '',
|
|
|
|
runBatchObject: [],
|
|
|
|
issueAccountSelectStatus: '',
|
|
|
|
sendingAccount: [],
|
|
|
|
supplementMaterialSelectedStatus: '',
|
|
|
|
supplementaryMaterials: [],
|
|
|
|
bankRiskControlAllocationTacticsList: [],
|
|
|
|
creditScoringStrategyList: [],
|
|
|
|
interestRatePricingModelList: [],
|
|
|
|
postLoanSelectionStrategyList: [],
|
|
|
|
enterpriseRiskDegreeStrategySelectedStatus: '',
|
|
|
|
personalRiskDegreeStrategySelectedStatus: '',
|
|
|
|
enterpriseQuotaModelSelectedStatus: '',
|
|
|
|
enterpriseQuotaModel: [],
|
|
|
|
});
|
|
|
|
|
|
|
|
const dynamicComponentMap = {
|
|
|
|
'150': defineAsyncComponent(() => import('../strategy/150/Detail.vue')),
|
|
|
|
// '151': defineAsyncComponent(() => import('./151.vue')),
|
|
|
|
// '152': defineAsyncComponent(() => import('./152.vue')),
|
|
|
|
// '153': defineAsyncComponent(() => import('./153.vue')),
|
|
|
|
// '154': defineAsyncComponent(() => import('./154.vue')),
|
|
|
|
// '155': defineAsyncComponent(() => import('./155.vue')),
|
|
|
|
// '156': defineAsyncComponent(() => import('./156.vue')),
|
|
|
|
// '148': defineAsyncComponent(() => import('./Credit.vue')),
|
|
|
|
// '702': defineAsyncComponent(() => import('./Risk1.vue')),
|
|
|
|
// '703': defineAsyncComponent(() => import('./Risk2.vue')),
|
|
|
|
// '704': defineAsyncComponent(() => import('./Risk3.vue')),
|
|
|
|
};
|
|
|
|
const app = getCurrentInstance().appContext.app;
|
|
|
|
for (const [name, asyncComponent] of Object.entries(dynamicComponentMap)) {
|
|
|
|
app.component(name, asyncComponent);
|
|
|
|
}
|
|
|
|
|
|
|
|
// tab切换回调
|
|
|
|
const tabChange = (tab: TabsPaneContext, event: Event) => {
|
|
|
|
console.log(tab, event);
|
|
|
|
};
|
|
|
|
// 策略列表
|
|
|
|
const getStrategy = async () => {
|
|
|
|
try {
|
|
|
|
const { page } = await accessStrategyGovernmentBlacklistList({ pageNum: 1, pageSize: 1000, keyWord: '', ...getIds() });
|
|
|
|
govList.value = page.records;
|
|
|
|
} finally {
|
|
|
|
}
|
|
|
|
};
|
|
|
|
// 配置项
|
|
|
|
const getConfig = async () => {
|
|
|
|
const { process } = await getProcessInformationBasedOnRoles(info.value.productType ? 71 : 70); // 个人70,企业71
|
|
|
|
config.value = process;
|
|
|
|
|
|
|
|
// 准入策略
|
|
|
|
if (!form.bankRiskControlAllocationTacticsList.length) {
|
|
|
|
process[2].recordChildren[1].recordChildren.map((e) => {
|
|
|
|
form.bankRiskControlAllocationTacticsList.push({
|
|
|
|
type: 1,
|
|
|
|
bankId: '',
|
|
|
|
id: '',
|
|
|
|
tacticsId: '',
|
|
|
|
tacticsPointId: e.id,
|
|
|
|
tacticsSelectedStatus: '',
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// 信用评分策略
|
|
|
|
if (!form.creditScoringStrategyList.length) {
|
|
|
|
process[2].recordChildren[2].recordChildren.map((e) => {
|
|
|
|
form.creditScoringStrategyList.push({
|
|
|
|
type: 2,
|
|
|
|
bankId: '',
|
|
|
|
id: '',
|
|
|
|
tacticsId: '',
|
|
|
|
tacticsPointId: e.id,
|
|
|
|
tacticsSelectedStatus: '',
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// 利率定价模型
|
|
|
|
if (!form.interestRatePricingModelList.length) {
|
|
|
|
process[2].recordChildren[4].recordChildren.map((e, i) => {
|
|
|
|
i !== 2 &&
|
|
|
|
form.interestRatePricingModelList.push({
|
|
|
|
type: 3,
|
|
|
|
bankId: '',
|
|
|
|
id: '',
|
|
|
|
tacticsId: '',
|
|
|
|
tacticsPointId: e.id,
|
|
|
|
tacticsSelectedStatus: '',
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// 贷后选择
|
|
|
|
if (!form.postLoanSelectionStrategyList.length) {
|
|
|
|
process[7].recordChildren.map((e) => {
|
|
|
|
form.postLoanSelectionStrategyList.push({
|
|
|
|
type: 4,
|
|
|
|
bankId: '',
|
|
|
|
id: '',
|
|
|
|
tacticsId: '',
|
|
|
|
tacticsPointId: e.id,
|
|
|
|
tacticsSelectedStatus: '',
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
if (form.bankRiskControlAllocationTacticsList[0].tacticsSelectedStatus === 803) {
|
|
|
|
getStrategy();
|
|
|
|
}
|
|
|
|
|
|
|
|
const { data } = await listCredit({
|
|
|
|
...getIds(),
|
|
|
|
pageNum: 1,
|
|
|
|
pageSize: 1000,
|
|
|
|
});
|
|
|
|
credits.value = [
|
|
|
|
{
|
|
|
|
scoringObject: 0,
|
|
|
|
scoreCardName: '个人信用评分策略',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
scoringObject: 0,
|
|
|
|
scoreCardName: '个人评分-评级贷',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
scoringObject: 0,
|
|
|
|
scoreCardName: '个人标准评分卡',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
scoringObject: 1,
|
|
|
|
scoreCardName: '企业标准评分卡',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
scoringObject: 1,
|
|
|
|
scoreCardName: '大型企业评分卡',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
scoringObject: 1,
|
|
|
|
scoreCardName: '小型企业评分卡',
|
|
|
|
},
|
|
|
|
...data,
|
|
|
|
];
|
|
|
|
};
|
|
|
|
// 详情
|
|
|
|
const getDetail = async () => {
|
|
|
|
userName.value = await getUsername();
|
|
|
|
if (id.value) {
|
|
|
|
try {
|
|
|
|
// 查询产品要素详情
|
|
|
|
const { data } = await findById(id.value);
|
|
|
|
info.value = data;
|
|
|
|
|
|
|
|
// 只返回id的详情
|
|
|
|
const res = await riskControlDetailsAreDisplayed(id.value);
|
|
|
|
const e = res.data;
|
|
|
|
if (e) {
|
|
|
|
e.enterpriseQuotaModel = e?.enterpriseQuotaModel?.split(',').map((e) => +e);
|
|
|
|
e.reviewSignature = e?.reviewSignature?.length ? e.reviewSignature[0] : '';
|
|
|
|
e.approvalSignature = e?.approvalSignature?.length ? e.approvalSignature[0] : '';
|
|
|
|
|
|
|
|
e.loanContract = e?.loanContract?.length ? e.loanContract[0] : '';
|
|
|
|
e.mortgageContract = e?.mortgageContract?.length ? e.mortgageContract[0] : '';
|
|
|
|
e.pledgeContract = e?.pledgeContract?.length ? e.pledgeContract[0] : '';
|
|
|
|
e.guaranteeContract = e?.guaranteeContract?.length ? e.guaranteeContract[0] : '';
|
|
|
|
e.contractMaterials = e.contractMaterials ? +e.contractMaterials : '';
|
|
|
|
form = Object.assign(form, e);
|
|
|
|
}
|
|
|
|
getConfig();
|
|
|
|
} finally {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
// 无需材料互斥(选择了无需的选项,则取消选择所有该字段的其他选项)
|
|
|
|
const denyAll = (field: string, denyId: number) => {
|
|
|
|
if (form[field].includes(denyId)) form[field] = [denyId];
|
|
|
|
};
|
|
|
|
watch(
|
|
|
|
() => route.query,
|
|
|
|
() => {
|
|
|
|
route.params.action === 'config' && getDetail();
|
|
|
|
},
|
|
|
|
{
|
|
|
|
immediate: true,
|
|
|
|
},
|
|
|
|
);
|
|
|
|
// 提交
|
|
|
|
const submit = async (formEl: FormInstance | undefined) => {
|
|
|
|
if (!formEl) return;
|
|
|
|
await formEl.validate(async (valid, fields) => {
|
|
|
|
if (valid) {
|
|
|
|
try {
|
|
|
|
const isEnterprise = info.value.productType === 1;
|
|
|
|
const param = JSON.parse(JSON.stringify(form));
|
|
|
|
|
|
|
|
if (param.provideMaterialSelectedStatus === 797 && !param.accountMaterials.length) return ElMessage.error('请选择需要提供的申请人材料');
|
|
|
|
if (param.issueAccountSelectStatus === 801 && !param.sendingAccount.length) return ElMessage.error('请选择需要发放的账户');
|
|
|
|
if (!param.loanApplicationMethod.length) return ElMessage.error('请选择申请方式');
|
|
|
|
if (param.borrowerMaterialSelectedStatus === 797 && !param.borrowerMaterial.length) return ElMessage.error('请选择借款人材料');
|
|
|
|
|
|
|
|
if (isEnterprise) {
|
|
|
|
// 企业
|
|
|
|
if (param.enterpriseMaterialSelectedStatus === 797 && !param.enterpriseMaterial.length) return ElMessage.error('请选择需要提供的企业材料');
|
|
|
|
if (param.mortgagedPropertySelectedStatus === 797 && !param.collateral.length) return ElMessage.error('请选择需要提供的抵押物材料');
|
|
|
|
} else {
|
|
|
|
// 个人
|
|
|
|
if (param.mateMaterialSelectedStatus === 797 && !param.mateMaterial.length) return ElMessage.error('请选择需要提供的配偶材料');
|
|
|
|
if (param.businessMaterialsSelectedStatus === 797 && !param.businessMaterials.length) return ElMessage.error('请选择需要提供的经营类材料');
|
|
|
|
}
|
|
|
|
|
|
|
|
if (param.supplementMaterialSelectedStatus === 797 && !param.supplementaryMaterials.length) return ElMessage.error('请选择需要提供的补充材料');
|
|
|
|
if (param.runBatchObjectSelectedStatus === 803 && !param.runBatchObject.length) return ElMessage.error('请选择需要跑批的对象');
|
|
|
|
|
|
|
|
const list1 = param.bankRiskControlAllocationTacticsList;
|
|
|
|
if (list1[0].tacticsSelectedStatus === 803 && !list1[0].tacticsId) return ElMessage.error('请选择政务黑名单策略');
|
|
|
|
if (list1[1].tacticsSelectedStatus === 803 && !list1[1].tacticsId) return ElMessage.error('请选择征信黑名单策略');
|
|
|
|
if (list1[2].tacticsSelectedStatus === 803 && !list1[2].tacticsId) return ElMessage.error('请选择商采黑名单策略');
|
|
|
|
if (list1[3].tacticsSelectedStatus === 803 && !list1[3].tacticsId) return ElMessage.error('请选择行内黑名单策略');
|
|
|
|
if (list1[4].tacticsSelectedStatus === 803 && !list1[4].tacticsId) return ElMessage.error('请选择企业黑名单策略');
|
|
|
|
if (list1[5].tacticsSelectedStatus === 803 && !list1[5].tacticsId) return ElMessage.error('请选择反欺诈策略');
|
|
|
|
if (list1[6].tacticsSelectedStatus === 803 && !list1[6].tacticsId) return ElMessage.error('请选择负面行业黑名单策略');
|
|
|
|
|
|
|
|
const list2 = param.creditScoringStrategyList;
|
|
|
|
if (list2[0].tacticsSelectedStatus === 803 && !list2[0].tacticsId) return ElMessage.error('请选择个人信用评分策略');
|
|
|
|
if (list2[1].tacticsSelectedStatus === 803 && !list2[1].tacticsId) return ElMessage.error('请选择企业信用评分策略');
|
|
|
|
|
|
|
|
const list3 = param.interestRatePricingModelList;
|
|
|
|
if (list3[0].tacticsSelectedStatus === 803 && !list3[0].tacticsId) return ElMessage.error('请选择个人利率模型');
|
|
|
|
if (list3[1].tacticsSelectedStatus === 803 && !list3[1].tacticsId) return ElMessage.error('请选择个人额度模型');
|
|
|
|
if (param.enterpriseQuotaModelSelectedStatus === 803 && !param.enterpriseQuotaModel.length) return ElMessage.error('请选择企业额度模型');
|
|
|
|
if (list3[2].tacticsSelectedStatus === 803 && !list3[2].tacticsId) return ElMessage.error('请选择企业利率模型');
|
|
|
|
|
|
|
|
if (!param.dueDiligenceMode.length) return ElMessage.error('请选择尽调方式');
|
|
|
|
if (!param.dueDiligenceContent.length) return ElMessage.error('请选择尽调内容');
|
|
|
|
if (!param.reviewContent.length) return ElMessage.error('请选择审查材料');
|
|
|
|
if (!param.reviewSignature) return ElMessage.error('请选择签字表单');
|
|
|
|
if (!param.reviewApproveContent.length) return ElMessage.error('请选择审批材料');
|
|
|
|
if (!param.approvalSignature) return ElMessage.error('请选择签字表单');
|
|
|
|
|
|
|
|
const list4 = param.postLoanSelectionStrategyList;
|
|
|
|
if (list4[0].tacticsSelectedStatus === 803 && !list4[0].tacticsId) return ElMessage.error('请选择五级分类策略');
|
|
|
|
if (list4[1].tacticsSelectedStatus === 803 && !list4[1].tacticsId) return ElMessage.error('请选择贷后检查策略');
|
|
|
|
if (list4[2].tacticsSelectedStatus === 803 && !list4[2].tacticsId) return ElMessage.error('请选择贷后评分卡');
|
|
|
|
if (list4[3].tacticsSelectedStatus === 803 && !list4[3].tacticsId) return ElMessage.error('请选择贷后预警策略');
|
|
|
|
if (list4[4].tacticsSelectedStatus === 803 && !list4[4].tacticsId) return ElMessage.error('请选择贷后催收策略');
|
|
|
|
|
|
|
|
param.borrowerMaterial = param.borrowerMaterialSelectedStatus === 797 ? param.borrowerMaterial.join() : '';
|
|
|
|
param.accountMaterials = param.provideMaterialSelectedStatus === 797 ? param.accountMaterials.join() : '';
|
|
|
|
param.sendingAccount = param.issueAccountSelectStatus === 801 ? param.sendingAccount.join() : '';
|
|
|
|
// 企业
|
|
|
|
param.collateral = param.mortgagedPropertySelectedStatus === 797 ? param.collateral.join() : '';
|
|
|
|
param.enterpriseMaterial = param.enterpriseMaterialSelectedStatus === 797 ? param.enterpriseMaterial.join() : '';
|
|
|
|
param.corporateInterestRateModel = param.corporateInterestRateModel.join();
|
|
|
|
param.materialsForLoanApproval = param.materialsForLoanApproval.join();
|
|
|
|
// 个人
|
|
|
|
param.businessMaterials = param.businessMaterialsSelectedStatus === 797 ? param.businessMaterials.join() : '';
|
|
|
|
param.mateMaterial = param.mateMaterialSelectedStatus === 797 ? param.mateMaterial.join() : '';
|
|
|
|
|
|
|
|
if (param.loanContractSelectedStatus !== 797) param.loanContract = '';
|
|
|
|
if (param.mortgageContractSelectedStatus !== 797) param.mortgageContract = '';
|
|
|
|
if (param.pledgeContractSelectedStatus !== 797) param.pledgeContract = '';
|
|
|
|
if (param.guaranteeContractSelectedStatus !== 797) param.guaranteeContract = '';
|
|
|
|
|
|
|
|
param.dueDiligenceMode = param.dueDiligenceMode.join();
|
|
|
|
param.dueDiligenceContent = param.dueDiligenceContent.join();
|
|
|
|
param.reviewContent = param.reviewContent.join();
|
|
|
|
param.reviewApproveContent = param.reviewApproveContent.join();
|
|
|
|
param.loanApplicationMethod = param.loanApplicationMethod.join();
|
|
|
|
param.runBatchObject = param.runBatchObjectSelectedStatus === 803 ? param.runBatchObject.join() : '';
|
|
|
|
|
|
|
|
// 准入策略
|
|
|
|
list1.map((e) => {
|
|
|
|
if (e.tacticsSelectedStatus !== 803 && e.tacticsId) e.tacticsId = '';
|
|
|
|
});
|
|
|
|
list2.map((e) => {
|
|
|
|
if (e.tacticsSelectedStatus !== 803 && e.tacticsId) e.tacticsId = '';
|
|
|
|
});
|
|
|
|
list3.map((e) => {
|
|
|
|
if (e.tacticsSelectedStatus !== 803 && e.tacticsId) e.tacticsId = '';
|
|
|
|
});
|
|
|
|
list4.map((e) => {
|
|
|
|
if (e.tacticsSelectedStatus !== 803 && e.tacticsId) e.tacticsId = '';
|
|
|
|
});
|
|
|
|
|
|
|
|
param.enterpriseQuotaModel = param.enterpriseQuotaModelSelectedStatus === 803 ? param.enterpriseQuotaModel.join() : '';
|
|
|
|
debugger;
|
|
|
|
param.supplementaryMaterials = param.supplementMaterialSelectedStatus === 797 ? param.supplementaryMaterials.join() : '';
|
|
|
|
if (param.contractSupplyMaterialsSelectedStatus !== 797) param.contractMaterials = '';
|
|
|
|
if (info.value.riskControlDetails) {
|
|
|
|
param.id = info.value.riskControlDetails.id;
|
|
|
|
await riskUpdate(param);
|
|
|
|
addRecord(param);
|
|
|
|
} else {
|
|
|
|
await riskSave(param);
|
|
|
|
addRecord(param);
|
|
|
|
}
|
|
|
|
router.push(`/product/bank/detail?type=${route.query.type || ''}&i=${route.query.i}&role=${route.query.role}&id=${id.value}`);
|
|
|
|
ElMessage.success('提交成功!');
|
|
|
|
emit('getList');
|
|
|
|
} finally {
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
console.log('error submit!', fields);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|
|
|
|
// 新增判分记录
|
|
|
|
const addRecord = async (data: Record<string, any>) => {
|
|
|
|
const isEnterprise = info.value.productType === 1;
|
|
|
|
const preIds = `1,${Cookies.get('sand-level')},42,66,${isEnterprise ? 71 : 70}`; // 1,关卡id,角色(这个页面是风控经理配置风控),个人/企业(70/71)
|
|
|
|
const lcRule: Array<Record<string, any>> = [];
|
|
|
|
|
|
|
|
// 企业
|
|
|
|
if (isEnterprise) {
|
|
|
|
data.provideMaterialSelectedStatus && lcRule.push(handleId(1246, 325, data.provideMaterialSelectedStatus, preIds + ',112,120,1246', 1));
|
|
|
|
data.accountMaterials && lcRule.push(handleId(1254, 44, data.accountMaterials, preIds + ',112,120,1254', 1));
|
|
|
|
data.issueAccountSelectStatus && lcRule.push(handleId(1257, 326, data.issueAccountSelectStatus, preIds + ',112,121,1257', 1));
|
|
|
|
data.sendingAccount && lcRule.push(handleId(1255, 45, data.sendingAccount, preIds + ',112,121,1255', 1));
|
|
|
|
data.loanApplicationMethod && lcRule.push(handleId(122, 46, data.loanApplicationMethod, preIds + ',113,122', 1));
|
|
|
|
|
|
|
|
data.enterpriseMaterialSelectedStatus && lcRule.push(handleId(1294, 325, data.enterpriseMaterialSelectedStatus, preIds + ',113,124,1294', 1));
|
|
|
|
data.enterpriseMaterial && lcRule.push(handleId(1258, 48, data.enterpriseMaterial, preIds + ',113,124,1258', 1));
|
|
|
|
|
|
|
|
form.borrowerMaterialSelectedStatus && lcRule.push(handleId(1294, 325, form.borrowerMaterialSelectedStatus, preIds + ',113,123,1294', 1));
|
|
|
|
const borrowerMaterial = [];
|
|
|
|
form.borrowerMaterial.forEach((e) => {
|
|
|
|
borrowerMaterial.push(e);
|
|
|
|
});
|
|
|
|
borrowerMaterial.length && lcRule.push(handleId(316, 47, borrowerMaterial.join(), preIds + ',113,123,316', 1));
|
|
|
|
|
|
|
|
data.mortgagedPropertySelectedStatus && lcRule.push(handleId(1294, 325, data.mortgagedPropertySelectedStatus, preIds + ',113,125,1294', 1));
|
|
|
|
data.collateral && lcRule.push(handleId(1259, 49, data.collateral, preIds + ',113,125,1259', 1));
|
|
|
|
|
|
|
|
data.supplementMaterialSelectedStatus && lcRule.push(handleId(1294, 325, data.supplementMaterialSelectedStatus, preIds + ',113,126,1294', 1));
|
|
|
|
data.supplementaryMaterials && lcRule.push(handleId(1260, 50, data.supplementaryMaterials, preIds + ',113,126,1260', 1));
|
|
|
|
|
|
|
|
data.runBatchObjectSelectedStatus && lcRule.push(handleId(1302, 327, data.runBatchObjectSelectedStatus, preIds + ',114,127,1302', 1));
|
|
|
|
data.runBatchObject && lcRule.push(handleId(1261, 51, data.runBatchObject, preIds + ',114,127,1261', 1));
|
|
|
|
|
|
|
|
// data.accessPolicySelectedStatus && lcRule.push(handleId(1302, 327, data.accessPolicySelectedStatus, preIds + ',114,128,1302', 1));
|
|
|
|
// data.accessStrategy && lcRule.push(handleId(1262, 52, data.accessStrategy, preIds + ',114,128,1262', 1));
|
|
|
|
|
|
|
|
// data.personalCreditScoringStrategySelectedStatus && lcRule.push(handleId(1306, 325, data.personalCreditScoringStrategySelectedStatus, preIds + ',114,129,1046,1306', 1));
|
|
|
|
// data.personalCreditScoringStrategies && lcRule.push(handleId(1307, 329, data.personalCreditScoringStrategies, preIds + ',114,129,1046,1307', 3));
|
|
|
|
// data.enterpriseCreditScoringStrategySelectedStatus && lcRule.push(handleId(1306, 325, data.enterpriseCreditScoringStrategySelectedStatus, preIds + ',114,129,1047,1306', 1));
|
|
|
|
// data.corporateCreditScoringStrategies && lcRule.push(handleId(1307, 329, data.corporateCreditScoringStrategies, preIds + ',114,129,1047,1307', 3));
|
|
|
|
|
|
|
|
// data.riskDegreePolicySelectedStatus && lcRule.push(handleId(1302, 327, data.riskDegreePolicySelectedStatus, preIds + ',114,130,1302', 1));
|
|
|
|
// data.riskDegreeStrategy && lcRule.push(handleId(1301, 54, data.riskDegreeStrategy, preIds + ',114,130,1301', 1));
|
|
|
|
|
|
|
|
// data.individualCreditModelSelectedStatus && lcRule.push(handleId(1302, 327, data.individualCreditModelSelectedStatus, preIds + ',114,131,305,1302', 1));
|
|
|
|
// data.interestRatePricingModel && lcRule.push(handleId(1314, 55, data.interestRatePricingModel, preIds + ',114,131,305,1314', 1));
|
|
|
|
// data.individualInterestRateModel && lcRule.push(handleId(304, 327, data.individualInterestRateModel, preIds + ',114,131,304', 1));
|
|
|
|
|
|
|
|
data.dueDiligenceMode && lcRule.push(handleId(132, 56, data.dueDiligenceMode, preIds + ',115,132', 1));
|
|
|
|
data.dueDiligenceContent && lcRule.push(handleId(133, 57, data.dueDiligenceContent, preIds + ',115,133', 1));
|
|
|
|
data.reviewContent && lcRule.push(handleId(134, 58, data.reviewContent, preIds + ',116,134', 1));
|
|
|
|
data.reviewSignature && lcRule.push(handleId(135, 59, data.reviewSignature, preIds + ',116,135', 1));
|
|
|
|
data.reviewApproveContent && lcRule.push(handleId(136, 60, data.reviewApproveContent, preIds + ',117,136', 1));
|
|
|
|
data.approvalSignature && lcRule.push(handleId(137, 61, data.approvalSignature, preIds + ',117,137', 1));
|
|
|
|
|
|
|
|
data.contractSupplyMaterialsSelectedStatus && lcRule.push(handleId(1264, 325, data.contractSupplyMaterialsSelectedStatus, preIds + ',118,138,1264', 1));
|
|
|
|
data.contractMaterials && lcRule.push(handleId(1263, 62, data.contractMaterials, preIds + ',118,138,1263', 1));
|
|
|
|
|
|
|
|
data.loanContractSelectedStatus && lcRule.push(handleId(1273, 325, data.loanContractSelectedStatus, preIds + ',118,139,306,1273', 1));
|
|
|
|
data.loanContract && lcRule.push(handleId(1269, 63, data.loanContract, preIds + ',118,139,306,1269', 1));
|
|
|
|
|
|
|
|
data.mortgageContractSelectedStatus && lcRule.push(handleId(1273, 325, data.mortgageContractSelectedStatus, preIds + ',118,139,307,1273', 1));
|
|
|
|
data.mortgageContract && lcRule.push(handleId(1270, 142, data.mortgageContract, preIds + ',118,139,307,1270', 1));
|
|
|
|
|
|
|
|
data.pledgeContractSelectedStatus && lcRule.push(handleId(1273, 325, data.pledgeContractSelectedStatus, preIds + ',118,139,308,1273', 1));
|
|
|
|
data.pledgeContract && lcRule.push(handleId(1271, 143, data.pledgeContract, preIds + ',118,139,308,1271', 1));
|
|
|
|
|
|
|
|
data.guaranteeContractSelectedStatus && lcRule.push(handleId(1273, 325, data.guaranteeContractSelectedStatus, preIds + ',118,139,309,1273', 1));
|
|
|
|
data.guaranteeContract && lcRule.push(handleId(1272, 144, data.guaranteeContract, preIds + ',118,139,309,1272', 1));
|
|
|
|
|
|
|
|
// data.postLoanManagementSelectPolicySelectStatus && lcRule.push(handleId(1302, 327, data.postLoanManagementSelectPolicySelectStatus, preIds + ',119,140,1302', 1));
|
|
|
|
// data.selectionStrategy && lcRule.push(handleId(1315, 64, data.selectionStrategy, preIds + ',119,140,1315', 1));
|
|
|
|
} else {
|
|
|
|
data.provideMaterialSelectedStatus && lcRule.push(handleId(1294, 325, data.provideMaterialSelectedStatus, preIds + ',72,75,1294', 1));
|
|
|
|
data.accountMaterials && lcRule.push(handleId(1295, 20, data.accountMaterials, preIds + ',72,75,1295', 1));
|
|
|
|
|
|
|
|
data.issueAccountSelectStatus && lcRule.push(handleId(1312, 326, data.issueAccountSelectStatus, preIds + ',72,76,1312', 1));
|
|
|
|
data.sendingAccount && lcRule.push(handleId(1296, 21, data.sendingAccount, preIds + ',72,76,1296', 1));
|
|
|
|
data.loanApplicationMethod && lcRule.push(handleId(1289, 22, data.loanApplicationMethod, preIds + ',73,77,1289', 1));
|
|
|
|
|
|
|
|
form.borrowerMaterialSelectedStatus && lcRule.push(handleId(1294, 325, form.borrowerMaterialSelectedStatus, preIds + ',73,78,1294', 1));
|
|
|
|
const borrowerMaterial = [];
|
|
|
|
form.borrowerMaterial.forEach((e) => {
|
|
|
|
borrowerMaterial.push(e);
|
|
|
|
});
|
|
|
|
borrowerMaterial.length && lcRule.push(handleId(314, 23, borrowerMaterial.join(), preIds + ',73,78,314', 1));
|
|
|
|
|
|
|
|
data.mateMaterialSelectedStatus && lcRule.push(handleId(1294, 325, data.mateMaterialSelectedStatus, preIds + ',73,79,1294', 1));
|
|
|
|
data.mateMaterial && lcRule.push(handleId(1291, 24, data.mateMaterial, preIds + ',73,79,1291', 1));
|
|
|
|
|
|
|
|
data.businessMaterialsSelectedStatus && lcRule.push(handleId(1294, 325, data.businessMaterialsSelectedStatus, preIds + ',73,80,1294', 1));
|
|
|
|
data.businessMaterials && lcRule.push(handleId(1292, 25, data.businessMaterials, preIds + ',73,80,1292', 1));
|
|
|
|
|
|
|
|
data.supplementMaterialSelectedStatus && lcRule.push(handleId(1294, 325, data.supplementMaterialSelectedStatus, preIds + ',73,81,1294', 1));
|
|
|
|
data.supplementaryMaterials && lcRule.push(handleId(1293, 26, data.supplementaryMaterials, preIds + ',73,81,1293', 1));
|
|
|
|
|
|
|
|
data.runBatchObjectSelectedStatus && lcRule.push(handleId(1302, 327, data.runBatchObjectSelectedStatus, preIds + ',74,82,1302', 1));
|
|
|
|
data.runBatchObject && lcRule.push(handleId(1297, 27, data.runBatchObject, preIds + ',74,82,1297', 1));
|
|
|
|
|
|
|
|
// 准入策略
|
|
|
|
const list1 = data.bankRiskControlAllocationTacticsList;
|
|
|
|
list1[0].tacticsSelectedStatus && lcRule.push(handleId(1325, 327, list1[0].tacticsSelectedStatus, `${preIds},74,83,1318,1325`, 1));
|
|
|
|
list1[0].tacticsId && lcRule.push(handleId(1326, 331, govList.value.find((e) => e.governmentId === list1[0].tacticsId)?.strategyName, `${preIds},74,83,1318,1326`, 3));
|
|
|
|
|
|
|
|
list1[1].tacticsSelectedStatus && lcRule.push(handleId(1327, 327, list1[1].tacticsSelectedStatus, `${preIds},74,83,1319,1327`, 1));
|
|
|
|
list1[1].tacticsId && lcRule.push(handleId(1328, 332, govList.value.find((e) => e.governmentId === list1[1].tacticsId)?.strategyName, `${preIds},74,83,1319,1328`, 3));
|
|
|
|
|
|
|
|
list1[2].tacticsSelectedStatus && lcRule.push(handleId(1329, 327, list1[2].tacticsSelectedStatus, `${preIds},74,83,1320,1329`, 1));
|
|
|
|
list1[2].tacticsId && lcRule.push(handleId(1330, 333, govList.value.find((e) => e.governmentId === list1[2].tacticsId)?.strategyName, `${preIds},74,83,1320,1330`, 3));
|
|
|
|
|
|
|
|
list1[3].tacticsSelectedStatus && lcRule.push(handleId(1331, 327, list1[3].tacticsSelectedStatus, `${preIds},74,83,1321,1331`, 1));
|
|
|
|
list1[3].tacticsId && lcRule.push(handleId(1332, 334, govList.value.find((e) => e.governmentId === list1[3].tacticsId)?.strategyName, `${preIds},74,83,1321,1332`, 3));
|
|
|
|
|
|
|
|
list1[4].tacticsSelectedStatus && lcRule.push(handleId(1333, 327, list1[4].tacticsSelectedStatus, `${preIds},74,83,1322,1333`, 1));
|
|
|
|
list1[4].tacticsId && lcRule.push(handleId(1334, 335, govList.value.find((e) => e.governmentId === list1[4].tacticsId)?.strategyName, `${preIds},74,83,1322,1334`, 3));
|
|
|
|
|
|
|
|
list1[5].tacticsSelectedStatus && lcRule.push(handleId(1335, 327, list1[5].tacticsSelectedStatus, `${preIds},74,83,1323,1335`, 1));
|
|
|
|
list1[5].tacticsId && lcRule.push(handleId(1336, 336, govList.value.find((e) => e.governmentId === list1[5].tacticsId)?.strategyName, `${preIds},74,83,1323,1336`, 3));
|
|
|
|
|
|
|
|
list1[6].tacticsSelectedStatus && lcRule.push(handleId(1337, 327, list1[6].tacticsSelectedStatus, `${preIds},74,83,1324,1337`, 1));
|
|
|
|
list1[6].tacticsId && lcRule.push(handleId(1338, 337, govList.value.find((e) => e.governmentId === list1[6].tacticsId)?.strategyName, `${preIds},74,83,1324,1338`, 3));
|
|
|
|
|
|
|
|
// 信用评分策略
|
|
|
|
const list2 = data.creditScoringStrategyList;
|
|
|
|
list2[0].tacticsSelectedStatus && lcRule.push(handleId(1364, 327, list2[0].tacticsSelectedStatus, `${preIds},74,84,1304,1364`, 1));
|
|
|
|
list2[0].tacticsId && lcRule.push(handleId(1366, 327, list2[0].tacticsId, `${preIds},74,84,1304,1366`, 3));
|
|
|
|
|
|
|
|
list2[1].tacticsSelectedStatus && lcRule.push(handleId(1365, 327, list2[1].tacticsSelectedStatus, `${preIds},74,84,1305,1365`, 1));
|
|
|
|
list2[1].tacticsId && lcRule.push(handleId(1367, 339, list2[1].tacticsId, `${preIds},74,84,1305,1367`, 3));
|
|
|
|
|
|
|
|
// 风险度策略
|
|
|
|
data.personalRiskDegreeStrategySelectedStatus && lcRule.push(handleId(1339, 327, data.personalRiskDegreeStrategySelectedStatus, preIds + '74,85,1339', 1));
|
|
|
|
data.enterpriseRiskDegreeStrategySelectedStatus && lcRule.push(handleId(1340, 327, data.enterpriseRiskDegreeStrategySelectedStatus, preIds + ',74,85,1340', 1));
|
|
|
|
|
|
|
|
// 利率定价模型
|
|
|
|
const list3 = data.interestRatePricingModelList;
|
|
|
|
list3[0].tacticsSelectedStatus && lcRule.push(handleId(1310, 327, list3[0].tacticsSelectedStatus, `${preIds},74,86,1308,1310`, 1));
|
|
|
|
list3[0].tacticsId && lcRule.push(handleId(1360, 339, list3[0].tacticsId, `${preIds},74,86,1308,1360`, 3));
|
|
|
|
|
|
|
|
list3[1].tacticsSelectedStatus && lcRule.push(handleId(1311, 327, list3[1].tacticsSelectedStatus, `${preIds},74,86,1309,1311`, 1));
|
|
|
|
list3[1].tacticsId && lcRule.push(handleId(1361, 339, list3[1].tacticsId, `${preIds},74,86,1309,1361`, 3));
|
|
|
|
|
|
|
|
data.enterpriseQuotaModelSelectedStatus && lcRule.push(handleId(1343, 327, data.enterpriseQuotaModelSelectedStatus, preIds + '74,86,1341,1343', 1));
|
|
|
|
data.enterpriseQuotaModel && lcRule.push(handleId(1362, 338, data.enterpriseQuotaModel, preIds + ',74,86,1341,1362', 1));
|
|
|
|
|
|
|
|
list3[2].tacticsSelectedStatus && lcRule.push(handleId(1344, 327, list3[2].tacticsSelectedStatus, `${preIds},74,86,1342,1344`, 1));
|
|
|
|
list3[2].tacticsId && lcRule.push(handleId(1363, 339, list3[2].tacticsId, `${preIds},74,86,1342,1363`, 3));
|
|
|
|
|
|
|
|
data.dueDiligenceMode && lcRule.push(handleId(88, 32, data.dueDiligenceMode, preIds + ',87,88', 1));
|
|
|
|
data.dueDiligenceContent && lcRule.push(handleId(89, 33, data.dueDiligenceContent, preIds + ',87,89', 1));
|
|
|
|
data.reviewContent && lcRule.push(handleId(91, 34, data.reviewContent, preIds + ',90,91', 1));
|
|
|
|
data.reviewSignature && lcRule.push(handleId(92, 35, data.reviewSignature, preIds + ',90,92', 1));
|
|
|
|
data.reviewApproveContent && lcRule.push(handleId(94, 36, data.reviewApproveContent, preIds + ',93,94', 1));
|
|
|
|
data.approvalSignature && lcRule.push(handleId(95, 37, data.approvalSignature, preIds + ',93,95', 1));
|
|
|
|
|
|
|
|
data.contractSupplyMaterialsSelectedStatus && lcRule.push(handleId(1248, 325, data.contractSupplyMaterialsSelectedStatus, preIds + ',96,97,1248', 1));
|
|
|
|
data.contractMaterials && lcRule.push(handleId(1247, 38, data.contractMaterials, preIds + ',96,97,1247', 1));
|
|
|
|
|
|
|
|
data.loanContractSelectedStatus && lcRule.push(handleId(1253, 325, data.loanContractSelectedStatus, preIds + ',96,98,310,1253', 1));
|
|
|
|
data.loanContract && lcRule.push(handleId(1249, 39, data.loanContract, preIds + ',96,98,310,1249', 1));
|
|
|
|
|
|
|
|
data.mortgageContractSelectedStatus && lcRule.push(handleId(1253, 325, data.mortgageContractSelectedStatus, preIds + ',96,98,311,1253', 1));
|
|
|
|
data.mortgageContract && lcRule.push(handleId(1250, 145, data.mortgageContract, preIds + ',96,98,311,1250', 1));
|
|
|
|
|
|
|
|
data.pledgeContractSelectedStatus && lcRule.push(handleId(1253, 325, data.pledgeContractSelectedStatus, preIds + ',96,98,312,1253', 1));
|
|
|
|
data.pledgeContract && lcRule.push(handleId(1251, 146, data.pledgeContract, preIds + ',96,98,312,1251', 1));
|
|
|
|
|
|
|
|
data.guaranteeContractSelectedStatus && lcRule.push(handleId(1253, 325, data.guaranteeContractSelectedStatus, preIds + ',96,98,313,1253', 1));
|
|
|
|
data.guaranteeContract && lcRule.push(handleId(1252, 147, data.guaranteeContract, preIds + ',96,98,313,1252', 1));
|
|
|
|
|
|
|
|
// 贷后管理
|
|
|
|
const list4 = data.bankRiskControlAllocationTacticsList;
|
|
|
|
list4[0].tacticsSelectedStatus && lcRule.push(handleId(1350, 327, list4[0].tacticsSelectedStatus, `${preIds},99,1345,1350`, 1));
|
|
|
|
list4[0].tacticsId && lcRule.push(handleId(1355, 339, govList.value.find((e) => e.governmentId === list4[0].tacticsId)?.strategyName, `${preIds},99,1345,1355`, 3));
|
|
|
|
|
|
|
|
list4[1].tacticsSelectedStatus && lcRule.push(handleId(1351, 327, list4[1].tacticsSelectedStatus, `${preIds},99,1346,1351`, 1));
|
|
|
|
list4[1].tacticsId && lcRule.push(handleId(1356, 339, govList.value.find((e) => e.governmentId === list4[1].tacticsId)?.strategyName, `${preIds},99,1346,1356`, 3));
|
|
|
|
|
|
|
|
list4[2].tacticsSelectedStatus && lcRule.push(handleId(1352, 327, list4[2].tacticsSelectedStatus, `${preIds},99,1347,1352`, 1));
|
|
|
|
list4[2].tacticsId && lcRule.push(handleId(1357, 339, govList.value.find((e) => e.governmentId === list4[2].tacticsId)?.strategyName, `${preIds},99,1347,1357`, 3));
|
|
|
|
|
|
|
|
list4[3].tacticsSelectedStatus && lcRule.push(handleId(1353, 327, list4[3].tacticsSelectedStatus, `${preIds},99,1348,1353`, 1));
|
|
|
|
list4[3].tacticsId && lcRule.push(handleId(1358, 339, govList.value.find((e) => e.governmentId === list4[3].tacticsId)?.strategyName, `${preIds},99,1348,1358`, 3));
|
|
|
|
|
|
|
|
list4[4].tacticsSelectedStatus && lcRule.push(handleId(1354, 327, list4[4].tacticsSelectedStatus, `${preIds},99,1349,1354`, 1));
|
|
|
|
list4[4].tacticsId && lcRule.push(handleId(1359, 339, govList.value.find((e) => e.governmentId === list4[4].tacticsId)?.strategyName, `${preIds},99,1349,1359`, 3));
|
|
|
|
}
|
|
|
|
|
|
|
|
await addOperation({
|
|
|
|
...getIds(),
|
|
|
|
parentId: preIds,
|
|
|
|
lcJudgmentRuleReq: lcRule,
|
|
|
|
});
|
|
|
|
};
|
|
|
|
// 预览策略
|
|
|
|
const preview = (strategyId: number, type: string) => {
|
|
|
|
curPreviewId.value = strategyId;
|
|
|
|
curPreview.value = type;
|
|
|
|
visible.value = true;
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
@import url(../../../styles/form.scss);
|
|
|
|
</style>
|