Commit 6369e109 authored by chenshouchao's avatar chenshouchao

feat: 提交任务联调完成

parent 2a7b6d6a
......@@ -24,11 +24,8 @@ type ConfigFormProps = {
const ConfigForm = (props: ConfigFormProps) => {
const { templateConfigInfo, setParameter } = props;
const [name, setName] = useState<string>(
`${templateConfigInfo?.title}_${moment(new Date()).format(
"YYYY_MM_DD_HH_mm"
)}`
); // 任务名称
const [name, setName] = useState<string>(""); // 任务名称
const [nameHelp, setNameHelp] = useState({
error: false,
helperText: "",
......@@ -46,9 +43,13 @@ const ConfigForm = (props: ConfigFormProps) => {
};
};
const setInitName = (name: string) => {
setName(`${name}_${moment(new Date()).format("YYYY_MM_DD_HH_mm")}`);
};
useImperativeHandle(props.onRef, () => {
return {
getNameAndPath: getNameAndPath,
setInitName: setInitName,
};
});
......@@ -190,7 +191,7 @@ const ConfigForm = (props: ConfigFormProps) => {
>
{parameter.name}
<span className={styles.parameterDataType}>
{parameter.dataType}
{parameter.classType}
</span>
</div>
<div className={styles.parameterContent}>
......@@ -209,30 +210,12 @@ const ConfigForm = (props: ConfigFormProps) => {
/>
),
}}
placeholder="请选择"
error={parameter.error || false}
helperText={parameter.helperText}
></MyInput>
)}
{parameter.domType.toLowerCase() === "pathselect" && (
<MyInput
value={parameter.value || ""}
InputProps={{
endAdornment: (
<img
onClick={() =>
handleOpenFileSelect(taskId, parameter.name)
}
src={fileSelectIcon}
alt=""
className={styles.fileSelectImg}
/>
),
}}
error={parameter.error || false}
helperText={parameter.helperText}
></MyInput>
)}
{parameter.domType.toLowerCase() === "datasetselect" && (
{parameter.domType.toLowerCase() === "path" && (
<MyInput
value={parameter.value || ""}
InputProps={{
......@@ -247,11 +230,12 @@ const ConfigForm = (props: ConfigFormProps) => {
/>
),
}}
placeholder="请选择"
error={parameter.error || false}
helperText={parameter.helperText}
></MyInput>
)}
{parameter.domType.toLowerCase() === "fileselect" && (
{parameter.domType.toLowerCase() === "dataset" && (
<MyInput
value={parameter.value || ""}
InputProps={{
......@@ -266,6 +250,7 @@ const ConfigForm = (props: ConfigFormProps) => {
/>
),
}}
placeholder="请选择"
error={parameter.error || false}
helperText={parameter.helperText}
></MyInput>
......@@ -288,8 +273,8 @@ const ConfigForm = (props: ConfigFormProps) => {
handleParameterChange(e, taskId, parameter.name || "")
}
error={parameter.error || false}
helperText={parameter.helperText}
options={optionsTransform(parameter.choices, "key")}
helpertext={parameter.helperText}
options={optionsTransform(parameter.choices, "label")}
></MySelect>
)}
{parameter.domType.toLowerCase() === "multipleselect" && (
......@@ -300,8 +285,8 @@ const ConfigForm = (props: ConfigFormProps) => {
}
multiple={true}
error={parameter.error || false}
helperText={parameter.helperText}
options={optionsTransform(parameter.choices, "key")}
helpertext={parameter.helperText}
options={optionsTransform(parameter.choices, "label")}
></MySelect>
)}
{parameter.domType.toLowerCase() === "radio" && (
......@@ -310,7 +295,7 @@ const ConfigForm = (props: ConfigFormProps) => {
onChange={(e: any) =>
handleParameterChange(e, taskId, parameter.name || "")
}
options={optionsTransform(parameter.choices, "key")}
options={optionsTransform(parameter.choices, "label")}
error={parameter.error || false}
helperText={parameter.helperText}
></MyRadio>
......@@ -329,7 +314,7 @@ const ConfigForm = (props: ConfigFormProps) => {
parameter.name || ""
)
}
options={optionsTransform(parameter.choices, "key")}
options={optionsTransform(parameter.choices, "label")}
error={parameter.error || false}
helperText={parameter.helperText}
></MyCheckBox>
......
......@@ -2,7 +2,7 @@ import * as React from "react";
import InputLabel from "@mui/material/InputLabel";
import MenuItem from "@mui/material/MenuItem";
import FormControl from "@mui/material/FormControl";
import FormHelperText from '@mui/material/FormHelperText';
import FormHelperText from "@mui/material/FormHelperText";
import Select, { SelectProps } from "@mui/material/Select";
export interface IOption {
......@@ -39,8 +39,8 @@ interface IProps
isTitle?: boolean;
size?: "small" | "medium";
multiple?: boolean; // 多选
error?: boolean;
helperText?: string;
error?: boolean;
helpertext?: string;
}
export default function MySelect(props: IProps) {
const {
......@@ -53,41 +53,41 @@ export default function MySelect(props: IProps) {
size = "small",
multiple = false,
error = false,
helperText,
helpertext,
} = props;
return (
<FormControl fullWidth variant={variant} error={error}>
{isTitle ? (
<InputLabel id="demo-simple-select-label">
{title || "请选择"}
</InputLabel>
) : null}
<Select
labelId="demo-simple-select-label"
id="demo-simple-select"
label={title || ""}
size={size}
{...props}
value={value}
onChange={onChange}
multiple={multiple}
>
{options.length
? options?.map((item: IOption) => {
return (
<MenuItem
key={item.value}
value={item.value}
disabled={item?.disabled}
>
{item.label}
</MenuItem>
);
})
: null}
</Select>
{helperText && error && <FormHelperText>{helperText}</FormHelperText>}
</FormControl>
<FormControl fullWidth variant={variant} error={error}>
{isTitle ? (
<InputLabel id="demo-simple-select-label">
{title || "请选择"}
</InputLabel>
) : null}
<Select
labelId="demo-simple-select-label"
id="demo-simple-select"
label={title || ""}
size={size}
{...props}
value={value}
onChange={onChange}
multiple={multiple}
>
{options.length
? options?.map((item: IOption) => {
return (
<MenuItem
key={item.value}
value={item.value}
disabled={item?.disabled}
>
{item.label}
</MenuItem>
);
})
: null}
</Select>
{helpertext && error && <FormHelperText>{helpertext}</FormHelperText>}
</FormControl>
);
}
......@@ -39,6 +39,7 @@ const ProjectSubmitWork = () => {
const { run } = useMyRequest(fetchTemplateConfigInfo, {
onSuccess: (res: IResponse<ITemplateConfig>) => {
setTemplateConfigInfo(res.data);
configFormRef.current.setInitName(res.data.title);
// setTemplateConfigInfo(templateConfigJson as ITemplateConfig);
},
// onError: () => {
......@@ -89,28 +90,57 @@ const ProjectSubmitWork = () => {
const { name, outputPath, nameAndOutputPathCheck } =
configFormRef.current.getNameAndPath();
if (!nameAndOutputPathCheck) {
console.log(123);
check = false;
}
const result: ITemplateConfig = _.cloneDeep(templateConfigInfo);
result.tasks.forEach((tack) => {
tack.parameters.forEach((parameter) => {
const checkResult = getCheckResult(parameter, parameter.value);
parameter.error = checkResult.error;
parameter.helperText = checkResult.helperText;
if (checkResult.error) {
check = false;
}
});
tack.parameters
.filter((parameter) => parameter.hidden === false)
.forEach((parameter) => {
const checkResult = getCheckResult(parameter, parameter.value);
parameter.error = checkResult.error;
parameter.helperText = checkResult.helperText;
if (checkResult.error) {
console.log(tack);
console.log(parameter);
check = false;
}
});
});
setTemplateConfigInfo(result);
if (check) {
console.log("提交任务");
let promotedParameters: any = {};
result.tasks.forEach((tack) => {
tack.parameters
.filter((parameter) => parameter.hidden === false)
.forEach((parameter) => {
let value: string = "";
if (Array.isArray(parameter.value)) {
value = parameter.value.join(",");
}
if (
parameter.domType.toLowerCase() === "path" ||
parameter.domType.toLowerCase() === "dataset" ||
parameter.domType.toLowerCase() === "file"
) {
if (value === "ProjectData") {
value = "/home/cloudam";
} else {
value = `/home/cloudam${value.slice(11)}`;
}
}
promotedParameters[parameter.name] = {
[parameter.classType]: value,
};
});
});
submitWorkFlowRun({
name,
outputPath,
projectId: projectId as string,
specId: templateConfigInfo?.id as string,
promotedParameters: {},
promotedParameters,
});
} else {
Message.error("请完善左侧表单再提交");
......
......@@ -13,7 +13,7 @@ export interface IParameter {
name: string;
required: boolean;
domType: IDomType;
dataType?: string;
classType: string;
value: any;
description: string;
language: string;
......@@ -58,9 +58,9 @@ export interface ITemplateConfig {
}
export type IDomType =
| "pathselect"
| "datasetselect"
| "fileselect"
| "path"
| "dataset"
| "file"
| "input"
| "file"
| "select"
......
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