feat: 统一角色枚举 (meetingExecutor/supervisor) + 子账号数据隔离 + Login 读取后端 role_type
后端:
- SysUser 加 roleType 字段 (entity + mapper selectUserVo + service 接口/实现)
- SysUserMapper 新增 selectUserIdsByParent (按 parent_user_id 取子账号列表)
- BizPersonController.list 自动注入 MAIN 业务用户可见性: 仅查 user_id IN (子账号列表)
- BizPersonMapper 加 params.subUserIds foreach 过滤
- BizPerson/BizPersonServiceImpl 配合 getParams().put
前端:
- Login.vue 改用后端 sys_user.roleType 替代 username 前缀 autoRole, 修复 exe01 错入 leader 菜单
- utils/roleMap.js 新增: meetingExecutor->会议执行, supervisor->监察员
- executor/People.vue / sponsor/NewPerson.vue / sponsor/Projects.vue / sponsor/SponsorProjects.vue /
manager/ManagerProjectDetail.vue / manager/{Executor,Sponsor}PersonNew.vue /
admin/{Executor,Sponsor}PersonNew.vue 全部改为 enum key
SQL:
- migration_unify_role_type_2026_08_16.sql 清洗 biz_person.role 从中文到 enum key
This commit is contained in:
@@ -154,12 +154,15 @@ async function onSubmit() {
|
||||
loading.value = true
|
||||
try {
|
||||
const res = await login({ username: form.username, password: form.password, code: form.code || '', uuid: form.uuid || '' })
|
||||
const role = autoRole(form.username)
|
||||
// username 推断仅作兜底, 真实 role 以 /getInfo 返回的 sys_user.role_type 为准
|
||||
const fallbackRole = autoRole(form.username)
|
||||
userStore.setToken(res.token)
|
||||
// /login 接口只返回 token; 调 /getInfo 拿完整 user (含 accountType/parentUserId, 让 isMain/isSub 判断正确)
|
||||
// /login 接口只返回 token; 调 /getInfo 拿完整 user (含 accountType/parentUserId/roleType, 让 isMain/isSub/role 都从后端真实值取)
|
||||
let role = fallbackRole
|
||||
try {
|
||||
const info = await getInfo()
|
||||
const u = info.user || {}
|
||||
role = u.roleType || fallbackRole
|
||||
userStore.setUser({
|
||||
userId: u.userId,
|
||||
userName: u.userName || form.username,
|
||||
@@ -176,13 +179,13 @@ async function onSubmit() {
|
||||
nickName: form.username,
|
||||
accountType: 'MAIN',
|
||||
parentUserId: null,
|
||||
role
|
||||
role: fallbackRole
|
||||
})
|
||||
}
|
||||
ElMessage.success(`欢迎,${form.username}(${userTypes.find(u => u.value === role)?.name || role})`)
|
||||
router.replace(roleHome[role] || '/leader/home')
|
||||
} catch (e) {
|
||||
ElMessage.error(e?.msg || '登录失败')
|
||||
// 错误提示已由 utils/request.js 拦截器统一弹 (ElMessage.error), 这里只刷新验证码
|
||||
loadCaptcha()
|
||||
} finally {
|
||||
loading.value = false
|
||||
|
||||
Reference in New Issue
Block a user