sy-page-sdk 0.1.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.
@@ -0,0 +1,1034 @@
1
+ // src/core/client.ts
2
+ var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
3
+ var isSearchRuleLike = (value) => isRecord(value) && typeof value.key === "string" && (value.componentName === void 0 || typeof value.componentName === "string");
4
+ var isBlobLike = (value) => typeof Blob !== "undefined" && value instanceof Blob;
5
+ var normalizeMethod = (value) => {
6
+ const method = String(value || "get").toLowerCase();
7
+ if (method === "get" || method === "post" || method === "put" || method === "delete" || method === "patch") {
8
+ return method;
9
+ }
10
+ return "get";
11
+ };
12
+ var resolveAppType = (context, explicitAppType) => {
13
+ const appType = String(explicitAppType || context.app.appType || "").trim();
14
+ if (!appType) {
15
+ throw new Error("appType \u4E0D\u80FD\u4E3A\u7A7A");
16
+ }
17
+ return appType;
18
+ };
19
+ var buildAppPath = (context, explicitAppType, suffix) => `/${resolveAppType(context, explicitAppType)}${suffix}`;
20
+ var encodePathSegment = (value) => encodeURIComponent(String(value));
21
+ var getHeaderValue = (headers, name) => {
22
+ if (!headers) {
23
+ return void 0;
24
+ }
25
+ const target = name.toLowerCase();
26
+ const entry = Object.entries(headers).find(
27
+ ([key]) => key.toLowerCase() === target
28
+ );
29
+ return entry ? String(entry[1]) : void 0;
30
+ };
31
+ var parseContentDispositionFileName = (contentDisposition) => {
32
+ if (!contentDisposition) {
33
+ return void 0;
34
+ }
35
+ const utf8Match = contentDisposition.match(/filename\*=UTF-8''([^;]+)/i);
36
+ if (utf8Match?.[1]) {
37
+ try {
38
+ return decodeURIComponent(utf8Match[1]);
39
+ } catch {
40
+ return utf8Match[1];
41
+ }
42
+ }
43
+ const quotedMatch = contentDisposition.match(/filename="([^"]+)"/i);
44
+ if (quotedMatch?.[1]) {
45
+ return quotedMatch[1];
46
+ }
47
+ const plainMatch = contentDisposition.match(/filename=([^;]+)/i);
48
+ if (plainMatch?.[1]) {
49
+ return plainMatch[1].trim();
50
+ }
51
+ return void 0;
52
+ };
53
+ var serializeQuery = (query) => {
54
+ if (!query) {
55
+ return void 0;
56
+ }
57
+ const params = new URLSearchParams();
58
+ const appendValue = (key, value) => {
59
+ if (value === void 0 || value === null || value === "") {
60
+ return;
61
+ }
62
+ if (Array.isArray(value)) {
63
+ value.forEach((item) => appendValue(key, item));
64
+ return;
65
+ }
66
+ if (value instanceof Date) {
67
+ params.append(key, value.toISOString());
68
+ return;
69
+ }
70
+ params.append(key, String(value));
71
+ };
72
+ Object.entries(query).forEach(([key, value]) => {
73
+ appendValue(key, value);
74
+ });
75
+ const serialized = params.toString();
76
+ return serialized || void 0;
77
+ };
78
+ var toLegacyRules = (value) => Object.entries(value).flatMap(([key, itemValue]) => {
79
+ if (itemValue === void 0) {
80
+ return [];
81
+ }
82
+ return [
83
+ {
84
+ key,
85
+ operator: Array.isArray(itemValue) ? "IN" : "EQ",
86
+ value: itemValue
87
+ }
88
+ ];
89
+ });
90
+ var toSearchGroup = (value) => {
91
+ if (value === void 0 || value === null || value === "") {
92
+ return void 0;
93
+ }
94
+ if (typeof value === "string") {
95
+ try {
96
+ return toSearchGroup(JSON.parse(value));
97
+ } catch {
98
+ return void 0;
99
+ }
100
+ }
101
+ if (Array.isArray(value)) {
102
+ const rules = [];
103
+ const conditions = [];
104
+ value.forEach((item) => {
105
+ const group = toSearchGroup(item);
106
+ if (group) {
107
+ if (group.rules?.length) {
108
+ rules.push(...group.rules);
109
+ }
110
+ if (group.conditions?.length) {
111
+ conditions.push(...group.conditions);
112
+ }
113
+ return;
114
+ }
115
+ if (isSearchRuleLike(item)) {
116
+ rules.push(item);
117
+ return;
118
+ }
119
+ if (isRecord(item)) {
120
+ rules.push(...toLegacyRules(item));
121
+ }
122
+ });
123
+ if (rules.length === 0 && conditions.length === 0) {
124
+ return void 0;
125
+ }
126
+ return {
127
+ logic: "AND",
128
+ ...rules.length > 0 ? { rules } : {},
129
+ ...conditions.length > 0 ? { conditions } : {}
130
+ };
131
+ }
132
+ if (isRecord(value)) {
133
+ if (isSearchRuleLike(value)) {
134
+ return {
135
+ logic: "AND",
136
+ rules: [value]
137
+ };
138
+ }
139
+ if ("rules" in value || "conditions" in value || "logic" in value) {
140
+ const nextGroup = {
141
+ logic: value.logic === "OR" || value.logic === "AND" ? value.logic : "AND"
142
+ };
143
+ if (Array.isArray(value.rules)) {
144
+ nextGroup.rules = value.rules.filter(isSearchRuleLike);
145
+ }
146
+ if (Array.isArray(value.conditions)) {
147
+ nextGroup.conditions = value.conditions.map((item) => toSearchGroup(item)).filter((item) => Boolean(item));
148
+ }
149
+ if (!nextGroup.rules?.length && !nextGroup.conditions?.length) {
150
+ return void 0;
151
+ }
152
+ return nextGroup;
153
+ }
154
+ const rules = toLegacyRules(value);
155
+ if (rules.length === 0) {
156
+ return void 0;
157
+ }
158
+ return {
159
+ logic: "AND",
160
+ rules
161
+ };
162
+ }
163
+ return void 0;
164
+ };
165
+ var mergeSearchExpressions = (base, extra) => {
166
+ const baseGroup = toSearchGroup(base);
167
+ const extraGroup = toSearchGroup(extra);
168
+ if (!baseGroup) {
169
+ return extraGroup;
170
+ }
171
+ if (!extraGroup) {
172
+ return baseGroup;
173
+ }
174
+ return {
175
+ logic: "AND",
176
+ conditions: [baseGroup, extraGroup]
177
+ };
178
+ };
179
+ var serializeSearchExpression = (value) => {
180
+ if (value === void 0 || value === null || value === "") {
181
+ return void 0;
182
+ }
183
+ if (typeof value === "string") {
184
+ return value;
185
+ }
186
+ const group = toSearchGroup(value);
187
+ return group ? JSON.stringify(group) : void 0;
188
+ };
189
+ var normalizeAdvancedOrder = (value) => {
190
+ if (!value) {
191
+ return void 0;
192
+ }
193
+ const nextValue = Array.isArray(value) ? value : [value];
194
+ return JSON.stringify(nextValue);
195
+ };
196
+ var normalizeDynamicOrder = (value) => {
197
+ if (!value) {
198
+ return void 0;
199
+ }
200
+ if (typeof value === "string") {
201
+ return value;
202
+ }
203
+ return `${value.id}:${value.isAsc === "n" ? "-" : "+"}`;
204
+ };
205
+ var normalizeJsonResponse = (rawResponse) => {
206
+ const topLevelCode = Number(rawResponse?.code);
207
+ const nestedCode = Number(
208
+ rawResponse?.data?.code
209
+ );
210
+ const code = Number.isFinite(topLevelCode) ? topLevelCode : Number.isFinite(nestedCode) ? nestedCode : 200;
211
+ const topLevelResult = isRecord(rawResponse) && "result" in rawResponse ? rawResponse.result : void 0;
212
+ const nestedResult = isRecord(rawResponse?.data) && "result" in (rawResponse.data || {}) ? rawResponse.data?.result : void 0;
213
+ const topLevelData = isRecord(rawResponse) && "data" in rawResponse ? rawResponse.data : void 0;
214
+ const result = topLevelResult !== void 0 ? topLevelResult : nestedResult !== void 0 ? nestedResult : topLevelData !== void 0 ? topLevelData : isRecord(rawResponse) ? rawResponse : null;
215
+ const nestedSuccess = typeof rawResponse?.data?.success === "boolean" ? rawResponse.data?.success : void 0;
216
+ const success = typeof rawResponse?.success === "boolean" ? Boolean(rawResponse.success) : typeof nestedSuccess === "boolean" ? Boolean(nestedSuccess) : code >= 200 && code < 300;
217
+ return {
218
+ code,
219
+ success,
220
+ message: typeof rawResponse?.message === "string" ? rawResponse.message : typeof rawResponse?.data?.message === "string" ? rawResponse.data?.message : void 0,
221
+ result,
222
+ data: topLevelData !== void 0 ? topLevelData : topLevelResult !== void 0 ? topLevelResult : void 0,
223
+ raw: rawResponse
224
+ };
225
+ };
226
+ var normalizeBinaryResponse = (rawResponse) => {
227
+ if (isRecord(rawResponse) && isBlobLike(rawResponse.blob)) {
228
+ return rawResponse;
229
+ }
230
+ if (isBlobLike(rawResponse)) {
231
+ return {
232
+ blob: rawResponse,
233
+ raw: rawResponse
234
+ };
235
+ }
236
+ const responseData = rawResponse?.data;
237
+ const responseHeaders = isRecord(
238
+ rawResponse?.headers
239
+ ) ? rawResponse.headers : void 0;
240
+ if (!isBlobLike(responseData)) {
241
+ throw new Error("transport.download \u672A\u8FD4\u56DE Blob \u6570\u636E");
242
+ }
243
+ const contentDisposition = getHeaderValue(
244
+ responseHeaders,
245
+ "content-disposition"
246
+ );
247
+ return {
248
+ blob: responseData,
249
+ fileName: parseContentDispositionFileName(contentDisposition),
250
+ contentType: getHeaderValue(responseHeaders, "content-type") || responseData.type,
251
+ headers: responseHeaders ? Object.fromEntries(
252
+ Object.entries(responseHeaders).map(([key, value]) => [
253
+ key,
254
+ value === void 0 ? void 0 : String(value)
255
+ ])
256
+ ) : void 0,
257
+ raw: rawResponse
258
+ };
259
+ };
260
+ var toSdkError = (input, payload) => {
261
+ const normalizedResponse = isRecord(input) ? normalizeJsonResponse(input) : void 0;
262
+ const nextError = input instanceof Error ? input : new Error(
263
+ normalizedResponse?.message || `\u8BF7\u6C42\u5931\u8D25: ${String(payload.method).toUpperCase()} ${payload.path}`
264
+ );
265
+ const sdkError = nextError;
266
+ sdkError.method = String(payload.method).toUpperCase();
267
+ sdkError.path = payload.path;
268
+ sdkError.response = normalizedResponse;
269
+ sdkError.raw = input;
270
+ return sdkError;
271
+ };
272
+ var ensureSuccess = (response, payload) => {
273
+ if (!response.success) {
274
+ throw toSdkError(response, payload);
275
+ }
276
+ return response;
277
+ };
278
+ var resolveFormInstanceId = (params) => {
279
+ const formInstanceId = String(
280
+ params.formInstId || params.formInstanceId || ""
281
+ ).trim();
282
+ if (!formInstanceId) {
283
+ throw new Error("formInstanceId \u4E0D\u80FD\u4E3A\u7A7A");
284
+ }
285
+ return formInstanceId;
286
+ };
287
+ var withDefaultAppType = (context, params) => {
288
+ if (!params) {
289
+ return params;
290
+ }
291
+ if (params.appType) {
292
+ return params;
293
+ }
294
+ if (params.scope === "app") {
295
+ return {
296
+ ...params,
297
+ appType: context.app.appType
298
+ };
299
+ }
300
+ return params;
301
+ };
302
+ var createPageSdk = (context) => {
303
+ const request = async (options) => {
304
+ const payload = {
305
+ path: options.path,
306
+ method: normalizeMethod(options.method),
307
+ query: serializeQuery(options.query),
308
+ body: options.body,
309
+ headers: options.headers
310
+ };
311
+ try {
312
+ const rawResponse = await context.bridge.invoke(
313
+ "transport.request",
314
+ payload
315
+ );
316
+ return ensureSuccess(
317
+ normalizeJsonResponse(rawResponse),
318
+ payload
319
+ );
320
+ } catch (error) {
321
+ throw toSdkError(error, payload);
322
+ }
323
+ };
324
+ const download = async (options) => {
325
+ const payload = {
326
+ path: options.path,
327
+ method: normalizeMethod(options.method),
328
+ query: serializeQuery(options.query),
329
+ body: options.body,
330
+ headers: options.headers
331
+ };
332
+ try {
333
+ const rawResponse = await context.bridge.invoke(
334
+ "transport.download",
335
+ payload
336
+ );
337
+ return normalizeBinaryResponse(rawResponse);
338
+ } catch (error) {
339
+ throw toSdkError(error, payload);
340
+ }
341
+ };
342
+ const form = {
343
+ getDetail: (params) => request({
344
+ path: buildAppPath(
345
+ context,
346
+ params.appType,
347
+ "/v1/form/getFormDataById.json"
348
+ ),
349
+ method: "get",
350
+ query: {
351
+ formUuid: params.formUuid,
352
+ formInstId: resolveFormInstanceId(params)
353
+ }
354
+ }),
355
+ create: (params) => request({
356
+ path: buildAppPath(
357
+ context,
358
+ params.appType,
359
+ "/v1/form/saveFormData.json"
360
+ ),
361
+ method: "post",
362
+ body: {
363
+ formUuid: params.formUuid,
364
+ formDataJson: JSON.stringify(params.data || {})
365
+ }
366
+ }),
367
+ update: (params) => request({
368
+ path: buildAppPath(
369
+ context,
370
+ params.appType,
371
+ "/v1/form/updateFormData.json"
372
+ ),
373
+ method: "post",
374
+ body: {
375
+ formUuid: params.formUuid,
376
+ formInstId: resolveFormInstanceId(params),
377
+ updateFormDataJson: params.updateFormDataJson || JSON.stringify(params.data || {})
378
+ }
379
+ }),
380
+ remove: (params) => request({
381
+ path: buildAppPath(
382
+ context,
383
+ params.appType,
384
+ "/v1/form/deleteFormData.json"
385
+ ),
386
+ method: "post",
387
+ body: {
388
+ formUuid: params.formUuid,
389
+ formInstId: resolveFormInstanceId(params)
390
+ }
391
+ }),
392
+ getChangeRecords: (params) => request({
393
+ path: buildAppPath(
394
+ context,
395
+ params.appType,
396
+ "/v1/form/getFormDataChangeRecords.json"
397
+ ),
398
+ method: "get",
399
+ query: {
400
+ formUuid: params.formUuid,
401
+ formInstId: resolveFormInstanceId(params),
402
+ page: params.page,
403
+ pageSize: params.pageSize
404
+ }
405
+ }),
406
+ search: (params) => request({
407
+ path: buildAppPath(
408
+ context,
409
+ params.appType,
410
+ "/v1/form/searchFormDatas.json"
411
+ ),
412
+ method: "get",
413
+ query: {
414
+ formUuid: params.formUuid,
415
+ searchFieldJson: serializeSearchExpression(params.search),
416
+ currentPage: params.currentPage,
417
+ pageSize: params.pageSize,
418
+ originatorId: params.originatorId,
419
+ createFrom: params.createFrom,
420
+ createTo: params.createTo,
421
+ modifiedFrom: params.modifiedFrom,
422
+ modifiedTo: params.modifiedTo,
423
+ dynamicOrder: normalizeDynamicOrder(params.dynamicOrder),
424
+ instanceStatus: params.instanceStatus
425
+ }
426
+ }),
427
+ searchIds: (params) => request({
428
+ path: buildAppPath(
429
+ context,
430
+ params.appType,
431
+ "/v1/form/searchFormDataIds.json"
432
+ ),
433
+ method: "get",
434
+ query: {
435
+ formUuid: params.formUuid,
436
+ searchFieldJson: serializeSearchExpression(params.search),
437
+ currentPage: params.currentPage,
438
+ pageSize: params.pageSize,
439
+ originatorId: params.originatorId,
440
+ createFrom: params.createFrom,
441
+ createTo: params.createTo,
442
+ modifiedFrom: params.modifiedFrom,
443
+ modifiedTo: params.modifiedTo,
444
+ dynamicOrder: normalizeDynamicOrder(params.dynamicOrder),
445
+ instanceStatus: params.instanceStatus
446
+ }
447
+ }),
448
+ advancedSearch: (params) => request({
449
+ path: buildAppPath(
450
+ context,
451
+ params.appType,
452
+ "/v1/form/advancedSearch.json"
453
+ ),
454
+ method: "get",
455
+ query: {
456
+ formUuid: params.formUuid,
457
+ filters: serializeSearchExpression(params.filters),
458
+ conditionType: params.conditionType,
459
+ searchKeyWord: params.searchKeyWord,
460
+ currentPage: params.currentPage,
461
+ pageSize: params.pageSize,
462
+ order: normalizeAdvancedOrder(params.order),
463
+ instanceStatus: params.instanceStatus
464
+ }
465
+ }),
466
+ advancedExport: (params) => download({
467
+ path: buildAppPath(
468
+ context,
469
+ params.appType,
470
+ "/v1/form/advancedExport.xlsx"
471
+ ),
472
+ method: "get",
473
+ query: {
474
+ formUuid: params.formUuid,
475
+ filters: serializeSearchExpression(params.filters),
476
+ conditionType: params.conditionType,
477
+ searchKeyWord: params.searchKeyWord,
478
+ currentPage: params.currentPage,
479
+ pageSize: params.pageSize,
480
+ order: normalizeAdvancedOrder(params.order),
481
+ instanceStatus: params.instanceStatus,
482
+ exportAll: params.exportAll,
483
+ embedImages: params.embedImages,
484
+ exportFields: params.exportFields?.join(",")
485
+ }
486
+ }),
487
+ downloadImportTemplate: (params) => download({
488
+ path: buildAppPath(
489
+ context,
490
+ params.appType,
491
+ "/v1/form/advancedExportTemplate.xlsx"
492
+ ),
493
+ method: "get",
494
+ query: {
495
+ formUuid: params.formUuid
496
+ }
497
+ }),
498
+ importPreview: (params) => request({
499
+ path: buildAppPath(
500
+ context,
501
+ params.appType,
502
+ "/v1/form/importPreview.xlsx"
503
+ ),
504
+ method: "post",
505
+ body: {
506
+ formUuid: params.formUuid,
507
+ fileBase64: params.fileBase64,
508
+ fileName: params.fileName
509
+ }
510
+ }),
511
+ importExcel: (params) => request({
512
+ path: buildAppPath(context, params.appType, "/v1/form/import.xlsx"),
513
+ method: "post",
514
+ body: {
515
+ formUuid: params.formUuid,
516
+ fileBase64: params.fileBase64,
517
+ fileName: params.fileName
518
+ }
519
+ }),
520
+ getImportRecords: (params) => request({
521
+ path: buildAppPath(
522
+ context,
523
+ params.appType,
524
+ "/v1/form/importRecords.json"
525
+ ),
526
+ method: "get",
527
+ query: {
528
+ formUuid: params.formUuid,
529
+ currentPage: params.currentPage,
530
+ pageSize: params.pageSize
531
+ }
532
+ }),
533
+ getExportRecords: (params) => request({
534
+ path: buildAppPath(
535
+ context,
536
+ params.appType,
537
+ "/v1/form/exportRecords.json"
538
+ ),
539
+ method: "get",
540
+ query: {
541
+ formUuid: params.formUuid,
542
+ currentPage: params.currentPage,
543
+ pageSize: params.pageSize
544
+ }
545
+ }),
546
+ downloadImportSource: (params) => download({
547
+ path: buildAppPath(
548
+ context,
549
+ params.appType,
550
+ "/v1/form/importRecord/downloadSource.xlsx"
551
+ ),
552
+ method: "get",
553
+ query: {
554
+ recordId: params.recordId
555
+ }
556
+ }),
557
+ downloadImportFailed: (params) => download({
558
+ path: buildAppPath(
559
+ context,
560
+ params.appType,
561
+ "/v1/form/importRecord/downloadFailed.xlsx"
562
+ ),
563
+ method: "get",
564
+ query: {
565
+ recordId: params.recordId
566
+ }
567
+ }),
568
+ downloadExportRecord: (params) => download({
569
+ path: buildAppPath(
570
+ context,
571
+ params.appType,
572
+ "/v1/form/exportRecord/download.xlsx"
573
+ ),
574
+ method: "get",
575
+ query: {
576
+ recordId: params.recordId
577
+ }
578
+ }),
579
+ getDataManagementConfig: (params) => request({
580
+ path: buildAppPath(
581
+ context,
582
+ params.appType,
583
+ "/v1/form/dataManagement/config/get.json"
584
+ ),
585
+ method: "get",
586
+ query: {
587
+ formUuid: params.formUuid
588
+ }
589
+ }),
590
+ saveDataManagementConfig: (params) => request({
591
+ path: buildAppPath(
592
+ context,
593
+ params.appType,
594
+ "/v1/form/dataManagement/config/save.json"
595
+ ),
596
+ method: "post",
597
+ body: {
598
+ formUuid: params.formUuid,
599
+ config: params.config
600
+ }
601
+ })
602
+ };
603
+ const user = {
604
+ create: (params) => request({
605
+ path: "/user/create",
606
+ method: "post",
607
+ body: params
608
+ }),
609
+ update: (params) => request({
610
+ path: "/user/update",
611
+ method: "put",
612
+ body: params
613
+ }),
614
+ remove: (id) => request({
615
+ path: `/user/${encodePathSegment(id)}`,
616
+ method: "delete"
617
+ }),
618
+ get: (id = "current") => request({
619
+ path: `/user/${encodePathSegment(id)}`,
620
+ method: "get"
621
+ }),
622
+ getCurrent: () => request({
623
+ path: "/user/current",
624
+ method: "get"
625
+ }),
626
+ getByUsername: (username) => request({
627
+ path: `/user/username/${encodePathSegment(username)}`,
628
+ method: "get"
629
+ }),
630
+ list: (params) => request({
631
+ path: "/user/list",
632
+ method: "get",
633
+ query: {
634
+ ids: params?.ids,
635
+ departmentIds: params?.departmentIds,
636
+ name: params?.name,
637
+ username: params?.username,
638
+ phone: params?.phone,
639
+ email: params?.email,
640
+ page: params?.page,
641
+ pageSize: params?.pageSize
642
+ }
643
+ }),
644
+ search: (keyword) => request({
645
+ path: "/user/search",
646
+ method: "get",
647
+ query: {
648
+ keyword
649
+ }
650
+ }),
651
+ listAll: () => request({
652
+ path: "/user/all",
653
+ method: "get"
654
+ }),
655
+ listByDepartment: (departmentId) => request({
656
+ path: `/user/department/${encodePathSegment(departmentId)}`,
657
+ method: "get"
658
+ }),
659
+ validate: (params) => request({
660
+ path: "/user/validate",
661
+ method: "post",
662
+ body: params
663
+ })
664
+ };
665
+ const role = {
666
+ create: (params) => request({
667
+ path: "/role/",
668
+ method: "post",
669
+ body: params
670
+ }),
671
+ update: (id, params) => request({
672
+ path: `/role/${encodePathSegment(id)}`,
673
+ method: "put",
674
+ body: params
675
+ }),
676
+ remove: (id) => request({
677
+ path: `/role/${encodePathSegment(id)}`,
678
+ method: "delete"
679
+ }),
680
+ get: (id) => request({
681
+ path: `/role/${encodePathSegment(id)}`,
682
+ method: "get"
683
+ }),
684
+ list: (params) => request({
685
+ path: "/role/",
686
+ method: "get",
687
+ query: withDefaultAppType(context, params)
688
+ }),
689
+ listUsers: (roleId, params) => request({
690
+ path: `/role/${encodePathSegment(roleId)}/users`,
691
+ method: "get",
692
+ query: params
693
+ }),
694
+ assignRoles: (params) => request({
695
+ path: "/role/assign",
696
+ method: "post",
697
+ body: params
698
+ }),
699
+ addUserRole: (params) => request({
700
+ path: "/role/add",
701
+ method: "post",
702
+ body: params
703
+ }),
704
+ removeUserRole: (params) => request({
705
+ path: "/role/remove",
706
+ method: "post",
707
+ body: params
708
+ }),
709
+ batchAddUsers: (params) => request({
710
+ path: "/role/batch-add-users",
711
+ method: "post",
712
+ body: params
713
+ }),
714
+ getMyRoles: (params) => request({
715
+ path: "/role/my/roles",
716
+ method: "get",
717
+ query: withDefaultAppType(context, params)
718
+ }),
719
+ getCurrentRole: (params) => request({
720
+ path: "/role/my/current",
721
+ method: "get",
722
+ query: withDefaultAppType(context, params)
723
+ }),
724
+ switchPlatformRole: (params) => request({
725
+ path: "/role/switch/platform",
726
+ method: "post",
727
+ body: params
728
+ }),
729
+ switchAppRole: (params) => request({
730
+ path: "/role/switch/app",
731
+ method: "post",
732
+ body: {
733
+ ...params,
734
+ appType: resolveAppType(context, params.appType)
735
+ }
736
+ })
737
+ };
738
+ const permission = {
739
+ formGroup: {
740
+ create: (params) => request({
741
+ path: "/permission/form-group/",
742
+ method: "post",
743
+ body: {
744
+ ...params,
745
+ appType: resolveAppType(context, params.appType)
746
+ }
747
+ }),
748
+ update: (id, params) => request({
749
+ path: `/permission/form-group/${encodePathSegment(id)}`,
750
+ method: "put",
751
+ body: {
752
+ ...params,
753
+ ...params.appType ? { appType: resolveAppType(context, params.appType) } : {}
754
+ }
755
+ }),
756
+ remove: (id) => request({
757
+ path: `/permission/form-group/${encodePathSegment(id)}`,
758
+ method: "delete"
759
+ }),
760
+ get: (id) => request({
761
+ path: `/permission/form-group/${encodePathSegment(id)}`,
762
+ method: "get"
763
+ }),
764
+ list: (params) => request({
765
+ path: "/permission/form-group/",
766
+ method: "get",
767
+ query: {
768
+ ...params,
769
+ appType: resolveAppType(context, params?.appType)
770
+ }
771
+ }),
772
+ getViewFieldPermissions: (params) => request({
773
+ path: "/permission/form-group/field-permissions",
774
+ method: "get",
775
+ query: {
776
+ appType: resolveAppType(context, params.appType),
777
+ formUuid: params.formUuid
778
+ }
779
+ }),
780
+ getViewPermissionSummary: (params) => request({
781
+ path: "/permission/form-group/view-permissions",
782
+ method: "get",
783
+ query: {
784
+ appType: resolveAppType(context, params.appType),
785
+ formUuid: params.formUuid
786
+ }
787
+ })
788
+ },
789
+ pageGroup: {
790
+ create: (params) => request({
791
+ path: "/permission/page-group/",
792
+ method: "post",
793
+ body: {
794
+ ...params,
795
+ appType: resolveAppType(context, params.appType)
796
+ }
797
+ }),
798
+ update: (id, params) => request({
799
+ path: `/permission/page-group/${encodePathSegment(id)}`,
800
+ method: "put",
801
+ body: {
802
+ ...params,
803
+ ...params.appType ? { appType: resolveAppType(context, params.appType) } : {}
804
+ }
805
+ }),
806
+ remove: (id) => request({
807
+ path: `/permission/page-group/${encodePathSegment(id)}`,
808
+ method: "delete"
809
+ }),
810
+ get: (id) => request({
811
+ path: `/permission/page-group/${encodePathSegment(id)}`,
812
+ method: "get"
813
+ }),
814
+ list: (params) => request({
815
+ path: "/permission/page-group/",
816
+ method: "get",
817
+ query: {
818
+ ...params,
819
+ appType: resolveAppType(context, params?.appType)
820
+ }
821
+ }),
822
+ getUserMenuPermissions: (appType) => request({
823
+ path: "/permission/page-group/user-menu-permissions",
824
+ method: "get",
825
+ query: {
826
+ appType: resolveAppType(context, appType)
827
+ }
828
+ })
829
+ },
830
+ api: {
831
+ create: (params) => request({
832
+ path: "/permission/api",
833
+ method: "post",
834
+ body: params
835
+ }),
836
+ update: (id, params) => request({
837
+ path: `/permission/api/${encodePathSegment(id)}`,
838
+ method: "put",
839
+ body: params
840
+ }),
841
+ remove: (id) => request({
842
+ path: `/permission/api/${encodePathSegment(id)}`,
843
+ method: "delete"
844
+ }),
845
+ list: (params) => request({
846
+ path: "/permission/api",
847
+ method: "get",
848
+ query: withDefaultAppType(context, params)
849
+ }),
850
+ assign: (params) => request({
851
+ path: "/permission/api/assign",
852
+ method: "post",
853
+ body: params
854
+ }),
855
+ getByRole: (roleId) => request({
856
+ path: `/permission/api/role/${encodePathSegment(roleId)}`,
857
+ method: "get"
858
+ }),
859
+ getRolesByPermission: (permissionId) => request({
860
+ path: `/permission/api/${encodePathSegment(permissionId)}/roles`,
861
+ method: "get"
862
+ })
863
+ },
864
+ ui: {
865
+ create: (params) => request({
866
+ path: "/permission/api/ui",
867
+ method: "post",
868
+ body: params
869
+ }),
870
+ update: (id, params) => request({
871
+ path: `/permission/api/ui/${encodePathSegment(id)}`,
872
+ method: "put",
873
+ body: params
874
+ }),
875
+ remove: (id) => request({
876
+ path: `/permission/api/ui/${encodePathSegment(id)}`,
877
+ method: "delete"
878
+ }),
879
+ list: (params) => request({
880
+ path: "/permission/api/ui",
881
+ method: "get",
882
+ query: withDefaultAppType(context, params)
883
+ }),
884
+ assign: (params) => request({
885
+ path: "/permission/api/ui/assign",
886
+ method: "post",
887
+ body: params
888
+ }),
889
+ getMyPlatform: () => request({
890
+ path: "/permission/api/ui/me/platform",
891
+ method: "get"
892
+ }),
893
+ getMyApp: (appType) => request({
894
+ path: "/permission/api/ui/me/app",
895
+ method: "get",
896
+ query: {
897
+ appType: resolveAppType(context, appType)
898
+ }
899
+ })
900
+ }
901
+ };
902
+ const process = {
903
+ getInstance: (params) => request({
904
+ path: buildAppPath(context, params.appType, "/v1/process/instance"),
905
+ method: "get",
906
+ query: {
907
+ instanceId: params.instanceId
908
+ }
909
+ }),
910
+ terminateInstance: (params) => request({
911
+ path: buildAppPath(
912
+ context,
913
+ params.appType,
914
+ "/v1/process/terminateInstance.json"
915
+ ),
916
+ method: "post",
917
+ body: {
918
+ processInstanceId: params.processInstanceId,
919
+ reason: params.reason
920
+ }
921
+ }),
922
+ approveTask: (params) => request({
923
+ path: buildAppPath(
924
+ context,
925
+ params.appType,
926
+ "/v1/process/approveTask.json"
927
+ ),
928
+ method: "post",
929
+ body: {
930
+ ...params,
931
+ appType: resolveAppType(context, params.appType)
932
+ }
933
+ }),
934
+ triggerCallbackTask: (params) => request({
935
+ path: buildAppPath(
936
+ context,
937
+ params.appType,
938
+ "/v1/process/triggerCallback.json"
939
+ ),
940
+ method: "post",
941
+ body: {
942
+ taskId: params.taskId,
943
+ payload: params.payload
944
+ }
945
+ })
946
+ };
947
+ const notification = {
948
+ sendByType: (params) => request({
949
+ path: "/api/notification-config/send-by-type",
950
+ method: "post",
951
+ body: {
952
+ ...params,
953
+ appType: resolveAppType(context, params.appType)
954
+ }
955
+ }),
956
+ batchSendByType: (params) => request({
957
+ path: "/api/notification-config/batch-send-by-type",
958
+ method: "post",
959
+ body: {
960
+ ...params,
961
+ appType: resolveAppType(context, params.appType)
962
+ }
963
+ })
964
+ };
965
+ const sdk = {
966
+ context,
967
+ request,
968
+ download,
969
+ transport: {
970
+ request,
971
+ download
972
+ },
973
+ form,
974
+ user,
975
+ role,
976
+ permission,
977
+ process,
978
+ notification,
979
+ dataSource: {
980
+ run: async (name, params = {}) => {
981
+ const descriptor = (context.page.dataSources || []).find(
982
+ (item) => item.key === name
983
+ );
984
+ if (!descriptor) {
985
+ throw new Error(`\u672A\u627E\u5230\u6570\u636E\u6E90: ${String(name || "")}`);
986
+ }
987
+ const runtimeParams = params;
988
+ const resolvedFormUuid = String(
989
+ runtimeParams.formUuid || descriptor.formUuid || ""
990
+ ).trim();
991
+ switch (descriptor.type) {
992
+ case "form.list":
993
+ return form.advancedSearch({
994
+ ...runtimeParams,
995
+ formUuid: resolvedFormUuid,
996
+ filters: mergeSearchExpressions(
997
+ descriptor.defaultFilter,
998
+ runtimeParams.filters
999
+ )
1000
+ });
1001
+ case "form.detail":
1002
+ return form.getDetail({
1003
+ ...runtimeParams,
1004
+ formUuid: resolvedFormUuid
1005
+ });
1006
+ case "form.create":
1007
+ return form.create({
1008
+ ...runtimeParams,
1009
+ formUuid: resolvedFormUuid
1010
+ });
1011
+ case "form.update":
1012
+ return form.update({
1013
+ ...runtimeParams,
1014
+ formUuid: resolvedFormUuid
1015
+ });
1016
+ case "form.delete":
1017
+ return form.remove({
1018
+ ...runtimeParams,
1019
+ formUuid: resolvedFormUuid
1020
+ });
1021
+ default:
1022
+ throw new Error(`\u6682\u4E0D\u652F\u6301\u7684\u6570\u636E\u6E90\u7C7B\u578B: ${String(descriptor.type)}`);
1023
+ }
1024
+ }
1025
+ },
1026
+ navigation: context.navigation,
1027
+ ui: context.ui
1028
+ };
1029
+ return sdk;
1030
+ };
1031
+
1032
+ export {
1033
+ createPageSdk
1034
+ };