93 lines
2.3 KiB
Markdown
93 lines
2.3 KiB
Markdown
# 3.11 常见问题与排错
|
||
|
||
## 后端问题
|
||
|
||
### Q: 新增接口返回 401
|
||
|
||
A: 检查以下几点:
|
||
1. 请求头是否携带 `Authorization: Bearer <token>`
|
||
2. Token 是否过期(默认 2 小时)
|
||
3. 路由是否在 `route/app.php` 的需认证组中
|
||
|
||
### Q: 新增接口返回 403
|
||
|
||
A: 权限不足,检查:
|
||
1. 是否在 Controller 方法上添加了 `#[Permission]` 注解
|
||
2. 权限码是否在菜单管理中配置
|
||
3. 用户角色是否包含该权限节点
|
||
|
||
### Q: 枚举显示名(typeText/statusText)为空
|
||
|
||
A: 检查:
|
||
1. 字典表中是否存在对应的字典编码(如 `example_type`)
|
||
2. 字典项的 value 值是否与数据中的值匹配
|
||
3. Logic 中 `serializeMaps` 配置是否正确
|
||
|
||
```php
|
||
// ExampleLogic 中的配置
|
||
|
||
/**
|
||
* 枚举显示名映射
|
||
*
|
||
* @var array
|
||
*/
|
||
protected array $serializeMaps = [
|
||
'type' => 'example_type',
|
||
'status' => 'example_status',
|
||
];
|
||
```
|
||
|
||
### Q: 文件上传后 avatar 路径为空
|
||
|
||
A: 检查:
|
||
1. `.env` 中 `FILE.UPLOAD_DIR` 是否配置
|
||
2. 上传目录是否存在且有写入权限
|
||
3. Logic 中是否配置了 `fileFields`
|
||
|
||
```php
|
||
// ExampleLogic 中的配置
|
||
protected array $fileFields = ['avatar'];
|
||
protected string $fileSaveDir = 'example';
|
||
```
|
||
|
||
### Q: 排序不生效
|
||
|
||
A: 检查 Logic 中 `pageOrderBy` 配置:
|
||
|
||
```php
|
||
// ExampleLogic 中的配置
|
||
protected array $pageOrderBy = ['field' => 'sort', 'type' => 'asc'];
|
||
```
|
||
|
||
前端可通过 `orderField` 和 `orderType` 参数覆盖默认排序。
|
||
|
||
## 前端问题
|
||
|
||
### Q: 菜单不显示
|
||
|
||
A: 检查:
|
||
1. 后端菜单管理中是否添加了对应菜单
|
||
2. 菜单的组件路径是否正确(如 `tool/example/index`)
|
||
3. 前端 `views` 目录下是否有对应的 `.vue` 文件
|
||
4. 用户角色是否包含该菜单权限
|
||
|
||
### Q: API 请求 404
|
||
|
||
A: 检查:
|
||
1. `route/app.php` 中是否注册了对应路由
|
||
2. 路由路径是否与前端 API 模块中的 `url` 一致
|
||
3. HTTP 方法是否正确(GET/POST/PUT/DELETE)
|
||
|
||
### Q: 表格数据不显示
|
||
|
||
A: 检查:
|
||
1. API 返回的数据结构是否正确(应包含 `records` 和 `total`)
|
||
2. 前端是否正确绑定了 `tableData`
|
||
3. 浏览器控制台是否有报错
|
||
|
||
### Q: 导入失败
|
||
|
||
A: 检查:
|
||
1. 文件格式是否为 `.xls` 或 `.xlsx`
|
||
2. 表头是否与 `headerMap` 中定义的中文名一致
|
||
3. 枚举字段的值是否在字典中存在 |