fix: 修复后端12个+前端5个高优先级问题

后端:
- devices.js: 修复 newRackId 重复声明、批量移动加事务、ID生成改MAX聚合
- tickets.js: 添加工单状态机校验、req.body白名单过滤
- roles.js: init-roles 添加 authMiddleware
- backup.js: 备份列表只读4KB头部,压缩文件超1MB跳过
- consumables.js: SN查询改用数据库LIKE替代全表扫描
- consumableRecords.js: 出入库加 SELECT FOR UPDATE 行级锁
- inventory.js: not_found 状态判断从 abnormal if 内移到 else if
- idleDevices.js: 删除重复的 batch-restore 路由定义(182行)
- cables.js: 接线冲突检测增加反向端口检查

前端:
- AuthContext.jsx: 初始化时调用 fetchProfile 验证token、Error提取message
- api/index.js: backupAPI.download 返回Promise、checkAdmin改POST
- Login.jsx: checkIsFirstUser 静默处理错误
- DeviceManagement.jsx: 导出 currentPage scope 使用 currentPageDevices
This commit is contained in:
zhang96110
2026-04-01 07:27:19 +00:00
parent 1d7a83bbe8
commit de7da77c11
13 changed files with 122 additions and 223 deletions
+13 -3
View File
@@ -34,7 +34,8 @@ export const AuthProvider = ({ children }) => {
if (currentUser && JSON.stringify(currentUser) !== JSON.stringify(user)) {
setUser(currentUser);
}
setInitialized(true);
// 有 token 时调用 fetchProfile 验证有效性并刷新用户信息
fetchProfile();
} else if (!currentToken) {
setToken(null);
setUser(null);
@@ -49,6 +50,7 @@ export const AuthProvider = ({ children }) => {
const currentToken = secureStorage.get(TOKEN_KEY);
if (!currentToken) {
setLoading(false);
setInitialized(true);
return;
}
@@ -60,8 +62,14 @@ export const AuthProvider = ({ children }) => {
}
} catch (error) {
console.error('获取用户信息失败:', error);
// Token 无效,清除登录状态
secureStorage.remove(TOKEN_KEY);
secureStorage.remove(USER_KEY);
setToken(null);
setUser(null);
} finally {
setLoading(false);
setInitialized(true);
}
}, []);
@@ -78,7 +86,8 @@ export const AuthProvider = ({ children }) => {
}
return { success: false, message: response.message, code: response.code };
} catch (error) {
return { success: false, message: error };
const message = error?.response?.data?.message || error?.message || '登录失败,请稍后重试';
return { success: false, message };
}
};
@@ -97,7 +106,8 @@ export const AuthProvider = ({ children }) => {
}
return { success: false, message: response.message };
} catch (error) {
return { success: false, message: error };
const message = error?.response?.data?.message || error?.message || '注册失败,请稍后重试';
return { success: false, message };
}
};