# Param Save Bar Fixed Bottom Frontend Implementation Plan

> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.

**Goal:** 将模型参数页的“保存所有修改”区域调整为滚动时始终可见的底部吸附操作栏，并统一项目详情页与全局模型参数页的展示效果。

**Architecture:** 在两个现有 Vue 页面中复用同一套样式策略：保留现有保存逻辑，仅通过 `position: sticky; bottom: 0` 将按钮区吸附到滚动容器底部，同时补充页面底部留白和移动端布局适配。这样可以与若依当前的 `AppMain` 滚动容器兼容，避免 `fixed` 带来的侧边栏遮挡问题。

**Tech Stack:** Vue 2, Element UI, SCSS, 若依前端布局

---

### Task 1: 为项目详情参数页补充底部吸附样式

**Files:**
- Modify: `ruoyi-ui/src/views/ccdiProject/components/detail/ParamConfig.vue`

**Step 1: 写出预期行为检查点**

确认以下目标行为：

- 页面滚动时“保存所有修改”始终可见
- 最后一张模型卡片不会被保存栏遮挡
- 已修改计数文案继续正常展示

**Step 2: 调整保存栏结构样式**

将 `button-section` 改为底部吸附操作栏，补充：

- `position: sticky`
- `bottom: 0`
- `z-index`
- 顶部边框与阴影
- 桌面端横向排列

**Step 3: 补充容器底部留白**

在页面主容器增加足够的 `padding-bottom`，避免内容被悬浮栏遮挡。

**Step 4: 增加移动端适配**

在媒体查询中让保存栏换行显示，并让按钮在窄屏下占满宽度。

### Task 2: 为全局模型参数页应用同样的吸附方案

**Files:**
- Modify: `ruoyi-ui/src/views/ccdi/modelParam/index.vue`

**Step 1: 复用项目详情页的布局样式策略**

保持保存栏的结构与交互一致，避免两个模型参数页体验不一致。

**Step 2: 校正全局页容器留白**

结合页面标题区和卡片区，补足底部滚动空间，确保最后一组参数完整可见。

**Step 3: 保持空状态不显示保存栏**

确认 `modelGroups.length === 0` 时仍仅展示空状态，不渲染底部操作栏。

### Task 3: 进行前端回归验证

**Files:**
- Review: `ruoyi-ui/src/views/ccdiProject/components/detail/ParamConfig.vue`
- Review: `ruoyi-ui/src/views/ccdi/modelParam/index.vue`

**Step 1: 执行构建验证**

Run: `npm run build:prod`

Expected: 前端生产构建成功，样式改动未引入编译错误。

**Step 2: 手工检查两个页面**

验证点：

- 滚动时保存栏持续可见
- 修改参数后计数正常变化
- 点击保存后逻辑不受影响
- 窄屏下按钮区不重叠、不溢出

**Step 3: 记录验证结果**

在交付说明中明确区分已执行的构建验证与建议的页面人工回归项。
