Files
2026-01-20 23:46:44 +08:00

143 lines
3.7 KiB
Markdown
Raw Permalink 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.
# 设计文档:流程详情页面
## 架构概述
将流程详情从对话框组件迁移到独立的页面组件,遵循若依框架现有的路由模式。
## 组件设计
### 详情页面组件 (detail.vue)
**位置**`ruoyi-ui/src/views/loanPricing/workflow/detail.vue`
**页面结构**
```
<template>
<div class="app-container">
<!-- 页面标题和操作栏 -->
<el-page-header @back="goBack" :content="pageTitle" />
<!-- 详情内容卡片 -->
<el-card class="mt-20">
<el-descriptions :column="2" border>
<!-- 基本信息 -->
<!-- 业务信息 -->
<!-- 业务标识 -->
<!-- 抵质押信息 -->
<!-- 其他信息 -->
</el-descriptions>
</el-card>
<!-- 返回按钮 -->
<el-row class="mt-20">
<el-col :span="24">
<el-button @click="goBack">返回</el-button>
</el-col>
</el-row>
</div>
</template>
```
**数据获取**
- 通过 `$route.params.serialNum` 获取业务方流水号
-`created()` 钩子中调用 API 获取详情数据
- 处理加载状态和错误状态
**导航逻辑**
- 返回按钮:`this.$router.go(-1)` 或跳转到列表页
- 面包屑导航:高亮"流程列表"菜单项
### 路由配置
**位置**`ruoyi-ui/src/router/index.js` - `dynamicRoutes` 数组
**配置模式**:参考现有的 `/system/user-auth/role/:userId` 路由
```javascript
{
path: '/loanPricing/workflow-detail',
component: Layout,
hidden: true,
permissions: ['loanPricing:workflow:query'],
children: [
{
path: ':serialNum',
component: () => import('@/views/loanPricing/workflow/detail'),
name: 'LoanPricingWorkflowDetail',
meta: { title: '流程详情', activeMenu: '/loanPricing/workflow' }
}
]
}
```
**路由参数说明**
- `:serialNum`:业务方流水号,用于 API 调用
- `activeMenu`:保持列表页菜单高亮
- `permissions`:复用现有权限 `loanPricing:workflow:query`
### 列表页修改
**修改位置**`ruoyi-ui/src/views/loanPricing/workflow/index.vue`
**变更内容**
1. 移除 `openDetail` 状态变量
2. 移除 `handleView()` 方法中的弹窗逻辑
3. 修改"查看"按钮的点击事件,从 `@click="handleView(scope.row)"` 改为路由跳转
**新的 `handleView()` 方法**
```javascript
handleView(row) {
this.$router.push({
name: 'LoanPricingWorkflowDetail',
params: { serialNum: row.serialNum }
})
}
```
**移除内容**
- 详情对话框模板(`<el-dialog title="利率定价流程详情"...>`
- `detail` 数据对象
- `openDetail` 状态
## UI/UX 设计
### 详情页面布局
1. **页面标题**:使用 `el-page-header` 组件,显示"流程详情"标题和返回按钮
2. **内容区域**:使用 `el-card` + `el-descriptions` 展示详情信息,保持与弹窗相同的两列布局
3. **底部操作**:返回按钮(也可以考虑移除,因为有页面标题的返回按钮)
### 响应式设计
- 移动端:`el-descriptions` 自动调整为单列
- 内容区域添加适当的内边距和外边距
### 加载状态
- 显示 loading 遮罩层,直到数据加载完成
- 处理 API 错误,显示错误提示并返回列表页
## 技术约束
1. **框架版本**Vue Router 3.4.9
2. **路由模式**History 模式(去掉 URL 中的 #
3. **权限控制**:通过 `permissions` 字段控制路由访问
4. **组件懒加载**:使用 `() => import()` 动态导入
## 测试策略
### 单元测试
- 路由跳转逻辑
- 参数解析
- API 调用
### 集成测试
- 从列表页跳转到详情页
- 详情页返回到列表页
- 权限控制(无权限用户无法访问)
### UI 测试
- 详情信息正确显示
- 面包屑导航正确高亮
- 返回按钮正常工作