From fe5c7af7e22a69e1d55406066c6ee88f49b05111 Mon Sep 17 00:00:00 2001 From: richjohnrambo Date: Wed, 16 Sep 2026 16:54:12 +0800 Subject: [PATCH] fix: show bound tenant in im menus --- web/src/store/modules/user.ts | 3 + web/src/views/im/registrationInvite/index.vue | 21 +--- web/src/views/im/registrationInvite/model.ts | 9 +- web/src/views/imAbuseReason/index.vue | 23 ++-- web/src/views/imAbuseReason/model.ts | 9 +- web/src/views/imAdminQueryShared.ts | 9 +- web/src/views/imAuditLog/index.vue | 23 ++-- web/src/views/imAuditLog/model.ts | 9 +- web/src/views/imDashboard/index.vue | 18 +-- web/src/views/imDeadLetter/model.ts | 9 +- web/src/views/imExternalConfig/index.vue | 21 ++-- web/src/views/imExternalConfig/model.ts | 9 +- web/src/views/imFeedbackConfig/index.vue | 15 +-- web/src/views/imFeedbackConfig/model.ts | 9 +- web/src/views/imFile/index.vue | 20 ++-- web/src/views/imFile/model.ts | 9 +- web/src/views/imFilePolicy/index.vue | 21 ++-- web/src/views/imFilePolicy/model.ts | 9 +- web/src/views/imGroup/index.vue | 19 ++-- web/src/views/imGroup/model.ts | 9 +- web/src/views/imKafkaCommand/model.ts | 10 +- web/src/views/imLoginFailureLog/index.vue | 21 ++-- web/src/views/imMailboxConfig/index.vue | 15 +-- web/src/views/imMailboxConfig/model.ts | 9 +- .../views/imMessageShared/MessageTable.vue | 21 ++-- web/src/views/imNotification/index.vue | 21 ++-- web/src/views/imNotification/model.ts | 9 +- web/src/views/imOrg/index.vue | 23 ++-- web/src/views/imOrg/model.ts | 9 +- web/src/views/imOutbox/index.vue | 21 ++-- web/src/views/imOutbox/model.ts | 9 +- web/src/views/imPolicyShared.ts | 23 ++-- web/src/views/imRealname/index.vue | 15 +-- web/src/views/imRealname/model.ts | 9 +- web/src/views/imSecurityPolicy/index.vue | 104 +++++++++++++++++- web/src/views/imSensitiveWord/index.vue | 8 +- web/src/views/imTaskDashboard/index.vue | 17 +-- web/src/views/imTaskDashboard/model.ts | 9 +- web/src/views/imTenantOptions.ts | 88 +++++++++++++++ web/src/views/imUser/index.vue | 21 ++-- web/src/views/imUser/model.ts | 9 +- web/src/views/imUserLoginHistory/index.vue | 21 ++-- web/src/views/imUserPolicyGroup/index.vue | 10 +- web/src/views/imWorkOrder/index.vue | 21 ++-- web/src/views/imWorkOrder/model.ts | 9 +- web/src/views/imWorkbench/index.vue | 23 ++-- web/src/views/imWorkbench/model.ts | 9 +- 47 files changed, 401 insertions(+), 437 deletions(-) create mode 100644 web/src/views/imTenantOptions.ts diff --git a/web/src/store/modules/user.ts b/web/src/store/modules/user.ts index b5aef1d..8742e76 100644 --- a/web/src/store/modules/user.ts +++ b/web/src/store/modules/user.ts @@ -24,6 +24,9 @@ const Storage = createStorage({ storage: localStorage }); export interface UserInfoState { id: number; + tenantId: number; + tenantCode?: string; + tenantName?: string; deptName: string; deptType: string; roleName: string; diff --git a/web/src/views/im/registrationInvite/index.vue b/web/src/views/im/registrationInvite/index.vue index 1f30c87..bfb8012 100644 --- a/web/src/views/im/registrationInvite/index.vue +++ b/web/src/views/im/registrationInvite/index.vue @@ -55,7 +55,6 @@ import { BasicTable, TableAction } from '@/components/Table'; import { BasicForm, useForm } from '@/components/Form/index'; import { usePermission } from '@/hooks/web/usePermission'; - import { useUserStore } from '@/store/modules/user'; import { BatchRevoke, Export, List, Revoke } from '@/api/im/registrationInvite'; import { columns, @@ -75,14 +74,11 @@ const message = useMessage(); const dialog = useDialog(); const { hasPermission } = usePermission(); - const userStore = useUserStore(); const actionRef = ref(); const searchFormRef = ref({}); const createRef = ref(); const batchViewRef = ref(); const bindUserRef = ref(); - const isPlatformAdmin = computed(() => userStore.isCompanyDept); - const tableColumns = computed(() => columns.map((item: any) => { if (item.key !== 'status') { @@ -158,15 +154,12 @@ } function selectedTenantId() { - if (!isPlatformAdmin.value) { - return 0; - } return Number(searchFormRef.value?.formModel?.tenantId || 0); } function handleCreate(batch: boolean) { const tenantId = selectedTenantId(); - if (isPlatformAdmin.value && !tenantId) { + if (!tenantId) { message.warning('请先选择商户'); return; } @@ -226,13 +219,11 @@ onMounted(async () => { loadOptions(); - if (isPlatformAdmin.value) { - await loadTenantOptions(); - if (tenantOptions.value.length > 0) { - await setFieldsValue({ tenantId: tenantOptions.value[0].value }); - } else { - message.warning('暂无可用商户'); - } + await loadTenantOptions(); + if (tenantOptions.value.length > 0) { + await setFieldsValue({ tenantId: tenantOptions.value[0].value }); + } else { + message.warning('暂无可用商户'); } reloadTable(); }); diff --git a/web/src/views/im/registrationInvite/model.ts b/web/src/views/im/registrationInvite/model.ts index 4e74e04..d6eaf32 100644 --- a/web/src/views/im/registrationInvite/model.ts +++ b/web/src/views/im/registrationInvite/model.ts @@ -2,7 +2,7 @@ import { computed, ref } from 'vue'; import { FormSchema } from '@/components/Form'; import { defRangeShortcuts } from '@/utils/dateUtil'; import { useDictStore } from '@/store/modules/dict'; -import { List as TenantList } from '@/api/imTenant'; +import { loadImTenantOptions } from '@/views/imTenantOptions'; const dict = useDictStore(); @@ -128,12 +128,7 @@ export function loadOptions() { } export async function loadTenantOptions() { - const res = await TenantList({ page: 1, perPage: 20, state: 1 }); - tenantOptions.value = (res?.list || []).map((item) => ({ - label: `${item.name}(${item.code})`, - value: item.id, - })); - return tenantOptions.value; + return loadImTenantOptions(tenantOptions, { page: 1, perPage: 20, state: 1 }); } export function statusLabel(status: string) { diff --git a/web/src/views/imAbuseReason/index.vue b/web/src/views/imAbuseReason/index.vue index f8c07b1..da64ed3 100644 --- a/web/src/views/imAbuseReason/index.vue +++ b/web/src/views/imAbuseReason/index.vue @@ -94,7 +94,6 @@ import { BasicForm, useForm } from '@/components/Form/index'; import { BasicTable, TableAction } from '@/components/Table'; import { usePermission } from '@/hooks/web/usePermission'; - import { useUserStore } from '@/store/modules/user'; import { Delete, Edit, List } from '@/api/imAbuseReason'; import { adaModalWidth, adaTableScrollX } from '@/utils/hotgo'; import { @@ -112,8 +111,6 @@ const dialog = useDialog(); const message = useMessage(); const { hasPermission } = usePermission(); - const userStore = useUserStore(); - const isPlatformAdmin = computed(() => userStore.isCompanyDept); const actionRef = ref(); const searchFormRef = ref({}); const formRef = ref(); @@ -123,12 +120,12 @@ const dialogWidth = computed(() => adaModalWidth(560)); const targetTypeOptions = dict.getOption('ImAbuseTargetTypeOptions'); const currentTenantReady = computed( - () => !isPlatformAdmin.value || !!searchFormRef.value?.formModel?.tenantId + () => !!searchFormRef.value?.formModel?.tenantId ); const tenantSchema = schemas.value.find((item) => item.field === 'tenantId'); if (tenantSchema) { - tenantSchema.ifShow = () => isPlatformAdmin.value; + tenantSchema.ifShow = () => true; } const requiresDescriptionValue = computed({ @@ -184,7 +181,7 @@ const loadDataTable = async (res) => { const params = { ...searchFormRef.value?.formModel, ...res }; - if (isPlatformAdmin.value && !params.tenantId) + if (!params.tenantId) return { list: [], page: 1, pageCount: 0, totalCount: 0 }; return await List(params); }; @@ -195,7 +192,7 @@ async function handleReset() { const defaults: Recordable = {}; - if (isPlatformAdmin.value && tenantOptions.value.length > 0) + if (tenantOptions.value.length > 0) defaults.tenantId = tenantOptions.value[0].value; await setFieldsValue(defaults); reloadTable(); @@ -248,13 +245,11 @@ onMounted(async () => { loadOptions(); - if (isPlatformAdmin.value) { - await loadTenantOptions(); - if (tenantOptions.value.length > 0) { - await setFieldsValue({ tenantId: tenantOptions.value[0].value }); - } else { - message.warning('暂无可用商户'); - } + await loadTenantOptions(); + if (tenantOptions.value.length > 0) { + await setFieldsValue({ tenantId: tenantOptions.value[0].value }); + } else { + message.warning('暂无可用商户'); } reloadTable(); }); diff --git a/web/src/views/imAbuseReason/model.ts b/web/src/views/imAbuseReason/model.ts index 1282a5e..658bf32 100644 --- a/web/src/views/imAbuseReason/model.ts +++ b/web/src/views/imAbuseReason/model.ts @@ -2,7 +2,7 @@ import { computed, ref } from 'vue'; import { cloneDeep } from 'lodash-es'; import { FormSchema } from '@/components/Form'; import { useDictStore } from '@/store/modules/dict'; -import { List as TenantList } from '@/api/imTenant'; +import { loadImTenantOptions } from '@/views/imTenantOptions'; const dict = useDictStore(); @@ -140,10 +140,5 @@ export function loadOptions() { } export async function loadTenantOptions() { - const res = await TenantList({ page: 1, perPage: 100 }); - tenantOptions.value = (res?.list || []).map((item) => ({ - label: `${item.name}(${item.code})`, - value: item.id, - })); - return tenantOptions.value; + return loadImTenantOptions(tenantOptions, { page: 1, perPage: 100 }); } diff --git a/web/src/views/imAdminQueryShared.ts b/web/src/views/imAdminQueryShared.ts index 36781f4..d41c9c6 100644 --- a/web/src/views/imAdminQueryShared.ts +++ b/web/src/views/imAdminQueryShared.ts @@ -1,13 +1,8 @@ import { ref } from 'vue'; -import { List as TenantList } from '@/api/imTenant'; +import { loadImTenantOptions } from '@/views/imTenantOptions'; export const imQueryTenantOptions = ref([]); export async function loadImQueryTenantOptions() { - const res = await TenantList({ page: 1, perPage: 100 }); - imQueryTenantOptions.value = (res?.list || []).map((item) => ({ - label: `${item.name}(${item.code})`, - value: item.id, - })); - return imQueryTenantOptions.value; + return loadImTenantOptions(imQueryTenantOptions, { page: 1, perPage: 100 }); } diff --git a/web/src/views/imAuditLog/index.vue b/web/src/views/imAuditLog/index.vue index b092223..025dc6b 100644 --- a/web/src/views/imAuditLog/index.vue +++ b/web/src/views/imAuditLog/index.vue @@ -47,7 +47,6 @@ import { BasicTable, TableAction } from '@/components/Table'; import { BasicForm, useForm } from '@/components/Form/index'; import { usePermission } from '@/hooks/web/usePermission'; - import { useUserStore } from '@/store/modules/user'; import { List, Export } from '@/api/imAuditLog'; import { columns, loadTenantOptions, schemas, State, tenantOptions } from './model'; import { adaTableScrollX } from '@/utils/hotgo'; @@ -56,15 +55,13 @@ const message = useMessage(); const { hasPermission } = usePermission(); - const userStore = useUserStore(); - const isPlatformAdmin = computed(() => userStore.isCompanyDept); const actionRef = ref(); const searchFormRef = ref({}); const viewRef = ref(); const tenantSchema = schemas.value.find((item) => item.field === 'tenantId'); if (tenantSchema) { - tenantSchema.ifShow = () => isPlatformAdmin.value; + tenantSchema.ifShow = () => true; } const actionColumn = reactive({ @@ -96,7 +93,7 @@ const loadDataTable = async (res) => { const params = { ...searchFormRef.value?.formModel, ...res }; - if (isPlatformAdmin.value && !params.tenantId) + if (!params.tenantId) return { list: [], page: 1, pageCount: 0, totalCount: 0 }; return await List(params); }; @@ -107,7 +104,7 @@ async function handleReset() { const defaults: Recordable = {}; - if (isPlatformAdmin.value && tenantOptions.value.length > 0) + if (tenantOptions.value.length > 0) defaults.tenantId = tenantOptions.value[0].value; await setFieldsValue(defaults); reloadTable(); @@ -115,7 +112,7 @@ function handleExport() { const params = { ...searchFormRef.value?.formModel }; - if (isPlatformAdmin.value && !params.tenantId) { + if (!params.tenantId) { message.warning('请选择商户'); return; } @@ -123,13 +120,11 @@ } onMounted(async () => { - if (isPlatformAdmin.value) { - await loadTenantOptions(); - if (tenantOptions.value.length > 0) { - await setFieldsValue({ tenantId: tenantOptions.value[0].value }); - } else { - message.warning('暂无可用商户'); - } + await loadTenantOptions(); + if (tenantOptions.value.length > 0) { + await setFieldsValue({ tenantId: tenantOptions.value[0].value }); + } else { + message.warning('暂无可用商户'); } reloadTable(); }); diff --git a/web/src/views/imAuditLog/model.ts b/web/src/views/imAuditLog/model.ts index df3ff06..ae79bca 100644 --- a/web/src/views/imAuditLog/model.ts +++ b/web/src/views/imAuditLog/model.ts @@ -2,7 +2,7 @@ import { computed, ref } from 'vue'; import { cloneDeep } from 'lodash-es'; import { FormSchema } from '@/components/Form'; import { defRangeShortcuts } from '@/utils/dateUtil'; -import { List as TenantList } from '@/api/imTenant'; +import { loadImTenantOptions } from '@/views/imTenantOptions'; export const tenantOptions = ref([]); @@ -110,10 +110,5 @@ export const columns = [ ]; export async function loadTenantOptions() { - const res = await TenantList({ page: 1, perPage: 20 }); - tenantOptions.value = (res?.list || []).map((item) => ({ - label: `${item.name}(${item.code})`, - value: item.id, - })); - return tenantOptions.value; + return loadImTenantOptions(tenantOptions, { page: 1, perPage: 20 }); } diff --git a/web/src/views/imDashboard/index.vue b/web/src/views/imDashboard/index.vue index dc4cc48..d3d1ba3 100644 --- a/web/src/views/imDashboard/index.vue +++ b/web/src/views/imDashboard/index.vue @@ -5,7 +5,6 @@