feat:【antd/ele】【组件】form-create 封装的代码统一评审

This commit is contained in:
YunaiV
2025-11-20 16:10:41 +08:00
parent 4aef96a8f8
commit 342a948bc0
17 changed files with 73 additions and 102 deletions

View File

@@ -1,9 +1,13 @@
import type { Rule } from '@form-create/element-ui';
import type { Ref } from 'vue';
import type { Menu } from '#/components/form-create/typing';
import { isRef, nextTick, onMounted } from 'vue';
import formCreate from '@form-create/element-ui';
import { apiSelectRule } from '#/components/form-create/rules/data';
import {
@@ -15,12 +19,12 @@ import {
useUploadImagesRule,
} from './rules';
// 编码表单 Conf
/** 编码表单 Conf */
export function encodeConf(designerRef: any) {
return JSON.stringify(designerRef.value.getOption());
}
// 编码表单 Fields
/** 编码表单 Fields */
export function encodeFields(designerRef: any) {
const rule = JSON.parse(designerRef.value.getJson());
const fields: string[] = [];
@@ -30,28 +34,28 @@ export function encodeFields(designerRef: any) {
return fields;
}
// 解码表单 Fields
/** 解码表单 Fields */
export function decodeFields(fields: string[]) {
const rule: object[] = [];
const rule: Rule[] = [];
fields.forEach((item) => {
rule.push(JSON.parse(item));
rule.push(formCreate.parseJson(item));
});
return rule;
}
// 设置表单的 Conf 和 Fields适用 FcDesigner 场景
/** 设置表单的 Conf 和 Fields适用 FcDesigner 场景 */
export function setConfAndFields(
designerRef: any,
conf: string,
fields: string | string[],
) {
designerRef.value.setOption(JSON.parse(conf));
designerRef.value.setOption(formCreate.parseJson(conf));
// 处理 fields 参数类型,确保传入 decodeFields 的是 string[] 类型
const fieldsArray = Array.isArray(fields) ? fields : [fields];
designerRef.value.setRule(decodeFields(fieldsArray));
}
// 设置表单的 Conf 和 Fields适用 form-create 场景
/** 设置表单的 Conf 和 Fields适用 form-create 场景 */
export function setConfAndFields2(
detailPreview: any,
conf: string,
@@ -61,7 +65,7 @@ export function setConfAndFields2(
if (isRef(detailPreview)) {
detailPreview = detailPreview.value;
}
detailPreview.option = JSON.parse(conf);
detailPreview.option = formCreate.parseJson(conf);
detailPreview.rule = decodeFields(fields);
if (value) {
detailPreview.value = value;
@@ -151,9 +155,7 @@ export async function useFormCreateDesigner(designer: Ref) {
const uploadImageRule = useUploadImageRule();
const uploadImagesRule = useUploadImagesRule();
/**
* 构建表单组件
*/
/** 构建表单组件 */
function buildFormComponents() {
// 移除自带的上传组件规则,使用 uploadFileRule、uploadImgRule、uploadImgsRule 替代
designer.value?.removeMenuItem('upload');
@@ -196,9 +198,7 @@ export async function useFormCreateDesigner(designer: Ref) {
event: ['click', 'change', 'visibleChange', 'clear', 'blur', 'focus'],
});
/**
* 构建系统字段菜单
*/
/** 构建系统字段菜单 */
function buildSystemMenu() {
// 移除自带的下拉选择器组件,使用 currencySelectRule 替代
// designer.value?.removeMenuItem('select')