diff --git a/src/pages/backends/config/index.ts b/src/pages/backends/config/index.ts index ffef4265..b02da3fc 100644 --- a/src/pages/backends/config/index.ts +++ b/src/pages/backends/config/index.ts @@ -55,19 +55,29 @@ export const backendActions = [ ]; export const json2Yaml = (obj: Record) => { - if (!obj || !Object.keys(obj).length) return ''; - const res = jsYaml.dump(JSON.parse(JSON.stringify(obj))); - return res; + try { + if (!obj || !Object.keys(obj).length) return ''; + const res = jsYaml.dump(JSON.parse(JSON.stringify(obj))); + return res; + } catch (error) { + console.error('json2Yaml error:', error); + return ''; + } }; export const yaml2Json = (input: string) => { - const str = trim(input); - const obj = jsYaml.load(str, { schema: SEAL_SCHEMA }); - if (typeof obj !== 'object' || obj === null) { + try { + const str = trim(input); + const obj = jsYaml.load(str, { schema: SEAL_SCHEMA }); + if (typeof obj !== 'object' || obj === null) { + return {}; + } + const jsonStr = JSON.stringify(obj); + return JSON.parse(jsonStr); + } catch (error) { + console.error('yaml2Json error:', error); return {}; } - const jsonStr = JSON.stringify(obj); - return JSON.parse(jsonStr); }; export const customColors = [ diff --git a/src/pages/cluster-management/components/cluster-form.tsx b/src/pages/cluster-management/components/cluster-form.tsx index 3b0f42ad..4b8703e7 100644 --- a/src/pages/cluster-management/components/cluster-form.tsx +++ b/src/pages/cluster-management/components/cluster-form.tsx @@ -81,10 +81,23 @@ const ClusterForm: React.FC = forwardRef( form.submit(); }, setFieldsValue: (values: any) => { - form.setFieldsValue(values); + form.setFieldsValue({ + ...values, + worker_config: undefined + }); + const workerConfigYaml = json2Yaml(values.worker_config || {}); + advanceConfigRef.current?.setYamlValue(workerConfigYaml); }, getFieldsValue: () => { - return form.getFieldsValue(); + const workerConfig = yaml2Json( + advanceConfigRef.current?.getYamlValue() + ); + return { + ...form.getFieldsValue(), + worker_config: { + ...workerConfig + } + }; }, validateFields: async () => { const values = await form.validateFields();