@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.
- package/dist/components/form/JaForm.vue.d.ts +3 -0
- package/dist/components/form/JaForm.vue.d.ts.map +1 -1
- package/dist/components/form/JaForm.vue.js +22 -68
- package/dist/components/form/JaForm.vue.js.map +1 -1
- package/dist/components/formItem/JaFormItem.vue.d.ts +4 -0
- package/dist/components/formItem/JaFormItem.vue.d.ts.map +1 -1
- package/dist/components/formItem/JaFormItem.vue.js +26 -8
- package/dist/components/formItem/JaFormItem.vue.js.map +1 -1
- package/dist/components/inputI18n/InputI18n.vue.d.ts.map +1 -1
- package/dist/components/inputI18n/InputI18n.vue.js +2 -2
- package/dist/components/inputI18n/InputI18n.vue.js.map +1 -1
- package/dist/components/userPicker/src/UserPicker.vue.d.ts +0 -3
- package/dist/components/userPicker/src/UserPicker.vue.d.ts.map +1 -1
- package/dist/components/userPicker/src/UserPicker.vue.js +9 -7
- package/dist/components/userPicker/src/UserPicker.vue.js.map +1 -1
- package/dist/components/userSelectDialog/src/userSelectDialog.vue.d.ts +2 -5
- package/dist/components/userSelectDialog/src/userSelectDialog.vue.d.ts.map +1 -1
- package/dist/components/userSelectDialog/src/userSelectDialog.vue.js +14 -11
- package/dist/components/userSelectDialog/src/userSelectDialog.vue.js.map +1 -1
- package/dist/hooks/useBackendValidations.js +1 -0
- package/dist/hooks/useBackendValidations.js.map +1 -1
- package/dist/hooks/useRealms.d.ts +22 -0
- package/dist/hooks/useRealms.d.ts.map +1 -0
- package/dist/hooks/useRealms.js +25 -0
- package/dist/hooks/useRealms.js.map +1 -0
- package/dist/hooks/useUserRefQuery.d.ts.map +1 -1
- package/dist/hooks/useUserRefQuery.js +4 -2
- package/dist/hooks/useUserRefQuery.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/formUtils.d.ts +7 -0
- package/dist/utils/formUtils.d.ts.map +1 -0
- package/dist/utils/formUtils.js +54 -0
- package/dist/utils/formUtils.js.map +1 -0
- package/lib/index.css +1 -1
- package/lib/index.js +1697 -1648
- package/lib/index.umd.cjs +2 -2
- package/package.json +2 -2
- package/packages/components/enumPicker/src/EnumPicker.vue +103 -103
- package/packages/components/form/JaForm.vue +29 -69
- package/packages/components/formItem/JaFormItem.vue +35 -16
- package/packages/components/inputI18n/InputI18n.vue +6 -2
- package/packages/components/userPicker/src/UserPicker.vue +8 -6
- package/packages/components/userSelectDialog/src/userSelectDialog.vue +16 -8
- package/packages/hooks/useBackendValidations.ts +81 -81
- package/packages/hooks/useRealms.ts +28 -0
- package/packages/hooks/useUserRefQuery.ts +4 -2
- package/packages/index.ts +1 -0
- 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
|
-
|
|
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
|
@@ -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
|
+
}
|