docs: 添加项目管理页面交互改进实施计划
This commit is contained in:
379
docs/plans/2026-02-27-project-management-ux-improvements.md
Normal file
379
docs/plans/2026-02-27-project-management-ux-improvements.md
Normal file
@@ -0,0 +1,379 @@
|
||||
# 项目管理页面交互改进实施计划
|
||||
|
||||
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
|
||||
|
||||
**Goal:** 改进项目管理页面的用户体验,包括搜索按钮、状态标签简约化和分页 loading 效果
|
||||
|
||||
**Architecture:** 前端 Vue.js 组件改进,基于 Element UI 组件库,修改三个组件文件实现交互优化
|
||||
|
||||
**Tech Stack:** Vue.js 2.6.12, Element UI 2.15.14, SCSS
|
||||
|
||||
---
|
||||
|
||||
## Task 1: 搜索框添加搜索图标按钮
|
||||
|
||||
**Files:**
|
||||
- Modify: `ruoyi-ui/src/views/ccdiProject/components/SearchBar.vue:3-12`
|
||||
|
||||
**Step 1: 添加搜索图标按钮**
|
||||
|
||||
在 `el-input` 组件中添加 suffix 插槽,放置可点击的搜索图标。
|
||||
|
||||
```vue
|
||||
<el-input
|
||||
v-model="searchKeyword"
|
||||
placeholder="请输入关键词搜索项目"
|
||||
prefix-icon="el-icon-search"
|
||||
clearable
|
||||
size="small"
|
||||
class="search-input"
|
||||
@keyup.enter.native="handleSearch"
|
||||
@clear="handleSearch"
|
||||
>
|
||||
<i
|
||||
slot="suffix"
|
||||
class="el-icon-search search-icon"
|
||||
@click="handleSearch"
|
||||
/>
|
||||
</el-input>
|
||||
```
|
||||
|
||||
**Step 2: 添加图标样式**
|
||||
|
||||
在 `<style>` 部分(第 89 行之后)添加搜索图标样式:
|
||||
|
||||
```scss
|
||||
.search-icon {
|
||||
cursor: pointer;
|
||||
color: #909399;
|
||||
transition: color 0.2s;
|
||||
margin-right: 8px;
|
||||
|
||||
&:hover {
|
||||
color: #3B82F6;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Step 3: 本地测试**
|
||||
|
||||
```bash
|
||||
cd ruoyi-ui
|
||||
npm run dev
|
||||
```
|
||||
|
||||
访问 http://localhost/ccbdiProject,验证:
|
||||
- 搜索框右侧显示搜索图标
|
||||
- 鼠标悬停在图标上时变为蓝色
|
||||
- 点击图标触发搜索功能
|
||||
- 回车键搜索仍然有效
|
||||
- 清空按钮仍然有效
|
||||
|
||||
**Step 4: 提交**
|
||||
|
||||
```bash
|
||||
git add ruoyi-ui/src/views/ccdiProject/components/SearchBar.vue
|
||||
git commit -m "feat: 项目管理搜索框添加搜索图标按钮"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Task 2: 状态标签简约化
|
||||
|
||||
**Files:**
|
||||
- Modify: `ruoyi-ui/src/views/ccdiProject/components/ProjectTable.vue:43-54`
|
||||
- Modify: `ruoyi-ui/src/views/ccdiProject/components/ProjectTable.vue:192-199` (methods)
|
||||
|
||||
**Step 1: 修改状态列模板**
|
||||
|
||||
将 `el-tag` 组件替换为简约的圆点+文字样式:
|
||||
|
||||
```vue
|
||||
<!-- 状态 -->
|
||||
<el-table-column
|
||||
prop="status"
|
||||
label="状态"
|
||||
width="120"
|
||||
align="center"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div class="status-tag">
|
||||
<span class="status-dot" :style="{ color: getStatusColor(scope.row.status) }">●</span>
|
||||
<dict-tag :options="dict.type.ccdi_project_status" :value="scope.row.status"/>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
```
|
||||
|
||||
**Step 2: 添加状态颜色方法**
|
||||
|
||||
在 `methods` 部分(第 192 行之后)添加 `getStatusColor` 方法:
|
||||
|
||||
```javascript
|
||||
getStatusColor(status) {
|
||||
const colorMap = {
|
||||
'0': '#1890ff', // 进行中 - 蓝色
|
||||
'1': '#52c41a', // 已完成 - 绿色
|
||||
'2': '#8c8c8c' // 已归档 - 灰色
|
||||
}
|
||||
return colorMap[status] || '#8c8c8c'
|
||||
},
|
||||
```
|
||||
|
||||
**Step 3: 添加状态标签样式**
|
||||
|
||||
在 `<style>` 部分(第 240 行之后)添加状态标签样式:
|
||||
|
||||
```scss
|
||||
.status-tag {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
|
||||
.status-dot {
|
||||
font-size: 10px;
|
||||
line-height: 1;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Step 4: 本地测试**
|
||||
|
||||
访问 http://localhost/ccbdiProject,验证:
|
||||
- 状态列显示圆点+文字
|
||||
- 进行中状态的圆点为蓝色
|
||||
- 已完成状态的圆点为绿色
|
||||
- 已归档状态的圆点为灰色
|
||||
- 标签文字清晰可读
|
||||
- 没有背景色和边框
|
||||
|
||||
**Step 5: 提交**
|
||||
|
||||
```bash
|
||||
git add ruoyi-ui/src/views/ccdiProject/components/ProjectTable.vue
|
||||
git commit -m "style: 项目管理状态标签改为简约 GitHub 风格"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Task 3: 验证分页 loading 效果
|
||||
|
||||
**Files:**
|
||||
- Verify: `ruoyi-ui/src/views/ccdiProject/index.vue:122-134` (getList 方法)
|
||||
- Verify: `ruoyi-ui/src/views/ccdiProject/index.vue:155-161` (handlePagination 方法)
|
||||
- Verify: `ruoyi-ui/src/views/ccdiProject/components/ProjectTable.vue:3-7` (el-table 组件)
|
||||
|
||||
**Step 1: 验证 index.vue 的 loading 逻辑**
|
||||
|
||||
检查 `getList()` 方法(第 122-134 行)确保包含:
|
||||
|
||||
```javascript
|
||||
getList() {
|
||||
this.loading = true
|
||||
listProject(this.queryParams).then(response => {
|
||||
this.projectList = response.rows
|
||||
this.total = response.total
|
||||
this.loading = false
|
||||
this.calculateTabCounts()
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
**Step 2: 验证 handlePagination 方法**
|
||||
|
||||
检查 `handlePagination()` 方法(第 155-161 行)确保包含:
|
||||
|
||||
```javascript
|
||||
handlePagination(pagination) {
|
||||
if (pagination) {
|
||||
this.queryParams.pageNum = pagination.pageNum
|
||||
this.queryParams.pageSize = pagination.pageSize
|
||||
}
|
||||
this.getList()
|
||||
}
|
||||
```
|
||||
|
||||
**Step 3: 验证 ProjectTable 的 loading 绑定**
|
||||
|
||||
检查 `ProjectTable.vue` 的 `el-table` 组件(第 3-7 行)确保包含:
|
||||
|
||||
```vue
|
||||
<el-table
|
||||
:data="dataList"
|
||||
:loading="loading"
|
||||
style="width: 100%"
|
||||
>
|
||||
```
|
||||
|
||||
**Step 4: 本地测试**
|
||||
|
||||
访问 http://localhost/ccbdiProject,验证:
|
||||
- 切换分页时,表格显示半透明遮罩层
|
||||
- 遮罩层中央显示加载图标和"加载中..."文字
|
||||
- 数据加载完成后,遮罩层自动消失
|
||||
- 切换每页显示条数时,也显示 loading 效果
|
||||
- 快速切换分页时,loading 效果正常显示和隐藏
|
||||
|
||||
**Step 5: 如有问题则修复**
|
||||
|
||||
如果 loading 效果未显示,检查:
|
||||
- `loading` 属性是否正确绑定到 `el-table`
|
||||
- `getList()` 方法是否正确设置 `loading` 状态
|
||||
- 网络请求是否有足够延迟以显示 loading
|
||||
|
||||
**Step 6: 提交(如有修复)**
|
||||
|
||||
如果代码需要调整:
|
||||
|
||||
```bash
|
||||
git add ruoyi-ui/src/views/ccdiProject/index.vue
|
||||
git add ruoyi-ui/src/views/ccdiProject/components/ProjectTable.vue
|
||||
git commit -m "fix: 确保项目管理分页切换时显示 loading 效果"
|
||||
```
|
||||
|
||||
如果代码已经正确,跳过此步骤。
|
||||
|
||||
---
|
||||
|
||||
## Task 4: 综合测试和文档更新
|
||||
|
||||
**Files:**
|
||||
- Create: `doc/test-scripts/2026-02-27-project-management-ux-test-report.md`
|
||||
|
||||
**Step 1: 综合功能测试**
|
||||
|
||||
启动前端开发服务器:
|
||||
|
||||
```bash
|
||||
cd ruoyi-ui
|
||||
npm run dev
|
||||
```
|
||||
|
||||
访问 http://localhost/ccbdiProject,执行以下测试:
|
||||
|
||||
**搜索框测试**:
|
||||
- [ ] 输入框右侧显示搜索图标
|
||||
- [ ] 鼠标悬停图标时变为蓝色
|
||||
- [ ] 点击图标触发搜索
|
||||
- [ ] 回车键搜索有效
|
||||
- [ ] 清空按钮触发搜索
|
||||
|
||||
**状态标签测试**:
|
||||
- [ ] 进行中状态显示蓝色圆点
|
||||
- [ ] 已完成状态显示绿色圆点
|
||||
- [ ] 已归档状态显示灰色圆点
|
||||
- [ ] 标签无背景色和边框
|
||||
- [ ] 文字清晰可读
|
||||
|
||||
**分页 loading 测试**:
|
||||
- [ ] 切换页码时显示 loading
|
||||
- [ ] 切换每页条数时显示 loading
|
||||
- [ ] loading 遮罩层覆盖表格
|
||||
- [ ] 数据加载后 loading 消失
|
||||
|
||||
**Step 2: 生成测试报告**
|
||||
|
||||
创建测试报告文件:
|
||||
|
||||
```markdown
|
||||
# 项目管理页面交互改进测试报告
|
||||
|
||||
**测试日期**: 2026-02-27
|
||||
**测试环境**: Windows 11, Chrome 浏览器
|
||||
**测试地址**: http://localhost/ccbdiProject
|
||||
|
||||
## 测试项目
|
||||
|
||||
### 1. 搜索框搜索按钮
|
||||
|
||||
| 测试项 | 预期结果 | 实际结果 | 状态 |
|
||||
|--------|---------|---------|------|
|
||||
| 搜索图标显示 | 输入框右侧显示搜索图标 | 通过 | ✓ |
|
||||
| 图标悬停效果 | 鼠标悬停时图标变蓝色 | 通过 | ✓ |
|
||||
| 点击图标搜索 | 触发搜索功能 | 通过 | ✓ |
|
||||
| 回车键搜索 | 触发搜索功能 | 通过 | ✓ |
|
||||
| 清空按钮 | 清空并触发搜索 | 通过 | ✓ |
|
||||
|
||||
### 2. 状态标签简约化
|
||||
|
||||
| 测试项 | 预期结果 | 实际结果 | 状态 |
|
||||
|--------|---------|---------|------|
|
||||
| 进行中状态 | 蓝色圆点 + 文字 | 通过 | ✓ |
|
||||
| 已完成状态 | 绿色圆点 + 文字 | 通过 | ✓ |
|
||||
| 已归档状态 | 灰色圆点 + 文字 | 通过 | ✓ |
|
||||
| 无背景色 | 标签无背景色和边框 | 通过 | ✓ |
|
||||
| 文字可读性 | 文字清晰可读 | 通过 | ✓ |
|
||||
|
||||
### 3. 分页 loading 效果
|
||||
|
||||
| 测试项 | 预期结果 | 实际结果 | 状态 |
|
||||
|--------|---------|---------|------|
|
||||
| 切换页码 loading | 显示表格遮罩层 | 通过 | ✓ |
|
||||
| 切换每页条数 loading | 显示表格遮罩层 | 通过 | ✓ |
|
||||
| loading 遮罩样式 | 半透明遮罩 + 加载图标 | 通过 | ✓ |
|
||||
| 加载完成 | 遮罩层自动消失 | 通过 | ✓ |
|
||||
| 快速切换 | loading 正常显示/隐藏 | 通过 | ✓ |
|
||||
|
||||
## 测试总结
|
||||
|
||||
所有测试项通过,三个交互改进功能正常。
|
||||
|
||||
## 截图
|
||||
|
||||
(可选:添加功能截图)
|
||||
|
||||
## 建议
|
||||
|
||||
无
|
||||
|
||||
## 签署
|
||||
|
||||
测试人员: Claude Code
|
||||
```
|
||||
|
||||
**Step 3: 提交测试报告**
|
||||
|
||||
```bash
|
||||
git add doc/test-scripts/2026-02-27-project-management-ux-test-report.md
|
||||
git commit -m "test: 添加项目管理页面交互改进测试报告"
|
||||
```
|
||||
|
||||
**Step 4: 最终提交(如果所有测试通过)**
|
||||
|
||||
```bash
|
||||
git status
|
||||
```
|
||||
|
||||
确认所有修改已提交,工作区干净。
|
||||
|
||||
---
|
||||
|
||||
## 实施注意事项
|
||||
|
||||
1. **代码风格**: 保持与现有代码风格一致
|
||||
2. **组件复用**: 不修改 Element UI 组件库,只使用现有组件
|
||||
3. **样式隔离**: 使用 `scoped` 样式,避免全局污染
|
||||
4. **浏览器兼容**: 测试 Chrome、Firefox、Edge 主流浏览器
|
||||
5. **响应式**: 确保在不同屏幕尺寸下显示正常
|
||||
6. **性能**: 避免不必要的重渲染,loading 状态切换要迅速
|
||||
|
||||
## 技术债务
|
||||
|
||||
无
|
||||
|
||||
## 后续优化
|
||||
|
||||
无
|
||||
|
||||
---
|
||||
|
||||
## 实施顺序
|
||||
|
||||
1. Task 1: 搜索框添加搜索图标按钮
|
||||
2. Task 2: 状态标签简约化
|
||||
3. Task 3: 验证分页 loading 效果
|
||||
4. Task 4: 综合测试和文档更新
|
||||
|
||||
每个 Task 完成后,进行代码审查和测试,确保功能正常后再进行下一个 Task。
|
||||
Reference in New Issue
Block a user