feature/0723/ZR #6
@@ -4,6 +4,6 @@
|
||||
*/
|
||||
export { default as HelloWorld } from './HelloWorld';
|
||||
export { default as ChangePasswordModal } from './ChangePasswordModal';
|
||||
export { default as PageTabs } from './PageTabs/PageTabs';
|
||||
export { default as PageTabs } from './pageTabs';
|
||||
export { StatusTag } from './StatusTag';
|
||||
export type { StatusTagTone } from './StatusTag';
|
||||
|
||||
@@ -12,7 +12,7 @@ import { LeftOutlined, RightOutlined } from '@ant-design/icons-vue';
|
||||
import type { TabView } from '@/types';
|
||||
import { useState } from '@/hooks';
|
||||
import { renderRouteIcon } from '@/utils/routeIcon';
|
||||
import styles from './PageTabs.module.less';
|
||||
import styles from './style.module.less';
|
||||
|
||||
const SCROLL_STEP = 240;
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
/**
|
||||
* 赛事操作日志假数据
|
||||
*/
|
||||
import type {
|
||||
OperationLogQueryParams,
|
||||
PageData,
|
||||
TournamentAdminOperationPageVO,
|
||||
} from '@/api/logs/types';
|
||||
|
||||
const MOCK_EVENT_LOGS: TournamentAdminOperationPageVO[] = [
|
||||
{
|
||||
opName: '创建赛事',
|
||||
source: 'PC',
|
||||
nickname: '张三',
|
||||
phone: '13800000001',
|
||||
tournamentName: '第二届全国地学羽毛球邀请赛',
|
||||
obj: '赛事',
|
||||
content: '创建赛事「第二届全国地学羽毛球邀请赛」',
|
||||
createDate: '2026-07-30 08:00:00',
|
||||
},
|
||||
{
|
||||
opName: '修改赛事',
|
||||
source: '小程序',
|
||||
nickname: '李四',
|
||||
phone: '13800000002',
|
||||
tournamentName: '春季马拉松大赛',
|
||||
obj: '赛事',
|
||||
content: '修改赛事基础信息',
|
||||
createDate: '2026-07-29 10:12:00',
|
||||
},
|
||||
];
|
||||
|
||||
export function buildMockEventOperationLogPage(
|
||||
page: number,
|
||||
limit: number,
|
||||
params: OperationLogQueryParams,
|
||||
): PageData<TournamentAdminOperationPageVO> {
|
||||
let filtered = [...MOCK_EVENT_LOGS];
|
||||
|
||||
if (params.source) {
|
||||
const sourceLabel = params.source === '1' ? 'PC' : '小程序';
|
||||
filtered = filtered.filter((item) => item.source === sourceLabel);
|
||||
}
|
||||
if (params.sourceNickname) {
|
||||
filtered = filtered.filter((item) => item.nickname.includes(params.sourceNickname!));
|
||||
}
|
||||
if (params.sourcePhone) {
|
||||
filtered = filtered.filter((item) => item.phone.includes(params.sourcePhone!));
|
||||
}
|
||||
if (params.tournamentName) {
|
||||
filtered = filtered.filter((item) => item.tournamentName.includes(params.tournamentName!));
|
||||
}
|
||||
|
||||
const total = filtered.length;
|
||||
const start = (page - 1) * limit;
|
||||
return { total, list: filtered.slice(start, start + limit) };
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
* 支持按 type、nickname、dateBegin/dateEnd 前端筛选,
|
||||
* 模拟后端分页行为。
|
||||
*/
|
||||
import type { SysOperationLogVO, OperationLogQueryParams, PageData } from '@/api/logs';
|
||||
import type { SysOperationLogVO, OperationLogQueryParams, PageData } from '@/api/logs/types';
|
||||
|
||||
const MOCK_LOGS: SysOperationLogVO[] = [
|
||||
{
|
||||
|
||||
+6
-10
@@ -1,7 +1,8 @@
|
||||
import router from '@/router';
|
||||
import { auth } from '@/hooks/useAuth';
|
||||
import { useTabsStore } from '@/stores/tabsStore';
|
||||
import { useMenuStore } from '@/stores/menuStore';
|
||||
import { usePermissionStore } from '@/stores/permissionStore';
|
||||
import { useTabsStore } from '@/stores/tabsStore';
|
||||
|
||||
const appTitle = import.meta.env.VITE_APP_TITLE || 'CPMS 运营平台';
|
||||
|
||||
@@ -32,12 +33,9 @@ router.beforeEach(async (to, _from, next) => {
|
||||
// ── /login 特殊处理 ──
|
||||
if (to.path === '/login') {
|
||||
if (auth.isLoggedIn()) {
|
||||
const { loadMenu, loaded, homePath, isRoutePathAvailable } =
|
||||
await import('@/stores/menuStore').then((m) => m.useMenuStore());
|
||||
const { loadMenu, loaded, homePath, isRoutePathAvailable } = useMenuStore();
|
||||
if (!loaded.value) {
|
||||
const { loadPermissions } = await import('@/stores/permissionStore').then((m) =>
|
||||
m.usePermissionStore(),
|
||||
);
|
||||
const { loadPermissions } = usePermissionStore();
|
||||
await Promise.all([loadMenu(), loadPermissions()]);
|
||||
}
|
||||
|
||||
@@ -60,11 +58,9 @@ router.beforeEach(async (to, _from, next) => {
|
||||
}
|
||||
|
||||
// ── 已登录:确保菜单和动态路由已加载 ──
|
||||
const { loadMenu, loaded } = await import('@/stores/menuStore').then((m) => m.useMenuStore());
|
||||
const { loadMenu, loaded } = useMenuStore();
|
||||
if (!loaded.value) {
|
||||
const { loadPermissions } = await import('@/stores/permissionStore').then((m) =>
|
||||
m.usePermissionStore(),
|
||||
);
|
||||
const { loadPermissions } = usePermissionStore();
|
||||
await Promise.all([loadMenu(), loadPermissions()]);
|
||||
|
||||
// 动态路由刚注册,需要用新路由表重新匹配当前路径
|
||||
|
||||
Reference in New Issue
Block a user