From 48ba6dbb55a34458abd1777793dda7d74405fe64 Mon Sep 17 00:00:00 2001 From: zhaowei Date: Wed, 3 Sep 2025 14:53:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E5=92=8C=E5=AE=A1=E6=A0=B8=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react-ui/config/routes.ts | 2 +- react-ui/src/app.tsx | 21 +- .../assets/img/home/model-item-bg-hover2.png | Bin 0 -> 142213 bytes .../src/components/MessageBroadcast/index.tsx | 1 + react-ui/src/enums/index.ts | 7 + .../Dataset/components/ResourceInfo/index.tsx | 21 +- react-ui/src/pages/Dataset/config.tsx | 5 + .../pages/Home/components/Model/index.less | 2 +- .../src/pages/Home/components/Model/index.tsx | 34 +- .../Home/components/ScrollReveal/index.tsx | 25 -- .../pages/Home/components/Service/index.tsx | 7 +- .../Home/components/Statistics/index.less | 1 + .../Message/components/Content/index.less | 17 +- .../Message/components/Content/index.tsx | 254 ++++++----- .../pages/Message/components/Menu/index.tsx | 6 +- react-ui/src/pages/Message/index.less | 2 +- react-ui/src/pages/Message/index.tsx | 69 ++- .../components/ApprovalModal/index.less | 9 + .../components/ApprovalModal/index.tsx | 166 +++++++ .../Approval/components/StatusCell/index.less | 15 + .../Approval/components/StatusCell/index.tsx | 36 ++ react-ui/src/pages/System/Approval/index.tsx | 415 ++++-------------- react-ui/src/pages/System/Role/index.tsx | 2 +- react-ui/src/pages/System/User/index.tsx | 2 +- react-ui/src/services/dataset/index.js | 17 + react-ui/src/services/message/index.ts | 36 +- 26 files changed, 669 insertions(+), 503 deletions(-) create mode 100644 react-ui/src/assets/img/home/model-item-bg-hover2.png delete mode 100644 react-ui/src/pages/Home/components/ScrollReveal/index.tsx create mode 100644 react-ui/src/pages/System/Approval/components/ApprovalModal/index.less create mode 100644 react-ui/src/pages/System/Approval/components/ApprovalModal/index.tsx create mode 100644 react-ui/src/pages/System/Approval/components/StatusCell/index.less create mode 100644 react-ui/src/pages/System/Approval/components/StatusCell/index.tsx diff --git a/react-ui/config/routes.ts b/react-ui/config/routes.ts index d1f7c046..133cbbc1 100644 --- a/react-ui/config/routes.ts +++ b/react-ui/config/routes.ts @@ -589,7 +589,7 @@ export default [ ], }, { - name: '审核', + name: '审核管理', path: 'approval', component: './System/Approval', }, diff --git a/react-ui/src/app.tsx b/react-ui/src/app.tsx index 0f0777ca..779ee3b3 100644 --- a/react-ui/src/app.tsx +++ b/react-ui/src/app.tsx @@ -192,6 +192,9 @@ export const antd: RuntimeAntdConfig = (memo) => { colorPrimary: themes['primaryColor'], colorPrimaryHover: themes['primaryHoverColor'], colorPrimaryActive: themes['primaryActiveColor'], + colorPrimaryText: themes['primaryColor'], + colorPrimaryTextHover: themes['primaryHoverColor'], + colorPrimaryTextActive: themes['primaryActiveColor'], // colorPrimaryBg: 'rgba(81, 76, 249, 0.07)', colorSuccess: themes['successColor'], colorError: themes['errorColor'], @@ -204,15 +207,15 @@ export const antd: RuntimeAntdConfig = (memo) => { memo.theme.components ??= {}; memo.theme.components.Tabs = {}; memo.theme.components.Button = { - // defaultBg: 'rgba(22, 100, 255, 0.06)', - // defaultBorderColor: 'rgba(22, 100, 255, 0.11)', - // defaultColor: themes['textColor'], - // defaultHoverBg: 'rgba(22, 100, 255, 0.06)', - // defaultHoverBorderColor: 'rgba(22, 100, 255, 0.5)', - // defaultHoverColor: '#3F7FFF', - // defaultActiveBg: 'rgba(22, 100, 255, 0.12)', - // defaultActiveBorderColor: 'rgba(22, 100, 255, 0.75)', - // defaultActiveColor: themes['primaryColor'], + defaultBg: 'rgba(22, 100, 255, 0.06)', + defaultBorderColor: 'rgba(22, 100, 255, 0.11)', + defaultColor: themes['textColor'], + defaultHoverBg: 'rgba(22, 100, 255, 0.06)', + defaultHoverBorderColor: 'rgba(22, 100, 255, 0.5)', + defaultHoverColor: '#3F7FFF', + defaultActiveBg: 'rgba(22, 100, 255, 0.12)', + defaultActiveBorderColor: 'rgba(22, 100, 255, 0.75)', + defaultActiveColor: themes['primaryColor'], contentFontSize: parseInt(themes['fontSize']), }; memo.theme.components.Input = { diff --git a/react-ui/src/assets/img/home/model-item-bg-hover2.png b/react-ui/src/assets/img/home/model-item-bg-hover2.png new file mode 100644 index 0000000000000000000000000000000000000000..70f482279d8cb47cae42ad06716710f13647682a GIT binary patch literal 142213 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 }3 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 literal 0 HcmV?d00001 diff --git a/react-ui/src/components/MessageBroadcast/index.tsx b/react-ui/src/components/MessageBroadcast/index.tsx index 72b6b884..71d03d53 100644 --- a/react-ui/src/components/MessageBroadcast/index.tsx +++ b/react-ui/src/components/MessageBroadcast/index.tsx @@ -13,6 +13,7 @@ function MessageBroadcast() { const navigate = useNavigate(); const getMessageCount = useCallback(async () => { + if (!userId) return; const params: Record = { receiver: userId, type: -1, diff --git a/react-ui/src/enums/index.ts b/react-ui/src/enums/index.ts index 5f522c50..f016b4f8 100644 --- a/react-ui/src/enums/index.ts +++ b/react-ui/src/enums/index.ts @@ -184,3 +184,10 @@ export enum MessageStatus { UnRead = 1, Readed = 2, } + +// 审核状态 +export enum ApprovalStatus { + Pending = 0, + Agree = 1, + Reject = 2, +} diff --git a/react-ui/src/pages/Dataset/components/ResourceInfo/index.tsx b/react-ui/src/pages/Dataset/components/ResourceInfo/index.tsx index 544d040a..774fb30d 100644 --- a/react-ui/src/pages/Dataset/components/ResourceInfo/index.tsx +++ b/react-ui/src/pages/Dataset/components/ResourceInfo/index.tsx @@ -64,7 +64,7 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => { // 获取详情 const getResourceDetail = useCallback( - async (version: string | undefined) => { + async (version?: string) => { const params = { id: resourceId, owner, @@ -223,6 +223,21 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => { } }; + // 处理发布 + const handlePublish = async () => { + const request = config.publish; + const params = { + id: resourceId, + owner, + name, + identifier, + }; + const [res] = await to(request(params)); + if (res) { + message.success('操作成功'); + } + }; + const items = [ { key: ResourceInfoTabKeys.Introduction, @@ -282,6 +297,7 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => { {(info[tagPropertyName] as string) || '--'} )} +
{ /> {info.praises_count}
+ {version ? ( diff --git a/react-ui/src/pages/Dataset/config.tsx b/react-ui/src/pages/Dataset/config.tsx index 2f43bda5..04e9ee7b 100644 --- a/react-ui/src/pages/Dataset/config.tsx +++ b/react-ui/src/pages/Dataset/config.tsx @@ -19,6 +19,8 @@ import { getModelList, getModelNextVersionReq, getModelVersionList, + publishDatasetReq, + publishModelReq, } from '@/services/dataset/index.js'; import { limitUploadFileType } from '@/utils/ui'; import type { TabsProps, UploadFile } from 'antd'; @@ -45,6 +47,7 @@ type ResourceTypeInfo = { getInfo: (params: any) => Promise; // 获取详情 compareVersion: (params: any) => Promise; // 版本对比 getNextVersion: (params: any) => Promise; // 获取下一个版本 + publish: (params: any) => Promise; // 发布 name: string; // 名称 typeParamKey: 'data_type' | 'model_type'; // 类型参数名称,获取资源列表接口使用 tagParamKey: 'data_tag' | 'model_tag'; // 标签参数名称,获取资源列表接口使用 @@ -76,6 +79,7 @@ export const resourceConfig: Record = { getInfo: getDatasetInfo, compareVersion: compareDatasetVersion, getNextVersion: getDatasetNextVersionReq, + publish: publishDatasetReq, name: '数据集', typeParamKey: 'data_type', tagParamKey: 'data_tag', @@ -116,6 +120,7 @@ export const resourceConfig: Record = { getInfo: getModelInfo, compareVersion: compareModelVersion, getNextVersion: getModelNextVersionReq, + publish: publishModelReq, name: '模型', typeParamKey: 'model_type', tagParamKey: 'model_tag', diff --git a/react-ui/src/pages/Home/components/Model/index.less b/react-ui/src/pages/Home/components/Model/index.less index 7f3898ef..bf2e8ba4 100644 --- a/react-ui/src/pages/Home/components/Model/index.less +++ b/react-ui/src/pages/Home/components/Model/index.less @@ -30,7 +30,7 @@ &:hover { color: white; - .backgroundFullImage(url(@/assets/img/home/model-item-bg-hover.png)); + .backgroundFullImage(url(@/assets/img/home/model-item-bg-hover2.png)); } &__hot { diff --git a/react-ui/src/pages/Home/components/Model/index.tsx b/react-ui/src/pages/Home/components/Model/index.tsx index abea0841..1d7c8c6a 100644 --- a/react-ui/src/pages/Home/components/Model/index.tsx +++ b/react-ui/src/pages/Home/components/Model/index.tsx @@ -3,34 +3,42 @@ import { getPublicModelsReq } from '@/services/home'; import { to } from '@/utils/promise'; import { gotoPageIfLogin } from '@/utils/ui'; import { Divider, Flex } from 'antd'; -import { motion, type Variants } from 'motion/react'; +import { motion, useMotionValueEvent, useScroll, type Variants } from 'motion/react'; import { useEffect, useState } from 'react'; import BlockTitle from '../BlockTitle'; import styles from './index.less'; const modelVariants: Variants = { - offscreen: { - y: 0, - opacity: 1, + offscreen: (down: boolean) => ({ + y: 100, + opacity: 0, transition: { ease: 'linear', - duration: 0.3, + duration: 0.5, }, - }, + }), onscreen: { - y: [0, 200, 0], - opacity: [0, 0, 1], + y: 0, + opacity: 1, transition: { ease: 'easeOut', - duration: 0.3, - times: [0, 0, 1], - delay: 0.5, + duration: 0.5, + // times: [0, 0, 1], }, }, }; function ModelBlock() { const [modelData, setModelData] = useState([]); + const [isDowning, setIsDowning] = useState(true); + const { scrollYProgress } = useScroll(); + useMotionValueEvent(scrollYProgress, 'change', (value) => { + setIsDowning((scrollYProgress.getPrevious() ?? 0) - value < 0); + }); + + useEffect(() => { + console.log(isDowning); + }, [isDowning]); useEffect(() => { const getPublicModels = async () => { @@ -56,11 +64,11 @@ function ModelBlock() { return ( { gotoPageIfLogin( `/dataset/model/info/${item.id}?name=${item.name}&owner=${item.owner}&identifier=${item.identifier}&is_public=${item.is_public}`, diff --git a/react-ui/src/pages/Home/components/ScrollReveal/index.tsx b/react-ui/src/pages/Home/components/ScrollReveal/index.tsx deleted file mode 100644 index a043234e..00000000 --- a/react-ui/src/pages/Home/components/ScrollReveal/index.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { motion, useInView, Variants } from 'motion/react'; -import { ReactNode, useRef } from 'react'; - -type ScrollRevealProps = { - children: ReactNode; - variants: Variants; -}; - -function ScrollReveal({ children, variants }: ScrollRevealProps) { - const ref = useRef(null); - const isInView = useInView(ref, { amount: 'all' }); - - return ( - - {children} - - ); -} - -export default ScrollReveal; diff --git a/react-ui/src/pages/Home/components/Service/index.tsx b/react-ui/src/pages/Home/components/Service/index.tsx index 2f28a5f0..828d0635 100644 --- a/react-ui/src/pages/Home/components/Service/index.tsx +++ b/react-ui/src/pages/Home/components/Service/index.tsx @@ -15,22 +15,21 @@ import styles from './index.less'; const serviceVariants: Variants = { offscreen: { - y: -100, + y: -200, opacity: 0, transition: { ease: 'linear', duration: 0, }, }, - onscreen: (index: number) => ({ + onscreen: { y: 0, opacity: 1, transition: { type: 'spring', duration: 1, - delay: index * 0.3, }, - }), + }, }; function ServiceBlock() { diff --git a/react-ui/src/pages/Home/components/Statistics/index.less b/react-ui/src/pages/Home/components/Statistics/index.less index 848e713d..8c6b3369 100644 --- a/react-ui/src/pages/Home/components/Statistics/index.less +++ b/react-ui/src/pages/Home/components/Statistics/index.less @@ -9,6 +9,7 @@ &__item { display: flex; align-items: center; + width: 9rem; &__icon { width: 3.75rem; diff --git a/react-ui/src/pages/Message/components/Content/index.less b/react-ui/src/pages/Message/components/Content/index.less index 7f35d759..b99e753f 100644 --- a/react-ui/src/pages/Message/components/Content/index.less +++ b/react-ui/src/pages/Message/components/Content/index.less @@ -8,6 +8,7 @@ &__tabs { display: flex; + flex: none; align-items: center; height: 76px; padding: 0 30px; @@ -21,6 +22,14 @@ &--selected, &:hover { color: @text-color; + font-weight: 500; + } + } + + :global { + .ant-btn:first-of-type { + margin-right: 10px; + margin-left: auto; } } } @@ -40,9 +49,7 @@ } &__list { - display: flex; flex: 1; - flex-direction: column; width: 100%; overflow-y: auto; @@ -73,8 +80,14 @@ } } + &__content { + flex: 1; + margin-right: 10px; + } + &__time { display: block; + flex: none; margin-left: auto; color: @text-color-secondary; } diff --git a/react-ui/src/pages/Message/components/Content/index.tsx b/react-ui/src/pages/Message/components/Content/index.tsx index df52fcc8..8b157ff9 100644 --- a/react-ui/src/pages/Message/components/Content/index.tsx +++ b/react-ui/src/pages/Message/components/Content/index.tsx @@ -1,89 +1,49 @@ +import KFButton from '@/components/KFButton'; import KFEmpty, { EmptyType } from '@/components/KFEmpty'; import { MessageStatus, MessageType } from '@/enums'; +import { useCacheState } from '@/hooks/useCacheState'; import { useCheck } from '@/hooks/useCheck'; +import { Message, MessageResponse } from '@/pages/Message'; import { deleteMessagesReq, getMessageListReq, readMessagesReq } from '@/services/message'; import { ago } from '@/utils/date'; import { to } from '@/utils/promise'; import { modalConfirm } from '@/utils/ui'; -import { useModel } from '@umijs/max'; +import { useModel, useNavigate } from '@umijs/max'; import { Button, Checkbox, Pagination, PaginationProps, - type TablePaginationConfig, Typography, + message, + type TablePaginationConfig, } from 'antd'; import classNames from 'classnames'; import { useCallback, useEffect, useMemo, useState } from 'react'; import styles from './index.less'; -// { -// "id": 673396, -// "status": 1, -// "content": "陈志航 已加入项目 复杂智能软件系统研究/模型训练项目UI设计", -// "notification_url": "https://www.gitlink.org.cn/ci4s/UIdesign", -// "source": "ProjectMemberJoined", -// "created_at": "2025-08-06 08:54:54", -// "time_ago": "23天前", -// "type": "notification" -// } - -// receiver:消息接收者ID (必传) -// status:值未-1时,获取全部信息;值为1时,只获取未读消息;值为2时,获取已读消息 -// type:值为-1时,获取全部信息;值为1时,获取系统消息;值为2时,获取@我消息 -// sources:消息来源 -// page:页码:值为-1时(默认值),不开启分页; -// size:页大小页码,默认20 - -// 统计数量的接口 -// receiver:消息接收者ID (必传) -// type:值为-1时,获取全部信息;值为1时,获取系统消息;值为2时,获取@我消息 - -// 消息列表接口返回类型 -export interface MessageResponse { - receiver: number; - type: MessageType; - unread_total: number; - unread_notification: number; - unread_atme: number; - records: Message[]; - records_count: number; - page_num: number; - total_page_count: number; - page_size: number; -} - -// 消息数据 -export interface Message { - id: number; - sender: number; - receiver: number; - content: string; - status: MessageStatus; - type: MessageType; - source: string; - extra: string; - notification_url: string; - created_at: Date; -} - export type MessageContentProps = { messageType: MessageType; + messageStatus: MessageStatus; + pagination: TablePaginationConfig; + onStatusChange: (status: MessageStatus) => void; + onPaginationChange: (pagination: TablePaginationConfig) => void; }; -function MessageContent({ messageType }: MessageContentProps) { +function MessageContent({ + messageType, + messageStatus, + pagination, + onStatusChange, + onPaginationChange, +}: MessageContentProps) { const { initialState } = useModel('@@initialState'); const { currentUser } = initialState || {}; const { userId } = currentUser || {}; - const [pagination, setPagination] = useState({ - current: 1, - pageSize: 20, - }); + const setCacheState = useCacheState()[1]; const [messages, setMessages] = useState(undefined); const [allTotal, setAllTotal] = useState(0); const [unreadTotal, setUnreadTotal] = useState(undefined); - const [messageStatus, setMessageStatus] = useState(MessageStatus.UnRead); const [isDelete, setIsDelete] = useState(false); const messageIds = useMemo(() => messages?.map((v) => v.id), [messages]); const [ @@ -95,6 +55,7 @@ function MessageContent({ messageType }: MessageContentProps) { isSingleMessagesChecked, checkSingleMessages, ] = useCheck(messageIds ?? []); + const navigate = useNavigate(); const tabs = useMemo( () => [ @@ -112,11 +73,13 @@ function MessageContent({ messageType }: MessageContentProps) { ); const getMessages = useCallback(async () => { + if (!userId) return; + const params: Record = { receiver: userId, status: messageStatus, type: messageType, - page: pagination.current! - 1, + page: pagination.current, size: pagination.pageSize, }; const [res] = await to(getMessageListReq(params)); @@ -129,25 +92,71 @@ function MessageContent({ messageType }: MessageContentProps) { } }, [pagination, userId, messageStatus, messageType]); - // 标记已读 - const readMessages = async (ids?: number[]) => { - const params: Record = { - ids: ids, - }; - const [res] = await to(readMessagesReq(params)); - if (res && res.data) { + // 标记为已读 + const readMessages = async ( + message?: Message, + skipLoading: boolean = false, + skipResult: boolean = false, + ) => { + const params: Record = message + ? { + notificationIds: message.id, + status: MessageStatus.Readed, + receiver: message.receiver, + type: message.type, + } + : { + notificationIds: -1, + status: MessageStatus.Readed, + receiver: userId, + type: messageType, + }; + const [res] = await to(readMessagesReq(params, skipLoading)); + + // 点击消息置为已读时,不需要修改数据 + if (!skipResult && res) { + // 如果当前是【未读】状态 + // 【一键已读】后,设置分页为第一页 + // 如果是一页的唯一数据,设置为前一页 + if (messageStatus === MessageStatus.UnRead) { + onPaginationChange({ + ...pagination, + current: message + ? messages?.length === 1 + ? Math.max(1, pagination.current! - 1) + : pagination.current + : 1, + }); + } + } else { getMessages(); } }; // 删除 - const deleteMessages = async (ids?: number[]) => { + const deleteMessages = async (ids: number[]) => { + if (ids.length <= 0) { + message.error('请选择要删除的消息'); + return; + } + const params: Record = { - ids: ids, + notificationIds: ids.join(','), + receiver: userId, + type: messageType, }; const [res] = await to(deleteMessagesReq(params)); - if (res && res.data) { - getMessages(); + if (res) { + cancelBatchDelete(); + // 如果是一页的唯一数据,删除后,请求前一页的数据 + // 否则直接刷新这一页的数据 + onPaginationChange({ + ...pagination, + current: + ids.length === messages?.length + ? Math.max(1, pagination.current! - 1) + : pagination.current, + }); } }; @@ -161,25 +170,46 @@ function MessageContent({ messageType }: MessageContentProps) { getMessages(); }, [getMessages]); + // 重置批量删除状态、分页 useEffect(() => { cancelBatchDelete(); }, [messageType, messageStatus, cancelBatchDelete]); // 批量删除 const handleBatchDelete = () => { + if (selectedMessages.length <= 0) { + message.error('请选择要删除的消息'); + return; + } + modalConfirm({ title: '删除后,消息不可恢复', content: '是否确认删除?', onOk: () => { - setIsDelete(false); - setSelectedMessages([]); + deleteMessages(selectedMessages); }, }); }; + // 点击消息 + const hanldeMessageClick = (message: Message) => { + if (message.status === MessageStatus.UnRead) { + readMessages(message, true, true); + } + + if (message.notification_url) { + navigate(message.notification_url); + setCacheState({ + messageType, + pagination, + messageStatus, + }); + } + }; + // 分页切换 const handlePageChange: PaginationProps['onChange'] = (page, pageSize) => { - setPagination({ + onPaginationChange({ current: page, pageSize: pageSize, }); @@ -195,52 +225,34 @@ function MessageContent({ messageType }: MessageContentProps) { [styles['message-content__tabs__item--selected']]: item.status === messageStatus, })} onClick={() => { - setMessageStatus(item.status); + onStatusChange(item.status); }} > - {item.title + (item.total ? `(${item.total})` : '')} + {item.title + (item.total !== undefined ? `(${item.total})` : '')} ))} {isDelete ? ( <> - - + ) : ( <> {messageType === MessageType.Mine && allTotal > 0 && ( - + + )} + {allTotal > 0 && ( + readMessages()}> + 一键已读 + )} - )} @@ -269,15 +281,19 @@ function MessageContent({ messageType }: MessageContentProps) { <>
{messages.map((message) => ( -
+
hanldeMessageClick(message)} + > {messageType === MessageType.Mine && isDelete && ( { - e.stopPropagation(); + onChange={() => { checkSingleMessages(message.id); }} + onClick={(e) => e.stopPropagation()} > )} {messageStatus === MessageStatus.All && ( @@ -292,9 +308,13 @@ function MessageContent({ messageType }: MessageContentProps) { {message.status === MessageStatus.UnRead ? '未读' : '已读'}
)} - - {message.content} + /g, '') }} + > + +
{ago(message.created_at)}
@@ -302,16 +322,22 @@ function MessageContent({ messageType }: MessageContentProps) { )} {messageType === MessageType.Mine && ( @@ -336,8 +362,8 @@ function MessageContent({ messageType }: MessageContentProps) { className={styles['message-content__empty']} type={EmptyType.NoData} title="暂无数据" - content={'很抱歉,没有搜索到您想要的内容\n建议刷新试试'} - hasFooter={true} + content={`没有${messageStatus === MessageStatus.UnRead ? '未读' : ''}消息`} + hasFooter onButtonClick={getMessages} /> )} diff --git a/react-ui/src/pages/Message/components/Menu/index.tsx b/react-ui/src/pages/Message/components/Menu/index.tsx index 351c1873..3f5b0513 100644 --- a/react-ui/src/pages/Message/components/Menu/index.tsx +++ b/react-ui/src/pages/Message/components/Menu/index.tsx @@ -23,10 +23,10 @@ const menus = [ export type MessageMenuProps = { messageType: MessageType; - onChange: (type: MessageType) => void; + onTypeChange: (type: MessageType) => void; }; -function MessageMenu({ messageType: currentType, onChange }: MessageMenuProps) { +function MessageMenu({ messageType: currentType, onTypeChange }: MessageMenuProps) { return (
消息列表
@@ -36,7 +36,7 @@ function MessageMenu({ messageType: currentType, onChange }: MessageMenuProps) { className={classNames(styles['message-menu__item'], { [styles['message-menu__item--selected']]: item.type === currentType, })} - onClick={() => onChange(item.type)} + onClick={() => onTypeChange(item.type)} > diff --git a/react-ui/src/pages/Message/index.less b/react-ui/src/pages/Message/index.less index c8232486..745c538c 100644 --- a/react-ui/src/pages/Message/index.less +++ b/react-ui/src/pages/Message/index.less @@ -3,6 +3,6 @@ flex-direction: row; gap: 0 20px; height: 100%; - padding: 75px 260px 30px; + padding: 30px 60px 30px; .backgroundFullImage(url(@/assets/img/message/message-bg.png)); } diff --git a/react-ui/src/pages/Message/index.tsx b/react-ui/src/pages/Message/index.tsx index 10bcdcf3..aba242cd 100644 --- a/react-ui/src/pages/Message/index.tsx +++ b/react-ui/src/pages/Message/index.tsx @@ -1,18 +1,79 @@ -import { MessageType } from '@/enums'; +import { MessageStatus, MessageType } from '@/enums'; +import { useCacheState } from '@/hooks/useCacheState'; +import { type TablePaginationConfig } from 'antd'; import { useState } from 'react'; import MessageContent from './components/Content'; import MessageMenu from './components/Menu'; import styles from './index.less'; +// 消息列表接口返回类型 +export interface MessageResponse { + receiver: number; + type: MessageType; + unread_total: number; + unread_notification: number; + unread_atme: number; + records: Message[]; + records_count: number; + page_num: number; + total_page_count: number; + page_size: number; +} + +// 消息数据 +export interface Message { + id: number; + sender: number; + receiver: number; + content: string; + status: MessageStatus; + type: MessageType; + source: string; + extra: string; + notification_url: string; + created_at: Date; +} + function MessagePage() { - const [messageType, setMessageType] = useState(MessageType.System); + const [cacheState] = useCacheState(); + const [messageType, setMessageType] = useState(cacheState?.messageType ?? MessageType.System); + const [pagination, setPagination] = useState( + cacheState?.pagination ?? { + current: 1, + pageSize: 20, + }, + ); + const [messageStatus, setMessageStatus] = useState( + cacheState?.messageStatus ?? MessageStatus.UnRead, + ); + + // 重置页面为第一页 + const resetToFirstPage = () => { + setPagination((prev) => ({ + ...prev, + current: 1, + })); + }; + return (
setMessageType(type)} + onTypeChange={(type) => { + setMessageType(type); + resetToFirstPage(); + }} messageType={messageType} > - + { + setMessageStatus(status); + resetToFirstPage(); + }} + pagination={pagination} + onPaginationChange={setPagination} + >
); } diff --git a/react-ui/src/pages/System/Approval/components/ApprovalModal/index.less b/react-ui/src/pages/System/Approval/components/ApprovalModal/index.less new file mode 100644 index 00000000..1494eb96 --- /dev/null +++ b/react-ui/src/pages/System/Approval/components/ApprovalModal/index.less @@ -0,0 +1,9 @@ +.approval-info { + margin-bottom: 20px; + + &__item { + display: flex; + align-items: center; + margin-bottom: 10px; + } +} diff --git a/react-ui/src/pages/System/Approval/components/ApprovalModal/index.tsx b/react-ui/src/pages/System/Approval/components/ApprovalModal/index.tsx new file mode 100644 index 00000000..6e629a90 --- /dev/null +++ b/react-ui/src/pages/System/Approval/components/ApprovalModal/index.tsx @@ -0,0 +1,166 @@ +import BasicInfo from '@/components/BasicInfo'; +import KFModal from '@/components/KFModal'; +import SubAreaTitle from '@/components/SubAreaTitle'; +import { ApprovalData, ApprovalType } from '@/pages/System/Approval'; +import { agreeApprovalReq, rejectApprovalReq } from '@/services/message'; +import { parseJsonText } from '@/utils'; +import { to } from '@/utils/promise'; +import { modalConfirm } from '@/utils/ui'; +import { Button, Form, Input, message, type ModalProps } from 'antd'; + +interface ApprovalModalProps extends Omit { + record: ApprovalData; + onOk: () => void; +} + +function ApprovalModal({ record, onOk, ...rest }: ApprovalModalProps) { + const [form] = Form.useForm(); + const content = parseJsonText(record.content); + const recordTypeName = record.type === ApprovalType.Dataset ? '数据集' : '模型'; + + const items = + record.type === ApprovalType.Dataset + ? [ + { + label: '数据集名称', + value: content.name, + }, + { + label: '数据集分类', + value: content.dataType, + }, + { + label: '研究方向', + value: content.dataTag, + }, + { + label: '数据集描述', + value: content.description, + }, + ] + : [ + { + label: '模型名称', + value: content.name, + }, + { + label: '模型框架', + value: content.model_type, + }, + { + label: '模型能力', + value: content.model_tag, + }, + { + label: '模型描述', + value: content.description, + }, + ]; + + // 审批通过 + const agreeApproval = async (remark?: string) => { + const [res] = await to( + agreeApprovalReq({ + id: record.id, + result: remark, + }), + ); + if (res) { + onOk?.(); + } + }; + + // 审批拒绝 + const rejectApproval = async (remark: string) => { + const [res] = await to( + rejectApprovalReq({ + id: record.id, + result: remark, + }), + ); + if (res) { + onOk?.(); + } + }; + + const handleAgree = () => { + const remark = form.getFieldValue('remark') as string | undefined; + const remarkTrim = remark?.trim(); + modalConfirm({ + isDelete: false, + title: `审批通过后,将发布该${recordTypeName}`, + content: '是否确认通过?', + onOk: () => { + agreeApproval(remarkTrim); + }, + }); + }; + + const handleReject = () => { + const remark = form.getFieldValue('remark') as string | undefined; + const remarkTrim = remark?.trim(); + if (!remarkTrim) { + message.error('请输入审批意见'); + return; + } + + modalConfirm({ + isDelete: false, + title: `审批拒绝后,将不发布该${recordTypeName}`, + content: '是否确认拒绝?', + onOk: () => { + rejectApproval(remarkTrim); + }, + }); + }; + + return ( + + 审批通过 + , + , + ]} + > + + +
+ + + +
+
+ ); +} + +export default ApprovalModal; diff --git a/react-ui/src/pages/System/Approval/components/StatusCell/index.less b/react-ui/src/pages/System/Approval/components/StatusCell/index.less new file mode 100644 index 00000000..17a5e5ef --- /dev/null +++ b/react-ui/src/pages/System/Approval/components/StatusCell/index.less @@ -0,0 +1,15 @@ +.status-cell { + color: @text-color; + + &--agree { + color: @success-color; + } + + &--reject { + color: @error-color; + } + + &--pending { + color: @text-color; + } +} diff --git a/react-ui/src/pages/System/Approval/components/StatusCell/index.tsx b/react-ui/src/pages/System/Approval/components/StatusCell/index.tsx new file mode 100644 index 00000000..23adf66e --- /dev/null +++ b/react-ui/src/pages/System/Approval/components/StatusCell/index.tsx @@ -0,0 +1,36 @@ +/* + * @Author: 赵伟 + * @Date: 2024-04-18 18:35:41 + * @Description: 编辑器状态组件 + */ +import { ApprovalStatus } from '@/enums'; +import styles from './index.less'; + +export type DevEditorStatusInfo = { + text: string; + classname: string; +}; + +export const statusInfo: Record = { + [ApprovalStatus.Pending]: { + classname: styles['status-cell--pending'], + text: '待审核', + }, + [ApprovalStatus.Agree]: { + classname: styles['status-cell--agree'], + text: '通过', + }, + [ApprovalStatus.Reject]: { + classname: styles['status-cell--reject'], + text: '已拒绝', + }, +}; + +function StatusCell(status?: ApprovalStatus | null) { + if (status === null || status === undefined || !statusInfo[status]) { + return --; + } + return {statusInfo[status].text}; +} + +export default StatusCell; diff --git a/react-ui/src/pages/System/Approval/index.tsx b/react-ui/src/pages/System/Approval/index.tsx index 20a874e4..5691d65a 100644 --- a/react-ui/src/pages/System/Approval/index.tsx +++ b/react-ui/src/pages/System/Approval/index.tsx @@ -4,217 +4,82 @@ * @Description: 开发环境列表 */ -import { CodeConfigData } from '@/components/CodeSelectorModal'; -import KFIcon from '@/components/KFIcon'; -import { DevEditorStatus } from '@/enums'; -import { useCacheState } from '@/hooks/useCacheState'; -import { useSystemResource } from '@/hooks/useComputingResource'; -import { DatasetData, ModelData } from '@/pages/Dataset/config'; -import { - deleteEditorReq, - getEditorListReq, - startEditorReq, - stopEditorReq, -} from '@/services/developmentEnvironment'; -import themes from '@/styles/theme.less'; -import { parseJsonText } from '@/utils'; -import { formatCodeConfig, formatDataset, formatModel } from '@/utils/format'; +import { ApprovalStatus } from '@/enums'; +import { getApprovalListReq } from '@/services/message'; +import { openAntdModal } from '@/utils/modal'; import { to } from '@/utils/promise'; -import SessionStorage from '@/utils/sessionStorage'; import tableCellRender, { TableCellValueType } from '@/utils/table'; -import { modalConfirm } from '@/utils/ui'; -import { useNavigate } from '@umijs/max'; -import { - App, - Button, - ConfigProvider, - Table, - type TablePaginationConfig, - type TableProps, -} from 'antd'; +import { Button, Table, Typography, type TablePaginationConfig, type TableProps } from 'antd'; import classNames from 'classnames'; -import { useCallback, useState } from 'react'; -// import CreateMirrorModal from '../components/CreateMirrorModal'; -// import EditorStatusCell from '../components/EditorStatusCell'; +import { useCallback, useEffect, useState } from 'react'; +import ApprovalModal from './components/ApprovalModal'; +import StatusCell from './components/StatusCell'; import styles from './index.less'; -export type EditorData = { +export interface ApprovalData { id: number; - name: string; - status: string; - computing_resource: string; - update_by: string; - create_time: string; + status: number; + result: null; + content: string; + applicant_id: number; + applicant_name: null; + applicant_time: Date; + approver_id: number; + approver_time: Date; + title: string; + type: ApprovalType; url: string; - computing_resource_id: number; - dataset?: string | DatasetData; - model?: string | ModelData; - image?: string; - code_config?: string | CodeConfigData; -}; +} + +export enum ApprovalType { + Dataset = 'DATASET', + Model = 'MODEL', +} + +const approvalTypeOptions = [ + { label: '数据集', value: ApprovalType.Dataset }, + { label: '模型', value: ApprovalType.Model }, +]; function ApprovalList() { - const navigate = useNavigate(); - const [cacheState, setCacheState] = useCacheState(); - const { message } = App.useApp(); - const [tableData, setTableData] = useState([]); + const [tableData, setTableData] = useState([]); const [total, setTotal] = useState(0); - const [pagination, setPagination] = useState( - cacheState?.pagination ?? { - current: 1, - pageSize: 10, - }, - ); - const getResourceDescription = useSystemResource(); + const [pagination, setPagination] = useState({ + current: 1, + pageSize: 10, + }); - // 获取编辑器列表 - const getEditorList = useCallback(async () => { + // 获取审核列表 + const getApprovalList = useCallback(async () => { const params: Record = { - page: pagination.current! - 1, - size: pagination.pageSize, + current: pagination.current, + pageSize: pagination.pageSize, }; - const [res] = await to(getEditorListReq(params)); - if (res && res.data) { - const { content = [], totalElements = 0 } = res.data; - content.forEach((item: EditorData) => { - item.dataset = typeof item.dataset === 'string' ? parseJsonText(item.dataset) : null; - item.model = typeof item.model === 'string' ? parseJsonText(item.model) : null; - item.image = typeof item.image === 'string' ? parseJsonText(item.image) : null; - item.code_config = - typeof item.code_config === 'string' ? parseJsonText(item.code_config) : null; - }); - setTableData(content); - setTotal(totalElements); - } - }, [pagination]); - - // useEffect(() => { - // getEditorList(); - // }, [getEditorList]); - - // 删除编辑器 - const deleteEditor = async (id: number) => { - const [res] = await to(deleteEditorReq(id)); + const [res] = await to(getApprovalListReq(params)); if (res) { - message.success('删除成功'); - // 如果是一页的唯一数据,删除后,请求第一页的数据 - // 否则直接刷新这一页的数据 - setPagination((prev) => { - return { - ...prev, - current: tableData.length === 1 ? Math.max(1, prev.current! - 1) : prev.current, - }; - }); + const { rows = [], total = 0 } = res; + setTableData(rows); + setTotal(total); } - }; - - // 启动编辑器 - const startEditor = async (id: number) => { - const [res] = await to(startEditorReq(id)); - if (res) { - message.success('操作成功'); - getEditorList(); - } - }; - - // 停止编辑器 - const stopEditor = async (id: number) => { - modalConfirm({ - title: '停止后,该编辑器将不可使用', - content: '是否确认停止?', - isDelete: false, - onOk: async () => { - const [res] = await to(stopEditorReq(id)); - if (res) { - message.success('操作成功'); - getEditorList(); - } - }, - }); - }; + }, [pagination]); - // 制作镜像 - // const createMirror = (id: number) => { - // const { close } = openAntdModal(CreateMirrorModal, { - // envId: id, - // onOk: () => { - // close(); - // }, - // }); - // }; + useEffect(() => { + getApprovalList(); + }, [getApprovalList]); - // 处理删除 - const handleEditorDelete = (record: EditorData) => { - modalConfirm({ - title: '删除后,该编辑器将不可恢复', - content: '是否确认删除?', + // 审核 + const approval = (record: ApprovalData) => { + const { close } = openAntdModal(ApprovalModal, { + record: record, onOk: () => { - deleteEditor(record.id); + close(); + getApprovalList(); }, }); }; - // 创建编辑器 - const createEditor = () => { - navigate(`/developmentEnvironment/create`); - setCacheState({ - pagination, - }); - }; - - // 跳转编辑器页面 - const gotoEditorPage = (record: EditorData, e: React.MouseEvent) => { - e.stopPropagation(); - - setCacheState({ - pagination, - }); - - SessionStorage.setItem(SessionStorage.editorUrlKey, record.url); - navigate(`/developmentEnvironment/editor`); - }; - - // 去数据集 - const gotoDataset = (record: EditorData, e: React.MouseEvent) => { - e.stopPropagation(); - - const dataset = record.dataset as DatasetData; - const link = formatDataset(dataset)?.link; - if (link) { - setCacheState({ - pagination, - }); - navigate(link); - } - }; - - // 去模型 - const gotoModel = (record: EditorData, e: React.MouseEvent) => { - e.stopPropagation(); - - const model = record.model as ModelData; - const link = formatModel(model)?.link; - if (link) { - setCacheState({ - pagination, - }); - navigate(link); - } - }; - - // 打开代码配置仓库 - const gotoCodeConfig = (record: EditorData, e: React.MouseEvent) => { - e.stopPropagation(); - - const codeConfig = record.code_config as CodeConfigData; - const url = formatCodeConfig(codeConfig)?.url; - if (url) { - window.open(url, '_blank'); - } - }; - // 分页切换 - const handleTableChange: TableProps['onChange'] = ( + const handleTableChange: TableProps['onChange'] = ( pagination, _filters, _sorter, @@ -225,147 +90,69 @@ function ApprovalList() { } }; - const columns: TableProps['columns'] = [ - { - title: '编辑器名称', - dataIndex: 'name', - key: 'name', - width: '12%', - render: (text, record, index) => - record.url && record.status === DevEditorStatus.Running - ? tableCellRender(true, TableCellValueType.Link, { - onClick: gotoEditorPage, - })(text, record, index) - : tableCellRender(true, TableCellValueType.Text)(text, record, index), - }, + const columns: TableProps['columns'] = [ { - title: '计算资源', - dataIndex: 'computing_resource', - key: 'computing_resource', - width: '11%', - render: tableCellRender(), - }, - { - title: '资源规格', - dataIndex: 'computing_resource_id', - key: 'computing_resource_id', - width: '11%', - render: tableCellRender(true, TableCellValueType.Custom, { - format: getResourceDescription, - }), - }, - { - title: '数据集', - dataIndex: ['dataset', 'showValue'], - key: 'dataset', - width: '11%', - render: tableCellRender(true, TableCellValueType.Link, { - onClick: gotoDataset, - }), + title: '内容', + dataIndex: 'title', + key: 'title', + render: (title) => ( + /g, '') }} + > + + + ), }, { - title: '模型', - dataIndex: ['model', 'showValue'], - key: 'model', - width: '11%', - render: tableCellRender(true, TableCellValueType.Link, { - onClick: gotoModel, + title: '类型', + dataIndex: 'type', + key: 'type', + width: 100, + render: tableCellRender(true, TableCellValueType.Enum, { + options: approvalTypeOptions, }), }, { - title: '代码配置', - dataIndex: ['code_config', 'showValue'], - key: 'code_config', - width: '11%', - render: tableCellRender(true, TableCellValueType.Link, { - onClick: gotoCodeConfig, - }), + title: '申请者', + dataIndex: 'applicant_name', + key: 'applicant_name', + width: 180, + render: tableCellRender(true), }, { - title: '镜像', - dataIndex: ['image', 'showValue'], - key: 'image', - width: '11%', - render: tableCellRender(true), + title: '申请时间', + dataIndex: 'applicant_time', + key: 'applicant_time', + width: 180, + render: tableCellRender(true, TableCellValueType.Date), }, { - title: '创建者', - dataIndex: 'update_by', - key: 'update_by', - width: '11%', + title: '审核意见', + dataIndex: 'result', + key: 'result', + width: 200, render: tableCellRender(true), }, { - title: '创建时间', - dataIndex: 'create_time', - key: 'create_time', - width: '11%', - render: tableCellRender(true, TableCellValueType.Date), + title: '状态', + dataIndex: 'status', + key: 'status', + width: 100, + render: StatusCell, }, - // { - // title: '状态', - // dataIndex: 'status', - // key: 'status', - // width: 100, - // render: EditorStatusCell, - // }, { title: '操作', dataIndex: 'operation', - width: 270, + width: 150, key: 'operation', - render: (_: any, record: EditorData) => ( + render: (_: any, record: ApprovalData) => (
- {record.status === DevEditorStatus.Pending || - record.status === DevEditorStatus.Running ? ( - - ) : ( - - )} - {/* {record.status !== DevEditorStatus.Running ? ( - - ) : null} */} - - - + ) : null}
), }, @@ -374,15 +161,7 @@ function ApprovalList() { return (
-
审核
- +
审核管理
{ { title: , dataIndex: 'option', - width: '220px', + width: '240px', valueType: 'option', render: (_, record) => [