This commit is contained in:
wkc
2026-01-22 16:01:12 +08:00
parent c102714f92
commit d75e6a9594
7 changed files with 271 additions and 18 deletions

View File

@@ -25,3 +25,12 @@ export function createWorkflow(data) {
data: data
})
}
// 设定执行利率
export function setExecuteRate(serialNum, executeRate) {
return request({
url: '/loanPricing/workflow/' + serialNum + '/executeRate',
method: 'put',
data: { executeRate: executeRate }
})
}

View File

@@ -3,7 +3,7 @@
<div slot="header" class="card-header">
<span class="card-title">议价池</span>
</div>
<el-descriptions :column="4" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="网点议价池">
{{ displayBranchPool }}
</el-descriptions-item>

View File

@@ -8,7 +8,7 @@
<template v-if="custType === '个人' && retailOutput">
<!-- 基本信息 -->
<el-tab-pane label="基本信息" name="retail-basic">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="客户内码">{{ retailOutput.custIsn || '-' }}</el-descriptions-item>
<el-descriptions-item label="客户名称">{{ retailOutput.custName || '-' }}</el-descriptions-item>
<el-descriptions-item label="证件类型">{{ retailOutput.idType || '-' }}</el-descriptions-item>
@@ -19,7 +19,7 @@
<!-- 忠诚度分析 -->
<el-tab-pane label="忠诚度分析" name="retail-loyalty">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="我行首贷客户">{{ formatBoolean(retailOutput.isFirstLoan) }}</el-descriptions-item>
<el-descriptions-item label="用信天数">{{ retailOutput.faithDay || '-' }}</el-descriptions-item>
<el-descriptions-item label="客户年龄">{{ retailOutput.custAge || '-' }}</el-descriptions-item>
@@ -32,7 +32,7 @@
<!-- 贡献度分析 -->
<el-tab-pane label="贡献度分析" name="retail-contribution">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="存款年日均">{{ retailOutput.balanceAvg || '-' }}</el-descriptions-item>
<el-descriptions-item label="贷款年日均">{{ retailOutput.loanAvg || '-' }}</el-descriptions-item>
<el-descriptions-item label="派生率">{{ retailOutput.derivationRate || '-' }}</el-descriptions-item>
@@ -42,7 +42,7 @@
<!-- 关联度分析 -->
<el-tab-pane label="关联度分析" name="retail-relevance">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="中间业务_个人_信用卡">{{ formatBoolean(retailOutput.midPerCard) }}</el-descriptions-item>
<el-descriptions-item label="中间业务_个人_一码通">{{ formatBoolean(retailOutput.midPerPass) }}</el-descriptions-item>
<el-descriptions-item label="中间业务_个人_丰收互联">{{ formatBoolean(retailOutput.midPerHarvest) }}</el-descriptions-item>
@@ -62,7 +62,7 @@
<!-- 贷款特征 -->
<el-tab-pane label="贷款特征" name="retail-loan">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="申请金额">{{ retailOutput.applyAmt || '-' }}</el-descriptions-item>
<el-descriptions-item label="BP_贷款额度"><span class="bp-value">{{ retailOutput.bpLoanAmount || '-' }}</span></el-descriptions-item>
<el-descriptions-item label="贷款用途">{{ formatLoanPurpose(retailOutput.loanPurpose) }}</el-descriptions-item>
@@ -78,7 +78,7 @@
<!-- 风险度分析 -->
<el-tab-pane label="风险度分析" name="retail-risk">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="灰名单客户">{{ formatBoolean(retailOutput.greyCust) }}</el-descriptions-item>
<el-descriptions-item label="本金逾期">{{ formatBoolean(retailOutput.prinOverdue) }}</el-descriptions-item>
<el-descriptions-item label="利息逾期">{{ formatBoolean(retailOutput.interestOverdue) }}</el-descriptions-item>
@@ -90,7 +90,7 @@
<!-- 测算结果 -->
<el-tab-pane label="测算结果" name="retail-result">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="浮动BP"><span class="total-bp-value">{{ retailOutput.totalBp || '-' }}</span></el-descriptions-item>
<el-descriptions-item label="测算利率"><span class="calculate-rate">{{ retailOutput.calculateRate || '-' }}</span> %</el-descriptions-item>
</el-descriptions>
@@ -101,7 +101,7 @@
<template v-else-if="custType === '企业' && corpOutput">
<!-- 基本信息 -->
<el-tab-pane label="基本信息" name="corp-basic">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="客户内码">{{ corpOutput.custIsn || '-' }}</el-descriptions-item>
<el-descriptions-item label="客户名称">{{ corpOutput.custName || '-' }}</el-descriptions-item>
<el-descriptions-item label="证件类型">{{ corpOutput.idType || '-' }}</el-descriptions-item>
@@ -112,7 +112,7 @@
<!-- 忠诚度分析 -->
<el-tab-pane label="忠诚度分析" name="corp-loyalty">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="我行首贷客户">{{ formatBoolean(corpOutput.isFirstLoan) }}</el-descriptions-item>
<el-descriptions-item label="用信天数">{{ corpOutput.faithDay || '-' }}</el-descriptions-item>
<el-descriptions-item label="BP_首贷"><span class="bp-value">{{ corpOutput.bpFirstLoan || '-' }}</span></el-descriptions-item>
@@ -123,7 +123,7 @@
<!-- 贡献度分析 -->
<el-tab-pane label="贡献度分析" name="corp-contribution">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="存款年日均">{{ corpOutput.balanceAvg || '-' }}</el-descriptions-item>
<el-descriptions-item label="贷款年日均">{{ corpOutput.loanAvg || '-' }}</el-descriptions-item>
<el-descriptions-item label="派生率">{{ corpOutput.derivationRate || '-' }}</el-descriptions-item>
@@ -133,7 +133,7 @@
<!-- 关联度分析 -->
<el-tab-pane label="关联度分析" name="corp-relevance">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="中间业务_企业_企业互联">{{ formatBoolean(corpOutput.midEntConnect) }}</el-descriptions-item>
<el-descriptions-item label="中间业务_企业_有效价值客户">{{ formatBoolean(corpOutput.midEntEffect) }}</el-descriptions-item>
<el-descriptions-item label="中间业务_企业_国际业务">{{ formatBoolean(corpOutput.midEntInter) }}</el-descriptions-item>
@@ -152,7 +152,7 @@
<!-- 企业类别 -->
<el-tab-pane label="企业类别" name="corp-category">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="净身企业">{{ formatBoolean(corpOutput.isCleanEnt) }}</el-descriptions-item>
<el-descriptions-item label="开立基本结算账户">{{ formatBoolean(corpOutput.hasSettleAcct) }}</el-descriptions-item>
<el-descriptions-item label="省农担担保贷款">{{ formatBoolean(corpOutput.isAgriGuar) }}</el-descriptions-item>
@@ -164,7 +164,7 @@
<!-- 贷款特征 -->
<el-tab-pane label="贷款特征" name="corp-loan">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="贷款期限">{{ corpOutput.loanTerm || '-' }}</el-descriptions-item>
<el-descriptions-item label="BP_贷款期限"><span class="bp-value">{{ corpOutput.bpLoanTerm || '-' }}</span></el-descriptions-item>
<el-descriptions-item label="申请金额">{{ corpOutput.applyAmt || '-' }}</el-descriptions-item>
@@ -177,7 +177,7 @@
<!-- 风险度分析 -->
<el-tab-pane label="风险度分析" name="corp-risk">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="灰名单客户">{{ formatBoolean(corpOutput.greyCust) }}</el-descriptions-item>
<el-descriptions-item label="本金逾期">{{ formatBoolean(corpOutput.prinOverdue) }}</el-descriptions-item>
<el-descriptions-item label="利息逾期">{{ formatBoolean(corpOutput.interestOverdue) }}</el-descriptions-item>
@@ -189,7 +189,7 @@
<!-- 测算结果 -->
<el-tab-pane label="测算结果" name="corp-result">
<el-descriptions :column="3" border size="small">
<el-descriptions :column="2" border size="small">
<el-descriptions-item label="浮动BP"><span class="total-bp-value">{{ corpOutput.totalBp || '-' }}</span></el-descriptions-item>
<el-descriptions-item label="测算利率"><span class="calculate-rate">{{ corpOutput.calculateRate || '-' }}</span> %</el-descriptions-item>
</el-descriptions>

View File

@@ -28,6 +28,25 @@
<el-descriptions-item label="测算利率">
<span class="calculate-rate">{{ getCalculateRate() }}</span> %
</el-descriptions-item>
<!-- 执行利率输入区域 -->
<el-descriptions-item label="执行利率" :class="'execute-rate-item'">
<div class="execute-rate-input-wrapper">
<el-input
v-model="executeRateInput"
class="execute-rate-input"
placeholder="请输入执行利率"
>
<template slot="append">%</template>
</el-input>
<el-button
type="primary"
size="small"
@click="handleSetExecuteRate"
>
确定
</el-button>
</div>
</el-descriptions-item>
</el-descriptions>
</el-card>
</div>
@@ -115,7 +134,7 @@
</template>
<script>
import { getWorkflow } from "@/api/loanPricing/workflow"
import { getWorkflow, setExecuteRate } from "@/api/loanPricing/workflow"
import ModelOutputDisplay from "./components/ModelOutputDisplay.vue"
import BargainingPoolDisplay from "./components/BargainingPoolDisplay.vue"
@@ -132,7 +151,16 @@ export default {
retailOutput: null,
corpOutput: null,
bargainingPool: null,
activeTab: 'basic'
activeTab: 'basic',
executeRateInput: ''
}
},
watch: {
'workflowDetail.executeRate': {
handler(newVal) {
this.executeRateInput = newVal || ''
},
immediate: true
}
},
created() {
@@ -202,6 +230,35 @@ export default {
return this.corpOutput.calculateRate || '-'
}
return '-'
},
/** 设定执行利率 */
handleSetExecuteRate() {
// 验证输入
const value = this.executeRateInput
if (value === null || value === undefined || value === '') {
this.$modal.msgError("请输入执行利率")
return
}
// 验证是否为有效数字
const numValue = parseFloat(value)
if (isNaN(numValue)) {
this.$modal.msgError("请输入有效的数字")
return
}
if (numValue < 0 || numValue > 100) {
this.$modal.msgError("执行利率必须在 0 到 100 之间")
return
}
// 调用 API
setExecuteRate(this.workflowDetail.serialNum, value.toString()).then(() => {
this.$modal.msgSuccess("执行利率设定成功")
// 重新获取详情数据
this.getDetail()
}).catch(error => {
this.$modal.msgError("设定失败:" + (error.msg || error.message || "未知错误"))
})
}
}
}
@@ -257,6 +314,18 @@ export default {
padding: 16px;
}
// 执行利率输入区域
.execute-rate-input-wrapper {
display: flex;
flex-direction: column;
gap: 8px;
width: 100%;
.execute-rate-input {
width: 100%;
}
}
// 利率值样式
.rate-value {
color: #67c23a;