Commit 1b890880d72616750244a5742d68eb358e374c7b

Authored by xp.Huang
2 parents 8db7b174 b721a905

Merge branch 'perf/rule-chain' into 'main_dev'

perf: 优化规则链设计器,新增提交前置钩子

See merge request yunteng/thingskit-front!1059
@@ -4,12 +4,6 @@ import { CreateModalDefineExposeType, AwaitPopupWindowReturnDataType } from '../ @@ -4,12 +4,6 @@ import { CreateModalDefineExposeType, AwaitPopupWindowReturnDataType } from '../
4 import { EdgeData, NodeData } from '../types/node'; 4 import { EdgeData, NodeData } from '../types/node';
5 import { DataActionModeEnum } from '/@/enums/toolEnum'; 5 import { DataActionModeEnum } from '/@/enums/toolEnum';
6 import { ElementsTypeEnum } from '../enum'; 6 import { ElementsTypeEnum } from '../enum';
7 -import { FilterCategoryComponentEnum } from '../enum/category';  
8 -import { useMessage } from '/@/hooks/web/useMessage';  
9 -import { CheckExistenceFieldsNameEnum } from '../enum/formField/filter';  
10 -import { useI18n } from '/@/hooks/web/useI18n';  
11 -  
12 -const { t } = useI18n();  
13 7
14 interface OptionsType { 8 interface OptionsType {
15 mode: DataActionModeEnum; 9 mode: DataActionModeEnum;
@@ -108,25 +102,12 @@ export function useAwaitPopupWindowBindData( @@ -108,25 +102,12 @@ export function useAwaitPopupWindowBindData(
108 ); 102 );
109 }; 103 };
110 104
111 - const { createMessage } = useMessage();  
112 -  
113 const handleSubmit = async (extraData: Recordable = {}) => { 105 const handleSubmit = async (extraData: Recordable = {}) => {
114 const { flag } = await validate(); 106 const { flag } = await validate();
115 if (!flag) return; 107 if (!flag) return;
  108 + await unref(createComponentEl)?.beforeSubmit?.();
116 const value = await unref(createComponentEl)?.getFieldsValue?.(); 109 const value = await unref(createComponentEl)?.getFieldsValue?.();
117 - const { config } = nodeData.value || {};  
118 - if (  
119 - config?.key === FilterCategoryComponentEnum.CHECK_EXISTENCE_FIELDS &&  
120 - !value?.messageNames &&  
121 - !value?.messageNames  
122 - ) {  
123 - createMessage.warning(  
124 - `${t(CheckExistenceFieldsNameEnum.MESSAGE_NAMES)}和${t(  
125 - CheckExistenceFieldsNameEnum.METADATA_NAMES  
126 - )}最少选填一个`  
127 - );  
128 - return true;  
129 - } 110 +
130 unref(resolveFn)?.({ 111 unref(resolveFn)?.({
131 flag: true, 112 flag: true,
132 data: handleSubmitData(extraData, value), 113 data: handleSubmitData(extraData, value),
@@ -3,11 +3,16 @@ @@ -3,11 +3,16 @@
3 import { BasicForm, useForm } from '/@/components/Form'; 3 import { BasicForm, useForm } from '/@/components/Form';
4 import { formSchemas } from './create.config'; 4 import { formSchemas } from './create.config';
5 import { NodeData } from '../../../types/node'; 5 import { NodeData } from '../../../types/node';
  6 + import { useMessage } from '/@/hooks/web/useMessage';
  7 + import { useI18n } from '/@/hooks/web/useI18n';
  8 + import { CheckExistenceFieldsNameEnum } from '../../../enum/formField/filter';
6 9
7 defineProps<{ 10 defineProps<{
8 config: NodeData; 11 config: NodeData;
9 }>(); 12 }>();
10 13
  14 + const { t } = useI18n();
  15 +
11 const [register, { validate, getFieldsValue, setFieldsValue, resetFields }] = useForm({ 16 const [register, { validate, getFieldsValue, setFieldsValue, resetFields }] = useForm({
12 schemas: formSchemas, 17 schemas: formSchemas,
13 showActionButtonGroup: false, 18 showActionButtonGroup: false,
@@ -24,9 +29,22 @@ @@ -24,9 +29,22 @@
24 setFieldsValue(value); 29 setFieldsValue(value);
25 }; 30 };
26 31
  32 + const { createMessage } = useMessage();
  33 + const beforeSubmit = async () => {
  34 + const value = getFieldsValue();
  35 + if (!value?.messageNames && !value?.messageNames) {
  36 + const errorMessage = `${t(CheckExistenceFieldsNameEnum.MESSAGE_NAMES)}和${t(
  37 + CheckExistenceFieldsNameEnum.METADATA_NAMES
  38 + )}最少选填一个`;
  39 + createMessage.warning(errorMessage);
  40 + return Promise.reject(errorMessage);
  41 + }
  42 + };
  43 +
27 defineExpose({ 44 defineExpose({
28 setFieldsValue: setValue, 45 setFieldsValue: setValue,
29 getFieldsValue: getValue, 46 getFieldsValue: getValue,
  47 + beforeSubmit,
30 } as CreateModalDefineExposeType); 48 } as CreateModalDefineExposeType);
31 </script> 49 </script>
32 50
@@ -56,8 +56,7 @@ @@ -56,8 +56,7 @@
56 const handleModalOk = async () => { 56 const handleModalOk = async () => {
57 await validate(); 57 await validate();
58 const data = getFieldsValue(); 58 const data = getFieldsValue();
59 - const flag = await handleSubmit(data);  
60 - if (flag) return; 59 + await handleSubmit(data);
61 resetFieldsValue(); 60 resetFieldsValue();
62 }; 61 };
63 62
@@ -15,6 +15,8 @@ export interface CreateModalDefineExposeType { @@ -15,6 +15,8 @@ export interface CreateModalDefineExposeType {
15 validate?: () => Promise<{ flag: boolean; error?: RuleError }>; 15 validate?: () => Promise<{ flag: boolean; error?: RuleError }>;
16 getFieldsValue?: () => Promise<Recordable>; 16 getFieldsValue?: () => Promise<Recordable>;
17 setFieldsValue?: (value?: DefaultNodeConfig, nodeData?: NodeData) => void; 17 setFieldsValue?: (value?: DefaultNodeConfig, nodeData?: NodeData) => void;
  18 + clearValidate?: (name?: string | string[] | undefined) => Promise<void>;
  19 + beforeSubmit?: () => Promise<any>;
18 } 20 }
19 21
20 export interface CreateModalDefineEmitType { 22 export interface CreateModalDefineEmitType {