zt-admin-template 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +11 -0
- package/template/.env.development +2 -0
- package/template/.env.production +2 -0
- package/template/.env.test +2 -0
- package/template/.kiro/specs/course-backend-integration/.config.kiro +1 -0
- package/template/.kiro/specs/course-backend-integration/design.md +234 -0
- package/template/.kiro/specs/course-backend-integration/requirements.md +116 -0
- package/template/.kiro/specs/course-backend-integration/tasks.md +0 -0
- package/template/COMPLETION_CHECKLIST.md +305 -0
- package/template/DEPLOYMENT_GUIDE.md +391 -0
- package/template/FINAL_SUMMARY.md +428 -0
- package/template/IMPLEMENTATION_SUMMARY.md +382 -0
- package/template/INTEGRATION_GUIDE.md +458 -0
- package/template/PROJECT_OVERVIEW.md +343 -0
- package/template/QUICK_START.md +273 -0
- package/template/RBAC_Tutorial.md +424 -0
- package/template/README.md +16 -0
- package/template/React_Antd_TS_Tutorial.md +279 -0
- package/template/START_ALL.md +163 -0
- package/template/SYSTEM_MANAGEMENT.md +247 -0
- package/template/eslint.config.js +29 -0
- package/template/index.html +13 -0
- package/template/koa-server/README.md +65 -0
- package/template/koa-server/app.js +625 -0
- package/template/koa-server/package-lock.json +1547 -0
- package/template/koa-server/package.json +26 -0
- package/template/koa-server/public/assets/index-B1Cj4mG9.css +1 -0
- package/template/koa-server/public/assets/index-Mgxg-xqT.js +503 -0
- package/template/koa-server/public/favicon.svg +1 -0
- package/template/koa-server/public/icons.svg +24 -0
- package/template/koa-server/public/index.html +14 -0
- package/template/koa-server/uploads/1774265088480-962006467.png +0 -0
- package/template/koa-server/uploads/file-1774346891704-610962013.png +0 -0
- package/template/koa-server/uploads/file-1774346898887-58636533.png +0 -0
- package/template/koa-server/uploads/file-1774346912676-771862547.png +0 -0
- package/template/koa-server/uploads/file-1774347025308-130037894.png +0 -0
- package/template/koa-server/uploads/file-1774347031104-766499773.png +0 -0
- package/template/koa-server/uploads/file-1774347094969-731402203.png +0 -0
- package/template/koa-server/uploads/file-1774347101948-330296656.png +0 -0
- package/template/koa-server/uploads/file-1774351682377-932868720.png +0 -0
- package/template/koa-server/uploads/file-1774352037654-877426905.png +0 -0
- package/template/koa-server/uploads/file-1774352175463-386248997.png +0 -0
- package/template/koa-server/uploads/file-1774361446433-405859961.png +0 -0
- package/template/koa-server/uploads/file-1774361512207-465806267.png +0 -0
- package/template/lianxi.html +15 -0
- package/template/package-lock.json +6307 -0
- package/template/package.json +36 -0
- package/template/public/favicon.svg +1 -0
- package/template/public/icons.svg +24 -0
- package/template/src/App.css +184 -0
- package/template/src/App.tsx +44 -0
- package/template/src/api/course.ts +86 -0
- package/template/src/api/menu.ts +55 -0
- package/template/src/api/role.ts +58 -0
- package/template/src/api/user.ts +58 -0
- package/template/src/assets/hero.png +0 -0
- package/template/src/assets/react.svg +1 -0
- package/template/src/assets/vite.svg +1 -0
- package/template/src/components/Child.tsx +10 -0
- package/template/src/components/MainLayout.tsx +169 -0
- package/template/src/components/SunZi.tsx +13 -0
- package/template/src/contexts/ThemeContext.tsx +33 -0
- package/template/src/hooks/usePermission.tsx +62 -0
- package/template/src/index.css +111 -0
- package/template/src/main.tsx +13 -0
- package/template/src/pages/Dashboard.tsx +39 -0
- package/template/src/pages/Users.tsx +95 -0
- package/template/src/pages/banner/BannerList.tsx +182 -0
- package/template/src/pages/course/Course.tsx +586 -0
- package/template/src/pages/course/CourseList.tsx +168 -0
- package/template/src/pages/system/menu/Menu.tsx +501 -0
- package/template/src/pages/system/role/Role.tsx +458 -0
- package/template/src/pages/system/user/User.tsx +364 -0
- package/template/src/types/permission.ts +21 -0
- package/template/src/utils/request.tsx +94 -0
- package/template/src/vite-env.d.ts +1 -0
- package/template/tsconfig.app.json +32 -0
- package/template/tsconfig.json +7 -0
- package/template/tsconfig.node.json +13 -0
- package/template/vite.config.ts +30 -0
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
# 项目概览
|
|
2
|
+
|
|
3
|
+
## 项目名称
|
|
4
|
+
Admin System - 基于若依管理系统风格的 React + TypeScript 管理后台
|
|
5
|
+
|
|
6
|
+
## 项目描述
|
|
7
|
+
一个完整的企业级管理后台系统,包含用户管理、角色管理和菜单管理三个核心模块。采用现代化的 React 18 + TypeScript + Ant Design 技术栈,提供完整的 CRUD 操作、搜索筛选、表单验证等功能。
|
|
8
|
+
|
|
9
|
+
## 核心功能
|
|
10
|
+
|
|
11
|
+
### 1️⃣ 用户管理模块
|
|
12
|
+
**路由**: `/system/user`
|
|
13
|
+
|
|
14
|
+
**主要功能**:
|
|
15
|
+
- 📋 用户列表展示(分页、排序)
|
|
16
|
+
- ➕ 新增用户(表单验证)
|
|
17
|
+
- ✏️ 编辑用户信息
|
|
18
|
+
- 🗑️ 删除用户(确认对话框)
|
|
19
|
+
- 🔍 搜索和筛选(用户名、手机号、时间、状态)
|
|
20
|
+
- 📤 导出用户列表
|
|
21
|
+
- 🔄 用户状态管理(正常/停用)
|
|
22
|
+
|
|
23
|
+
**用户字段**:
|
|
24
|
+
- 用户编号、用户名、昵称、部门
|
|
25
|
+
- 手机号、邮箱、性别、状态
|
|
26
|
+
- 创建时间、备注
|
|
27
|
+
|
|
28
|
+
**示例数据**: 3个用户(admin, test, dev)
|
|
29
|
+
|
|
30
|
+
### 2️⃣ 角色管理模块
|
|
31
|
+
**路由**: `/system/role`
|
|
32
|
+
|
|
33
|
+
**主要功能**:
|
|
34
|
+
- 📋 角色列表展示
|
|
35
|
+
- ➕ 新增角色(表单验证)
|
|
36
|
+
- ✏️ 编辑角色信息
|
|
37
|
+
- 🗑️ 删除角色(确认对话框)
|
|
38
|
+
- 🔐 权限树形分配(支持多级权限)
|
|
39
|
+
- 🔍 搜索和筛选
|
|
40
|
+
- 📤 导出角色列表
|
|
41
|
+
- 🔄 角色状态管理(正常/停用)
|
|
42
|
+
|
|
43
|
+
**角色字段**:
|
|
44
|
+
- 角色编号、角色名称、权限字符
|
|
45
|
+
- 显示顺序、状态、创建时间、备注
|
|
46
|
+
|
|
47
|
+
**权限体系**:
|
|
48
|
+
- 系统管理
|
|
49
|
+
- 用户管理(查看、新增、修改、删除)
|
|
50
|
+
- 角色管理(查看、新增、修改、删除)
|
|
51
|
+
- 菜单管理(查看、新增、修改、删除)
|
|
52
|
+
- 业务管理
|
|
53
|
+
- 订单管理(查看、新增)
|
|
54
|
+
|
|
55
|
+
**示例数据**: 3个角色(超级管理员、普通角色、测试角色)
|
|
56
|
+
|
|
57
|
+
### 3️⃣ 菜单管理模块
|
|
58
|
+
**路由**: `/system/menu`
|
|
59
|
+
|
|
60
|
+
**主要功能**:
|
|
61
|
+
- 🌳 树形菜单展示
|
|
62
|
+
- ➕ 新增菜单(支持子菜单)
|
|
63
|
+
- ✏️ 编辑菜单配置
|
|
64
|
+
- 🗑️ 删除菜单(确认对话框)
|
|
65
|
+
- 📂 展开/折叠菜单树
|
|
66
|
+
- 🔍 搜索和筛选
|
|
67
|
+
- 📤 导出菜单列表
|
|
68
|
+
- 🔄 菜单状态管理(正常/停用)
|
|
69
|
+
|
|
70
|
+
**菜单字段**:
|
|
71
|
+
- 菜单名称、父菜单、排序
|
|
72
|
+
- 路由地址、组件路径、权限标识
|
|
73
|
+
- 菜单图标、是否外链、是否缓存
|
|
74
|
+
- 是否可见、状态、创建时间、备注
|
|
75
|
+
|
|
76
|
+
**菜单类型**:
|
|
77
|
+
- M (目录):菜单分类
|
|
78
|
+
- C (菜单):可访问的菜单项
|
|
79
|
+
- F (按钮):页面内的操作按钮
|
|
80
|
+
|
|
81
|
+
**示例数据**: 2个一级菜单,5个子菜单
|
|
82
|
+
|
|
83
|
+
## 技术栈
|
|
84
|
+
|
|
85
|
+
| 技术 | 版本 | 用途 |
|
|
86
|
+
|------|------|------|
|
|
87
|
+
| React | 19.2.4 | UI框架 |
|
|
88
|
+
| TypeScript | 5.9.3 | 类型检查 |
|
|
89
|
+
| Ant Design | 6.3.2 | UI组件库 |
|
|
90
|
+
| React Router | 7.13.1 | 路由管理 |
|
|
91
|
+
| Dayjs | 1.11.10 | 日期处理 |
|
|
92
|
+
| Vite | 5.4.0 | 构建工具 |
|
|
93
|
+
| ESLint | 9.39.4 | 代码检查 |
|
|
94
|
+
|
|
95
|
+
## 项目结构
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
admin-system/
|
|
99
|
+
├── src/
|
|
100
|
+
│ ├── pages/
|
|
101
|
+
│ │ ├── system/
|
|
102
|
+
│ │ │ ├── user/
|
|
103
|
+
│ │ │ │ └── User.tsx # 用户管理页面
|
|
104
|
+
│ │ │ ├── role/
|
|
105
|
+
│ │ │ │ └── Role.tsx # 角色管理页面
|
|
106
|
+
│ │ │ └── menu/
|
|
107
|
+
│ │ │ └── Menu.tsx # 菜单管理页面
|
|
108
|
+
│ │ ├── Dashboard.tsx # 仪表板
|
|
109
|
+
│ │ └── Users.tsx # 旧用户页面
|
|
110
|
+
│ ├── components/
|
|
111
|
+
│ │ ├── MainLayout.tsx # 主布局(已更新)
|
|
112
|
+
│ │ ├── Child.tsx
|
|
113
|
+
│ │ └── SunZi.tsx
|
|
114
|
+
│ ├── contexts/
|
|
115
|
+
│ │ └── ThemeContext.tsx # 主题上下文
|
|
116
|
+
│ ├── hooks/
|
|
117
|
+
│ │ └── usePermission.tsx # 权限Hook
|
|
118
|
+
│ ├── types/
|
|
119
|
+
│ │ └── permission.ts # 权限类型
|
|
120
|
+
│ ├── assets/ # 静态资源
|
|
121
|
+
│ ├── App.tsx # 应用入口(已更新)
|
|
122
|
+
│ ├── main.tsx # 主文件
|
|
123
|
+
│ ├── index.css # 全局样式
|
|
124
|
+
│ └── App.css # 应用样式
|
|
125
|
+
├── public/ # 公共资源
|
|
126
|
+
├── package.json # 项目配置
|
|
127
|
+
├── tsconfig.json # TypeScript配置
|
|
128
|
+
├── tsconfig.app.json # 应用TypeScript配置
|
|
129
|
+
├── vite.config.ts # Vite配置
|
|
130
|
+
├── eslint.config.js # ESLint配置
|
|
131
|
+
├── index.html # HTML入口
|
|
132
|
+
├── SYSTEM_MANAGEMENT.md # 系统管理文档
|
|
133
|
+
├── QUICK_START.md # 快速开始指南
|
|
134
|
+
├── IMPLEMENTATION_SUMMARY.md # 实现总结
|
|
135
|
+
└── PROJECT_OVERVIEW.md # 本文件
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## 快速开始
|
|
139
|
+
|
|
140
|
+
### 安装依赖
|
|
141
|
+
```bash
|
|
142
|
+
npm install
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 启动开发服务器
|
|
146
|
+
```bash
|
|
147
|
+
npm run dev
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
访问 `http://localhost:5173`
|
|
151
|
+
|
|
152
|
+
### 构建生产版本
|
|
153
|
+
```bash
|
|
154
|
+
npm run build
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### 预览构建结果
|
|
158
|
+
```bash
|
|
159
|
+
npm run preview
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### 代码检查
|
|
163
|
+
```bash
|
|
164
|
+
npm run lint
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## 菜单导航
|
|
168
|
+
|
|
169
|
+
### 左侧菜单结构
|
|
170
|
+
```
|
|
171
|
+
📊 Dashboard (首页)
|
|
172
|
+
└── 📁 系统管理
|
|
173
|
+
├── 👥 用户管理
|
|
174
|
+
├── 🔐 角色管理
|
|
175
|
+
└── 📋 菜单管理
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### 直接访问
|
|
179
|
+
- 首页: `http://localhost:5173/`
|
|
180
|
+
- 用户管理: `http://localhost:5173/system/user`
|
|
181
|
+
- 角色管理: `http://localhost:5173/system/role`
|
|
182
|
+
- 菜单管理: `http://localhost:5173/system/menu`
|
|
183
|
+
|
|
184
|
+
## 主要特性
|
|
185
|
+
|
|
186
|
+
### ✨ 用户体验
|
|
187
|
+
- 🎨 现代化的UI设计
|
|
188
|
+
- 📱 响应式布局
|
|
189
|
+
- ⚡ 快速的交互反馈
|
|
190
|
+
- 🔔 友好的提示信息
|
|
191
|
+
|
|
192
|
+
### 🔧 功能完整性
|
|
193
|
+
- ✅ 完整的CRUD操作
|
|
194
|
+
- ✅ 表单验证
|
|
195
|
+
- ✅ 搜索筛选
|
|
196
|
+
- ✅ 数据导出
|
|
197
|
+
- ✅ 状态管理
|
|
198
|
+
- ✅ 权限分配
|
|
199
|
+
|
|
200
|
+
### 💻 代码质量
|
|
201
|
+
- ✅ TypeScript类型检查
|
|
202
|
+
- ✅ 模块化设计
|
|
203
|
+
- ✅ 清晰的代码结构
|
|
204
|
+
- ✅ 完善的文档
|
|
205
|
+
|
|
206
|
+
### 🚀 性能优化
|
|
207
|
+
- ✅ 虚拟滚动支持
|
|
208
|
+
- ✅ 分页加载
|
|
209
|
+
- ✅ 缓存优化
|
|
210
|
+
- ✅ 快速响应
|
|
211
|
+
|
|
212
|
+
## 表单验证规则
|
|
213
|
+
|
|
214
|
+
### 用户管理
|
|
215
|
+
| 字段 | 验证规则 |
|
|
216
|
+
|------|---------|
|
|
217
|
+
| 用户名称 | 必填 |
|
|
218
|
+
| 用户昵称 | 必填 |
|
|
219
|
+
| 邮箱 | 邮箱格式 |
|
|
220
|
+
| 手机号码 | 1[3-9]开头的11位数字 |
|
|
221
|
+
|
|
222
|
+
### 角色管理
|
|
223
|
+
| 字段 | 验证规则 |
|
|
224
|
+
|------|---------|
|
|
225
|
+
| 角色名称 | 必填 |
|
|
226
|
+
| 权限字符 | 必填 |
|
|
227
|
+
| 显示顺序 | 必填 |
|
|
228
|
+
|
|
229
|
+
### 菜单管理
|
|
230
|
+
| 字段 | 验证规则 |
|
|
231
|
+
|------|---------|
|
|
232
|
+
| 菜单名称 | 必填 |
|
|
233
|
+
| 路由地址 | 必填 |
|
|
234
|
+
| 菜单类型 | 必填 |
|
|
235
|
+
| 显示顺序 | 必填 |
|
|
236
|
+
|
|
237
|
+
## 数据管理
|
|
238
|
+
|
|
239
|
+
### 状态管理方式
|
|
240
|
+
- 使用 React `useState` Hook
|
|
241
|
+
- 本地内存存储
|
|
242
|
+
- 支持后端集成
|
|
243
|
+
|
|
244
|
+
### 示例数据
|
|
245
|
+
- **用户**: 3个(admin, test, dev)
|
|
246
|
+
- **角色**: 3个(超级管理员, 普通角色, 测试角色)
|
|
247
|
+
- **菜单**: 7个(2个一级菜单,5个子菜单)
|
|
248
|
+
|
|
249
|
+
## 浏览器兼容性
|
|
250
|
+
|
|
251
|
+
| 浏览器 | 最低版本 |
|
|
252
|
+
|--------|---------|
|
|
253
|
+
| Chrome | 90+ |
|
|
254
|
+
| Firefox | 88+ |
|
|
255
|
+
| Safari | 14+ |
|
|
256
|
+
| Edge | 90+ |
|
|
257
|
+
|
|
258
|
+
## 文档
|
|
259
|
+
|
|
260
|
+
### 📖 可用文档
|
|
261
|
+
1. **SYSTEM_MANAGEMENT.md** - 详细的系统管理功能文档
|
|
262
|
+
2. **QUICK_START.md** - 快速开始指南和常见操作
|
|
263
|
+
3. **IMPLEMENTATION_SUMMARY.md** - 实现细节和技术总结
|
|
264
|
+
4. **PROJECT_OVERVIEW.md** - 本文件,项目概览
|
|
265
|
+
|
|
266
|
+
## 常见问题
|
|
267
|
+
|
|
268
|
+
### Q: 如何添加新用户?
|
|
269
|
+
A: 点击"新增"按钮,填写用户信息,点击"确定"保存。
|
|
270
|
+
|
|
271
|
+
### Q: 如何分配角色权限?
|
|
272
|
+
A: 在角色管理中编辑或新增角色,在权限分配区域选择需要的权限。
|
|
273
|
+
|
|
274
|
+
### Q: 如何添加子菜单?
|
|
275
|
+
A: 在菜单管理中找到父菜单,点击"+"按钮添加子菜单。
|
|
276
|
+
|
|
277
|
+
### Q: 数据会被保存吗?
|
|
278
|
+
A: 当前数据存储在内存中,刷新页面后会重置。可集成后端API实现持久化。
|
|
279
|
+
|
|
280
|
+
### Q: 如何集成后端API?
|
|
281
|
+
A: 将 `useState` 替换为 API 调用,使用 `useEffect` 获取数据。
|
|
282
|
+
|
|
283
|
+
## 后续计划
|
|
284
|
+
|
|
285
|
+
### 短期(1-2周)
|
|
286
|
+
- [ ] 集成真实的后端API
|
|
287
|
+
- [ ] 实现数据持久化
|
|
288
|
+
- [ ] 添加用户认证
|
|
289
|
+
- [ ] 实现权限验证
|
|
290
|
+
|
|
291
|
+
### 中期(1个月)
|
|
292
|
+
- [ ] 批量操作功能
|
|
293
|
+
- [ ] 高级搜索和筛选
|
|
294
|
+
- [ ] 数据导入功能
|
|
295
|
+
- [ ] 操作日志记录
|
|
296
|
+
|
|
297
|
+
### 长期(2-3个月)
|
|
298
|
+
- [ ] 性能优化(虚拟滚动)
|
|
299
|
+
- [ ] 国际化支持
|
|
300
|
+
- [ ] 主题定制
|
|
301
|
+
- [ ] 移动端适配
|
|
302
|
+
|
|
303
|
+
## 贡献指南
|
|
304
|
+
|
|
305
|
+
### 开发流程
|
|
306
|
+
1. 创建功能分支
|
|
307
|
+
2. 实现功能
|
|
308
|
+
3. 编写测试
|
|
309
|
+
4. 提交代码审查
|
|
310
|
+
5. 合并到主分支
|
|
311
|
+
|
|
312
|
+
### 代码规范
|
|
313
|
+
- 使用 TypeScript
|
|
314
|
+
- 遵循 ESLint 规则
|
|
315
|
+
- 添加必要的注释
|
|
316
|
+
- 编写清晰的提交信息
|
|
317
|
+
|
|
318
|
+
## 许可证
|
|
319
|
+
|
|
320
|
+
MIT License
|
|
321
|
+
|
|
322
|
+
## 联系方式
|
|
323
|
+
|
|
324
|
+
如有问题或建议,请通过以下方式联系:
|
|
325
|
+
- 提交 Issue
|
|
326
|
+
- 发送 Pull Request
|
|
327
|
+
- 发送邮件
|
|
328
|
+
|
|
329
|
+
## 致谢
|
|
330
|
+
|
|
331
|
+
感谢以下开源项目的支持:
|
|
332
|
+
- React
|
|
333
|
+
- TypeScript
|
|
334
|
+
- Ant Design
|
|
335
|
+
- React Router
|
|
336
|
+
- Vite
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
**项目状态**: ✅ 完成并可用
|
|
341
|
+
**最后更新**: 2026-01-18
|
|
342
|
+
**版本**: 1.0.0
|
|
343
|
+
**作者**: Admin System Team
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# 快速开始指南
|
|
2
|
+
|
|
3
|
+
## 项目已完成功能
|
|
4
|
+
|
|
5
|
+
### ✅ 已实现的三个管理模块
|
|
6
|
+
|
|
7
|
+
#### 1. 用户管理 (`/system/user`)
|
|
8
|
+
- 完整的用户列表展示
|
|
9
|
+
- 新增/编辑/删除用户
|
|
10
|
+
- 用户搜索和筛选
|
|
11
|
+
- 用户导出功能
|
|
12
|
+
- 表单验证(邮箱、手机号)
|
|
13
|
+
- 示例数据:3个用户
|
|
14
|
+
|
|
15
|
+
#### 2. 角色管理 (`/system/role`)
|
|
16
|
+
- 完整的角色列表展示
|
|
17
|
+
- 新增/编辑/删除角色
|
|
18
|
+
- 权限树形分配
|
|
19
|
+
- 角色搜索和筛选
|
|
20
|
+
- 角色导出功能
|
|
21
|
+
- 示例数据:3个角色
|
|
22
|
+
|
|
23
|
+
#### 3. 菜单管理 (`/system/menu`)
|
|
24
|
+
- 树形菜单展示
|
|
25
|
+
- 新增/编辑/删除菜单
|
|
26
|
+
- 支持添加子菜单
|
|
27
|
+
- 菜单展开/折叠
|
|
28
|
+
- 菜单搜索和筛选
|
|
29
|
+
- 菜单导出功能
|
|
30
|
+
- 示例数据:2个一级菜单,5个子菜单
|
|
31
|
+
|
|
32
|
+
## 访问方式
|
|
33
|
+
|
|
34
|
+
### 本地开发
|
|
35
|
+
```bash
|
|
36
|
+
npm run dev
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
访问 `http://localhost:5173`
|
|
40
|
+
|
|
41
|
+
### 菜单导航
|
|
42
|
+
在左侧菜单栏中:
|
|
43
|
+
- 点击"系统管理"展开子菜单
|
|
44
|
+
- 选择"用户管理"、"角色管理"或"菜单管理"
|
|
45
|
+
|
|
46
|
+
### 直接访问
|
|
47
|
+
- 用户管理: `http://localhost:5173/system/user`
|
|
48
|
+
- 角色管理: `http://localhost:5173/system/role`
|
|
49
|
+
- 菜单管理: `http://localhost:5173/system/menu`
|
|
50
|
+
|
|
51
|
+
## 主要特性
|
|
52
|
+
|
|
53
|
+
### 用户管理
|
|
54
|
+
```
|
|
55
|
+
功能:
|
|
56
|
+
✓ 用户列表(分页、排序)
|
|
57
|
+
✓ 新增用户(表单验证)
|
|
58
|
+
✓ 编辑用户信息
|
|
59
|
+
✓ 删除用户(确认对话框)
|
|
60
|
+
✓ 搜索用户(用户名、手机号、时间范围、状态)
|
|
61
|
+
✓ 导出用户列表
|
|
62
|
+
✓ 用户状态切换(正常/停用)
|
|
63
|
+
|
|
64
|
+
字段:
|
|
65
|
+
- 用户编号、用户名、昵称、部门
|
|
66
|
+
- 手机号、邮箱、性别、状态
|
|
67
|
+
- 创建时间、备注
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 角色管理
|
|
71
|
+
```
|
|
72
|
+
功能:
|
|
73
|
+
✓ 角色列表(分页、排序)
|
|
74
|
+
✓ 新增角色(表单验证)
|
|
75
|
+
✓ 编辑角色信息
|
|
76
|
+
✓ 删除角色(确认对话框)
|
|
77
|
+
✓ 权限分配(树形选择)
|
|
78
|
+
✓ 搜索角色(角色名、权限字符、时间范围、状态)
|
|
79
|
+
✓ 导出角色列表
|
|
80
|
+
✓ 角色状态切换(正常/停用)
|
|
81
|
+
|
|
82
|
+
权限类型:
|
|
83
|
+
- 系统管理
|
|
84
|
+
- 用户管理(查看、新增、修改、删除)
|
|
85
|
+
- 角色管理(查看、新增、修改、删除)
|
|
86
|
+
- 菜单管理(查看、新增、修改、删除)
|
|
87
|
+
- 业务管理
|
|
88
|
+
- 订单管理(查看、新增)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 菜单管理
|
|
92
|
+
```
|
|
93
|
+
功能:
|
|
94
|
+
✓ 菜单树形展示
|
|
95
|
+
✓ 新增菜单(支持子菜单)
|
|
96
|
+
✓ 编辑菜单配置
|
|
97
|
+
✓ 删除菜单(确认对话框)
|
|
98
|
+
✓ 展开/折叠菜单树
|
|
99
|
+
✓ 搜索菜单(菜单名、状态)
|
|
100
|
+
✓ 导出菜单列表
|
|
101
|
+
✓ 菜单状态切换(正常/停用)
|
|
102
|
+
|
|
103
|
+
菜单类型:
|
|
104
|
+
- M (目录):菜单分类
|
|
105
|
+
- C (菜单):可访问的菜单项
|
|
106
|
+
- F (按钮):页面内的操作按钮
|
|
107
|
+
|
|
108
|
+
配置项:
|
|
109
|
+
- 菜单名称、父菜单、排序
|
|
110
|
+
- 路由地址、组件路径、权限标识
|
|
111
|
+
- 菜单图标、是否外链、是否缓存
|
|
112
|
+
- 是否可见、状态、备注
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## 文件结构
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
src/
|
|
119
|
+
├── pages/
|
|
120
|
+
│ └── system/
|
|
121
|
+
│ ├── user/
|
|
122
|
+
│ │ └── User.tsx # 用户管理页面
|
|
123
|
+
│ ├── role/
|
|
124
|
+
│ │ └── Role.tsx # 角色管理页面
|
|
125
|
+
│ └── menu/
|
|
126
|
+
│ └── Menu.tsx # 菜单管理页面
|
|
127
|
+
├── components/
|
|
128
|
+
│ └── MainLayout.tsx # 主布局(已更新菜单)
|
|
129
|
+
└── App.tsx # 路由配置(已添加新路由)
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## 技术栈
|
|
133
|
+
|
|
134
|
+
- **React**: 19.2.4 - UI框架
|
|
135
|
+
- **TypeScript**: 5.9.3 - 类型检查
|
|
136
|
+
- **Ant Design**: 6.3.2 - UI组件库
|
|
137
|
+
- **React Router**: 7.13.1 - 路由管理
|
|
138
|
+
- **Dayjs**: 1.11.10 - 日期处理
|
|
139
|
+
- **Vite**: 5.4.0 - 构建工具
|
|
140
|
+
|
|
141
|
+
## 核心功能演示
|
|
142
|
+
|
|
143
|
+
### 1. 添加新用户
|
|
144
|
+
```
|
|
145
|
+
1. 点击"新增"按钮
|
|
146
|
+
2. 填写用户信息(用户名、昵称、邮箱、手机号等)
|
|
147
|
+
3. 选择部门和性别
|
|
148
|
+
4. 设置用户状态
|
|
149
|
+
5. 点击"确定"保存
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### 2. 分配角色权限
|
|
153
|
+
```
|
|
154
|
+
1. 在角色管理中点击"新增"
|
|
155
|
+
2. 填写角色名称和权限字符
|
|
156
|
+
3. 在权限分配区域选择需要的权限
|
|
157
|
+
4. 点击"确定"保存
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 3. 管理菜单结构
|
|
161
|
+
```
|
|
162
|
+
1. 在菜单管理中查看菜单树
|
|
163
|
+
2. 点击"+"按钮添加子菜单
|
|
164
|
+
3. 配置菜单路由、组件路径和权限
|
|
165
|
+
4. 点击"确定"保存
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## 数据管理
|
|
169
|
+
|
|
170
|
+
### 本地状态管理
|
|
171
|
+
所有数据使用 React `useState` Hook 进行管理,存储在内存中。
|
|
172
|
+
|
|
173
|
+
### 示例数据
|
|
174
|
+
- **用户**: admin, test, dev (3个)
|
|
175
|
+
- **角色**: 超级管理员, 普通角色, 测试角色 (3个)
|
|
176
|
+
- **菜单**: 系统管理, 业务管理及其子菜单 (7个)
|
|
177
|
+
|
|
178
|
+
## 表单验证规则
|
|
179
|
+
|
|
180
|
+
### 用户管理
|
|
181
|
+
- 用户名称: 必填
|
|
182
|
+
- 用户昵称: 必填
|
|
183
|
+
- 邮箱: 邮箱格式验证
|
|
184
|
+
- 手机号码: 1[3-9]开头的11位数字
|
|
185
|
+
|
|
186
|
+
### 角色管理
|
|
187
|
+
- 角色名称: 必填
|
|
188
|
+
- 权限字符: 必填
|
|
189
|
+
- 显示顺序: 必填
|
|
190
|
+
|
|
191
|
+
### 菜单管理
|
|
192
|
+
- 菜单名称: 必填
|
|
193
|
+
- 路由地址: 必填
|
|
194
|
+
- 菜单类型: 必填
|
|
195
|
+
- 显示顺序: 必填
|
|
196
|
+
|
|
197
|
+
## 常见操作
|
|
198
|
+
|
|
199
|
+
### 搜索用户
|
|
200
|
+
1. 在搜索框中输入用户名或手机号
|
|
201
|
+
2. 选择创建时间范围(可选)
|
|
202
|
+
3. 选择用户状态(可选)
|
|
203
|
+
4. 点击"搜索"按钮
|
|
204
|
+
|
|
205
|
+
### 编辑用户
|
|
206
|
+
1. 在用户列表中找到目标用户
|
|
207
|
+
2. 点击编辑图标(铅笔)
|
|
208
|
+
3. 修改用户信息
|
|
209
|
+
4. 点击"确定"保存
|
|
210
|
+
|
|
211
|
+
### 删除用户
|
|
212
|
+
1. 在用户列表中找到目标用户
|
|
213
|
+
2. 点击删除图标(垃圾桶)
|
|
214
|
+
3. 在确认对话框中点击"确定"
|
|
215
|
+
4. 用户被删除
|
|
216
|
+
|
|
217
|
+
### 分配权限
|
|
218
|
+
1. 在角色管理中编辑或新增角色
|
|
219
|
+
2. 在"权限分配"区域展开权限树
|
|
220
|
+
3. 勾选需要的权限
|
|
221
|
+
4. 点击"确定"保存
|
|
222
|
+
|
|
223
|
+
### 添加子菜单
|
|
224
|
+
1. 在菜单管理中找到父菜单
|
|
225
|
+
2. 点击该行的"+"按钮
|
|
226
|
+
3. 填写子菜单信息
|
|
227
|
+
4. 点击"确定"保存
|
|
228
|
+
|
|
229
|
+
## 下一步
|
|
230
|
+
|
|
231
|
+
### 后端集成
|
|
232
|
+
1. 将 API 端点替换为真实的后端服务
|
|
233
|
+
2. 实现数据持久化
|
|
234
|
+
3. 添加权限验证
|
|
235
|
+
|
|
236
|
+
### 功能扩展
|
|
237
|
+
1. 批量操作功能
|
|
238
|
+
2. 高级搜索和筛选
|
|
239
|
+
3. 数据导入功能
|
|
240
|
+
4. 操作日志记录
|
|
241
|
+
|
|
242
|
+
### 性能优化
|
|
243
|
+
1. 虚拟滚动处理大数据列表
|
|
244
|
+
2. 分页加载
|
|
245
|
+
3. 缓存优化
|
|
246
|
+
|
|
247
|
+
## 故障排除
|
|
248
|
+
|
|
249
|
+
### 页面无法访问
|
|
250
|
+
- 确保开发服务器正在运行 (`npm run dev`)
|
|
251
|
+
- 检查浏览器控制台是否有错误信息
|
|
252
|
+
- 清除浏览器缓存并刷新页面
|
|
253
|
+
|
|
254
|
+
### 菜单不显示
|
|
255
|
+
- 检查 `MainLayout.tsx` 中的菜单配置
|
|
256
|
+
- 确保路由在 `App.tsx` 中正确配置
|
|
257
|
+
- 检查权限过滤逻辑
|
|
258
|
+
|
|
259
|
+
### 表单验证失败
|
|
260
|
+
- 检查输入值是否符合验证规则
|
|
261
|
+
- 查看浏览器控制台的错误信息
|
|
262
|
+
- 确保所有必填字段都已填写
|
|
263
|
+
|
|
264
|
+
## 支持
|
|
265
|
+
|
|
266
|
+
如有问题,请查看:
|
|
267
|
+
- `SYSTEM_MANAGEMENT.md` - 详细功能文档
|
|
268
|
+
- 浏览器开发者工具 - 调试信息
|
|
269
|
+
- React DevTools - 组件状态检查
|
|
270
|
+
|
|
271
|
+
## 许可证
|
|
272
|
+
|
|
273
|
+
MIT
|