Commit 16d0cb96 authored by chenshouchao's avatar chenshouchao

feat: 详情页增加跳转数据管理页面

parent ef1dd17a
...@@ -21,8 +21,8 @@ import { IResponse } from "@/api/http"; ...@@ -21,8 +21,8 @@ import { IResponse } from "@/api/http";
import jobSue from "@/assets/project/jobSue.svg"; import jobSue from "@/assets/project/jobSue.svg";
import jobStop from "@/assets/project/jobStop.svg"; import jobStop from "@/assets/project/jobStop.svg";
import jobRun from "@/assets/project/jobRun.svg"; import jobRun from "@/assets/project/jobRun.svg";
import fullScreen from '@/assets/project/fullScreen.svg' import fullScreen from "@/assets/project/fullScreen.svg";
import partialScreen from '@/assets/project/partialScreen.svg' import partialScreen from "@/assets/project/partialScreen.svg";
import CloudEController from "@/api/fileserver/CloudEController"; import CloudEController from "@/api/fileserver/CloudEController";
import jobFail from "@/assets/project/jobFail.svg"; import jobFail from "@/assets/project/jobFail.svg";
import fileIcon from "@/assets/project/fileIcon.svg"; import fileIcon from "@/assets/project/fileIcon.svg";
...@@ -37,7 +37,6 @@ import MyPopconfirm from "@/components/mui/MyPopconfirm"; ...@@ -37,7 +37,6 @@ import MyPopconfirm from "@/components/mui/MyPopconfirm";
import styles from "./index.module.css"; import styles from "./index.module.css";
const stateMap = { const stateMap = {
RUNNING: "正在运行", RUNNING: "正在运行",
ABORTED: "运行终止", ABORTED: "运行终止",
...@@ -68,10 +67,10 @@ const ProjectSubmitWork = observer(() => { ...@@ -68,10 +67,10 @@ const ProjectSubmitWork = observer(() => {
const [randerOutputs1, setRanderOutputs] = useState<Array<any>>([]); const [randerOutputs1, setRanderOutputs] = useState<Array<any>>([]);
const location: any = useLocation(); const location: any = useLocation();
const navigate = useNavigate(); const navigate = useNavigate();
const message = useMessage() const message = useMessage();
const [fullScreenShow, setFullScreenShow] = useState<boolean>(false) const [fullScreenShow, setFullScreenShow] = useState<boolean>(false);
const {name, state, } = workFlowJobInfo || {} const { name, state } = workFlowJobInfo || {};
/** 获取模版数据 */ /** 获取模版数据 */
const { run } = useMyRequest(fetchWorkFlowJob, { const { run } = useMyRequest(fetchWorkFlowJob, {
...@@ -94,11 +93,13 @@ const ProjectSubmitWork = observer(() => { ...@@ -94,11 +93,13 @@ const ProjectSubmitWork = observer(() => {
}, },
}); });
const goToProjectData = (path: string) => { const goToProjectData = (path: string) => {
path = path.slice(13);
if (path) {
navigate(`/product/cadd/projectData`, { navigate(`/product/cadd/projectData`, {
state: { pathName: "path" }, state: { pathName: "path" },
}); });
}
}; };
const getOutouts = (outputs: any) => { const getOutouts = (outputs: any) => {
...@@ -168,7 +169,6 @@ const ProjectSubmitWork = observer(() => { ...@@ -168,7 +169,6 @@ const ProjectSubmitWork = observer(() => {
if (Array.isArray(res.data)) { if (Array.isArray(res.data)) {
res.data.forEach((item1) => { res.data.forEach((item1) => {
if (item1.name === item.path.slice(item.path.lastIndexOf("/") + 1)) { if (item1.name === item.path.slice(item.path.lastIndexOf("/") + 1)) {
console.log(9999);
randerOutputs[index].size = item1.size; randerOutputs[index].size = item1.size;
setRanderOutputs([...randerOutputs]); setRanderOutputs([...randerOutputs]);
} }
...@@ -180,22 +180,22 @@ const ProjectSubmitWork = observer(() => { ...@@ -180,22 +180,22 @@ const ProjectSubmitWork = observer(() => {
// 取消作业 // 取消作业
const { run: cancelWorkJob } = useMyRequest(cancelWorkflowJob, { const { run: cancelWorkJob } = useMyRequest(cancelWorkflowJob, {
onSuccess: (res: IResponse<boolean>) => { onSuccess: (res: IResponse<boolean>) => {
const {errorCode} = res; const { errorCode } = res;
if(errorCode === 0) { if (errorCode === 0) {
message.success('操作成功!') message.success("操作成功!");
} }
navigate(-1) navigate(-1);
}, },
}); });
// 取消作业 // 取消作业
const { run: deleteWorkJob } = useMyRequest(deleteWorkflowJob, { const { run: deleteWorkJob } = useMyRequest(deleteWorkflowJob, {
onSuccess: (res: IResponse<boolean>) => { onSuccess: (res: IResponse<boolean>) => {
const {errorCode} = res; const { errorCode } = res;
if(errorCode === 0) { if (errorCode === 0) {
message.success('操作成功!') message.success("操作成功!");
} }
navigate(-1) navigate(-1);
}, },
}); });
...@@ -241,20 +241,21 @@ const ProjectSubmitWork = observer(() => { ...@@ -241,20 +241,21 @@ const ProjectSubmitWork = observer(() => {
/** 终止任务 */ /** 终止任务 */
const onStopJob = useCallback(() => { const onStopJob = useCallback(() => {
cancelWorkJob({ cancelWorkJob({
jobid: workFlowJobInfo?.id || '' jobid: workFlowJobInfo?.id || "",
}) });
},[cancelWorkJob, workFlowJobInfo?.id]) }, [cancelWorkJob, workFlowJobInfo?.id]);
/** 删除任务 */ /** 删除任务 */
const onDeleteJob = useCallback(() => { const onDeleteJob = useCallback(() => {
deleteWorkJob({ deleteWorkJob({
id: workFlowJobInfo?.id || '' id: workFlowJobInfo?.id || "",
}) });
},[deleteWorkJob, workFlowJobInfo?.id]) }, [deleteWorkJob, workFlowJobInfo?.id]);
return ( return (
<div className={styles.swBox}> <div className={styles.swBox}>
{fullScreenShow ? null : <div className={styles.swHeader}> {fullScreenShow ? null : (
<div className={styles.swHeader}>
<div className={styles.swHeaderLeft}> <div className={styles.swHeaderLeft}>
<IconButton <IconButton
color="primary" color="primary"
...@@ -276,24 +277,28 @@ const ProjectSubmitWork = observer(() => { ...@@ -276,24 +277,28 @@ const ProjectSubmitWork = observer(() => {
</div> </div>
<div className={styles.swHeaderRight}> <div className={styles.swHeaderRight}>
<MyPopconfirm <MyPopconfirm
title={ state === "RUNNING" ? "正在运行的任务终止后将无法重新运行,确认继续吗?" : "任务被删除后将无法恢复,确认继续吗?"} title={
onConfirm={()=>{ state === "RUNNING"
state === "RUNNING" ? onStopJob() : onDeleteJob() ? "正在运行的任务终止后将无法重新运行,确认继续吗?"
: "任务被删除后将无法恢复,确认继续吗?"
}
onConfirm={() => {
state === "RUNNING" ? onStopJob() : onDeleteJob();
}} }}
> >
<ButtonComponent <ButtonComponent
text={state === "RUNNING" ? "终止" : '删除'} text={state === "RUNNING" ? "终止" : "删除"}
variant="outlined" variant="outlined"
color="secondary" color="secondary"
// click={onStopJob} // click={onStopJob}
></ButtonComponent> ></ButtonComponent>
</MyPopconfirm> </MyPopconfirm>
</div> </div>
</div>} </div>
)}
<div className={styles.swContent}> <div className={styles.swContent}>
{fullScreenShow ? null : <div className={styles.swFormBox}> {fullScreenShow ? null : (
<div className={styles.swFormBox}>
{!activePatchId && ( {!activePatchId && (
<div className={styles.taskInfo}> <div className={styles.taskInfo}>
<div className={styles.title}>任务结果</div> <div className={styles.title}>任务结果</div>
...@@ -302,14 +307,21 @@ const ProjectSubmitWork = observer(() => { ...@@ -302,14 +307,21 @@ const ProjectSubmitWork = observer(() => {
{randerOutputs1.map((item, index) => { {randerOutputs1.map((item, index) => {
return ( return (
<div key={index} className={styles.outputLi}> <div key={index} className={styles.outputLi}>
<MyPopconfirm
title="即将跳转至项目数据内该任务的结果目录,确认继续吗?"
onConfirm={() => goToProjectData(item.path)}
>
<div className={styles.outputLiLeft}> <div className={styles.outputLiLeft}>
<img <img
className={styles.outputLiLeftImg} className={styles.outputLiLeftImg}
src={item.type === "file" ? fileIcon : dataSetIcon} src={
item.type === "file" ? fileIcon : dataSetIcon
}
alt="" alt=""
/> />
{item.name} {item.name}
</div> </div>
</MyPopconfirm>
<span className={styles.outputLiRight}> <span className={styles.outputLiRight}>
{item.size} {item.size}
</span> </span>
...@@ -324,10 +336,7 @@ const ProjectSubmitWork = observer(() => { ...@@ -324,10 +336,7 @@ const ProjectSubmitWork = observer(() => {
<div className={styles.title}>任务信息</div> <div className={styles.title}>任务信息</div>
<div className={styles.taskInfoLi}> <div className={styles.taskInfoLi}>
<div className={styles.taskInfoParams}>任务名称</div> <div className={styles.taskInfoParams}>任务名称</div>
<div <div className={styles.taskInfoValue} title={name}>
className={styles.taskInfoValue}
title={name}
>
{name || "-"} {name || "-"}
</div> </div>
</div> </div>
...@@ -342,7 +351,12 @@ const ProjectSubmitWork = observer(() => { ...@@ -342,7 +351,12 @@ const ProjectSubmitWork = observer(() => {
</div> </div>
<div className={styles.taskInfoLi}> <div className={styles.taskInfoLi}>
<div className={styles.taskInfoParams}>输出路径</div> <div className={styles.taskInfoParams}>输出路径</div>
<div className={styles.taskInfoValue}> <div
className={styles.taskInfoValue}
onClick={() =>
goToProjectData(workFlowJobInfo?.outputPath as string)
}
>
{workFlowJobInfo?.outputPath || "-"} {workFlowJobInfo?.outputPath || "-"}
</div> </div>
</div> </div>
...@@ -377,9 +391,7 @@ const ProjectSubmitWork = observer(() => { ...@@ -377,9 +391,7 @@ const ProjectSubmitWork = observer(() => {
alt="" alt=""
/> />
)} )}
{state {state ? stateMap[state] : "-"}
? stateMap[state]
: "-"}
</div> </div>
</div> </div>
<div className={styles.taskInfoLi}> <div className={styles.taskInfoLi}>
...@@ -541,12 +553,21 @@ const ProjectSubmitWork = observer(() => { ...@@ -541,12 +553,21 @@ const ProjectSubmitWork = observer(() => {
)} )}
</div> </div>
)} )}
</div>} </div>
<div className={styles.swFlowBox} style={ fullScreenShow ? {height: '100vh'} : undefined}> )}
<div
className={styles.swFlowBox}
style={fullScreenShow ? { height: "100vh" } : undefined}
>
<Flow tasks={workFlowJobInfo?.tasks} onBatchClick={handleBatch} /> <Flow tasks={workFlowJobInfo?.tasks} onBatchClick={handleBatch} />
</div> </div>
</div> </div>
<img className={styles.fullScreenBox} src={fullScreenShow ? partialScreen : fullScreen } onClick={()=>setFullScreenShow(!fullScreenShow)} alt='全屏'/> <img
className={styles.fullScreenBox}
src={fullScreenShow ? partialScreen : fullScreen}
onClick={() => setFullScreenShow(!fullScreenShow)}
alt="全屏"
/>
</div> </div>
); );
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment