|
|
@ -250,13 +250,13 @@ |
|
|
|
:key="i" |
|
|
|
:key="i" |
|
|
|
:label="option.strategyName" |
|
|
|
:label="option.strategyName" |
|
|
|
:value="option.strategyId" /> |
|
|
|
:value="option.strategyId" /> |
|
|
|
<!-- <template #footer> |
|
|
|
<template #footer> |
|
|
|
<el-button text |
|
|
|
<el-button type="primary" |
|
|
|
bg |
|
|
|
size="small" |
|
|
|
size="small"> |
|
|
|
@click="addStratety(i)"> |
|
|
|
Add an option |
|
|
|
新增策略 |
|
|
|
</el-button> |
|
|
|
</el-button> |
|
|
|
</template> --> |
|
|
|
</template> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
|
|
|
|
|
|
|
|
<img v-if="form.bankRiskControlAllocationTacticsList[i].tacticsId" |
|
|
|
<img v-if="form.bankRiskControlAllocationTacticsList[i].tacticsId" |
|
|
@ -289,11 +289,19 @@ |
|
|
|
<template v-if="form.creditScoringStrategyList[i].tacticsSelectedStatus === 803 && item.blackList"> |
|
|
|
<template v-if="form.creditScoringStrategyList[i].tacticsSelectedStatus === 803 && item.blackList"> |
|
|
|
<el-select class="ml-5 mr-3" |
|
|
|
<el-select class="ml-5 mr-3" |
|
|
|
v-model="form.creditScoringStrategyList[i].tacticsId" |
|
|
|
v-model="form.creditScoringStrategyList[i].tacticsId" |
|
|
|
placeholder="请选择"> |
|
|
|
placeholder="请选择" |
|
|
|
<el-option v-for="item in item?.blackList" |
|
|
|
clearable> |
|
|
|
:key="item" |
|
|
|
<el-option v-for="(option, j) in item?.blackList" |
|
|
|
:label="item.scoreCardName" |
|
|
|
:key="j" |
|
|
|
:value="item.id" /> |
|
|
|
:label="option.scoreCardName" |
|
|
|
|
|
|
|
:value="option.id" /> |
|
|
|
|
|
|
|
<template #footer> |
|
|
|
|
|
|
|
<el-button type="primary" |
|
|
|
|
|
|
|
size="small" |
|
|
|
|
|
|
|
@click="addStratety(i + 7)"> |
|
|
|
|
|
|
|
新增策略 |
|
|
|
|
|
|
|
</el-button> |
|
|
|
|
|
|
|
</template> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
|
|
|
|
|
|
|
|
<img v-if="form.creditScoringStrategyList[i].tacticsId" |
|
|
|
<img v-if="form.creditScoringStrategyList[i].tacticsId" |
|
|
@ -345,15 +353,28 @@ |
|
|
|
</el-radio-group> |
|
|
|
</el-radio-group> |
|
|
|
|
|
|
|
|
|
|
|
<template v-if="form.interestRatePricingModelList[i].tacticsSelectedStatus === 803 && item.blackList"> |
|
|
|
<template v-if="form.interestRatePricingModelList[i].tacticsSelectedStatus === 803 && item.blackList"> |
|
|
|
<el-select v-if="form.interestRatePricingModelList[i].tacticsSelectedStatus === 803" |
|
|
|
<el-select class="ml-5 mr-3" |
|
|
|
class="ml-5 mr-3" |
|
|
|
|
|
|
|
v-model="form.interestRatePricingModelList[i].tacticsId" |
|
|
|
v-model="form.interestRatePricingModelList[i].tacticsId" |
|
|
|
placeholder="请选择"> |
|
|
|
placeholder="请选择" |
|
|
|
<el-option v-for="item in item?.blackList" |
|
|
|
clearable> |
|
|
|
:key="item.itemId" |
|
|
|
<el-option v-for="(option, j) in item?.blackList" |
|
|
|
:label="item.modelName" |
|
|
|
:key="j" |
|
|
|
:value="item.id" /> |
|
|
|
:label="option.modelName" |
|
|
|
|
|
|
|
:value="option.id" /> |
|
|
|
|
|
|
|
<template #footer> |
|
|
|
|
|
|
|
<el-button type="primary" |
|
|
|
|
|
|
|
size="small" |
|
|
|
|
|
|
|
@click="addStratety(i + 9)"> |
|
|
|
|
|
|
|
新增策略 |
|
|
|
|
|
|
|
</el-button> |
|
|
|
|
|
|
|
</template> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<img v-if="form.interestRatePricingModelList[i].tacticsId" |
|
|
|
|
|
|
|
src="@/assets/svgs/preview.svg" |
|
|
|
|
|
|
|
alt="" |
|
|
|
|
|
|
|
class="cursor-pointer" |
|
|
|
|
|
|
|
@click="previewRate(item, i)"> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
@ -375,7 +396,7 @@ |
|
|
|
</el-checkbox-group> |
|
|
|
</el-checkbox-group> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="radio-wrap items-start mb-3"> |
|
|
|
<div class="radio-wrap mb-3"> |
|
|
|
<span class="label">企业利率模型</span> |
|
|
|
<span class="label">企业利率模型</span> |
|
|
|
<el-radio-group v-model="form.interestRatePricingModelList[2].tacticsSelectedStatus" |
|
|
|
<el-radio-group v-model="form.interestRatePricingModelList[2].tacticsSelectedStatus" |
|
|
|
@change="getRate(2)"> |
|
|
|
@change="getRate(2)"> |
|
|
@ -383,15 +404,30 @@ |
|
|
|
:key="j" |
|
|
|
:key="j" |
|
|
|
:label="option.itemId">{{ option.options }}</el-radio> |
|
|
|
:label="option.itemId">{{ option.options }}</el-radio> |
|
|
|
</el-radio-group> |
|
|
|
</el-radio-group> |
|
|
|
<el-select v-if="form.interestRatePricingModelList[2].tacticsSelectedStatus === 803 && form.interestRatePricingModelList[2].blackList" |
|
|
|
|
|
|
|
class="ml-5" |
|
|
|
<template v-if="form.interestRatePricingModelList[2].tacticsSelectedStatus === 803 && form.interestRatePricingModelList[2].blackList"> |
|
|
|
|
|
|
|
<el-select class="ml-5 mr-3" |
|
|
|
v-model="form.interestRatePricingModelList[2].tacticsId" |
|
|
|
v-model="form.interestRatePricingModelList[2].tacticsId" |
|
|
|
placeholder="请选择"> |
|
|
|
placeholder="请选择"> |
|
|
|
<el-option v-for="item in form.interestRatePricingModelList[2].blackList" |
|
|
|
<el-option v-for="item in form.interestRatePricingModelList[2].blackList" |
|
|
|
:key="item.itemId" |
|
|
|
:key="item.itemId" |
|
|
|
:label="item.modelName" |
|
|
|
:label="item.modelName" |
|
|
|
:value="item.id" /> |
|
|
|
:value="item.id" /> |
|
|
|
|
|
|
|
<template #footer> |
|
|
|
|
|
|
|
<el-button type="primary" |
|
|
|
|
|
|
|
size="small" |
|
|
|
|
|
|
|
@click="addStratety(11)"> |
|
|
|
|
|
|
|
新增策略 |
|
|
|
|
|
|
|
</el-button> |
|
|
|
|
|
|
|
</template> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<img v-if="form.interestRatePricingModelList[2].tacticsId" |
|
|
|
|
|
|
|
src="@/assets/svgs/preview.svg" |
|
|
|
|
|
|
|
alt="" |
|
|
|
|
|
|
|
class="cursor-pointer" |
|
|
|
|
|
|
|
@click="previewRate(form.interestRatePricingModelList[2], 2)"> |
|
|
|
|
|
|
|
</template> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
@ -590,10 +626,17 @@ |
|
|
|
class="ml-5 mr-3" |
|
|
|
class="ml-5 mr-3" |
|
|
|
v-model="form.postLoanSelectionStrategyList[i].tacticsId" |
|
|
|
v-model="form.postLoanSelectionStrategyList[i].tacticsId" |
|
|
|
placeholder="请选择"> |
|
|
|
placeholder="请选择"> |
|
|
|
<el-option v-for="item in item.blackList" |
|
|
|
<el-option v-for="(option, j) in item.blackList" |
|
|
|
:key="item.itemId" |
|
|
|
:key="j" |
|
|
|
:label="item.strategyName" |
|
|
|
:label="option.strategyName" |
|
|
|
:value="item.strategyId" /> |
|
|
|
:value="option.strategyId" /> |
|
|
|
|
|
|
|
<template #footer> |
|
|
|
|
|
|
|
<el-button type="primary" |
|
|
|
|
|
|
|
size="small" |
|
|
|
|
|
|
|
@click="addStratety(i + 12)"> |
|
|
|
|
|
|
|
新增策略 |
|
|
|
|
|
|
|
</el-button> |
|
|
|
|
|
|
|
</template> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
|
|
|
|
|
|
|
|
<img v-if="form.postLoanSelectionStrategyList[i].tacticsId" |
|
|
|
<img v-if="form.postLoanSelectionStrategyList[i].tacticsId" |
|
|
@ -637,7 +680,7 @@ |
|
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts"> |
|
|
|
<script setup lang="ts"> |
|
|
|
import { ref, reactive, computed, watch, defineAsyncComponent, markRaw } from 'vue'; |
|
|
|
import { ref, reactive, computed, watch, defineAsyncComponent, markRaw } from 'vue'; |
|
|
|
import { ElMessage } from 'element-plus'; |
|
|
|
import { ElMessage, ElMessageBox } from 'element-plus'; |
|
|
|
import type { FormInstance } from 'element-plus'; |
|
|
|
import type { FormInstance } from 'element-plus'; |
|
|
|
import { findById, riskSave, riskUpdate, riskControlDetailsAreDisplayed } from '@/api/bank'; |
|
|
|
import { findById, riskSave, riskUpdate, riskControlDetailsAreDisplayed } from '@/api/bank'; |
|
|
|
import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment'; |
|
|
|
import { getProcessInformationBasedOnRoles, addOperation } from '@/api/judgment'; |
|
|
@ -669,7 +712,6 @@ interface RuleForm { |
|
|
|
provideMaterialSelectedStatus?: number; |
|
|
|
provideMaterialSelectedStatus?: number; |
|
|
|
accountMaterials?: number[]; |
|
|
|
accountMaterials?: number[]; |
|
|
|
approvalSignature?: number; |
|
|
|
approvalSignature?: number; |
|
|
|
bankProductsId?: number; |
|
|
|
|
|
|
|
borrowerMaterialSelectedStatus?: number; |
|
|
|
borrowerMaterialSelectedStatus?: number; |
|
|
|
borrowerMaterial?: number[]; |
|
|
|
borrowerMaterial?: number[]; |
|
|
|
businessMaterialsSelectedStatus?: number; |
|
|
|
businessMaterialsSelectedStatus?: number; |
|
|
@ -749,7 +791,6 @@ let form = reactive<RuleForm>({ |
|
|
|
provideMaterialSelectedStatus: '', |
|
|
|
provideMaterialSelectedStatus: '', |
|
|
|
accountMaterials: [], |
|
|
|
accountMaterials: [], |
|
|
|
approvalSignature: '', |
|
|
|
approvalSignature: '', |
|
|
|
bankProductsId: computed(() => +route.query.id), |
|
|
|
|
|
|
|
borrowerMaterialSelectedStatus: '', |
|
|
|
borrowerMaterialSelectedStatus: '', |
|
|
|
borrowerMaterial: [], |
|
|
|
borrowerMaterial: [], |
|
|
|
businessMaterialsSelectedStatus: '', |
|
|
|
businessMaterialsSelectedStatus: '', |
|
|
@ -796,6 +837,7 @@ let form = reactive<RuleForm>({ |
|
|
|
|
|
|
|
|
|
|
|
const curPreviewTitle = ref<string>(); |
|
|
|
const curPreviewTitle = ref<string>(); |
|
|
|
const assessNames = ['政务黑名单', '征信黑名单', '商采黑名单', '行内黑名单', '企业黑名单', '反欺诈策略', '负面行业黑名单策略']; |
|
|
|
const assessNames = ['政务黑名单', '征信黑名单', '商采黑名单', '行内黑名单', '企业黑名单', '反欺诈策略', '负面行业黑名单策略']; |
|
|
|
|
|
|
|
const interestNames = ['个人利率模型', '个人额度模型', '企业利率模型']; |
|
|
|
const afterNames = ['五级分类策略', '贷后检查策略', '贷后评分卡', '贷后预警策略', '贷后催收策略']; |
|
|
|
const afterNames = ['五级分类策略', '贷后检查策略', '贷后评分卡', '贷后预警策略', '贷后催收策略']; |
|
|
|
const asyncComponents = { |
|
|
|
const asyncComponents = { |
|
|
|
150: defineAsyncComponent(() => import('../strategy/150/Detail.vue')), |
|
|
|
150: defineAsyncComponent(() => import('../strategy/150/Detail.vue')), |
|
|
@ -807,6 +849,9 @@ const asyncComponents = { |
|
|
|
156: defineAsyncComponent(() => import('../strategy/156/Detail.vue')), |
|
|
|
156: defineAsyncComponent(() => import('../strategy/156/Detail.vue')), |
|
|
|
512: defineAsyncComponent(() => import('../strategy/512/Detail.vue')), |
|
|
|
512: defineAsyncComponent(() => import('../strategy/512/Detail.vue')), |
|
|
|
513: defineAsyncComponent(() => import('../strategy/513/Detail.vue')), |
|
|
|
513: defineAsyncComponent(() => import('../strategy/513/Detail.vue')), |
|
|
|
|
|
|
|
935: defineAsyncComponent(() => import('../interestRate/935/Detail.vue')), |
|
|
|
|
|
|
|
772: defineAsyncComponent(() => import('../interestRate/772/Detail.vue')), |
|
|
|
|
|
|
|
936: defineAsyncComponent(() => import('../interestRate/936/Detail.vue')), |
|
|
|
1029: defineAsyncComponent(() => import('../afterLoan/1029/Detail.vue')), |
|
|
|
1029: defineAsyncComponent(() => import('../afterLoan/1029/Detail.vue')), |
|
|
|
1030: defineAsyncComponent(() => import('../afterLoan/1030/Detail.vue')), |
|
|
|
1030: defineAsyncComponent(() => import('../afterLoan/1030/Detail.vue')), |
|
|
|
1031: defineAsyncComponent(() => import('../afterLoan/1031/Detail.vue')), |
|
|
|
1031: defineAsyncComponent(() => import('../afterLoan/1031/Detail.vue')), |
|
|
@ -1411,6 +1456,7 @@ const submit = async (formEl: FormInstance | undefined) => { |
|
|
|
|
|
|
|
|
|
|
|
param.supplementaryMaterials = param.supplementMaterialSelectedStatus === 797 ? param.supplementaryMaterials.join() : ''; |
|
|
|
param.supplementaryMaterials = param.supplementMaterialSelectedStatus === 797 ? param.supplementaryMaterials.join() : ''; |
|
|
|
if (param.contractSupplyMaterialsSelectedStatus !== 797) param.contractMaterials = ''; |
|
|
|
if (param.contractSupplyMaterialsSelectedStatus !== 797) param.contractMaterials = ''; |
|
|
|
|
|
|
|
param.bankProductsId = id.value; |
|
|
|
|
|
|
|
|
|
|
|
if (info.value.riskControlDetails) { |
|
|
|
if (info.value.riskControlDetails) { |
|
|
|
param.id = info.value.riskControlDetails.id; |
|
|
|
param.id = info.value.riskControlDetails.id; |
|
|
@ -1430,6 +1476,21 @@ const submit = async (formEl: FormInstance | undefined) => { |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
// 新增策略 |
|
|
|
|
|
|
|
const addStratety = (i: number) => { |
|
|
|
|
|
|
|
ElMessageBox.confirm('<p class="text-danger whitespace-nowrap">即将跳转到可以新增策略的界面,当前界面数据会清空。</p><p>确定离开当前界面?</p>', '提示', { |
|
|
|
|
|
|
|
confirmButtonText: '确定', |
|
|
|
|
|
|
|
cancelButtonText: '取消', |
|
|
|
|
|
|
|
type: 'warning', |
|
|
|
|
|
|
|
closeOnClickModal: false, |
|
|
|
|
|
|
|
dangerouslyUseHTMLString: true, |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
.then(() => { |
|
|
|
|
|
|
|
const path = i < 9 ? `/product/strategy?i=2&role=42&id=` : i < 12 ? `/product/interestRate?i=3&role=42&id=` : `/product/afterLoan?i=4&role=42&id=`; |
|
|
|
|
|
|
|
router.push(path + (i === 9 ? 935 : i === 10 ? 772 : i === 11 ? 936 : Object.keys(asyncComponents)[i])); |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
.catch(() => {}); |
|
|
|
|
|
|
|
}; |
|
|
|
// 预览策略 |
|
|
|
// 预览策略 |
|
|
|
const preview = async (row: Record<string, any>, i: number) => { |
|
|
|
const preview = async (row: Record<string, any>, i: number) => { |
|
|
|
const { tacticsId } = form.bankRiskControlAllocationTacticsList[i]; |
|
|
|
const { tacticsId } = form.bankRiskControlAllocationTacticsList[i]; |
|
|
@ -1451,6 +1512,17 @@ const previewCredits = async (row: Record<string, any>, i: number) => { |
|
|
|
curPreviewTitle.value = `查看${i ? '企业' : '个人'}信用评分策略`; |
|
|
|
curPreviewTitle.value = `查看${i ? '企业' : '个人'}信用评分策略`; |
|
|
|
visible.value = true; |
|
|
|
visible.value = true; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
// 预览利率模型 |
|
|
|
|
|
|
|
const previewRate = async (row: Record<string, any>, i: number) => { |
|
|
|
|
|
|
|
const { tacticsId } = form.interestRatePricingModelList[i]; |
|
|
|
|
|
|
|
curRow.value = { |
|
|
|
|
|
|
|
id: tacticsId, |
|
|
|
|
|
|
|
modelName: row.blackList.find((e) => e.id === tacticsId)?.modelName, |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
await loadComponent(i === 2 ? '936' : i ? '772' : '935'); |
|
|
|
|
|
|
|
curPreviewTitle.value = `查看${interestNames[i]}`; |
|
|
|
|
|
|
|
visible.value = true; |
|
|
|
|
|
|
|
}; |
|
|
|
// 预览贷后管理 |
|
|
|
// 预览贷后管理 |
|
|
|
const previewAfter = async (row: Record<string, any>, i: number) => { |
|
|
|
const previewAfter = async (row: Record<string, any>, i: number) => { |
|
|
|
const { tacticsId } = form.postLoanSelectionStrategyList[i]; |
|
|
|
const { tacticsId } = form.postLoanSelectionStrategyList[i]; |
|
|
@ -1458,7 +1530,7 @@ const previewAfter = async (row: Record<string, any>, i: number) => { |
|
|
|
strategyId: tacticsId, |
|
|
|
strategyId: tacticsId, |
|
|
|
strategyName: row.blackList.find((e) => e.strategyId === tacticsId)?.strategyName, |
|
|
|
strategyName: row.blackList.find((e) => e.strategyId === tacticsId)?.strategyName, |
|
|
|
}; |
|
|
|
}; |
|
|
|
await loadComponent(Object.keys(asyncComponents)[i + 9]); |
|
|
|
await loadComponent(Object.keys(asyncComponents)[i + 12]); |
|
|
|
curPreviewTitle.value = `查看${afterNames[i]}策略`; |
|
|
|
curPreviewTitle.value = `查看${afterNames[i]}策略`; |
|
|
|
visible.value = true; |
|
|
|
visible.value = true; |
|
|
|
}; |
|
|
|
}; |
|
|
|