diff --git a/web/src/views/im/registrationInvite/index.vue b/web/src/views/im/registrationInvite/index.vue
index bfb8012..10454e9 100644
--- a/web/src/views/im/registrationInvite/index.vue
+++ b/web/src/views/im/registrationInvite/index.vue
@@ -8,7 +8,7 @@
ref="searchFormRef"
@register="register"
@submit="reloadTable"
- @reset="reloadTable"
+ @reset="onSearchReset"
@keyup.enter="reloadTable"
/>
{
loadOptions();
await loadTenantOptions();
diff --git a/web/src/views/imGroup/index.vue b/web/src/views/imGroup/index.vue
index 3fa2b81..ecf8218 100644
--- a/web/src/views/imGroup/index.vue
+++ b/web/src/views/imGroup/index.vue
@@ -8,7 +8,7 @@
ref="searchFormRef"
@register="register"
@submit="reloadTable"
- @reset="reloadTable"
+ @reset="onSearchReset"
@keyup.enter="reloadTable"
/>
@@ -36,6 +36,7 @@
import { BasicForm, useForm } from '@/components/Form/index';
import { CacheInvalidate, List, WorkbenchEvent } from '@/api/imKafkaCommand';
import { columns, loadOptions, loadTenantOptions, schemas, State, tenantOptions } from './model';
+ import { imSearchReset } from '../imTenantOptions';
import { adaTableScrollX } from '@/utils/hotgo';
import ViewModal from './view.vue';
@@ -80,6 +81,9 @@
actionRef.value?.reload();
}
+ // 重置后回填商户下拉第一个选项再查询(避免 tenantId 被清空导致列表为空)
+ const onSearchReset = imSearchReset(searchFormRef, tenantOptions, reloadTable);
+
async function sendCacheInvalidate() {
const tenant = getFirstTenant();
if (!tenant) {
diff --git a/web/src/views/imRealname/index.vue b/web/src/views/imRealname/index.vue
index bee893b..610e4da 100644
--- a/web/src/views/imRealname/index.vue
+++ b/web/src/views/imRealname/index.vue
@@ -8,7 +8,7 @@
ref="searchFormRef"
@register="register"
@submit="reloadTable"
- @reset="reloadTable"
+ @reset="onSearchReset"
/>
{
message.success('操作成功');
diff --git a/web/src/views/imSensitiveWord/index.vue b/web/src/views/imSensitiveWord/index.vue
index a3a5725..136b281 100644
--- a/web/src/views/imSensitiveWord/index.vue
+++ b/web/src/views/imSensitiveWord/index.vue
@@ -6,7 +6,7 @@
ref="searchFormRef"
@register="register"
@submit="reload"
- @reset="reload"
+ @reset="onSearchReset"
@keyup.enter="reload"
/>
tableRef.value?.reload();
+ // 重置后回填商户下拉再查询;回填跳过「全局默认」(value=0),与初始加载 getDefaultTenantValue 行为一致
+ const resetTenantOptions = computed(() =>
+ policyTenantOptions.value.filter((v) => Number(v.value) > 0)
+ );
+ const onSearchReset = imSearchReset(searchFormRef, resetTenantOptions, reload);
const actionColumn = reactive({
width: 150,
title: '操作',
diff --git a/web/src/views/imTaskDashboard/index.vue b/web/src/views/imTaskDashboard/index.vue
index 74689fe..609c2d4 100644
--- a/web/src/views/imTaskDashboard/index.vue
+++ b/web/src/views/imTaskDashboard/index.vue
@@ -8,7 +8,7 @@
ref="searchFormRef"
@register="register"
@submit="reloadTable"
- @reset="handleReset"
+ @reset="onSearchReset"
@keyup.enter="reloadTable"
/>
{
loadOptions();
diff --git a/web/src/views/imTenantOptions.ts b/web/src/views/imTenantOptions.ts
index 4237f28..a2e729c 100644
--- a/web/src/views/imTenantOptions.ts
+++ b/web/src/views/imTenantOptions.ts
@@ -71,6 +71,31 @@ export function lockTenantSchema(schema?: FormSchema) {
props.clearable = false;
}
+interface ImSearchFormRef {
+ setFieldsValue: (values: Record) => Promise;
+}
+
+/**
+ * 统一搜索重置回调:BasicForm 的 resetFields 会把包括 tenantId 在内的全部搜索字段清空,
+ * 随后的自动查询因缺商户条件命中前端空列表 guard(或被后端以「请选择IM租户」拒绝)。
+ * 此工厂返回的回调在 reset 之后把商户下拉回填为当前选项列表的第一项
+ * (商户绑定账号=自己商户;平台账号=全部商户列表第一项),再触发查询——
+ * 与各页面初始加载(onMounted 默认选中第一项)的行为保持一致。
+ */
+export function imSearchReset(
+ searchFormRef: Ref,
+ tenantOptions: Ref,
+ reload: () => unknown,
+) {
+ return async () => {
+ const first = Number(tenantOptions.value[0]?.value || 0);
+ if (first > 0) {
+ await searchFormRef.value?.setFieldsValue({ tenantId: first });
+ }
+ await reload();
+ };
+}
+
function toTenantOption(item: any): ImTenantOption {
return {
label: formatImTenantLabel(item),
diff --git a/web/src/views/imUser/index.vue b/web/src/views/imUser/index.vue
index 5a3af15..9975715 100644
--- a/web/src/views/imUser/index.vue
+++ b/web/src/views/imUser/index.vue
@@ -8,7 +8,7 @@
ref="searchFormRef"
@register="register"
@submit="reloadTable"
- @reset="reloadTable"
+ @reset="onSearchReset"
@keyup.enter="reloadTable"
/>
@@ -241,6 +241,7 @@
parseJSON,
policyTenantOptions,
} from '@/views/imPolicyShared';
+ import { imSearchReset } from '../imTenantOptions';
const dict = useDictStore(),
message = useMessage(),
@@ -298,6 +299,11 @@
actionRef.value?.reload();
refreshLoginIPSummary();
};
+ // 重置后回填商户下拉再查询;回填跳过「全局默认」(value=0),与初始加载 getDefaultTenantValue 行为一致
+ const resetTenantOptions = computed(() =>
+ policyTenantOptions.value.filter((v) => Number(v.value) > 0)
+ );
+ const onSearchReset = imSearchReset(searchFormRef, resetTenantOptions, reloadTable);
const actionColumn = reactive({
width: 300,
title: '操作',