|
|
@@ -250,19 +250,26 @@ const state = reactive({
|
|
|
selectedTabName: '0', // 选中的 tab 页
|
|
|
orgTreeData: [] as Array<OrgTreeOutput>,
|
|
|
ruleForm: {} as UpdateUserInput,
|
|
|
- posData: [] as Array<SysPos>, // 职位数据
|
|
|
- roleData: [] as Array<RoleOutput>, // 角色数据
|
|
|
+ posData: [] as Array<SysPos>, // 职位数据(当前弹窗过滤后)
|
|
|
+ allPosData: [] as Array<SysPos>, // 全量职位(避免多次打开弹窗把列表滤空)
|
|
|
+ roleData: [] as Array<RoleOutput>, // 角色数据(当前弹窗过滤后)
|
|
|
+ allRoleData: [] as Array<RoleOutput>, // 全量角色
|
|
|
languages: [] as any[], // 语言数据
|
|
|
});
|
|
|
// 级联选择器配置选项
|
|
|
const cascaderProps = { checkStrictly: true, emitPath: false, value: 'id', label: 'name', expandTrigger: 'hover' };
|
|
|
|
|
|
+/** 雪花 Id 可能是 number/string,严格 === 会导致租户过滤后列表为空 */
|
|
|
+const sameTenantId = (a: any, b: any) => a != null && b != null && String(a) === String(b);
|
|
|
+
|
|
|
onMounted(async () => {
|
|
|
state.loading = true;
|
|
|
var res = await getAPI(SysPosApi).apiSysPosListGet();
|
|
|
- state.posData = res.data.result ?? [];
|
|
|
+ state.allPosData = res.data.result ?? [];
|
|
|
+ state.posData = state.allPosData;
|
|
|
var res1 = await getAPI(SysRoleApi).apiSysRoleListGet();
|
|
|
- state.roleData = res1.data.result ?? [];
|
|
|
+ state.allRoleData = res1.data.result ?? [];
|
|
|
+ state.roleData = state.allRoleData;
|
|
|
if (langStore.languages.length === 0) {
|
|
|
await langStore.loadLanguages();
|
|
|
}
|
|
|
@@ -272,9 +279,10 @@ onMounted(async () => {
|
|
|
|
|
|
// 打开弹窗
|
|
|
const openDialog = async (row: any) => {
|
|
|
- state.orgTreeData = (row.tenantId ? props.orgTreeData?.filter((e) => e.tenantId === row.tenantId) : props.orgTreeData) ?? [];
|
|
|
- state.posData = (row.tenantId ? state.posData?.filter((e) => e.tenantId === row.tenantId) : state.posData) ?? [];
|
|
|
- state.roleData = (row.tenantId ? state.roleData?.filter((e) => e.tenantId === row.tenantId) : state.roleData) ?? [];
|
|
|
+ // 每次从全量重滤,避免上次按其他租户过滤后残留空列表
|
|
|
+ state.orgTreeData = (row.tenantId ? props.orgTreeData?.filter((e) => sameTenantId(e.tenantId, row.tenantId)) : props.orgTreeData) ?? [];
|
|
|
+ state.posData = (row.tenantId ? state.allPosData?.filter((e) => sameTenantId(e.tenantId, row.tenantId)) : state.allPosData) ?? [];
|
|
|
+ state.roleData = (row.tenantId ? state.allRoleData?.filter((e) => sameTenantId(e.tenantId, row.tenantId)) : state.allRoleData) ?? [];
|
|
|
ruleFormRef.value?.resetFields();
|
|
|
state.selectedTabName = '0'; // 重置为第一个 tab 页
|
|
|
state.ruleForm = JSON.parse(JSON.stringify(row));
|