Files
aiot-platform-ui/apps/web-ele/src/utils/formCreate.ts

65 lines
2.0 KiB
TypeScript
Raw Normal View History

/**
* https://github.com/xaboy/form-create-designer 封装的工具类
*/
import { isRef } from 'vue';
// 编码表单 Conf
2025-10-14 10:21:57 +08:00
export function encodeConf(designerRef: object) {
// @ts-ignore designerRef.value is dynamically added by form-create-designer
return JSON.stringify(designerRef.value.getOption());
2025-10-14 10:21:57 +08:00
}
// 编码表单 Fields
2025-10-14 10:21:57 +08:00
export function encodeFields(designerRef: object) {
// @ts-ignore designerRef.value is dynamically added by form-create-designer
const rule = JSON.parse(designerRef.value.getJson());
const fields: string[] = [];
rule.forEach((item: unknown) => {
fields.push(JSON.stringify(item));
});
return fields;
2025-10-14 10:21:57 +08:00
}
// 解码表单 Fields
2025-10-14 10:21:57 +08:00
export function decodeFields(fields: string[]) {
const rule: object[] = [];
fields.forEach((item) => {
rule.push(JSON.parse(item));
});
return rule;
2025-10-14 10:21:57 +08:00
}
// 设置表单的 Conf 和 Fields适用 FcDesigner 场景
2025-10-14 10:21:57 +08:00
export function setConfAndFields(
designerRef: object,
conf: string,
fields: string,
2025-10-14 10:21:57 +08:00
) {
// @ts-ignore designerRef.value is dynamically added by form-create-designer
designerRef.value.setOption(JSON.parse(conf));
// @ts-ignore designerRef.value is dynamically added by form-create-designer
designerRef.value.setRule(decodeFields(fields));
2025-10-14 10:21:57 +08:00
}
// 设置表单的 Conf 和 Fields适用 form-create 场景
2025-10-14 10:21:57 +08:00
export function setConfAndFields2(
detailPreview: object,
conf: string,
fields: string[],
value?: object,
2025-10-14 10:21:57 +08:00
) {
if (isRef(detailPreview)) {
// @ts-ignore detailPreview.value is dynamically added by form-create-designer
detailPreview = detailPreview.value;
}
// @ts-ignore detailPreview properties are dynamically added by form-create-designer
detailPreview.option = JSON.parse(conf);
// @ts-ignore detailPreview properties are dynamically added by form-create-designer
detailPreview.rule = decodeFields(fields);
if (value) {
// @ts-ignore detailPreview properties are dynamically added by form-create-designer
detailPreview.value = value;
}
2025-10-14 10:21:57 +08:00
}