diff --git a/react-ui/src/pages/Pipeline/Info/index.jsx b/react-ui/src/pages/Pipeline/Info/index.jsx index c9cdd060..c0e0c51c 100644 --- a/react-ui/src/pages/Pipeline/Info/index.jsx +++ b/react-ui/src/pages/Pipeline/Info/index.jsx @@ -54,11 +54,20 @@ const EditPipeline = () => { const onDragEnd = (val) => { const { x, y } = val; const point = graph.getPointByClient(x, y); + + let label = val.label; + const data = graph.save(); + const nodeLabels = data.nodes.map((v) => v.label); + if (nodeLabels.includes(label)) { + label += '-' + s8(); + } + // 元模型 const model = { ...val, x: point.x, y: point.y, + label, id: val.component_name + '-' + s8(), isCluster: false, formError: true, @@ -90,24 +99,29 @@ const EditPipeline = () => { // 保存 const savePipeline = async (isBack) => { - const [globalParamRes, globalParamError] = await to(paramsDrawerRef.current.validateFields()); - if (globalParamError) { - message.error('全局参数配置有误'); - openParamsDrawer(); - return; - } - closeParamsDrawer(); + // 验证全局参数 + // 现在改为关闭的时候就验证了 + // const [globalParamRes, globalParamError] = await to(paramsDrawerRef.current.validateFields()); + // if (globalParamError) { + // message.error('全局参数配置有误'); + // openParamsDrawer(); + // return; + // } + // closeParamsDrawer(); - const [propsRes, propsError] = await to(propsRef.current.validateFields()); - if (propsError) { - message.error('节点必填项必须配置'); - return; - } - propsRef.current.close(); + // 以前没有遮挡【保存】按钮时有用 + // 验证节点必填参数 + // const [propsRes, propsError] = await to(propsRef.current.validateFields()); + // if (propsError) { + // message.error('节点必填项必须配置'); + // return; + // } + // propsRef.current.close(); setTimeout(() => { const data = graph.save(); // console.log(data); + // 验证节点必填参数 const errorNode = data.nodes.find((item) => item.formError === true); if (errorNode) { message.error(`【${errorNode.label}】节点配置验证失败`); @@ -117,11 +131,25 @@ const EditPipeline = () => { } return; } + + // 验证节点名称是否有重命名 + const nodeLabels = data.nodes.map((v) => v.label); + for (let i = 0; i < nodeLabels.length; i++) { + const current = nodeLabels[i]; + for (let j = i + 1; j < nodeLabels.length; j++) { + const next = nodeLabels[j]; + if (current === next) { + message.error(`存在重名的【${current}】节点`); + return; + } + } + } + const params = { ...locationParams, name: workflowInfo?.name, dag: data, - global_param: globalParamRes.global_param, + global_param: globalParam, }; saveWorkflow(params).then((ret) => { message.success('保存成功'); @@ -299,13 +327,19 @@ const EditPipeline = () => { const openNodeDrawer = (node, validate = false) => { // 获取所有的上游节点 const parentNodes = findAllParentNodes(graph, node); - // 如果没有打开过全局参数抽屉,获取不到全局参数 - const globalParams = - paramsDrawerRef.current.getFieldsValue().global_param || globalParamRef.current; + // q全局参数 + const globalParams = globalParamRef.current; // 打开节点编辑抽屉 propsRef.current.showDrawer(node.getModel(), globalParams, parentNodes, validate); }; + // 关闭全局参数节点,获取全局参数 + const closeGlobalParamsDrawer = () => { + const { global_param } = paramsDrawerRef.current.getFieldsValue(); + setGlobalParam(global_param); + closeParamsDrawer(); + }; + // 初始化图 const initGraph = () => { const contextMenu = initMenu(); @@ -730,7 +764,7 @@ const EditPipeline = () => { ref={paramsDrawerRef} open={paramsDrawerOpen} globalParam={globalParam} - onClose={closeParamsDrawer} + onClose={closeGlobalParamsDrawer} > ); diff --git a/react-ui/src/pages/Pipeline/components/PipelineNodeDrawer/index.tsx b/react-ui/src/pages/Pipeline/components/PipelineNodeDrawer/index.tsx index 4e9d3c8b..d0b8dfd6 100644 --- a/react-ui/src/pages/Pipeline/components/PipelineNodeDrawer/index.tsx +++ b/react-ui/src/pages/Pipeline/components/PipelineNodeDrawer/index.tsx @@ -77,6 +77,7 @@ const PipelineNodeParameter = forwardRef(({ onFormChange }: PipelineNodeParamete const res = { ...omit(stagingItem, ['control_strategy', 'task_info', 'in_parameters', 'out_parameters']), + ...omit(fields, ['control_strategy', 'task_info', 'in_parameters', 'out_parameters']), task_info: task_info, control_strategy: control_strategy, in_parameters: in_parameters,