Files
medical-mall/docs/admin/README.md
2026-02-02 20:07:37 +08:00

534 lines
15 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Mall 项目 - CRMEB 风格设计系统完整指南
## 🎯 项目目标
将 mall 项目的页面样式和设计系统与 CRMEB 专业设计标准完全对标,使用 uni-app-x 和 .uvue 组件进行一比一复刻。
---
## 📚 完整文档体系
本项目的所有文档已组织在 `docs/` 文件夹中,形成完整的知识库:
### 核心规范文档
| 文档 | 内容 | 用途 |
| ------------------------------------------------------------------------ | -------------------------------------------- | ------------------ |
| **[STYLE_SPECIFICATION.md](./STYLE_SPECIFICATION.md)** | 颜色、间距、字体、动画、响应式等设计规范 | 样式开发的唯一标准 |
| **[PAGE_STRUCTURE_SPECIFICATION.md](./PAGE_STRUCTURE_SPECIFICATION.md)** | 页面结构模板、列表页、表单页、详情页完整示例 | 页面设计和开发模板 |
| **[COMPONENT_SPECIFICATION.md](./COMPONENT_SPECIFICATION.md)** | 组件开发规范、命名规范、Props 和 Emit 定义 | 组件库开发标准 |
| **[ENGINEERING_BEST_PRACTICES.md](./ENGINEERING_BEST_PRACTICES.md)** | 项目结构、开发规范、Git 流程、测试、构建 | 工程化最佳实践 |
| **[IMPLEMENTATION_ROADMAP.md](./IMPLEMENTATION_ROADMAP.md)** | 8 个阶段的实现计划、时间表、验收标准 | 项目进度和任务跟踪 |
### 历史文档(参考)
| 文档 | 内容 |
| ------------------------------- | ------------------------ |
| CRMEB_UVUE_MIGRATION_GUIDE.md | CRMEB 架构分析和迁移指南 |
| ADMIN_SIDEBAR_COMPLETE_GUIDE.md | 侧边栏完整实现指南 |
| SYSTEM_INFO_DIAGNOSIS.md | 系统信息页面问题诊断 |
---
## 🚀 快速开始
### 1⃣ 理解设计系统
首先,阅读 **[STYLE_SPECIFICATION.md](./STYLE_SPECIFICATION.md)**,了解:
- ✅ 150+ 个设计变量系统(已在 uni.scss 中定义)
- ✅ 颜色、间距、圆角、阴影、字体规范
- ✅ 所有变量的使用方法和场景
**关键点**:所有样式值都来自 `uni.scss` 中的变量,**禁止硬编码任何数值**。
### 2⃣ 学习页面结构
阅读 **[PAGE_STRUCTURE_SPECIFICATION.md](./PAGE_STRUCTURE_SPECIFICATION.md)**,学习:
- ✅ 完整的页面模板结构
- ✅ 列表页面(搜索 + 表格 + 分页)
- ✅ 表单页面(新增/编辑)
- ✅ 详情页面(展示 + 操作日志)
**关键点**:遵循标准的页面结构,不要创建各异的页面布局。
### 3⃣ 开发组件
按照 **[COMPONENT_SPECIFICATION.md](./COMPONENT_SPECIFICATION.md)** 开发组件:
- ✅ Button、Input、Select 等基础组件(第 1 周)
- ✅ Card、Modal、Pagination 等容器组件(第 2 周)
- ✅ Table、List 等数据展示组件(第 3 周)
- ✅ Form、Upload 等表单组件(第 4 周)
**关键点**:每个组件必须有完整文档、单元测试和使用示例。
### 4⃣ 应用到页面
使用 **[IMPLEMENTATION_ROADMAP.md](./IMPLEMENTATION_ROADMAP.md)** 的第 6 阶段:
- ✅ 创建页面模板ListPage、FormPage、DetailPage
- ✅ 迁移现有页面system-info 等)
- ✅ 统一样式和交互
### 5⃣ 遵循工程化规范
按照 **[ENGINEERING_BEST_PRACTICES.md](./ENGINEERING_BEST_PRACTICES.md)**
- ✅ 遵循文件命名规范
- ✅ 使用 @ 别名导入
- ✅ 编写注释和文档
- ✅ 通过 Git 工作流提交代码
---
## 📊 项目现状
### ✅ 已完成
1. **设计变量系统** (uni.scss)
- 150+ 个变量
- 颜色、间距、圆角、阴影、字体、过渡、响应式、z-index
- 可直接在所有 .uvue 文件中使用
2. **规范文档**
- 样式规范 (STYLE_SPECIFICATION.md)
- 页面结构规范 (PAGE_STRUCTURE_SPECIFICATION.md)
- 组件规范 (COMPONENT_SPECIFICATION.md)
- 工程化规范 (ENGINEERING_BEST_PRACTICES.md)
- 实现路线图 (IMPLEMENTATION_ROADMAP.md)
3. **基础设施**
- AdminLayout 组件(支持侧边栏显示)
- 菜单系统menu.uts
- 导航匹配nav.uts
- 状态管理state.uts
### 🔄 进行中
(暂无)
### ⏳ 待开始
1. **组件库开发**
- 30+ 个组件分 6 个阶段实现
- 每个阶段 1-2 周
2. **页面模板**
- ListPage 模板(搜索表单 + 表格 + 分页)
- FormPage 模板(动态表单 + 验证)
- DetailPage 模板(信息展示 + 操作日志)
3. **页面迁移**
- 迁移现有的所有管理页面
- 统一样式和交互
- 2-3 周
4. **测试和优化**
- 单元测试
- 集成测试
- 性能优化
---
## 💡 核心概念
### 设计令牌 (Design Tokens)
```scss
// 所有样式都源自设计变量,不是硬编码
// ✅ 正确
.button {
color: $text-primary;
background: $primary-color;
padding: $space-md;
border-radius: $radius-sm;
box-shadow: $shadow;
}
// ❌ 错误(硬编码)
.button {
color: #000;
background: #1890ff;
padding: 16px;
border-radius: 4px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
```
### 组件分类
| 分类 | 组件数 | 用途 |
| -------- | ------- | --------------------------- |
| 基础组件 | 7 | Button, Input, Select 等 |
| 容器组件 | 6 | Card, Modal, Pagination 等 |
| 表单组件 | 6 | Form, FormItem, Upload 等 |
| 数据展示 | 7 | Table, List, Tree 等 |
| 反馈组件 | 6 | Message, Alert, Loading 等 |
| 导航组件 | 4 | Breadcrumb, Menu, Navbar 等 |
| **总计** | **36+** | 完整的组件库系统 |
### 页面模板
| 类型 | 用途 | 包含 |
| ---------- | -------- | -------------------------- |
| ListPage | 数据列表 | 搜索、表格、分页、批量操作 |
| FormPage | 表单输入 | 表单、验证、上传、动态字段 |
| DetailPage | 详情展示 | 卡片、信息、日志、操作按钮 |
---
## 📋 使用清单
### 开发新页面时
- [ ] 阅读 PAGE_STRUCTURE_SPECIFICATION.md
- [ ] 选择合适的页面模板ListPage / FormPage / DetailPage
- [ ] 使用 AdminLayout 组件包装
- [ ] 所有颜色使用 `$color-*` 变量
- [ ] 所有间距使用 `$space-*` 变量
- [ ] 所有圆角使用 `$radius-*` 变量
- [ ] 使用新组件库组件(不用原生 input 等)
- [ ] 遵循命名规范kebab-case 文件名)
- [ ] 编写页面说明文档
- [ ] 通过 PR 进行代码审查
### 开发新组件时
- [ ] 阅读 COMPONENT_SPECIFICATION.md
- [ ] 放在正确的分类目录basic/container/form/data/feedback/navigation
- [ ] 组件名使用 PascalCase
- [ ] 定义 Props 接口和 Emit 类型
- [ ] 使用 uni.scss 变量所有样式
- [ ] 支持响应式设计
- [ ] 编写完整文档API + 示例 + 截图)
- [ ] 编写单元测试
- [ ] 测试所有状态disabled / loading / error 等)
- [ ] 通过代码审查
### 修改已有代码时
- [ ] 检查是否使用了硬编码值(颜色、尺寸等)
- [ ] 替换为对应的 uni.scss 变量
- [ ] 遵循命名规范
- [ ] 更新相关文档
- [ ] 运行测试确保没有破坏
---
## 🎨 设计系统概览
### 颜色系统
```scss
// 主色系 - 使用频率最高
$primary-color: #1890ff // 交互、链接、强调
$success-color: #52c41a // 成功、通过
$warning-color: #faad14 // 警告、注意
$error-color: #ff4d4f // 错误、失败
$info-color: #1890ff // 信息
// 文字色系 - 根据层级使用
$text-primary: #000000 // 主文本(标题、重点)
$text-secondary: #666666 // 次文本(辅助)
$text-tertiary: #999999 // 弱文本(提示)
$text-disabled: #bfbfbf // 禁用文本
// 背景色系 - 分层使用
$background-primary: #fff // 主背景(卡片)
$background-secondary: #fafafa // 次背景
$background-tertiary: #f5f5f5 // 页面背景
```
### 间距系统4px 基准)
```scss
$space-xs: 4px // 图标间距
$space-sm: 8px // 小组件间距
$space: 12px // 标准间距(最常用)
$space-md: 16px // 中间距
$space-lg: 24px // 大间距
$space-xl: 32px // 特大间距
```
### 圆角系统
```scss
$radius-xs: 2px // 微调
$radius-sm: 4px // 细微(按钮)
$radius: 6px // 标准(卡片)
$radius-lg: 8px // 明显
$radius-full: 9999px // 圆形
```
### 阴影系统
```scss
$shadow-xs: 0 1px 2px 0 rgba(0,0,0, 0.05) // 最弱
$shadow: 0 4px 6px -1px rgba(0,0,0, 0.1) // 标准
$shadow-lg: 0 20px 25px -5px rgba(0,0,0, 0.1) // 强
$shadow-xl: 0 25px 50px -12px rgba(0,0,0, 0.25) // 最强
```
---
## 📖 文档导航
### 按用途查找文档
**我想要...** → 应该读哪个文档?
| 需求 | 文档 | 章节 |
| ------------- | ------------------------------- | ----------- |
| 了解设计系统 | STYLE_SPECIFICATION.md | 第 1-4 部分 |
| 开发页面 | PAGE_STRUCTURE_SPECIFICATION.md | 第 2-4 部分 |
| 开发组件 | COMPONENT_SPECIFICATION.md | 第 2-8 部分 |
| 了解工程规范 | ENGINEERING_BEST_PRACTICES.md | 全部 |
| 查看实现计划 | IMPLEMENTATION_ROADMAP.md | 第 2 部分 |
| 了解文件结构 | ENGINEERING_BEST_PRACTICES.md | 第 1 部分 |
| 学习代码规范 | ENGINEERING_BEST_PRACTICES.md | 第 2-3 部分 |
| 学习 Git 流程 | ENGINEERING_BEST_PRACTICES.md | 第 3 部分 |
---
## 🔧 常见任务
### 任务:创建新的列表页面
1. 阅读 [PAGE_STRUCTURE_SPECIFICATION.md](./PAGE_STRUCTURE_SPECIFICATION.md) 的"列表页面"部分
2. 复制代码模板
3. 修改标题、字段名等
4. 替换 API 调用
5. 使用新组件Button, Input, Table, Pagination
6. 遵循样式规范
7. 提交 PR
**预计时间**: 2-3 小时(包括测试)
### 任务:创建新的表单页面
1. 阅读 [PAGE_STRUCTURE_SPECIFICATION.md](./PAGE_STRUCTURE_SPECIFICATION.md) 的"表单页面"部分
2. 复制代码模板
3. 定义表单字段
4. 添加验证规则
5. 实现提交逻辑
6. 遵循样式规范
7. 提交 PR
**预计时间**: 2-3 小时
### 任务:开发新组件
1. 阅读 [COMPONENT_SPECIFICATION.md](./COMPONENT_SPECIFICATION.md)
2. 选择分类basic / container / form / data / feedback / navigation
3. 创建组件文件PascalCase
4. 定义 Props 和 Emit
5. 实现组件逻辑
6. 编写样式(使用 uni.scss 变量)
7. 编写文档
8. 编写单元测试
9. 提交 PR
**预计时间**: 2-6 小时(取决于复杂度)
---
## ✅ 质量检查
### 样式检查
```scss
// 运行前需要检查:
// ❌ 有硬编码颜色值?
.button {
background: #1890ff; // 应该是 $primary-color
}
// ❌ 有硬编码尺寸?
.card {
padding: 16px; // 应该是 $space-md
}
// ❌ 有硬编码圆角?
.input {
border-radius: 4px; // 应该是 $radius-sm
}
// ✅ 全部使用变量
.component {
color: $text-primary;
background: $background-primary;
padding: $space-md;
border-radius: $radius-sm;
box-shadow: $shadow;
}
```
### 组件检查
```typescript
// 组件提交前检查:
// ✅ Props 有类型定义
interface ButtonProps {
type?: "primary" | "default" | "danger";
label: string;
disabled?: boolean;
}
// ✅ Emit 有类型定义
const emit = defineEmits<{
click: [];
change: [value: string];
}>();
// ✅ 有 JSDoc 注释
/**
* Button 组件
* @example
* <Button type="primary" label="Click" @click="handle" />
*/
// ✅ 所有样式使用变量
// ✅ 支持响应式
// ✅ 有单元测试
// ✅ 无 console.log
```
---
## 🎓 学习路径
### 新手开发者
1. 阅读 STYLE_SPECIFICATION.md30 分钟)
2. 阅读 PAGE_STRUCTURE_SPECIFICATION.md1 小时)
3. 完成第一个列表页面2 小时)
4. 完成第一个表单页面2 小时)
5. 总耗时5.5 小时
### 有经验的开发者
1. 快速浏览所有文档1 小时)
2. 按 IMPLEMENTATION_ROADMAP 的顺序开发组件
3. 定期审查规范,确保一致性
### 前端技术负责人
1. 深入理解整个设计系统2 小时)
2. 建立代码审查流程
3. 定期审查规范,更新为最新标准
4. 指导团队成员
---
## 📞 问题解答
### Q1: 为什么不能硬编码样式值?
**A**: 硬编码会导致:
- 样式不一致
- 难以维护(改一个值要改 100 处)
- 无法主题切换
- 新开发者容易出错
使用变量可以确保整个应用的样式一致。
### Q2: 组件开发需要多久?
**A**: 取决于复杂度:
- 简单组件Button: 2 小时
- 中等组件Input: 3 小时
- 复杂组件Table: 6 小时
- 包括文档和测试
### Q3: 如何处理特殊的样式需求?
**A**: 如果有特殊需求不在设计系统中:
1. 首先检查是否可以用现有变量组合实现
2. 如果不行,提出需求,讨论是否需要添加新的变量
3. 需要经过代码审查后才能使用新变量
### Q4: 现有页面如何迁移?
**A**: 按照以下步骤:
1. 找出所有硬编码值(颜色、尺寸、圆角等)
2. 替换为对应的变量
3. 用新组件替换原生 HTML 元素
4. 测试功能完整性
5. 提交 PR
### Q5: 我想不起来变量名怎么办?
**A**: 打开 uni.scss按照命名规律查找
- 颜色: `$color-*``$text-*``$background-*`
- 间距: `$space-*`
- 圆角: `$radius-*`
- 阴影: `$shadow-*`
---
## 🚢 发布检查清单
发布新版本前,确保:
- [ ] 所有 P0 优先级的 Bug 已修复
- [ ] 所有文档已更新
- [ ] CHANGELOG 已更新
- [ ] 性能指标符合要求
- [ ] 单元测试覆盖率 ≥ 80%
- [ ] 集成测试通过
- [ ] 安全审计通过
- [ ] 设计系统文档在 docs/ 中
- [ ] 没有硬编码的样式值
- [ ] 所有组件都有文档
---
## 📞 联系我们
如有任何关于设计系统的问题:
1. 查看相关的规范文档
2. 在 GitHub Issues 中提问
3. 参考 IMPLEMENTATION_ROADMAP 中的问题跟踪
---
## 📄 文档版本
| 文档 | 版本 | 更新日期 |
| ---------------------------- | ---- | ---------- |
| STYLE_SPECIFICATION | 1.0 | 2026-01-31 |
| PAGE_STRUCTURE_SPECIFICATION | 1.0 | 2026-01-31 |
| COMPONENT_SPECIFICATION | 1.0 | 2026-01-31 |
| ENGINEERING_BEST_PRACTICES | 1.0 | 2026-01-31 |
| IMPLEMENTATION_ROADMAP | 1.0 | 2026-01-31 |
| **本文档** | 1.0 | 2026-01-31 |
---
## 🎯 下一步
1. ✅ 选择一个 P0 优先级的组件(如 Button
2. ✅ 按照 COMPONENT_SPECIFICATION 开发
3. ✅ 编写文档和测试
4. ✅ 提交 PR 进行审查
5. ✅ 继续开发其他组件
**预计完成整个设计系统: 10 周**
---
**创建日期**: 2026-01-31
**维护者**: AI Assistant
**最后更新**: 2026-01-31