From 2c5f53ec003a52d8ea1865e58e1436edf1082021 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Wed, 12 Aug 2026 18:50:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/layouts/AppLayout.test.ts | 13 ++- src/app/layouts/AppLayout.vue | 29 +++++-- src/app/router/index.test.ts | 13 +++ src/core/navigation/adminNavigation.test.ts | 8 ++ src/core/navigation/adminNavigation.ts | 7 +- .../CustomerOverseasStorageFeePanel.vue | 2 +- .../customers/overseasStorageFee.test.ts | 16 ++++ .../pages/OverseasStorageFeesView.vue | 6 +- src/modules/iam/pages/RolesView.test.ts | 10 +++ src/modules/notifications/PROTOTYPE_MATRIX.md | 34 ++++---- .../api/notificationCenter.test.ts | 85 +++++++++++++++++++ .../notifications/api/notificationCenter.ts | 38 +++++++++ .../components/ContractPendingNotice.vue | 11 --- .../components/MessageComposerDialog.vue | 82 ++++++++++++------ .../components/TemplateEditorDialog.vue | 65 +++++++------- .../notifications/notifications.test.ts | 62 ++++++++++++++ .../pages/MessageManagementView.vue | 61 ++++--------- .../pages/MessageTemplatesView.vue | 47 +++------- .../notifications/pages/MyMessagesView.vue | 53 +++--------- src/modules/notifications/routes.ts | 7 +- src/modules/notifications/types.ts | 60 +++---------- .../pages/OceanBookingDetailView.test.ts | 6 ++ .../pages/OceanBookingDetailView.vue | 16 +++- src/modules/ocean-bookings/types.ts | 2 +- .../locations/pages/LocationsView.test.ts | 12 +++ .../pallets/pages/PalletsView.test.ts | 10 +++ .../warehouses/pages/WarehousesView.test.ts | 9 ++ src/shared/components/DataTable.test.ts | 26 +++++- src/shared/components/DataTable.vue | 6 +- 29 files changed, 513 insertions(+), 283 deletions(-) create mode 100644 src/modules/notifications/api/notificationCenter.test.ts create mode 100644 src/modules/notifications/api/notificationCenter.ts delete mode 100644 src/modules/notifications/components/ContractPendingNotice.vue create mode 100644 src/modules/notifications/notifications.test.ts diff --git a/src/app/layouts/AppLayout.test.ts b/src/app/layouts/AppLayout.test.ts index f7554da9..c740c98e 100644 --- a/src/app/layouts/AppLayout.test.ts +++ b/src/app/layouts/AppLayout.test.ts @@ -7,6 +7,9 @@ import { ElMessageBox } from 'element-plus' import { useAuthStore } from '@/core/auth/auth' import AppLayout from './AppLayout.vue' +const { getUnreadCount } = vi.hoisted(() => ({ getUnreadCount: vi.fn() })) +vi.mock('@/modules/notifications/api/notificationCenter', () => ({ getUnreadCount })) + const CachedPage = defineComponent({ setup() { const count = ref(0) @@ -26,31 +29,35 @@ async function mountLayout(path = '/') { const auth = useAuthStore() auth.token = 'token' auth.user = { id: '1', name: '平台管理员', account: 'admin', roles: ['PLATFORM_ADMIN'] } - auth.permissions = ['platform:warehouse:list'] + auth.permissions = ['platform:warehouse:list', 'platform:notification:view'] const router = createRouter({ history: createMemoryHistory(), routes: [ { path: '/', name: 'home', component: { template: '

page

' }, meta: { requiresAuth: true, workspaceTab: false, keepAlive: false } }, { path: '/customers', name: 'customers', component: CachedPage, meta: { title: '客户管理', showPageHeading: false, requiresAuth: true } }, { path: '/warehouses', name: 'warehouses', component: { template: '

warehouses

' }, meta: { title: '仓库管理', requiresAuth: true } }, + { path: '/notifications/mine', name: 'my-notifications', component: { template: '

messages

' }, meta: { title: '我的消息', requiresAuth: true } }, { path: '/login', component: { template: '

login

' } }, ], }) await router.push(path) await router.isReady() const wrapper = mount(AppLayout, { - global: { plugins: [pinia, router], stubs: { AdminSidebarMenu: { template: '