Commit bb4203a8 authored by chenshouchao's avatar chenshouchao

feat: 自定义模板版本校验完成,代码注释完善

parent a624bb6f
...@@ -27,7 +27,7 @@ type IParameterSettingProps = { ...@@ -27,7 +27,7 @@ type IParameterSettingProps = {
taskId: string; taskId: string;
setTemplateConfigInfo: any; setTemplateConfigInfo: any;
}; };
// 页面调试数据 暂不删除
// const templateConfigInfoMock = [ // const templateConfigInfoMock = [
// { // {
// id: "id", // id: "id",
...@@ -233,24 +233,19 @@ type IParameterSettingProps = { ...@@ -233,24 +233,19 @@ type IParameterSettingProps = {
// ]; // ];
// const taskId = "id"; // const taskId = "id";
const ParameterSetting = (props: IParameterSettingProps) => { const ParameterSetting = (props: IParameterSettingProps) => {
const { templateConfigInfo, setTemplateConfigInfo, 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 [parameterName, setParameterName] = useState(""); // 当前算子中的parameters中正在编辑饿parameter(参数)
// const [fileSelectObject, setFileSelectObject] = useState({ const div = document.getElementById("descHeight"); // 算子描述的元素(不限高)
// taskId: "",
// parameterName: "",
// });
const [parameterName, setParameterName] = useState("");
const div = document.getElementById("descHeight");
useEffect(() => { useEffect(() => {
if (div) { if (div) {
setDescHeight(div.offsetHeight); setDescHeight(div.offsetHeight);
......
...@@ -52,38 +52,55 @@ const WorkFlowEdit = observer((props: IProps) => { ...@@ -52,38 +52,55 @@ const WorkFlowEdit = observer((props: IProps) => {
const { onBack, id } = props; const { onBack, id } = props;
const { currentProjectStore } = useStores(); const { currentProjectStore } = useStores();
const Message = useMessage(); const Message = useMessage();
const [templateConfigInfo, setTemplateConfigInfo] = useState<ITask[]>([]); const [templateConfigInfo, setTemplateConfigInfo] = useState<ITask[]>([]); // 算子大数组
// const projectId = toJS(currentProjectStore.currentProjectInfo.id); // const projectId = toJS(currentProjectStore.currentProjectInfo.id);
const productId = toJS(currentProjectStore.currentProductInfo.id); const productId = toJS(currentProjectStore.currentProductInfo.id);
const [saveFormDialog, setSaveFormDialog] = useState(false); const [saveFormDialog, setSaveFormDialog] = useState(false); // 保存弹窗显示与否控制
const [showFlow, setShowFlow] = useState(true); const [showFlow, setShowFlow] = useState(true); // 是否显示右侧流程图
const [title, setTitle] = useState(""); const [title, setTitle] = useState(""); // 自定义模板名称
const [version, setVersion] = useState("1.0.0"); const [version, setVersion] = useState("1.0.0"); // 自定义模板版本
const [description, setDescription] = useState(""); const [oldversion, setOldersion] = useState(""); // 编辑是自定义模板的老版本
const [description, setDescription] = useState(""); // 自定义模板描述
const [titleHelper, setTitleHelper] = useState({ const [titleHelper, setTitleHelper] = useState({
// 自定义模板名称错误提示
error: false, error: false,
helperText: "", helperText: "",
}); });
const [versionHelper, setVersionHelper] = useState({ const [versionHelper, setVersionHelper] = useState({
// 自定义模板版本错误提示
error: false, error: false,
helperText: "", helperText: "",
}); });
const [leftContentType, setLeftContentType] = useState("list"); const [leftContentType, setLeftContentType] = useState("list"); // 页面左侧展示的是算子列表还是参数设置
const [popperTitle, setPopperTitle] = useState( const [popperTitle, setPopperTitle] = useState(
// 确认弹窗标题
"返回后,当前页面已填写内容将不保存,确认返回吗?" "返回后,当前页面已填写内容将不保存,确认返回吗?"
); );
// 编辑时获取模板详情的方法
const { run: fetchTemplateConfigInfoRun } = useMyRequest( const { run: fetchTemplateConfigInfoRun } = useMyRequest(
fetchTemplateConfigInfo, fetchTemplateConfigInfo,
{ {
onSuccess: (res: any) => { onSuccess: (res: any) => {
console.log(res);
if (res.data) { if (res.data) {
setTemplateConfigInfo(res.data.tasks); setTemplateConfigInfo(res.data.tasks);
setTitle(res.data.title); setTitle(res.data.title);
setOldersion(res.data.version);
let version = res.data.version; let version = res.data.version;
let arr = version.split("."); let arr = version.split(".");
arr[2] = String(Number(arr[2]) + 1); if (arr.length === 3) {
if (Number(arr[2]) < 100) {
arr[2] = String(Number(arr[2]) + 1);
} else {
arr[2] = "0";
if (Number(arr[1]) < 100) {
arr[1] = String(Number(arr[1]) + 1);
} else {
arr[1] = "0";
arr[0] = String(Number(arr[0]) + 1);
}
}
}
setVersion(arr.join(".")); setVersion(arr.join("."));
setDescription(res.data.description); setDescription(res.data.description);
} }
...@@ -91,12 +108,14 @@ const WorkFlowEdit = observer((props: IProps) => { ...@@ -91,12 +108,14 @@ const WorkFlowEdit = observer((props: IProps) => {
} }
); );
// id存在时获取模板详情
useEffect(() => { useEffect(() => {
if (id) { if (id) {
fetchTemplateConfigInfoRun({ id }); fetchTemplateConfigInfoRun({ id });
} }
}, [id, fetchTemplateConfigInfoRun]); }, [id, fetchTemplateConfigInfoRun]);
// 校验模板名称
const checkTitle = (title: string) => { const checkTitle = (title: string) => {
if (!title) { if (!title) {
setTitleHelper({ setTitleHelper({
...@@ -120,15 +139,51 @@ const WorkFlowEdit = observer((props: IProps) => { ...@@ -120,15 +139,51 @@ const WorkFlowEdit = observer((props: IProps) => {
}); });
} }
}; };
// 校验新版本号是否大于旧版本号
const checkNewOldVersion = useCallback(() => {
let versionArr = version.split(".");
let oldversionArr = oldversion.split(".");
versionArr.map((item) => Number(item));
oldversionArr.map((item) => Number(item));
if (versionArr[0] < oldversionArr[0]) {
setVersionHelper({
error: true,
helperText:
"新版本号必须大于老版本号,且必须为X.Y.Z格式,XYZ必须为0~99的正整数",
});
return false;
} else if (versionArr[0] === oldversionArr[0]) {
if (versionArr[1] < oldversionArr[1]) {
setVersionHelper({
error: true,
helperText:
"新版本号必须大于老版本号,且必须为X.Y.Z格式,XYZ必须为0~99的正整数",
});
return false;
} else if (versionArr[1] === oldversionArr[1]) {
if (versionArr[2] < oldversionArr[2]) {
setVersionHelper({
error: true,
helperText:
"新版本号必须大于老版本号,且必须为X.Y.Z格式,XYZ必须为0~99的正整数",
});
return false;
}
}
}
return true;
}, [version, oldversion]);
// 校验版本号格式
const checkVersion = (version: string) => { const checkVersion = (version: string) => {
const versionArr = version.split("."); const versionArr = version.split(".");
if (oldversion) {
if (!checkNewOldVersion()) {
return;
}
}
const reg = new RegExp("^([0-9]|[0-9]\\d)$"); const reg = new RegExp("^([0-9]|[0-9]\\d)$");
// var a=101;
// if(!reg.test(a)) {
// alert("请输入1-100的整数!")
// }
console.log(versionArr);
if (versionArr.length !== 3) { if (versionArr.length !== 3) {
setVersionHelper({ setVersionHelper({
error: true, error: true,
...@@ -136,8 +191,6 @@ const WorkFlowEdit = observer((props: IProps) => { ...@@ -136,8 +191,6 @@ const WorkFlowEdit = observer((props: IProps) => {
}); });
} else if ( } else if (
versionArr.every((item) => { versionArr.every((item) => {
console.log(item);
console.log(reg.test(item));
return reg.test(item); return reg.test(item);
}) })
) { ) {
...@@ -152,27 +205,31 @@ const WorkFlowEdit = observer((props: IProps) => { ...@@ -152,27 +205,31 @@ const WorkFlowEdit = observer((props: IProps) => {
}); });
} }
}; };
// 自定义模板名称
const handleTitleChange = (e: any) => { const handleTitleChange = (e: any) => {
console.log(e);
const title = e.target.value; const title = e.target.value;
console.log(title);
setTitle(title); setTitle(title);
checkTitle(title); checkTitle(title);
// 格式不正确,必须在15字符以内,仅限大小写字母、数字、中文 // 格式不正确,必须在15字符以内,仅限大小写字母、数字、中文
}; };
// 自定义模板版本
const handleVersionChange = (e: any) => { const handleVersionChange = (e: any) => {
let version = e.target.value; let version = e.target.value;
setVersion(version); setVersion(version);
checkVersion(version); checkVersion(version);
console.log(e);
// version
}; };
// 自定义模板描述
const handleDescriptionChange = (e: any) => { const handleDescriptionChange = (e: any) => {
let description = e.target.value; let description = e.target.value;
if (description.length < 301) { if (description.length < 301) {
setDescription(description); setDescription(description);
} }
}; };
// 自定义模板保存方法
const { run: saveUserSpecRun } = useMyRequest(saveUserSpec, { const { run: saveUserSpecRun } = useMyRequest(saveUserSpec, {
onSuccess: (res) => { onSuccess: (res) => {
Message.success("保存成功!"); Message.success("保存成功!");
...@@ -181,25 +238,28 @@ const WorkFlowEdit = observer((props: IProps) => { ...@@ -181,25 +238,28 @@ const WorkFlowEdit = observer((props: IProps) => {
}, },
}); });
// 确认弹窗相对位置
const [anchorEl, setAnchorEl] = useState<any>(null); const [anchorEl, setAnchorEl] = useState<any>(null);
// 隐藏确认弹窗, 确认弹窗点击取消
const handleCancel = () => { const handleCancel = () => {
setAnchorEl(null); setAnchorEl(null);
}; };
// 显示确认弹窗
const handleShowPopper = (e: any, title: string) => { const handleShowPopper = (e: any, title: string) => {
setPopperTitle(title); setPopperTitle(title);
setAnchorEl(anchorEl ? null : e.currentTarget); setAnchorEl(anchorEl ? null : e.currentTarget);
}; };
// 确认弹窗确认回调
const handleConfirm = () => { const handleConfirm = () => {
if (popperTitle === "返回后,当前页面已填写内容将不保存,确认返回吗?") { if (popperTitle === "返回后,当前页面已填写内容将不保存,确认返回吗?") {
onBack && onBack(); onBack && onBack();
} }
}; };
// 点击保存 先校验工作流 再显示自定义模板基础信息弹窗
const handlePreserve = () => { const handlePreserve = () => {
console.log("提交");
console.log(templateConfigInfo);
// 校验 // 校验
if (templateConfigInfo.length === 0) { if (templateConfigInfo.length === 0) {
Message.error("工作流不能为空!"); Message.error("工作流不能为空!");
...@@ -213,7 +273,6 @@ const WorkFlowEdit = observer((props: IProps) => { ...@@ -213,7 +273,6 @@ const WorkFlowEdit = observer((props: IProps) => {
parameter.error = checkResult.error; parameter.error = checkResult.error;
parameter.helperText = checkResult.helperText; parameter.helperText = checkResult.helperText;
if (checkResult.error) { if (checkResult.error) {
console.log(parameter);
check = false; check = false;
} }
}); });
...@@ -222,25 +281,18 @@ const WorkFlowEdit = observer((props: IProps) => { ...@@ -222,25 +281,18 @@ const WorkFlowEdit = observer((props: IProps) => {
if (!check) { if (!check) {
Message.error("工作流校验未通过,请检查!"); Message.error("工作流校验未通过,请检查!");
} else { } else {
console.log("弹表单窗");
setShowFlow(false); setShowFlow(false);
setSaveFormDialog(true); setSaveFormDialog(true);
// saveUserSpecRun({
// title: "自定义模板标题",
// version: "1.0.0",
// description: "这里是描述",
// tasks: templateConfigInfoClone,
// // projectId,
// productId,
// });
} }
}; };
// 关闭表单弹窗
const handleCloseDialog = () => { const handleCloseDialog = () => {
setShowFlow(true); setShowFlow(true);
setSaveFormDialog(false); setSaveFormDialog(false);
}; };
// 表单弹窗确定,新建/编辑自定义模板保存
const handleOncofirm = () => { const handleOncofirm = () => {
checkTitle(title); checkTitle(title);
setShowFlow(true); setShowFlow(true);
......
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