@jari-ace/element-plus-component 0.1.0 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +18 -18
  2. package/dist/components/enumPicker/index.d.ts +4 -0
  3. package/dist/components/enumPicker/index.d.ts.map +1 -0
  4. package/dist/components/enumPicker/index.js +4 -0
  5. package/dist/components/enumPicker/index.js.map +1 -0
  6. package/dist/components/enumPicker/src/EnumPicker.vue.d.ts +29 -0
  7. package/dist/components/enumPicker/src/EnumPicker.vue.d.ts.map +1 -0
  8. package/dist/components/enumPicker/src/EnumPicker.vue.js +140 -0
  9. package/dist/components/enumPicker/src/EnumPicker.vue.js.map +1 -0
  10. package/dist/components/form/JaForm.vue.d.ts +23 -126
  11. package/dist/components/form/JaForm.vue.d.ts.map +1 -1
  12. package/dist/components/form/JaForm.vue.js +127 -192
  13. package/dist/components/form/JaForm.vue.js.map +1 -1
  14. package/dist/components/formItem/JaFormItem.vue.d.ts +12 -12
  15. package/dist/components/index.d.ts +1 -0
  16. package/dist/components/index.d.ts.map +1 -1
  17. package/dist/components/index.js +1 -0
  18. package/dist/components/index.js.map +1 -1
  19. package/dist/components/rolePicker/baseRolePicker.vue.d.ts.map +1 -1
  20. package/dist/components/rolePicker/baseRolePicker.vue.js +1 -0
  21. package/dist/components/rolePicker/baseRolePicker.vue.js.map +1 -1
  22. package/dist/components/userTag/UserInfoTag.vue.d.ts +1 -1
  23. package/dist/hooks/useBackendValidations.d.ts +7 -1
  24. package/dist/hooks/useBackendValidations.d.ts.map +1 -1
  25. package/dist/hooks/useBackendValidations.js +21 -2
  26. package/dist/hooks/useBackendValidations.js.map +1 -1
  27. package/dist/hooks/useBridage.d.ts +3 -3
  28. package/dist/hooks/useBridage.d.ts.map +1 -1
  29. package/dist/hooks/useBridage.js +29 -22
  30. package/dist/hooks/useBridage.js.map +1 -1
  31. package/lib/index.css +1 -1
  32. package/lib/index.js +1437 -1283
  33. package/lib/index.umd.cjs +2 -2
  34. package/package.json +61 -61
  35. package/packages/components/autoComplete/JaAutoComplete.vue +47 -47
  36. package/packages/components/autoComplete/index.ts +5 -5
  37. package/packages/components/avatar/JaAvatar.vue +126 -126
  38. package/packages/components/avatar/avatarToken.ts +11 -11
  39. package/packages/components/avatar/defaultImg.ts +14 -14
  40. package/packages/components/avatar/index.ts +7 -7
  41. package/packages/components/button/JaButton.vue +51 -51
  42. package/packages/components/button/index.ts +4 -4
  43. package/packages/components/channelPicker/index.ts +7 -7
  44. package/packages/components/channelPicker/src/ChannelPicker.vue +43 -43
  45. package/packages/components/channelPicker/src/JaChannelPicker.vue +42 -42
  46. package/packages/components/checkbox/JaCheckbox.vue +73 -73
  47. package/packages/components/checkbox/index.ts +4 -4
  48. package/packages/components/checkboxGroup/JaCheckboxGroup.vue +45 -45
  49. package/packages/components/checkboxGroup/index.ts +4 -4
  50. package/packages/components/customGroupTree/index.ts +10 -10
  51. package/packages/components/customGroupTree/src/customGroupTree.vue +91 -91
  52. package/packages/components/datePicker/JaDatePicker.vue +52 -52
  53. package/packages/components/datePicker/index.ts +4 -4
  54. package/packages/components/departmentPicker/index.ts +4 -4
  55. package/packages/components/departmentPicker/src/DepartmentPicker.vue +107 -107
  56. package/packages/components/departmentPicker/src/consts.ts +2 -2
  57. package/packages/components/departmentTree/index.ts +10 -10
  58. package/packages/components/departmentTree/src/departmentTree.vue +135 -135
  59. package/packages/components/dropdownButton/JaDropdownButton.vue +59 -59
  60. package/packages/components/dropdownButton/index.ts +4 -4
  61. package/packages/components/enumList/EnumListInput.vue +107 -107
  62. package/packages/components/enumList/JaEnumList.vue +39 -39
  63. package/packages/components/enumList/index.ts +7 -7
  64. package/packages/components/enumPicker/index.ts +5 -0
  65. package/packages/components/enumPicker/src/EnumPicker.vue +103 -0
  66. package/packages/components/form/JaForm.vue +186 -126
  67. package/packages/components/form/index.ts +5 -5
  68. package/packages/components/form/types.ts +4 -4
  69. package/packages/components/formItem/JaFormItem.vue +68 -68
  70. package/packages/components/formItem/index.ts +4 -4
  71. package/packages/components/index.ts +34 -33
  72. package/packages/components/input/JaInput.vue +143 -143
  73. package/packages/components/input/index.ts +4 -4
  74. package/packages/components/inputI18n/I18nBundleEditor.vue +76 -76
  75. package/packages/components/inputI18n/InputI18n.vue +142 -142
  76. package/packages/components/inputI18n/JaInputI18n.vue +50 -50
  77. package/packages/components/inputI18n/index.ts +8 -8
  78. package/packages/components/inputNumber/JaInputNumber.vue +98 -98
  79. package/packages/components/inputNumber/index.ts +4 -4
  80. package/packages/components/mapItemList/JaMapItemList.vue +35 -35
  81. package/packages/components/mapItemList/MapItemListInput.vue +191 -191
  82. package/packages/components/mapItemList/index.ts +7 -7
  83. package/packages/components/numberList/JaNumberList.vue +36 -36
  84. package/packages/components/numberList/NumberListInput.vue +111 -111
  85. package/packages/components/numberList/index.ts +7 -7
  86. package/packages/components/properyPicker/JaPropertyPicker.vue +38 -38
  87. package/packages/components/properyPicker/PropertyPicker.vue +314 -314
  88. package/packages/components/properyPicker/index.ts +7 -7
  89. package/packages/components/radioGroup/JaRadioGroup.vue +50 -50
  90. package/packages/components/radioGroup/index.ts +4 -4
  91. package/packages/components/rolePicker/RoleEditor.vue +129 -129
  92. package/packages/components/rolePicker/RolePicker.vue +44 -44
  93. package/packages/components/rolePicker/RolePickerRaw.vue +56 -56
  94. package/packages/components/rolePicker/baseRolePicker.vue +87 -86
  95. package/packages/components/rolePicker/index.ts +10 -10
  96. package/packages/components/scrollbar/Scrollbar.vue +89 -89
  97. package/packages/components/scrollbar/index.ts +5 -5
  98. package/packages/components/scrollbar/utils.ts +17 -17
  99. package/packages/components/select/JaSelect.vue +48 -48
  100. package/packages/components/select/index.ts +4 -4
  101. package/packages/components/stringList/JaStringList.vue +36 -36
  102. package/packages/components/stringList/StringListInput.vue +96 -96
  103. package/packages/components/stringList/index.ts +7 -7
  104. package/packages/components/switch/JaSwitch.vue +50 -50
  105. package/packages/components/switch/index.ts +4 -4
  106. package/packages/components/timePicker/JaTimePicker.vue +52 -52
  107. package/packages/components/timePicker/index.ts +5 -5
  108. package/packages/components/tip/index.ts +4 -4
  109. package/packages/components/tip/src/AceTip.vue +43 -43
  110. package/packages/components/upload/index.ts +6 -6
  111. package/packages/components/upload/src/Upload.vue +25 -25
  112. package/packages/components/upload/src/type.ts +3 -3
  113. package/packages/components/userGroupPicker/index.ts +4 -4
  114. package/packages/components/userGroupPicker/src/UserGroupPicker.vue +94 -94
  115. package/packages/components/userGroupTree/index.ts +10 -10
  116. package/packages/components/userGroupTree/src/userGroupTree.vue +149 -149
  117. package/packages/components/userPicker/index.ts +10 -10
  118. package/packages/components/userPicker/src/CustomGroupManager.vue +189 -189
  119. package/packages/components/userPicker/src/JaUserList.vue +283 -283
  120. package/packages/components/userPicker/src/JaUserPicker.vue +37 -37
  121. package/packages/components/userPicker/src/UserPicker.vue +366 -366
  122. package/packages/components/userSelectDialog/index.ts +6 -6
  123. package/packages/components/userSelectDialog/src/userSelectDialog.vue +447 -447
  124. package/packages/components/userTag/UserInfoTag.vue +397 -397
  125. package/packages/components/userTag/index.ts +6 -6
  126. package/packages/components/userTag/sharedAxios.ts +8 -8
  127. package/packages/directives/auth/index.ts +41 -41
  128. package/packages/directives/autofocus/index.ts +29 -29
  129. package/packages/directives/index.ts +10 -10
  130. package/packages/directives/shortcut/index.ts +192 -192
  131. package/packages/hooks/useAppInstances.ts +34 -34
  132. package/packages/hooks/useBackendValidations.ts +34 -8
  133. package/packages/hooks/useBridage.ts +157 -148
  134. package/packages/hooks/useDateTimeShortCuts.ts +65 -65
  135. package/packages/hooks/useTreeData.ts +45 -45
  136. package/packages/hooks/useUserRefQuery.ts +222 -222
  137. package/packages/index.ts +21 -21
  138. package/packages/list.json +7 -7
  139. package/packages/types/custom.d.ts +13 -13
  140. package/packages/types/window.d.ts +16 -16
  141. package/packages/utils/install.ts +43 -43
  142. package/packages/utils/objectUtils.ts +31 -31
  143. package/theme-style/fonts/iconfont.json +5196 -5196
  144. package/theme-style/index.scss +10 -10
  145. package/theme-style/styles/element-plus-var.scss +1419 -1419
  146. package/theme-style/styles/iconfont.css +2979 -2979
  147. package/theme-style/styles/theme-var.scss +72 -72
  148. package/theme-style/styles/transition.scss +122 -122
@@ -1,39 +1,39 @@
1
- <script setup lang="ts">
2
- import {inject, watch, ref} from "vue";
3
- import {getValue, setValue} from "../../utils/objectUtils";
4
- import type {ValidationInstance} from "../../hooks/useBackendValidations";
5
- import EnumListInput from "./EnumListInput.vue";
6
-
7
- const model = inject('aceFormModel') as Record<string, never>
8
- const prop = inject('aceFormItemProp') as string
9
- const validator = inject('aceFormValidator') as ValidationInstance
10
- const emit = defineEmits<{
11
- change: [value: string[]]
12
- }>()
13
-
14
- const props = defineProps<{ enumValues: Record<string, string> }>()
15
-
16
- function onChange(value: string[]) {
17
- validator.removeFieldError(prop)
18
- setValue(model.formData, prop, mv.value);
19
- emit('change', value)
20
- }
21
-
22
- const mv = ref(getValue(model.formData, prop) as string[] ?? [""]);
23
- watch(() => model.formData, () => {
24
- mv.value = getValue(model.formData, prop) as string[] ?? [""]
25
- }, {
26
- deep: true
27
- })
28
- </script>
29
-
30
- <template>
31
- <enum-list-input v-model="mv"
32
- :enum-values="enumValues"
33
- @change="onChange"
34
- v-bind="$attrs"/>
35
- </template>
36
-
37
- <style scoped lang="scss">
38
-
39
- </style>
1
+ <script setup lang="ts">
2
+ import {inject, watch, ref} from "vue";
3
+ import {getValue, setValue} from "../../utils/objectUtils";
4
+ import type {ValidationInstance} from "../../hooks/useBackendValidations";
5
+ import EnumListInput from "./EnumListInput.vue";
6
+
7
+ const model = inject('aceFormModel') as Record<string, never>
8
+ const prop = inject('aceFormItemProp') as string
9
+ const validator = inject('aceFormValidator') as ValidationInstance
10
+ const emit = defineEmits<{
11
+ change: [value: string[]]
12
+ }>()
13
+
14
+ const props = defineProps<{ enumValues: Record<string, string> }>()
15
+
16
+ function onChange(value: string[]) {
17
+ validator.removeFieldError(prop)
18
+ setValue(model.formData, prop, mv.value);
19
+ emit('change', value)
20
+ }
21
+
22
+ const mv = ref(getValue(model.formData, prop) as string[] ?? [""]);
23
+ watch(() => model.formData, () => {
24
+ mv.value = getValue(model.formData, prop) as string[] ?? [""]
25
+ }, {
26
+ deep: true
27
+ })
28
+ </script>
29
+
30
+ <template>
31
+ <enum-list-input v-model="mv"
32
+ :enum-values="enumValues"
33
+ @change="onChange"
34
+ v-bind="$attrs"/>
35
+ </template>
36
+
37
+ <style scoped lang="scss">
38
+
39
+ </style>
@@ -1,7 +1,7 @@
1
- import {type SFCWithInstall, withInstall} from "../../utils/install";
2
- import EnumList from "./JaEnumList.vue";
3
- import EnumListInput from "./EnumListInput.vue";
4
-
5
- export const JaEnumList: SFCWithInstall<typeof EnumList> = withInstall(EnumList);
6
-
7
- export const JaEnumListRaw: SFCWithInstall<typeof EnumListInput> = withInstall(EnumListInput);
1
+ import {type SFCWithInstall, withInstall} from "../../utils/install";
2
+ import EnumList from "./JaEnumList.vue";
3
+ import EnumListInput from "./EnumListInput.vue";
4
+
5
+ export const JaEnumList: SFCWithInstall<typeof EnumList> = withInstall(EnumList);
6
+
7
+ export const JaEnumListRaw: SFCWithInstall<typeof EnumListInput> = withInstall(EnumListInput);
@@ -0,0 +1,5 @@
1
+
2
+ import {type SFCWithInstall, withInstall} from "../../utils/install";
3
+ import EnumPicker from "./src/EnumPicker.vue";
4
+
5
+ export const JaEnumPicker: SFCWithInstall<typeof EnumPicker> = withInstall(EnumPicker);
@@ -0,0 +1,103 @@
1
+ <script setup lang="ts">
2
+ import type { EnumValueDefinition } from '@jari-ace/app-bolts';
3
+
4
+ import { computed, ref, watch } from 'vue';
5
+
6
+ import { createAxiosWithoutCache } from '@jari-ace/app-bolts';
7
+ import { useEnumApi } from '@jari-ace/app-bolts/src/api/domainModel/enum';
8
+ import { ElOption, ElSelect } from 'element-plus';
9
+ // 遍历出EnumValueDefinition类型的KEY 并排除掉
10
+ type KeyFields = 'id' | 'text' | 'value';
11
+
12
+ interface ModelValue {
13
+ value?: string;
14
+ text?: string;
15
+ id?: string;
16
+ }
17
+ const props = withDefaults(
18
+ defineProps<{
19
+ clearable?: boolean; // 是否可清空
20
+ filterable?: boolean; // 是否可筛选
21
+ keyField?: KeyFields;
22
+ multiple?: boolean; // 是否多选
23
+ name: string; // 枚举名称,用于获取枚举数据
24
+ serviceName: string;
25
+ }>(),
26
+ {
27
+ multiple: false,
28
+ clearable: true,
29
+ filterable: true,
30
+ keyField: 'value',
31
+ },
32
+ );
33
+
34
+ const enums = ref<EnumValueDefinition[]>([]);
35
+ const loading = ref<boolean>(false);
36
+ const model = defineModel<ModelValue[]>({
37
+ default: () => [],
38
+ });
39
+
40
+ const axios = createAxiosWithoutCache();
41
+ const api = useEnumApi(axios);
42
+ async function loadData() {
43
+ if (!props.name || !props.serviceName) return;
44
+ loading.value = true;
45
+ api
46
+ .queryByName(props.serviceName, props.name)
47
+ .then((res) => {
48
+ enums.value = res.values;
49
+ })
50
+ .finally(() => {
51
+ loading.value = false;
52
+ });
53
+ }
54
+
55
+ const modelValue = computed((): string | string[] | undefined => {
56
+ if (props.multiple) {
57
+ return model.value.map((m) => m[props.keyField] as string) || [];
58
+ } else {
59
+ if (model.value[0] !== undefined) {
60
+ return model.value[0][props.keyField];
61
+ }
62
+ }
63
+ return '';
64
+ });
65
+
66
+ const handleChange = (value: string | string[]) => {
67
+ if (typeof value === 'string') {
68
+ const obj = enums.value.find((e) => e[props.keyField] === value);
69
+ model.value = obj ? [obj] : [];
70
+ } else {
71
+ model.value = enums.value.filter((e) => value.includes(e[props.keyField]));
72
+ }
73
+ };
74
+
75
+ // function filter(queryName: string) {
76
+ // bindingChannels.value = channels.value?.filter(c => c.name.indexOf(queryName) > -1) ?? [];
77
+ // }
78
+
79
+ loadData();
80
+
81
+ watch(() => props.name, loadData);
82
+ watch(() => props.serviceName, loadData);
83
+ </script>
84
+
85
+ <template>
86
+ <ElSelect
87
+ v-loading="loading"
88
+ :model-value="modelValue"
89
+ :filterable="props.filterable"
90
+ :multiple="props.multiple"
91
+ :clearable="props.clearable"
92
+ @change="handleChange"
93
+ >
94
+ <ElOption
95
+ v-for="item in enums"
96
+ :key="item.id"
97
+ :value="item[props.keyField]"
98
+ :label="item.text"
99
+ />
100
+ </ElSelect>
101
+ </template>
102
+
103
+ <style scoped lang="scss"></style>
@@ -1,126 +1,186 @@
1
- <script setup lang="ts">
2
- import {type PropType, provide, ref, computed, watch} from "vue";
3
- import {ElForm, type FormInstance, type FormRules} from "element-plus";
4
- import {type ValidationInstance} from "../../hooks/useBackendValidations";
5
- import type {JaFormModel} from "./types";
6
-
7
- const formRef = ref<FormInstance | undefined>(undefined);
8
-
9
- const props = defineProps({
10
- model: {
11
- type: Object as PropType<JaFormModel>,
12
- required: true,
13
- },
14
- inline: {
15
- type: Boolean,
16
- default: false,
17
- },
18
- labelPosition: {
19
- type: String as PropType<"left" | "top" | "right">,
20
- default: "top",
21
- },
22
- labelWidth: {
23
- type: [String, Number],
24
- },
25
- labelSuffix: {
26
- type: String,
27
- },
28
- hideRequiredAsterisk: {
29
- type: Boolean,
30
- default: false,
31
- },
32
- showMessage: {
33
- type: Boolean,
34
- default: true,
35
- },
36
- inlineMessage: {
37
- type: Boolean,
38
- default: true,
39
- },
40
- statusIcon: {
41
- type: Boolean,
42
- default: false,
43
- },
44
- validateOnRuleChange: {
45
- type: Boolean,
46
- default: true,
47
- },
48
- rules: {
49
- type: Object as PropType<FormRules>,
50
- default: {},
51
- },
52
- size: {
53
- type: String as PropType<"small" | "default" | "large">,
54
- default: "small",
55
- },
56
- disabled: {
57
- type: Boolean,
58
- default: false,
59
- },
60
- scrollToError: {
61
- type: Boolean,
62
- default: true,
63
- },
64
- validator: {
65
- type: Object as PropType<ValidationInstance>,
66
- required: true,
67
- },
68
- });
69
-
70
- defineEmits(["validate", "click"]);
71
- provide("aceFormValidator", props.validator);
72
- provide("aceFormModel", props.model);
73
- provide("aceFormSize", props.size);
74
-
75
- const rules = computed<FormRules>(() => {
76
- return {
77
- ...props.rules,
78
- ...props.validator.rules,
79
- };
80
- });
81
-
82
- defineExpose({
83
- elForm: formRef,
84
- validate: (submit: () => Promise<any>, onFail?: () => void) => {
85
- formRef.value!.clearValidate();
86
- return submit()
87
- .then(() => {
88
- props.validator?.clearFiledErrors();
89
- })
90
- .catch(() => {
91
- formRef.value!.validate();
92
- if (onFail) onFail();
93
- });
94
- },
95
- });
96
-
97
- watch(() => props.model.formData, () => {
98
- props.validator?.clearFiledErrors();
99
- })
100
- </script>
101
-
102
- <template>
103
- <el-form
104
- ref="formRef"
105
- :model="model"
106
- :rules="rules"
107
- :inline="inline"
108
- :label-position="labelPosition"
109
- :label-width="labelWidth"
110
- :label-suffix="labelSuffix"
111
- :hide-required-asterisk="hideRequiredAsterisk"
112
- :show-message="showMessage"
113
- :inline-message="inlineMessage"
114
- :status-icon="statusIcon"
115
- :validate-on-rule-change="validateOnRuleChange"
116
- :size="size"
117
- :disabled="disabled"
118
- :scroll-to-error="scrollToError"
119
- @validate="(prop, isValid, message) => $emit('validate', prop, isValid)"
120
- @click="() => $emit('click')"
121
- >
122
- <slot></slot>
123
- </el-form>
124
- </template>
125
-
126
- <style scoped lang="scss"></style>
1
+ <script setup lang="ts">
2
+ import {type PropType, provide, ref, computed, watch} from "vue";
3
+ import {ElForm, type FormInstance, type FormRules} from "element-plus";
4
+ import {type ValidationInstance} from "../../hooks/useBackendValidations";
5
+ import type {JaFormModel} from "./types";
6
+
7
+ interface Props {
8
+ model: JaFormModel,
9
+ inline?:boolean,
10
+ labelPosition?: "left" | "top" | "right",
11
+ labelWidth?: string | number,
12
+ labelSuffix?: string,
13
+ hideRequiredAsterisk?: boolean,
14
+ showMessage?: boolean,
15
+ inlineMessage?: boolean,
16
+ statusIcon?: boolean,
17
+ validateOnRuleChange?: boolean,
18
+ rules?: FormRules,
19
+ size?: "small" | "default" | "large",
20
+ disabled?: boolean,
21
+ scrollToError?: boolean,
22
+ validator: ValidationInstance,
23
+ }
24
+
25
+ const formRef = ref<FormInstance | undefined>(undefined);
26
+
27
+
28
+ const props = withDefaults(defineProps<Props>(),{
29
+ inline:false,
30
+ labelPosition:'top',
31
+ hideRequiredAsterisk:true,
32
+ showMessage:true,
33
+ inlineMessage:true,
34
+ statusIcon:false,
35
+ validateOnRuleChange:true,
36
+ size:'small',
37
+ scrollToError:true,
38
+
39
+ })
40
+
41
+ // const props = defineProps({
42
+ // model: {
43
+ // type: Object as PropType<JaFormModel>,
44
+ // required: true,
45
+ // },
46
+ // inline: {
47
+ // type: Boolean,
48
+ // default: false,
49
+ // },
50
+ // labelPosition: {
51
+ // type: String as PropType<"left" | "top" | "right">,
52
+ // default: "top",
53
+ // },
54
+ // labelWidth: {
55
+ // type: [String, Number],
56
+ // },
57
+ // labelSuffix: {
58
+ // type: String,
59
+ // },
60
+ // hideRequiredAsterisk: {
61
+ // type: Boolean,
62
+ // default: false,
63
+ // },
64
+ // showMessage: {
65
+ // type: Boolean,
66
+ // default: true,
67
+ // },
68
+ // inlineMessage: {
69
+ // type: Boolean,
70
+ // default: true,
71
+ // },
72
+ // statusIcon: {
73
+ // type: Boolean,
74
+ // default: false,
75
+ // },
76
+ // validateOnRuleChange: {
77
+ // type: Boolean,
78
+ // default: true,
79
+ // },
80
+ // rules: {
81
+ // type: Object as PropType<FormRules>,
82
+ // default: {},
83
+ // },
84
+ // size: {
85
+ // type: String as PropType<"small" | "default" | "large">,
86
+ // default: "small",
87
+ // },
88
+ // disabled: {
89
+ // type: Boolean,
90
+ // default: false,
91
+ // },
92
+ // scrollToError: {
93
+ // type: Boolean,
94
+ // default: true,
95
+ // },
96
+ // validator: {
97
+ // type: Object as PropType<ValidationInstance>,
98
+ // required: true,
99
+ // },
100
+ // });
101
+
102
+ defineEmits(["validate", "click"]);
103
+ provide("aceFormValidator", props.validator);
104
+ provide("aceFormModel", props.model);
105
+ provide("aceFormSize", props.size);
106
+
107
+ const rules = computed<FormRules>(() => {
108
+ return {
109
+ ...props.rules,
110
+ ...props.validator.rules,
111
+ };
112
+ });
113
+
114
+ defineExpose({
115
+ elForm: formRef,
116
+ getElForm:():FormInstance|undefined=>formRef.value,
117
+ validate:async (submit: () => Promise<any>, onFail?: () => void) => {
118
+ if(!formRef)return;
119
+ //先清空之前的校验
120
+ formRef.value.clearValidate();
121
+ //判断是否有传入rules如果有则先执行 formRef.value!.validate()
122
+ if(props.rules){
123
+ await formRef.value.validate((valid,fields)=>{
124
+ //判断校验是否成功
125
+ if(valid){
126
+ //前端校验已成功,执行异步submit
127
+ submit()
128
+ .then(() => {
129
+ //校验通过清楚所有的错误校验信息
130
+ props.validator?.clearFiledErrors();
131
+ })
132
+ .catch(() => {
133
+ //失败
134
+ formRef.value.validate();
135
+ if (onFail) onFail();
136
+ });
137
+ }else{
138
+ console.log('error submit!',fields)
139
+ }
140
+ })
141
+ }else{
142
+ submit()
143
+ .then(() => {
144
+ props.validator?.clearFiledErrors();
145
+ })
146
+ .catch(async () => {
147
+ await formRef.value.validate();
148
+ if (onFail) onFail();
149
+ });
150
+ }
151
+
152
+
153
+
154
+ },
155
+ });
156
+
157
+ watch(() => props.model.formData, () => {
158
+ props.validator?.clearFiledErrors();
159
+ })
160
+ </script>
161
+
162
+ <template>
163
+ <el-form
164
+ ref="formRef"
165
+ :model="model.formData"
166
+ :rules="rules"
167
+ :inline="inline"
168
+ :label-position="labelPosition"
169
+ :label-width="labelWidth"
170
+ :label-suffix="labelSuffix"
171
+ :hide-required-asterisk="hideRequiredAsterisk"
172
+ :show-message="showMessage"
173
+ :inline-message="inlineMessage"
174
+ :status-icon="statusIcon"
175
+ :validate-on-rule-change="validateOnRuleChange"
176
+ :size="size"
177
+ :disabled="disabled"
178
+ :scroll-to-error="scrollToError"
179
+ @validate="(prop, isValid, message) => $emit('validate', prop, isValid,message)"
180
+ @click="() => $emit('click')"
181
+ >
182
+ <slot></slot>
183
+ </el-form>
184
+ </template>
185
+
186
+ <style scoped lang="scss"></style>
@@ -1,5 +1,5 @@
1
- import {withInstall, type SFCWithInstall} from "../../utils/install";
2
- import Form from "./JaForm.vue";
3
- export const JaForm: SFCWithInstall<typeof Form> = withInstall(Form);
4
- export * from "./types"
5
- export default Form;
1
+ import {withInstall, type SFCWithInstall} from "../../utils/install";
2
+ import Form from "./JaForm.vue";
3
+ export const JaForm: SFCWithInstall<typeof Form> = withInstall(Form);
4
+ export * from "./types"
5
+ export default Form;
@@ -1,4 +1,4 @@
1
- export interface JaFormModel {
2
- formData: Record<string, any>,
3
- [key: string | number | symbol]: any
4
- }
1
+ export interface JaFormModel {
2
+ formData: Record<string, any>,
3
+ [key: string | number | symbol]: any
4
+ }