@mu-cabin/opms-permission 0.8.35 → 0.9.2
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.cjs +371 -116
- package/dist/index.d.mts +234 -39
- package/dist/index.d.ts +234 -39
- package/dist/index.mjs +360 -115
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
@@ -1,18 +1,121 @@
|
|
1
|
+
interface ApiResponse<T> {
|
2
|
+
obj: T;
|
3
|
+
success: boolean;
|
4
|
+
msg: string;
|
5
|
+
code: number;
|
6
|
+
}
|
7
|
+
type ResourceType = 'MENU' | 'FOLDER' | 'WIDGET' | 'UNDEFINED';
|
8
|
+
type OpenIndicatorType = 'INNER_COMPONENT' | 'OUTER_URL';
|
1
9
|
interface Resource {
|
2
|
-
|
3
|
-
|
4
|
-
resourceName?: string;
|
5
|
-
showName?: string;
|
6
|
-
resourceType?: string;
|
7
|
-
defaultResourceType?: string;
|
10
|
+
belongingContainerId: number;
|
11
|
+
belongingContainerType: string;
|
8
12
|
componentPath?: string;
|
9
|
-
defaultUrl?: string;
|
10
|
-
icon?: string;
|
11
13
|
defaultIcon?: string;
|
12
|
-
|
13
|
-
|
14
|
+
defaultResourceType: string;
|
15
|
+
defaultUrl?: string;
|
16
|
+
nodeLevel?: number;
|
17
|
+
poolParentResourceId?: number;
|
18
|
+
poolShowOrder?: number;
|
19
|
+
resourceId: number;
|
20
|
+
resourceName: string;
|
21
|
+
showName: string;
|
22
|
+
resourceCode: string;
|
23
|
+
searchPath?: string;
|
14
24
|
children?: Resource[];
|
25
|
+
prefix: string;
|
26
|
+
resourceType: ResourceType;
|
27
|
+
icon?: string;
|
28
|
+
openIndicator: OpenIndicatorType;
|
29
|
+
orgQueryMode: EnumOrgQueryMode;
|
30
|
+
orgQueryScope: EnumOrgQueryScope;
|
31
|
+
}
|
32
|
+
type CodeSourceType = 'FLY_NET' | 'COS' | 'CSM';
|
33
|
+
interface OrgRecord$1 {
|
34
|
+
orgId: number;
|
35
|
+
orgName: string;
|
36
|
+
orgShortName: string;
|
37
|
+
orgCode: string;
|
38
|
+
nodeLevel: number;
|
39
|
+
hasPermission: boolean;
|
40
|
+
children?: OrgRecord$1[];
|
41
|
+
orgQueryMode?: EnumOrgQueryMode;
|
42
|
+
}
|
43
|
+
interface UserOrganization$1 {
|
44
|
+
orgId: number;
|
45
|
+
orgCode: string;
|
46
|
+
parentOrgId: number | null;
|
47
|
+
parentOrgCode: string | null;
|
48
|
+
branchId: number | null;
|
49
|
+
branchCode: string | null;
|
50
|
+
orgName: string;
|
51
|
+
orgShortName: string;
|
52
|
+
orgType: string;
|
53
|
+
showOrder: number | null;
|
54
|
+
orgCodeSearchPath: string;
|
55
|
+
positionInfo: any[];
|
56
|
+
orgBindType: string;
|
57
|
+
csmOrgCode: string | null;
|
58
|
+
hasPermission: boolean;
|
59
|
+
canModify: boolean;
|
60
|
+
nodeLevel: number;
|
61
|
+
searchPath: string;
|
62
|
+
children: UserOrganization$1[];
|
63
|
+
}
|
64
|
+
interface UserRole {
|
65
|
+
roleId: number;
|
66
|
+
roleName: string;
|
67
|
+
parentRoleId: number | null;
|
68
|
+
grantType: string;
|
69
|
+
nodeLevel: number | null;
|
70
|
+
searchPath: string | null;
|
71
|
+
children: UserRole[];
|
72
|
+
}
|
73
|
+
interface UserInfo$1 {
|
74
|
+
ehrId: number;
|
75
|
+
account: string;
|
76
|
+
crewId: number | null;
|
77
|
+
crewCode: string | null;
|
78
|
+
name: string;
|
79
|
+
individualType: string | null;
|
80
|
+
individualStatus: string | null;
|
81
|
+
opmsRole: string;
|
82
|
+
userOrganizations: UserOrganization$1[];
|
83
|
+
userRoles: UserRole[];
|
84
|
+
uniAccount: string;
|
15
85
|
}
|
86
|
+
declare enum EnumOrgQueryMode {
|
87
|
+
BY_ROLES = "BY_ROLES",// 配置了页面权限的方式
|
88
|
+
BY_DEPT = "BY_DEPT"
|
89
|
+
}
|
90
|
+
declare enum EnumOrgQueryScope {
|
91
|
+
ONLY_BRANCH = "ONLY_BRANCH",// 查询到子公司
|
92
|
+
STEWARD_UNIT = "STEWARD_UNIT",// 查询到乘务部(如果用户是业务部门的话包含所有乘务部), 不包括业务部门
|
93
|
+
WITH_DEPARTMENT = "WITH_DEPARTMENT"
|
94
|
+
}
|
95
|
+
interface UserOrgTreeParams {
|
96
|
+
orgQueryMode: keyof typeof EnumOrgQueryMode;
|
97
|
+
orgQueryScope: keyof typeof EnumOrgQueryScope;
|
98
|
+
menuResourceId?: number;
|
99
|
+
stewardUnitLevel?: number;
|
100
|
+
keepHead?: boolean;
|
101
|
+
}
|
102
|
+
declare function login(baseUrl: string, authorizationCode: string): Promise<ApiResponse<{
|
103
|
+
token: string;
|
104
|
+
}>>;
|
105
|
+
declare function logout(baseUrl: string): Promise<ApiResponse<void>>;
|
106
|
+
declare function getUserInfo(baseUrl: string): Promise<ApiResponse<UserInfo$1>>;
|
107
|
+
declare function queryResource(baseUrl: string, params: {
|
108
|
+
systemId: string;
|
109
|
+
}): Promise<ApiResponse<Resource[]>>;
|
110
|
+
declare function getOrgTree(baseUrl: string, params: {
|
111
|
+
systemId: string;
|
112
|
+
name: CodeSourceType;
|
113
|
+
}): Promise<ApiResponse<OrgRecord$1>>;
|
114
|
+
declare function getUserOrgTree(baseUrl: string, params: UserOrgTreeParams): Promise<ApiResponse<OrgRecord$1[]>>;
|
115
|
+
declare function queryOrgCompanies(baseUrl: string, params: {
|
116
|
+
queryAllBranches?: boolean;
|
117
|
+
}): Promise<ApiResponse<OrgRecord$1[]>>;
|
118
|
+
|
16
119
|
interface MenuItem {
|
17
120
|
icon?: string;
|
18
121
|
path: string;
|
@@ -58,7 +161,7 @@ interface ChildOrganization {
|
|
58
161
|
orgShortName: string;
|
59
162
|
orgType: string;
|
60
163
|
}
|
61
|
-
interface OrgRecord
|
164
|
+
interface OrgRecord {
|
62
165
|
allOrgTags: boolean;
|
63
166
|
allSystem: boolean;
|
64
167
|
canModify: boolean;
|
@@ -97,14 +200,54 @@ declare function handlePermissionTree<T extends {
|
|
97
200
|
noAuthMap: Record<number | string, T>;
|
98
201
|
};
|
99
202
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
203
|
+
type PermissionEventType = 'tokenChange';
|
204
|
+
type PermissionEventListener<T = any> = (data: T) => void;
|
205
|
+
interface PermissionEventMap {
|
206
|
+
tokenChange: string;
|
207
|
+
}
|
208
|
+
/**
|
209
|
+
* Generic Event Emitter class for handling events
|
210
|
+
*/
|
211
|
+
declare class EventEmitter<TEventMap extends Record<string, any> = PermissionEventMap> {
|
212
|
+
private eventListeners;
|
213
|
+
private allowedEvents;
|
214
|
+
constructor(allowedEvents?: (keyof TEventMap)[]);
|
215
|
+
/**
|
216
|
+
* Add event listener
|
217
|
+
*/
|
218
|
+
listen<TEvent extends keyof TEventMap>(event: TEvent, listener: PermissionEventListener<TEventMap[TEvent]>): () => void;
|
219
|
+
/**
|
220
|
+
* Remove event listener
|
221
|
+
*/
|
222
|
+
unlisten<TEvent extends keyof TEventMap>(event: TEvent, listener: PermissionEventListener<TEventMap[TEvent]>): void;
|
223
|
+
/**
|
224
|
+
* Remove all listeners for a specific event or all events
|
225
|
+
*/
|
226
|
+
unlistenAll(event?: keyof TEventMap): void;
|
227
|
+
/**
|
228
|
+
* Emit event to all listeners
|
229
|
+
*/
|
230
|
+
emit<TEvent extends keyof TEventMap>(event: TEvent, data: TEventMap[TEvent]): void;
|
231
|
+
/**
|
232
|
+
* Get the number of listeners for a specific event
|
233
|
+
*/
|
234
|
+
getListenerCount(event: keyof TEventMap): number;
|
235
|
+
/**
|
236
|
+
* Check if there are any listeners for a specific event
|
237
|
+
*/
|
238
|
+
hasListeners(event: keyof TEventMap): boolean;
|
239
|
+
/**
|
240
|
+
* Get all registered event types
|
241
|
+
*/
|
242
|
+
getEventTypes(): (keyof TEventMap)[];
|
243
|
+
/**
|
244
|
+
* Get all allowed event types
|
245
|
+
*/
|
246
|
+
getAllowedEvents(): (keyof TEventMap)[];
|
247
|
+
/**
|
248
|
+
* Check if an event is allowed
|
249
|
+
*/
|
250
|
+
isEventAllowed(event: keyof TEventMap): boolean;
|
108
251
|
}
|
109
252
|
|
110
253
|
interface PermissionOptions {
|
@@ -115,7 +258,7 @@ interface PermissionOptions {
|
|
115
258
|
* 组织树处理工具
|
116
259
|
*/
|
117
260
|
declare const DataHandler: {
|
118
|
-
iterateOrgTree(orgTree: OrgRecord[]): OrgTreeItem[];
|
261
|
+
iterateOrgTree(orgTree: OrgRecord$1[]): OrgTreeItem[];
|
119
262
|
iterateNestedArray: typeof iterateNestedArray;
|
120
263
|
getAllUnitOptions(orgTree: OrgTreeItem[]): Option[];
|
121
264
|
getCompaniesOptions(orgTree: OrgTreeItem[], hasRootAuth: boolean): Option[];
|
@@ -140,8 +283,6 @@ declare const DataHandler: {
|
|
140
283
|
};
|
141
284
|
declare class Permission {
|
142
285
|
private _userInfo;
|
143
|
-
private _orgTree;
|
144
|
-
private _orgCompany;
|
145
286
|
private systemId;
|
146
287
|
private baseUrl;
|
147
288
|
resources: Resource[];
|
@@ -155,7 +296,32 @@ declare class Permission {
|
|
155
296
|
menuMap: {
|
156
297
|
[path: string]: MenuItem;
|
157
298
|
};
|
299
|
+
private eventEmitter;
|
158
300
|
constructor(options: PermissionOptions);
|
301
|
+
/**
|
302
|
+
* Add event listener
|
303
|
+
*/
|
304
|
+
listen<T extends PermissionEventType>(event: T, listener: PermissionEventListener<PermissionEventMap[T]>): () => void;
|
305
|
+
/**
|
306
|
+
* Remove event listener
|
307
|
+
*/
|
308
|
+
unlisten<T extends PermissionEventType>(event: T, listener: PermissionEventListener<PermissionEventMap[T]>): void;
|
309
|
+
/**
|
310
|
+
* Remove all listeners for a specific event or all events
|
311
|
+
*/
|
312
|
+
unlistenAll(event?: PermissionEventType): void;
|
313
|
+
/**
|
314
|
+
* Emit event to all listeners
|
315
|
+
*/
|
316
|
+
private emit;
|
317
|
+
/**
|
318
|
+
* Get available events that can be listened to
|
319
|
+
*/
|
320
|
+
getAvailableEvents(): PermissionEventType[];
|
321
|
+
/**
|
322
|
+
* Check if an event is supported
|
323
|
+
*/
|
324
|
+
isEventSupported(event: string): event is PermissionEventType;
|
159
325
|
/**
|
160
326
|
* Login using code from URL, save userInfo
|
161
327
|
*/
|
@@ -165,7 +331,7 @@ declare class Permission {
|
|
165
331
|
*/
|
166
332
|
logout(clearData?: boolean): Promise<void>;
|
167
333
|
clear(): void;
|
168
|
-
getUserInfo(): Promise<UserInfo
|
334
|
+
getUserInfo(): Promise<UserInfo$1>;
|
169
335
|
/**
|
170
336
|
* Get resources and process to menuList, menuMap, widgetMap (matches app store logic)
|
171
337
|
*/
|
@@ -181,27 +347,56 @@ declare class Permission {
|
|
181
347
|
menuMap: Record<number, MenuItem>;
|
182
348
|
}>;
|
183
349
|
/**
|
184
|
-
*
|
350
|
+
* Generate cache key for user orgs query
|
351
|
+
*/
|
352
|
+
private generateUserOrgsCacheKey;
|
353
|
+
/**
|
354
|
+
* Query and process organization tree with caching
|
185
355
|
*/
|
186
|
-
queryUserOrgs(
|
356
|
+
queryUserOrgs(params: UserOrgTreeParams, config?: {
|
357
|
+
force?: boolean;
|
358
|
+
cacheTimeout?: number;
|
359
|
+
}): Promise<{
|
187
360
|
orgTree: OrgTreeItem[];
|
188
|
-
orgNoAuthMap: Record<number, OrgTreeItem>;
|
189
|
-
authOrgTree: OrgTreeItem[];
|
190
361
|
} | null>;
|
191
|
-
queryCompanies(): Promise<OrgRecord[]>;
|
192
362
|
isLogin(): boolean;
|
193
363
|
getToken(): string | null;
|
194
364
|
setToken(token: string): void;
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
365
|
+
/**
|
366
|
+
* Get storage information for debugging and monitoring
|
367
|
+
*/
|
368
|
+
getStorageInfo(): {
|
369
|
+
permissionKeys: {
|
370
|
+
resourceKey: string;
|
371
|
+
tokenKey: string;
|
372
|
+
userInfoKey: string;
|
373
|
+
};
|
374
|
+
hasData: {
|
375
|
+
resources: boolean;
|
376
|
+
token: boolean;
|
377
|
+
userInfo: boolean;
|
378
|
+
};
|
379
|
+
cacheInfo: {
|
380
|
+
userOrgsCacheCount: number;
|
381
|
+
userOrgsCacheKeys: string[];
|
382
|
+
};
|
383
|
+
systemId: number | string | undefined;
|
384
|
+
currentVersion: string;
|
385
|
+
totalKeys: number;
|
386
|
+
systemKeys: number;
|
387
|
+
};
|
388
|
+
/**
|
389
|
+
* Get current storage version
|
390
|
+
*/
|
391
|
+
getStorageVersion(): string;
|
392
|
+
/**
|
393
|
+
* Clear all storage data for this system
|
394
|
+
*/
|
395
|
+
clearStorage(): void;
|
396
|
+
/**
|
397
|
+
* Clear user orgs cache for specific parameters or all
|
398
|
+
*/
|
399
|
+
clearUserOrgsCache(params?: UserOrgTreeParams): void;
|
205
400
|
}
|
206
401
|
|
207
402
|
/**
|
@@ -226,4 +421,4 @@ declare function jumpToSSOLogout({ baseUrl, redirectToUrl, clientId, }: {
|
|
226
421
|
clientId?: string;
|
227
422
|
}): void;
|
228
423
|
|
229
|
-
export { type ChildOrganization, DataHandler, type MenuItem, Permission as OpmsPermission, type Option, type OrgRecord
|
424
|
+
export { type ApiResponse, type ChildOrganization, type CodeSourceType, DataHandler, EnumOrgQueryMode, EnumOrgQueryScope, EventEmitter, type MenuItem, type OpenIndicatorType, Permission as OpmsPermission, type Option, type OrgRecord, type OrgTreeItem, type PermissionEventListener, type PermissionEventMap, type PermissionEventType, type Resource, type ResourceType, type UserInfo, type UserOrgTreeParams, type UserOrganization, type UserRole, getOrgTree, getUserInfo, getUserOrgTree, jumpToSSOLogin, jumpToSSOLogout, login, logout, queryOrgCompanies, queryResource };
|
package/dist/index.d.ts
CHANGED
@@ -1,18 +1,121 @@
|
|
1
|
+
interface ApiResponse<T> {
|
2
|
+
obj: T;
|
3
|
+
success: boolean;
|
4
|
+
msg: string;
|
5
|
+
code: number;
|
6
|
+
}
|
7
|
+
type ResourceType = 'MENU' | 'FOLDER' | 'WIDGET' | 'UNDEFINED';
|
8
|
+
type OpenIndicatorType = 'INNER_COMPONENT' | 'OUTER_URL';
|
1
9
|
interface Resource {
|
2
|
-
|
3
|
-
|
4
|
-
resourceName?: string;
|
5
|
-
showName?: string;
|
6
|
-
resourceType?: string;
|
7
|
-
defaultResourceType?: string;
|
10
|
+
belongingContainerId: number;
|
11
|
+
belongingContainerType: string;
|
8
12
|
componentPath?: string;
|
9
|
-
defaultUrl?: string;
|
10
|
-
icon?: string;
|
11
13
|
defaultIcon?: string;
|
12
|
-
|
13
|
-
|
14
|
+
defaultResourceType: string;
|
15
|
+
defaultUrl?: string;
|
16
|
+
nodeLevel?: number;
|
17
|
+
poolParentResourceId?: number;
|
18
|
+
poolShowOrder?: number;
|
19
|
+
resourceId: number;
|
20
|
+
resourceName: string;
|
21
|
+
showName: string;
|
22
|
+
resourceCode: string;
|
23
|
+
searchPath?: string;
|
14
24
|
children?: Resource[];
|
25
|
+
prefix: string;
|
26
|
+
resourceType: ResourceType;
|
27
|
+
icon?: string;
|
28
|
+
openIndicator: OpenIndicatorType;
|
29
|
+
orgQueryMode: EnumOrgQueryMode;
|
30
|
+
orgQueryScope: EnumOrgQueryScope;
|
31
|
+
}
|
32
|
+
type CodeSourceType = 'FLY_NET' | 'COS' | 'CSM';
|
33
|
+
interface OrgRecord$1 {
|
34
|
+
orgId: number;
|
35
|
+
orgName: string;
|
36
|
+
orgShortName: string;
|
37
|
+
orgCode: string;
|
38
|
+
nodeLevel: number;
|
39
|
+
hasPermission: boolean;
|
40
|
+
children?: OrgRecord$1[];
|
41
|
+
orgQueryMode?: EnumOrgQueryMode;
|
42
|
+
}
|
43
|
+
interface UserOrganization$1 {
|
44
|
+
orgId: number;
|
45
|
+
orgCode: string;
|
46
|
+
parentOrgId: number | null;
|
47
|
+
parentOrgCode: string | null;
|
48
|
+
branchId: number | null;
|
49
|
+
branchCode: string | null;
|
50
|
+
orgName: string;
|
51
|
+
orgShortName: string;
|
52
|
+
orgType: string;
|
53
|
+
showOrder: number | null;
|
54
|
+
orgCodeSearchPath: string;
|
55
|
+
positionInfo: any[];
|
56
|
+
orgBindType: string;
|
57
|
+
csmOrgCode: string | null;
|
58
|
+
hasPermission: boolean;
|
59
|
+
canModify: boolean;
|
60
|
+
nodeLevel: number;
|
61
|
+
searchPath: string;
|
62
|
+
children: UserOrganization$1[];
|
63
|
+
}
|
64
|
+
interface UserRole {
|
65
|
+
roleId: number;
|
66
|
+
roleName: string;
|
67
|
+
parentRoleId: number | null;
|
68
|
+
grantType: string;
|
69
|
+
nodeLevel: number | null;
|
70
|
+
searchPath: string | null;
|
71
|
+
children: UserRole[];
|
72
|
+
}
|
73
|
+
interface UserInfo$1 {
|
74
|
+
ehrId: number;
|
75
|
+
account: string;
|
76
|
+
crewId: number | null;
|
77
|
+
crewCode: string | null;
|
78
|
+
name: string;
|
79
|
+
individualType: string | null;
|
80
|
+
individualStatus: string | null;
|
81
|
+
opmsRole: string;
|
82
|
+
userOrganizations: UserOrganization$1[];
|
83
|
+
userRoles: UserRole[];
|
84
|
+
uniAccount: string;
|
15
85
|
}
|
86
|
+
declare enum EnumOrgQueryMode {
|
87
|
+
BY_ROLES = "BY_ROLES",// 配置了页面权限的方式
|
88
|
+
BY_DEPT = "BY_DEPT"
|
89
|
+
}
|
90
|
+
declare enum EnumOrgQueryScope {
|
91
|
+
ONLY_BRANCH = "ONLY_BRANCH",// 查询到子公司
|
92
|
+
STEWARD_UNIT = "STEWARD_UNIT",// 查询到乘务部(如果用户是业务部门的话包含所有乘务部), 不包括业务部门
|
93
|
+
WITH_DEPARTMENT = "WITH_DEPARTMENT"
|
94
|
+
}
|
95
|
+
interface UserOrgTreeParams {
|
96
|
+
orgQueryMode: keyof typeof EnumOrgQueryMode;
|
97
|
+
orgQueryScope: keyof typeof EnumOrgQueryScope;
|
98
|
+
menuResourceId?: number;
|
99
|
+
stewardUnitLevel?: number;
|
100
|
+
keepHead?: boolean;
|
101
|
+
}
|
102
|
+
declare function login(baseUrl: string, authorizationCode: string): Promise<ApiResponse<{
|
103
|
+
token: string;
|
104
|
+
}>>;
|
105
|
+
declare function logout(baseUrl: string): Promise<ApiResponse<void>>;
|
106
|
+
declare function getUserInfo(baseUrl: string): Promise<ApiResponse<UserInfo$1>>;
|
107
|
+
declare function queryResource(baseUrl: string, params: {
|
108
|
+
systemId: string;
|
109
|
+
}): Promise<ApiResponse<Resource[]>>;
|
110
|
+
declare function getOrgTree(baseUrl: string, params: {
|
111
|
+
systemId: string;
|
112
|
+
name: CodeSourceType;
|
113
|
+
}): Promise<ApiResponse<OrgRecord$1>>;
|
114
|
+
declare function getUserOrgTree(baseUrl: string, params: UserOrgTreeParams): Promise<ApiResponse<OrgRecord$1[]>>;
|
115
|
+
declare function queryOrgCompanies(baseUrl: string, params: {
|
116
|
+
queryAllBranches?: boolean;
|
117
|
+
}): Promise<ApiResponse<OrgRecord$1[]>>;
|
118
|
+
|
16
119
|
interface MenuItem {
|
17
120
|
icon?: string;
|
18
121
|
path: string;
|
@@ -58,7 +161,7 @@ interface ChildOrganization {
|
|
58
161
|
orgShortName: string;
|
59
162
|
orgType: string;
|
60
163
|
}
|
61
|
-
interface OrgRecord
|
164
|
+
interface OrgRecord {
|
62
165
|
allOrgTags: boolean;
|
63
166
|
allSystem: boolean;
|
64
167
|
canModify: boolean;
|
@@ -97,14 +200,54 @@ declare function handlePermissionTree<T extends {
|
|
97
200
|
noAuthMap: Record<number | string, T>;
|
98
201
|
};
|
99
202
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
203
|
+
type PermissionEventType = 'tokenChange';
|
204
|
+
type PermissionEventListener<T = any> = (data: T) => void;
|
205
|
+
interface PermissionEventMap {
|
206
|
+
tokenChange: string;
|
207
|
+
}
|
208
|
+
/**
|
209
|
+
* Generic Event Emitter class for handling events
|
210
|
+
*/
|
211
|
+
declare class EventEmitter<TEventMap extends Record<string, any> = PermissionEventMap> {
|
212
|
+
private eventListeners;
|
213
|
+
private allowedEvents;
|
214
|
+
constructor(allowedEvents?: (keyof TEventMap)[]);
|
215
|
+
/**
|
216
|
+
* Add event listener
|
217
|
+
*/
|
218
|
+
listen<TEvent extends keyof TEventMap>(event: TEvent, listener: PermissionEventListener<TEventMap[TEvent]>): () => void;
|
219
|
+
/**
|
220
|
+
* Remove event listener
|
221
|
+
*/
|
222
|
+
unlisten<TEvent extends keyof TEventMap>(event: TEvent, listener: PermissionEventListener<TEventMap[TEvent]>): void;
|
223
|
+
/**
|
224
|
+
* Remove all listeners for a specific event or all events
|
225
|
+
*/
|
226
|
+
unlistenAll(event?: keyof TEventMap): void;
|
227
|
+
/**
|
228
|
+
* Emit event to all listeners
|
229
|
+
*/
|
230
|
+
emit<TEvent extends keyof TEventMap>(event: TEvent, data: TEventMap[TEvent]): void;
|
231
|
+
/**
|
232
|
+
* Get the number of listeners for a specific event
|
233
|
+
*/
|
234
|
+
getListenerCount(event: keyof TEventMap): number;
|
235
|
+
/**
|
236
|
+
* Check if there are any listeners for a specific event
|
237
|
+
*/
|
238
|
+
hasListeners(event: keyof TEventMap): boolean;
|
239
|
+
/**
|
240
|
+
* Get all registered event types
|
241
|
+
*/
|
242
|
+
getEventTypes(): (keyof TEventMap)[];
|
243
|
+
/**
|
244
|
+
* Get all allowed event types
|
245
|
+
*/
|
246
|
+
getAllowedEvents(): (keyof TEventMap)[];
|
247
|
+
/**
|
248
|
+
* Check if an event is allowed
|
249
|
+
*/
|
250
|
+
isEventAllowed(event: keyof TEventMap): boolean;
|
108
251
|
}
|
109
252
|
|
110
253
|
interface PermissionOptions {
|
@@ -115,7 +258,7 @@ interface PermissionOptions {
|
|
115
258
|
* 组织树处理工具
|
116
259
|
*/
|
117
260
|
declare const DataHandler: {
|
118
|
-
iterateOrgTree(orgTree: OrgRecord[]): OrgTreeItem[];
|
261
|
+
iterateOrgTree(orgTree: OrgRecord$1[]): OrgTreeItem[];
|
119
262
|
iterateNestedArray: typeof iterateNestedArray;
|
120
263
|
getAllUnitOptions(orgTree: OrgTreeItem[]): Option[];
|
121
264
|
getCompaniesOptions(orgTree: OrgTreeItem[], hasRootAuth: boolean): Option[];
|
@@ -140,8 +283,6 @@ declare const DataHandler: {
|
|
140
283
|
};
|
141
284
|
declare class Permission {
|
142
285
|
private _userInfo;
|
143
|
-
private _orgTree;
|
144
|
-
private _orgCompany;
|
145
286
|
private systemId;
|
146
287
|
private baseUrl;
|
147
288
|
resources: Resource[];
|
@@ -155,7 +296,32 @@ declare class Permission {
|
|
155
296
|
menuMap: {
|
156
297
|
[path: string]: MenuItem;
|
157
298
|
};
|
299
|
+
private eventEmitter;
|
158
300
|
constructor(options: PermissionOptions);
|
301
|
+
/**
|
302
|
+
* Add event listener
|
303
|
+
*/
|
304
|
+
listen<T extends PermissionEventType>(event: T, listener: PermissionEventListener<PermissionEventMap[T]>): () => void;
|
305
|
+
/**
|
306
|
+
* Remove event listener
|
307
|
+
*/
|
308
|
+
unlisten<T extends PermissionEventType>(event: T, listener: PermissionEventListener<PermissionEventMap[T]>): void;
|
309
|
+
/**
|
310
|
+
* Remove all listeners for a specific event or all events
|
311
|
+
*/
|
312
|
+
unlistenAll(event?: PermissionEventType): void;
|
313
|
+
/**
|
314
|
+
* Emit event to all listeners
|
315
|
+
*/
|
316
|
+
private emit;
|
317
|
+
/**
|
318
|
+
* Get available events that can be listened to
|
319
|
+
*/
|
320
|
+
getAvailableEvents(): PermissionEventType[];
|
321
|
+
/**
|
322
|
+
* Check if an event is supported
|
323
|
+
*/
|
324
|
+
isEventSupported(event: string): event is PermissionEventType;
|
159
325
|
/**
|
160
326
|
* Login using code from URL, save userInfo
|
161
327
|
*/
|
@@ -165,7 +331,7 @@ declare class Permission {
|
|
165
331
|
*/
|
166
332
|
logout(clearData?: boolean): Promise<void>;
|
167
333
|
clear(): void;
|
168
|
-
getUserInfo(): Promise<UserInfo
|
334
|
+
getUserInfo(): Promise<UserInfo$1>;
|
169
335
|
/**
|
170
336
|
* Get resources and process to menuList, menuMap, widgetMap (matches app store logic)
|
171
337
|
*/
|
@@ -181,27 +347,56 @@ declare class Permission {
|
|
181
347
|
menuMap: Record<number, MenuItem>;
|
182
348
|
}>;
|
183
349
|
/**
|
184
|
-
*
|
350
|
+
* Generate cache key for user orgs query
|
351
|
+
*/
|
352
|
+
private generateUserOrgsCacheKey;
|
353
|
+
/**
|
354
|
+
* Query and process organization tree with caching
|
185
355
|
*/
|
186
|
-
queryUserOrgs(
|
356
|
+
queryUserOrgs(params: UserOrgTreeParams, config?: {
|
357
|
+
force?: boolean;
|
358
|
+
cacheTimeout?: number;
|
359
|
+
}): Promise<{
|
187
360
|
orgTree: OrgTreeItem[];
|
188
|
-
orgNoAuthMap: Record<number, OrgTreeItem>;
|
189
|
-
authOrgTree: OrgTreeItem[];
|
190
361
|
} | null>;
|
191
|
-
queryCompanies(): Promise<OrgRecord[]>;
|
192
362
|
isLogin(): boolean;
|
193
363
|
getToken(): string | null;
|
194
364
|
setToken(token: string): void;
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
365
|
+
/**
|
366
|
+
* Get storage information for debugging and monitoring
|
367
|
+
*/
|
368
|
+
getStorageInfo(): {
|
369
|
+
permissionKeys: {
|
370
|
+
resourceKey: string;
|
371
|
+
tokenKey: string;
|
372
|
+
userInfoKey: string;
|
373
|
+
};
|
374
|
+
hasData: {
|
375
|
+
resources: boolean;
|
376
|
+
token: boolean;
|
377
|
+
userInfo: boolean;
|
378
|
+
};
|
379
|
+
cacheInfo: {
|
380
|
+
userOrgsCacheCount: number;
|
381
|
+
userOrgsCacheKeys: string[];
|
382
|
+
};
|
383
|
+
systemId: number | string | undefined;
|
384
|
+
currentVersion: string;
|
385
|
+
totalKeys: number;
|
386
|
+
systemKeys: number;
|
387
|
+
};
|
388
|
+
/**
|
389
|
+
* Get current storage version
|
390
|
+
*/
|
391
|
+
getStorageVersion(): string;
|
392
|
+
/**
|
393
|
+
* Clear all storage data for this system
|
394
|
+
*/
|
395
|
+
clearStorage(): void;
|
396
|
+
/**
|
397
|
+
* Clear user orgs cache for specific parameters or all
|
398
|
+
*/
|
399
|
+
clearUserOrgsCache(params?: UserOrgTreeParams): void;
|
205
400
|
}
|
206
401
|
|
207
402
|
/**
|
@@ -226,4 +421,4 @@ declare function jumpToSSOLogout({ baseUrl, redirectToUrl, clientId, }: {
|
|
226
421
|
clientId?: string;
|
227
422
|
}): void;
|
228
423
|
|
229
|
-
export { type ChildOrganization, DataHandler, type MenuItem, Permission as OpmsPermission, type Option, type OrgRecord
|
424
|
+
export { type ApiResponse, type ChildOrganization, type CodeSourceType, DataHandler, EnumOrgQueryMode, EnumOrgQueryScope, EventEmitter, type MenuItem, type OpenIndicatorType, Permission as OpmsPermission, type Option, type OrgRecord, type OrgTreeItem, type PermissionEventListener, type PermissionEventMap, type PermissionEventType, type Resource, type ResourceType, type UserInfo, type UserOrgTreeParams, type UserOrganization, type UserRole, getOrgTree, getUserInfo, getUserOrgTree, jumpToSSOLogin, jumpToSSOLogout, login, logout, queryOrgCompanies, queryResource };
|