diff --git a/src/utils/formCreate.ts b/src/utils/formCreate.ts index b20d50cc1..e4e0dc35c 100644 --- a/src/utils/formCreate.ts +++ b/src/utils/formCreate.ts @@ -4,24 +4,30 @@ import { isRef } from 'vue' import formCreate from '@form-create/element-ui' -// 编码表单 Conf +/** 编码表单 Conf */ export const encodeConf = (designerRef: object) => { // @ts-ignore + // 关联案例:https://gitee.com/yudaocode/yudao-ui-admin-vue3/pulls/834/ return formCreate.toJson(designerRef.value.getOption()) } -// 编码表单 Fields +/** 解码表单 Conf */ +export const decodeConf = (conf: string) => { + return formCreate.parseJson(conf) +} + +/** 编码表单 Fields */ export const encodeFields = (designerRef: object) => { // @ts-ignore - const rule = JSON.parse(designerRef.value.getJson()) + const rule = designerRef.value.getRule() const fields: string[] = [] - rule.forEach((item) => { - fields.push(JSON.stringify(item)) + rule.forEach((item: any) => { + fields.push(formCreate.toJson(item)) }) return fields } -// 解码表单 Fields +/** 解码表单 Fields */ export const decodeFields = (fields: string[]) => { const rule: object[] = [] fields.forEach((item) => { @@ -30,15 +36,15 @@ export const decodeFields = (fields: string[]) => { return rule } -// 设置表单的 Conf 和 Fields,适用 FcDesigner 场景 -export const setConfAndFields = (designerRef: object, conf: string, fields: string) => { +/** 设置表单的 Conf 和 Fields,适用 FcDesigner 场景 */ +export const setConfAndFields = (designerRef: object, conf: string, fields: string[]) => { // @ts-ignore - designerRef.value.setOption(formCreate.parseJson(conf)) + designerRef.value.setOption(decodeConf(conf)) // @ts-ignore designerRef.value.setRule(decodeFields(fields)) } -// 设置表单的 Conf 和 Fields,适用 form-create 场景 +/** 设置表单的 Conf 和 Fields,适用 form-create 场景 */ export const setConfAndFields2 = ( detailPreview: object, conf: string, @@ -51,7 +57,7 @@ export const setConfAndFields2 = ( } // @ts-ignore - detailPreview.option = formCreate.parseJson(conf) + detailPreview.option = decodeConf(conf) // @ts-ignore detailPreview.rule = decodeFields(fields)