el-plus2 0.0.0
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/index.full.js +2204 -0
- package/dist/index.full.min.js +2 -0
- package/dist/index.full.min.js.map +1 -0
- package/dist/index.full.min.mjs +2 -0
- package/dist/index.full.min.mjs.map +1 -0
- package/dist/index.full.mjs +2176 -0
- package/env.d.ts +17 -0
- package/es/components/buttons/index.d.ts +359 -0
- package/es/components/buttons/index.mjs +8 -0
- package/es/components/buttons/index.mjs.map +1 -0
- package/es/components/buttons/src/buttons-vue.d.ts +142 -0
- package/es/components/buttons/src/buttons-vue.mjs +70 -0
- package/es/components/buttons/src/buttons-vue.mjs.map +1 -0
- package/es/components/buttons/src/buttons.d.ts +57 -0
- package/es/components/buttons/src/buttons.mjs +23 -0
- package/es/components/buttons/src/buttons.mjs.map +1 -0
- package/es/components/form/index.d.ts +291 -0
- package/es/components/form/index.mjs +10 -0
- package/es/components/form/index.mjs.map +1 -0
- package/es/components/form/src/form-item-vue.d.ts +135 -0
- package/es/components/form/src/form-item-vue.mjs +40 -0
- package/es/components/form/src/form-item-vue.mjs.map +1 -0
- package/es/components/form/src/form-item.d.ts +68 -0
- package/es/components/form/src/form-item.mjs +33 -0
- package/es/components/form/src/form-item.mjs.map +1 -0
- package/es/components/form/src/form.d.ts +66 -0
- package/es/components/form/src/form.mjs +50 -0
- package/es/components/form/src/form.mjs.map +1 -0
- package/es/components/form/src/form.vue.d.ts +161 -0
- package/es/components/form/src/form.vue.mjs +6 -0
- package/es/components/form/src/form.vue.mjs.map +1 -0
- package/es/components/form/src/form.vue2.mjs +124 -0
- package/es/components/form/src/form.vue2.mjs.map +1 -0
- package/es/components/form/src/hooks/use-form-item.d.ts +12 -0
- package/es/components/form/src/hooks/use-form-item.mjs +97 -0
- package/es/components/form/src/hooks/use-form-item.mjs.map +1 -0
- package/es/components/form/src/hooks/use-form.d.ts +25 -0
- package/es/components/form/src/hooks/use-form.mjs +53 -0
- package/es/components/form/src/hooks/use-form.mjs.map +1 -0
- package/es/components/index.d.ts +6 -0
- package/es/components/index.mjs +9 -0
- package/es/components/index.mjs.map +1 -0
- package/es/components/input/index.d.ts +468 -0
- package/es/components/input/index.mjs +8 -0
- package/es/components/input/index.mjs.map +1 -0
- package/es/components/input/src/input.d.ts +122 -0
- package/es/components/input/src/input.mjs +28 -0
- package/es/components/input/src/input.mjs.map +1 -0
- package/es/components/input/src/input.vue.d.ts +268 -0
- package/es/components/input/src/input.vue.mjs +6 -0
- package/es/components/input/src/input.vue.mjs.map +1 -0
- package/es/components/input/src/input.vue2.mjs +144 -0
- package/es/components/input/src/input.vue2.mjs.map +1 -0
- package/es/components/searchListPage/index.d.ts +8583 -0
- package/es/components/searchListPage/index.mjs +8 -0
- package/es/components/searchListPage/index.mjs.map +1 -0
- package/es/components/searchListPage/src/searchListPage.d.ts +64 -0
- package/es/components/searchListPage/src/searchListPage.mjs +61 -0
- package/es/components/searchListPage/src/searchListPage.mjs.map +1 -0
- package/es/components/searchListPage/src/searchListPage.vue.d.ts +2760 -0
- package/es/components/searchListPage/src/searchListPage.vue.mjs +6 -0
- package/es/components/searchListPage/src/searchListPage.vue.mjs.map +1 -0
- package/es/components/searchListPage/src/searchListPage.vue2.mjs +99 -0
- package/es/components/searchListPage/src/searchListPage.vue2.mjs.map +1 -0
- package/es/components/searchListPage/src/use-search-list-page.d.ts +2671 -0
- package/es/components/searchListPage/src/use-search-list-page.mjs +177 -0
- package/es/components/searchListPage/src/use-search-list-page.mjs.map +1 -0
- package/es/components/select/index.d.ts +664 -0
- package/es/components/select/index.mjs +8 -0
- package/es/components/select/index.mjs.map +1 -0
- package/es/components/select/src/select.d.ts +283 -0
- package/es/components/select/src/select.mjs +47 -0
- package/es/components/select/src/select.mjs.map +1 -0
- package/es/components/select/src/select.vue.d.ts +384 -0
- package/es/components/select/src/select.vue.mjs +6 -0
- package/es/components/select/src/select.vue.mjs.map +1 -0
- package/es/components/select/src/select.vue2.mjs +113 -0
- package/es/components/select/src/select.vue2.mjs.map +1 -0
- package/es/components/select/src/use-select.d.ts +12 -0
- package/es/components/select/src/use-select.mjs +87 -0
- package/es/components/select/src/use-select.mjs.map +1 -0
- package/es/components/table/index.d.ts +2975 -0
- package/es/components/table/index.mjs +8 -0
- package/es/components/table/index.mjs.map +1 -0
- package/es/components/table/src/table.d.ts +781 -0
- package/es/components/table/src/table.mjs +81 -0
- package/es/components/table/src/table.mjs.map +1 -0
- package/es/components/table/src/table.vue.d.ts +1708 -0
- package/es/components/table/src/table.vue.mjs +6 -0
- package/es/components/table/src/table.vue.mjs.map +1 -0
- package/es/components/table/src/table.vue2.mjs +204 -0
- package/es/components/table/src/table.vue2.mjs.map +1 -0
- package/es/components/table/src/use-table.d.ts +241 -0
- package/es/components/table/src/use-table.mjs +260 -0
- package/es/components/table/src/use-table.mjs.map +1 -0
- package/es/components.d.ts +3 -0
- package/es/components.mjs +11 -0
- package/es/components.mjs.map +1 -0
- package/es/directives/index.d.ts +2 -0
- package/es/directives/index.mjs +3 -0
- package/es/directives/index.mjs.map +1 -0
- package/es/directives/permission/index.d.ts +6 -0
- package/es/directives/permission/index.mjs +55 -0
- package/es/directives/permission/index.mjs.map +1 -0
- package/es/directives/repeat-click/index.d.ts +16 -0
- package/es/directives/repeat-click/index.mjs +68 -0
- package/es/directives/repeat-click/index.mjs.map +1 -0
- package/es/directives/vite.config.d.ts +2 -0
- package/es/hooks/index.d.ts +1 -0
- package/es/hooks/index.mjs +2 -0
- package/es/hooks/index.mjs.map +1 -0
- package/es/hooks/use-request.d.ts +20 -0
- package/es/hooks/use-request.mjs +82 -0
- package/es/hooks/use-request.mjs.map +1 -0
- package/es/index.d.ts +9 -0
- package/es/index.mjs +24 -0
- package/es/index.mjs.map +1 -0
- package/es/package.json.mjs +4 -0
- package/es/package.json.mjs.map +1 -0
- package/es/theme-chalk/gulpfile.d.ts +0 -0
- package/es/theme-chalk/gulpfile.mjs +2 -0
- package/es/theme-chalk/gulpfile.mjs.map +1 -0
- package/es/types/env.d.mjs +2 -0
- package/es/types/env.d.mjs.map +1 -0
- package/es/types/global.d.mjs +2 -0
- package/es/types/global.d.mjs.map +1 -0
- package/es/types/vue-shim.d.mjs +2 -0
- package/es/types/vue-shim.d.mjs.map +1 -0
- package/es/utils/bem.d.ts +10 -0
- package/es/utils/bem.mjs +31 -0
- package/es/utils/bem.mjs.map +1 -0
- package/es/utils/cookie.d.ts +7 -0
- package/es/utils/cookie.mjs +29 -0
- package/es/utils/cookie.mjs.map +1 -0
- package/es/utils/env.d.ts +3 -0
- package/es/utils/env.mjs +27 -0
- package/es/utils/env.mjs.map +1 -0
- package/es/utils/props.d.ts +37 -0
- package/es/utils/props.mjs +66 -0
- package/es/utils/props.mjs.map +1 -0
- package/es/utils/request.d.ts +6 -0
- package/es/utils/request.mjs +157 -0
- package/es/utils/request.mjs.map +1 -0
- package/es/utils/type.d.ts +15 -0
- package/es/utils/type.mjs +2 -0
- package/es/utils/type.mjs.map +1 -0
- package/es/utils/with-install.d.ts +4 -0
- package/es/utils/with-install.mjs +9 -0
- package/es/utils/with-install.mjs.map +1 -0
- package/es/version.d.ts +1 -0
- package/es/version.mjs +4 -0
- package/es/version.mjs.map +1 -0
- package/global.d.ts +13 -0
- package/lib/components/buttons/index.d.ts +359 -0
- package/lib/components/buttons/index.js +13 -0
- package/lib/components/buttons/index.js.map +1 -0
- package/lib/components/buttons/src/buttons-vue.d.ts +142 -0
- package/lib/components/buttons/src/buttons-vue.js +74 -0
- package/lib/components/buttons/src/buttons-vue.js.map +1 -0
- package/lib/components/buttons/src/buttons.d.ts +57 -0
- package/lib/components/buttons/src/buttons.js +25 -0
- package/lib/components/buttons/src/buttons.js.map +1 -0
- package/lib/components/form/index.d.ts +291 -0
- package/lib/components/form/index.js +21 -0
- package/lib/components/form/index.js.map +1 -0
- package/lib/components/form/src/form-item-vue.d.ts +135 -0
- package/lib/components/form/src/form-item-vue.js +44 -0
- package/lib/components/form/src/form-item-vue.js.map +1 -0
- package/lib/components/form/src/form-item.d.ts +68 -0
- package/lib/components/form/src/form-item.js +36 -0
- package/lib/components/form/src/form-item.js.map +1 -0
- package/lib/components/form/src/form.d.ts +66 -0
- package/lib/components/form/src/form.js +55 -0
- package/lib/components/form/src/form.js.map +1 -0
- package/lib/components/form/src/form.vue.d.ts +161 -0
- package/lib/components/form/src/form.vue.js +10 -0
- package/lib/components/form/src/form.vue.js.map +1 -0
- package/lib/components/form/src/form.vue2.js +128 -0
- package/lib/components/form/src/form.vue2.js.map +1 -0
- package/lib/components/form/src/hooks/use-form-item.d.ts +12 -0
- package/lib/components/form/src/hooks/use-form-item.js +101 -0
- package/lib/components/form/src/hooks/use-form-item.js.map +1 -0
- package/lib/components/form/src/hooks/use-form.d.ts +25 -0
- package/lib/components/form/src/hooks/use-form.js +56 -0
- package/lib/components/form/src/hooks/use-form.js.map +1 -0
- package/lib/components/index.d.ts +6 -0
- package/lib/components/index.js +35 -0
- package/lib/components/index.js.map +1 -0
- package/lib/components/input/index.d.ts +468 -0
- package/lib/components/input/index.js +15 -0
- package/lib/components/input/index.js.map +1 -0
- package/lib/components/input/src/input.d.ts +122 -0
- package/lib/components/input/src/input.js +32 -0
- package/lib/components/input/src/input.js.map +1 -0
- package/lib/components/input/src/input.vue.d.ts +268 -0
- package/lib/components/input/src/input.vue.js +10 -0
- package/lib/components/input/src/input.vue.js.map +1 -0
- package/lib/components/input/src/input.vue2.js +148 -0
- package/lib/components/input/src/input.vue2.js.map +1 -0
- package/lib/components/searchListPage/index.d.ts +8583 -0
- package/lib/components/searchListPage/index.js +13 -0
- package/lib/components/searchListPage/index.js.map +1 -0
- package/lib/components/searchListPage/src/searchListPage.d.ts +64 -0
- package/lib/components/searchListPage/src/searchListPage.js +63 -0
- package/lib/components/searchListPage/src/searchListPage.js.map +1 -0
- package/lib/components/searchListPage/src/searchListPage.vue.d.ts +2760 -0
- package/lib/components/searchListPage/src/searchListPage.vue.js +10 -0
- package/lib/components/searchListPage/src/searchListPage.vue.js.map +1 -0
- package/lib/components/searchListPage/src/searchListPage.vue2.js +103 -0
- package/lib/components/searchListPage/src/searchListPage.vue2.js.map +1 -0
- package/lib/components/searchListPage/src/use-search-list-page.d.ts +2671 -0
- package/lib/components/searchListPage/src/use-search-list-page.js +179 -0
- package/lib/components/searchListPage/src/use-search-list-page.js.map +1 -0
- package/lib/components/select/index.d.ts +664 -0
- package/lib/components/select/index.js +17 -0
- package/lib/components/select/index.js.map +1 -0
- package/lib/components/select/src/select.d.ts +283 -0
- package/lib/components/select/src/select.js +53 -0
- package/lib/components/select/src/select.js.map +1 -0
- package/lib/components/select/src/select.vue.d.ts +384 -0
- package/lib/components/select/src/select.vue.js +10 -0
- package/lib/components/select/src/select.vue.js.map +1 -0
- package/lib/components/select/src/select.vue2.js +117 -0
- package/lib/components/select/src/select.vue2.js.map +1 -0
- package/lib/components/select/src/use-select.d.ts +12 -0
- package/lib/components/select/src/use-select.js +89 -0
- package/lib/components/select/src/use-select.js.map +1 -0
- package/lib/components/table/index.d.ts +2975 -0
- package/lib/components/table/index.js +16 -0
- package/lib/components/table/index.js.map +1 -0
- package/lib/components/table/src/table.d.ts +781 -0
- package/lib/components/table/src/table.js +86 -0
- package/lib/components/table/src/table.js.map +1 -0
- package/lib/components/table/src/table.vue.d.ts +1708 -0
- package/lib/components/table/src/table.vue.js +10 -0
- package/lib/components/table/src/table.vue.js.map +1 -0
- package/lib/components/table/src/table.vue2.js +208 -0
- package/lib/components/table/src/table.vue2.js.map +1 -0
- package/lib/components/table/src/use-table.d.ts +241 -0
- package/lib/components/table/src/use-table.js +264 -0
- package/lib/components/table/src/use-table.js.map +1 -0
- package/lib/components.d.ts +3 -0
- package/lib/components.js +15 -0
- package/lib/components.js.map +1 -0
- package/lib/directives/index.d.ts +2 -0
- package/lib/directives/index.js +10 -0
- package/lib/directives/index.js.map +1 -0
- package/lib/directives/permission/index.d.ts +6 -0
- package/lib/directives/permission/index.js +60 -0
- package/lib/directives/permission/index.js.map +1 -0
- package/lib/directives/repeat-click/index.d.ts +16 -0
- package/lib/directives/repeat-click/index.js +72 -0
- package/lib/directives/repeat-click/index.js.map +1 -0
- package/lib/directives/vite.config.d.ts +2 -0
- package/lib/hooks/index.d.ts +1 -0
- package/lib/hooks/index.js +8 -0
- package/lib/hooks/index.js.map +1 -0
- package/lib/hooks/use-request.d.ts +20 -0
- package/lib/hooks/use-request.js +84 -0
- package/lib/hooks/use-request.js.map +1 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +53 -0
- package/lib/index.js.map +1 -0
- package/lib/package.json.js +6 -0
- package/lib/package.json.js.map +1 -0
- package/lib/theme-chalk/gulpfile.d.ts +0 -0
- package/lib/theme-chalk/gulpfile.js +3 -0
- package/lib/theme-chalk/gulpfile.js.map +1 -0
- package/lib/types/env.d.js +3 -0
- package/lib/types/env.d.js.map +1 -0
- package/lib/types/global.d.js +3 -0
- package/lib/types/global.d.js.map +1 -0
- package/lib/types/vue-shim.d.js +3 -0
- package/lib/types/vue-shim.d.js.map +1 -0
- package/lib/utils/bem.d.ts +10 -0
- package/lib/utils/bem.js +33 -0
- package/lib/utils/bem.js.map +1 -0
- package/lib/utils/cookie.d.ts +7 -0
- package/lib/utils/cookie.js +33 -0
- package/lib/utils/cookie.js.map +1 -0
- package/lib/utils/env.d.ts +3 -0
- package/lib/utils/env.js +30 -0
- package/lib/utils/env.js.map +1 -0
- package/lib/utils/props.d.ts +37 -0
- package/lib/utils/props.js +73 -0
- package/lib/utils/props.js.map +1 -0
- package/lib/utils/request.d.ts +6 -0
- package/lib/utils/request.js +162 -0
- package/lib/utils/request.js.map +1 -0
- package/lib/utils/type.d.ts +15 -0
- package/lib/utils/type.js +3 -0
- package/lib/utils/type.js.map +1 -0
- package/lib/utils/with-install.d.ts +4 -0
- package/lib/utils/with-install.js +11 -0
- package/lib/utils/with-install.js.map +1 -0
- package/lib/version.d.ts +1 -0
- package/lib/version.js +6 -0
- package/lib/version.js.map +1 -0
- package/package.json +27 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { useTemplateRef, ref, computed, reactive, createVNode, createTextVNode } from 'vue';
|
|
2
|
+
import { useRequest } from '../../../hooks/use-request.mjs';
|
|
3
|
+
import { prepareProps } from '../../../utils/props.mjs';
|
|
4
|
+
|
|
5
|
+
const useTable = (props) => {
|
|
6
|
+
const elFormRef = useTemplateRef("elFormRef");
|
|
7
|
+
const elTableRef = useTemplateRef("elTableRef");
|
|
8
|
+
const customData = ref([]);
|
|
9
|
+
const {
|
|
10
|
+
loading,
|
|
11
|
+
requestFn
|
|
12
|
+
} = useRequest({
|
|
13
|
+
api: props.api,
|
|
14
|
+
method: props.method,
|
|
15
|
+
reqData: props.reqData,
|
|
16
|
+
reqParams: props.reqParams,
|
|
17
|
+
reqBefore: props.reqBefore,
|
|
18
|
+
reqAfter: props.reqAfter,
|
|
19
|
+
cancelToken: true,
|
|
20
|
+
hooks: {
|
|
21
|
+
success(data) {
|
|
22
|
+
if (Array.isArray(data)) {
|
|
23
|
+
customData.value = data;
|
|
24
|
+
} else if (data && typeof data === "object") {
|
|
25
|
+
const rawData = data;
|
|
26
|
+
customData.value = rawData?.list || rawData?.data || [];
|
|
27
|
+
} else {
|
|
28
|
+
customData.value = [];
|
|
29
|
+
}
|
|
30
|
+
if (props.showPagination) {
|
|
31
|
+
pagination.total = (props.isFrontPage ? customData.value.length : data.total) || 0;
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
fail(error) {
|
|
35
|
+
console.error(error);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
const search = (init = false, isPagination = false) => {
|
|
40
|
+
if (init) {
|
|
41
|
+
pagination.pageNo = 1;
|
|
42
|
+
}
|
|
43
|
+
if (isPagination && props.isFrontPage) {
|
|
44
|
+
const {
|
|
45
|
+
pageNo,
|
|
46
|
+
pageSize
|
|
47
|
+
} = pagination;
|
|
48
|
+
const data = customData.value.filter((item, index) => {
|
|
49
|
+
return index < pageNo * pageSize && index >= (pageNo - 1) * pageSize;
|
|
50
|
+
});
|
|
51
|
+
customData.value = data;
|
|
52
|
+
} else {
|
|
53
|
+
if (props.api) {
|
|
54
|
+
requestFn({
|
|
55
|
+
pageNo: pagination.pageNo,
|
|
56
|
+
pageSize: pagination.pageSize
|
|
57
|
+
});
|
|
58
|
+
} else if (props.data?.length) {
|
|
59
|
+
customData.value = props.data;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const {
|
|
64
|
+
pagination,
|
|
65
|
+
paginationProps
|
|
66
|
+
} = usePagination(props, search);
|
|
67
|
+
search(true);
|
|
68
|
+
const validate = () => {
|
|
69
|
+
return elFormRef.value.validate();
|
|
70
|
+
};
|
|
71
|
+
const resetFields = (props2) => {
|
|
72
|
+
return elFormRef.value.resetFields(props2);
|
|
73
|
+
};
|
|
74
|
+
const clearValidate = (props2) => {
|
|
75
|
+
return elFormRef.value.clearValidate(props2);
|
|
76
|
+
};
|
|
77
|
+
const formatActionButtons = (list, scope) => {
|
|
78
|
+
return list.map((item) => {
|
|
79
|
+
if (item.onClick) {
|
|
80
|
+
item.onClick = item.onClick.bind(null, scope);
|
|
81
|
+
}
|
|
82
|
+
return item;
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
loading,
|
|
87
|
+
data: customData,
|
|
88
|
+
search,
|
|
89
|
+
pagination,
|
|
90
|
+
paginationProps,
|
|
91
|
+
validate,
|
|
92
|
+
resetFields,
|
|
93
|
+
clearValidate,
|
|
94
|
+
elFormRef,
|
|
95
|
+
elTableRef,
|
|
96
|
+
formatActionButtons
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
const usePagination = function(props, search) {
|
|
100
|
+
const pageSizes = [20, 50, 100, 200];
|
|
101
|
+
const pagination = reactive({
|
|
102
|
+
total: 0,
|
|
103
|
+
pageNo: 1,
|
|
104
|
+
pageSize: pageSizes[0]
|
|
105
|
+
});
|
|
106
|
+
const paginationProps = computed(() => {
|
|
107
|
+
const defaultPaginationProps = props.paginationProps || {};
|
|
108
|
+
const onSizeChange = defaultPaginationProps.onSizeChange;
|
|
109
|
+
const onCurrentChange = defaultPaginationProps.onCurrentChange;
|
|
110
|
+
return {
|
|
111
|
+
...defaultPaginationProps,
|
|
112
|
+
pageSizes,
|
|
113
|
+
layout: "total, sizes, prev, pager, next, jumper",
|
|
114
|
+
onSizeChange: (value) => {
|
|
115
|
+
onSizeChange && onSizeChange(value);
|
|
116
|
+
search(true, true);
|
|
117
|
+
},
|
|
118
|
+
onCurrentChange: (value) => {
|
|
119
|
+
onCurrentChange && onCurrentChange(value);
|
|
120
|
+
search(false, true);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
});
|
|
124
|
+
return {
|
|
125
|
+
pagination,
|
|
126
|
+
paginationProps
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
const useTableColumn = (props, tableData) => {
|
|
130
|
+
const columnProps = (column) => {
|
|
131
|
+
const attrs = {
|
|
132
|
+
align: column.align || props.align
|
|
133
|
+
// ...prepareEvents<TableEmits>(emit, tableEmits),
|
|
134
|
+
};
|
|
135
|
+
if (!column.renderHeader) {
|
|
136
|
+
let required = column.required;
|
|
137
|
+
if (typeof column.required === "function") {
|
|
138
|
+
required = column.required();
|
|
139
|
+
}
|
|
140
|
+
if (required) {
|
|
141
|
+
attrs["renderHeader"] = (data) => {
|
|
142
|
+
const {
|
|
143
|
+
column: column2
|
|
144
|
+
} = data;
|
|
145
|
+
return createVNode("span", null, [createVNode("span", {
|
|
146
|
+
"style": "color:var(--el-color-danger)"
|
|
147
|
+
}, [createTextVNode(" * ")]), column2.label]);
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (column.headerRender) {
|
|
152
|
+
attrs.renderHeader = column.headerRender;
|
|
153
|
+
}
|
|
154
|
+
if (column.filter) {
|
|
155
|
+
const arr = tableData.value.map((item) => item[column.prop]);
|
|
156
|
+
attrs.filters = [...new Set(arr)].map((item) => {
|
|
157
|
+
return {
|
|
158
|
+
text: item,
|
|
159
|
+
value: item
|
|
160
|
+
};
|
|
161
|
+
});
|
|
162
|
+
attrs.filterMethod = (value, row) => {
|
|
163
|
+
return row[column.prop] === value;
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
...attrs,
|
|
168
|
+
...prepareProps(column)
|
|
169
|
+
};
|
|
170
|
+
};
|
|
171
|
+
const columnList = computed(() => {
|
|
172
|
+
return props.columns.filter((column) => {
|
|
173
|
+
if (props.linkProps.length) {
|
|
174
|
+
const linkColumn = props.linkProps.find((item) => item.prop === column.prop);
|
|
175
|
+
if (linkColumn) {
|
|
176
|
+
column.type = "EpButtons";
|
|
177
|
+
column.className = "table-column-link";
|
|
178
|
+
column.props = {
|
|
179
|
+
list: [linkColumn],
|
|
180
|
+
type: "text",
|
|
181
|
+
...column.props
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if ("show" in column) {
|
|
186
|
+
return typeof column.show === "function" ? column.show(column) : column.show;
|
|
187
|
+
} else if ("hide" in column) {
|
|
188
|
+
return typeof column.hide === "function" ? !column.hide(column) : !column.hide;
|
|
189
|
+
}
|
|
190
|
+
return true;
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
return {
|
|
194
|
+
columnProps,
|
|
195
|
+
columnList
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
const useTableFormItem = (props) => {
|
|
199
|
+
const formItemProps = (scope, item) => {
|
|
200
|
+
let required = item.required;
|
|
201
|
+
if (typeof required === "function") {
|
|
202
|
+
required = required();
|
|
203
|
+
}
|
|
204
|
+
if (item.cellRequired) {
|
|
205
|
+
required = item.cellRequired(scope);
|
|
206
|
+
}
|
|
207
|
+
let disabled = props.disabled;
|
|
208
|
+
if ("disabled" in item) {
|
|
209
|
+
if (typeof item.disabled === "function") {
|
|
210
|
+
disabled = item.disabled(scope);
|
|
211
|
+
} else {
|
|
212
|
+
disabled = item.disabled || false;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
if (item.type === "EpSelect" && item.props) {
|
|
216
|
+
if ("options" in item.props && typeof item.props.options === "function") {
|
|
217
|
+
item.props.options = item.props.options(scope);
|
|
218
|
+
}
|
|
219
|
+
if ("disabledOption" in item.props && typeof item.props.disabledOption === "function") {
|
|
220
|
+
const disabledOption = item.props.disabledOption;
|
|
221
|
+
item.props.disabledOption = (...args) => disabledOption(...args, scope);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (item.type === "EpButtons" && item.props) {
|
|
225
|
+
item.props.list.forEach((btnItem) => {
|
|
226
|
+
if (btnItem.prop) {
|
|
227
|
+
btnItem.name = scope.row[btnItem.prop];
|
|
228
|
+
}
|
|
229
|
+
if (btnItem.onClick) {
|
|
230
|
+
btnItem.onClick = btnItem.onClick.bind(null, scope);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
for (const key in item) {
|
|
235
|
+
if (key.startsWith("on") && typeof item[key] === "function") {
|
|
236
|
+
const fn = item[key];
|
|
237
|
+
item[key] = (...args) => fn(...args, scope);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
...prepareProps(item),
|
|
242
|
+
isShowLabel: false,
|
|
243
|
+
required,
|
|
244
|
+
hideRequiredAsterisk: "cellRequired" in item ? false : required,
|
|
245
|
+
prop: `table.${scope.$index}.${item.prop}`,
|
|
246
|
+
tableProp: item.prop,
|
|
247
|
+
// table里的表单需要绑定的prop
|
|
248
|
+
props: {
|
|
249
|
+
...item.props,
|
|
250
|
+
disabled
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
};
|
|
254
|
+
return {
|
|
255
|
+
formItemProps
|
|
256
|
+
};
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
export { useTable, useTableColumn, useTableFormItem };
|
|
260
|
+
//# sourceMappingURL=use-table.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-table.mjs","sources":["../../../../../../packages/components/table/src/use-table.tsx"],"sourcesContent":["import type { FormInstance, TableInstance, FormItemProp } from 'element-plus'\nimport { ref, computed, type Ref, reactive, useTemplateRef } from 'vue'\nimport { useRequest } from '@el-plus/hooks/use-request'\nimport type { TableColumn, TableProps, TableScope } from './table'\nimport type { ButtonProps } from '@el-plus/components/buttons'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nexport type ISearch = (init: boolean, isPagination?: boolean) => void\nexport const useTable = (props: TableProps) => {\n const elFormRef = useTemplateRef<FormInstance>('elFormRef')\n const elTableRef = useTemplateRef<TableInstance>('elTableRef')\n const customData = ref<Record<string, unknown>[]>([])\n const { loading, requestFn } = useRequest({\n api: props.api,\n method: props.method,\n reqData: props.reqData,\n reqParams: props.reqParams,\n reqBefore: props.reqBefore,\n reqAfter: props.reqAfter,\n cancelToken: true,\n hooks: {\n success(data) {\n if (Array.isArray(data)) {\n customData.value = data\n } else if (data && typeof data === 'object') {\n const rawData = data as Record<string, any>\n customData.value = rawData?.list || rawData?.data || []\n } else {\n customData.value = []\n }\n if (props.showPagination) {\n pagination.total =\n (props.isFrontPage\n ? customData.value.length\n : (data as { total: number }).total) || 0\n }\n },\n fail(error) {\n console.error(error)\n },\n },\n })\n // 加载下拉列表\n const search: ISearch = (init = false, isPagination = false) => {\n if (init) {\n pagination.pageNo = 1\n }\n // 前端分页\n if (isPagination && props.isFrontPage) {\n const { pageNo, pageSize } = pagination\n const data = customData.value.filter((item, index) => {\n return index < pageNo * pageSize && index >= (pageNo - 1) * pageSize\n })\n customData.value = data\n } else {\n if (props.api) {\n requestFn!({\n pageNo: pagination.pageNo,\n pageSize: pagination.pageSize,\n })\n } else if (props.data?.length) {\n customData.value = props.data\n }\n }\n }\n const { pagination, paginationProps } = usePagination(props, search)\n search(true)\n // 校验\n const validate = () => {\n return elFormRef.value!.validate()\n }\n // 重置校验\n const resetFields = (props: FormItemProp) => {\n return elFormRef.value!.resetFields(props)\n }\n // 清理某个字段的表单验证信息\n const clearValidate = (props: FormItemProp) => {\n return elFormRef.value!.clearValidate(props)\n }\n // 格式化操作按钮\n const formatActionButtons = (list: ButtonProps[], scope: TableScope) => {\n return list.map((item) => {\n if (item.onClick) {\n item.onClick = item.onClick.bind(null, scope)\n }\n return item\n })\n }\n\n return {\n loading,\n data: customData,\n search,\n pagination,\n paginationProps,\n validate,\n resetFields,\n clearValidate,\n elFormRef,\n elTableRef,\n formatActionButtons,\n }\n}\nconst usePagination = function (props: TableProps, search: ISearch) {\n const pageSizes = [20, 50, 100, 200]\n const pagination = reactive({\n total: 0,\n pageNo: 1,\n pageSize: pageSizes[0],\n })\n const paginationProps = computed(() => {\n const defaultPaginationProps = props.paginationProps || {}\n const onSizeChange = defaultPaginationProps.onSizeChange\n const onCurrentChange = defaultPaginationProps.onCurrentChange\n return {\n ...defaultPaginationProps,\n pageSizes,\n layout: 'total, sizes, prev, pager, next, jumper',\n onSizeChange: (value: number) => {\n onSizeChange && onSizeChange(value)\n search(true, true)\n },\n onCurrentChange: (value: number) => {\n onCurrentChange && onCurrentChange(value)\n search(false, true)\n },\n }\n })\n return {\n pagination,\n paginationProps,\n }\n}\n\nexport const useTableColumn = (\n props: TableProps,\n tableData: Ref<TableProps['data']>,\n) => {\n const columnProps = (column: TableColumn) => {\n const attrs = {\n align: column.align || props.align,\n // ...prepareEvents<TableEmits>(emit, tableEmits),\n } as TableColumn\n // console.log(attrs)\n\n if (!column.renderHeader) {\n let required = column.required\n if (typeof column.required === 'function') {\n required = column.required()\n }\n if (required) {\n attrs['renderHeader'] = (data) => {\n const { column } = data\n return (\n <span>\n <span style=\"color:var(--el-color-danger)\"> * </span>\n {column.label}\n </span>\n )\n }\n }\n }\n if (column.headerRender) {\n attrs.renderHeader = column.headerRender\n }\n if (column.filter) {\n const arr = tableData.value!.map((item) => item[column.prop!])\n attrs.filters = [...new Set(arr)].map((item) => {\n return {\n text: item,\n value: item,\n }\n })\n attrs.filterMethod = (value, row) => {\n return row[column.prop!] === value\n }\n }\n return {\n ...attrs,\n ...prepareProps(column),\n }\n }\n const columnList = computed(() => {\n return props.columns!.filter((column: TableColumn) => {\n if (props.linkProps!.length) {\n const linkColumn = props.linkProps!.find(\n (item) => item.prop === column.prop,\n )\n if (linkColumn) {\n column.type = 'EpButtons'\n column.className = 'table-column-link'\n column.props = {\n list: [linkColumn],\n type: 'text',\n ...column.props,\n }\n }\n }\n if ('show' in column) {\n return typeof column.show === 'function'\n ? column.show(column)\n : column.show\n } else if ('hide' in column) {\n return typeof column.hide === 'function'\n ? !column.hide(column)\n : !column.hide\n }\n return true\n })\n })\n return {\n columnProps,\n columnList,\n }\n}\n\nexport const useTableFormItem = (props: TableProps) => {\n const formItemProps = (scope: TableScope, item: TableColumn) => {\n let required = item.required\n if (typeof required === 'function') {\n required = required()\n }\n if (item.cellRequired) {\n required = item.cellRequired(scope)\n }\n let disabled = props.disabled\n if ('disabled' in item) {\n if (typeof item.disabled === 'function') {\n disabled = item.disabled(scope)\n } else {\n disabled = item.disabled || false\n }\n }\n if (item.type === 'EpSelect' && item.props) {\n if ('options' in item.props && typeof item.props.options === 'function') {\n item.props.options = item.props.options(scope)\n }\n if (\n 'disabledOption' in item.props &&\n typeof item.props.disabledOption === 'function'\n ) {\n const disabledOption = item.props.disabledOption\n item.props.disabledOption = (...args: unknown[]) =>\n disabledOption(...args, scope)\n }\n }\n\n if (item.type === 'EpButtons' && item.props) {\n item.props.list.forEach((btnItem: ButtonProps) => {\n if (btnItem.prop) {\n btnItem.name = scope.row[btnItem.prop] as string\n }\n if (btnItem.onClick) {\n btnItem.onClick = btnItem.onClick.bind(null, scope)\n }\n })\n }\n for (const key in item) {\n if (key.startsWith('on') && typeof item[key] === 'function') {\n const fn = item[key]\n item[key] = (...args: unknown[]) => fn(...args, scope)\n }\n }\n return {\n ...prepareProps(item),\n isShowLabel: false,\n required,\n hideRequiredAsterisk: 'cellRequired' in item ? false : required,\n prop: `table.${scope.$index}.${item.prop}`,\n tableProp: item.prop, // table里的表单需要绑定的prop\n props: {\n ...item.props,\n disabled,\n },\n }\n }\n return {\n formItemProps,\n }\n}\n"],"names":["useTable","props","elFormRef","useTemplateRef","elTableRef","customData","ref","loading","requestFn","useRequest","api","method","reqData","reqParams","reqBefore","reqAfter","cancelToken","hooks","success","data","Array","isArray","value","rawData","list","showPagination","pagination","total","isFrontPage","length","fail","error","console","search","init","isPagination","pageNo","pageSize","filter","item","index","paginationProps","usePagination","validate","resetFields","clearValidate","formatActionButtons","scope","map","onClick","bind","pageSizes","reactive","computed","defaultPaginationProps","onSizeChange","onCurrentChange","layout","useTableColumn","tableData","columnProps","column","attrs","align","renderHeader","required","_createVNode","_createTextVNode","label","headerRender","arr","prop","filters","Set","text","filterMethod","row","prepareProps","columnList","columns","linkProps","linkColumn","find","type","className","show","hide","useTableFormItem","formItemProps","cellRequired","disabled","options","disabledOption","args","forEach","btnItem","name","key","startsWith","fn","isShowLabel","hideRequiredAsterisk","$index","tableProp"],"mappings":";;;;AAYO,MAAMA,WAAYC,CAAAA,KAAAA,KAAsB;AAC7C,EAAA,MAAMC,SAAAA,GAAYC,eAA6B,WAAW,CAAA;AAC1D,EAAA,MAAMC,UAAAA,GAAaD,eAA8B,YAAY,CAAA;AAC7D,EAAA,MAAME,UAAAA,GAAaC,GAAAA,CAA+B,EAAE,CAAA;AACpD,EAAA,MAAM;AAAA,IAAEC,OAAAA;AAAAA,IAASC;AAAAA,MAAcC,UAAAA,CAAW;AAAA,IACxCC,KAAKT,KAAAA,CAAMS,GAAAA;AAAAA,IACXC,QAAQV,KAAAA,CAAMU,MAAAA;AAAAA,IACdC,SAASX,KAAAA,CAAMW,OAAAA;AAAAA,IACfC,WAAWZ,KAAAA,CAAMY,SAAAA;AAAAA,IACjBC,WAAWb,KAAAA,CAAMa,SAAAA;AAAAA,IACjBC,UAAUd,KAAAA,CAAMc,QAAAA;AAAAA,IAChBC,WAAAA,EAAa,IAAA;AAAA,IACbC,KAAAA,EAAO;AAAA,MACLC,QAAQC,IAAAA,EAAM;AACZ,QAAA,IAAIC,KAAAA,CAAMC,OAAAA,CAAQF,IAAI,CAAA,EAAG;AACvBd,UAAAA,UAAAA,CAAWiB,KAAAA,GAAQH,IAAAA;AAAAA,QACrB,CAAA,MAAA,IAAWA,IAAAA,IAAQ,OAAOA,IAAAA,KAAS,QAAA,EAAU;AAC3C,UAAA,MAAMI,OAAAA,GAAUJ,IAAAA;AAChBd,UAAAA,UAAAA,CAAWiB,KAAAA,GAAQC,OAAAA,EAASC,IAAAA,IAAQD,OAAAA,EAASJ,QAAQ,EAAA;AAAA,QACvD,CAAA,MAAO;AACLd,UAAAA,UAAAA,CAAWiB,QAAQ,EAAA;AAAA,QACrB;AACA,QAAA,IAAIrB,MAAMwB,cAAAA,EAAgB;AACxBC,UAAAA,UAAAA,CAAWC,SACR1B,KAAAA,CAAM2B,WAAAA,GACHvB,WAAWiB,KAAAA,CAAMO,MAAAA,GAChBV,KAA2BQ,KAAAA,KAAU,CAAA;AAAA,QAC9C;AAAA,MACF,CAAA;AAAA,MACAG,KAAKC,KAAAA,EAAO;AACVC,QAAAA,OAAAA,CAAQD,MAAMA,KAAK,CAAA;AAAA,MACrB;AAAA;AACF,GACD,CAAA;AAED,EAAA,MAAME,MAAAA,GAAkBA,CAACC,IAAAA,GAAO,KAAA,EAAOC,eAAe,KAAA,KAAU;AAC9D,IAAA,IAAID,IAAAA,EAAM;AACRR,MAAAA,UAAAA,CAAWU,MAAAA,GAAS,CAAA;AAAA,IACtB;AAEA,IAAA,IAAID,YAAAA,IAAgBlC,MAAM2B,WAAAA,EAAa;AACrC,MAAA,MAAM;AAAA,QAAEQ,MAAAA;AAAAA,QAAQC;AAAAA,OAAS,GAAIX,UAAAA;AAC7B,MAAA,MAAMP,OAAOd,UAAAA,CAAWiB,KAAAA,CAAMgB,MAAAA,CAAO,CAACC,MAAMC,KAAAA,KAAU;AACpD,QAAA,OAAOA,KAAAA,GAAQJ,MAAAA,GAASC,QAAAA,IAAYG,KAAAA,IAAAA,CAAUJ,SAAS,CAAA,IAAKC,QAAAA;AAAAA,MAC9D,CAAC,CAAA;AACDhC,MAAAA,UAAAA,CAAWiB,KAAAA,GAAQH,IAAAA;AAAAA,IACrB,CAAA,MAAO;AACL,MAAA,IAAIlB,MAAMS,GAAAA,EAAK;AACbF,QAAAA,SAAAA,CAAW;AAAA,UACT4B,QAAQV,UAAAA,CAAWU,MAAAA;AAAAA,UACnBC,UAAUX,UAAAA,CAAWW;AAAAA,SACtB,CAAA;AAAA,MACH,CAAA,MAAA,IAAWpC,KAAAA,CAAMkB,IAAAA,EAAMU,MAAAA,EAAQ;AAC7BxB,QAAAA,UAAAA,CAAWiB,QAAQrB,KAAAA,CAAMkB,IAAAA;AAAAA,MAC3B;AAAA,IACF;AAAA,EACF,CAAA;AACA,EAAA,MAAM;AAAA,IAAEO,UAAAA;AAAAA,IAAYe;AAAAA,GAAgB,GAAIC,aAAAA,CAAczC,KAAAA,EAAOgC,MAAM,CAAA;AACnEA,EAAAA,MAAAA,CAAO,IAAI,CAAA;AAEX,EAAA,MAAMU,WAAWA,MAAM;AACrB,IAAA,OAAOzC,SAAAA,CAAUoB,MAAOqB,QAAAA,EAAS;AAAA,EACnC,CAAA;AAEA,EAAA,MAAMC,WAAAA,GAAe3C,CAAAA,MAAAA,KAAwB;AAC3C,IAAA,OAAOC,SAAAA,CAAUoB,KAAAA,CAAOsB,WAAAA,CAAY3C,MAAK,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,MAAM4C,aAAAA,GAAiB5C,CAAAA,MAAAA,KAAwB;AAC7C,IAAA,OAAOC,SAAAA,CAAUoB,KAAAA,CAAOuB,aAAAA,CAAc5C,MAAK,CAAA;AAAA,EAC7C,CAAA;AAEA,EAAA,MAAM6C,mBAAAA,GAAsBA,CAACtB,IAAAA,EAAqBuB,KAAAA,KAAsB;AACtE,IAAA,OAAOvB,IAAAA,CAAKwB,IAAKT,CAAAA,IAAAA,KAAS;AACxB,MAAA,IAAIA,KAAKU,OAAAA,EAAS;AAChBV,QAAAA,IAAAA,CAAKU,OAAAA,GAAUV,IAAAA,CAAKU,OAAAA,CAAQC,IAAAA,CAAK,MAAMH,KAAK,CAAA;AAAA,MAC9C;AACA,MAAA,OAAOR,IAAAA;AAAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,OAAO;AAAA,IACLhC,OAAAA;AAAAA,IACAY,IAAAA,EAAMd,UAAAA;AAAAA,IACN4B,MAAAA;AAAAA,IACAP,UAAAA;AAAAA,IACAe,eAAAA;AAAAA,IACAE,QAAAA;AAAAA,IACAC,WAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACA3C,SAAAA;AAAAA,IACAE,UAAAA;AAAAA,IACA0C;AAAAA,GACF;AACF;AACA,MAAMJ,aAAAA,GAAgB,SAAUzC,KAAAA,EAAmBgC,MAAAA,EAAiB;AAClE,EAAA,MAAMkB,SAAAA,GAAY,CAAC,EAAA,EAAI,EAAA,EAAI,KAAK,GAAG,CAAA;AACnC,EAAA,MAAMzB,aAAa0B,QAAAA,CAAS;AAAA,IAC1BzB,KAAAA,EAAO,CAAA;AAAA,IACPS,MAAAA,EAAQ,CAAA;AAAA,IACRC,QAAAA,EAAUc,UAAU,CAAC;AAAA,GACtB,CAAA;AACD,EAAA,MAAMV,eAAAA,GAAkBY,SAAS,MAAM;AACrC,IAAA,MAAMC,sBAAAA,GAAyBrD,KAAAA,CAAMwC,eAAAA,IAAmB,EAAC;AACzD,IAAA,MAAMc,eAAeD,sBAAAA,CAAuBC,YAAAA;AAC5C,IAAA,MAAMC,kBAAkBF,sBAAAA,CAAuBE,eAAAA;AAC/C,IAAA,OAAO;AAAA,MACL,GAAGF,sBAAAA;AAAAA,MACHH,SAAAA;AAAAA,MACAM,MAAAA,EAAQ,yCAAA;AAAA,MACRF,cAAejC,CAAAA,KAAAA,KAAkB;AAC/BiC,QAAAA,YAAAA,IAAgBA,aAAajC,KAAK,CAAA;AAClCW,QAAAA,MAAAA,CAAO,MAAM,IAAI,CAAA;AAAA,MACnB,CAAA;AAAA,MACAuB,iBAAkBlC,CAAAA,KAAAA,KAAkB;AAClCkC,QAAAA,eAAAA,IAAmBA,gBAAgBlC,KAAK,CAAA;AACxCW,QAAAA,MAAAA,CAAO,OAAO,IAAI,CAAA;AAAA,MACpB;AAAA,KACF;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO;AAAA,IACLP,UAAAA;AAAAA,IACAe;AAAAA,GACF;AACF,CAAA;AAEO,MAAMiB,cAAAA,GAAiBA,CAC5BzD,KAAAA,EACA0D,SAAAA,KACG;AACH,EAAA,MAAMC,cAAeC,CAAAA,MAAAA,KAAwB;AAC3C,IAAA,MAAMC,KAAAA,GAAQ;AAAA,MACZC,KAAAA,EAAOF,MAAAA,CAAOE,KAAAA,IAAS9D,KAAAA,CAAM8D;AAAAA;AAAAA,KAE/B;AAGA,IAAA,IAAI,CAACF,OAAOG,YAAAA,EAAc;AACxB,MAAA,IAAIC,WAAWJ,MAAAA,CAAOI,QAAAA;AACtB,MAAA,IAAI,OAAOJ,MAAAA,CAAOI,QAAAA,KAAa,UAAA,EAAY;AACzCA,QAAAA,QAAAA,GAAWJ,OAAOI,QAAAA,EAAS;AAAA,MAC7B;AACA,MAAA,IAAIA,QAAAA,EAAU;AACZH,QAAAA,KAAAA,CAAM,cAAc,IAAK3C,CAAAA,IAAAA,KAAS;AAChC,UAAA,MAAM;AAAA,YAAE0C,MAAAA,EAAAA;AAAAA,WAAO,GAAI1C,IAAAA;AACnB,UAAA,OAAA+C,WAAAA,gBAAAA,YAAA,MAAA,EAAA;AAAA,YAAA,OAAA,EAAA;AAAA,WAAA,EAAA,CAAAC,eAAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAGKN,OAAAA,CAAOO,KAAK,CAAA,CAAA;AAAA,QAGnB,CAAA;AAAA,MACF;AAAA,IACF;AACA,IAAA,IAAIP,OAAOQ,YAAAA,EAAc;AACvBP,MAAAA,KAAAA,CAAME,eAAeH,MAAAA,CAAOQ,YAAAA;AAAAA,IAC9B;AACA,IAAA,IAAIR,OAAOvB,MAAAA,EAAQ;AACjB,MAAA,MAAMgC,GAAAA,GAAMX,UAAUrC,KAAAA,CAAO0B,GAAAA,CAAKT,UAASA,IAAAA,CAAKsB,MAAAA,CAAOU,IAAI,CAAE,CAAA;AAC7DT,MAAAA,KAAAA,CAAMU,OAAAA,GAAU,CAAC,GAAG,IAAIC,IAAIH,GAAG,CAAC,CAAA,CAAEtB,GAAAA,CAAKT,CAAAA,IAAAA,KAAS;AAC9C,QAAA,OAAO;AAAA,UACLmC,IAAAA,EAAMnC,IAAAA;AAAAA,UACNjB,KAAAA,EAAOiB;AAAAA,SACT;AAAA,MACF,CAAC,CAAA;AACDuB,MAAAA,KAAAA,CAAMa,YAAAA,GAAe,CAACrD,KAAAA,EAAOsD,GAAAA,KAAQ;AACnC,QAAA,OAAOA,GAAAA,CAAIf,MAAAA,CAAOU,IAAI,CAAA,KAAOjD,KAAAA;AAAAA,MAC/B,CAAA;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,GAAGwC,KAAAA;AAAAA,MACH,GAAGe,aAAahB,MAAM;AAAA,KACxB;AAAA,EACF,CAAA;AACA,EAAA,MAAMiB,UAAAA,GAAazB,SAAS,MAAM;AAChC,IAAA,OAAOpD,KAAAA,CAAM8E,OAAAA,CAASzC,MAAAA,CAAQuB,CAAAA,MAAAA,KAAwB;AACpD,MAAA,IAAI5D,KAAAA,CAAM+E,UAAWnD,MAAAA,EAAQ;AAC3B,QAAA,MAAMoD,UAAAA,GAAahF,MAAM+E,SAAAA,CAAWE,IAAAA,CACjC3C,UAASA,IAAAA,CAAKgC,IAAAA,KAASV,OAAOU,IACjC,CAAA;AACA,QAAA,IAAIU,UAAAA,EAAY;AACdpB,UAAAA,MAAAA,CAAOsB,IAAAA,GAAO,WAAA;AACdtB,UAAAA,MAAAA,CAAOuB,SAAAA,GAAY,mBAAA;AACnBvB,UAAAA,MAAAA,CAAO5D,KAAAA,GAAQ;AAAA,YACbuB,IAAAA,EAAM,CAACyD,UAAU,CAAA;AAAA,YACjBE,IAAAA,EAAM,MAAA;AAAA,YACN,GAAGtB,MAAAA,CAAO5D;AAAAA,WACZ;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,UAAU4D,MAAAA,EAAQ;AACpB,QAAA,OAAO,OAAOA,OAAOwB,IAAAA,KAAS,UAAA,GAC1BxB,OAAOwB,IAAAA,CAAKxB,MAAM,IAClBA,MAAAA,CAAOwB,IAAAA;AAAAA,MACb,CAAA,MAAA,IAAW,UAAUxB,MAAAA,EAAQ;AAC3B,QAAA,OAAO,OAAOA,MAAAA,CAAOyB,IAAAA,KAAS,UAAA,GAC1B,CAACzB,OAAOyB,IAAAA,CAAKzB,MAAM,CAAA,GACnB,CAACA,MAAAA,CAAOyB,IAAAA;AAAAA,MACd;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AACD,EAAA,OAAO;AAAA,IACL1B,WAAAA;AAAAA,IACAkB;AAAAA,GACF;AACF;AAEO,MAAMS,mBAAoBtF,CAAAA,KAAAA,KAAsB;AACrD,EAAA,MAAMuF,aAAAA,GAAgBA,CAACzC,KAAAA,EAAmBR,IAAAA,KAAsB;AAC9D,IAAA,IAAI0B,WAAW1B,IAAAA,CAAK0B,QAAAA;AACpB,IAAA,IAAI,OAAOA,aAAa,UAAA,EAAY;AAClCA,MAAAA,QAAAA,GAAWA,QAAAA,EAAS;AAAA,IACtB;AACA,IAAA,IAAI1B,KAAKkD,YAAAA,EAAc;AACrBxB,MAAAA,QAAAA,GAAW1B,IAAAA,CAAKkD,aAAa1C,KAAK,CAAA;AAAA,IACpC;AACA,IAAA,IAAI2C,WAAWzF,KAAAA,CAAMyF,QAAAA;AACrB,IAAA,IAAI,cAAcnD,IAAAA,EAAM;AACtB,MAAA,IAAI,OAAOA,IAAAA,CAAKmD,QAAAA,KAAa,UAAA,EAAY;AACvCA,QAAAA,QAAAA,GAAWnD,IAAAA,CAAKmD,SAAS3C,KAAK,CAAA;AAAA,MAChC,CAAA,MAAO;AACL2C,QAAAA,QAAAA,GAAWnD,KAAKmD,QAAAA,IAAY,KAAA;AAAA,MAC9B;AAAA,IACF;AACA,IAAA,IAAInD,IAAAA,CAAK4C,IAAAA,KAAS,UAAA,IAAc5C,IAAAA,CAAKtC,KAAAA,EAAO;AAC1C,MAAA,IAAI,aAAasC,IAAAA,CAAKtC,KAAAA,IAAS,OAAOsC,IAAAA,CAAKtC,KAAAA,CAAM0F,YAAY,UAAA,EAAY;AACvEpD,QAAAA,IAAAA,CAAKtC,KAAAA,CAAM0F,OAAAA,GAAUpD,IAAAA,CAAKtC,KAAAA,CAAM0F,QAAQ5C,KAAK,CAAA;AAAA,MAC/C;AACA,MAAA,IACE,oBAAoBR,IAAAA,CAAKtC,KAAAA,IACzB,OAAOsC,IAAAA,CAAKtC,KAAAA,CAAM2F,mBAAmB,UAAA,EACrC;AACA,QAAA,MAAMA,cAAAA,GAAiBrD,KAAKtC,KAAAA,CAAM2F,cAAAA;AAClCrD,QAAAA,IAAAA,CAAKtC,MAAM2F,cAAAA,GAAiB,CAAA,GAAIC,SAC9BD,cAAAA,CAAe,GAAGC,MAAM9C,KAAK,CAAA;AAAA,MACjC;AAAA,IACF;AAEA,IAAA,IAAIR,IAAAA,CAAK4C,IAAAA,KAAS,WAAA,IAAe5C,IAAAA,CAAKtC,KAAAA,EAAO;AAC3CsC,MAAAA,IAAAA,CAAKtC,KAAAA,CAAMuB,IAAAA,CAAKsE,OAAAA,CAASC,CAAAA,OAAAA,KAAyB;AAChD,QAAA,IAAIA,QAAQxB,IAAAA,EAAM;AAChBwB,UAAAA,OAAAA,CAAQC,IAAAA,GAAOjD,KAAAA,CAAM6B,GAAAA,CAAImB,OAAAA,CAAQxB,IAAI,CAAA;AAAA,QACvC;AACA,QAAA,IAAIwB,QAAQ9C,OAAAA,EAAS;AACnB8C,UAAAA,OAAAA,CAAQ9C,OAAAA,GAAU8C,OAAAA,CAAQ9C,OAAAA,CAAQC,IAAAA,CAAK,MAAMH,KAAK,CAAA;AAAA,QACpD;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AACA,IAAA,KAAA,MAAWkD,OAAO1D,IAAAA,EAAM;AACtB,MAAA,IAAI0D,GAAAA,CAAIC,WAAW,IAAI,CAAA,IAAK,OAAO3D,IAAAA,CAAK0D,GAAG,MAAM,UAAA,EAAY;AAC3D,QAAA,MAAME,EAAAA,GAAK5D,KAAK0D,GAAG,CAAA;AACnB1D,QAAAA,IAAAA,CAAK0D,GAAG,CAAA,GAAI,CAAA,GAAIJ,SAAoBM,EAAAA,CAAG,GAAGN,MAAM9C,KAAK,CAAA;AAAA,MACvD;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,GAAG8B,aAAatC,IAAI,CAAA;AAAA,MACpB6D,WAAAA,EAAa,KAAA;AAAA,MACbnC,QAAAA;AAAAA,MACAoC,oBAAAA,EAAsB,cAAA,IAAkB9D,IAAAA,GAAO,KAAA,GAAQ0B,QAAAA;AAAAA,MACvDM,MAAM,CAAA,MAAA,EAASxB,KAAAA,CAAMuD,MAAM,CAAA,CAAA,EAAI/D,KAAKgC,IAAI,CAAA,CAAA;AAAA,MACxCgC,WAAWhE,IAAAA,CAAKgC,IAAAA;AAAAA;AAAAA,MAChBtE,KAAAA,EAAO;AAAA,QACL,GAAGsC,IAAAA,CAAKtC,KAAAA;AAAAA,QACRyF;AAAAA;AACF,KACF;AAAA,EACF,CAAA;AACA,EAAA,OAAO;AAAA,IACLF;AAAAA,GACF;AACF;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Buttons from './components/buttons/index.mjs';
|
|
2
|
+
import Form from './components/form/index.mjs';
|
|
3
|
+
import Input from './components/input/index.mjs';
|
|
4
|
+
import SearchListPage from './components/searchListPage/index.mjs';
|
|
5
|
+
import Select from './components/select/index.mjs';
|
|
6
|
+
import Table from './components/table/index.mjs';
|
|
7
|
+
|
|
8
|
+
var components = [Buttons, Form, Input, SearchListPage, Select, Table];
|
|
9
|
+
|
|
10
|
+
export { components as default };
|
|
11
|
+
//# sourceMappingURL=components.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.mjs","sources":["../../../packages/el-plus/components.ts"],"sourcesContent":["import type { Plugin } from 'vue'\nimport Buttons from '@el-plus/components/buttons'\nimport Form from '@el-plus/components/form'\nimport Input from '@el-plus/components/input'\nimport SearchListPage from '@el-plus/components/searchListPage'\nimport Select from '@el-plus/components/select'\nimport Table from '@el-plus/components/table'\n\nexport default [Buttons, Form, Input, SearchListPage, Select, Table] as Plugin[]\n"],"names":[],"mappings":";;;;;;;AAQA,iBAAe,CAAC,OAAA,EAAS,IAAA,EAAM,KAAA,EAAO,cAAA,EAAgB,QAAQ,KAAK,CAAA;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import fetch from '../../utils/request.mjs';
|
|
2
|
+
|
|
3
|
+
const vPermisson = {
|
|
4
|
+
name: "permission",
|
|
5
|
+
mounted(el, binding) {
|
|
6
|
+
const { arg, value } = binding.value;
|
|
7
|
+
if (!arg && !value) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
el.style.display = "none";
|
|
11
|
+
const permission = `${arg}:${value}`;
|
|
12
|
+
checkPermission(permission, el);
|
|
13
|
+
},
|
|
14
|
+
updated(el, binding) {
|
|
15
|
+
const { arg, value } = binding.value;
|
|
16
|
+
if (!arg && !value) {
|
|
17
|
+
if (el.style.display === "none") {
|
|
18
|
+
el.style.display = "";
|
|
19
|
+
}
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const permission = `${arg}:${value}`;
|
|
23
|
+
checkPermission(permission, el);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
async function checkPermission(permission, el) {
|
|
27
|
+
const { data: roles = [] } = await queryRoles();
|
|
28
|
+
const hasPermission = roles.indexOf(permission) > -1;
|
|
29
|
+
if (!hasPermission) {
|
|
30
|
+
el && el.parentNode && el.parentNode.removeChild(el);
|
|
31
|
+
} else {
|
|
32
|
+
el.style.display = "";
|
|
33
|
+
}
|
|
34
|
+
return hasPermission;
|
|
35
|
+
}
|
|
36
|
+
let requestPromise = null;
|
|
37
|
+
async function queryRoles() {
|
|
38
|
+
try {
|
|
39
|
+
if (requestPromise) {
|
|
40
|
+
return requestPromise;
|
|
41
|
+
}
|
|
42
|
+
requestPromise = fetch({
|
|
43
|
+
url: "/api-u/api/saas/user/appButtonRoleList",
|
|
44
|
+
loading: true,
|
|
45
|
+
noErrorMsg: true
|
|
46
|
+
});
|
|
47
|
+
return requestPromise;
|
|
48
|
+
} catch (error) {
|
|
49
|
+
console.error(error);
|
|
50
|
+
return { data: [] };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { checkPermission, vPermisson as default };
|
|
55
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../packages/directives/permission/index.ts"],"sourcesContent":["import type { Directive } from 'vue'\nimport request from '@el-plus/utils/request'\n\n// v-permisson:CGXQD:QXSP\nconst vPermisson: Directive<HTMLElement> & { name: string } = {\n name: 'permission',\n mounted(el, binding) {\n const { arg, value } = binding.value\n if (!arg && !value) {\n return\n }\n el.style.display = 'none'\n const permission = `${arg}:${value}`\n checkPermission(permission, el)\n },\n updated(el, binding) {\n const { arg, value } = binding.value\n if (!arg && !value) {\n if (el.style.display === 'none') {\n el.style.display = ''\n }\n return\n }\n const permission = `${arg}:${value}`\n checkPermission(permission, el)\n },\n}\n\nexport async function checkPermission(permission: string, el: HTMLElement) {\n const { data: roles = [] } = await queryRoles()\n const hasPermission = roles.indexOf(permission) > -1\n if (!hasPermission) {\n el && el.parentNode && el.parentNode.removeChild(el)\n } else {\n el.style.display = ''\n }\n return hasPermission\n}\ntype RequestPromise = Promise<{ data: string[] }>\nlet requestPromise: RequestPromise | null = null\nasync function queryRoles(): RequestPromise {\n try {\n if (requestPromise) {\n return requestPromise\n }\n requestPromise = request({\n url: '/api-u/api/saas/user/appButtonRoleList',\n loading: true,\n noErrorMsg: true,\n })\n return requestPromise\n } catch (error) {\n console.error(error)\n return { data: [] }\n }\n}\n\nexport default vPermisson\n"],"names":["request"],"mappings":";;AAIA,MAAM,UAAA,GAAwD;AAAA,EAC5D,IAAA,EAAM,YAAA;AAAA,EACN,OAAA,CAAQ,IAAI,OAAA,EAAS;AACnB,IAAA,MAAM,EAAE,GAAA,EAAK,KAAA,EAAM,GAAI,OAAA,CAAQ,KAAA;AAC/B,IAAA,IAAI,CAAC,GAAA,IAAO,CAAC,KAAA,EAAO;AAClB,MAAA;AAAA,IACF;AACA,IAAA,EAAA,CAAG,MAAM,OAAA,GAAU,MAAA;AACnB,IAAA,MAAM,UAAA,GAAa,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAClC,IAAA,eAAA,CAAgB,YAAY,EAAE,CAAA;AAAA,EAChC,CAAA;AAAA,EACA,OAAA,CAAQ,IAAI,OAAA,EAAS;AACnB,IAAA,MAAM,EAAE,GAAA,EAAK,KAAA,EAAM,GAAI,OAAA,CAAQ,KAAA;AAC/B,IAAA,IAAI,CAAC,GAAA,IAAO,CAAC,KAAA,EAAO;AAClB,MAAA,IAAI,EAAA,CAAG,KAAA,CAAM,OAAA,KAAY,MAAA,EAAQ;AAC/B,QAAA,EAAA,CAAG,MAAM,OAAA,GAAU,EAAA;AAAA,MACrB;AACA,MAAA;AAAA,IACF;AACA,IAAA,MAAM,UAAA,GAAa,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAClC,IAAA,eAAA,CAAgB,YAAY,EAAE,CAAA;AAAA,EAChC;AACF;AAEA,eAAsB,eAAA,CAAgB,YAAoB,EAAA,EAAiB;AACzE,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,GAAQ,EAAC,EAAE,GAAI,MAAM,UAAA,EAAW;AAC9C,EAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,GAAI,EAAA;AAClD,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,EAAA,IAAM,EAAA,CAAG,UAAA,IAAc,EAAA,CAAG,UAAA,CAAW,YAAY,EAAE,CAAA;AAAA,EACrD,CAAA,MAAO;AACL,IAAA,EAAA,CAAG,MAAM,OAAA,GAAU,EAAA;AAAA,EACrB;AACA,EAAA,OAAO,aAAA;AACT;AAEA,IAAI,cAAA,GAAwC,IAAA;AAC5C,eAAe,UAAA,GAA6B;AAC1C,EAAA,IAAI;AACF,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,OAAO,cAAA;AAAA,IACT;AACA,IAAA,cAAA,GAAiBA,KAAA,CAAQ;AAAA,MACvB,GAAA,EAAK,wCAAA;AAAA,MACL,OAAA,EAAS,IAAA;AAAA,MACT,UAAA,EAAY;AAAA,KACb,CAAA;AACD,IAAA,OAAO,cAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AACnB,IAAA,OAAO,EAAE,IAAA,EAAM,EAAC,EAAE;AAAA,EACpB;AACF;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Directive } from 'vue';
|
|
2
|
+
declare const SCOPE = "_RepeatClick";
|
|
3
|
+
export interface RepeatClickEl extends HTMLElement {
|
|
4
|
+
[SCOPE]: null | {
|
|
5
|
+
start?: (evt: MouseEvent) => void;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export interface RepeatClickOptions {
|
|
9
|
+
immediate?: boolean;
|
|
10
|
+
delay?: number;
|
|
11
|
+
handler: (...args: unknown[]) => unknown;
|
|
12
|
+
}
|
|
13
|
+
declare const vRepeatClick: Directive<RepeatClickEl, RepeatClickOptions> & {
|
|
14
|
+
name: string;
|
|
15
|
+
};
|
|
16
|
+
export default vRepeatClick;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
const SCOPE = "_RepeatClick";
|
|
2
|
+
const vRepeatClick = {
|
|
3
|
+
name: "repeatClick",
|
|
4
|
+
// 在绑定元素的 attribute 前
|
|
5
|
+
// 或事件监听器应用前调用
|
|
6
|
+
// created(el, binding, vnode) {
|
|
7
|
+
// // el.style.display = 'none'
|
|
8
|
+
// // 下面会介绍各个参数的细节
|
|
9
|
+
// console.log('created', el, binding, vnode)
|
|
10
|
+
// },
|
|
11
|
+
// 在元素被插入到 DOM 前调用
|
|
12
|
+
beforeMount(el, binding) {
|
|
13
|
+
const { delay = 300, immediate } = typeof binding.value === "object" ? binding.value : {};
|
|
14
|
+
const handler = typeof binding.value === "object" ? binding.value.handler : binding.value;
|
|
15
|
+
let isPending = false;
|
|
16
|
+
let timer;
|
|
17
|
+
const start = (e) => {
|
|
18
|
+
if (e.button !== 0) return;
|
|
19
|
+
timer && clearTimeout(timer);
|
|
20
|
+
timer = setTimeout(() => {
|
|
21
|
+
if (immediate) {
|
|
22
|
+
isPending = false;
|
|
23
|
+
} else {
|
|
24
|
+
handler?.(e);
|
|
25
|
+
}
|
|
26
|
+
}, delay);
|
|
27
|
+
if (immediate) {
|
|
28
|
+
if (isPending) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
isPending = true;
|
|
32
|
+
handler?.(e);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
el[SCOPE] = { start };
|
|
36
|
+
el.addEventListener("click", start);
|
|
37
|
+
},
|
|
38
|
+
// // 在绑定元素的父组件
|
|
39
|
+
// // 及他自己的所有子节点都挂载完成后调用
|
|
40
|
+
// mounted(el, binding, vnode) {
|
|
41
|
+
// console.log('mounted', el, binding, vnode)
|
|
42
|
+
// },
|
|
43
|
+
// // 绑定元素的父组件更新前调用
|
|
44
|
+
// beforeUpdate(el, binding, vnode, prevVnode) {
|
|
45
|
+
// console.log('beforeUpdate', el, binding, vnode, prevVnode)
|
|
46
|
+
// },
|
|
47
|
+
// // 在绑定元素的父组件
|
|
48
|
+
// // 及他自己的所有子节点都更新后调用
|
|
49
|
+
// updated(el, binding, vnode, prevVnode) {
|
|
50
|
+
// console.log('updated', el, binding, vnode, prevVnode)
|
|
51
|
+
// },
|
|
52
|
+
// // 绑定元素的父组件卸载前调用
|
|
53
|
+
// beforeUnmount(el, binding, vnode) {
|
|
54
|
+
// console.log('beforeUnmount', el, binding, vnode)
|
|
55
|
+
// },
|
|
56
|
+
// 绑定元素的父组件卸载后调用
|
|
57
|
+
unmounted(el) {
|
|
58
|
+
if (!el[SCOPE]) return;
|
|
59
|
+
const { start } = el[SCOPE];
|
|
60
|
+
if (start) {
|
|
61
|
+
el.removeEventListener("mousedown", start);
|
|
62
|
+
}
|
|
63
|
+
el[SCOPE] = null;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export { vRepeatClick as default };
|
|
68
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../packages/directives/repeat-click/index.ts"],"sourcesContent":["import type { Directive } from 'vue'\nconst SCOPE = '_RepeatClick'\nexport interface RepeatClickEl extends HTMLElement {\n [SCOPE]: null | {\n start?: (evt: MouseEvent) => void\n }\n}\nexport interface RepeatClickOptions {\n immediate?: boolean\n delay?: number\n handler: (...args: unknown[]) => unknown\n}\nconst vRepeatClick: Directive<RepeatClickEl, RepeatClickOptions> & {\n name: string\n} = {\n name: 'repeatClick',\n // 在绑定元素的 attribute 前\n // 或事件监听器应用前调用\n // created(el, binding, vnode) {\n // // el.style.display = 'none'\n // // 下面会介绍各个参数的细节\n // console.log('created', el, binding, vnode)\n // },\n\n // 在元素被插入到 DOM 前调用\n beforeMount(el, binding) {\n const { delay = 300, immediate } =\n typeof binding.value === 'object' ? binding.value : {}\n const handler =\n typeof binding.value === 'object' ? binding.value.handler : binding.value\n let isPending = false\n let timer: ReturnType<typeof setTimeout>\n const start = (e: MouseEvent) => {\n if (e.button !== 0) return // 只处理左键点击\n timer && clearTimeout(timer)\n timer = setTimeout(() => {\n if (immediate) {\n isPending = false\n } else {\n handler?.(e)\n }\n }, delay)\n if (immediate) {\n if (isPending) {\n return\n }\n isPending = true\n handler?.(e)\n }\n }\n el[SCOPE] = { start }\n el.addEventListener('click', start)\n },\n // // 在绑定元素的父组件\n // // 及他自己的所有子节点都挂载完成后调用\n // mounted(el, binding, vnode) {\n // console.log('mounted', el, binding, vnode)\n // },\n // // 绑定元素的父组件更新前调用\n // beforeUpdate(el, binding, vnode, prevVnode) {\n // console.log('beforeUpdate', el, binding, vnode, prevVnode)\n // },\n // // 在绑定元素的父组件\n // // 及他自己的所有子节点都更新后调用\n // updated(el, binding, vnode, prevVnode) {\n // console.log('updated', el, binding, vnode, prevVnode)\n // },\n // // 绑定元素的父组件卸载前调用\n // beforeUnmount(el, binding, vnode) {\n // console.log('beforeUnmount', el, binding, vnode)\n // },\n // 绑定元素的父组件卸载后调用\n unmounted(el) {\n if (!el[SCOPE]) return\n const { start } = el[SCOPE]\n\n if (start) {\n el.removeEventListener('mousedown', start)\n }\n el[SCOPE] = null\n },\n}\nexport default vRepeatClick\n"],"names":[],"mappings":"AACA,MAAM,KAAA,GAAQ,cAAA;AAWd,MAAM,YAAA,GAEF;AAAA,EACF,IAAA,EAAM,aAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUN,WAAA,CAAY,IAAI,OAAA,EAAS;AACvB,IAAA,MAAM,EAAE,KAAA,GAAQ,GAAA,EAAK,SAAA,EAAU,GAC7B,OAAO,OAAA,CAAQ,KAAA,KAAU,QAAA,GAAW,OAAA,CAAQ,KAAA,GAAQ,EAAC;AACvD,IAAA,MAAM,OAAA,GACJ,OAAO,OAAA,CAAQ,KAAA,KAAU,WAAW,OAAA,CAAQ,KAAA,CAAM,UAAU,OAAA,CAAQ,KAAA;AACtE,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,IAAI,KAAA;AACJ,IAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAAkB;AAC/B,MAAA,IAAI,CAAA,CAAE,WAAW,CAAA,EAAG;AACpB,MAAA,KAAA,IAAS,aAAa,KAAK,CAAA;AAC3B,MAAA,KAAA,GAAQ,WAAW,MAAM;AACvB,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,SAAA,GAAY,KAAA;AAAA,QACd,CAAA,MAAO;AACL,UAAA,OAAA,GAAU,CAAC,CAAA;AAAA,QACb;AAAA,MACF,GAAG,KAAK,CAAA;AACR,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,IAAI,SAAA,EAAW;AACb,UAAA;AAAA,QACF;AACA,QAAA,SAAA,GAAY,IAAA;AACZ,QAAA,OAAA,GAAU,CAAC,CAAA;AAAA,MACb;AAAA,IACF,CAAA;AACA,IAAA,EAAA,CAAG,KAAK,CAAA,GAAI,EAAE,KAAA,EAAM;AACpB,IAAA,EAAA,CAAG,gBAAA,CAAiB,SAAS,KAAK,CAAA;AAAA,EACpC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,UAAU,EAAA,EAAI;AACZ,IAAA,IAAI,CAAC,EAAA,CAAG,KAAK,CAAA,EAAG;AAChB,IAAA,MAAM,EAAE,KAAA,EAAM,GAAI,EAAA,CAAG,KAAK,CAAA;AAE1B,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,EAAA,CAAG,mBAAA,CAAoB,aAAa,KAAK,CAAA;AAAA,IAC3C;AACA,IAAA,EAAA,CAAG,KAAK,CAAA,GAAI,IAAA;AAAA,EACd;AACF;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './use-request';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type Ref } from 'vue';
|
|
2
|
+
import type { Api, ReqAfter, ReqBefore, Method } from 'el-plus/es/utils/type';
|
|
3
|
+
type UseRequest = (config: {
|
|
4
|
+
api?: Api;
|
|
5
|
+
method?: Method;
|
|
6
|
+
reqData?: Record<string, unknown>;
|
|
7
|
+
reqParams?: Record<string, unknown>;
|
|
8
|
+
reqBefore?: ReqBefore;
|
|
9
|
+
reqAfter?: ReqAfter;
|
|
10
|
+
cancelToken?: boolean;
|
|
11
|
+
hooks?: {
|
|
12
|
+
success?: (data: unknown) => void;
|
|
13
|
+
fail?: (error: unknown) => void;
|
|
14
|
+
};
|
|
15
|
+
}) => {
|
|
16
|
+
loading?: Ref<boolean>;
|
|
17
|
+
requestFn?: (data?: Record<string, unknown>) => Promise<void>;
|
|
18
|
+
};
|
|
19
|
+
export declare const useRequest: UseRequest;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ref } from 'vue';
|
|
2
|
+
import fetch from '../utils/request.mjs';
|
|
3
|
+
|
|
4
|
+
const useRequest = ({
|
|
5
|
+
api,
|
|
6
|
+
method,
|
|
7
|
+
reqData,
|
|
8
|
+
reqParams,
|
|
9
|
+
reqBefore,
|
|
10
|
+
reqAfter,
|
|
11
|
+
cancelToken,
|
|
12
|
+
hooks
|
|
13
|
+
}) => {
|
|
14
|
+
if (!api) return {};
|
|
15
|
+
const loading = ref(false);
|
|
16
|
+
let cancelRequest;
|
|
17
|
+
let apiFn;
|
|
18
|
+
if (typeof api === "string") {
|
|
19
|
+
const config = {
|
|
20
|
+
url: api,
|
|
21
|
+
method
|
|
22
|
+
};
|
|
23
|
+
if (cancelToken) {
|
|
24
|
+
config.cancelRequest = (cancel) => {
|
|
25
|
+
cancelRequest = cancel;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
apiFn = (data = {}, params) => {
|
|
29
|
+
if (config.method === "get") {
|
|
30
|
+
config.params = data;
|
|
31
|
+
} else {
|
|
32
|
+
config.data = data;
|
|
33
|
+
config.params = params;
|
|
34
|
+
}
|
|
35
|
+
config.data = {
|
|
36
|
+
...reqData,
|
|
37
|
+
...config.data
|
|
38
|
+
};
|
|
39
|
+
config.params = {
|
|
40
|
+
...reqParams,
|
|
41
|
+
...config.params
|
|
42
|
+
};
|
|
43
|
+
if (data.$query) {
|
|
44
|
+
config.data[data.$query] = data.$searchValue;
|
|
45
|
+
delete data.$searchValue;
|
|
46
|
+
}
|
|
47
|
+
if (reqBefore) {
|
|
48
|
+
reqBefore(config);
|
|
49
|
+
}
|
|
50
|
+
return fetch(config);
|
|
51
|
+
};
|
|
52
|
+
} else {
|
|
53
|
+
apiFn = api;
|
|
54
|
+
}
|
|
55
|
+
const requestFn = async (data = {}) => {
|
|
56
|
+
if (loading.value && !cancelToken) return;
|
|
57
|
+
loading.value = true;
|
|
58
|
+
try {
|
|
59
|
+
cancelRequest && cancelRequest();
|
|
60
|
+
const res = await apiFn(data);
|
|
61
|
+
if (reqAfter) {
|
|
62
|
+
reqAfter(res);
|
|
63
|
+
}
|
|
64
|
+
if (hooks?.success) {
|
|
65
|
+
hooks.success(res.data);
|
|
66
|
+
}
|
|
67
|
+
} catch (error) {
|
|
68
|
+
if (hooks?.fail) {
|
|
69
|
+
hooks.fail(error);
|
|
70
|
+
}
|
|
71
|
+
} finally {
|
|
72
|
+
loading.value = false;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
return {
|
|
76
|
+
loading,
|
|
77
|
+
requestFn
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export { useRequest };
|
|
82
|
+
//# sourceMappingURL=use-request.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-request.mjs","sources":["../../../../packages/hooks/use-request.ts"],"sourcesContent":["import { ref } from 'vue'\nimport { type Ref } from 'vue'\nimport type { Api, ReqAfter, ReqBefore, Method } from '@el-plus/utils/type'\nimport type { Canceler } from 'axios'\n\nimport request from '@el-plus/utils/request'\ntype UseRequest = (config: {\n api?: Api\n method?: Method\n reqData?: Record<string, unknown>\n reqParams?: Record<string, unknown>\n reqBefore?: ReqBefore\n reqAfter?: ReqAfter\n cancelToken?: boolean\n hooks?: {\n success?: (data: unknown) => void\n fail?: (error: unknown) => void\n }\n}) => {\n loading?: Ref<boolean>\n requestFn?: (data?: Record<string, unknown>) => Promise<void>\n}\n\nexport const useRequest: UseRequest = ({\n api,\n method,\n reqData,\n reqParams,\n reqBefore,\n reqAfter,\n cancelToken,\n hooks,\n}) => {\n if (!api) return {}\n const loading = ref(false)\n let cancelRequest: Canceler\n let apiFn\n if (typeof api === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const config: Record<string, any> = {\n url: api,\n method,\n }\n if (cancelToken) {\n config.cancelRequest = (cancel: Canceler) => {\n cancelRequest = cancel\n }\n }\n\n apiFn = (data: Record<string, any> = {}, params?: Record<string, any>) => {\n if (config.method === 'get') {\n config.params = data\n } else {\n config.data = data\n config.params = params\n }\n config.data = {\n ...reqData,\n ...config.data,\n }\n config.params = {\n ...reqParams,\n ...config.params,\n }\n // 替换$query为$searchValue\n if (data.$query) {\n config.data[data.$query] = data.$searchValue\n delete data.$searchValue\n }\n\n if (reqBefore) {\n reqBefore(config)\n }\n return request(config)\n }\n } else {\n apiFn = api\n }\n const requestFn = async (data: Record<string, unknown> = {}) => {\n if (loading.value && !cancelToken) return\n loading.value = true\n try {\n cancelRequest && cancelRequest()\n const res = await apiFn(data)\n if (reqAfter) {\n reqAfter(res)\n }\n if (hooks?.success) {\n hooks.success(res.data)\n }\n } catch (error) {\n if (hooks?.fail) {\n hooks.fail(error)\n }\n } finally {\n loading.value = false\n }\n }\n return {\n loading,\n requestFn,\n }\n}\n"],"names":["request"],"mappings":";;;AAuBO,MAAM,aAAyB,CAAC;AAAA,EACrC,GAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,IAAI,CAAC,GAAA,EAAK,OAAO,EAAC;AAClB,EAAA,MAAM,OAAA,GAAU,IAAI,KAAK,CAAA;AACzB,EAAA,IAAI,aAAA;AACJ,EAAA,IAAI,KAAA;AACJ,EAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAE3B,IAAA,MAAM,MAAA,GAA8B;AAAA,MAClC,GAAA,EAAK,GAAA;AAAA,MACL;AAAA,KACF;AACA,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,MAAA,CAAO,aAAA,GAAgB,CAAC,MAAA,KAAqB;AAC3C,QAAA,aAAA,GAAgB,MAAA;AAAA,MAClB,CAAA;AAAA,IACF;AAEA,IAAA,KAAA,GAAQ,CAAC,IAAA,GAA4B,EAAC,EAAG,MAAA,KAAiC;AACxE,MAAA,IAAI,MAAA,CAAO,WAAW,KAAA,EAAO;AAC3B,QAAA,MAAA,CAAO,MAAA,GAAS,IAAA;AAAA,MAClB,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,IAAA,GAAO,IAAA;AACd,QAAA,MAAA,CAAO,MAAA,GAAS,MAAA;AAAA,MAClB;AACA,MAAA,MAAA,CAAO,IAAA,GAAO;AAAA,QACZ,GAAG,OAAA;AAAA,QACH,GAAG,MAAA,CAAO;AAAA,OACZ;AACA,MAAA,MAAA,CAAO,MAAA,GAAS;AAAA,QACd,GAAG,SAAA;AAAA,QACH,GAAG,MAAA,CAAO;AAAA,OACZ;AAEA,MAAA,IAAI,KAAK,MAAA,EAAQ;AACf,QAAA,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA,GAAI,IAAA,CAAK,YAAA;AAChC,QAAA,OAAO,IAAA,CAAK,YAAA;AAAA,MACd;AAEA,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,SAAA,CAAU,MAAM,CAAA;AAAA,MAClB;AACA,MAAA,OAAOA,MAAQ,MAAM,CAAA;AAAA,IACvB,CAAA;AAAA,EACF,CAAA,MAAO;AACL,IAAA,KAAA,GAAQ,GAAA;AAAA,EACV;AACA,EAAA,MAAM,SAAA,GAAY,OAAO,IAAA,GAAgC,EAAC,KAAM;AAC9D,IAAA,IAAI,OAAA,CAAQ,KAAA,IAAS,CAAC,WAAA,EAAa;AACnC,IAAA,OAAA,CAAQ,KAAA,GAAQ,IAAA;AAChB,IAAA,IAAI;AACF,MAAA,aAAA,IAAiB,aAAA,EAAc;AAC/B,MAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,IAAI,CAAA;AAC5B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,QAAA,CAAS,GAAG,CAAA;AAAA,MACd;AACA,MAAA,IAAI,OAAO,OAAA,EAAS;AAClB,QAAA,KAAA,CAAM,OAAA,CAAQ,IAAI,IAAI,CAAA;AAAA,MACxB;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,IAAI,OAAO,IAAA,EAAM;AACf,QAAA,KAAA,CAAM,KAAK,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA,SAAE;AACA,MAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA;AAAA,IAClB;AAAA,EACF,CAAA;AACA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
|
package/es/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { App, Plugin } from 'vue';
|
|
2
|
+
export declare const install: (app: App, options?: Record<string, any>) => void;
|
|
3
|
+
declare const plugin: Plugin & {
|
|
4
|
+
version: string;
|
|
5
|
+
};
|
|
6
|
+
export default plugin;
|
|
7
|
+
export * from 'el-plus/es/components';
|
|
8
|
+
export * from 'el-plus/es/hooks';
|
|
9
|
+
export * from 'el-plus/es/directives';
|