@jari-ace/element-plus-component 0.1.8 → 0.1.10

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 (51) hide show
  1. package/dist/components/form/JaForm.vue.d.ts +3 -0
  2. package/dist/components/form/JaForm.vue.d.ts.map +1 -1
  3. package/dist/components/form/JaForm.vue.js +22 -68
  4. package/dist/components/form/JaForm.vue.js.map +1 -1
  5. package/dist/components/formItem/JaFormItem.vue.d.ts +4 -0
  6. package/dist/components/formItem/JaFormItem.vue.d.ts.map +1 -1
  7. package/dist/components/formItem/JaFormItem.vue.js +26 -8
  8. package/dist/components/formItem/JaFormItem.vue.js.map +1 -1
  9. package/dist/components/inputI18n/InputI18n.vue.d.ts.map +1 -1
  10. package/dist/components/inputI18n/InputI18n.vue.js +2 -2
  11. package/dist/components/inputI18n/InputI18n.vue.js.map +1 -1
  12. package/dist/components/userPicker/src/UserPicker.vue.d.ts +0 -3
  13. package/dist/components/userPicker/src/UserPicker.vue.d.ts.map +1 -1
  14. package/dist/components/userPicker/src/UserPicker.vue.js +9 -7
  15. package/dist/components/userPicker/src/UserPicker.vue.js.map +1 -1
  16. package/dist/components/userSelectDialog/src/userSelectDialog.vue.d.ts +2 -5
  17. package/dist/components/userSelectDialog/src/userSelectDialog.vue.d.ts.map +1 -1
  18. package/dist/components/userSelectDialog/src/userSelectDialog.vue.js +14 -11
  19. package/dist/components/userSelectDialog/src/userSelectDialog.vue.js.map +1 -1
  20. package/dist/hooks/useBackendValidations.js +1 -0
  21. package/dist/hooks/useBackendValidations.js.map +1 -1
  22. package/dist/hooks/useRealms.d.ts +22 -0
  23. package/dist/hooks/useRealms.d.ts.map +1 -0
  24. package/dist/hooks/useRealms.js +25 -0
  25. package/dist/hooks/useRealms.js.map +1 -0
  26. package/dist/hooks/useUserRefQuery.d.ts.map +1 -1
  27. package/dist/hooks/useUserRefQuery.js +4 -2
  28. package/dist/hooks/useUserRefQuery.js.map +1 -1
  29. package/dist/index.d.ts +1 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +1 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/utils/formUtils.d.ts +7 -0
  34. package/dist/utils/formUtils.d.ts.map +1 -0
  35. package/dist/utils/formUtils.js +54 -0
  36. package/dist/utils/formUtils.js.map +1 -0
  37. package/lib/index.css +1 -1
  38. package/lib/index.js +1697 -1648
  39. package/lib/index.umd.cjs +2 -2
  40. package/package.json +2 -2
  41. package/packages/components/enumPicker/src/EnumPicker.vue +103 -103
  42. package/packages/components/form/JaForm.vue +29 -69
  43. package/packages/components/formItem/JaFormItem.vue +35 -16
  44. package/packages/components/inputI18n/InputI18n.vue +6 -2
  45. package/packages/components/userPicker/src/UserPicker.vue +8 -6
  46. package/packages/components/userSelectDialog/src/userSelectDialog.vue +16 -8
  47. package/packages/hooks/useBackendValidations.ts +81 -81
  48. package/packages/hooks/useRealms.ts +28 -0
  49. package/packages/hooks/useUserRefQuery.ts +4 -2
  50. package/packages/index.ts +1 -0
  51. package/packages/utils/formUtils.ts +57 -0
@@ -1,81 +1,81 @@
1
- import type { FormRules ,FormItemRule} from "element-plus";
2
- import type { IAceAxios, ValidationError } from "@jari-ace/app-bolts";
3
- import { createAxiosWithoutCache } from "@jari-ace/app-bolts";
4
- import { reactive } from "vue";
5
-
6
- export type ValidationInstance = {
7
- axios: IAceAxios;
8
- rules: FormRules;
9
- removeFieldError: (prop: string) => void;
10
- clearFiledErrors: () => void;
11
- };
12
-
13
- /**
14
- * 后端校验
15
- * @param props
16
- * @param axios
17
- * @param customRules
18
- */
19
- export function useBackendValidations(
20
- props: string[],
21
- axios?: IAceAxios,
22
- customRules?: FormRules,
23
- ): ValidationInstance {
24
- const rules = reactive<FormRules>({});
25
- let errors: ValidationError[] = [];
26
- if (!axios) axios = createAxiosWithoutCache();
27
- axios!.setDefaultRequestConfig({
28
- validationErrorProcessor: (errs) => {
29
- errors = errs;
30
- },
31
- });
32
-
33
- for (const p of props) {
34
- // rules[p] = [
35
- const rule = {
36
- trigger: "blur",
37
- validator: (rule: any, value: any, callback: any) => {
38
- if (!errors) return;
39
- let hasErr = false;
40
- for (const err of errors) {
41
- let fn = err.fieldName;
42
- if (fn?.endsWith("[]")) {
43
- fn = fn.substring(0, fn.length - 2);
44
- }
45
- if (fn === p) {
46
- hasErr = true;
47
- callback(new Error(err.message));
48
- }
49
- }
50
- if (!hasErr) callback();
51
- },
52
- };
53
-
54
- if (customRules&&customRules[p]) {
55
- //合并数组customRules[p]
56
- if (Array.isArray(customRules[p])) {
57
- rules[p] = [rule,...customRules[p] as FormItemRule[]];
58
- } else {
59
- rules[p] = [rule, customRules[p] as FormItemRule];
60
- }
61
- }else{
62
- rules[p] = rule
63
- }
64
-
65
-
66
- }
67
- const removeFieldError = (prop: string) => {
68
- errors = errors.filter((err) => err.fieldName !== prop);
69
- };
70
- const clearFiledErrors = () => {
71
- errors = [];
72
- };
73
-
74
-
75
- return {
76
- removeFieldError,
77
- clearFiledErrors,
78
- axios,
79
- rules,
80
- };
81
- }
1
+ import type { FormRules ,FormItemRule} from "element-plus";
2
+ import type { IAceAxios, ValidationError } from "@jari-ace/app-bolts";
3
+ import { createAxiosWithoutCache } from "@jari-ace/app-bolts";
4
+ import { reactive } from "vue";
5
+ import {mergeRules} from '../utils/formUtils'
6
+ export type ValidationInstance = {
7
+ axios: IAceAxios;
8
+ rules: FormRules;
9
+ removeFieldError: (prop: string) => void;
10
+ clearFiledErrors: () => void;
11
+ };
12
+
13
+ /**
14
+ * 后端校验
15
+ * @param props
16
+ * @param axios
17
+ * @param customRules
18
+ */
19
+ export function useBackendValidations(
20
+ props: string[],
21
+ axios?: IAceAxios,
22
+ customRules?: FormRules,
23
+ ): ValidationInstance {
24
+ const rules = reactive<FormRules>({});
25
+ let errors: ValidationError[] = [];
26
+ if (!axios) axios = createAxiosWithoutCache();
27
+ axios!.setDefaultRequestConfig({
28
+ validationErrorProcessor: (errs) => {
29
+ errors = errs;
30
+ },
31
+ });
32
+
33
+ for (const p of props) {
34
+ // rules[p] = [
35
+ const rule = {
36
+ trigger: "blur",
37
+ validator: (rule: any, value: any, callback: any) => {
38
+ if (!errors) return;
39
+ let hasErr = false;
40
+ for (const err of errors) {
41
+ let fn = err.fieldName;
42
+ if (fn?.endsWith("[]")) {
43
+ fn = fn.substring(0, fn.length - 2);
44
+ }
45
+ if (fn === p) {
46
+ hasErr = true;
47
+ callback(new Error(err.message));
48
+ }
49
+ }
50
+ if (!hasErr) callback();
51
+ },
52
+ };
53
+
54
+ if (customRules&&customRules[p]) {
55
+ //合并数组customRules[p]
56
+ if (Array.isArray(customRules[p])) {
57
+ rules[p] = [rule,...customRules[p] as FormItemRule[]];
58
+ } else {
59
+ rules[p] = [rule, customRules[p] as FormItemRule];
60
+ }
61
+ }else{
62
+ rules[p] = rule
63
+ }
64
+
65
+
66
+ }
67
+ const removeFieldError = (prop: string) => {
68
+ errors = errors.filter((err) => err.fieldName !== prop);
69
+ };
70
+ const clearFiledErrors = () => {
71
+ errors = [];
72
+ };
73
+
74
+
75
+ return {
76
+ removeFieldError,
77
+ clearFiledErrors,
78
+ axios,
79
+ rules,
80
+ };
81
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * 用户域列表
3
+ */
4
+ import {ref} from 'vue';
5
+ import {type AceAxiosRequestConfig, useRealmApi} from '@jari-ace/app-bolts';
6
+ import type {Realm} from '@jari-ace/app-bolts';
7
+
8
+ const realms = ref<Realm[]>([]);
9
+
10
+ export function useRealms() {
11
+ const realmApi = useRealmApi();
12
+ const getAllRealms = async () => {
13
+ if(realms.value.length!==0)return;
14
+ const config = {} as AceAxiosRequestConfig
15
+ realms.value = await realmApi.getAll(config);
16
+ };
17
+
18
+ const getDefaultRealm = async () => {
19
+ await getAllRealms()
20
+ return realms.value.find(r => r.name === 'ace-platform')
21
+ }
22
+
23
+ return {
24
+ realms,
25
+ getAllRealms,
26
+ getDefaultRealm
27
+ };
28
+ }
@@ -13,6 +13,7 @@ import {
13
13
  import type {TreeNodeType} from "./useTreeData";
14
14
  import {ALL_DEPARTMENT, NO_DEPARTMENT} from "../components/departmentPicker/src/consts";
15
15
  import debounce from "lodash-es/debounce";
16
+ import { useRealms } from "./useRealms";
16
17
 
17
18
  /**
18
19
  * 用户查询hook,当查询参数变化时,会自动查询,订阅结果即可
@@ -132,12 +133,13 @@ export function useUserRefQuery(
132
133
  });
133
134
  })
134
135
 
135
- function queryUsers() {
136
+ async function queryUsers() {
136
137
  if (queryPrerequisites && !queryPrerequisites()) {
137
138
  return Promise.resolve(undefined);
138
139
  }
139
140
  if (!queryParams.value.realmId) {
140
- return Promise.resolve([] as UserReference[]);
141
+ const defaultRealm = await useRealms().getDefaultRealm();
142
+ queryParams.value.realmId = defaultRealm.id;
141
143
  }
142
144
  const builder = useUserQueryBuilder();
143
145
  const qUser = builder.getQEntity();
package/packages/index.ts CHANGED
@@ -19,3 +19,4 @@ export * from "./directives"
19
19
  export * from "./hooks/useDateTimeShortCuts"
20
20
  export * from "./components/scrollbar/utils"
21
21
  export * from "./hooks/useBridage"
22
+ export * from "./hooks/useRealms"
@@ -0,0 +1,57 @@
1
+ import {type FormRules,type FormItemRule} from "element-plus";
2
+
3
+ /**
4
+ * 合并 rules 方法
5
+ * 将后端的rules合并到props.rules中
6
+ */
7
+ export function mergeRules(frontendRules: FormRules, backendRules: FormRules): FormRules {
8
+ //合并里面的rules
9
+ let newRules: FormRules = {}
10
+
11
+ //浅拷贝
12
+ frontendRules = {...frontendRules};
13
+ backendRules = {...backendRules};
14
+
15
+ const frontendRulesKey: string[] = Object.keys(frontendRules);
16
+ const backendRulesKey: string[] = Object.keys(backendRules);
17
+
18
+ if (frontendRulesKey.length > 0 && backendRulesKey.length === 0) {
19
+ return frontendRules;
20
+ } else if (frontendRulesKey.length === 0 && backendRulesKey.length > 0) {
21
+ return backendRules;
22
+ } else if (
23
+ frontendRulesKey.length === 0 && backendRulesKey.length === 0
24
+ ) {
25
+ return {}
26
+ } else { //frontendRulesKey 和 backendRulesKey 都有值
27
+ backendRulesKey.forEach(key => {
28
+ //frontendRulesKey中是否存在key
29
+ if (frontendRulesKey.includes(key)) {
30
+ if (Array.isArray(frontendRules[key]) && Array.isArray(backendRules[key])) {
31
+ newRules[key] = [...frontendRules[key] as FormItemRule[], ...backendRules[key] as FormItemRule[]];
32
+ }
33
+ //props.rules[key] 为对象 props.validator.rules[key]为数组
34
+ else if (!Array.isArray(frontendRules[key]) && Array.isArray(backendRules[key])) {
35
+ newRules[key] = [frontendRules[key] as FormItemRule, ...backendRules[key] as FormItemRule[]];
36
+ }
37
+ //props.rules[key] 为数组 props.validator.rules[key]为对象
38
+ else if (Array.isArray(frontendRules[key]) && !Array.isArray(backendRules[key])) {
39
+ newRules[key] = [...frontendRules[key] as FormItemRule[], backendRules[key] as FormItemRule];
40
+ }
41
+ //判断当前key的值类型是否都为对象
42
+ else if (!Array.isArray(frontendRules[key]) && !Array.isArray(backendRules[key])) {
43
+ newRules[key] = [frontendRules[key] as FormItemRule, backendRules[key] as FormItemRule];
44
+ }
45
+ } else {
46
+ newRules[key] = backendRules[key];
47
+ }
48
+ //删除对应的 key
49
+ delete frontendRules[key];
50
+ delete backendRules[key];
51
+ })
52
+ newRules = {...newRules, ...frontendRules};
53
+ return newRules;
54
+ }
55
+
56
+
57
+ }