import useAuthStore from '@/stores/AuthStore' import useConversationStore from '@/stores/ConversationStore' import { useThemeContext } from '@/stores/ThemeContext' import { DownOutlined } from '@ant-design/icons' import { Avatar, Col, Dropdown, Layout, Menu, Row, Space, Typography, theme, Badge } from 'antd' import 'dayjs/locale/zh-cn' import { useEffect, useState } from 'react' import { Link, NavLink, Outlet, useHref, useNavigate } from 'react-router-dom' import '@/assets/App.css' import AppLogo from '@/assets/logo-gh.png' import 'react-chat-elements/dist/main.css' const { Header, Footer, Content } = Layout const { Title } = Typography function DesktopApp() { const navigate = useNavigate() const { colorPrimary, borderRadius } = useThemeContext() const loginUser = useAuthStore(state => state.loginUser) const href = useHref() useEffect(() => { // 除了路由 /p...以外都需要登陆系统 if ((loginUser.userId === -1) && (href.indexOf('/p/') === -1)) { navigate('/p/dingding/qrcode'); } }, [href]) const totalNotify = useConversationStore((state) => state.totalNotify); useEffect(() => { if (loginUser.userId > 0) { useConversationStore.getState().connectWebsocket(loginUser.userId); useConversationStore.getState().fetchInitialData(loginUser.userId); // userIdStr } return () => { useConversationStore.getState().disconnectWebsocket(); } }, []) useEffect(() => { Notification.requestPermission(); return () => {}; }, []) let defaultPath = '/order/follow' if (href !== '/') { const splitPath = href.split('/') if (splitPath.length > 2) { defaultPath = '/' + splitPath[1] + '/' + splitPath[2] } } const { token: { colorBgContainer }, } = theme.useToken() /** * 标签页标题闪烁 */ const [isTitleVisible, setIsTitleVisible] = useState(true); useEffect(() => { let interval; if (totalNotify > 0) { interval = setInterval(() => { document.title = isTitleVisible ? `🔔🔥💬【${totalNotify}条新消息】` : '______________'; setIsTitleVisible(!isTitleVisible); }, 500); } else { document.title = '聊天式销售平台'; } return () => clearInterval(interval); }, [totalNotify, isTitleVisible]); return (
App logo 聊天式销售平台 订单跟踪 }, { key: '/order/chat', label: 在线聊天 }, { key: '/chat/history', label: 聊天记录 }, ]} /> 个人资料, key: '1', }, { type: 'divider', }, { label: 退出, key: '3', }, ] }} trigger={['click']} > e.preventDefault()} style={{ color: colorPrimary }}> {loginUser?.username?.substring(1)}{loginUser.username}
) } export default DesktopApp