主要修改: - 完善员工门户CRM模块(经销商、线索管理) - 添加ERP客户选择器集成 - 优化登录认证和租户选择 - 添加超时配置、企业微信集成等文档 - 更新docker-compose配置 - 将.pid临时文件加入gitignore Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.9 KiB
4.9 KiB
动态公司名称配置说明
修改内容
已将员工门户的左上角标题从固定的"HZHub 企业员工门户"改为动态显示"登录用户对应公司名称 + 企业员工门户"。
修改文件
1. Aside侧边栏组件
文件: src/layouts/components/Aside/index.vue
修改内容:
- 引入
useUserStore获取用户信息 - 创建
tenantNameMap映射租户ID到公司名称 - 使用
computed计算属性动态获取公司名称 - 将固定的 "HZHub" 改为动态的
{{ companyName }}
关键代码:
import { computed } from 'vue';
import { useUserStore } from '@/stores';
const userStore = useUserStore();
// 租户ID到公司名称的映射
const tenantNameMap: Record<string, string> = {
'000001': '集团总部',
'000002': '汇亚公司',
'000003': '恒福公司',
'000004': '玛缇公司',
};
// 计算当前用户的公司名称
const companyName = computed(() => {
const tenantId = userStore.userInfo?.tenantId;
return tenantId ? tenantNameMap[tenantId] || 'HZHub' : 'HZHub';
});
2. 登录页面
文件: src/pages/login/index.vue
修改内容:
- 从URL参数获取
tenant参数 - 使用相同的
tenantNameMap映射 - 根据URL参数动态显示公司名称
关键代码:
import { computed } from 'vue';
import { useRoute } from 'vue-router';
const route = useRoute();
// 从URL参数获取租户ID,并映射到公司名称
const companyName = computed(() => {
const tenantId = route.query.tenant as string;
return tenantId ? tenantNameMap[tenantId] || 'HZHub' : 'HZHub';
});
公司名称映射关系
| 租户ID | 公司名称 | 登录URL示例 |
|---|---|---|
| 000001 | 集团总部 | http://localhost:5137/login?tenant=000001 |
| 000002 | 汇亚公司 | http://localhost:5137/login?tenant=000002 |
| 000003 | 恒福公司 | http://localhost:5137/login?tenant=000003 |
| 000004 | 玛缇公司 | http://localhost:5137/login?tenant=000004 |
显示效果
登录页面
- 集团总部用户: 左上角显示 "集团总部 企业员工门户"
- 汇亚公司用户: 左上角显示 "汇亚公司 企业员工门户"
- 恒福公司用户: 左上角显示 "恒福公司 企业员工门户"
- 玛缇公司用户: 左上角显示 "玛缇公司 企业员工门户"
主界面侧边栏
登录后,侧边栏顶部会显示对应公司的名称:
[公司名称]
企业员工门户
扩展性
添加新公司
如果需要添加新的公司,只需在两个组件的 tenantNameMap 中添加映射:
const tenantNameMap: Record<string, string> = {
'000001': '集团总部',
'000002': '汇亚公司',
'000003': '恒福公司',
'000004': '玛缇公司',
'000005': '新公司名称', // 添加新公司
};
从后端获取公司名称
如果需要从后端动态获取公司名称,可以:
- 修改 LoginUser 类型,添加
companyName字段:
export interface LoginUser {
// ... 现有字段
companyName?: string; // 新增公司名称字段
}
- 修改 Aside 组件,直接使用
companyName:
const companyName = computed(() => {
return userStore.userInfo?.companyName || 'HZHub';
});
- 后端接口:在登录接口返回用户信息时,包含
companyName字段
测试验证
测试步骤
-
登录页面测试:
- 访问
http://localhost:5137/login?tenant=000002 - 检查登录页面左上角是否显示 "汇亚公司 企业员工门户"
- 访问
-
主界面测试:
- 使用不同公司的账号登录
- 检查侧边栏顶部是否显示对应公司名称
-
切换租户测试:
- 登录汇亚公司账号
- 退出登录
- 用恒福公司账号登录
- 检查标题是否正确切换
预期结果
- ✅ 登录页面根据URL参数显示对应公司名称
- ✅ 主界面侧边栏显示登录用户的公司名称
- ✅ 切换不同公司登录时,标题正确更新
- ✅ 未识别的租户ID显示为默认值 "HZHub"
注意事项
- 租户ID一致性:确保
tenantId与数据库sys_tenant表中的tenant_id字段一致 - 映射完整性:所有可能的租户ID都应该在
tenantNameMap中有对应映射 - 默认值:未识别的租户ID会显示默认值 "HZHub"
- 性能优化:使用
computed计算属性,避免不必要的重复计算
相关文件
src/layouts/components/Aside/index.vue- 侧边栏组件src/pages/login/index.vue- 登录页面src/stores/modules/user.ts- 用户状态管理src/api/auth/types.ts- 用户类型定义
后续优化建议
- 统一管理映射关系:将
tenantNameMap提取到统一的配置文件 - 支持多语言:添加国际化支持,显示不同语言的公司名称
- 动态获取:从后端API动态获取公司名称,避免硬编码
- Logo定制:不同公司使用不同的Logo图标