From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目

---
 src/utils/formCreate.ts |   68 ++++++++++++++++++++++++++++++++++
 1 files changed, 68 insertions(+), 0 deletions(-)

diff --git a/src/utils/formCreate.ts b/src/utils/formCreate.ts
new file mode 100644
index 0000000..e4e0dc3
--- /dev/null
+++ b/src/utils/formCreate.ts
@@ -0,0 +1,68 @@
+/**
+ * 閽堝 https://github.com/xaboy/form-create-designer 灏佽鐨勫伐鍏风被
+ */
+import { isRef } from 'vue'
+import formCreate from '@form-create/element-ui'
+
+/** 缂栫爜琛ㄥ崟 Conf */
+export const encodeConf = (designerRef: object) => {
+  // @ts-ignore
+  // 鍏宠仈妗堜緥锛歨ttps://gitee.com/yudaocode/yudao-ui-admin-vue3/pulls/834/
+  return formCreate.toJson(designerRef.value.getOption())
+}
+
+/** 瑙g爜琛ㄥ崟 Conf */
+export const decodeConf = (conf: string) => {
+  return formCreate.parseJson(conf)
+}
+
+/** 缂栫爜琛ㄥ崟 Fields */
+export const encodeFields = (designerRef: object) => {
+  // @ts-ignore
+  const rule = designerRef.value.getRule()
+  const fields: string[] = []
+  rule.forEach((item: any) => {
+    fields.push(formCreate.toJson(item))
+  })
+  return fields
+}
+
+/** 瑙g爜琛ㄥ崟 Fields */
+export const decodeFields = (fields: string[]) => {
+  const rule: object[] = []
+  fields.forEach((item) => {
+    rule.push(formCreate.parseJson(item))
+  })
+  return rule
+}
+
+/** 璁剧疆琛ㄥ崟鐨� Conf 鍜� Fields锛岄�傜敤 FcDesigner 鍦烘櫙 */
+export const setConfAndFields = (designerRef: object, conf: string, fields: string[]) => {
+  // @ts-ignore
+  designerRef.value.setOption(decodeConf(conf))
+  // @ts-ignore
+  designerRef.value.setRule(decodeFields(fields))
+}
+
+/** 璁剧疆琛ㄥ崟鐨� Conf 鍜� Fields锛岄�傜敤 form-create 鍦烘櫙 */
+export const setConfAndFields2 = (
+  detailPreview: object,
+  conf: string,
+  fields: string[],
+  value?: object
+) => {
+  if (isRef(detailPreview)) {
+    // @ts-ignore
+    detailPreview = detailPreview.value
+  }
+
+  // @ts-ignore
+  detailPreview.option = decodeConf(conf)
+  // @ts-ignore
+  detailPreview.rule = decodeFields(fields)
+
+  if (value) {
+    // @ts-ignore
+    detailPreview.value = value
+  }
+}

--
Gitblit v1.8.0