diff --git a/CLAUDE.md b/CLAUDE.md index 481593a..9d346d0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1434,6 +1434,305 @@ import { coiMsgError, coiMsgSuccess, coiMsgWarning } from '@/utils/coi' **遵循此规范确保所有表格列表页面具有统一的按钮样式和用户体验!** +## 📝 表单布局紧凑设计规范(强制要求) + +**所有新创建的表单页面和弹框表单都必须严格遵循紧凑布局设计规范,确保界面的一致性和空间利用率** + +### 表单紧凑设计核心原则 + +1. **统一紧凑样式类**: + - ✅ 所有表单必须使用 `class="compact-form"` 样式类 + - ✅ 确保在所有弹框和表单页面中保持一致的视觉密度 + - ✅ 参考菜单管理、用户管理、角色管理页面的标准样式 + +2. **标准化间距设置**: + - ✅ 表单项间距:`class="mb-2"`(8px 底部间距) + - ✅ 网格列间距:`:x-gap="10"`(10px 列间距) + - ✅ 标签宽度:`label-width="90px"`(90px 标签宽度) + - ✅ 容器内边距:`class="px-3 py-2"`(标准内边距) + +3. **弹框尺寸标准**: + - ✅ 表单弹框宽度:`:width="800"`(800px 统一宽度) + - ✅ 弹框高度:`height="auto"`(自适应高度) + +### 正确的表单布局实现 + +**✅ 标准CoiDialog弹框表单结构**: +```vue + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### 必需的紧凑表单CSS样式 + +**✅ 每个包含表单的页面都必须包含以下CSS样式**: +```css +/* 紧凑表单样式 */ +.compact-form :deep(.n-form-item) { + margin-bottom: 8px !important; +} + +.compact-form :deep(.n-form-item .n-form-item-feedback-wrapper) { + min-height: 0 !important; + padding-top: 2px !important; +} + +.compact-form :deep(.n-form-item .n-form-item-label) { + padding-bottom: 2px !important; +} + +.compact-form :deep(.n-input), +.compact-form :deep(.n-input-number), +.compact-form :deep(.n-select), +.compact-form :deep(.n-cascader), +.compact-form :deep(.n-radio-group) { + font-size: 14px !important; +} + +.compact-form :deep(.n-input .n-input__input-el), +.compact-form :deep(.n-input-number .n-input__input-el) { + padding: 2px 1px !important; + min-height: 32px !important; +} + +.compact-form :deep(.n-select .n-base-selection) { + min-height: 32px !important; + padding: 2px 1px !important; +} + +.compact-form :deep(.n-select .n-base-selection .n-base-selection-label) { + padding: 0 6px !important; + min-height: 30px !important; + line-height: 30px !important; +} + +.compact-form :deep(.n-cascader .n-cascader-trigger) { + min-height: 32px !important; + padding: 2px 1px !important; +} +``` + +### 表单布局配置标准 + +| 配置项 | 标准值 | 说明 | +|--------|--------|------| +| 弹框宽度 | `:width="800"` | 统一800px宽度 | +| 弹框高度 | `height="auto"` | 自适应内容高度 | +| 表单样式类 | `class="compact-form"` | 紧凑表单样式类 | +| 标签宽度 | `label-width="90px"` | 统一90px标签宽度 | +| 标签位置 | `label-placement="left"` | 标签左对齐 | +| 必填标记 | `require-mark-placement="right-hanging"` | 必填标记右悬挂 | +| 网格列数 | `:cols="2"` | 双列布局 | +| 列间距 | `:x-gap="10"` | 10px列间距 | +| 表单项间距 | `class="mb-2"` | 8px底部间距 | +| 容器内边距 | `class="px-3 py-2"` | 标准内边距 | + +### 已实现的标准参考页面 + +- ✅ 菜单管理页面:`src/views/system/menu/index.vue` +- ✅ 用户管理页面:`src/views/system/user/index.vue` +- ✅ 角色管理页面:`src/views/system/role/index.vue` + +### 强制要求检查清单 + +开发新的表单页面时,必须确保: +- [ ] 使用 `class="compact-form"` 样式类 +- [ ] 所有表单项都有 `class="mb-2"` 间距类 +- [ ] 网格布局使用 `:x-gap="10"` 列间距 +- [ ] 弹框宽度设置为 `:width="800"` +- [ ] 标签宽度设置为 `label-width="90px"` +- [ ] 包含完整的紧凑表单CSS样式 +- [ ] 容器使用 `class="px-3 py-2"` 内边距 + +### 严格禁止行为 + +- ❌ 使用默认表单样式(不添加 `compact-form` 类) +- ❌ 表单项间距过大或不一致 +- ❌ 弹框宽度不统一(非800px) +- ❌ 标签宽度不一致(非90px) +- ❌ 缺少必需的紧凑表单CSS样式 +- ❌ 使用过大的列间距(超过10px) +- ❌ 忽略参考页面的布局标准 + +### 紧凑表单设计优势 + +1. **视觉一致性**:所有表单页面具有统一的外观和感觉 +2. **空间利用率**:紧凑的布局提高了屏幕空间的利用效率 +3. **用户体验**:减少了视觉噪音,提升了表单填写的效率 +4. **响应式友好**:在不同屏幕尺寸下都有良好的显示效果 +5. **维护便利性**:统一的样式类和配置便于后续维护和扩展 + +### 示例:完整的表单页面实现 + +```vue + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +**遵循此规范确保所有表单页面具有统一的紧凑布局和优秀的用户体验!** + ## 文档资源 项目包含完整的文档系统: