diff --git a/src/apis/models/device/index.ts b/src/apis/models/device/index.ts index 0f30847..1645d5a 100644 --- a/src/apis/models/device/index.ts +++ b/src/apis/models/device/index.ts @@ -7,6 +7,7 @@ import type { NdmKeyboardVO } from './video/ndm-keyboard'; import type { NdmMediaServerVO } from './video/ndm-media-server'; import type { NdmVideoServerVO } from './video/ndm-video-server'; +export * from './log/ndm-call-log'; export * from './log/ndm-device-alarm-log'; export * from './log/ndm-icmp-log'; export * from './log/ndm-snmp-log'; diff --git a/src/apis/models/device/log/ndm-call-log.ts b/src/apis/models/device/log/ndm-call-log.ts new file mode 100644 index 0000000..64a93d2 --- /dev/null +++ b/src/apis/models/device/log/ndm-call-log.ts @@ -0,0 +1,17 @@ +import type { BaseModel, ReduceForPageQuery, ReduceForSaveVO, ReduceForUpdateVO } from '../../base'; + +export interface NdmCallLogVO extends BaseModel { + sourceGbId: string; + targetGbId: string; + method: string; + messageType: string; + cmdType: string; +} + +export type NdmCallLogResultVO = Partial; + +export type NdmCallLogSaveVO = Partial>; + +export type NdmCallLogUpdateVO = Partial>; + +export type NdmCallLogPageQuery = Partial>; diff --git a/src/apis/requests/device/index.ts b/src/apis/requests/device/index.ts index cb54b27..b23536e 100644 --- a/src/apis/requests/device/index.ts +++ b/src/apis/requests/device/index.ts @@ -1,5 +1,6 @@ export * from './export/ndm-icmp-export'; +export * from './log/ndm-call-log'; export * from './log/ndm-device-alarm-log'; export * from './log/ndm-icmp-log'; export * from './log/ndm-snmp-log'; diff --git a/src/apis/requests/device/log/ndm-call-log.ts b/src/apis/requests/device/log/ndm-call-log.ts new file mode 100644 index 0000000..bccc46b --- /dev/null +++ b/src/apis/requests/device/log/ndm-call-log.ts @@ -0,0 +1,25 @@ +import { ndmClient } from '@/apis/client'; +import type { NdmCallLogPageQuery, NdmCallLogResultVO, PageParams, PageResult } from '@/apis/models'; + +export const postNdmCallLogPage = async (stationCode: string, pageQuery: PageParams) => { + const prefix = stationCode ? `/${stationCode}` : ''; + const resp = await ndmClient.post>(`${prefix}/api/ndm/ndmCallLog/page`, pageQuery); + const [err, callLogData] = resp; + if (err || !callLogData) { + throw err; + } + return callLogData; +}; + +export const ndmCallLogDefaultExportByTemplate = async (stationCode: string, pageQuery: PageParams) => { + const endpoint = '/api/ndm/ndmCallLog/defaultExportByTemplate'; + if (!stationCode) { + throw new Error('请选择车站'); + } + const resp = await ndmClient.post(`/${stationCode}${endpoint}`, pageQuery, { responseType: 'blob', retRaw: true }); + const [err, data] = resp; + if (err || !data) { + throw err; + } + return data; +}; diff --git a/src/layouts/app-layout.vue b/src/layouts/app-layout.vue index 48035e0..98f5b6f 100644 --- a/src/layouts/app-layout.vue +++ b/src/layouts/app-layout.vue @@ -118,15 +118,19 @@ const menuOptions = ref([ // icon: renderIcon(AreaChartOutlined), // }, { - label: () => h(RouterLink, { to: '/log/vimp-log' }, { default: () => '视频平台日志' }), // '系统日志记录' - key: '/log/vimp-log', + label: '系统日志', + key: '/log', icon: renderIcon(FileTextFilled), - // children: [ - // { - // label: () => h(RouterLink, { to: '/log/vimp-log' }, { default: () => '视频平台日志' }), - // key: '/log/vimp-log', - // }, - // ], + children: [ + { + label: () => h(RouterLink, { to: '/log/vimp-log' }, { default: () => '视频平台日志' }), + key: '/log/vimp-log', + }, + { + label: () => h(RouterLink, { to: '/log/call-log' }, { default: () => '上级调用日志' }), + key: '/log/call-log', + }, + ], }, { label: () => h(RouterLink, { to: '/debug' }, { default: () => '调试' }), diff --git a/src/pages/call-log-page.vue b/src/pages/call-log-page.vue new file mode 100644 index 0000000..f03fe35 --- /dev/null +++ b/src/pages/call-log-page.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/src/router/index.ts b/src/router/index.ts index 00a162c..ae4d708 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -31,12 +31,15 @@ const router = createRouter({ }, { path: 'log', - redirect: '/log/vimp-log', children: [ { path: 'vimp-log', component: () => import('@/pages/vimp-log-page.vue'), }, + { + path: 'call-log', + component: () => import('@/pages/call-log-page.vue'), + }, ], }, { @@ -62,32 +65,30 @@ const router = createRouter({ const whiteList = ['/debug']; -router.beforeEach((to, from, next) => { +router.beforeEach((to) => { const userStore = useUserStore(); const isAuthed = !!userStore.userLoginResult?.token; // 放行白名单 const inWhiteList = whiteList.some((path) => to.path.startsWith(path)); if (inWhiteList) { - next(); - return; + return true; } // 已登录用户不允许进入登录页(手动访问 /login 会重定向到首页) if (to.path === '/login') { if (isAuthed) { - next({ path: '/' }); + return { path: '/' }; } else { - next(); + return true; } - return; - } - - // 其它路由按登录态控制 - if (!isAuthed) { - next('/login'); } else { - next(); + // 其它路由按登录态控制 + if (!isAuthed) { + return { path: '/login' }; + } else { + return true; + } } });