# 利率定价创建流程前端重构设计文档 ## 设计概述 本文档描述利率定价创建流程的前端重构设计,将原有的单一表单拆分为个人客户和企业客户两个独立的创建流程。 ## 设计日期 2026-02-02 --- ## 一、交互流程 ### 用户操作步骤 1. **点击「新增」按钮** → 弹出「选择客户类型」对话框 2. **选择客户类型** → 打开对应的创建表单对话框 3. **填写表单并提交** → 调用对应的 API 接口 4. **成功/失败处理** - 成功:关闭对话框,刷新列表,显示成功提示 - 失败:保留表单数据,显示后端错误信息 --- ## 二、组件结构 ### 文件组织 ``` ruoyi-ui/src/ ├── views/loanPricing/workflow/ │ ├── index.vue (修改) │ └── components/ │ ├── CustomerTypeSelector.vue (新增) │ ├── WorkflowCreateDialog.vue (删除) │ ├── PersonalCreateDialog.vue (新增) │ └── CorporateCreateDialog.vue (新增) └── api/loanPricing/ └── workflow.js (修改) ``` ### 组件职责 | 组件 | 职责 | |-----------------------|-----------| | CustomerTypeSelector | 客户类型选择对话框 | | PersonalCreateDialog | 个人客户创建表单 | | CorporateCreateDialog | 企业客户创建表单 | --- ## 三、表单字段设计 ### 个人客户表单字段 | 分组 | 字段 | 类型 | 必填 | 说明 | |-------|----------------|--------|----|------------| | 基本信息 | custIsn | String | 是 | 客户内码 | | 基本信息 | custName | String | 是 | 客户名称 | | 基本信息 | idType | String | 是 | 证件类型 | | 基本信息 | idNum | String | 是 | 证件号码 | | 贷款信息 | guarType | String | 是 | 担保方式 | | 贷款信息 | applyAmt | String | 是 | 申请金额(元) | | 贷款信息 | bizProof | String | 是 | 是否有经营佐证 | | 贷款信息 | loanLoop | String | 是 | 循环功能 | | 抵质押信息 | collType | String | 是 | 抵质押类型 | | 抵质押信息 | collThirdParty | String | 是 | 抵质押物是否三方所有 | ### 企业客户表单字段 | 分组 | 字段 | 类型 | 必填 | 说明 | |-------|---------------------|--------|----|------------| | 基本信息 | custIsn | String | 是 | 客户内码 | | 基本信息 | custName | String | 是 | 客户名称 | | 基本信息 | idType | String | 是 | 证件类型 | | 基本信息 | idNum | String | 是 | 证件号码 | | 贷款信息 | guarType | String | 是 | 担保方式 | | 贷款信息 | applyAmt | String | 是 | 申请金额(元) | | 贷款信息 | loanTerm | String | 是 | 贷款期限(月) | | 企业标识 | isAgriGuar | String | 是 | 省农担担保贷款 | | 企业标识 | isGreenLoan | String | 是 | 绿色贷款 | | 企业标识 | isTechEnt | String | 是 | 科技型企业 | | 企业标识 | isTradeConstruction | String | 是 | 贸易和建筑业企业 | | 抵质押信息 | collType | String | 是 | 抵质押类型 | | 抵质押信息 | collThirdParty | String | 是 | 抵质押物是否三方所有 | --- ## 四、API 接口设计 ### 新增接口函数 ```javascript // 创建个人客户利率定价流程 export function createPersonalWorkflow(data) { return request({ url: '/loanPricing/workflow/create/personal', method: 'post', data: data }) } // 创建企业客户利率定价流程 export function createCorporateWorkflow(data) { return request({ url: '/loanPricing/workflow/create/corporate', method: 'post', data: data }) } ``` ### 数据转换规则 开关字段在提交时需要转换为字符串 `"true"/"false"`: ```javascript bizProof: this.form.bizProof ? 'true' : 'false' ``` --- ## 五、验证规则 ### 个人客户验证规则 | 字段 | 验证规则 | |----------------|------------------------| | custIsn | 必填,长度 1-50 字符 | | custName | 必填,长度 1-100 字符 | | idType | 必填 | | idNum | 必填,身份证格式 15/18 位 | | guarType | 必填 | | applyAmt | 必填,正数,最大值 999999999.99 | | bizProof | 必填(开关值,默认 "false") | | loanLoop | 必填(开关值,默认 "false") | | collType | 必填 | | collThirdParty | 必填(开关值,默认 "false") | ### 企业客户验证规则 | 字段 | 验证规则 | |---------------------|------------------------| | custIsn | 必填,长度 1-50 字符 | | custName | 必填,长度 1-100 字符 | | idType | 必填 | | idNum | 必填,统一社会信用代码 18 位 | | guarType | 必填 | | applyAmt | 必填,正数,最大值 999999999.99 | | loanTerm | 必填,正整数,范围 1-360 | | isAgriGuar | 必填(开关值,默认 "false") | | isGreenLoan | 必填(开关值,默认 "false") | | isTechEnt | 必填(开关值,默认 "false") | | isTradeConstruction | 必填(开关值,默认 "false") | | collType | 必填 | | collThirdParty | 必填(开关值,默认 "false") | --- ## 六、UI 样式规范 ### 对话框规范 | 对话框类型 | 宽度 | 说明 | |--------|-------|------| | 客户类型选择 | 500px | 居中显示 | | 表单对话框 | 900px | 两列布局 | ### 表单布局 - 分组:使用 `el-divider` 分隔,带标题 - 字段:两列布局(`el-col :span="12"`) - 必填标识:红色星号 - 按钮:右下角,「确定」(主按钮)、「取消」 ### 响应式处理 - 当屏幕宽度 < 768px 时,表单字段改为单列布局 --- ## 七、错误处理 | 场景 | 处理方式 | |--------|--------------------| | 前端验证失败 | 阻止提交,高亮错误字段 | | 网络错误 | 显示网络错误提示,保留表单 | | 后端业务错误 | 显示后端返回的 `msg`,保留表单 | | 成功 | 关闭对话框,刷新列表,显示成功提示 | --- ## 八、数据字典 ### 担保方式 (guarType) | 值 | 说明 | |----|------| | 信用 | 信用贷款 | | 保证 | 保证贷款 | | 抵押 | 抵押贷款 | | 质押 | 质押贷款 | ### 抵质押类型 (collType) | 值 | 说明 | |----|------| | 一线 | 一线抵押 | | 一类 | 一类抵押 | | 二类 | 二类抵押 | ### 证件类型 (idType) - 个人:身份证 - 企业:统一社会信用代码