126 lines
3.8 KiB
Markdown
126 lines
3.8 KiB
Markdown
|
|
# 学生管理状态和字段更新说明
|
|||
|
|
|
|||
|
|
## 问题说明
|
|||
|
|
1. **学生状态只有两个**:执行SQL后,前端仍然只显示"在押"和"已释放",没有显示"外出"和"假释"
|
|||
|
|
2. **手机号字段未删除**:手机号字段仍然存在
|
|||
|
|
|
|||
|
|
## 解决方案
|
|||
|
|
|
|||
|
|
### 1. 执行字典数据更新SQL
|
|||
|
|
|
|||
|
|
执行文件:`update_student_status_add_out_parole.sql`
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
-- 1. 添加"外出"状态
|
|||
|
|
INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
|
|||
|
|
VALUES (3, '外出', 'out', 'study_student_status', '', 'warning', 'N', '0', 'admin', NOW(), '外出状态')
|
|||
|
|
ON DUPLICATE KEY UPDATE
|
|||
|
|
`dict_label` = '外出',
|
|||
|
|
`dict_sort` = 3,
|
|||
|
|
`is_default` = 'N',
|
|||
|
|
`status` = '0',
|
|||
|
|
`remark` = '外出状态';
|
|||
|
|
|
|||
|
|
-- 2. 添加"假释"状态
|
|||
|
|
INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
|
|||
|
|
VALUES (4, '假释', 'parole', 'study_student_status', '', 'info', 'N', '0', 'admin', NOW(), '假释状态')
|
|||
|
|
ON DUPLICATE KEY UPDATE
|
|||
|
|
`dict_label` = '假释',
|
|||
|
|
`dict_sort` = 4,
|
|||
|
|
`is_default` = 'N',
|
|||
|
|
`status` = '0',
|
|||
|
|
`remark` = '假释状态';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 执行手机号字段删除SQL
|
|||
|
|
|
|||
|
|
执行文件:`delete_phonenumber_field.sql`
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
-- 检查phonenumber字段是否存在
|
|||
|
|
SET @exist := (SELECT COUNT(*) FROM information_schema.COLUMNS
|
|||
|
|
WHERE TABLE_SCHEMA = DATABASE()
|
|||
|
|
AND TABLE_NAME = 'sys_user'
|
|||
|
|
AND COLUMN_NAME = 'phonenumber');
|
|||
|
|
|
|||
|
|
SET @sqlstmt := IF(@exist > 0,
|
|||
|
|
'ALTER TABLE `sys_user` DROP COLUMN `phonenumber`',
|
|||
|
|
'SELECT ''phonenumber字段不存在'' as result');
|
|||
|
|
|
|||
|
|
PREPARE stmt FROM @sqlstmt;
|
|||
|
|
EXECUTE stmt;
|
|||
|
|
DEALLOCATE PREPARE stmt;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 刷新前端字典数据
|
|||
|
|
|
|||
|
|
执行SQL后,需要刷新前端字典缓存:
|
|||
|
|
|
|||
|
|
**方法1:重新登录**
|
|||
|
|
- 退出登录,重新登录系统
|
|||
|
|
- 字典数据会在登录时重新加载
|
|||
|
|
|
|||
|
|
**方法2:刷新页面**
|
|||
|
|
- 按 `F5` 或 `Ctrl+F5` 强制刷新页面
|
|||
|
|
- 清除浏览器缓存后刷新
|
|||
|
|
|
|||
|
|
**方法3:在代码中已添加自动刷新**
|
|||
|
|
- 页面加载时会自动刷新字典数据
|
|||
|
|
- 如果仍然不显示,请检查浏览器控制台是否有错误
|
|||
|
|
|
|||
|
|
### 4. 验证SQL执行结果
|
|||
|
|
|
|||
|
|
执行以下SQL验证字典数据:
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
-- 查询所有学员状态字典数据
|
|||
|
|
SELECT `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `status`, `remark`
|
|||
|
|
FROM `sys_dict_data`
|
|||
|
|
WHERE `dict_type` = 'study_student_status'
|
|||
|
|
ORDER BY `dict_sort`;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
应该看到4条记录:
|
|||
|
|
1. 在押 (incarcerated)
|
|||
|
|
2. 已释放 (released)
|
|||
|
|
3. 外出 (out)
|
|||
|
|
4. 假释 (parole)
|
|||
|
|
|
|||
|
|
### 5. 验证字段删除
|
|||
|
|
|
|||
|
|
执行以下SQL验证字段是否已删除:
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
-- 查询sys_user表结构,确认phonenumber字段已删除
|
|||
|
|
SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_COMMENT
|
|||
|
|
FROM information_schema.COLUMNS
|
|||
|
|
WHERE TABLE_SCHEMA = DATABASE()
|
|||
|
|
AND TABLE_NAME = 'sys_user'
|
|||
|
|
AND COLUMN_NAME = 'phonenumber';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果查询结果为空,说明字段已成功删除。
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **执行SQL前请备份数据库**
|
|||
|
|
2. **删除字段是危险操作,请确认后再执行**
|
|||
|
|
3. **执行SQL后,需要刷新前端缓存才能看到效果**
|
|||
|
|
4. **如果前端仍然不显示新状态,检查浏览器控制台是否有错误信息**
|
|||
|
|
|
|||
|
|
## 常见问题
|
|||
|
|
|
|||
|
|
### Q: 执行SQL后,前端还是不显示新状态?
|
|||
|
|
A:
|
|||
|
|
1. 检查SQL是否执行成功(使用验证SQL查询)
|
|||
|
|
2. 检查字典数据的 `status` 字段是否为 '0'(启用状态)
|
|||
|
|
3. 清除浏览器缓存并重新登录
|
|||
|
|
4. 检查浏览器控制台是否有错误
|
|||
|
|
|
|||
|
|
### Q: 手机号字段删除后,前端报错?
|
|||
|
|
A:
|
|||
|
|
1. 确保前端代码中已移除所有 `phonenumber` 字段的引用
|
|||
|
|
2. 检查后端接口是否还在返回 `phonenumber` 字段
|
|||
|
|
3. 清除浏览器缓存并重新加载页面
|
|||
|
|
|