admin-vue3/src/utils/formCreate.ts

69 lines
1.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* 针对 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
// 关联案例https://gitee.com/yudaocode/yudao-ui-admin-vue3/pulls/834/
return formCreate.toJson(designerRef.value.getOption())
}
/** 解码表单 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
}
/** 解码表单 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
}
}