浏览代码

834 fix:bpm 流程表单编辑打开直接保存js丢失问题修复

YunaiV 2 月之前
父节点
当前提交
500705df07
共有 1 个文件被更改,包括 17 次插入11 次删除
  1. 17 11
      src/utils/formCreate.ts

+ 17 - 11
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)