在用户登录后的 getInfo 接口中返回用户所在的分公司ID和名称,使得在创建任务等场景中可以默认显示和使用分公司信息。
dept_id 对应的部门 parent_id = 100ancestors 字段解析出分公司ID文件:ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@GetMapping("getInfo")
public AjaxResult getInfo()
{
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser user = loginUser.getUser();
// 获取用户所在的分公司信息
Long branchCompanyId = null;
String branchCompanyName = null;
if (user.getDeptId() != null)
{
SysDept dept = deptService.selectDeptById(user.getDeptId());
if (dept != null)
{
// 判断当前部门是否就是分公司(parent_id = 100)
if (dept.getParentId() != null && dept.getParentId() == 100)
{
branchCompanyId = dept.getDeptId();
branchCompanyName = dept.getDeptName();
}
else if (dept.getAncestors() != null && !dept.getAncestors().isEmpty())
{
// 从 ancestors 解析分公司ID
// ancestors 格式:"0,100,分公司ID,子部门ID"
String[] ancestorIds = dept.getAncestors().split(",");
for (int i = 0; i < ancestorIds.length; i++)
{
if ("100".equals(ancestorIds[i]) && i + 1 < ancestorIds.length)
{
Long companyId = Long.parseLong(ancestorIds[i + 1]);
SysDept branchCompany = deptService.selectDeptById(companyId);
if (branchCompany != null)
{
branchCompanyId = branchCompany.getDeptId();
branchCompanyName = branchCompany.getDeptName();
}
break;
}
}
}
}
}
// 返回分公司信息
ajax.put("branchCompanyId", branchCompanyId);
ajax.put("branchCompanyName", branchCompanyName);
return ajax;
}
@Autowired
private ISysDeptService deptService;
app/utils/constant.js - 添加常量定义app/store/modules/user.js - 保存分公司信息到Vuexapp/pages/task/create-emergency.vue - 使用分公司信息const constant = {
userId: 'vuex_userId',
avatar: 'vuex_avatar',
name: 'vuex_name',
roles: 'vuex_roles',
permissions: 'vuex_permissions',
deptId: 'vuex_deptId',
branchCompanyId: 'vuex_branchCompanyId', // 新增
branchCompanyName: 'vuex_branchCompanyName' // 新增
}
State 添加:javascript state: { branchCompanyId: storage.get(constant.branchCompanyId), branchCompanyName: storage.get(constant.branchCompanyName) },
Mutations 添加:javascript SET_BRANCH_COMPANY_ID: (state, branchCompanyId) => { state.branchCompanyId = branchCompanyId storage.set(constant.branchCompanyId, branchCompanyId) }, SET_BRANCH_COMPANY_NAME: (state, branchCompanyName) => { state.branchCompanyName = branchCompanyName storage.set(constant.branchCompanyName, branchCompanyName) }
GetInfo Action 修改:javascript GetInfo({ commit, state }) { return new Promise((resolve, reject) => { getInfo().then(res => { commit('SET_BRANCH_COMPANY_ID', res.branchCompanyId) commit('SET_BRANCH_COMPANY_NAME', res.branchCompanyName) resolve(res) }) }) }
Computed 修改:javascript computed: { ...mapState({ currentUser: state => ({ branchCompanyId: state.user.branchCompanyId, branchCompanyName: state.user.branchCompanyName }) }) },
onLoad 设置默认值:javascript onLoad(options) { this.getAvailableVehicles() this.initSelectedStaff() this.loadDeptStaff() // 设置默认归属机构 if (this.currentUser.branchCompanyName) { this.selectedOrganization = this.currentUser.branchCompanyName } }
1. 用户登录
↓
2. 前端调用 getInfo 接口
↓
3. 后端获取用户部门信息
↓
4. 判断部门类型
├─ parent_id = 100 → 直接是分公司
└─ 其他 → 从 ancestors 解析分公司ID
↓
5. 查询分公司详细信息
↓
6. 返回分公司ID和名称
↓
7. 前端保存到 Vuex Store
↓
8. 页面使用分公司信息
{
"code": 200,
"msg": "操作成功",
"user": {
"userId": 100,
"deptId": 201,
"userName": "zhangsan",
"nickName": "张三",
...
},
"roles": ["driver"],
"permissions": ["*:*:*"],
"branchCompanyId": 101,
"branchCompanyName": "广州分公司"
}
如果用户不属于任何分公司,返回:json { "branchCompanyId": null, "branchCompanyName": null }
数据准备:sql -- 用户部门 dept_id = 101, parent_id = 100, dept_name = '广州分公司'
预期结果:javascript branchCompanyId: 101 branchCompanyName: '广州分公司'
数据准备:sql -- 用户部门 dept_id = 201, parent_id = 101, ancestors = '0,100,101' -- 分公司 dept_id = 101, parent_id = 100, dept_name = '广州分公司'
预期结果:javascript branchCompanyId: 101 branchCompanyName: '广州分公司'
数据准备:javascript user.deptId = null
预期结果:javascript branchCompanyId: null branchCompanyName: null
"0,100,分公司ID,子部门ID""0,100""0,100,101,201"export default {
computed: {
...mapState({
currentUser: state => ({
branchCompanyId: state.user.branchCompanyId,
branchCompanyName: state.user.branchCompanyName
})
})
},
onLoad() {
// 设置默认归属机构
if (this.currentUser.branchCompanyName) {
this.form.organization = this.currentUser.branchCompanyName
}
// 使用分公司ID查询数据
if (this.currentUser.branchCompanyId) {
this.loadDataByBranch(this.currentUser.branchCompanyId)
}
}
}
| 版本 | 日期 | 修改内容 | 修改人 |
|---|
| 1.0 | 2025-10-18 | 初始版本,实现分公司信息获取功能 | - |
通过在 getInfo 接口中返回用户所在的分公司信息,实现了以下目标: