useSceneLinkedgeData.ts
2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import { Ref, unref } from 'vue';
import { ExecutionAction } from '../ExecutionAction';
import { FlipFlop } from '../FlipFlop';
import { DefineComponentsBasicExpose } from '/#/utils';
import { SceneLinkageDataType, SceneLinkageFormRecordType } from './type';
import { FormActionType } from '/@/components/Form';
interface UseSceneLinkageDataParamsType {
  flipFlopElRef: Ref<InstanceType<typeof FlipFlop> | undefined>;
  executionConditionElRef: Ref<InstanceType<typeof FlipFlop> | undefined>;
  executionActionElRef: Ref<InstanceType<typeof ExecutionAction> | undefined>;
  basicFormActionType: FormActionType;
}
export function useSceneLinkageData({
  flipFlopElRef,
  executionActionElRef,
  executionConditionElRef,
  basicFormActionType,
}: UseSceneLinkageDataParamsType): DefineComponentsBasicExpose<SceneLinkageDataType> {
  const getFieldsValue = () => {
    const doActions = unref(executionActionElRef)?.getFieldsValue() || [];
    const doConditions = unref(executionConditionElRef)?.getFieldsValue() || [];
    const triggers = unref(flipFlopElRef)?.getFieldsValue() || [];
    const { name, description, organizationId } =
      basicFormActionType.getFieldsValue() as SceneLinkageFormRecordType;
    return {
      name,
      description,
      organizationId,
      doActions,
      doConditions,
      triggers,
    };
  };
  const setFieldsValue = (record: SceneLinkageDataType) => {
    const { doActions, doConditions, triggers, name, description, organizationId } = record;
    basicFormActionType.setFieldsValue({ name, description, organizationId });
    unref(flipFlopElRef)?.setFieldsValue(triggers);
    unref(executionConditionElRef)?.setFieldsValue(doConditions);
    unref(executionActionElRef)?.setFieldsValue(doActions);
  };
  const validate = async () => {
    await basicFormActionType.validate?.();
    await unref(flipFlopElRef)?.validate?.();
    await unref(executionConditionElRef)?.validate?.();
    await unref(executionActionElRef)?.validate?.();
  };
  const resetFieldsValue = () => {
    basicFormActionType.resetFields();
    unref(flipFlopElRef)?.resetFieldsValue?.();
    unref(executionConditionElRef)?.resetFieldsValue?.(true);
    unref(executionActionElRef)?.resetFieldsValue?.();
  };
  return {
    getFieldsValue,
    setFieldsValue,
    validate,
    resetFieldsValue,
  };
}