Files
loan-pricing/openspec/changes/extract-workflow-create-dialog/design.md
2026-01-20 23:46:44 +08:00

150 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 设计文档:抽离流程创建对话框组件
## 组件设计
### WorkflowCreateDialog.vue 组件
**位置**`ruoyi-ui/src/views/loanPricing/workflow/components/WorkflowCreateDialog.vue`
**职责**:负责利率定价流程创建表单的展示和交互逻辑
#### Props
| 名称 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `visible` | `Boolean` | `false` | 对话框显示状态v-model 绑定) |
#### Events
| 事件名 | 参数 | 说明 |
|--------|------|------|
| `update:visible` | `(value: Boolean)` | 对话框显示状态变化时触发 |
| `success` | - | 创建成功后触发,父组件可刷新列表 |
#### 内部状态
```javascript
data() {
return {
activeTab: 'basic', // 当前激活的标签页
form: {}, // 表单数据
rules: {} // 表单验证规则
}
}
```
#### 表单字段结构
保持与现有实现一致,包含以下分组:
1. **基本信息** 标签页 (`basic`)
- 客户内码 (`custIsn`) - 必填
- 客户名称 (`custName`)
- 客户类型 (`custType`) - 必填,下拉选择
- 证件类型 (`idType`) - **下拉选择**(身份证、统一社会信用代码)
2. **贷款信息** 标签页 (`loan`)
- 申请金额 (`applyAmt`) - 必填
- 贷款利率 (`loanRate`) - 必填
- 担保方式 (`guarType`) - 必填,下拉选择
- 贷款用途 (`loanPurpose`) - 下拉选择
- 抵质押类型 (`collType`) - 下拉选择
- 是否有经营佐证 (`bizProofActive`) - 开关
- 抵质押物三方所有 (`collThirdPartyActive`) - 开关
3. **中间业务标识** 标签页 (`mid`)
- 个人快捷支付 (`midPerQuickPayActive`) - 开关
- 个人电费代扣 (`midPerEleDdcActive`) - 开关
- 企业电费代扣 (`midEntEleDdcActive`) - 开关
- 企业水费代扣 (`midEntWaterDdcActive`) - 开关
4. **企业标识** 标签页 (`ent`)
- 净身企业 (`isCleanEntActive`) - 开关
- 开立基本结算账户 (`hasSettleAcctActive`) - 开关
- 制造业企业 (`isManufacturingActive`) - 开关
- 省农担担保贷款 (`isAgriGuarActive`) - 开关
- 纳税信用等级A级 (`isTaxAActive`) - 开关
- 县级及以上农业龙头企业 (`isAgriLeadingActive`) - 开关
- 普惠小微借款人 (`isInclusiveFinanceActive`) - 开关
#### 方法
| 方法名 | 说明 |
|--------|------|
| `reset()` | 重置表单到初始状态 |
| `cancel()` | 关闭对话框并重置表单 |
| `submitForm()` | 验证并提交表单 |
### index.vue 修改
**移除内容**
- 删除对话框相关的模板代码(第 82-256 行)
- 删除 `openCreate``activeTab``form``rules` 状态
- 删除 `handleAdd()``reset()``cancelCreate()``submitForm()` 方法
**新增内容**
- 导入 `WorkflowCreateDialog` 组件
- 注册组件
- 添加 `showCreateDialog` 状态(替代 `openCreate`
- 修改 `handleAdd()` 方法,设置 `showCreateDialog = true`
- 添加 `handleCreateSuccess()` 方法,处理创建成功后刷新列表
## 组件通信流程
```
┌─────────────────────────────────────────────────────────────┐
│ index.vue │
│ ┌─────────────┐ ┌─────────────────────────────────┐ │
│ │ handleAdd() │ ───► │ showCreateDialog = true │ │
│ └─────────────┘ └─────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ showCreateDialog (v-model) │ │
│ ├──────────────────────────────────────────────────────┤ │
│ │ │ │
│ ▼ │ │
│ ┌────────────────────────────────────────────────────┐ │ │
│ │ WorkflowCreateDialog.vue │ │ │
│ │ │ │ │
│ │ ◄────── visible (prop) ───────┐ │ │ │
│ │ │ │ │ │
│ │ ───────► update:visible ──────┘ │ │ │
│ │ │ │ │
│ │ submitForm() ──► API 调用 ──► @success 事件 ────────┼──┘
│ │ │
│ └────────────────────────────────────────────────────┘
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ handleCreateSuccess() ──► getList() ──► 刷新列表 │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
## 证件类型下拉框实现
```vue
<el-form-item label="证件类型" prop="idType">
<el-select v-model="form.idType" placeholder="请选择证件类型" style="width: 100%">
<el-option label="身份证" value="身份证" />
<el-option label="统一社会信用代码" value="统一社会信用代码" />
</el-select>
</el-form-item>
```
## 目录结构
```
ruoyi-ui/src/views/loanPricing/workflow/
├── components/
│ └── WorkflowCreateDialog.vue # 新增:创建对话框组件
├── detail.vue # 详情页面
└── index.vue # 列表页面(修改)
```
## 兼容性考虑
- 组件使用 Vue 2.6.12 的 Options API 风格
- 使用 Element UI 2.15.14 组件
- 保持与现有代码风格一致
- 确保表单验证规则和行为不变