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,391 @@
|
|
|
1
|
+
# 完整部署和测试指南
|
|
2
|
+
|
|
3
|
+
## 项目完成情况
|
|
4
|
+
|
|
5
|
+
### ✅ 已完成
|
|
6
|
+
|
|
7
|
+
1. **二次封装 axios** (`src/utils/request.tsx`)
|
|
8
|
+
- 请求拦截器(添加 token)
|
|
9
|
+
- 响应拦截器(统一处理错误)
|
|
10
|
+
- 支持所有 HTTP 方法
|
|
11
|
+
|
|
12
|
+
2. **多环境配置**
|
|
13
|
+
- `.env.development` - 开发环境
|
|
14
|
+
- `.env.test` - 测试环境
|
|
15
|
+
- `.env.production` - 生产环境
|
|
16
|
+
|
|
17
|
+
3. **API 服务层** (`src/api/`)
|
|
18
|
+
- `user.ts` - 用户 API
|
|
19
|
+
- `role.ts` - 角色 API
|
|
20
|
+
- `menu.ts` - 菜单 API
|
|
21
|
+
|
|
22
|
+
4. **后端 Koa 服务** (`koa-server/app.js`)
|
|
23
|
+
- 用户管理接口
|
|
24
|
+
- 角色管理接口
|
|
25
|
+
- 菜单管理接口
|
|
26
|
+
- CORS 支持
|
|
27
|
+
|
|
28
|
+
5. **前端集成**
|
|
29
|
+
- 用户管理页面 - API 集成完成
|
|
30
|
+
- 角色管理页面 - API 集成完成
|
|
31
|
+
- 菜单管理页面 - API 集成完成
|
|
32
|
+
|
|
33
|
+
## 快速启动
|
|
34
|
+
|
|
35
|
+
### 方式一:分别启动(推荐)
|
|
36
|
+
|
|
37
|
+
**步骤 1:启动后端服务**
|
|
38
|
+
```bash
|
|
39
|
+
cd koa-server
|
|
40
|
+
npm install
|
|
41
|
+
npm run dev
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
输出:
|
|
45
|
+
```
|
|
46
|
+
Koa 服务器已启动: http://localhost:8080
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**步骤 2:启动前端应用**
|
|
50
|
+
```bash
|
|
51
|
+
npm install
|
|
52
|
+
npm run dev
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
输出:
|
|
56
|
+
```
|
|
57
|
+
VITE v5.4.21 ready in 463 ms
|
|
58
|
+
➜ Local: http://localhost:5174/
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 方式二:使用 npm 脚本
|
|
62
|
+
|
|
63
|
+
在项目根目录创建 `start-all.bat`:
|
|
64
|
+
|
|
65
|
+
```batch
|
|
66
|
+
@echo off
|
|
67
|
+
start cmd /k "cd koa-server && npm install && npm run dev"
|
|
68
|
+
timeout /t 3
|
|
69
|
+
start cmd /k "npm install && npm run dev"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
运行:
|
|
73
|
+
```bash
|
|
74
|
+
start-all.bat
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 测试流程
|
|
78
|
+
|
|
79
|
+
### 1. 验证后端服务
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
curl http://localhost:8080/health
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
预期响应:
|
|
86
|
+
```json
|
|
87
|
+
{"status":"ok"}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 2. 验证前端应用
|
|
91
|
+
|
|
92
|
+
访问 `http://localhost:5174`
|
|
93
|
+
|
|
94
|
+
### 3. 测试用户管理
|
|
95
|
+
|
|
96
|
+
1. 点击左侧菜单"系统管理" > "用户管理"
|
|
97
|
+
2. 应该看到 3 个用户列表
|
|
98
|
+
3. 测试功能:
|
|
99
|
+
- **新增**:点击"新增"按钮,填写信息,点击"确定"
|
|
100
|
+
- **编辑**:点击编辑图标,修改信息,点击"确定"
|
|
101
|
+
- **删除**:点击删除图标,确认删除
|
|
102
|
+
- **刷新**:点击"刷新"按钮,重新加载数据
|
|
103
|
+
|
|
104
|
+
### 4. 测试角色管理
|
|
105
|
+
|
|
106
|
+
1. 点击左侧菜单"系统管理" > "角色管理"
|
|
107
|
+
2. 应该看到 3 个角色列表
|
|
108
|
+
3. 测试功能:
|
|
109
|
+
- **新增**:创建新角色并分配权限
|
|
110
|
+
- **编辑**:修改角色信息和权限
|
|
111
|
+
- **删除**:删除角色
|
|
112
|
+
- **权限分配**:在弹窗中选择权限
|
|
113
|
+
|
|
114
|
+
### 5. 测试菜单管理
|
|
115
|
+
|
|
116
|
+
1. 点击左侧菜单"系统管理" > "菜单管理"
|
|
117
|
+
2. 应该看到树形菜单
|
|
118
|
+
3. 测试功能:
|
|
119
|
+
- **新增**:添加新菜单
|
|
120
|
+
- **编辑**:修改菜单信息
|
|
121
|
+
- **删除**:删除菜单
|
|
122
|
+
- **展开/折叠**:展开或折叠菜单树
|
|
123
|
+
|
|
124
|
+
## 环境变量配置
|
|
125
|
+
|
|
126
|
+
### 开发环境 (`.env.development`)
|
|
127
|
+
```
|
|
128
|
+
VITE_API_URL=http://localhost:8080
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 测试环境 (`.env.test`)
|
|
132
|
+
```
|
|
133
|
+
VITE_API_URL=http://localhost:8081
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 生产环境 (`.env.production`)
|
|
137
|
+
```
|
|
138
|
+
VITE_API_URL=http://47.113.230.113
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## 构建命令
|
|
142
|
+
|
|
143
|
+
### 开发
|
|
144
|
+
```bash
|
|
145
|
+
npm run dev
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 测试构建
|
|
149
|
+
```bash
|
|
150
|
+
npm run build:test
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 生产构建
|
|
154
|
+
```bash
|
|
155
|
+
npm run build
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 代码检查
|
|
159
|
+
```bash
|
|
160
|
+
npm run lint
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## 后端 API 文档
|
|
164
|
+
|
|
165
|
+
### 基础 URL
|
|
166
|
+
```
|
|
167
|
+
http://localhost:8080
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 用户管理
|
|
171
|
+
|
|
172
|
+
| 方法 | 端点 | 请求体 | 响应 |
|
|
173
|
+
|------|------|--------|------|
|
|
174
|
+
| GET | `/system/user/list?pageNum=1&pageSize=10` | - | `{rows: [], total: 0}` |
|
|
175
|
+
| GET | `/system/user/:id` | - | `{id, username, ...}` |
|
|
176
|
+
| POST | `/system/user` | `{username, nickName, ...}` | `{id, ...}` |
|
|
177
|
+
| PUT | `/system/user` | `{id, username, ...}` | `{id, ...}` |
|
|
178
|
+
| DELETE | `/system/user/:id` | - | `{msg: "删除成功"}` |
|
|
179
|
+
|
|
180
|
+
### 角色管理
|
|
181
|
+
|
|
182
|
+
| 方法 | 端点 | 请求体 | 响应 |
|
|
183
|
+
|------|------|--------|------|
|
|
184
|
+
| GET | `/system/role/list?pageNum=1&pageSize=10` | - | `{rows: [], total: 0}` |
|
|
185
|
+
| GET | `/system/role/:id` | - | `{id, roleName, ...}` |
|
|
186
|
+
| POST | `/system/role` | `{roleName, roleKey, ...}` | `{id, ...}` |
|
|
187
|
+
| PUT | `/system/role` | `{id, roleName, ...}` | `{id, ...}` |
|
|
188
|
+
| DELETE | `/system/role/:id` | - | `{msg: "删除成功"}` |
|
|
189
|
+
|
|
190
|
+
### 菜单管理
|
|
191
|
+
|
|
192
|
+
| 方法 | 端点 | 请求体 | 响应 |
|
|
193
|
+
|------|------|--------|------|
|
|
194
|
+
| GET | `/system/menu/list` | - | `[{id, menuName, children: []}]` |
|
|
195
|
+
| GET | `/system/menu/:id` | - | `{id, menuName, ...}` |
|
|
196
|
+
| POST | `/system/menu` | `{menuName, path, ...}` | `{id, ...}` |
|
|
197
|
+
| PUT | `/system/menu` | `{id, menuName, ...}` | `{id, ...}` |
|
|
198
|
+
| DELETE | `/system/menu/:id` | - | `{msg: "删除成功"}` |
|
|
199
|
+
|
|
200
|
+
## 响应格式
|
|
201
|
+
|
|
202
|
+
所有 API 响应格式:
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"code": 200,
|
|
207
|
+
"message": "成功",
|
|
208
|
+
"data": {}
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## 错误处理
|
|
213
|
+
|
|
214
|
+
### 常见错误
|
|
215
|
+
|
|
216
|
+
1. **CORS 错误**
|
|
217
|
+
```
|
|
218
|
+
Access to XMLHttpRequest blocked by CORS policy
|
|
219
|
+
```
|
|
220
|
+
解决:确保后端已启用 CORS
|
|
221
|
+
|
|
222
|
+
2. **连接超时**
|
|
223
|
+
```
|
|
224
|
+
Network Error: timeout of 10000ms exceeded
|
|
225
|
+
```
|
|
226
|
+
解决:检查后端服务是否启动
|
|
227
|
+
|
|
228
|
+
3. **404 错误**
|
|
229
|
+
```
|
|
230
|
+
404 Not Found
|
|
231
|
+
```
|
|
232
|
+
解决:检查 API 端点是否正确
|
|
233
|
+
|
|
234
|
+
4. **500 错误**
|
|
235
|
+
```
|
|
236
|
+
500 Internal Server Error
|
|
237
|
+
```
|
|
238
|
+
解决:查看后端日志
|
|
239
|
+
|
|
240
|
+
## 调试技巧
|
|
241
|
+
|
|
242
|
+
### 前端调试
|
|
243
|
+
|
|
244
|
+
1. 打开浏览器开发者工具(F12)
|
|
245
|
+
2. 切换到 Network 标签查看请求
|
|
246
|
+
3. 切换到 Console 标签查看日志
|
|
247
|
+
4. 使用 React DevTools 查看组件状态
|
|
248
|
+
|
|
249
|
+
### 后端调试
|
|
250
|
+
|
|
251
|
+
1. 查看服务器启动日志
|
|
252
|
+
2. 使用 curl 测试 API:
|
|
253
|
+
```bash
|
|
254
|
+
curl http://localhost:8080/system/user/list
|
|
255
|
+
```
|
|
256
|
+
3. 使用 Postman 测试 API
|
|
257
|
+
|
|
258
|
+
## 生产部署
|
|
259
|
+
|
|
260
|
+
### 前端部署
|
|
261
|
+
|
|
262
|
+
1. 构建生产版本
|
|
263
|
+
```bash
|
|
264
|
+
npm run build
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
2. 上传 `dist` 目录到服务器
|
|
268
|
+
```bash
|
|
269
|
+
scp -r dist/* user@server:/var/www/admin-system
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
3. 配置 Web 服务器(Nginx)
|
|
273
|
+
```nginx
|
|
274
|
+
server {
|
|
275
|
+
listen 80;
|
|
276
|
+
server_name example.com;
|
|
277
|
+
root /var/www/admin-system;
|
|
278
|
+
index index.html;
|
|
279
|
+
|
|
280
|
+
location / {
|
|
281
|
+
try_files $uri $uri/ /index.html;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### 后端部署
|
|
287
|
+
|
|
288
|
+
1. 安装生产依赖
|
|
289
|
+
```bash
|
|
290
|
+
cd koa-server
|
|
291
|
+
npm install --production
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
2. 使用 PM2 启动
|
|
295
|
+
```bash
|
|
296
|
+
npm install -g pm2
|
|
297
|
+
pm2 start app.js --name admin-server
|
|
298
|
+
pm2 save
|
|
299
|
+
pm2 startup
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
3. 配置反向代理(Nginx)
|
|
303
|
+
```nginx
|
|
304
|
+
server {
|
|
305
|
+
listen 80;
|
|
306
|
+
server_name api.example.com;
|
|
307
|
+
|
|
308
|
+
location / {
|
|
309
|
+
proxy_pass http://localhost:8080;
|
|
310
|
+
proxy_set_header Host $host;
|
|
311
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
## 性能优化
|
|
317
|
+
|
|
318
|
+
### 前端优化
|
|
319
|
+
|
|
320
|
+
1. 代码分割
|
|
321
|
+
2. 懒加载
|
|
322
|
+
3. 缓存策略
|
|
323
|
+
4. 压缩资源
|
|
324
|
+
|
|
325
|
+
### 后端优化
|
|
326
|
+
|
|
327
|
+
1. 数据库索引
|
|
328
|
+
2. 缓存策略
|
|
329
|
+
3. 分页加载
|
|
330
|
+
4. 连接池
|
|
331
|
+
|
|
332
|
+
## 监控和日志
|
|
333
|
+
|
|
334
|
+
### 前端日志
|
|
335
|
+
|
|
336
|
+
- 浏览器控制台
|
|
337
|
+
- 错误追踪服务(如 Sentry)
|
|
338
|
+
|
|
339
|
+
### 后端日志
|
|
340
|
+
|
|
341
|
+
- 应用日志
|
|
342
|
+
- 访问日志
|
|
343
|
+
- 错误日志
|
|
344
|
+
|
|
345
|
+
## 常见问题
|
|
346
|
+
|
|
347
|
+
### Q: 如何修改 API 地址?
|
|
348
|
+
A: 修改对应的 `.env.*` 文件中的 `VITE_API_URL`
|
|
349
|
+
|
|
350
|
+
### Q: 如何添加新的 API?
|
|
351
|
+
A: 在 `src/api/` 目录下创建新文件,参考现有 API 的写法
|
|
352
|
+
|
|
353
|
+
### Q: 如何处理认证?
|
|
354
|
+
A: 在 `src/utils/request.tsx` 的请求拦截器中添加 token
|
|
355
|
+
|
|
356
|
+
### Q: 如何处理错误?
|
|
357
|
+
A: 在 `src/utils/request.tsx` 的响应拦截器中处理错误
|
|
358
|
+
|
|
359
|
+
### Q: 如何实现权限控制?
|
|
360
|
+
A: 在路由或组件中检查用户权限
|
|
361
|
+
|
|
362
|
+
## 下一步
|
|
363
|
+
|
|
364
|
+
1. **数据库集成**
|
|
365
|
+
- 连接 MongoDB 或 MySQL
|
|
366
|
+
- 实现数据持久化
|
|
367
|
+
|
|
368
|
+
2. **用户认证**
|
|
369
|
+
- 实现登录功能
|
|
370
|
+
- 添加 JWT 认证
|
|
371
|
+
|
|
372
|
+
3. **权限管理**
|
|
373
|
+
- 实现基于角色的访问控制
|
|
374
|
+
- 添加权限验证
|
|
375
|
+
|
|
376
|
+
4. **监控和日志**
|
|
377
|
+
- 添加操作日志
|
|
378
|
+
- 实现性能监控
|
|
379
|
+
|
|
380
|
+
## 支持
|
|
381
|
+
|
|
382
|
+
- 前端文档:`SYSTEM_MANAGEMENT.md`
|
|
383
|
+
- 后端文档:`koa-server/README.md`
|
|
384
|
+
- 集成指南:`INTEGRATION_GUIDE.md`
|
|
385
|
+
- 启动指南:`START_ALL.md`
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
**项目状态**: ✅ 完成并可部署
|
|
390
|
+
**最后更新**: 2026-01-18
|
|
391
|
+
**版本**: 1.0.0
|