update web

This commit is contained in:
zhaoying
2025-12-15 15:12:49 +08:00
parent db3d3dee85
commit 9cf22bfae2
48 changed files with 726 additions and 184 deletions

View File

@@ -2,6 +2,7 @@ import { useState, useEffect, type FC } from 'react';
import { Spin, Alert, Button } from 'antd';
import { ReloadOutlined } from '@ant-design/icons';
import RbMarkdown from '../Markdown';
import { cookieUtils } from '@/utils/request'
type PreviewMode = 'office' | 'google';
@@ -156,7 +157,7 @@ const DocumentPreview: FC<DocumentPreviewProps> = ({
const response = await fetch(requestUrl, {
credentials: 'include', // 包含认证信息
headers: {
'Authorization': `Bearer ${localStorage.getItem('token') || ''}`,
'Authorization': `Bearer ${cookieUtils.get('authToken') || ''}`,
},
});

View File

@@ -6,6 +6,7 @@ interface EmptyProps {
url?: string;
size?: number | number[];
title?: string;
isNeedSubTitle?: boolean;
subTitle?: string;
className?: string;
}
@@ -13,6 +14,7 @@ const Empty: FC<EmptyProps> = ({
url,
size = 200,
title,
isNeedSubTitle = true,
subTitle,
className = '',
}) => {
@@ -20,12 +22,12 @@ const Empty: FC<EmptyProps> = ({
const width = Array.isArray(size) ? size[0] : size ? size : url ? 200 : 88;
const height = Array.isArray(size) ? size[1] : size ? size : url ? 200 : 88;
subTitle = subTitle || t('empty.tableEmpty');
const curSubTitle = isNeedSubTitle ? (subTitle || t('empty.tableEmpty')) : null;
return (
<div className={`rb:flex rb:items-center rb:justify-center rb:flex-col ${className}`}>
<img src={url || emptyIcon} alt="404" style={{ width: `${width}px`, height: `${height}px` }} />
{title && <div className="rb:mt-[8px] rb:leading-[20px]">{title}</div>}
{subTitle && <div className={`rb:mt-[${url ? 8 : 5}px] rb:leading-[16px] rb:text-[#5B6167]`}>{subTitle}</div>}
{title && <div className="rb:mt-2 rb:leading-5">{title}</div>}
{curSubTitle && <div className={`rb:mt-[${url ? 8 : 5}px] rb:leading-4 rb:text-[12px] rb:text-[#A8A9AA]`}>{subTitle}</div>}
</div>
);
}

View File

@@ -66,10 +66,30 @@ const AppHeader: FC<{source?: 'space' | 'manage';}> = ({source = 'manage'}) => {
},
];
const formatBreadcrumbNames = () => {
return breadcrumbs.map((menu, index) => ({
title: menu.i18nKey ? t(menu.i18nKey) : menu.label,
path: index === breadcrumbs.length - 1 ? undefined : menu.path
}))
return breadcrumbs.map((menu, index) => {
const item: any = {
title: menu.i18nKey ? t(menu.i18nKey) : menu.label,
};
// 如果是最后一项,不设置 path
if (index === breadcrumbs.length - 1) {
return item;
}
// 如果有自定义 onClick使用 onClick 并设置 href 为 '#' 以显示手型光标
if ((menu as any).onClick) {
item.onClick = (e: React.MouseEvent) => {
e.preventDefault();
(menu as any).onClick(e);
};
item.href = '#';
} else if (menu.path && menu.path !== '#') {
// 只有当 path 不是 '#' 时才设置 path
item.path = menu.path;
}
return item;
});
}
return (
<Header className={styles.header}>

View File

@@ -6,6 +6,7 @@ import { useNavigationBreadcrumbs } from '@/hooks/useNavigationBreadcrumbs';
import AppHeader from '@/components/Header';
import Sider from '@/components/SiderMenu'
import { useUser } from '@/store/user';
import { cookieUtils } from '@/utils/request';
const { Content } = Layout;
@@ -18,7 +19,12 @@ const AuthLayout: FC = () => {
// 自动更新面包屑导航
useNavigationBreadcrumbs('manage');
useEffect(() => {
getUserInfo()
const authToken = cookieUtils.get('authToken')
if (!authToken && !window.location.hash.includes('#/login')) {
window.location.href = `/#/login`;
} else {
getUserInfo()
}
}, []);
return (

View File

@@ -6,6 +6,7 @@ import { useNavigationBreadcrumbs } from '@/hooks/useNavigationBreadcrumbs';
import AppHeader from '@/components/Header';
import Sider from '@/components/SiderMenu';
import { useUser } from '@/store/user';
import { cookieUtils } from '@/utils/request';
const { Content } = Layout;
@@ -18,8 +19,13 @@ const AuthSpaceLayout: FC = () => {
// 自动更新面包屑导航
useNavigationBreadcrumbs('space');
useEffect(() => {
getUserInfo()
getStorageType()
const authToken = cookieUtils.get('authToken')
if (!authToken && !window.location.hash.includes('#/login')) {
window.location.href = `/#/login`;
} else {
getUserInfo()
getStorageType()
}
}, []);
return (

View File

@@ -6,6 +6,7 @@ import type { UploadProps, UploadFile } from 'antd';
import type { UploadProps as RcUploadProps } from 'antd/es/upload/interface';
import CloudUploadOutlined from '@/assets/images/CloudUploadOutlined.png'
import { useTranslation } from 'react-i18next';
import { cookieUtils } from '@/utils/request'
const { confirm } = Modal;
const { Dragger } = Upload;
@@ -219,7 +220,7 @@ const UploadFiles = forwardRef<UploadFilesRef, UploadFilesProps>(({
fileList,
beforeUpload,
headers: {
authorization: localStorage.getItem('token') || '',
authorization: cookieUtils.get('authToken') || '',
},
onRemove: handleRemove,
onChange: handleChange,

View File

@@ -5,6 +5,7 @@ import type { GetProp, UploadFile, UploadProps } from 'antd';
import type { UploadProps as RcUploadProps } from 'antd/es/upload/interface';
import { useTranslation } from 'react-i18next';
import PlusIcon from '@/assets/images/plus.svg'
import { cookieUtils } from '@/utils/request'
const { confirm } = Modal;
@@ -166,7 +167,7 @@ const UploadImages = forwardRef<UploadImagesRef, UploadImagesProps>(({
fileList,
beforeUpload,
headers: {
authorization: localStorage.getItem('token') || '',
authorization: cookieUtils.get('authToken') || '',
},
onPreview: handlePreview,
onRemove: handleRemove,