@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,234 +1,206 @@
|
|
|
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
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
*/
|
|
207
|
-
static traverseAndBuildTree(treeData, callback, config = {}) {
|
|
208
|
-
config = this._getConfig(config);
|
|
209
|
-
const { children } = config;
|
|
210
|
-
return treeData.map((node) => {
|
|
211
|
-
const newNode = callback(node) || node;
|
|
212
|
-
if (children && node[children] && node[children].length > 0) {
|
|
213
|
-
newNode[children] = this.traverseAndBuildTree(node.children, callback);
|
|
214
|
-
}
|
|
215
|
-
return newNode;
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* 递归遍历树结构
|
|
220
|
-
* @param treeData 树形结构数据
|
|
221
|
-
* @param callBack 回调函数
|
|
222
|
-
* @param parentNode 父节点
|
|
223
|
-
*/
|
|
224
|
-
static eachTree(treeData, callBack, parentNode = {}) {
|
|
225
|
-
treeData.forEach((element) => {
|
|
226
|
-
const newNode = callBack(element, parentNode) || element;
|
|
227
|
-
if (element.children) {
|
|
228
|
-
TreeHelper.eachTree(element.children, callBack, newNode);
|
|
229
|
-
}
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
1
|
+
//#region src/utils/treeHelper/treeHelper.ts
|
|
2
|
+
/**
|
|
3
|
+
* 树结构数据处理工具类
|
|
4
|
+
* 提供树形数据与列表数据的相互转换、节点查找、路径查找等功能
|
|
5
|
+
*/
|
|
6
|
+
var TreeHelper = class TreeHelper {
|
|
7
|
+
/**
|
|
8
|
+
* 默认配置
|
|
9
|
+
*/
|
|
10
|
+
static _DEFAULT_CONFIG = {
|
|
11
|
+
id: "id",
|
|
12
|
+
children: "children",
|
|
13
|
+
pid: "pid",
|
|
14
|
+
deep: true
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* 获取合并后的配置
|
|
18
|
+
* @param config 用户配置
|
|
19
|
+
* @returns 合并后的完整配置
|
|
20
|
+
*/
|
|
21
|
+
static _getConfig(config) {
|
|
22
|
+
return Object.assign({}, TreeHelper._DEFAULT_CONFIG, config);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 将列表数据转换为树形结构
|
|
26
|
+
* @param list 列表数据
|
|
27
|
+
* @param config 配置项
|
|
28
|
+
* @param callBack 节点转换回调函数
|
|
29
|
+
* @returns 树形结构数据
|
|
30
|
+
*/
|
|
31
|
+
static listToTree(list, config = {}, callBack) {
|
|
32
|
+
const conf = TreeHelper._getConfig(config);
|
|
33
|
+
const nodeMap = /* @__PURE__ */ new Map();
|
|
34
|
+
const result = [];
|
|
35
|
+
const { id, children, pid, deep } = conf;
|
|
36
|
+
for (const node of list) {
|
|
37
|
+
const record = node;
|
|
38
|
+
if (!deep) record[children] = record[pid] === "ROOT" ? record[children] ?? [] : [];
|
|
39
|
+
else record[children] = record[children] ?? void 0;
|
|
40
|
+
nodeMap.set(record[id], callBack(node));
|
|
41
|
+
}
|
|
42
|
+
for (const node of list) {
|
|
43
|
+
const record = node;
|
|
44
|
+
const parent = nodeMap.get(record[pid]);
|
|
45
|
+
if (parent) {
|
|
46
|
+
const parentRecord = parent;
|
|
47
|
+
if (!parentRecord[children]) parentRecord[children] = [];
|
|
48
|
+
parentRecord[children].push(callBack(node));
|
|
49
|
+
} else result.push(callBack(node));
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 将树形结构转换为列表数据
|
|
55
|
+
* @param tree 树形结构数据
|
|
56
|
+
* @param config 配置项
|
|
57
|
+
* @returns 列表数据
|
|
58
|
+
*/
|
|
59
|
+
static treeToList(tree, config = {}) {
|
|
60
|
+
const { children } = TreeHelper._getConfig(config);
|
|
61
|
+
const result = [...tree];
|
|
62
|
+
for (let i = 0; i < result.length; i++) {
|
|
63
|
+
const child = result[i][children];
|
|
64
|
+
if (!Array.isArray(child)) continue;
|
|
65
|
+
result.splice(i + 1, 0, ...child);
|
|
66
|
+
}
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 在树中查找单个节点
|
|
71
|
+
* @param tree 树形结构数据
|
|
72
|
+
* @param func 查找条件函数
|
|
73
|
+
* @param config 配置项
|
|
74
|
+
* @returns 找到的节点或 null
|
|
75
|
+
*/
|
|
76
|
+
static findNode(tree, func, config = {}) {
|
|
77
|
+
const { children } = TreeHelper._getConfig(config);
|
|
78
|
+
const list = tree ? [...tree] : [];
|
|
79
|
+
for (const node of list) {
|
|
80
|
+
if (func(node)) return node;
|
|
81
|
+
const child = node[children];
|
|
82
|
+
if (Array.isArray(child)) list.push(...child);
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 在树中查找所有匹配的节点
|
|
88
|
+
* @param tree 树形结构数据
|
|
89
|
+
* @param func 查找条件函数
|
|
90
|
+
* @param config 配置项
|
|
91
|
+
* @returns 所有匹配的节点数组
|
|
92
|
+
*/
|
|
93
|
+
static findNodeAll(tree, func, config = {}) {
|
|
94
|
+
const { children } = TreeHelper._getConfig(config);
|
|
95
|
+
const list = tree ? [...tree] : [];
|
|
96
|
+
const result = [];
|
|
97
|
+
for (const node of list) {
|
|
98
|
+
if (func(node)) result.push(node);
|
|
99
|
+
const child = node[children];
|
|
100
|
+
if (Array.isArray(child)) list.push(...child);
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* 查找节点的路径
|
|
106
|
+
* @param tree 树形结构数据
|
|
107
|
+
* @param func 查找条件函数
|
|
108
|
+
* @param config 配置项
|
|
109
|
+
* @returns 从根节点到目标节点的路径数组,未找到返回 null
|
|
110
|
+
*/
|
|
111
|
+
static findPath(tree, func, config = {}) {
|
|
112
|
+
const { children } = TreeHelper._getConfig(config);
|
|
113
|
+
const path = [];
|
|
114
|
+
const list = tree ? [...tree] : [];
|
|
115
|
+
const visitedSet = /* @__PURE__ */ new Set();
|
|
116
|
+
while (list.length) {
|
|
117
|
+
const node = list[0];
|
|
118
|
+
if (visitedSet.has(node)) {
|
|
119
|
+
path.pop();
|
|
120
|
+
list.shift();
|
|
121
|
+
} else {
|
|
122
|
+
visitedSet.add(node);
|
|
123
|
+
const child = node[children];
|
|
124
|
+
if (Array.isArray(child)) list.unshift(...child);
|
|
125
|
+
path.push(node);
|
|
126
|
+
if (func(node)) return path;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* 查找最近的符合条件的父节点
|
|
133
|
+
* @param tree 树形结构数据
|
|
134
|
+
* @param startId 起始节点 ID
|
|
135
|
+
* @param func 查找条件函数
|
|
136
|
+
* @param config 配置项
|
|
137
|
+
* @returns 找到的父节点或 undefined
|
|
138
|
+
*/
|
|
139
|
+
static findClosestParent(tree, startId, func, config = {}) {
|
|
140
|
+
const { id } = TreeHelper._getConfig(config);
|
|
141
|
+
return TreeHelper.findPath(tree, (node) => node[id] === startId, config)?.reverse().find((n) => func(n));
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* 将具有 id 和 parentId 的列表转换为树形结构
|
|
145
|
+
* @param list 列表数据,需要包含 id 和 parentId 字段
|
|
146
|
+
* @param callBack 节点转换回调函数
|
|
147
|
+
* @returns 树形结构数据
|
|
148
|
+
*/
|
|
149
|
+
static list_to_tree(list, callBack) {
|
|
150
|
+
const map = {};
|
|
151
|
+
const roots = [];
|
|
152
|
+
for (let i = 0; i < list.length; i++) {
|
|
153
|
+
const node = list[i];
|
|
154
|
+
map[node.id] = i;
|
|
155
|
+
node.children = [];
|
|
156
|
+
}
|
|
157
|
+
for (const node of list) if (node.parentId === "ROOT" || !node.parentId) roots.push(callBack(node));
|
|
158
|
+
else {
|
|
159
|
+
const current = node;
|
|
160
|
+
const parentIndex = map[node.parentId];
|
|
161
|
+
if (parentIndex !== void 0) list[parentIndex].children?.push(callBack(current));
|
|
162
|
+
}
|
|
163
|
+
return roots;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* 获取所有父级路径
|
|
167
|
+
* @param treeData 树形结构数据
|
|
168
|
+
* @param path 目标路径
|
|
169
|
+
* @returns 从根节点到目标节点的所有路径数组
|
|
170
|
+
*/
|
|
171
|
+
static getAllParentPath(treeData, path) {
|
|
172
|
+
return (TreeHelper.findPath(treeData, (n) => n.path === path) || []).map((item) => item.path);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* 递归遍历树并且根据callback返回新数据再拼装成一个新树
|
|
176
|
+
*
|
|
177
|
+
* @static
|
|
178
|
+
* @param {IObject[]} treeData
|
|
179
|
+
* @param {Function} callback
|
|
180
|
+
* @param {Partial<ITreeHelperConfig>} [config={}]
|
|
181
|
+
* @return {*}
|
|
182
|
+
*/
|
|
183
|
+
static traverseAndBuildTree(treeData, callback, config = {}) {
|
|
184
|
+
config = this._getConfig(config);
|
|
185
|
+
const { children } = config;
|
|
186
|
+
return treeData.map((node) => {
|
|
187
|
+
const newNode = callback(node) || node;
|
|
188
|
+
if (children && node[children] && node[children].length > 0) newNode[children] = this.traverseAndBuildTree(node.children, callback);
|
|
189
|
+
return newNode;
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* 递归遍历树结构
|
|
194
|
+
* @param treeData 树形结构数据
|
|
195
|
+
* @param callBack 回调函数
|
|
196
|
+
* @param parentNode 父节点
|
|
197
|
+
*/
|
|
198
|
+
static eachTree(treeData, callBack, parentNode = {}) {
|
|
199
|
+
treeData.forEach((element) => {
|
|
200
|
+
const newNode = callBack(element, parentNode) || element;
|
|
201
|
+
if (element.children) TreeHelper.eachTree(element.children, callBack, newNode);
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
//#endregion
|
|
234
206
|
export { TreeHelper };
|
|
@@ -1,120 +1,86 @@
|
|
|
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
|
-
const img = new Image();
|
|
80
|
-
img.onload = () => {
|
|
81
|
-
const width = Math.floor(img.width * scale);
|
|
82
|
-
const height = Math.floor(img.height * scale);
|
|
83
|
-
const canvas = document.createElement("canvas");
|
|
84
|
-
canvas.width = width;
|
|
85
|
-
canvas.height = height;
|
|
86
|
-
const ctx = canvas.getContext("2d");
|
|
87
|
-
ctx.imageSmoothingEnabled = true;
|
|
88
|
-
ctx.imageSmoothingQuality = "high";
|
|
89
|
-
ctx.drawImage(img, 0, 0, width, height);
|
|
90
|
-
resolve(canvas.toDataURL(file.type, quality));
|
|
91
|
-
};
|
|
92
|
-
img.onerror = () => reject("图片加载失败");
|
|
93
|
-
img.src = e.target?.result;
|
|
94
|
-
};
|
|
95
|
-
reader.onerror = () => reject("文件读取失败");
|
|
96
|
-
reader.readAsDataURL(file);
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
}
|
|
1
|
+
//#region src/utils/uploader/uploader.ts
|
|
2
|
+
var Uploader = class {
|
|
3
|
+
static getFiles({ multiple, acceptList }) {
|
|
4
|
+
const input = document.createElement("input");
|
|
5
|
+
input.type = "file";
|
|
6
|
+
input.multiple = !!multiple;
|
|
7
|
+
input.accept = acceptList || "*";
|
|
8
|
+
input.click();
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
input.onchange = async () => {
|
|
11
|
+
const filelist = input.files || [];
|
|
12
|
+
resolve(Object.values(filelist));
|
|
13
|
+
};
|
|
14
|
+
input.onerror = async () => {
|
|
15
|
+
reject();
|
|
16
|
+
};
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
static async beforeUploadFun(file, { maxSize = 5, acceptList = [], beforeUpload }) {
|
|
20
|
+
if (file.name.indexOf(",") > -1) return Promise.reject(`文件名不能有逗号`);
|
|
21
|
+
if (beforeUpload) await beforeUpload(file);
|
|
22
|
+
if (file.size / 1024 / 1024 > maxSize) return Promise.reject(`【${file.name}】文件大小不能超过 ${maxSize}MB`);
|
|
23
|
+
if (acceptList.length) {
|
|
24
|
+
const filename = file?.name?.replaceAll(" ", "")?.match(/\.([A-Za-z0-9]+)$/)?.at(-1);
|
|
25
|
+
if (!acceptList.includes(`.${filename?.toLocaleLowerCase()}`)) return Promise.reject(`【${file.name}】支持的扩展名为${acceptList.join(" ")}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
static async uploadByFile(file, isApp = false, modelKey) {
|
|
29
|
+
const formData = new FormData();
|
|
30
|
+
formData.append("file", file, file.name);
|
|
31
|
+
return "/" + await (isApp ? appUploadapis : passUploadapis)(formData, modelKey);
|
|
32
|
+
}
|
|
33
|
+
static toBase64(file) {
|
|
34
|
+
return new Promise((resolve, reject) => {
|
|
35
|
+
const reader = new FileReader();
|
|
36
|
+
reader.onloadend = function() {
|
|
37
|
+
resolve(reader.result);
|
|
38
|
+
};
|
|
39
|
+
reader.onerror = () => reject("转换失败");
|
|
40
|
+
if (file) reader.readAsDataURL(file);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 图片压缩转Base64
|
|
45
|
+
*/
|
|
46
|
+
static compressToBase64(file, { quality = .8, scale = .8 } = {}) {
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
48
|
+
if (!file.type.startsWith("image/")) {
|
|
49
|
+
reject("请选择图片文件");
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (typeof scale !== "number" || scale <= 0 || scale > 1) {
|
|
53
|
+
reject("缩放比例必须在0-1之间");
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const reader = new FileReader();
|
|
57
|
+
reader.onload = (e) => {
|
|
58
|
+
const img = new Image();
|
|
59
|
+
img.onload = () => {
|
|
60
|
+
const width = Math.floor(img.width * scale);
|
|
61
|
+
const height = Math.floor(img.height * scale);
|
|
62
|
+
const canvas = document.createElement("canvas");
|
|
63
|
+
canvas.width = width;
|
|
64
|
+
canvas.height = height;
|
|
65
|
+
const ctx = canvas.getContext("2d");
|
|
66
|
+
ctx.imageSmoothingEnabled = true;
|
|
67
|
+
ctx.imageSmoothingQuality = "high";
|
|
68
|
+
ctx.drawImage(img, 0, 0, width, height);
|
|
69
|
+
resolve(canvas.toDataURL(file.type, quality));
|
|
70
|
+
};
|
|
71
|
+
img.onerror = () => reject("图片加载失败");
|
|
72
|
+
img.src = e.target?.result;
|
|
73
|
+
};
|
|
74
|
+
reader.onerror = () => reject("文件读取失败");
|
|
75
|
+
reader.readAsDataURL(file);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
};
|
|
100
79
|
async function appUploadapis(formData, modelKey) {
|
|
101
|
-
|
|
102
|
-
{ ...modelKey ? { modelKey } : {} },
|
|
103
|
-
formData,
|
|
104
|
-
{
|
|
105
|
-
headers: { "Content-Type": "multipart/form-data;charset=UTF-8" }
|
|
106
|
-
}
|
|
107
|
-
);
|
|
80
|
+
return _api.apaas.fileResource.postUpload({ ...modelKey ? { modelKey } : {} }, formData, { headers: { "Content-Type": "multipart/form-data;charset=UTF-8" } });
|
|
108
81
|
}
|
|
109
82
|
async function passUploadapis(formData) {
|
|
110
|
-
|
|
111
|
-
// TODO: 待修改
|
|
112
|
-
{ bucket: "IMAGE" },
|
|
113
|
-
formData,
|
|
114
|
-
{
|
|
115
|
-
headers: { "Content-Type": "multipart/form-data;charset=UTF-8" }
|
|
116
|
-
}
|
|
117
|
-
);
|
|
83
|
+
return _api.apaas.file.postUploadImage({ bucket: "IMAGE" }, formData, { headers: { "Content-Type": "multipart/form-data;charset=UTF-8" } });
|
|
118
84
|
}
|
|
119
|
-
|
|
85
|
+
//#endregion
|
|
120
86
|
export { Uploader };
|