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.
Files changed (80) hide show
  1. package/package.json +11 -0
  2. package/template/.env.development +2 -0
  3. package/template/.env.production +2 -0
  4. package/template/.env.test +2 -0
  5. package/template/.kiro/specs/course-backend-integration/.config.kiro +1 -0
  6. package/template/.kiro/specs/course-backend-integration/design.md +234 -0
  7. package/template/.kiro/specs/course-backend-integration/requirements.md +116 -0
  8. package/template/.kiro/specs/course-backend-integration/tasks.md +0 -0
  9. package/template/COMPLETION_CHECKLIST.md +305 -0
  10. package/template/DEPLOYMENT_GUIDE.md +391 -0
  11. package/template/FINAL_SUMMARY.md +428 -0
  12. package/template/IMPLEMENTATION_SUMMARY.md +382 -0
  13. package/template/INTEGRATION_GUIDE.md +458 -0
  14. package/template/PROJECT_OVERVIEW.md +343 -0
  15. package/template/QUICK_START.md +273 -0
  16. package/template/RBAC_Tutorial.md +424 -0
  17. package/template/README.md +16 -0
  18. package/template/React_Antd_TS_Tutorial.md +279 -0
  19. package/template/START_ALL.md +163 -0
  20. package/template/SYSTEM_MANAGEMENT.md +247 -0
  21. package/template/eslint.config.js +29 -0
  22. package/template/index.html +13 -0
  23. package/template/koa-server/README.md +65 -0
  24. package/template/koa-server/app.js +625 -0
  25. package/template/koa-server/package-lock.json +1547 -0
  26. package/template/koa-server/package.json +26 -0
  27. package/template/koa-server/public/assets/index-B1Cj4mG9.css +1 -0
  28. package/template/koa-server/public/assets/index-Mgxg-xqT.js +503 -0
  29. package/template/koa-server/public/favicon.svg +1 -0
  30. package/template/koa-server/public/icons.svg +24 -0
  31. package/template/koa-server/public/index.html +14 -0
  32. package/template/koa-server/uploads/1774265088480-962006467.png +0 -0
  33. package/template/koa-server/uploads/file-1774346891704-610962013.png +0 -0
  34. package/template/koa-server/uploads/file-1774346898887-58636533.png +0 -0
  35. package/template/koa-server/uploads/file-1774346912676-771862547.png +0 -0
  36. package/template/koa-server/uploads/file-1774347025308-130037894.png +0 -0
  37. package/template/koa-server/uploads/file-1774347031104-766499773.png +0 -0
  38. package/template/koa-server/uploads/file-1774347094969-731402203.png +0 -0
  39. package/template/koa-server/uploads/file-1774347101948-330296656.png +0 -0
  40. package/template/koa-server/uploads/file-1774351682377-932868720.png +0 -0
  41. package/template/koa-server/uploads/file-1774352037654-877426905.png +0 -0
  42. package/template/koa-server/uploads/file-1774352175463-386248997.png +0 -0
  43. package/template/koa-server/uploads/file-1774361446433-405859961.png +0 -0
  44. package/template/koa-server/uploads/file-1774361512207-465806267.png +0 -0
  45. package/template/lianxi.html +15 -0
  46. package/template/package-lock.json +6307 -0
  47. package/template/package.json +36 -0
  48. package/template/public/favicon.svg +1 -0
  49. package/template/public/icons.svg +24 -0
  50. package/template/src/App.css +184 -0
  51. package/template/src/App.tsx +44 -0
  52. package/template/src/api/course.ts +86 -0
  53. package/template/src/api/menu.ts +55 -0
  54. package/template/src/api/role.ts +58 -0
  55. package/template/src/api/user.ts +58 -0
  56. package/template/src/assets/hero.png +0 -0
  57. package/template/src/assets/react.svg +1 -0
  58. package/template/src/assets/vite.svg +1 -0
  59. package/template/src/components/Child.tsx +10 -0
  60. package/template/src/components/MainLayout.tsx +169 -0
  61. package/template/src/components/SunZi.tsx +13 -0
  62. package/template/src/contexts/ThemeContext.tsx +33 -0
  63. package/template/src/hooks/usePermission.tsx +62 -0
  64. package/template/src/index.css +111 -0
  65. package/template/src/main.tsx +13 -0
  66. package/template/src/pages/Dashboard.tsx +39 -0
  67. package/template/src/pages/Users.tsx +95 -0
  68. package/template/src/pages/banner/BannerList.tsx +182 -0
  69. package/template/src/pages/course/Course.tsx +586 -0
  70. package/template/src/pages/course/CourseList.tsx +168 -0
  71. package/template/src/pages/system/menu/Menu.tsx +501 -0
  72. package/template/src/pages/system/role/Role.tsx +458 -0
  73. package/template/src/pages/system/user/User.tsx +364 -0
  74. package/template/src/types/permission.ts +21 -0
  75. package/template/src/utils/request.tsx +94 -0
  76. package/template/src/vite-env.d.ts +1 -0
  77. package/template/tsconfig.app.json +32 -0
  78. package/template/tsconfig.json +7 -0
  79. package/template/tsconfig.node.json +13 -0
  80. package/template/vite.config.ts +30 -0
@@ -0,0 +1,458 @@
1
+ # 前后端集成完整指南
2
+
3
+ ## 项目架构
4
+
5
+ ```
6
+ admin-system/
7
+ ├── 前端应用 (React + TypeScript + Vite)
8
+ │ ├── src/
9
+ │ │ ├── api/ # API 服务层
10
+ │ │ │ ├── user.ts # 用户 API
11
+ │ │ │ ├── role.ts # 角色 API
12
+ │ │ │ └── menu.ts # 菜单 API
13
+ │ │ ├── utils/
14
+ │ │ │ └── request.tsx # axios 二次封装
15
+ │ │ └── pages/system/ # 管理模块
16
+ │ │ ├── user/User.tsx
17
+ │ │ ├── role/Role.tsx
18
+ │ │ └── menu/Menu.tsx
19
+ │ └── .env.development # 开发环境配置
20
+
21
+ └── 后端服务 (Koa)
22
+ └── koa-server/
23
+ ├── app.js # 主应用文件
24
+ └── package.json # 依赖配置
25
+ ```
26
+
27
+ ## 技术栈
28
+
29
+ ### 前端
30
+ - React 19.2.4
31
+ - TypeScript 5.9.3
32
+ - Ant Design 6.3.2
33
+ - Axios 1.6.0
34
+ - Vite 5.4.0
35
+
36
+ ### 后端
37
+ - Koa 2.14.2
38
+ - Koa Router 12.0.0
39
+ - Koa CORS 0.0.16
40
+ - Koa Body Parser 4.4.1
41
+
42
+ ## 集成步骤
43
+
44
+ ### 第一步:环境准备
45
+
46
+ 1. **安装 Node.js**
47
+ - 版本要求:v20.18.0+
48
+ - 下载地址:https://nodejs.org/
49
+
50
+ 2. **克隆项目**
51
+ ```bash
52
+ git clone <项目地址>
53
+ cd admin-system
54
+ ```
55
+
56
+ 3. **安装前端依赖**
57
+ ```bash
58
+ npm install
59
+ ```
60
+
61
+ 4. **安装后端依赖**
62
+ ```bash
63
+ cd koa-server
64
+ npm install
65
+ cd ..
66
+ ```
67
+
68
+ ### 第二步:配置环境变量
69
+
70
+ 1. **前端开发环境配置** (`.env.development`)
71
+ ```
72
+ VITE_API_URL=http://localhost:8080
73
+ ```
74
+
75
+ 2. **前端测试环境配置** (`.env.test`)
76
+ ```
77
+ VITE_API_URL=http://localhost:8081
78
+ ```
79
+
80
+ 3. **前端生产环境配置** (`.env.production`)
81
+ ```
82
+ VITE_API_URL=http://47.113.230.113
83
+ ```
84
+
85
+ ### 第三步:启动服务
86
+
87
+ #### 方式一:分别启动(推荐)
88
+
89
+ **终端 1 - 启动后端服务**
90
+ ```bash
91
+ cd koa-server
92
+ npm run dev
93
+ ```
94
+
95
+ 输出应该显示:
96
+ ```
97
+ Koa 服务器已启动: http://localhost:8080
98
+ ```
99
+
100
+ **终端 2 - 启动前端应用**
101
+ ```bash
102
+ npm run dev
103
+ ```
104
+
105
+ 输出应该显示:
106
+ ```
107
+ VITE v5.4.21 ready in 518 ms
108
+ ➜ Local: http://localhost:5173/
109
+ ```
110
+
111
+ #### 方式二:使用 npm 脚本
112
+
113
+ 在 `package.json` 中添加:
114
+ ```json
115
+ {
116
+ "scripts": {
117
+ "dev:all": "concurrently \"cd koa-server && npm run dev\" \"npm run dev\""
118
+ }
119
+ }
120
+ ```
121
+
122
+ 然后运行:
123
+ ```bash
124
+ npm run dev:all
125
+ ```
126
+
127
+ ### 第四步:验证集成
128
+
129
+ 1. **打开浏览器**
130
+ 访问 `http://localhost:5173`
131
+
132
+ 2. **测试 API 连接**
133
+ - 打开浏览器开发者工具(F12)
134
+ - 切换到 Network 标签
135
+ - 点击左侧菜单"系统管理" > "用户管理"
136
+ - 观察网络请求,应该看到 `/system/user/list` 请求
137
+
138
+ 3. **验证数据加载**
139
+ - 用户列表应该显示 3 个用户
140
+ - 角色列表应该显示 3 个角色
141
+ - 菜单列表应该显示树形菜单
142
+
143
+ ## API 集成详解
144
+
145
+ ### 请求工具 (`src/utils/request.tsx`)
146
+
147
+ ```typescript
148
+ import { request } from '@/utils/request';
149
+
150
+ // GET 请求
151
+ const data = await request.get('/system/user/list', { params: { pageNum: 1 } });
152
+
153
+ // POST 请求
154
+ const result = await request.post('/system/user', { username: 'test' });
155
+
156
+ // PUT 请求
157
+ const updated = await request.put('/system/user', { id: '1', username: 'new' });
158
+
159
+ // DELETE 请求
160
+ await request.delete('/system/user/1');
161
+ ```
162
+
163
+ ### API 服务层 (`src/api/user.ts`)
164
+
165
+ ```typescript
166
+ import { request } from '@/utils/request';
167
+
168
+ // 获取用户列表
169
+ export const getUserList = (params) =>
170
+ request.get('/system/user/list', { params });
171
+
172
+ // 新增用户
173
+ export const addUser = (data) =>
174
+ request.post('/system/user', data);
175
+
176
+ // 编辑用户
177
+ export const updateUser = (data) =>
178
+ request.put('/system/user', data);
179
+
180
+ // 删除用户
181
+ export const deleteUser = (id) =>
182
+ request.delete(`/system/user/${id}`);
183
+ ```
184
+
185
+ ### 页面集成 (`src/pages/system/user/User.tsx`)
186
+
187
+ ```typescript
188
+ import { getUserList, addUser, updateUser, deleteUser } from '@/api/user';
189
+
190
+ // 获取列表
191
+ const fetchUsers = async () => {
192
+ const response = await getUserList({ pageNum: 1, pageSize: 10 });
193
+ setUsers(response.rows);
194
+ };
195
+
196
+ // 新增
197
+ const handleAdd = async (data) => {
198
+ await addUser(data);
199
+ fetchUsers();
200
+ };
201
+
202
+ // 编辑
203
+ const handleEdit = async (data) => {
204
+ await updateUser(data);
205
+ fetchUsers();
206
+ };
207
+
208
+ // 删除
209
+ const handleDelete = async (id) => {
210
+ await deleteUser(id);
211
+ fetchUsers();
212
+ };
213
+ ```
214
+
215
+ ## 后端 API 文档
216
+
217
+ ### 用户管理
218
+
219
+ | 方法 | 端点 | 说明 |
220
+ |------|------|------|
221
+ | GET | `/system/user/list` | 获取用户列表 |
222
+ | GET | `/system/user/:id` | 获取用户详情 |
223
+ | POST | `/system/user` | 新增用户 |
224
+ | PUT | `/system/user` | 编辑用户 |
225
+ | DELETE | `/system/user/:id` | 删除用户 |
226
+
227
+ ### 角色管理
228
+
229
+ | 方法 | 端点 | 说明 |
230
+ |------|------|------|
231
+ | GET | `/system/role/list` | 获取角色列表 |
232
+ | GET | `/system/role/:id` | 获取角色详情 |
233
+ | POST | `/system/role` | 新增角色 |
234
+ | PUT | `/system/role` | 编辑角色 |
235
+ | DELETE | `/system/role/:id` | 删除角色 |
236
+
237
+ ### 菜单管理
238
+
239
+ | 方法 | 端点 | 说明 |
240
+ |------|------|------|
241
+ | GET | `/system/menu/list` | 获取菜单列表 |
242
+ | GET | `/system/menu/:id` | 获取菜单详情 |
243
+ | POST | `/system/menu` | 新增菜单 |
244
+ | PUT | `/system/menu` | 编辑菜单 |
245
+ | DELETE | `/system/menu/:id` | 删除菜单 |
246
+
247
+ ## 测试场景
248
+
249
+ ### 场景 1:用户管理
250
+
251
+ 1. **查看用户列表**
252
+ - 访问 `/system/user`
253
+ - 应该显示 3 个用户
254
+
255
+ 2. **新增用户**
256
+ - 点击"新增"按钮
257
+ - 填写用户信息
258
+ - 点击"确定"
259
+ - 列表应该更新
260
+
261
+ 3. **编辑用户**
262
+ - 点击编辑图标
263
+ - 修改用户信息
264
+ - 点击"确定"
265
+ - 列表应该更新
266
+
267
+ 4. **删除用户**
268
+ - 点击删除图标
269
+ - 确认删除
270
+ - 列表应该更新
271
+
272
+ ### 场景 2:角色管理
273
+
274
+ 1. **查看角色列表**
275
+ - 访问 `/system/role`
276
+ - 应该显示 3 个角色
277
+
278
+ 2. **分配权限**
279
+ - 新增或编辑角色
280
+ - 在权限分配区域选择权限
281
+ - 点击"确定"
282
+ - 权限应该被保存
283
+
284
+ ### 场景 3:菜单管理
285
+
286
+ 1. **查看菜单树**
287
+ - 访问 `/system/menu`
288
+ - 应该显示树形菜单
289
+
290
+ 2. **添加子菜单**
291
+ - 点击"+"按钮
292
+ - 填写菜单信息
293
+ - 点击"确定"
294
+ - 菜单树应该更新
295
+
296
+ ## 错误处理
297
+
298
+ ### 常见错误
299
+
300
+ 1. **CORS 错误**
301
+ ```
302
+ Access to XMLHttpRequest blocked by CORS policy
303
+ ```
304
+ 解决:确保后端已启用 CORS 中间件
305
+
306
+ 2. **连接超时**
307
+ ```
308
+ Network Error: timeout of 10000ms exceeded
309
+ ```
310
+ 解决:检查后端服务是否启动
311
+
312
+ 3. **404 错误**
313
+ ```
314
+ 404 Not Found
315
+ ```
316
+ 解决:检查 API 端点是否正确
317
+
318
+ 4. **500 错误**
319
+ ```
320
+ 500 Internal Server Error
321
+ ```
322
+ 解决:查看后端日志,检查服务器错误
323
+
324
+ ## 调试技巧
325
+
326
+ ### 前端调试
327
+
328
+ 1. **打开开发者工具**
329
+ ```
330
+ F12 或 Ctrl+Shift+I
331
+ ```
332
+
333
+ 2. **查看网络请求**
334
+ - 切换到 Network 标签
335
+ - 执行操作
336
+ - 查看请求和响应
337
+
338
+ 3. **查看控制台日志**
339
+ - 切换到 Console 标签
340
+ - 查看错误信息
341
+
342
+ 4. **使用 React DevTools**
343
+ - 安装浏览器扩展
344
+ - 查看组件状态
345
+
346
+ ### 后端调试
347
+
348
+ 1. **查看服务器日志**
349
+ ```
350
+ Koa 服务器已启动: http://localhost:8080
351
+ ```
352
+
353
+ 2. **测试 API**
354
+ ```bash
355
+ curl http://localhost:8080/system/user/list
356
+ ```
357
+
358
+ 3. **使用 Postman**
359
+ - 导入 API 集合
360
+ - 测试各个端点
361
+
362
+ ## 性能优化
363
+
364
+ ### 前端优化
365
+
366
+ 1. **代码分割**
367
+ ```typescript
368
+ const User = lazy(() => import('./pages/system/user/User'));
369
+ ```
370
+
371
+ 2. **缓存策略**
372
+ ```typescript
373
+ const cache = new Map();
374
+ ```
375
+
376
+ 3. **请求去重**
377
+ ```typescript
378
+ const pending = new Map();
379
+ ```
380
+
381
+ ### 后端优化
382
+
383
+ 1. **数据库索引**
384
+ - 为常用查询字段添加索引
385
+
386
+ 2. **缓存策略**
387
+ - 使用 Redis 缓存热数据
388
+
389
+ 3. **分页加载**
390
+ - 实现分页和懒加载
391
+
392
+ ## 部署指南
393
+
394
+ ### 前端部署
395
+
396
+ 1. **构建生产版本**
397
+ ```bash
398
+ npm run build
399
+ ```
400
+
401
+ 2. **部署到服务器**
402
+ ```bash
403
+ # 上传 dist 目录到服务器
404
+ scp -r dist/* user@server:/var/www/admin-system
405
+ ```
406
+
407
+ ### 后端部署
408
+
409
+ 1. **安装生产依赖**
410
+ ```bash
411
+ cd koa-server
412
+ npm install --production
413
+ ```
414
+
415
+ 2. **使用 PM2 启动**
416
+ ```bash
417
+ npm install -g pm2
418
+ pm2 start app.js --name admin-server
419
+ ```
420
+
421
+ ## 常见问题
422
+
423
+ ### Q: 如何修改 API 地址?
424
+ A: 修改 `.env.development` 中的 `VITE_API_URL`
425
+
426
+ ### Q: 如何添加新的 API?
427
+ A: 在 `src/api/` 目录下创建新文件,参考现有 API 的写法
428
+
429
+ ### Q: 如何处理认证?
430
+ A: 在 `src/utils/request.tsx` 的请求拦截器中添加 token
431
+
432
+ ### Q: 如何处理错误?
433
+ A: 在 `src/utils/request.tsx` 的响应拦截器中处理错误
434
+
435
+ ## 下一步
436
+
437
+ 1. **数据库集成**
438
+ - 连接 MongoDB 或 MySQL
439
+ - 实现数据持久化
440
+
441
+ 2. **用户认证**
442
+ - 实现登录功能
443
+ - 添加 JWT 认证
444
+
445
+ 3. **权限管理**
446
+ - 实现基于角色的访问控制
447
+ - 添加权限验证
448
+
449
+ 4. **监控和日志**
450
+ - 添加操作日志
451
+ - 实现性能监控
452
+
453
+ ## 支持
454
+
455
+ 如有问题,请查看:
456
+ - 前端文档:`SYSTEM_MANAGEMENT.md`
457
+ - 后端文档:`koa-server/README.md`
458
+ - 启动指南:`START_ALL.md`