Pre Merge pull request !206 from Jason/dev

pull/206/MERGE
Jason 2025-08-25 02:33:52 +00:00 committed by Gitee
commit 5ecd48114a
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 10 additions and 9 deletions

View File

@ -4,6 +4,7 @@
// TODO @芋艿:后续这些 form-create 的优化;另外需要使用 form-create-helper 会好点
import { isRef } from 'vue';
import formCreate from '@form-create/ant-design-vue';
// 编码表单 Conf
export const encodeConf = (designerRef: any) => {
return JSON.stringify(designerRef.value.getOption());
@ -23,7 +24,7 @@ export const encodeFields = (designerRef: any) => {
export const decodeFields = (fields: string[]) => {
const rule: object[] = [];
fields.forEach((item) => {
rule.push(JSON.parse(item));
rule.push(formCreate.parseJson(item));
});
return rule;
};
@ -34,7 +35,7 @@ export const setConfAndFields = (
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));
@ -50,7 +51,7 @@ export const 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;

View File

@ -7,6 +7,7 @@ import { computed, nextTick, ref, watch } from 'vue';
import { useTabs } from '@vben/hooks';
import { IconifyIcon } from '@vben/icons';
import formCreate from '@form-create/ant-design-vue';
import { Button, Card, Col, message, Row, Space, Tabs } from 'ant-design-vue';
import { getProcessDefinition } from '#/api/bpm/definition';
@ -51,7 +52,7 @@ const props = defineProps({
const emit = defineEmits(['cancel']);
// form-create
const isFormReady = ref(false)
const isFormReady = ref(false);
const { closeCurrentTab } = useTabs();
@ -129,18 +130,17 @@ async function initProcessInfo(row: any, formVariables?: any) {
// formVariables row.formFields
// formVariables
//
const allowedFields = new Set(
decodeFields(row.formFields).map((fieldObj: any) => fieldObj.field),
);
const formApi = formCreate.create(decodeFields(row.formFields));
const allowedFields = formApi.fields();
for (const key in formVariables) {
if (!allowedFields.has(key)) {
if (!allowedFields.includes(key)) {
delete formVariables[key];
}
}
setConfAndFields2(detailForm, row.formConf, row.formFields, formVariables);
//
isFormReady.value = true
isFormReady.value = true;
await nextTick();
fApi.value?.btn.show(false); //