# 参数配置页面 Loading 优化 **优化时间:** 2026-03-09 **优化分支:** dev **涉及页面:** 全局配置、项目配置 --- ## 🎯 优化目标 为参数配置页面添加完善的 loading 效果,提升用户体验 --- ## ✨ 优化内容 ### 1. **页面加载 Loading** #### 实现方式 使用 Element UI 的 `v-loading` 指令 ```vue
``` #### Loading 状态控制 ```javascript data() { return { loading: false, // 页面加载状态 saving: false // 保存状态 } } ``` #### 加载方法 ```javascript async loadAllParams() { this.loading = true; // 开始加载 try { const res = await listAllParams({ projectId: 0 }); this.modelGroups = res.data.models || []; this.modifiedParams = {}; } catch (error) { this.$message.error('加载参数失败:' + error.message); } finally { this.loading = false; // 结束加载 } } ``` --- ### 2. **空状态提示** 当数据为空时显示友好提示: ```vue
``` --- ### 3. **保存按钮 Loading** 保存时按钮显示 loading 状态: ```vue 保存所有修改 ``` 保存方法中控制状态: ```javascript async handleSaveAll() { this.saving = true; // 开始保存 try { await saveAllParams(saveDTO); this.$message.success('保存成功'); this.modifiedParams = {}; await this.loadAllParams(); } catch (error) { this.$message.error('保存失败:' + error.message); } finally { this.saving = false; // 结束保存 } } ``` --- ### 4. **条件渲染优化** 使用 `v-if` 控制内容区域显示: ```vue
保存所有修改
``` --- ### 5. **样式优化** 添加最小高度,防止内容抖动: ```scss .model-cards-container { margin-bottom: 20px; min-height: 300px; // 防止 loading 时布局抖动 } ``` --- ## 📊 优化对比 ### 优化前 - ❌ 页面加载时无反馈,用户不知道是否在工作 - ❌ 数据为空时显示空白页面 - ❌ 保存时按钮无状态反馈 - ❌ 可能出现布局抖动 ### 优化后 - ✅ 页面加载显示 loading 遮罩,清晰反馈 - ✅ 数据为空显示友好提示 - ✅ 保存按钮显示 loading 动画 - ✅ 条件渲染防止布局抖动 - ✅ 最小高度保持布局稳定 --- ## 🎨 用户体验提升 ### 加载状态 ``` ┌─────────────────────────┐ │ │ │ 加载中... │ │ (旋转动画) │ │ │ └─────────────────────────┘ ``` ### 空状态 ``` ┌─────────────────────────┐ │ │ │ (空状态图标) │ │ 暂无参数配置数据 │ │ │ └─────────────────────────┘ ``` ### 正常状态 ``` ┌─────────────────────────┐ │ 模型1 │ │ ┌───────────────────┐ │ │ │ 参数表格 │ │ │ └───────────────────┘ │ ├─────────────────────────┤ │ 模型2 │ │ ┌───────────────────┐ │ │ │ 参数表格 │ │ │ └───────────────────┘ │ ├─────────────────────────┤ │ [保存按钮] 已修改X个 │ └─────────────────────────┘ ``` --- ## 🔧 技术实现 ### Loading 指令 - **Element UI 指令**: `v-loading` - **加载文本**: `element-loading-text` - **背景色**: 默认白色遮罩 ### 状态管理 ```javascript { loading: false, // 数据加载状态 saving: false // 保存操作状态 } ``` ### 条件渲染逻辑 ``` loading = true → 显示 loading 遮罩 loading = false && data.length > 0 → 显示数据 loading = false && data.length = 0 → 显示空状态 ``` --- ## 📝 修改文件 ### 全局配置页面 - **文件**: `ruoyi-ui/src/views/ccdi/modelParam/index.vue` - **修改**: - 添加 `loading` 状态 - 添加 `v-loading` 指令 - 添加空状态提示 - 优化条件渲染 - 优化样式 ### 项目配置页面 - **文件**: `ruoyi-ui/src/views/ccdiProject/components/detail/ParamConfig.vue` - **修改**: - 添加 `loading` 状态 - 添加 `v-loading` 指令 - 添加空状态提示 - 优化条件渲染 - 优化样式 --- ## 🎯 测试要点 ### 功能测试 - [ ] 页面首次加载显示 loading - [ ] Loading 状态下内容不显示 - [ ] 数据加载完成后 loading 消失 - [ ] 数据为空时显示空状态提示 - [ ] 保存时按钮显示 loading - [ ] 保存完成后按钮恢复 ### 性能测试 - [ ] Loading 动画流畅 - [ ] 无布局抖动 - [ ] 快速响应 ### 兼容性测试 - [ ] Chrome 正常 - [ ] Firefox 正常 - [ ] Edge 正常 --- ## 📌 Git 提交 ```bash commit 8b3e9a2 feat(ui): 为参数配置页面添加loading效果 - 添加页面加载loading状态 - 添加数据为空时的提示 - 优化loading样式和布局 - 确保保存按钮有loading反馈 - 改善用户体验 ``` --- ## 🚀 后续优化建议 1. **骨架屏**: 可考虑使用骨架屏替代 loading 遮罩,体验更好 2. **渐进式加载**: 先加载部分数据,逐步展示 3. **缓存优化**: 添加数据缓存,减少重复加载 4. **错误重试**: 添加加载失败的重试机制 --- **优化完成时间:** 2026-03-09 **状态:** ✅ 已完成并提交