import React from 'react'; import { BasicLayoutProps, Settings as LayoutSettings, MenuDataItem } from '@ant-design/pro-layout'; import { Button, notification, Result } from 'antd'; import { history } from 'umi'; import RightContent from '@/components/RightContent'; import { ResponseError } from 'umi-request'; import { queryCurrent, getMenu } from './services/user'; import defaultSettings from '../config/defaultSettings'; import { DesktopOutlined, MessageOutlined, SendOutlined, TeamOutlined, QrcodeOutlined, DatabaseOutlined, ReadOutlined, MobileOutlined, FundViewOutlined, RadarChartOutlined, BarChartOutlined, WechatOutlined, BookOutlined, FileImageOutlined, EyeOutlined, UserOutlined } from '@ant-design/icons'; import { getMyMenu, headrRouter } from '../config/routerConfig'; import { ReactComponent as LaunchSvg } from '@/assets/launch.svg' import { ReactComponent as AdLaunchSvg } from '@/assets/adLaunch.svg' import { ReactComponent as MaterialSvg } from '@/assets/material.svg' import { ReactComponent as NumberSvg } from '@/assets/number.svg' import { ReactComponent as GameSvg } from '@/assets/game.svg' import { ReactComponent as GameServerSvg } from '@/assets/gameServer.svg' import { ReactComponent as MediaSvg } from '@/assets/media.svg' import { ReactComponent as PlayerSvg } from '@/assets/player.svg' import { ReactComponent as RoleManageSvg } from '@/assets/roleManage.svg' import { ReactComponent as SystemIaa } from '@/assets/system_iaa.svg' import { ReactComponent as ManageIaa } from '@/assets/manage_iaa.svg' import { ReactComponent as TencentAaa } from '@/assets/tencent_iaa.svg' import { ReactComponent as TikTokSvg } from '@/assets/tikTok.svg' import { ReactComponent as RetainedSvg } from '@/assets/retained.svg' import { ReactComponent as TrendSvg } from '@/assets/trend.svg' import { ReactComponent as AppEveryDataSvg } from '@/assets/appEveryData.svg' import { ReactComponent as AdListSvg } from '@/assets/adList.svg' import { ReactComponent as DynamicSvg } from '@/assets/dynamic.svg' import versions from './utils/versions'; interface CurrentUser { avatar?: string; name?: string; title?: string; group?: string; signature?: string; tags?: { key: string; label: string; }[]; userId?: string; powerLevel?: number; access?: 'user' | 'guest' | 'admin' | any; unreadCount?: number; companyList?: any[], onlineCompanyId?: number } export async function getInitialState(): Promise<{ currentUser?: CurrentUser; settings?: LayoutSettings; menu?: any, loading?: boolean, collapsed?: string, onCollapse?: (onCollapse: boolean) => void, iaaApp?: string, mediaPlatform?: string }> { // 如果是登录页面,不执行 if (localStorage.getItem('Admin-Token')) { //开始版本号对比 versions() try { sessionStorage.removeItem('msg') let currentUser = {} let userInfo: any = await queryCurrent();//用户信息 let companyInfo = userInfo?.data?.companyRelationInfo?.filter((item: { companyId: number }) => item.companyId !== 4 && item.companyId !== 3) currentUser = { access: 'admin', powerLevel: userInfo?.data?.userInfo?.powerLevel, name: userInfo?.data?.userInfo?.nickname || '', userId: userInfo?.data?.userInfo?.userId, phone: userInfo?.data?.userInfo?.phone || '', companyList: companyInfo, onlineCompanyId: userInfo?.data?.onlineCompanyId }//处理个人信息 let menu: any = await getMenu().then((res: any) => {//获取菜单并处理 let { code, data } = res let newData = data if (data?.iaa?.length > 1) { data.iaa.forEach((item: any) => { if (item.path === '/iaaSystem') { newData.iaa = [item] } else if (item.path === '/iaaData') { newData.iaa_data = [item] } }) } let path = getMyMenu(code, newData) return { data: path } }); localStorage.setItem('sex', userInfo?.data?.userInfo?.sex) localStorage.setItem('userId', userInfo?.data?.userInfo?.userId) localStorage.setItem('name', userInfo?.data?.userInfo?.nickname) return { currentUser, settings: { ...defaultSettings }, loading: false, menu, collapsed: '0', onCollapse: (collapsed: boolean) => { let v = collapsed ? '1' : '0' localStorage.setItem('collapsed', v) } }; } catch (error) { console.log(111111, error) history.push('/user/login'); } } return { settings: defaultSettings, }; } // 枚举转译服务端菜单icon const IconMap = { desktop: , message: , send: , team: , database: , qrcode: , read: , mobile: , fundView: , radarChart: , barChart: , wechat: , book: , peoples: , 'file-image': , launch: , adLaunch: , material: , number: , game: , gameServer: , media: , player: , roleManage: , system_iaa: , manage_iaa: , tencent_iaa: , tikTok: , retained: , trend: , appEveryData: , adList: , dynamic: , eye: }; //处理菜单 const loopMenuItem = (menus: MenuDataItem[]): MenuDataItem[] => { let mediaPlatform = sessionStorage.getItem('mediaPlatform') let menu = menus?.map(({ icon, routes, roles, ...item }) => { let newItem = JSON.parse(JSON.stringify(item)) newItem.key = item?.path || item?.key return { ...newItem, hideInMenu: newItem.key.includes('/iaaData/') ? (mediaPlatform === 'MEDIA_PLATFORM_TENCENT' ? newItem.key.includes('/iaaData/tencentIaa') ? false : true : newItem.key.includes("/iaaData/ocenaengineIaa") ? false : true) : false,//校验隐藏菜单 icon: icon && IconMap[icon as keyof typeof IconMap], children: routes && loopMenuItem(routes), } }) return menu } export const layout = ({ initialState }: { initialState: { settings?: LayoutSettings; currentUser?: CurrentUser; menu?: any; loading: boolean, collapsed: string, onCollapse: any, mediaPlatform?: string }; }): BasicLayoutProps => { return { menu: { locale: false,//关闭国际化 params: {//token变化重新获取 mediaPlatform: initialState.mediaPlatform }, request: async () => { return loopMenuItem(initialState?.menu?.data || []) }, }, rightContentRender: () => , disableContentMargin: false, collapsed: localStorage.collapsed === '1', onCollapse: initialState.onCollapse, breakpoint: false, // footerRender: () =>