@gct-paas/core 0.1.4-dev.11 → 0.1.4-dev.12
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.esm.min.js +21679 -0
- package/es/constants/core.mjs +5 -4
- package/es/constants/default-date-type/default-date-type.mjs +73 -21
- package/es/constants/editor-register/editor-register.mjs +17 -5
- package/es/constants/expression-type/BuiltOperators.mjs +152 -147
- package/es/constants/expression-type/FunctionKeys.mjs +75 -79
- package/es/constants/expression-type/editor.mjs +10 -3
- package/es/constants/expression-type/function.mjs +602 -613
- package/es/constants/expression-type/index.mjs +111 -113
- package/es/constants/expression-type/modeCfg.mjs +256 -263
- package/es/constants/expression-type/variable.mjs +43 -39
- package/es/constants/form-container-type/form-container-type.mjs +17 -5
- package/es/constants/index.mjs +30 -10
- package/es/constants/page-designer/model.mjs +15 -5
- package/es/create-app-vue.mjs +15 -9
- package/es/enums/app-designer/index.d.ts +19 -0
- package/es/enums/app-designer/index.mjs +131 -63
- package/es/enums/appEnum.mjs +681 -360
- package/es/enums/appStateEnum.mjs +17 -10
- package/es/enums/authActionEnum.mjs +63 -51
- package/es/enums/breakpointEnum.mjs +27 -26
- package/es/enums/cacheEnum.mjs +22 -21
- package/es/enums/designEnum.mjs +110 -71
- package/es/enums/developer-center/integration.mjs +7 -6
- package/es/enums/exceptionEnum.mjs +21 -17
- package/es/enums/expressionEnum.d.ts +1 -1
- package/es/enums/expressionEnum.mjs +81 -74
- package/es/enums/globalEnum.mjs +59 -36
- package/es/enums/httpEnum.mjs +71 -61
- package/es/enums/index.mjs +43 -14
- package/es/enums/menuEnum.mjs +42 -38
- package/es/enums/page-designer/designer.mjs +403 -407
- package/es/enums/page-designer/index.mjs +4 -0
- package/es/enums/page-designer/panel.mjs +341 -213
- package/es/enums/page-designer/toolkit.mjs +13 -12
- package/es/enums/page-designer/widget.mjs +425 -338
- package/es/enums/pageEnum.mjs +14 -13
- package/es/enums/plugin-enum.mjs +23 -7
- package/es/enums/processEnum.mjs +95 -60
- package/es/enums/roleEnum.mjs +7 -6
- package/es/enums/sizeEnum.d.ts +18 -0
- package/es/enums/sizeEnum.mjs +28 -8
- package/es/global/gct/gct.mjs +84 -96
- package/es/global/index.mjs +1 -0
- package/es/hooks/index.mjs +4 -0
- package/es/hooks/use-app-inst/use-app-inst.mjs +11 -5
- package/es/hooks/use-modal/use-modal.mjs +16 -10
- package/es/hooks/use-sub-app-utils/use-sub-app-utils.mjs +43 -23
- package/es/hooks/useCopyToClipboard.mjs +50 -50
- package/es/index.mjs +122 -114
- package/es/locale/index.mjs +43 -57
- package/es/modules/env-manager/env-manager.const.mjs +16 -8
- package/es/modules/env-manager/env-manager.interface.mjs +14 -7
- package/es/modules/env-manager/env-manager.mjs +104 -107
- package/es/modules/error-handler/error-handler.const.mjs +11 -16
- package/es/modules/error-handler/error-strategy.mjs +199 -175
- package/es/modules/error-handler/index.mjs +120 -106
- package/es/modules/mqtt/constants/mqtt.const.mjs +21 -24
- package/es/modules/mqtt/enums/mqtt-status.enum.mjs +23 -9
- package/es/modules/mqtt/index.mjs +4 -0
- package/es/modules/mqtt/mqtt-client.mjs +228 -261
- package/es/modules/mqtt/mqtt-manager.mjs +117 -77
- package/es/modules/platform-config/constants/index.mjs +4 -0
- package/es/modules/platform-config/constants/login.const.mjs +48 -45
- package/es/modules/platform-config/constants/org.const.mjs +57 -52
- package/es/modules/platform-config/constants/theme.const.mjs +11 -4
- package/es/modules/platform-config/constants/watermark.const.mjs +17 -12
- package/es/modules/platform-config/enums/deploy.enum.mjs +13 -6
- package/es/modules/platform-config/enums/login.enum.mjs +29 -15
- package/es/modules/platform-config/enums/platform.enum.mjs +16 -13
- package/es/modules/platform-config/index.mjs +9 -0
- package/es/modules/platform-config/store.mjs +68 -79
- package/es/modules/platform-config/useBasicSetting.mjs +47 -35
- package/es/modules/platform-config/useDeploySetting.mjs +29 -21
- package/es/modules/platform-config/useLoginSetting.mjs +151 -173
- package/es/modules/platform-config/useOrgSetting.mjs +63 -62
- package/es/modules/platform-config/useProjectSetting.mjs +14 -6
- package/es/modules/platform-config/useSecuritySetting.mjs +68 -56
- package/es/modules/platform-config/useThemeSetting.mjs +78 -59
- package/es/modules/platform-config/useWatermarkSetting.mjs +37 -23
- package/es/modules/user-stores/index.mjs +3 -0
- package/es/modules/user-stores/store/permission.store.mjs +27 -36
- package/es/modules/user-stores/store/tenant.store.mjs +20 -22
- package/es/modules/user-stores/store/user.store.mjs +94 -117
- package/es/router/index.mjs +25 -28
- package/es/setup-app.mjs +23 -39
- package/es/state/global-pinia-state/global-pinia-state.mjs +49 -71
- package/es/state/index.mjs +1 -0
- package/es/store/global-store.mjs +50 -72
- package/es/store/index.mjs +25 -19
- package/es/types/index.d.ts +7 -0
- package/es/utils/axios/interceptors.mjs +21 -17
- package/es/utils/cache-adapter/cache-adapter.mjs +61 -56
- package/es/utils/design/design.mjs +18 -12
- package/es/utils/deviceFingerprint.mjs +74 -63
- package/es/utils/dictionary/dictionary.mjs +142 -145
- package/es/utils/file/base64Conver.mjs +35 -30
- package/es/utils/file/download.mjs +94 -98
- package/es/utils/file/parser.d.ts +3 -0
- package/es/utils/file/parser.mjs +29 -0
- package/es/utils/i18n/index.mjs +14 -3
- package/es/utils/index.d.ts +1 -0
- package/es/utils/index.mjs +31 -0
- package/es/utils/is-sort-filed/is-sort-filed.mjs +42 -37
- package/es/utils/linked-list/linked-list.mjs +115 -118
- package/es/utils/linked-node/linked-node.mjs +41 -31
- package/es/utils/lowcode/utils.mjs +13 -18
- package/es/utils/lowcode/validate.mjs +20 -26
- package/es/utils/mitt/mitt.mjs +4 -4
- package/es/utils/model-loader/model-loader.mjs +280 -325
- package/es/utils/namespace/namespace.mjs +178 -164
- package/es/utils/openUtil/index.mjs +2 -0
- package/es/utils/openUtil/modal/modal.mjs +72 -79
- package/es/utils/openUtil/overlay-container/overlay-container.mjs +144 -138
- package/es/utils/permission.mjs +33 -37
- package/es/utils/plugin-static-resource/plugin-static-resource.mjs +46 -42
- package/es/utils/style/index.mjs +94 -138
- package/es/utils/tools/tools.mjs +86 -54
- package/es/utils/treeHelper/treeHelper.mjs +205 -233
- package/es/utils/uploader/uploader.mjs +81 -115
- package/es/utils/useUUid.mjs +79 -87
- package/es/utils/util.mjs +55 -35
- package/es/utils/uuid/uuid.d.ts +1 -0
- package/es/utils/uuid/uuid.mjs +36 -43
- package/es/utils/validate.mjs +15 -19
- package/es/utils/value-helper/value-helper.mjs +113 -98
- package/package.json +12 -13
- package/dist/index.esm.min.mjs +0 -18322
- package/dist/index.min.cjs +0 -393
- package/dist/index.system.min.js +0 -393
|
@@ -1,20 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { getTenant, getTimezone, getToken, isMobile } from "../tools/tools.mjs";
|
|
2
|
+
import { AxiosHeaders } from "axios";
|
|
3
|
+
//#region src/utils/axios/interceptors.ts
|
|
4
|
+
/**
|
|
5
|
+
* 安装拦截器
|
|
6
|
+
*
|
|
7
|
+
* @export
|
|
8
|
+
* @param {AxiosInstance} axios
|
|
9
|
+
*/
|
|
4
10
|
function interceptors(axios) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return config;
|
|
17
|
-
});
|
|
11
|
+
axios.interceptors.request.use((config) => {
|
|
12
|
+
if (!config.headers) config.headers = new AxiosHeaders();
|
|
13
|
+
Object.assign(config.headers, {
|
|
14
|
+
Token: getToken(),
|
|
15
|
+
Source: isMobile ? 502 : 501,
|
|
16
|
+
Lang: _gct.store.lang,
|
|
17
|
+
"Tenant-Id": getTenant(),
|
|
18
|
+
Timezone: getTimezone()
|
|
19
|
+
});
|
|
20
|
+
return config;
|
|
21
|
+
});
|
|
18
22
|
}
|
|
19
|
-
|
|
23
|
+
//#endregion
|
|
20
24
|
export { interceptors };
|
|
@@ -1,59 +1,64 @@
|
|
|
1
|
-
import qs from
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import qs from "qs";
|
|
2
|
+
//#region src/utils/cache-adapter/cache-adapter.ts
|
|
3
|
+
/**异步缓存函数 */
|
|
4
|
+
var gctMemoizeAsync = (...arg) => cacheAdapter.bind(null, ...arg);
|
|
5
|
+
/**
|
|
6
|
+
*异步缓存
|
|
7
|
+
* @param args
|
|
8
|
+
* @param adapter
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
4
11
|
function cacheAdapter(adapter, ...args) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
/**默认缓存5分钟 */
|
|
13
|
+
const maxAge = 1e3 * 60 * 5;
|
|
14
|
+
const requestKey = typeof args === "object" ? qs.stringify(args) : args;
|
|
15
|
+
let responsePromise = MemoryCache.get(requestKey);
|
|
16
|
+
if (!responsePromise) {
|
|
17
|
+
responsePromise = (async () => {
|
|
18
|
+
try {
|
|
19
|
+
return await adapter(...args);
|
|
20
|
+
} catch (reason) {
|
|
21
|
+
MemoryCache.delete(requestKey);
|
|
22
|
+
throw reason;
|
|
23
|
+
}
|
|
24
|
+
})();
|
|
25
|
+
MemoryCache.set(requestKey, responsePromise, maxAge);
|
|
26
|
+
return responsePromise;
|
|
27
|
+
}
|
|
28
|
+
return responsePromise;
|
|
21
29
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
30
|
+
var MemoryCache = class {
|
|
31
|
+
static cachedata = {};
|
|
32
|
+
static set(key, value, maxAge) {
|
|
33
|
+
this.cachedata[key] = {
|
|
34
|
+
maxAge: maxAge || 0,
|
|
35
|
+
value,
|
|
36
|
+
now: Date.now()
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
static get(key) {
|
|
40
|
+
this.reset();
|
|
41
|
+
const cachedItem = this.cachedata[key];
|
|
42
|
+
if (!cachedItem) return null;
|
|
43
|
+
return cachedItem.value;
|
|
44
|
+
}
|
|
45
|
+
static delete(key) {
|
|
46
|
+
return delete this.cachedata[key];
|
|
47
|
+
}
|
|
48
|
+
static clear() {
|
|
49
|
+
this.cachedata = {};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
*清空过期的数据
|
|
53
|
+
*/
|
|
54
|
+
static reset() {
|
|
55
|
+
for (const key in this.cachedata) {
|
|
56
|
+
const cachedItem = this.cachedata[key];
|
|
57
|
+
if (cachedItem) {
|
|
58
|
+
if (Date.now() - cachedItem.now > cachedItem.maxAge) this.delete(key);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
//#endregion
|
|
59
64
|
export { gctMemoizeAsync };
|
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { notSingleArr } from "../../enums/designEnum.mjs";
|
|
2
|
+
import "../../enums/index.mjs";
|
|
3
|
+
import { intersection } from "lodash-es";
|
|
4
|
+
//#region src/utils/design/design.ts
|
|
5
|
+
/**
|
|
6
|
+
* 是否完全为多选算子
|
|
7
|
+
*
|
|
8
|
+
* @description 只有全部是多选算子时,下拉才可以算是多选
|
|
9
|
+
* @author zhanghanrui
|
|
10
|
+
* @date 2024-09-20 11:09:47
|
|
11
|
+
* @export
|
|
12
|
+
* @param {string[]} arr
|
|
13
|
+
* @return {*} {boolean}
|
|
14
|
+
*/
|
|
7
15
|
function isMultipleOperator(arr) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
return false;
|
|
16
|
+
const items = intersection(arr, notSingleArr);
|
|
17
|
+
if (items.length > 0 && items.length === arr.length) return true;
|
|
18
|
+
return false;
|
|
13
19
|
}
|
|
14
|
-
|
|
20
|
+
//#endregion
|
|
15
21
|
export { isMultipleOperator };
|
|
@@ -1,73 +1,84 @@
|
|
|
1
|
-
import FingerprintJS from
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import FingerprintJS from "@fingerprintjs/fingerprintjs";
|
|
2
|
+
//#region src/utils/deviceFingerprint.ts
|
|
3
|
+
/** 指纹缓存 key */
|
|
4
|
+
var FINGERPRINT_KEY = "FINGERPRINT";
|
|
5
|
+
/** 判断是否浏览器环境 */
|
|
4
6
|
function isBrowserEnv() {
|
|
5
|
-
|
|
7
|
+
return typeof window !== "undefined" && typeof navigator !== "undefined";
|
|
6
8
|
}
|
|
9
|
+
/** 获取客户端平台(浏览器 / 移动系统) */
|
|
7
10
|
function getClientPlatform() {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
11
|
+
if (!isBrowserEnv()) return {
|
|
12
|
+
type: "unknown",
|
|
13
|
+
name: "unknown"
|
|
14
|
+
};
|
|
15
|
+
const ua = navigator.userAgent;
|
|
16
|
+
if (/iPad|iPhone|iPod/i.test(ua)) return {
|
|
17
|
+
type: "mobile",
|
|
18
|
+
name: "iOS"
|
|
19
|
+
};
|
|
20
|
+
if (/Android/i.test(ua)) return {
|
|
21
|
+
type: "mobile",
|
|
22
|
+
name: "Android"
|
|
23
|
+
};
|
|
24
|
+
if (/Windows Phone/i.test(ua)) return {
|
|
25
|
+
type: "mobile",
|
|
26
|
+
name: "Windows Phone"
|
|
27
|
+
};
|
|
28
|
+
if (/BlackBerry/i.test(ua)) return {
|
|
29
|
+
type: "mobile",
|
|
30
|
+
name: "BlackBerry"
|
|
31
|
+
};
|
|
32
|
+
if (/Edg/i.test(ua)) return {
|
|
33
|
+
type: "web",
|
|
34
|
+
name: "Edge"
|
|
35
|
+
};
|
|
36
|
+
if (/OPR|Opera/i.test(ua)) return {
|
|
37
|
+
type: "web",
|
|
38
|
+
name: "Opera"
|
|
39
|
+
};
|
|
40
|
+
if (/Firefox/i.test(ua)) return {
|
|
41
|
+
type: "web",
|
|
42
|
+
name: "Firefox"
|
|
43
|
+
};
|
|
44
|
+
if (/Chrome/i.test(ua)) return {
|
|
45
|
+
type: "web",
|
|
46
|
+
name: "Chrome"
|
|
47
|
+
};
|
|
48
|
+
if (/Safari/i.test(ua)) return {
|
|
49
|
+
type: "web",
|
|
50
|
+
name: "Safari"
|
|
51
|
+
};
|
|
52
|
+
return {
|
|
53
|
+
type: "unknown",
|
|
54
|
+
name: "unknown"
|
|
55
|
+
};
|
|
40
56
|
}
|
|
57
|
+
/** 获取浏览器指纹对象 */
|
|
41
58
|
async function getFingerprint() {
|
|
42
|
-
|
|
43
|
-
return agent.get();
|
|
59
|
+
return (await FingerprintJS.load()).get();
|
|
44
60
|
}
|
|
61
|
+
/** 获取设备指纹标识(统一入口) */
|
|
45
62
|
async function getDeviceFingerprint() {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
const fingerprint = await getFingerprint();
|
|
58
|
-
const visitorId = fingerprint.visitorId;
|
|
59
|
-
if (isWeb) {
|
|
60
|
-
localStorage.setItem(FINGERPRINT_KEY, visitorId);
|
|
61
|
-
}
|
|
62
|
-
return `${name}/${visitorId}`;
|
|
63
|
+
if (!isBrowserEnv()) return "unknown/unknown";
|
|
64
|
+
const { type, name } = getClientPlatform();
|
|
65
|
+
const isWeb = type === "web";
|
|
66
|
+
if (isWeb) {
|
|
67
|
+
const cached = localStorage.getItem(FINGERPRINT_KEY);
|
|
68
|
+
if (cached) return `${name}/${cached}`;
|
|
69
|
+
}
|
|
70
|
+
const visitorId = (await getFingerprint()).visitorId;
|
|
71
|
+
if (isWeb) localStorage.setItem(FINGERPRINT_KEY, visitorId);
|
|
72
|
+
return `${name}/${visitorId}`;
|
|
63
73
|
}
|
|
74
|
+
/** 页签唯一标识 */
|
|
64
75
|
function getPageIdentification() {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
76
|
+
let pageTag = sessionStorage.getItem("currentPageTag");
|
|
77
|
+
if (!pageTag) {
|
|
78
|
+
pageTag = Date.now().toString();
|
|
79
|
+
sessionStorage.setItem("currentPageTag", pageTag);
|
|
80
|
+
}
|
|
81
|
+
return pageTag;
|
|
71
82
|
}
|
|
72
|
-
|
|
73
|
-
export {
|
|
83
|
+
//#endregion
|
|
84
|
+
export { getDeviceFingerprint, getPageIdentification };
|
|
@@ -1,146 +1,143 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
1
|
+
//#region src/utils/dictionary/dictionary.ts
|
|
2
|
+
/**
|
|
3
|
+
* 数据字典工具类
|
|
4
|
+
*
|
|
5
|
+
* @export
|
|
6
|
+
* @class DictionaryService
|
|
7
|
+
*/
|
|
8
|
+
var DictionaryUtil = class {
|
|
9
|
+
/**
|
|
10
|
+
* 代码表配置
|
|
11
|
+
*
|
|
12
|
+
* @author zhanghanrui
|
|
13
|
+
* @date 2024-03-27 13:03:59
|
|
14
|
+
* @private
|
|
15
|
+
* @type {Map<string, IDictionary>}
|
|
16
|
+
*/
|
|
17
|
+
configs = /* @__PURE__ */ new Map();
|
|
18
|
+
/**
|
|
19
|
+
* 已经加载的代码表缓存
|
|
20
|
+
*
|
|
21
|
+
* @author zhanghanrui
|
|
22
|
+
* @date 2024-03-27 13:03:14
|
|
23
|
+
* @private
|
|
24
|
+
* @type {Map<string, IDictionaryItem[]>}
|
|
25
|
+
*/
|
|
26
|
+
cache = /* @__PURE__ */ new Map();
|
|
27
|
+
/**
|
|
28
|
+
* 获取代码表配置
|
|
29
|
+
*
|
|
30
|
+
* @author zhanghanrui
|
|
31
|
+
* @date 2024-04-02 13:04:32
|
|
32
|
+
* @param {string} tag
|
|
33
|
+
* @return {*} {(IDictionary | undefined)}
|
|
34
|
+
*/
|
|
35
|
+
getConfig(tag) {
|
|
36
|
+
return this.configs.get(tag);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 注册写的代码表配置
|
|
40
|
+
*
|
|
41
|
+
* @author zhanghanrui
|
|
42
|
+
* @date 2024-03-27 13:03:17
|
|
43
|
+
* @param {IDictionary} config
|
|
44
|
+
*/
|
|
45
|
+
register(config) {
|
|
46
|
+
this.configs.set(config.tag, config);
|
|
47
|
+
if (config.items) this.cache.set(config.tag, config.items);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 取消注册代码表
|
|
51
|
+
*
|
|
52
|
+
* @author zhanghanrui
|
|
53
|
+
* @date 2024-03-27 13:03:58
|
|
54
|
+
* @param {string} tag
|
|
55
|
+
*/
|
|
56
|
+
unregister(tag) {
|
|
57
|
+
this.configs.delete(tag);
|
|
58
|
+
this.cache.delete(tag);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 获取代码表配置
|
|
62
|
+
*
|
|
63
|
+
* @author zhanghanrui
|
|
64
|
+
* @date 2024-03-27 13:03:06
|
|
65
|
+
* @param {string} codeTag
|
|
66
|
+
* @return {*} {IDictionaryItem[]}
|
|
67
|
+
*/
|
|
68
|
+
get(codeTag) {
|
|
69
|
+
return this.cache.get(codeTag) || [];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 动态请求代码表
|
|
73
|
+
*
|
|
74
|
+
* @author zhanghanrui
|
|
75
|
+
* @date 2024-03-27 13:03:14
|
|
76
|
+
* @param {string} codeTag
|
|
77
|
+
* @param {IParams} [params]
|
|
78
|
+
* @return {*} {Promise<IDictionaryItem[]>}
|
|
79
|
+
*/
|
|
80
|
+
async asyncGet(codeTag, params) {
|
|
81
|
+
const config = this.configs.get(codeTag);
|
|
82
|
+
if (!config) return [];
|
|
83
|
+
if (config.mode === "static") return this.getByConfig(config);
|
|
84
|
+
if (config.mode === "async") {
|
|
85
|
+
if (this.cache.has(codeTag)) return this.cache.get(codeTag) || [];
|
|
86
|
+
return this.asyncGetByConfig(config, params);
|
|
87
|
+
}
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 根据配置获取代码表
|
|
92
|
+
*
|
|
93
|
+
* @author zhanghanrui
|
|
94
|
+
* @date 2024-04-02 21:04:25
|
|
95
|
+
* @param {IDictionary} config
|
|
96
|
+
* @return {*} {IDictionaryItem[]}
|
|
97
|
+
*/
|
|
98
|
+
getByConfig(config) {
|
|
99
|
+
return config.items || [];
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* 根据配置获取异步代码表
|
|
103
|
+
*
|
|
104
|
+
* @author zhanghanrui
|
|
105
|
+
* @date 2024-04-02 21:04:00
|
|
106
|
+
* @param {IDictionary} config
|
|
107
|
+
* @param {IParams} [params={}]
|
|
108
|
+
* @return {*} {Promise<IDictionaryItem[]>}
|
|
109
|
+
*/
|
|
110
|
+
async asyncGetByConfig(config, params = {}) {
|
|
111
|
+
if (config.fetch) {
|
|
112
|
+
const items = await config.fetch(params || {});
|
|
113
|
+
if (items) {
|
|
114
|
+
const [key, value] = config.keys || ["name", "id"];
|
|
115
|
+
return this.deepFormat(items, key, value);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return [];
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 递归格式化代码表
|
|
122
|
+
*
|
|
123
|
+
* @author zhanghanrui
|
|
124
|
+
* @date 2024-04-02 22:04:03
|
|
125
|
+
* @protected
|
|
126
|
+
* @param {IData[]} items
|
|
127
|
+
* @param {string} key
|
|
128
|
+
* @param {string} value
|
|
129
|
+
* @return {*} {IDictionaryItem[]}
|
|
130
|
+
*/
|
|
131
|
+
deepFormat(items, key, value) {
|
|
132
|
+
return items.map((item) => {
|
|
133
|
+
const config = {
|
|
134
|
+
label: item[key],
|
|
135
|
+
value: item[value]
|
|
136
|
+
};
|
|
137
|
+
if (item.children && item.children.length > 0) config.options = this.deepFormat(item.children, key, value);
|
|
138
|
+
return config;
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
//#endregion
|
|
146
143
|
export { DictionaryUtil };
|