diff --git a/react-ui/src/app.tsx b/react-ui/src/app.tsx index 07fa0094..ee86b5cd 100644 --- a/react-ui/src/app.tsx +++ b/react-ui/src/app.tsx @@ -2,7 +2,6 @@ import RightContent from '@/components/RightContent'; import type { Settings as LayoutSettings } from '@ant-design/pro-components'; import type { RunTimeLayoutConfig } from '@umijs/max'; import { history } from '@umijs/max'; -import axios from 'axios'; import defaultSettings from '../config/defaultSettings'; import '../public/fonts/font.css'; import { getAccessToken } from './access'; @@ -17,8 +16,7 @@ import { setRemoteMenu, } from './services/session'; export { requestConfig as request } from './requestConfig'; -axios.defaults.baseUrl = 'http://172.20.32.150:8082'; -const isDev = process.env.NODE_ENV === 'development'; +// const isDev = process.env.NODE_ENV === 'development'; /** * @see https://umijs.org/zh-CN/plugins/plugin-initial-state @@ -34,10 +32,9 @@ export async function getInitialState(): Promise<{ const response = await getUserInfo({ skipErrorHandler: true, }); - if (response.user.avatar === '') { - response.user.avatar = - 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'; - } + response.user.avatar = + response.user.avatar || + 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'; return { ...response.user, permissions: response.permissions, @@ -66,7 +63,7 @@ export async function getInitialState(): Promise<{ } // ProLayout 支持的api https://procomponents.ant.design/components/layout -export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => { +export const layout: RunTimeLayoutConfig = ({ initialState }) => { return { rightContentRender: () => , waterMarkProps: { @@ -155,26 +152,26 @@ export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) = }; }; -export async function onRouteChange({ clientRoutes, location }) { +export async function onRouteChange({ clientRoutes, location }: any) { const menus = getRemoteMenu(); - // console.log('onRouteChange', clientRoutes, location, menus); + console.log('onRouteChange', clientRoutes, location, menus); if (menus === null && location.pathname !== PageEnum.LOGIN) { console.log('refresh'); history.go(0); } } -// export function patchRoutes({ routes, routeComponents }) { -// console.log('patchRoutes', routes, routeComponents); -// } +export function patchRoutes({ routes, routeComponents }: any) { + console.log('patchRoutes', routes, routeComponents); +} -export async function patchClientRoutes({ routes }) { - // console.log('patchClientRoutes', routes); +export async function patchClientRoutes({ routes }: any) { + console.log('patchClientRoutes', routes); patchRouteWithRemoteMenus(routes); } export function render(oldRender: () => void) { - // console.log('render get routers', oldRender) + console.log('render get routers', oldRender); const token = getAccessToken(); if (!token || token?.length === 0) { oldRender(); diff --git a/react-ui/src/pages/Experiment/experimentText/LogList.tsx b/react-ui/src/pages/Experiment/experimentText/LogList.tsx index 57e7a7e1..053819f4 100644 --- a/react-ui/src/pages/Experiment/experimentText/LogList.tsx +++ b/react-ui/src/pages/Experiment/experimentText/LogList.tsx @@ -1,8 +1,9 @@ -import LogGroup from './logGroup'; +import { ExperimentStatus } from '../types'; +import LogGroup, { type LogGroupProps } from './logGroup'; type LogListProps = { - list: any[]; - status: string; + list: Omit[]; + status: ExperimentStatus; }; function LogList({ list = [], status }: LogListProps) { diff --git a/react-ui/src/pages/Experiment/experimentText/logGroup.tsx b/react-ui/src/pages/Experiment/experimentText/logGroup.tsx index f50114b3..523645fa 100644 --- a/react-ui/src/pages/Experiment/experimentText/logGroup.tsx +++ b/react-ui/src/pages/Experiment/experimentText/logGroup.tsx @@ -3,34 +3,35 @@ import { getExperimentPodsLog } from '@/services/experiment/index.js'; import { DoubleRightOutlined, DownOutlined, UpOutlined } from '@ant-design/icons'; import { Button } from 'antd'; import { useEffect, useState } from 'react'; +import { ExperimentStatus } from '../types'; import styles from './logGroup.less'; -type LogGroupProps = { - log_type?: string; - pod_name?: string; - log_content?: string; - start_time?: string; - status: string; +export type LogGroupProps = { + log_type: 'normal' | 'resource'; // 日志类型 + pod_name?: string; // 分布式名称 + log_content?: string; // 日志内容 + start_time?: string; // 日志开始时间 + status: ExperimentStatus; // 实验状态 }; type Log = { - start_time: string; - log_content: string; + start_time: string; // 日志开始时间 + log_content: string; // 日志内容 }; function LogGroup({ - log_type = '', + log_type = 'normal', pod_name = '', log_content = '', start_time = '', - status = '', + status = ExperimentStatus.Pending, }: LogGroupProps) { const [collapse, setCollapse] = useState(true); const [logList, setLogList, logListRef] = useStateRef([]); const [completed, setCompleted] = useState(false); useEffect(() => { - if (status === 'Running') { + if (status === ExperimentStatus.Running) { const timerId = setInterval(() => { requestExperimentPodsLog(); }, 5000); diff --git a/react-ui/src/pages/Experiment/experimentText/props.jsx b/react-ui/src/pages/Experiment/experimentText/props.jsx index 1ab54930..3c15566d 100644 --- a/react-ui/src/pages/Experiment/experimentText/props.jsx +++ b/react-ui/src/pages/Experiment/experimentText/props.jsx @@ -160,7 +160,7 @@ const Props = forwardRef(({ onParentChange }, ref) => { Object.keys(stagingItem.control_strategy) && Object.keys(stagingItem.control_strategy).length > 0 ? Object.keys(stagingItem.control_strategy).map((item) => ( - + )) @@ -178,6 +178,7 @@ const Props = forwardRef(({ onParentChange }, ref) => { Object.keys(stagingItem.in_parameters).length > 0 ? Object.keys(stagingItem.in_parameters).map((item) => ( { Object.keys(stagingItem.out_parameters).length > 0 ? Object.keys(stagingItem.out_parameters).map((item) => ( { > {resultObj && resultObj.length > 0 ? resultObj.map((item) => ( -
+
{item.name}
@@ -249,7 +251,7 @@ const Props = forwardRef(({ onParentChange }, ref) => {
{item.value && item.value.length > 0 ? item.value.map((ele) => ( -
+
{ele.name} {ele.size}
diff --git a/react-ui/src/pages/Experiment/status.ts b/react-ui/src/pages/Experiment/status.ts index 0a7b6652..fc4eb586 100644 --- a/react-ui/src/pages/Experiment/status.ts +++ b/react-ui/src/pages/Experiment/status.ts @@ -4,17 +4,6 @@ export interface StatusInfo { icon: string; } -export enum ExperimentStatus { - Running = 'Running', - Succeeded = 'Succeeded', - Pending = 'Pending', - Failed = 'Failed', - Error = 'Error', - Terminated = 'Terminated', - Skipped = 'Skipped', - Omitted = 'Omitted', -} - export const experimentStatusInfo: Record = { Running: { label: '运行中', diff --git a/react-ui/src/pages/Experiment/types.ts b/react-ui/src/pages/Experiment/types.ts index e69de29b..c90f310c 100644 --- a/react-ui/src/pages/Experiment/types.ts +++ b/react-ui/src/pages/Experiment/types.ts @@ -0,0 +1,10 @@ +export enum ExperimentStatus { + Running = 'Running', + Succeeded = 'Succeeded', + Pending = 'Pending', + Failed = 'Failed', + Error = 'Error', + Terminated = 'Terminated', + Skipped = 'Skipped', + Omitted = 'Omitted', +} diff --git a/react-ui/src/requestConfig.ts b/react-ui/src/requestConfig.ts index 13c13ac8..ca732f12 100644 --- a/react-ui/src/requestConfig.ts +++ b/react-ui/src/requestConfig.ts @@ -13,7 +13,6 @@ export const requestConfig: RequestConfig = { requestInterceptors: [ (url: any, options: { headers: any }) => { const headers = options.headers ? options.headers : []; - console.log('request ====>:', url); const authHeader = headers['Authorization']; const isToken = headers['isToken']; if (!authHeader && isToken !== false) { @@ -39,18 +38,17 @@ export const requestConfig: RequestConfig = { }, ], responseInterceptors: [ - (response: any) => - { + (response: any) => { const { status, data } = response; if (status && status >= 200 && status < 300 && data && data.code === 200) { - return response + return response; } else { if (data && data.msg) { message.error(data.msg); } else { - message.error("请求失败"); + message.error('请求失败'); } - return Promise.reject(response) + return Promise.reject(response); } }, ], diff --git a/react-ui/src/services/session.ts b/react-ui/src/services/session.ts index 89630a4a..021cf4fc 100644 --- a/react-ui/src/services/session.ts +++ b/react-ui/src/services/session.ts @@ -96,10 +96,6 @@ export async function refreshToken() { }); } -export async function getRouters(): Promise { - return request('/api/system/menu/getRouters'); -} - export function convertCompatRouters(childrens: API.RoutersMenuItem[]): any[] { return childrens.map((item: API.RoutersMenuItem) => { return { @@ -116,8 +112,9 @@ export function convertCompatRouters(childrens: API.RoutersMenuItem[]): any[] { }); } +// 获取路由列表 export async function getRoutersInfo(): Promise { - return getRouters().then((res) => { + return request('/api/system/menu/getRouters').then((res: any) => { if (res.code === 200) { return convertCompatRouters(res.data); } else { diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index e94cf4cf..9922437a 100644 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -7,7 +7,7 @@ "esModuleInterop": true, // 禁用命名空间导入(import * as fs from "fs"),并启用CJS/AMD/UMD样式的导入(import fs from "fs") "allowSyntheticDefaultImports": true, // 允许从没有默认导出的模块进行默认导入 "strict": true, // 启用所有严格类型检查选项 - "forceConsistentCasingInFileNames": true, // 不允许对同一文件的引用使用不一致的大小写 + "forceConsistentCasingInFileNames": false, // 允许对同一文件的引用使用不一致的大小写 "module": "esnext", // 指定模块代码生成 "moduleResolution": "node", // 使用Node.js样式解析模块 "isolatedModules": true, // 无条件地为未解析的文件发出导入 @@ -22,7 +22,8 @@ "noFallthroughCasesInSwitch": true, // 报告switch语句中的fallthrough案例错误 "baseUrl": "./", "paths": { - "@/*": ["src/*"] + "@/*": ["src/*"], + "@@/*": ["src/.umi/*"] } }, "include": [