归档贷款定价流程相关的 OpenSpec 变更

- 归档 add-loan-pricing-workflow:完成流程后端 API
- 归档 add-loan-pricing-frontend:完成前端列表和详情页面
- 归档 add-loan-pricing-create:完成前端创建功能
- 新增规范文件:loan-pricing-workflow 和 loan-pricing-workflow-ui
- 更新前端 API 和页面组件(新增创建流程功能)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
wkc
2026-01-20 18:20:23 +08:00
parent 4511f91e91
commit f2448ff97f
15 changed files with 656 additions and 7 deletions

View File

@@ -16,3 +16,12 @@ export function getWorkflow(serialNum) {
method: 'get'
})
}
// 新增利率定价流程
export function createWorkflow(data) {
return request({
url: '/loanPricing/workflow/create',
method: 'post',
data: data
})
}

View File

@@ -32,6 +32,16 @@
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['loanPricing:workflow:create']"
>新增</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@@ -70,7 +80,7 @@
/>
<!-- 详情对话框 -->
<el-dialog title="利率定价流程详情" :visible.sync="open" width="800px" append-to-body>
<el-dialog title="利率定价流程详情" :visible.sync="openDetail" width="800px" append-to-body>
<el-descriptions :column="2" border>
<el-descriptions-item label="业务方流水号" :span="2">{{ detail.serialNum }}</el-descriptions-item>
<el-descriptions-item label="机构编码">{{ detail.orgCode }}</el-descriptions-item>
@@ -103,14 +113,190 @@
<el-descriptions-item label="更新者">{{ detail.updateBy }}</el-descriptions-item>
</el-descriptions>
<div slot="footer" class="dialog-footer">
<el-button @click="open = false"> </el-button>
<el-button @click="openDetail = false"> </el-button>
</div>
</el-dialog>
<!-- 添加流程对话框 -->
<el-dialog title="新增利率定价流程" :visible.sync="openCreate" width="900px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="140px">
<el-tabs v-model="activeTab">
<!-- 基本信息 -->
<el-tab-pane label="基本信息" name="basic">
<el-row>
<el-col :span="12">
<el-form-item label="客户内码" prop="custIsn">
<el-input v-model="form.custIsn" placeholder="请输入客户内码" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户名称" prop="custName">
<el-input v-model="form.custName" placeholder="请输入客户名称" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="客户类型" prop="custType">
<el-select v-model="form.custType" placeholder="请选择客户类型" style="width: 100%">
<el-option label="个人" value="个人" />
<el-option label="企业" value="企业" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="证件类型" prop="idType">
<el-input v-model="form.idType" placeholder="请输入证件类型" />
</el-form-item>
</el-col>
</el-row>
</el-tab-pane>
<!-- 贷款信息 -->
<el-tab-pane label="贷款信息" name="loan">
<el-row>
<el-col :span="12">
<el-form-item label="申请金额(元)" prop="applyAmt">
<el-input v-model="form.applyAmt" placeholder="请输入申请金额" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="贷款利率(%)" prop="loanRate">
<el-input v-model="form.loanRate" placeholder="请输入贷款利率" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="担保方式" prop="guarType">
<el-select v-model="form.guarType" placeholder="请选择担保方式" style="width: 100%">
<el-option label="信用" value="信用" />
<el-option label="保证" value="保证" />
<el-option label="抵押" value="抵押" />
<el-option label="质押" value="质押" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="贷款用途" prop="loanPurpose">
<el-select v-model="form.loanPurpose" placeholder="请选择贷款用途" style="width: 100%">
<el-option label="消费贷款" value="consumer" />
<el-option label="经营贷款" value="business" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="抵质押类型" prop="collType">
<el-select v-model="form.collType" placeholder="请选择抵质押类型" style="width: 100%">
<el-option label="一线" value="一线" />
<el-option label="一类" value="一类" />
<el-option label="二类" value="二类" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否有经营佐证">
<el-switch v-model="form.bizProofActive" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="抵质押物三方所有">
<el-switch v-model="form.collThirdPartyActive" />
</el-form-item>
</el-col>
</el-row>
</el-tab-pane>
<!-- 中间业务标识 -->
<el-tab-pane label="中间业务标识" name="mid">
<el-row>
<el-col :span="12">
<el-form-item label="个人快捷支付">
<el-switch v-model="form.midPerQuickPayActive" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="个人电费代扣">
<el-switch v-model="form.midPerEleDdcActive" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="企业电费代扣">
<el-switch v-model="form.midEntEleDdcActive" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="企业水费代扣">
<el-switch v-model="form.midEntWaterDdcActive" />
</el-form-item>
</el-col>
</el-row>
</el-tab-pane>
<!-- 企业标识 -->
<el-tab-pane label="企业标识" name="ent">
<el-row>
<el-col :span="12">
<el-form-item label="净身企业">
<el-switch v-model="form.isCleanEntActive" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="开立基本结算账户">
<el-switch v-model="form.hasSettleAcctActive" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="制造业企业">
<el-switch v-model="form.isManufacturingActive" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="省农担担保贷款">
<el-switch v-model="form.isAgriGuarActive" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="纳税信用等级A级">
<el-switch v-model="form.isTaxAActive" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="县级及以上农业龙头企业">
<el-switch v-model="form.isAgriLeadingActive" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="普惠小微借款人">
<el-switch v-model="form.isInclusiveFinanceActive" />
</el-form-item>
</el-col>
</el-row>
</el-tab-pane>
</el-tabs>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancelCreate"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listWorkflow, getWorkflow } from "@/api/loanPricing/workflow"
import { listWorkflow, getWorkflow, createWorkflow } from "@/api/loanPricing/workflow"
export default {
name: "LoanPricingWorkflow",
@@ -124,10 +310,34 @@ export default {
total: 0,
// 利率定价流程表格数据
workflowList: [],
// 是否显示弹出层
open: false,
// 是否显示详情弹出层
openDetail: false,
// 是否显示创建弹出层
openCreate: false,
// 详情数据
detail: {},
// 当前激活的标签页
activeTab: 'basic',
// 表单参数
form: {},
// 表单校验
rules: {
custIsn: [
{ required: true, message: "客户内码不能为空", trigger: "blur" }
],
custType: [
{ required: true, message: "请选择客户类型", trigger: "change" }
],
guarType: [
{ required: true, message: "请选择担保方式", trigger: "change" }
],
applyAmt: [
{ required: true, message: "申请金额不能为空", trigger: "blur" }
],
loanRate: [
{ required: true, message: "贷款利率不能为空", trigger: "blur" }
]
},
// 查询参数
queryParams: {
pageNum: 1,
@@ -163,10 +373,96 @@ export default {
},
/** 查看详情操作 */
handleView(row) {
this.open = true
this.openDetail = true
getWorkflow(row.serialNum).then(response => {
this.detail = response.data
})
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.openCreate = true
this.activeTab = 'basic'
},
/** 表单重置 */
reset() {
this.form = {
orgCode: '931000',
runType: '1',
custIsn: undefined,
custName: undefined,
custType: undefined,
idType: undefined,
applyAmt: undefined,
loanRate: undefined,
guarType: undefined,
loanPurpose: undefined,
collType: undefined,
// 开关状态
bizProofActive: false,
collThirdPartyActive: false,
midPerQuickPayActive: false,
midPerEleDdcActive: false,
midEntEleDdcActive: false,
midEntWaterDdcActive: false,
isCleanEntActive: false,
hasSettleAcctActive: false,
isManufacturingActive: false,
isAgriGuarActive: false,
isTaxAActive: false,
isAgriLeadingActive: false,
isInclusiveFinanceActive: false
}
this.resetForm("form")
},
/** 取消按钮 */
cancelCreate() {
this.openCreate = false
this.reset()
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
// 转换开关值为字符串
const data = {
...this.form,
bizProof: this.form.bizProofActive ? 'true' : 'false',
collThirdParty: this.form.collThirdPartyActive ? 'true' : 'false',
midPerQuickPay: this.form.midPerQuickPayActive ? 'true' : 'false',
midPerEleDdc: this.form.midPerEleDdcActive ? 'true' : 'false',
midEntEleDdc: this.form.midEntEleDdcActive ? 'true' : 'false',
midEntWaterDdc: this.form.midEntWaterDdcActive ? 'true' : 'false',
isCleanEnt: this.form.isCleanEntActive ? 'true' : 'false',
hasSettleAcct: this.form.hasSettleAcctActive ? 'true' : 'false',
isManufacturing: this.form.isManufacturingActive ? 'true' : 'false',
isAgriGuar: this.form.isAgriGuarActive ? 'true' : 'false',
isTaxA: this.form.isTaxAActive ? 'true' : 'false',
isAgriLeading: this.form.isAgriLeadingActive ? 'true' : 'false',
isInclusiveFinance: this.form.isInclusiveFinanceActive ? 'true' : 'false'
}
// 删除开关状态字段
delete data.bizProofActive
delete data.collThirdPartyActive
delete data.midPerQuickPayActive
delete data.midPerEleDdcActive
delete data.midEntEleDdcActive
delete data.midEntWaterDdcActive
delete data.isCleanEntActive
delete data.hasSettleAcctActive
delete data.isManufacturingActive
delete data.isAgriGuarActive
delete data.isTaxAActive
delete data.isAgriLeadingActive
delete data.isInclusiveFinanceActive
createWorkflow(data).then(response => {
this.$modal.msgSuccess("新增成功")
this.openCreate = false
this.getList()
})
}
})
}
}
}