diff --git a/.gitignore b/.gitignore index 41d080fe..afe68414 100644 --- a/.gitignore +++ b/.gitignore @@ -65,4 +65,4 @@ mvnw /react-ui/types/tsconfig.tsbuildinfo /react-ui/storybook-static /react-ui/.storybook/scripts -/react-ui/dist.zip +/react-ui/@alita/* diff --git a/react-ui/config/config.ts b/react-ui/config/config.ts index ca78981f..2621c118 100644 --- a/react-ui/config/config.ts +++ b/react-ui/config/config.ts @@ -164,6 +164,14 @@ export default defineConfig({ master: { sandbox: true, apps: [ + { + name: 'flint-data', + entry: 'http://36.103.199.74:30009', + }, + { + name: 'flint-bml', + entry: 'http://localhost:8082', + }, { name: 'app1', entry: '//localhost:7001', diff --git a/react-ui/config/routes.ts b/react-ui/config/routes.ts index 133cbbc1..3c01a97c 100644 --- a/react-ui/config/routes.ts +++ b/react-ui/config/routes.ts @@ -607,6 +607,18 @@ export default [ }, ], }, + { + name: 'coze', + path: '/coze', + routes: [ + { + name: '智能体编排', + path: '', + key: 'coze', + component: './Coze/index', + }, + ], + }, { name: 'mixed', path: '/mixed', diff --git a/react-ui/src/app.tsx b/react-ui/src/app.tsx index 6de3d781..8069d4af 100644 --- a/react-ui/src/app.tsx +++ b/react-ui/src/app.tsx @@ -23,6 +23,7 @@ import { } from './services/session'; import './styles/menu.less'; import { isLoginPage, needAuth } from './utils'; +import { addAlpha } from './utils/color'; import { HomeUrl } from './utils/constant'; import { closeAllModals } from './utils/modal'; import { gotoHomePage } from './utils/ui'; @@ -208,14 +209,14 @@ 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)', + defaultBg: addAlpha(themes['primaryColor'], 0.06), + defaultBorderColor: addAlpha(themes['primaryColor'], 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)', + defaultHoverBg: addAlpha(themes['primaryColor'], 0.06), + defaultHoverBorderColor: addAlpha(themes['primaryColor'], 0.5), + defaultHoverColor: themes['primaryHoverColor'], + defaultActiveBg: addAlpha(themes['primaryColor'], 0.12), + defaultActiveBorderColor: addAlpha(themes['primaryColor'], 0.75), defaultActiveColor: themes['primaryColor'], contentFontSize: parseInt(themes['fontSize']), }; @@ -245,7 +246,12 @@ export const antd: RuntimeAntdConfig = (memo) => { separatorColor: 'rgba(29, 29, 32, 0.7)', }; memo.theme.components.Tree = { - directoryNodeSelectedBg: 'rgba(22, 100, 255, 0.7)', + directoryNodeSelectedBg: addAlpha(themes['primaryColor'], 0.7), + }; + memo.theme.components.Breadcrumb = { + itemColor: themes['textColorSecondary'], + separatorColor: themes['textColorSecondary'], + linkColor: themes['textColorSecondary'], }; memo.theme.cssVar = true; diff --git a/react-ui/src/components/PageContainer/index.less b/react-ui/src/components/PageContainer/index.less index 6f055f71..8ab2cdd2 100644 --- a/react-ui/src/components/PageContainer/index.less +++ b/react-ui/src/components/PageContainer/index.less @@ -1,14 +1,21 @@ .kf-page-container { + display: flex; + flex-direction: column; + width: 100%; height: 100%; &__breadcrumb { display: flex; + flex: none; align-items: center; + width: 100%; height: 70px; padding-left: 30px; } &__content { - height: calc(100% - 70px); + flex: 1; + width: 100%; + min-height: 0; } } diff --git a/react-ui/src/components/PageContainer/index.tsx b/react-ui/src/components/PageContainer/index.tsx index c8a35416..2e56582c 100644 --- a/react-ui/src/components/PageContainer/index.tsx +++ b/react-ui/src/components/PageContainer/index.tsx @@ -1,13 +1,20 @@ +import { RightOutlined } from '@ant-design/icons'; import { ProBreadcrumb } from '@ant-design/pro-components'; import React from 'react'; import './index.less'; function PageContainer({ children }: { children: React.ReactNode }) { + const { pathname } = location; + const showBreadcrumb = pathname.split('/').filter((v) => v !== '').length >= 2; + return (
-
- -
+ {showBreadcrumb && ( +
+ }> +
+ )} +
{children}
); diff --git a/react-ui/src/enums/index.ts b/react-ui/src/enums/index.ts index 1b077b81..803fad0a 100644 --- a/react-ui/src/enums/index.ts +++ b/react-ui/src/enums/index.ts @@ -174,6 +174,7 @@ export enum ComponentType { // 消息类型 export enum MessageType { + All = -1, System = 1, Mine = 2, } diff --git a/react-ui/src/global.less b/react-ui/src/global.less index c7b3c868..0c3a059d 100644 --- a/react-ui/src/global.less +++ b/react-ui/src/global.less @@ -72,7 +72,7 @@ body { background-color: #fff; } .ant-pro-global-header-logo img { - height: 21px; + height: 32px; } .ant-pro-layout .ant-layout-sider.ant-pro-sider { height: 100vh; diff --git a/react-ui/src/pages/Coze/index.tsx b/react-ui/src/pages/Coze/index.tsx new file mode 100644 index 00000000..ecdf9051 --- /dev/null +++ b/react-ui/src/pages/Coze/index.tsx @@ -0,0 +1,9 @@ +import IframePage from '@/components/IFramePage'; + +function Coze() { + return ( + + ); +} + +export default Coze; diff --git a/react-ui/src/pages/Dataset/components/ResourceVersion/index.tsx b/react-ui/src/pages/Dataset/components/ResourceVersion/index.tsx index a20c3065..98367a11 100644 --- a/react-ui/src/pages/Dataset/components/ResourceVersion/index.tsx +++ b/react-ui/src/pages/Dataset/components/ResourceVersion/index.tsx @@ -11,7 +11,8 @@ import { ResourceType, resourceConfig, } from '@/pages/Dataset/config'; -import { downLoadZip } from '@/utils/downloadfile'; +import { downLoadZip, downloadFileWithUrl } from '@/utils/downloadfile'; +import { to } from '@/utils/promise'; import tableCellRender, { TableCellValueType } from '@/utils/table'; import { Button, Flex, Table, TableProps } from 'antd'; import styles from './index.less'; @@ -41,8 +42,13 @@ function ResourceVersion({ resourceType, info }: ResourceVersionProps) { // 单个导出 const downloadAlone = async (record: ResourceFileData) => { - const url = config.downloadSingleAction; - downLoadZip(url, { url: record.url }); + const request = config.getFileUrl; + const [res] = await to(request({ url: record.url })); + if (res && res.data) { + const url = res.data; + downloadFileWithUrl(url, record.file_name); + } + // downLoadZip(url, { url: record.url }); }; const columns: TableProps['columns'] = [ diff --git a/react-ui/src/pages/Dataset/config.tsx b/react-ui/src/pages/Dataset/config.tsx index 04e9ee7b..29f38b89 100644 --- a/react-ui/src/pages/Dataset/config.tsx +++ b/react-ui/src/pages/Dataset/config.tsx @@ -11,10 +11,12 @@ import { deleteModelVersion, editDatasetVersion, editModelVersion, + getDatasetFileUrlReq, getDatasetInfo, getDatasetList, getDatasetNextVersionReq, getDatasetVersionList, + getModelFileUrlReq, getModelInfo, getModelList, getModelNextVersionReq, @@ -48,6 +50,7 @@ type ResourceTypeInfo = { compareVersion: (params: any) => Promise; // 版本对比 getNextVersion: (params: any) => Promise; // 获取下一个版本 publish: (params: any) => Promise; // 发布 + getFileUrl: (params: any) => Promise; // 获取文件地址 name: string; // 名称 typeParamKey: 'data_type' | 'model_type'; // 类型参数名称,获取资源列表接口使用 tagParamKey: 'data_tag' | 'model_tag'; // 标签参数名称,获取资源列表接口使用 @@ -80,6 +83,7 @@ export const resourceConfig: Record = { compareVersion: compareDatasetVersion, getNextVersion: getDatasetNextVersionReq, publish: publishDatasetReq, + getFileUrl: getDatasetFileUrlReq, name: '数据集', typeParamKey: 'data_type', tagParamKey: 'data_tag', @@ -121,6 +125,7 @@ export const resourceConfig: Record = { compareVersion: compareModelVersion, getNextVersion: getModelNextVersionReq, publish: publishModelReq, + getFileUrl: getModelFileUrlReq, name: '模型', typeParamKey: 'model_type', tagParamKey: 'model_tag', diff --git a/react-ui/src/pages/Message/components/Content/index.tsx b/react-ui/src/pages/Message/components/Content/index.tsx index 8b157ff9..c47ab4ce 100644 --- a/react-ui/src/pages/Message/components/Content/index.tsx +++ b/react-ui/src/pages/Message/components/Content/index.tsx @@ -113,11 +113,11 @@ function MessageContent({ }; const [res] = await to(readMessagesReq(params, skipLoading)); - // 点击消息置为已读时,不需要修改数据 + // 点击消息,置为已读时,不需要修改数据 if (!skipResult && res) { - // 如果当前是【未读】状态 + // 如果当前是【未读】状态 tab // 【一键已读】后,设置分页为第一页 - // 如果是一页的唯一数据,设置为前一页 + // 单个标记为已读,如果是一页的唯一数据,设置为前一页 if (messageStatus === MessageStatus.UnRead) { onPaginationChange({ ...pagination, @@ -127,9 +127,10 @@ function MessageContent({ : pagination.current : 1, }); + } else { + // 如果当前是【全部】 tab,直接刷新数据 + getMessages(); } - } else { - getMessages(); } }; diff --git a/react-ui/src/pages/System/Approval/index.tsx b/react-ui/src/pages/System/Approval/index.tsx index 47dcd88c..319e1245 100644 --- a/react-ui/src/pages/System/Approval/index.tsx +++ b/react-ui/src/pages/System/Approval/index.tsx @@ -62,7 +62,7 @@ function ApprovalList() { // 获取审核列表 const getApprovalList = useCallback(async () => { const params: Record = { - current: pagination.current, + pageNum: pagination.current, pageSize: pagination.pageSize, status: status, }; diff --git a/react-ui/src/services/dataset/index.js b/react-ui/src/services/dataset/index.js index ae517e77..9af0ed49 100644 --- a/react-ui/src/services/dataset/index.js +++ b/react-ui/src/services/dataset/index.js @@ -106,6 +106,14 @@ export function publishDatasetReq(data) { }); } +// 获取数据集版本单个文件下载地址 +export function getDatasetFileUrlReq(params) { + return request(`/api/mmp/newdataset/downloadSingleFile`, { + method: 'GET', + params, + }); +} + // ----------------------------模型--------------------------------- @@ -253,4 +261,12 @@ export function publishModelReq(data) { }); } +// 获取模型版本单个文件下载地址 +export function getModelFileUrlReq(params) { + return request(`/api/mmp/newmodel/downloadSingleFile`, { + method: 'GET', + params, + }); +} + diff --git a/react-ui/src/utils/downloadfile.ts b/react-ui/src/utils/downloadfile.ts index f9e8d91d..024c7db3 100644 --- a/react-ui/src/utils/downloadfile.ts +++ b/react-ui/src/utils/downloadfile.ts @@ -97,3 +97,18 @@ export function downloadCommonFile( resolveBlob(res, type, fileName); }); } + +/** + * 下载链接文件 + * @param url - url 地址 + * @param fileName - 文件名 + */ +export function downloadFileWithUrl(url: string, fileName: string) { + const aLink = document.createElement('a'); + aLink.style.display = 'none'; + aLink.href = url; + aLink.setAttribute('download', fileName); // 设置下载文件名称 + document.body.appendChild(aLink); + aLink.click(); + document.body.removeChild(aLink); +}