6.0 KiB
6.0 KiB
🚀 立即操作 - 修复登记历史选项卡自动加载
✅ 问题分析
现状:
- ✅ "出国登记"选项卡正常显示待审核数据
- ❌ "登记历史"选项卡打开时不自动加载数据(需要手动点击搜索)
根本原因:
- 选项卡切换时没有触发数据加载
- Element Plus的
@tab-click事件可能不够可靠
解决方案:
- ✅ 添加
watch监听选项卡变化 - ✅ 选项卡切换时自动加载对应数据
- ✅ 增强查询逻辑,确保status参数正确
🔴 立即执行(3步解决)
第1步:确保数据库有测试数据(30秒)
选项A:如果之前已执行过 🚀插入出国登记测试数据.sql
- ✅ 跳过此步骤,直接到第2步
选项B:如果没有执行过,执行以下SQL
-- 检查是否有已通过的数据
SELECT COUNT(*) as total FROM rs_overseas_registration
WHERE status = '2' AND deleted = '0';
-- 如果total=0,插入一条测试数据
INSERT INTO rs_overseas_registration (
name, gender, birth_date, id_number, political_status, registered_address,
department, position, administrative_level, personnel_category,
status, registration_time, remarks,
tenant_id, create_by, create_time, update_by, update_time, deleted
) VALUES (
'测试已通过用户', '0', '1985-06-15', '330106198506151234', '01', '浙江省杭州市',
'测试部门', '测试职位', '1', 'E',
'2', NOW(), '这是一条已通过的测试数据',
'000000', 1, NOW(), 1, NOW(), '0'
);
第2步:强制刷新浏览器(5秒)
Windows: 按 Ctrl + Shift + R
Mac: 按 Cmd + Shift + R
🔴 非常重要:必须强制刷新,否则会使用旧代码!
第3步:查看调试日志(10秒)
- 按
F12打开浏览器开发者工具 - 切换到 Console 标签
- 访问:http://localhost
- 登录系统
- 进入:人事管理 → 出国登记
- 点击 "登记历史" 选项卡
✅ 预期结果
Console应该显示:
// 1. 页面加载日志
页面加载完成,初始化出国登记数据
出国登记查询参数: { status: "1", ... }
出国登记查询结果: { total: 3, rows: 3, ... }
// 2. 切换到"登记历史"选项卡时
选项卡变化: { from: "registration", to: "history" } // ← watch监听触发
切换到登记历史,加载数据
登记历史查询参数: { status: "2", ... } // ← 自动设置status='2'
登记历史查询结果: { total: 3, rows: 3, data: [...] } // ← 自动加载数据!
关键点:
- ✅
选项卡变化日志说明watch监听成功 - ✅
切换到登记历史,加载数据说明自动触发加载 - ✅
status: "2"说明查询参数正确 - ✅
total > 0说明数据加载成功
页面应该显示:
- ✅ 无需点击搜索,直接显示已通过的数据列表
- ✅ 状态标签显示"已通过",颜色为绿色
🔧 我做了什么修复?
1. 🔴 核心修复:添加watch监听选项卡切换
// 新增:监听选项卡变化,自动加载数据
watch(() => state.activeTab, (newTab, oldTab) => {
console.log('选项卡变化:', { from: oldTab, to: newTab });
if (newTab === 'registration') {
console.log('切换到出国登记,加载数据');
getRegistrationList();
} else if (newTab === 'history') {
console.log('切换到登记历史,加载数据');
getHistoryList(); // ← 自动加载历史数据!
}
}, { immediate: false });
这是关键修复:现在每次切换到"登记历史"选项卡时,都会自动调用 getHistoryList() 加载数据!
2. 增强了查询条件判断
// 之前
if (!queryParams.status) {
queryParams.status = '2';
}
// 现在(更严格)
if (!queryParams.status || queryParams.status === '') {
queryParams.status = '2';
}
3. 添加了详细日志
- 选项卡切换日志(watch监听)
- 查询参数日志
- 查询结果日志
这些日志会帮助我们验证修复是否生效!
❓ 如果还是不显示
情况1:Console没有任何日志
原因:浏览器缓存了旧代码
解决:再次强制刷新(Ctrl+Shift+R),或尝试无痕模式
情况2:日志显示 status='2',但total=0
原因:数据库中没有status='2'的数据
解决:执行上面"第1步"的SQL插入测试数据
情况3:日志显示 status不是'2'
原因:查询参数设置错误
解决:截图Console日志,并提供给我
情况4:日志显示total>0,但页面不显示
原因:前端渲染问题
解决:
- 检查是否有JavaScript错误
- 检查Network标签,查看API响应
- 提供完整的Console和Network截图
📊 快速验证数据库
如果不确定数据库中是否有数据,执行:
-- 查看各状态的数据量
SELECT
status,
CASE status
WHEN '0' THEN '草稿'
WHEN '1' THEN '待审核'
WHEN '2' THEN '已通过'
WHEN '3' THEN '已拒绝'
END as status_text,
COUNT(*) as count
FROM rs_overseas_registration
WHERE deleted = '0'
GROUP BY status
ORDER BY CAST(status AS UNSIGNED);
预期结果:
status | status_text | count
-------|------------|-------
0 | 草稿 | 1
1 | 待审核 | 3
2 | 已通过 | 3 ← 应该>0
3 | 已拒绝 | 1
📞 需要帮助?
如果按照上述步骤操作后仍有问题,请提供:
- Console标签的完整截图(包含所有日志)
- Network标签中
/rs/overseas/registration/list请求的截图:- Request(请求参数)
- Response(响应数据)
- 数据库查询结果(上面的验证SQL)
🎯 成功标志
当你看到:
- ✅ Console显示
total: 3(或其他>0的数字) - ✅ 页面显示已通过的数据列表
- ✅ 状态标签为绿色"已通过"
恭喜!问题已解决! 🎉
修复时间: 2025-10-11
预计操作时间: < 1分钟
修复内容: 增强查询逻辑 + 添加调试日志