Commit 4af3d4d3 authored by chenshouchao's avatar chenshouchao

feat: 完成参数设置文件夹选择功能

parent 79073268
...@@ -13,6 +13,7 @@ import MySelect, { ...@@ -13,6 +13,7 @@ import MySelect, {
optionsTransform, optionsTransform,
} from "../../../Project/ProjectSubmitWork/components/MySelect"; } from "../../../Project/ProjectSubmitWork/components/MySelect";
import _ from "lodash"; import _ from "lodash";
import FileSelect from "@/components/FileSelect";
import MyRadio from "@/components/mui/MyRadio"; import MyRadio from "@/components/mui/MyRadio";
import questionMark from "@/assets/project/questionMark.svg"; import questionMark from "@/assets/project/questionMark.svg";
import fileSelectIcon from "@/assets/project/fileSelect.svg"; import fileSelectIcon from "@/assets/project/fileSelect.svg";
...@@ -24,228 +25,230 @@ import { getCustomTemplateParameterCheckResult } from "../../util"; ...@@ -24,228 +25,230 @@ import { getCustomTemplateParameterCheckResult } from "../../util";
type IParameterSettingProps = { type IParameterSettingProps = {
templateConfigInfo: ITask[]; templateConfigInfo: ITask[];
taskId: string; taskId: string;
setTemplateConfigInfo: any;
}; };
const templateConfigInfoMock = [ // const templateConfigInfoMock = [
{ // {
id: "id", // id: "id",
title: "title", // title: "title",
description: // description:
"阿斯蒂芬吉林集安拉开圣诞节疯狂拉升阶段阿斯蒂芬吉林集安拉开圣诞节疯狂拉升阶段阿斯蒂芬吉林集安拉开圣诞节疯狂拉升阶段阿斯蒂芬吉林集安拉开圣诞节疯狂拉升阶段阿斯蒂芬吉林集安拉开圣诞节疯狂拉升阶段阿斯蒂芬吉林集安拉开圣诞节疯狂拉升阶段", // "阿斯蒂芬吉林集安拉开圣诞节疯狂拉升阶段阿斯蒂芬吉林集安拉开圣诞节疯狂拉升阶段阿斯蒂芬吉林集安拉开圣诞节疯狂拉升阶段阿斯蒂芬吉林集安拉开圣诞节疯狂拉升阶段阿斯蒂芬吉林集安拉开圣诞节疯狂拉升阶段阿斯蒂芬吉林集安拉开圣诞节疯狂拉升阶段",
version: "version", // version: "version",
position: { // position: {
x: 10, // x: 10,
y: 100, // y: 100,
}, // },
tags: ["string[]"], // tags: ["string[]"],
type: "BATCH", // type: "BATCH",
parentNode: "string", // parentNode: "string",
parameters: [ // parameters: [
{ // {
hidden: true, // hidden: true,
id: "1", // id: "1",
name: "smi_in", // name: "smi_in",
required: true, // required: true,
defaultValue: "", // defaultValue: "",
domType: "input", // domType: "input",
classType: "STRING", // classType: "STRING",
classTypeName: "String", // classTypeName: "String",
value: "", // value: "",
description: "123", // description: "123",
language: "", // language: "",
languageVersion: "", // languageVersion: "",
tags: [], // tags: [],
source: "string", // source: "string",
productId: "", // productId: "",
tasks: [], // tasks: [],
validators: [ // validators: [
{ // {
message: "请选择smi文件作为输入", // message: "请选择smi文件作为输入",
regex: "^.[s][m][i]$", // regex: "^.[s][m][i]$",
}, // },
], // ],
choices: [], // choices: [],
parameterGroup: "in", // parameterGroup: "in",
}, // },
{ // {
hidden: true, // hidden: true,
id: "2", // id: "2",
name: "out", // name: "out",
required: true, // required: true,
defaultValue: "", // defaultValue: "",
domType: "select", // domType: "select",
classType: "STRING", // classType: "STRING",
classTypeName: "String", // classTypeName: "String",
value: "", // value: "",
description: "", // description: "",
language: "", // language: "",
languageVersion: "", // languageVersion: "",
tags: [], // tags: [],
source: "string", // source: "string",
productId: "", // productId: "",
tasks: [], // tasks: [],
validators: [ // validators: [
{ // {
message: "请选择smi文件作为输入", // message: "请选择smi文件作为输入",
regex: "^.[s][m][i]$", // regex: "^.[s][m][i]$",
}, // },
], // ],
choices: [], // choices: [],
parameterGroup: "out", // parameterGroup: "out",
}, // },
{ // {
hidden: true, // hidden: true,
id: "3", // id: "3",
name: "basis999", // name: "basis999",
required: true, // required: true,
defaultValue: "", // defaultValue: "",
domType: "select", // domType: "select",
classType: "STRING", // classType: "STRING",
classTypeName: "String", // classTypeName: "String",
value: "", // value: "",
description: "789", // description: "789",
language: "", // language: "",
languageVersion: "", // languageVersion: "",
tags: [], // tags: [],
source: "string", // source: "string",
productId: "", // productId: "",
tasks: [], // tasks: [],
validators: [ // validators: [
{ // {
message: "请选择smi文件作为输入", // message: "请选择smi文件作为输入",
regex: "^.[s][m][i]$", // regex: "^.[s][m][i]$",
}, // },
], // ],
choices: [], // choices: [],
parameterGroup: "basis", // parameterGroup: "basis",
}, // },
{ // {
hidden: true, // hidden: true,
id: "4", // id: "4",
name: "basis", // name: "basis",
required: true, // required: true,
defaultValue: "", // defaultValue: "",
domType: "select", // domType: "select",
classType: "STRING", // classType: "STRING",
classTypeName: "String", // classTypeName: "String",
value: "", // value: "",
description: "", // description: "",
language: "", // language: "",
languageVersion: "", // languageVersion: "",
tags: [], // tags: [],
source: "string", // source: "string",
productId: "", // productId: "",
tasks: [], // tasks: [],
validators: [ // validators: [
{ // {
message: "请选择smi文件作为输入", // message: "请选择smi文件作为输入",
regex: "^.[s][m][i]$", // regex: "^.[s][m][i]$",
}, // },
], // ],
choices: [], // choices: [],
parameterGroup: "basis", // parameterGroup: "basis",
}, // },
{ // {
hidden: true, // hidden: true,
id: "5", // id: "5",
name: "senior", // name: "senior",
required: true, // required: true,
defaultValue: "", // defaultValue: "",
domType: "checkbox", // domType: "checkbox",
classType: "STRING", // classType: "STRING",
classTypeName: "String", // classTypeName: "String",
value: "", // value: "",
description: "", // description: "",
language: "", // language: "",
languageVersion: "", // languageVersion: "",
tags: [], // tags: [],
source: "string", // source: "string",
productId: "", // productId: "",
tasks: [], // tasks: [],
validators: [ // validators: [
{ // {
message: "请选择smi文件作为输入", // message: "请选择smi文件作为输入",
regex: "^.[s][m][i]$", // regex: "^.[s][m][i]$",
}, // },
], // ],
choices: [ // choices: [
{ // {
label: "123", // label: "123",
value: "123", // value: "123",
}, // },
{ // {
label: "456", // label: "456",
value: "456", // value: "456",
}, // },
{ // {
label: "789", // label: "789",
value: "789", // value: "789",
}, // },
], // ],
parameterGroup: "senior", // parameterGroup: "senior",
}, // },
{ // {
hidden: true, // hidden: true,
id: "6", // id: "6",
name: "hardware", // name: "hardware",
required: true, // required: true,
defaultValue: "", // defaultValue: "",
domType: "radio", // domType: "radio",
classType: "STRING", // classType: "STRING",
classTypeName: "String", // classTypeName: "String",
value: "", // value: "",
description: "", // description: "",
language: "", // language: "",
languageVersion: "", // languageVersion: "",
tags: [], // tags: [],
source: "string", // source: "string",
productId: "", // productId: "",
tasks: [], // tasks: [],
validators: [ // validators: [
{ // {
message: "请选择smi文件作为输入", // message: "请选择smi文件作为输入",
regex: "^.[s][m][i]$", // regex: "^.[s][m][i]$",
}, // },
], // ],
choices: [ // choices: [
{ // {
label: "123", // label: "123",
value: "123", // value: "123",
}, // },
{ // {
label: "456", // label: "456",
value: "456", // value: "456",
}, // },
{ // {
label: "789", // label: "789",
value: "789", // value: "789",
}, // },
], // ],
parameterGroup: "hardware", // parameterGroup: "hardware",
}, // },
], // ],
edges: [], // edges: [],
isCheck: false, // isCheck: false,
executionStatus: "Pending", // executionStatus: "Pending",
}, // },
]; // ];
const taskId = "id"; // const taskId = "id";
const ParameterSetting = (props: IParameterSettingProps) => { const ParameterSetting = (props: IParameterSettingProps) => {
// const { templateConfigInfo, taskId } = props; const { templateConfigInfo, setTemplateConfigInfo, taskId } = props;
const [templateConfigInfo, setTemplateConfigInfo] = useState<ITask[]>( // const [templateConfigInfo, setTemplateConfigInfo] = useState<ITask[]>(
templateConfigInfoMock as ITask[] // templateConfigInfoMock as ITask[]
); // );
const [descHeight, setDescHeight] = useState(0); const [descHeight, setDescHeight] = useState(0);
const [isShowAllDese, setIsShowAllDese] = useState(false); const [isShowAllDese, setIsShowAllDese] = useState(false);
const [fileSelectOpen, setFileSelectOpen] = useState(false); // 选择输出路径的弹窗显示控制 const [fileSelectOpen, setFileSelectOpen] = useState(false); // 选择输出路径的弹窗显示控制
const [fileSelectObject, setFileSelectObject] = useState({ // const [fileSelectObject, setFileSelectObject] = useState({
taskId: "", // taskId: "",
parameterName: "", // parameterName: "",
}); // });
const [parameterName, setParameterName] = useState("");
const div = document.getElementById("descHeight"); const div = document.getElementById("descHeight");
useEffect(() => { useEffect(() => {
...@@ -254,6 +257,10 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -254,6 +257,10 @@ const ParameterSetting = (props: IParameterSettingProps) => {
} }
}, [div]); }, [div]);
const handleFileSelectOnClose = () => {
setFileSelectOpen(false);
};
const taskInfo: ITask | null = useMemo(() => { const taskInfo: ITask | null = useMemo(() => {
if (!taskId) { if (!taskId) {
return null; return null;
...@@ -271,7 +278,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -271,7 +278,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
// 设置parameter.hidden字段 // 设置parameter.hidden字段
const handleHiddenChange = useCallback( const handleHiddenChange = useCallback(
(e: any, parameterId: string) => { (e: any, parameterName: string) => {
const result: ITask[] = _.cloneDeep(templateConfigInfo); const result: ITask[] = _.cloneDeep(templateConfigInfo);
const taskIndex = result.findIndex((item) => { const taskIndex = result.findIndex((item) => {
return item.id === taskId; return item.id === taskId;
...@@ -279,8 +286,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -279,8 +286,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
if (taskIndex !== -1) { if (taskIndex !== -1) {
let isCheck = true; let isCheck = true;
result[taskIndex].parameters.forEach((parameter) => { result[taskIndex].parameters.forEach((parameter) => {
if (parameter.id === parameterId) { if (parameter.name === parameterName) {
console.log(e.target.checked);
parameter.hidden = !e.target.checked; parameter.hidden = !e.target.checked;
const checkResult = const checkResult =
getCustomTemplateParameterCheckResult(parameter); getCustomTemplateParameterCheckResult(parameter);
...@@ -295,11 +301,11 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -295,11 +301,11 @@ const ParameterSetting = (props: IParameterSettingProps) => {
} }
setTemplateConfigInfo(result); setTemplateConfigInfo(result);
}, },
[templateConfigInfo, setTemplateConfigInfo] [templateConfigInfo, setTemplateConfigInfo, taskId]
); );
const handleParameterChange = useCallback( const handleParameterChange = useCallback(
(e: any, parameterId: string) => { (e: any, parameterName: string) => {
const result: ITask[] = _.cloneDeep(templateConfigInfo); const result: ITask[] = _.cloneDeep(templateConfigInfo);
const taskIndex = result.findIndex((item) => { const taskIndex = result.findIndex((item) => {
return item.id === taskId; return item.id === taskId;
...@@ -307,7 +313,8 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -307,7 +313,8 @@ const ParameterSetting = (props: IParameterSettingProps) => {
if (taskIndex !== -1) { if (taskIndex !== -1) {
let isCheck = true; let isCheck = true;
result[taskIndex].parameters.forEach((parameter) => { result[taskIndex].parameters.forEach((parameter) => {
if (parameter.id === parameterId) { console.log(parameter);
if (parameter.name === parameterName) {
parameter.defaultValue = e.target.value; parameter.defaultValue = e.target.value;
const checkResult = const checkResult =
getCustomTemplateParameterCheckResult(parameter); getCustomTemplateParameterCheckResult(parameter);
...@@ -322,9 +329,21 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -322,9 +329,21 @@ const ParameterSetting = (props: IParameterSettingProps) => {
} }
setTemplateConfigInfo(result); setTemplateConfigInfo(result);
}, },
[templateConfigInfo, setTemplateConfigInfo] [templateConfigInfo, setTemplateConfigInfo, taskId]
); );
const onFileSelectConfirm = (path: string) => {
setFileSelectOpen(false);
handleParameterChange(
{
target: {
value: `ProjectData${path === "/" ? "" : path}`,
},
},
parameterName
);
};
const renderInput = useCallback( const renderInput = useCallback(
(parameter: IParameter) => { (parameter: IParameter) => {
return ( return (
...@@ -336,9 +355,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -336,9 +355,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
InputProps={{ InputProps={{
endAdornment: ( endAdornment: (
<img <img
onClick={() => onClick={() => handleOpenFileSelect(parameter.name)}
handleOpenFileSelect(taskId, parameter.name)
}
src={fileSelectIcon} src={fileSelectIcon}
alt="" alt=""
className={styles.fileSelectImg} className={styles.fileSelectImg}
...@@ -357,9 +374,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -357,9 +374,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
InputProps={{ InputProps={{
endAdornment: ( endAdornment: (
<img <img
onClick={() => onClick={() => handleOpenFileSelect(parameter.name)}
handleOpenFileSelect(taskId, parameter.name)
}
src={fileSelectIcon} src={fileSelectIcon}
alt="" alt=""
className={styles.fileSelectImg} className={styles.fileSelectImg}
...@@ -378,9 +393,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -378,9 +393,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
InputProps={{ InputProps={{
endAdornment: ( endAdornment: (
<img <img
onClick={() => onClick={() => handleOpenFileSelect(parameter.name)}
handleOpenFileSelect(taskId, parameter.name)
}
src={fileSelectIcon} src={fileSelectIcon}
alt="" alt=""
className={styles.fileSelectImg} className={styles.fileSelectImg}
...@@ -397,7 +410,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -397,7 +410,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
<MyInput <MyInput
value={parameter.defaultValue || ""} value={parameter.defaultValue || ""}
onChange={(e: any) => onChange={(e: any) =>
handleParameterChange(e, parameter.id || "") handleParameterChange(e, parameter.name || "")
} }
placeholder="请输入" placeholder="请输入"
error={parameter.error || false} error={parameter.error || false}
...@@ -409,7 +422,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -409,7 +422,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
<MySelect <MySelect
value={parameter.defaultValue} value={parameter.defaultValue}
onChange={(e: any) => onChange={(e: any) =>
handleParameterChange(e, parameter.id || "") handleParameterChange(e, parameter.name || "")
} }
error={parameter.error || false} error={parameter.error || false}
helpertext={parameter.helperText} helpertext={parameter.helperText}
...@@ -421,7 +434,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -421,7 +434,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
<MySelect <MySelect
value={parameter.defaultValue} value={parameter.defaultValue}
onChange={(e: any) => onChange={(e: any) =>
handleParameterChange(e, parameter.id || "") handleParameterChange(e, parameter.name || "")
} }
multiple={true} multiple={true}
error={parameter.error || false} error={parameter.error || false}
...@@ -434,7 +447,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -434,7 +447,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
<MyRadio <MyRadio
value={parameter.defaultValue} value={parameter.defaultValue}
onChange={(e: any) => onChange={(e: any) =>
handleParameterChange(e, parameter.id || "") handleParameterChange(e, parameter.name || "")
} }
options={optionsTransform(parameter.choices, "label")} options={optionsTransform(parameter.choices, "label")}
error={parameter.error || false} error={parameter.error || false}
...@@ -451,7 +464,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -451,7 +464,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
value: e, value: e,
}, },
}, },
parameter.id || "" parameter.name || ""
) )
} }
options={optionsTransform(parameter.choices, "label")} options={optionsTransform(parameter.choices, "label")}
...@@ -459,11 +472,6 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -459,11 +472,6 @@ const ParameterSetting = (props: IParameterSettingProps) => {
helperText={parameter.helperText} helperText={parameter.helperText}
></MyCheckBox> ></MyCheckBox>
)} )}
{/* {parameter.description && (
<Tooltip title={parameter.description} placement="top">
<img className={styles.parameterDesc} src={questionMark} alt="" />
</Tooltip>
)} */}
</div> </div>
</Tooltip> </Tooltip>
); );
...@@ -534,7 +542,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -534,7 +542,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
return ( return (
<div <div
className={styles.parameter} className={styles.parameter}
key={`${parameter.id}${parameterIndex}`} key={`${parameter.name}${parameterIndex}`}
> >
<div className={styles.parameterTop}> <div className={styles.parameterTop}>
<div className={styles.parameterLeft}> <div className={styles.parameterLeft}>
...@@ -553,7 +561,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -553,7 +561,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
<MySwitch <MySwitch
value={!parameter.hidden} value={!parameter.hidden}
onChange={(e: any) => onChange={(e: any) =>
handleHiddenChange(e, parameter.id || "") handleHiddenChange(e, parameter.name || "")
} }
></MySwitch> ></MySwitch>
</div> </div>
...@@ -569,14 +577,8 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -569,14 +577,8 @@ const ParameterSetting = (props: IParameterSettingProps) => {
[renderInput, handleHiddenChange] [renderInput, handleHiddenChange]
); );
const handleOpenFileSelect = ( const handleOpenFileSelect = (parameterName: string = "") => {
taskId: string = "", setParameterName(parameterName);
parameterName: string = ""
) => {
setFileSelectObject({
taskId,
parameterName,
});
setFileSelectOpen(true); setFileSelectOpen(true);
}; };
...@@ -666,7 +668,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -666,7 +668,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
return ( return (
<div <div
className={styles.inOutParameterBox} className={styles.inOutParameterBox}
key={`${parameter.id}${index}`} key={`${parameter.name}${index}`}
> >
<div className={styles.inOutParameterTop}> <div className={styles.inOutParameterTop}>
<div className={styles.inOutParameterleft}> <div className={styles.inOutParameterleft}>
...@@ -686,7 +688,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -686,7 +688,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
<MySwitch <MySwitch
value={!parameter.hidden} value={!parameter.hidden}
onChange={(e: any) => onChange={(e: any) =>
handleHiddenChange(e, parameter.id || "") handleHiddenChange(e, parameter.name || "")
} }
></MySwitch> ></MySwitch>
</div> </div>
...@@ -706,7 +708,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -706,7 +708,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
return ( return (
<div <div
className={styles.inOutParameterBox} className={styles.inOutParameterBox}
key={`${parameter.id}${index}`} key={`${parameter.name}${index}`}
> >
<div className={styles.inOutParameterTop}> <div className={styles.inOutParameterTop}>
<div className={styles.inOutParameterleft}> <div className={styles.inOutParameterleft}>
...@@ -760,6 +762,13 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -760,6 +762,13 @@ const ParameterSetting = (props: IParameterSettingProps) => {
<span className={styles.noDataText}>选中任意算子进行参数设置</span> <span className={styles.noDataText}>选中任意算子进行参数设置</span>
</div> </div>
)} )}
{fileSelectOpen && (
<FileSelect
onClose={handleFileSelectOnClose}
open={fileSelectOpen}
onConfirm={onFileSelectConfirm}
/>
)}
</div> </div>
); );
}; };
......
...@@ -16,7 +16,10 @@ import ButtonComponent from "@/components/mui/Button"; ...@@ -16,7 +16,10 @@ import ButtonComponent from "@/components/mui/Button";
import OperatorList from "./components/OperatorList"; import OperatorList from "./components/OperatorList";
import Flow from "../Project/components/Flow"; import Flow from "../Project/components/Flow";
import ParameterSetting from "./components/ParameterSetting"; import ParameterSetting from "./components/ParameterSetting";
import { useMessage } from "@/components/MySnackbar";
import { ITask } from "../Project/ProjectSubmitWork/interface"; import { ITask } from "../Project/ProjectSubmitWork/interface";
import _ from "lodash";
import { getCustomTemplateParameterCheckResult } from "./util";
import styles from "./index.module.css"; import styles from "./index.module.css";
...@@ -37,6 +40,7 @@ interface IProps { ...@@ -37,6 +40,7 @@ interface IProps {
const WorkFlowEdit = (props: IProps) => { const WorkFlowEdit = (props: IProps) => {
const { onBack } = props; const { onBack } = props;
const Message = useMessage();
const [templateConfigInfo, setTemplateConfigInfo] = useState<ITask[]>([]); const [templateConfigInfo, setTemplateConfigInfo] = useState<ITask[]>([]);
const [leftContentType, setLeftContentType] = useState("list"); const [leftContentType, setLeftContentType] = useState("list");
...@@ -57,8 +61,34 @@ const WorkFlowEdit = (props: IProps) => { ...@@ -57,8 +61,34 @@ const WorkFlowEdit = (props: IProps) => {
const handleConfirm = () => { const handleConfirm = () => {
if (popperTitle === "返回后,当前页面已填写内容将不保存,确认返回吗?") { if (popperTitle === "返回后,当前页面已填写内容将不保存,确认返回吗?") {
onBack && onBack(); onBack && onBack();
}
};
const handlePreserve = () => {
console.log("提交");
console.log(templateConfigInfo);
// 校验
if (templateConfigInfo.length === 0) {
Message.error("工作流不能为空!");
return;
}
let templateConfigInfoClone: ITask[] = _.cloneDeep(templateConfigInfo);
let check = true;
templateConfigInfoClone.forEach((task) => {
task.parameters.forEach((parameter) => {
const checkResult = getCustomTemplateParameterCheckResult(parameter);
parameter.error = checkResult.error;
parameter.helperText = checkResult.helperText;
if (checkResult.error) {
check = false;
}
});
});
setTemplateConfigInfo(templateConfigInfoClone);
if (!check) {
Message.error("工作流校验未通过,请检查!");
} else { } else {
console.log("提交"); console.log("弹表单窗");
} }
}; };
...@@ -74,10 +104,6 @@ const WorkFlowEdit = (props: IProps) => { ...@@ -74,10 +104,6 @@ const WorkFlowEdit = (props: IProps) => {
<div className={styles.swBox}> <div className={styles.swBox}>
<div className={styles.swHeader}> <div className={styles.swHeader}>
<div className={styles.swHeaderLeft}> <div className={styles.swHeaderLeft}>
{/* <MyPopconfirm
title="返回后,当前页面已填写内容将不保存,确认返回吗?"
onConfirm={onBack}
> */}
<IconButton <IconButton
color="primary" color="primary"
aria-label="upload picture" aria-label="upload picture"
...@@ -98,20 +124,12 @@ const WorkFlowEdit = (props: IProps) => { ...@@ -98,20 +124,12 @@ const WorkFlowEdit = (props: IProps) => {
}} }}
/> />
</IconButton> </IconButton>
{/* </MyPopconfirm> */}
</div> </div>
<div className={styles.swHeaderRight}> <div className={styles.swHeaderRight}>
{/* <MyPopconfirm
title="提交前请先确认参数填写无误,确认提交吗?"
onConfirm={() => console.log(2)}
> */}
<ButtonComponent <ButtonComponent
text="保存" text="保存"
click={(e: any) => click={() => handlePreserve}
handleShowPopper(e, "提交前请先确认参数填写无误,确认提交吗?")
}
></ButtonComponent> ></ButtonComponent>
{/* </MyPopconfirm> */}
</div> </div>
</div> </div>
<div className={styles.swContent}> <div className={styles.swContent}>
...@@ -140,7 +158,8 @@ const WorkFlowEdit = (props: IProps) => { ...@@ -140,7 +158,8 @@ const WorkFlowEdit = (props: IProps) => {
{leftContentType !== "list" && ( {leftContentType !== "list" && (
<ParameterSetting <ParameterSetting
templateConfigInfo={templateConfigInfo} templateConfigInfo={templateConfigInfo}
taskId={""} setTemplateConfigInfo={setTemplateConfigInfo}
taskId={selectTaskId || ""}
/> />
)} )}
</div> </div>
......
...@@ -28,14 +28,16 @@ export const getCustomTemplateParameterCheckResult = ( ...@@ -28,14 +28,16 @@ export const getCustomTemplateParameterCheckResult = (
helperText, helperText,
}; };
} }
if (parameter.validators.length > 0) { if (Array.isArray(parameter.validators)) {
parameter.validators.forEach((validator) => { if (parameter.validators.length > 0) {
const reg = new RegExp(validator.regex); parameter.validators.forEach((validator) => {
if (!reg.test(parameter.defaultValue)) { const reg = new RegExp(validator.regex);
error = true; if (!reg.test(parameter.defaultValue)) {
helperText = validator.message; error = true;
} helperText = validator.message;
}); }
});
}
} }
return { return {
error, error,
......
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