diff --git a/src/assets/styles/header.scss b/src/assets/styles/header.scss index 98f3eac..62e1a98 100644 --- a/src/assets/styles/header.scss +++ b/src/assets/styles/header.scss @@ -181,6 +181,14 @@ text-overflow: ellipsis; white-space: nowrap; } +/* 应用类型:右侧灰字(来源 BoaAppType.name,与 /apps 分组标题同源) */ +.app-cmdk-type { + flex-shrink: 0; + font-size: 11.5px; + color: #98a2b0; + font-weight: 400; + white-space: nowrap; +} .app-cmdk-empty { display: none; padding: 28px 18px 32px; diff --git a/src/components/Header.vue b/src/components/Header.vue index a95c48e..6cdfb70 100644 --- a/src/components/Header.vue +++ b/src/components/Header.vue @@ -208,6 +208,7 @@ /> {{ item.name }} + {{ item.appTypeName }}
@@ -409,9 +410,10 @@ onUnmounted(() => { window.removeEventListener("keydown", onCmdkKeydown); closeMsgWs(); }); -watch(searchAppText, val => { +// 面板已是模态框,输入只驱动面板自身过滤; +// 不再 emit("searchChange") —— 背景应用网格保持原样(2026-10-08 用户修订 1) +watch(searchAppText, () => { cmdkStagger.value = false; // 输入过滤时不重播逐条入场 - mittBus.emit("searchChange", val); }); // ===== 搜索命令面板(2026-10-08 定稿 B 方案)===== const refCmdkList = ref(); @@ -425,12 +427,21 @@ function vectorIconOf(item: any): string { return appiconKeyOf(item?.name || ""); } -/** 结果取自 store(由 AppList.reloadAppData 写入),与背景应用网格同源同口径 */ +/** 结果取自 store.curUserAppList(写入方 = AppList.reloadAppData)。 + * 它是 BoaAppType 分组结构 [{ id, name, apps }],name 就是应用类型名; + * 展开时把类型名挂到每条上供右侧灰字展示。 + * 注意别用 store.getFlattenAppList —— 它是纯 flatten,会把类型名丢掉 */ const cmdkResult = computed(() => { - const all = store.getFlattenAppList; const q = (searchAppText.value || "").trim(); - if (!q) return all; - return all.filter((x: any) => x.name.indexOf(q) !== -1); + const out: any[] = []; + (store.curUserAppList || []).forEach((group: any) => { + (group.apps || []).forEach((app: any) => { + if (!q || (app.name || "").indexOf(q) !== -1) { + out.push({ ...app, appTypeName: group.name }); + } + }); + }); + return out; }); function openSearch() { diff --git a/src/harness-main.ts b/src/harness-main.ts index 88009e4..f365661 100644 --- a/src/harness-main.ts +++ b/src/harness-main.ts @@ -78,12 +78,18 @@ function applyMockState() { ], curUserAppList: [ { + id: 1, + name: "常用应用", apps: [ { appKey: "100019", appCode: "flow", name: "流程中心" }, { appKey: "100617", appCode: "notice", name: "通知公告" }, - { appKey: "100611", appCode: "leave", name: "请假" }, ], }, + { + id: 2, + name: "教学应用", + apps: [{ appKey: "100611", appCode: "leave", name: "请假" }], + }, ], unreadCount: 5, curUserSettingInfo: { diff --git a/src/utils/mitt.ts b/src/utils/mitt.ts index 0bef37a..f33501c 100644 --- a/src/utils/mitt.ts +++ b/src/utils/mitt.ts @@ -11,7 +11,6 @@ type MittType = { openBschIframePage: IframePageParmas; //打开iframe页面 showLightAppModal: LightAppModal; //打开lightapp模态框 searchReset: void; //重置搜索框 - searchChange: string | null; }; // 类型 diff --git a/src/views/AppList.vue b/src/views/AppList.vue index 5f30b01..d8cadcc 100644 --- a/src/views/AppList.vue +++ b/src/views/AppList.vue @@ -1,7 +1,7 @@