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);
+}