Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
bkunyun
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
bkunyun
Commits
878c252d
Commit
878c252d
authored
Sep 20, 2022
by
chenshouchao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 任务结果优化
parent
ea4a70a1
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
367 additions
and
199 deletions
+367
-199
taskResultsDatasetIcon.svg
src/assets/project/taskResultsDatasetIcon.svg
+22
-0
taskResultsDownloadHoverIcon.svg
src/assets/project/taskResultsDownloadHoverIcon.svg
+15
-0
taskResultsDownloadIcon.svg
src/assets/project/taskResultsDownloadIcon.svg
+15
-0
taskResultsFileIcon.svg
src/assets/project/taskResultsFileIcon.svg
+28
-0
taskResultsSeeHoverIcon.svg
src/assets/project/taskResultsSeeHoverIcon.svg
+19
-0
taskResultsSeeIcon.svg
src/assets/project/taskResultsSeeIcon.svg
+19
-0
index.tsx
src/views/Project/ProjectJobDetail/TaskInfo/index.tsx
+195
-0
index.module.css
src/views/Project/ProjectJobDetail/index.module.css
+41
-5
index.tsx
src/views/Project/ProjectJobDetail/index.tsx
+12
-193
interface.ts
src/views/Project/ProjectSubmitWork/interface.ts
+1
-1
No files found.
src/assets/project/taskResultsDatasetIcon.svg
0 → 100644
View file @
878c252d
<?xml version="1.0" encoding="UTF-8"?>
<svg
width=
"40px"
height=
"40px"
viewBox=
"0 0 40 40"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
<title>
编组 13备份
</title>
<defs>
<linearGradient
x1=
"50%"
y1=
"-4.26048086e-13%"
x2=
"50%"
y2=
"100%"
id=
"linearGradient-1"
>
<stop
stop-color=
"#26AAF9"
offset=
"0%"
></stop>
<stop
stop-color=
"#1370FF"
offset=
"100%"
></stop>
</linearGradient>
</defs>
<g
id=
"上线UI"
stroke=
"none"
stroke-width=
"1"
fill=
"none"
fill-rule=
"evenodd"
>
<g
id=
"编组-13备份"
>
<rect
id=
"矩形"
fill=
"url(#linearGradient-1)"
x=
"0"
y=
"0"
width=
"40"
height=
"40"
rx=
"4"
></rect>
<g
id=
"编组-4备份-4"
transform=
"translate(9.000000, 9.000000)"
>
<g
id=
"矩形-2"
>
<rect
id=
"矩形"
x=
"0"
y=
"0"
width=
"22"
height=
"22"
></rect>
</g>
<path
d=
"M18.14,3 L3.86,3 C3.385,3 3,3.3852 3,3.86 L3,6.54 C3,7.015 3.385,7.4 3.86,7.4 L18.14,7.4 C18.615,7.4 19,7.015 19,6.54 L19,3.86 C19,3.3852 18.615,3 18.14,3 Z M17.28,5.68 L9.28,5.68 C9.298916,5.6446 9.30956773,5.6036 9.30956773,5.56 L9.30956773,4.84 C9.30956773,4.7964 9.298916,4.7554 9.28,4.72 L17.28,4.72 L17.28,5.68 Z M18.14,8.8 L3.86,8.8 C3.385,8.8 3,9.1852 3,9.66 L3,12.34 C3,12.815 3.385,13.2 3.86,13.2 L18.14,13.2 C18.615,13.2 19,12.815 19,12.34 L19,9.66 C19,9.1852 18.615,8.8 18.14,8.8 Z M17.28,11.48 L9.28,11.48 C9.298916,11.4446 9.30956773,11.4036 9.30956773,11.36 L9.30956773,10.64 C9.30956773,10.5964 9.298916,10.5554 9.28,10.52 L17.28,10.52 L17.28,11.48 Z M18.14,14.6 L3.86,14.6 C3.385,14.6 3,14.9852 3,15.46 L3,18.14 C3,18.615 3.385,19 3.86,19 L18.14,19 C18.615,19 19,18.615 19,18.14 L19,15.46 C19,14.9852 18.615,14.6 18.14,14.6 Z M17.28,17.28 L9.28,17.28 C9.298916,17.2446 9.30956773,17.2036 9.30956773,17.16 L9.30956773,16.44 C9.30956773,16.3964 9.298916,16.3554 9.28,16.32 L17.28,16.32 L17.28,17.28 Z"
id=
"形状"
fill=
"#FFFFFF"
fill-rule=
"nonzero"
></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file
src/assets/project/taskResultsDownloadHoverIcon.svg
0 → 100644
View file @
878c252d
<?xml version="1.0" encoding="UTF-8"?>
<svg
width=
"16px"
height=
"16px"
viewBox=
"0 0 16 16"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
<title>
编组 22备份
</title>
<g
id=
"上线UI"
stroke=
"none"
stroke-width=
"1"
fill=
"none"
fill-rule=
"evenodd"
>
<g
id=
"编组-22备份"
>
<rect
id=
"矩形"
x=
"0"
y=
"0"
width=
"16"
height=
"16"
></rect>
<g
id=
"编组-57"
transform=
"translate(1.500000, 0.500000)"
stroke=
"#565C66"
stroke-linejoin=
"round"
stroke-width=
"1.5"
>
<polyline
id=
"路径"
points=
"2.61444632e-13 10.5038375 0 14 13 14 13 10.5"
></polyline>
<polyline
id=
"路径"
points=
"11 6 6.5 10.5 2 6"
></polyline>
<line
x1=
"6.49585"
y1=
"0"
x2=
"6.5"
y2=
"10"
id=
"路径"
></line>
</g>
</g>
</g>
</svg>
\ No newline at end of file
src/assets/project/taskResultsDownloadIcon.svg
0 → 100644
View file @
878c252d
<?xml version="1.0" encoding="UTF-8"?>
<svg
width=
"16px"
height=
"16px"
viewBox=
"0 0 16 16"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
<title>
编组 22备份
</title>
<g
id=
"上线UI"
stroke=
"none"
stroke-width=
"1"
fill=
"none"
fill-rule=
"evenodd"
>
<g
id=
"编组-22备份"
>
<rect
id=
"矩形"
x=
"0"
y=
"0"
width=
"16"
height=
"16"
></rect>
<g
id=
"编组-57"
transform=
"translate(1.500000, 0.500000)"
stroke=
"#8A9099"
stroke-linejoin=
"round"
stroke-width=
"1.5"
>
<polyline
id=
"路径"
points=
"2.61444632e-13 10.5038375 0 14 13 14 13 10.5"
></polyline>
<polyline
id=
"路径"
points=
"11 6 6.5 10.5 2 6"
></polyline>
<line
x1=
"6.49585"
y1=
"0"
x2=
"6.5"
y2=
"10"
id=
"路径"
></line>
</g>
</g>
</g>
</svg>
\ No newline at end of file
src/assets/project/taskResultsFileIcon.svg
0 → 100644
View file @
878c252d
<?xml version="1.0" encoding="UTF-8"?>
<svg
width=
"40px"
height=
"40px"
viewBox=
"0 0 40 40"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
<title>
编组 7备份 3
</title>
<defs>
<linearGradient
x1=
"50%"
y1=
"-4.26048086e-13%"
x2=
"50%"
y2=
"100%"
id=
"linearGradient-1"
>
<stop
stop-color=
"#75EBCB"
offset=
"0%"
></stop>
<stop
stop-color=
"#0DD09B"
offset=
"100%"
></stop>
</linearGradient>
</defs>
<g
id=
"上线UI"
stroke=
"none"
stroke-width=
"1"
fill=
"none"
fill-rule=
"evenodd"
>
<g
id=
"编组-7备份-3"
>
<rect
id=
"矩形备份"
fill=
"url(#linearGradient-1)"
x=
"0"
y=
"0"
width=
"40"
height=
"40"
rx=
"4"
></rect>
<g
id=
"编组-7备份-14"
transform=
"translate(9.000000, 9.000000)"
>
<rect
id=
"矩形"
x=
"0"
y=
"0"
width=
"22"
height=
"22"
></rect>
<g
id=
"编组-6"
transform=
"translate(3.928571, 2.357143)"
>
<path
d=
"M1.2,0 L9.49020093,0 L9.49020093,0 L14.1428571,4.65265622 L14.1428571,16.0857143 C14.1428571,16.748456 13.6055988,17.2857143 12.9428571,17.2857143 L1.2,17.2857143 C0.5372583,17.2857143 -3.6292676e-16,16.748456 0,16.0857143 L0,1.2 C-8.11624501e-17,0.5372583 0.5372583,-3.22345535e-16 1.2,0 Z"
id=
"矩形"
fill=
"#FFFFFF"
></path>
<g
id=
"编组-4"
transform=
"translate(3.535714, 7.142857)"
stroke=
"#0DD09B"
stroke-width=
"1.2"
>
<line
x1=
"7.85086282e-15"
y1=
"6.39285714"
x2=
"7.07142857"
y2=
"6.39285714"
id=
"路径-15备份-2"
></line>
<line
x1=
"7.85086282e-15"
y1=
"3.39285714"
x2=
"7.07142857"
y2=
"3.39285714"
id=
"路径-15备份-3"
></line>
<line
x1=
"7.85086282e-15"
y1=
"0.392857143"
x2=
"7.07142857"
y2=
"0.392857143"
id=
"路径-15备份-4"
></line>
</g>
<path
d=
"M9.49020093,0 L14.1428571,4.65265622 L10.6902009,4.65265622 C10.0274592,4.65265622 9.49020093,4.11539792 9.49020093,3.45265622 L9.49020093,0 L9.49020093,0 Z"
id=
"路径-9"
fill=
"#9AF8E5"
></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
src/assets/project/taskResultsSeeHoverIcon.svg
0 → 100644
View file @
878c252d
<?xml version="1.0" encoding="UTF-8"?>
<svg
width=
"17px"
height=
"16px"
viewBox=
"0 0 17 16"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
<title>
1.Base基础/Icon图标/查看备份
</title>
<g
id=
"上线UI"
stroke=
"none"
stroke-width=
"1"
fill=
"none"
fill-rule=
"evenodd"
>
<g
id=
"1.Base基础/Icon图标/查看备份"
>
<rect
id=
"矩形"
x=
"0"
y=
"0"
width=
"16"
height=
"16"
></rect>
<g
id=
"编组-58"
transform=
"translate(0.500000, 1.488632)"
stroke=
"#565C66"
stroke-width=
"1.62830815"
>
<g
id=
"编组"
>
<line
x1=
"0"
y1=
"0.5"
x2=
"12.4755135"
y2=
"0.5"
id=
"路径"
></line>
<line
x1=
"0"
y1=
"6.18590274"
x2=
"4.99389897"
y2=
"6.18590274"
id=
"路径"
></line>
<line
x1=
"0"
y1=
"11.8718055"
x2=
"5.66782353"
y2=
"11.8718055"
id=
"路径"
></line>
<line
x1=
"13.0860211"
y1=
"10.7189929"
x2=
"15.2967853"
y2=
"13.4172047"
id=
"路径"
></line>
<path
d=
"M10.6064141,3.72994425 C11.6910045,3.72994425 12.6717682,4.15682942 13.3821406,4.84341174 C14.1027218,5.53986092 14.5458693,6.50270675 14.5458693,7.56473415 C14.5458693,8.62676155 14.1027218,9.58960738 13.3821406,10.2860566 C12.6717682,10.9726389 11.6910045,11.3995241 10.6064141,11.3995241 C9.52182361,11.3995241 8.54105997,10.9726389 7.83068751,10.2860566 C7.11010631,9.58960738 6.66695888,8.62676155 6.66695888,7.56473415 C6.66695888,6.50270675 7.11010631,5.53986092 7.83068751,4.84341174 C8.54105997,4.15682942 9.52182361,3.72994425 10.6064141,3.72994425 Z"
id=
"路径"
></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
src/assets/project/taskResultsSeeIcon.svg
0 → 100644
View file @
878c252d
<?xml version="1.0" encoding="UTF-8"?>
<svg
width=
"17px"
height=
"15px"
viewBox=
"0 0 17 15"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
<title>
1.Base基础/Icon图标/查看备份
</title>
<g
id=
"上线UI"
stroke=
"none"
stroke-width=
"1"
fill=
"none"
fill-rule=
"evenodd"
>
<g
id=
"1.Base基础/Icon图标/查看备份"
transform=
"translate(0.000000, -1.000000)"
>
<rect
id=
"矩形"
x=
"0"
y=
"0"
width=
"16"
height=
"16"
></rect>
<g
id=
"编组-58"
transform=
"translate(0.500000, 1.488632)"
stroke=
"#8A9099"
stroke-width=
"1.62830815"
>
<g
id=
"编组"
>
<line
x1=
"0"
y1=
"0.5"
x2=
"12.4755135"
y2=
"0.5"
id=
"路径"
></line>
<line
x1=
"0"
y1=
"6.18590274"
x2=
"4.99389897"
y2=
"6.18590274"
id=
"路径"
></line>
<line
x1=
"0"
y1=
"11.8718055"
x2=
"5.66782353"
y2=
"11.8718055"
id=
"路径"
></line>
<line
x1=
"13.0860211"
y1=
"10.7189929"
x2=
"15.2967853"
y2=
"13.4172047"
id=
"路径"
></line>
<path
d=
"M10.6064141,3.72994425 C11.6910045,3.72994425 12.6717682,4.15682942 13.3821406,4.84341174 C14.1027218,5.53986092 14.5458693,6.50270675 14.5458693,7.56473415 C14.5458693,8.62676155 14.1027218,9.58960738 13.3821406,10.2860566 C12.6717682,10.9726389 11.6910045,11.3995241 10.6064141,11.3995241 C9.52182361,11.3995241 8.54105997,10.9726389 7.83068751,10.2860566 C7.11010631,9.58960738 6.66695888,8.62676155 6.66695888,7.56473415 C6.66695888,6.50270675 7.11010631,5.53986092 7.83068751,4.84341174 C8.54105997,4.15682942 9.52182361,3.72994425 10.6064141,3.72994425 Z"
id=
"路径"
></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
src/views/Project/ProjectJobDetail/TaskInfo/index.tsx
0 → 100644
View file @
878c252d
import
styles
from
"../index.module.css"
;
import
{
ITaskInfo
}
from
"../../ProjectSubmitWork/interface"
;
import
jobSue
from
"@/assets/project/jobSue.svg"
;
import
jobStop
from
"@/assets/project/jobStop.svg"
;
import
jobRun
from
"@/assets/project/jobRun.svg"
;
import
jobFail
from
"@/assets/project/jobFail.svg"
;
import
taskResultsFileIcon
from
"@/assets/project/taskResultsFileIcon.svg"
;
import
taskResultsDatasetIcon
from
"@/assets/project/taskResultsDatasetIcon.svg"
;
import
{
IState
}
from
"../../ProjectSubmitWork/interface"
;
import
classNames
from
"classnames"
;
type
ITaskInfoProps
=
{
workFlowJobInfo
:
ITaskInfo
;
randerOutputs1
:
Array
<
any
>
;
handleDownLoadOutput
:
any
;
handleShowPopper
:
any
;
setGoToProjectDataPath
:
any
;
setShowLogView
:
any
;
state
:
IState
|
undefined
;
name
:
any
;
};
const
stateMap
=
{
SUBMITTED
:
"正在启动"
,
RUNNING
:
"正在运行"
,
ABORTED
:
"运行终止"
,
FAILED
:
"运行失败"
,
SUCCEEDED
:
"运行成功"
,
};
const
TaskInfo
=
(
props
:
ITaskInfoProps
)
=>
{
const
{
workFlowJobInfo
,
randerOutputs1
,
handleDownLoadOutput
,
handleShowPopper
,
setGoToProjectDataPath
,
setShowLogView
,
state
,
name
,
}
=
props
;
return
(
<
div
className=
{
styles
.
taskInfo
}
>
<
div
className=
{
styles
.
title
}
>
任务结果
<
span
className=
{
styles
.
taskResultsNum
}
>
{
randerOutputs1
.
length
}
</
span
>
</
div
>
{
workFlowJobInfo
?.
outputs
&&
Object
.
keys
(
workFlowJobInfo
?.
outputs
).
length
>
0
&&
(
<
div
className=
{
styles
.
taskResults
}
>
{
randerOutputs1
.
map
((
item
,
index
)
=>
{
return
(
<
div
key=
{
index
}
className=
{
styles
.
outputLi
}
>
<
div
className=
{
styles
.
outputLiLeft
}
>
<
img
className=
{
styles
.
outputLiLeftImg
}
src=
{
item
.
type
===
"file"
?
taskResultsFileIcon
:
taskResultsDatasetIcon
}
alt=
""
/>
<
div
className=
{
styles
.
outputLiLeftContent
}
>
<
div
className=
{
styles
.
outputItemName
}
>
{
item
.
name
}
</
div
>
<
div
className=
{
styles
.
outputLiSize
}
>
{
item
.
size
}
</
div
>
</
div
>
</
div
>
<
div
onClick=
{
(
e
:
any
)
=>
{
handleDownLoadOutput
(
item
);
}
}
className=
{
classNames
({
[
styles
.
outputLiRight
]:
true
,
[
styles
.
seeDataset
]:
item
.
type
!==
"file"
,
[
styles
.
downloadFile
]:
item
.
type
===
"file"
,
})
}
></
div
>
</
div
>
);
})
}
</
div
>
)
}
{
(
!
workFlowJobInfo
?.
outputs
||
Object
.
keys
(
workFlowJobInfo
?.
outputs
).
length
===
0
)
&&
(
<
div
className=
{
styles
.
notResults
}
>
暂无结果文件
</
div
>
)
}
<
div
className=
{
styles
.
title
}
>
任务信息
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
任务名称
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
title=
{
name
}
>
{
name
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
任务ID
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
title=
{
workFlowJobInfo
?.
id
}
>
{
workFlowJobInfo
?.
id
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
输出路径
</
div
>
<
div
className=
{
classNames
({
[
styles
.
taskInfoValue
]:
true
,
[
styles
.
taskInfoValueClick
]:
true
,
})
}
onClick=
{
(
e
:
any
)
=>
{
handleShowPopper
(
e
,
"即将跳转至项目数据内该任务的输出路径,确认继续吗?"
,
"bottom"
);
setGoToProjectDataPath
(
workFlowJobInfo
?.
outputPath
as
string
);
}
}
>
{
workFlowJobInfo
?.
outputPath
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
运行状态
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
state
===
"SUCCEEDED"
&&
(
<
img
className=
{
styles
.
taskInfoValueIcon
}
src=
{
jobSue
}
alt=
""
/>
)
}
{
[
"SUBMITTED"
,
"RUNNING"
].
includes
(
state
||
""
)
&&
(
<
img
className=
{
styles
.
taskInfoValueIcon
}
src=
{
jobRun
}
alt=
""
/>
)
}
{
state
===
"ABORTED"
&&
(
<
img
className=
{
styles
.
taskInfoValueIcon
}
src=
{
jobStop
}
alt=
""
/>
)
}
{
state
===
"FAILED"
&&
(
<
img
className=
{
styles
.
taskInfoValueIcon
}
src=
{
jobFail
}
alt=
""
/>
)
}
{
state
?
stateMap
[
state
]
:
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
源模板
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
specTitle
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
源模板版本
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
specVersion
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
花费(元)
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
jobCost
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
创建人
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
creator
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
创建时间
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
createTime
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
运行时间
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
costTime
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
日志文件
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
logPath
&&
(
<>
<
span
className=
{
styles
.
taskInfoDownload
}
onClick=
{
()
=>
setShowLogView
(
true
)
}
>
查看
</
span
>
</>
)
}
{
!
workFlowJobInfo
?.
logPath
&&
"-"
}
</
div
>
</
div
>
</
div
>
);
};
export
default
TaskInfo
;
src/views/Project/ProjectJobDetail/index.module.css
View file @
878c252d
...
@@ -70,8 +70,14 @@
...
@@ -70,8 +70,14 @@
font-weight
:
600
;
font-weight
:
600
;
margin-bottom
:
16px
;
margin-bottom
:
16px
;
}
}
.taskResultsNum
{
color
:
rgba
(
19
,
112
,
255
,
1
);
line-height
:
24px
;
font-size
:
16px
;
margin-left
:
8px
;
}
.taskResults
{
.taskResults
{
padding
:
2
4
px
;
padding
:
2
3px
20
px
;
background-color
:
rgba
(
247
,
248
,
250
,
1
);
background-color
:
rgba
(
247
,
248
,
250
,
1
);
margin-bottom
:
24px
;
margin-bottom
:
24px
;
}
}
...
@@ -79,7 +85,10 @@
...
@@ -79,7 +85,10 @@
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
align-items
:
center
;
align-items
:
center
;
margin
:
6px
0
;
margin-bottom
:
26px
;
}
.outputLi
:last-child
{
margin-bottom
:
0
;
}
}
.outputLiLeft
{
.outputLiLeft
{
cursor
:
pointer
;
cursor
:
pointer
;
...
@@ -94,13 +103,40 @@
...
@@ -94,13 +103,40 @@
display
:
block
;
display
:
block
;
overflow
:
hidden
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
text-overflow
:
ellipsis
;
line-height
:
22px
;
font-size
:
14px
;
font-weight
:
600
;
color
:
rgba
(
30
,
38
,
51
,
1
);
margin-bottom
:
4px
;
}
.outputLiSize
{
line-height
:
20px
;
font-size
:
12px
;
color
:
rgba
(
138
,
144
,
153
,
1
);
}
}
.outputLiLeftImg
{
.outputLiLeftImg
{
margin-right
:
12px
;
margin-right
:
16px
;
width
:
40px
;
height
:
40px
;
}
}
.outputLiRight
{
.outputLiRight
{
color
:
rgba
(
138
,
144
,
153
,
1
);
cursor
:
pointer
;
font-size
:
12px
;
}
.seeDataset
{
width
:
17px
;
height
:
15px
;
background-image
:
url(../../../assets/project/taskResultsSeeIcon.svg)
;
}
.seeDataset
:hover
{
background-image
:
url(../../../assets/project/taskResultsSeeHoverIcon.svg)
;
}
.downloadFile
{
width
:
16px
;
height
:
16px
;
background-image
:
url(../../../assets/project/taskResultsDownloadIcon.svg)
;
}
.downloadFile
:hover
{
background-image
:
url(../../../assets/project/taskResultsDownloadHoverIcon.svg)
;
}
}
.notResults
{
.notResults
{
background-color
:
rgba
(
247
,
248
,
250
,
1
);
background-color
:
rgba
(
247
,
248
,
250
,
1
);
...
...
src/views/Project/ProjectJobDetail/index.tsx
View file @
878c252d
...
@@ -13,6 +13,7 @@ import classNames from "classnames";
...
@@ -13,6 +13,7 @@ import classNames from "classnames";
import
{
useLocation
,
useNavigate
}
from
"react-router-dom"
;
import
{
useLocation
,
useNavigate
}
from
"react-router-dom"
;
import
MyButton
from
"@/components/mui/MyButton"
;
import
MyButton
from
"@/components/mui/MyButton"
;
import
TaskInfo
from
"./TaskInfo"
;
import
useMyRequest
from
"@/hooks/useMyRequest"
;
import
useMyRequest
from
"@/hooks/useMyRequest"
;
import
{
import
{
fetchWorkFlowJob
,
fetchWorkFlowJob
,
...
@@ -21,15 +22,12 @@ import {
...
@@ -21,15 +22,12 @@ import {
}
from
"@/api/project_api"
;
}
from
"@/api/project_api"
;
import
{
IResponse
}
from
"@/api/http"
;
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
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
goback
from
"@/assets/project/goback.svg"
;
import
goback
from
"@/assets/project/goback.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
dataSetIcon
from
"@/assets/project/dataSetIcon.svg"
;
import
{
useStores
}
from
"@/store"
;
import
{
useStores
}
from
"@/store"
;
import
{
ITaskInfo
}
from
"../ProjectSubmitWork/interface"
;
import
{
ITaskInfo
}
from
"../ProjectSubmitWork/interface"
;
import
Flow
from
"../components/Flow"
;
import
Flow
from
"../components/Flow"
;
...
@@ -51,14 +49,6 @@ import MyTooltip from "@/components/mui/MyTooltip";
...
@@ -51,14 +49,6 @@ import MyTooltip from "@/components/mui/MyTooltip";
import
styles
from
"./index.module.css"
;
import
styles
from
"./index.module.css"
;
const
stateMap
=
{
SUBMITTED
:
"正在启动"
,
RUNNING
:
"正在运行"
,
ABORTED
:
"运行终止"
,
FAILED
:
"运行失败"
,
SUCCEEDED
:
"运行成功"
,
};
const
statusMap
=
{
const
statusMap
=
{
Done
:
"运行完成"
,
Done
:
"运行完成"
,
Running
:
"正在运行"
,
Running
:
"正在运行"
,
...
@@ -207,15 +197,6 @@ const ProjectSubmitWork = observer(() => {
...
@@ -207,15 +197,6 @@ const ProjectSubmitWork = observer(() => {
}
}
};
};
// 通过文件路径获取文件所在文件夹路径 如 输入 /ProjectData/task_a.out 输出/ProjectData/
// const getFolderPath = (path: string) => {
// const lastIndex = path.lastIndexOf("/");
// if (lastIndex !== -1) {
// path = path.slice(0, lastIndex);
// }
// return path;
// };
// 下载任务结果
// 下载任务结果
const
handleDownLoadOutput
=
(
item
:
any
)
=>
{
const
handleDownLoadOutput
=
(
item
:
any
)
=>
{
// 是文件下载
// 是文件下载
...
@@ -483,173 +464,16 @@ const ProjectSubmitWork = observer(() => {
...
@@ -483,173 +464,16 @@ const ProjectSubmitWork = observer(() => {
{
fullScreenShow
?
null
:
(
{
fullScreenShow
?
null
:
(
<
div
className=
{
styles
.
swFormBox
}
>
<
div
className=
{
styles
.
swFormBox
}
>
{
!
activeFlowIndex
&&
(
{
!
activeFlowIndex
&&
(
<
div
className=
{
styles
.
taskInfo
}
>
<
TaskInfo
<
div
className=
{
styles
.
title
}
>
任务结果
</
div
>
workFlowJobInfo=
{
workFlowJobInfo
as
ITaskInfo
}
{
workFlowJobInfo
?.
outputs
&&
randerOutputs1=
{
randerOutputs1
}
Object
.
keys
(
workFlowJobInfo
?.
outputs
).
length
>
0
&&
(
handleDownLoadOutput=
{
handleDownLoadOutput
}
<
div
className=
{
styles
.
taskResults
}
>
handleShowPopper=
{
handleShowPopper
}
{
randerOutputs1
.
map
((
item
,
index
)
=>
{
setGoToProjectDataPath=
{
setGoToProjectDataPath
}
return
(
setShowLogView=
{
setShowLogView
}
<
div
key=
{
index
}
className=
{
styles
.
outputLi
}
>
state=
{
state
}
<
div
name=
{
name
}
className=
{
styles
.
outputLiLeft
}
/>
onClick=
{
(
e
:
any
)
=>
{
handleDownLoadOutput
(
item
);
}
}
>
<
img
className=
{
styles
.
outputLiLeftImg
}
src=
{
item
.
type
===
"file"
?
fileIcon
:
dataSetIcon
}
alt=
""
/>
<
span
className=
{
styles
.
outputItemName
}
>
{
item
.
name
}
</
span
>
</
div
>
<
span
className=
{
styles
.
outputLiRight
}
>
{
item
.
size
}
</
span
>
</
div
>
);
})
}
</
div
>
)
}
{
(
!
workFlowJobInfo
?.
outputs
||
Object
.
keys
(
workFlowJobInfo
?.
outputs
).
length
===
0
)
&&
(
<
div
className=
{
styles
.
notResults
}
>
暂无结果文件
</
div
>
)
}
<
div
className=
{
styles
.
title
}
>
任务信息
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
任务名称
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
title=
{
name
}
>
{
name
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
任务ID
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
title=
{
workFlowJobInfo
?.
id
}
>
{
workFlowJobInfo
?.
id
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
输出路径
</
div
>
<
div
className=
{
classNames
({
[
styles
.
taskInfoValue
]:
true
,
[
styles
.
taskInfoValueClick
]:
true
,
})
}
onClick=
{
(
e
:
any
)
=>
{
handleShowPopper
(
e
,
"即将跳转至项目数据内该任务的输出路径,确认继续吗?"
,
"bottom"
);
setGoToProjectDataPath
(
workFlowJobInfo
?.
outputPath
as
string
);
}
}
>
{
workFlowJobInfo
?.
outputPath
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
运行状态
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
state
===
"SUCCEEDED"
&&
(
<
img
className=
{
styles
.
taskInfoValueIcon
}
src=
{
jobSue
}
alt=
""
/>
)
}
{
[
"SUBMITTED"
,
"RUNNING"
].
includes
(
state
||
""
)
&&
(
<
img
className=
{
styles
.
taskInfoValueIcon
}
src=
{
jobRun
}
alt=
""
/>
)
}
{
state
===
"ABORTED"
&&
(
<
img
className=
{
styles
.
taskInfoValueIcon
}
src=
{
jobStop
}
alt=
""
/>
)
}
{
state
===
"FAILED"
&&
(
<
img
className=
{
styles
.
taskInfoValueIcon
}
src=
{
jobFail
}
alt=
""
/>
)
}
{
state
?
stateMap
[
state
]
:
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
源模板
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
specTitle
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
源模板版本
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
specVersion
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
花费(元)
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
jobCost
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
创建人
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
creator
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
创建时间
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
createTime
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
运行时间
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
costTime
||
"-"
}
</
div
>
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
日志文件
</
div
>
<
div
className=
{
styles
.
taskInfoValue
}
>
{
workFlowJobInfo
?.
logPath
&&
(
<>
{
/* <span
className={styles.taskInfoDownload}
onClick={() => handleDownLoad(workFlowJobInfo?.logPath)}
>
下载
</span> */
}
<
span
className=
{
styles
.
taskInfoDownload
}
onClick=
{
()
=>
setShowLogView
(
true
)
}
>
查看
</
span
>
</>
)
}
{
!
workFlowJobInfo
?.
logPath
&&
"-"
}
</
div
>
</
div
>
</
div
>
)
}
)
}
{
activeFlowIndex
&&
(
{
activeFlowIndex
&&
(
<
div
className=
{
styles
.
suanziInfo
}
>
<
div
className=
{
styles
.
suanziInfo
}
>
...
@@ -778,12 +602,7 @@ const ProjectSubmitWork = observer(() => {
...
@@ -778,12 +602,7 @@ const ProjectSubmitWork = observer(() => {
projectId=
{
projectId
as
string
}
projectId=
{
projectId
as
string
}
></
SeeDataset
>
></
SeeDataset
>
)
}
)
}
{
showLogView
&&
(
{
showLogView
&&
<
LogView
logs=
{
logs
}
setShowLogView=
{
handleClose
}
/>
}
<
LogView
logs=
{
logs
}
setShowLogView=
{
handleClose
}
/>
)
}
</
div
>
</
div
>
);
);
});
});
...
...
src/views/Project/ProjectSubmitWork/interface.ts
View file @
878c252d
...
@@ -132,4 +132,4 @@ export interface ITaskInfo extends ITemplateConfig {
...
@@ -132,4 +132,4 @@ export interface ITaskInfo extends ITemplateConfig {
outputs
?:
any
;
// 结果文件
outputs
?:
any
;
// 结果文件
}
}
type
IState
=
"SUCCEEDED"
|
"RUNNING"
|
"ABORTED"
|
"FAILED"
;
export
type
IState
=
"SUCCEEDED"
|
"RUNNING"
|
"ABORTED"
|
"FAILED"
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment