246 lines
5.5 KiB
Markdown
246 lines
5.5 KiB
Markdown
# 项目列表页面UI优化设计文档
|
||
|
||
**文档版本**: 1.0
|
||
**创建日期**: 2026-02-28
|
||
**创建人**: Claude Code
|
||
**状态**: 已确认
|
||
|
||
---
|
||
|
||
## 1. 概述
|
||
|
||
### 1.1 背景
|
||
根据原型图 `ScreenShot_2026-02-27_111611_994.png`,对项目列表页面(`ccdiProject/index.vue`)进行 UI 优化,使其更符合扁平化设计风格。
|
||
|
||
### 1.2 目标
|
||
- 简化页面标题样式,去掉卡片式装饰
|
||
- 优化搜索区域,添加独立的搜索按钮
|
||
- 保持表格表头现有样式
|
||
|
||
### 1.3 影响范围
|
||
- 页面:`ruoyi-ui/src/views/ccdiProject/index.vue`
|
||
- 组件:`ruoyi-ui/src/views/ccdiProject/components/SearchBar.vue`
|
||
|
||
---
|
||
|
||
## 2. 设计方案
|
||
|
||
### 2.1 方案选择
|
||
采用**最小改动方案**,只修改必要的样式和结构,降低风险。
|
||
|
||
### 2.2 详细设计
|
||
|
||
#### 2.2.1 页面标题修改
|
||
|
||
**当前实现:**
|
||
- 标题区域使用卡片式设计(白色背景、圆角、阴影)
|
||
- 字体大小:20px
|
||
- 字体粗细:500
|
||
|
||
**修改内容:**
|
||
- 移除白色背景
|
||
- 移除圆角(border-radius)
|
||
- 移除阴影(box-shadow)
|
||
- 保留字体大小和粗细
|
||
- 保留 flex 布局和间距
|
||
|
||
**样式对比:**
|
||
|
||
修改前:
|
||
```scss
|
||
.page-header {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
margin-bottom: 16px;
|
||
padding: 16px 20px;
|
||
background: #ffffff; // 移除
|
||
border-radius: 8px; // 移除
|
||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); // 移除
|
||
}
|
||
```
|
||
|
||
修改后:
|
||
```scss
|
||
.page-header {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
margin-bottom: 16px;
|
||
// 移除 background、border-radius、box-shadow
|
||
}
|
||
```
|
||
|
||
#### 2.2.2 搜索按钮修改
|
||
|
||
**当前实现:**
|
||
- 搜索图标位于输入框内部(suffix slot)
|
||
- 通过点击图标或回车触发搜索
|
||
|
||
**修改内容:**
|
||
- 移除输入框内的搜索图标
|
||
- 在输入框外部添加独立的搜索按钮
|
||
- 按钮与输入框使用 flex 布局组合
|
||
- 按钮高度与输入框一致(40px)
|
||
|
||
**结构对比:**
|
||
|
||
修改前:
|
||
```vue
|
||
<el-input v-model="searchKeyword" placeholder="请输入关键词搜索项目" clearable>
|
||
<i slot="suffix" class="el-icon-search search-icon" @click="handleSearch" />
|
||
</el-input>
|
||
```
|
||
|
||
修改后:
|
||
```vue
|
||
<div class="search-input-wrapper">
|
||
<el-input
|
||
v-model="searchKeyword"
|
||
placeholder="请输入关键词搜索项目"
|
||
clearable
|
||
size="small"
|
||
class="search-input"
|
||
@keyup.enter.native="handleSearch"
|
||
@clear="handleSearch"
|
||
/>
|
||
<el-button type="primary" size="small" @click="handleSearch">搜索</el-button>
|
||
</div>
|
||
```
|
||
|
||
**样式调整:**
|
||
```scss
|
||
.search-input-wrapper {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
}
|
||
|
||
.search-input {
|
||
width: 240px;
|
||
height: 40px;
|
||
}
|
||
```
|
||
|
||
#### 2.2.3 表格表头样式
|
||
|
||
**当前实现:**
|
||
- 透明背景(background-color: transparent)
|
||
- 深色加粗文字(font-weight: 600, color: #333)
|
||
- 底部 2px 分隔线
|
||
|
||
**修改内容:**
|
||
- 保持不变,已符合需求
|
||
|
||
---
|
||
|
||
## 3. 用户体验改进
|
||
|
||
### 3.1 视觉层次
|
||
- 页面标题扁平化,减少视觉干扰
|
||
- 搜索按钮独立显示,操作更明确
|
||
|
||
### 3.2 交互优化
|
||
- 搜索按钮支持点击触发搜索
|
||
- 保留回车和清空触发搜索的功能
|
||
|
||
---
|
||
|
||
## 4. 技术实现
|
||
|
||
### 4.1 文件修改清单
|
||
|
||
| 文件路径 | 修改类型 | 修改内容 |
|
||
|---------|---------|---------|
|
||
| `ccdiProject/index.vue` | 样式修改 | 移除 `.page-header` 的背景、圆角、阴影 |
|
||
| `ccdiProject/components/SearchBar.vue` | 结构+样式修改 | 移除搜索图标,添加独立搜索按钮 |
|
||
|
||
### 4.2 关键代码
|
||
|
||
#### index.vue 样式修改
|
||
```scss
|
||
.page-header {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
margin-bottom: 16px;
|
||
// 移除背景、圆角、阴影
|
||
}
|
||
```
|
||
|
||
#### SearchBar.vue 结构修改
|
||
```vue
|
||
<div class="search-filter-bar">
|
||
<div class="search-input-wrapper">
|
||
<el-input
|
||
v-model="searchKeyword"
|
||
placeholder="请输入关键词搜索项目"
|
||
clearable
|
||
size="small"
|
||
class="search-input"
|
||
@keyup.enter.native="handleSearch"
|
||
@clear="handleSearch"
|
||
/>
|
||
<el-button type="primary" size="small" @click="handleSearch">搜索</el-button>
|
||
</div>
|
||
<!-- 标签页筛选 -->
|
||
<div class="tab-filters">
|
||
<!-- ... -->
|
||
</div>
|
||
</div>
|
||
```
|
||
|
||
---
|
||
|
||
## 5. 测试要点
|
||
|
||
### 5.1 功能测试
|
||
- [ ] 搜索按钮点击触发搜索
|
||
- [ ] 输入框回车触发搜索
|
||
- [ ] 输入框清空触发搜索
|
||
- [ ] 标签页切换正常工作
|
||
|
||
### 5.2 样式测试
|
||
- [ ] 页面标题扁平化,无背景、圆角、阴影
|
||
- [ ] 搜索按钮与输入框同高(40px)
|
||
- [ ] 搜索按钮与输入框间距 8px
|
||
- [ ] 表格表头样式保持不变
|
||
|
||
### 5.3 兼容性测试
|
||
- [ ] Chrome 浏览器
|
||
- [ ] Firefox 浏览器
|
||
- [ ] Edge 浏览器
|
||
|
||
---
|
||
|
||
## 6. 风险评估
|
||
|
||
### 6.1 技术风险
|
||
- **低风险**:只修改样式和少量 HTML 结构
|
||
- **无后端影响**:不涉及 API 调用
|
||
|
||
### 6.2 兼容性风险
|
||
- **低风险**:使用标准的 Element UI 组件和 CSS flex 布局
|
||
|
||
---
|
||
|
||
## 7. 实施计划
|
||
|
||
### 7.1 开发任务
|
||
1. 修改 `index.vue` 的页面标题样式
|
||
2. 修改 `SearchBar.vue` 的搜索区域结构和样式
|
||
3. 本地测试验证
|
||
|
||
### 7.2 预计工作量
|
||
- 开发时间:0.5 小时
|
||
- 测试时间:0.5 小时
|
||
|
||
---
|
||
|
||
## 8. 参考资料
|
||
|
||
- 原型图:`doc/创建项目功能/ScreenShot_2026-02-27_111611_994.png`
|
||
- 当前代码:`ruoyi-ui/src/views/ccdiProject/index.vue`
|
||
- 搜索组件:`ruoyi-ui/src/views/ccdiProject/components/SearchBar.vue`
|
||
- 表格组件:`ruoyi-ui/src/views/ccdiProject/components/ProjectTable.vue`
|