openxiangda 1.0.136 → 1.0.138
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/lib/cli.js +687 -5
- package/lib/design-gates.js +16 -3
- package/openxiangda-skills/references/best-practices.md +18 -7
- package/openxiangda-skills/references/component-guide.md +7 -1
- package/openxiangda-skills/references/permission-design-patterns.md +95 -5
- package/openxiangda-skills/references/permissions-settings.md +165 -0
- package/openxiangda-skills/references/resource-manifest-cheatsheet.md +87 -0
- package/package.json +1 -1
- package/packages/sdk/dist/{ProcessPreview-Ci8_UsbN.d.mts → ProcessPreview-CZJP8n3e.d.mts} +6 -0
- package/packages/sdk/dist/{ProcessPreview-Ci8_UsbN.d.ts → ProcessPreview-CZJP8n3e.d.ts} +6 -0
- package/packages/sdk/dist/components/index.cjs +143 -16
- package/packages/sdk/dist/components/index.cjs.map +1 -1
- package/packages/sdk/dist/components/index.d.mts +8 -2
- package/packages/sdk/dist/components/index.d.ts +8 -2
- package/packages/sdk/dist/components/index.mjs +143 -16
- package/packages/sdk/dist/components/index.mjs.map +1 -1
- package/packages/sdk/dist/runtime/index.cjs +169 -25
- package/packages/sdk/dist/runtime/index.cjs.map +1 -1
- package/packages/sdk/dist/runtime/index.d.mts +1 -1
- package/packages/sdk/dist/runtime/index.d.ts +1 -1
- package/packages/sdk/dist/runtime/index.mjs +169 -25
- package/packages/sdk/dist/runtime/index.mjs.map +1 -1
- package/packages/sdk/dist/runtime/react.cjs +26 -9
- package/packages/sdk/dist/runtime/react.cjs.map +1 -1
- package/packages/sdk/dist/runtime/react.d.mts +13 -3
- package/packages/sdk/dist/runtime/react.d.ts +13 -3
- package/packages/sdk/dist/runtime/react.mjs +26 -9
- package/packages/sdk/dist/runtime/react.mjs.map +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PageContext, PageInfo, PageBridgeApi } from './react.mjs';
|
|
2
2
|
export { ApiEnvelope, ApiPermissionListParams, AppAuthClient, AppFunctionConnectorApi, AppFunctionContext, AppFunctionDataViewApi, AppFunctionFormApi, AppFunctionFormGetByIdParams, AppFunctionFormQueryParams, AppFunctionFormWriteParams, AppFunctionNotificationApi, AppFunctionOperatorInfo, AppFunctionOrganizationApi, AppFunctionPermissionContext, AppFunctionRuntimeContext, ApproveTaskParams, AssignPermissionsParams, AssignRolesParams, AuthChallengePayload, AuthClientError, AuthClientErrorOptions, AuthClientOptions, AuthErrorExtra, AuthLogoutRedirectOptions, AuthMethod, AuthMethodType, AuthTokenData, AuthUser, BatchAddUsersToRoleParams, BatchSendNotificationByTypeParams, ChangeOrganizationAccountPasswordParams, ChangeUserRoleParams, ConnectorCallParams, ConnectorInvokeParams, ConnectorInvokeResult, ConnectorRequestBodyType, ConnectorResponseType, CreateApiPermissionParams, CreateFormPermissionGroupDto, CreateOrganizationAccountParams, CreateOrganizationDepartmentParams, CreatePagePermissionGroupDto, CreateRoleParams, CreateUiPermissionParams, CreateUserParams, CurrentUserDepartmentParents, CustomPageEntryConfig, CustomPageEntryMode, DataManagementConfigParams, DataManagementFilterState, DataPermissionConditionDto, DataPermissionDto, DataPermissionRuleDto, DataViewQueryParams, DataViewQueryResult, DataViewStatsParams, DingTalkLoginInput, DingTalkNotificationCapabilities, DingTalkNotificationCardConfig, DingTalkNotificationCardField, DingTalkNotificationCardMode, DingTalkNotificationCardPreview, DingTalkNotificationChannelConfig, DingTalkNotificationDeliveryMode, DingTalkNotificationPreviewResult, ExecuteProcessOperationInput, FieldAccessLevel, FieldAccessPolicyDto, FieldAccessPolicyItemDto, FieldOptionValue, FieldPermissionDto, FindNotificationConfigParams, FormAdvancedSearchParams, FormChangeRecordParams, FormCreateParams, FormCreateResult, FormDetailResult, FormExportParams, FormFieldValue, FormGetDetailParams, FormImportParams, FormInstanceIdentifierResult, FormPermissionGroup, FormRemoveParams, FormSearchParams, FormUpdateParams, FormUpdateResult, FunctionInvokeParams, FunctionInvokeResult, GetParentDepartmentsOptions, GetProcessInstanceParams, GetUserRolesParams, GuestLoginInput, ImportExportRecordDownloadParams, ImportExportRecordQuery, InitiatorApproverSelector, InstanceStatus, ListNotificationInboxParams, ListWorkCenterItemsParams, LoginLogGetParams, LoginLogListParams, LoginLogRecord, LoginLogStats, LoginLogStatsParams, LoginLogStatus, LoginMethodsResult, LoginPage, LoginPageProps, MarkAllNotificationReadResult, NotificationChannel, NotificationChannelConfig, NotificationChannelsConfig, NotificationConfigLevel, NotificationInboxListResult, NotificationInboxMessage, NotificationInboxReadStatus, NotificationMessageRecord, NotificationTemplate, NotificationTemplatePreview, NotificationTypeConfig, NotificationUnreadCountResult, OpenXiangdaPageProvider, OpenXiangdaPageProviderProps, OpenXiangdaProvider, OpenXiangdaProviderProps, OrganizationAccountListParams, OrganizationCapabilities, OrganizationListResult, PageApiPermissionRecord, PageApiResponse, PageAppInfo, PageBinaryResponse, PageDataManagementConfig, PageDataSourceDescriptor, PageDepartmentInfo, PageDepartmentRecord, PageHttpMethod, PageListResult, PageMessageApi, PageModalApi, PageNavigationApi, PageOffsetListResult, PagePermissionGroup, PagePermissionInfo, PageProvider, PageQueryValue, PageRequestOptions, PageRoleRecord, PageRouteInfo, PageScope, PageSdk, PageSdkError, PageSdkMeta, PageTransportDownloadPayload, PageTransportRequestPayload, PageUiPermissionRecord, PageUiPermissionType, PageUserInfo, PageUserRecord, PageUserType, PasswordLoginInput, PermissionBoundary, PermissionBoundaryFallback, PermissionBoundaryFallbackState, PermissionBoundaryProps, PhoneCodeInput, PhoneCodeLoginInput, PhoneCodeRegisterInput, PhoneCodeSendResult, PreviewDingTalkNotificationParams, PreviewNotificationTemplateParams, ProcessActionBar, ProcessActionBarProps, ProcessApproveAction, ProcessCapabilities, ProcessCapabilityOperation, ProcessInstanceLookupParams, ProcessPreviewPanel, ProcessPreviewPanelProps, ProcessTimeline, ProcessTimelineProps, PublicAccessClaim, PublicAccessClient, PublicAccessClientError, PublicAccessClientOptions, PublicAccessGate, PublicAccessGateProps, PublicAccessSessionData, PublicAccessSessionInput, QueryFormPermissionGroupDto, QueryPagePermissionGroupDto, RefreshInput, ResetOrganizationAccountPasswordParams, ResolveLoginUrlInput, ResolveProcessCapabilitiesParams, RoleListParams, RoleUsersParams, RouteAccessResult, RuntimeBootstrap, RuntimeErrorSnapshot, RuntimeErrorType, RuntimeLogoutOptions, RuntimeMenuItem, RuntimePagePermissions, RuntimeRedirectLoginOptions, RuntimeRequestError, RuntimeRequestState, RuntimeResolveLoginOptions, SaveDataManagementConfigParams, SearchComponentName, SearchExpression, SearchFieldKey, SearchGroup, SearchLogic, SearchOperator, SearchRule, SearchSortItem, SearchSystemField, SendNotificationByTypeParams, SendNotificationResult, SsoLoginUrlInput, SsoLoginUrlResult, SubFormRule, SwitchAppRoleParams, SwitchPlatformRoleParams, TerminateProcessInstanceParams, TriggerCallbackTaskParams, UiPermissionListParams, UpdateApiPermissionParams, UpdateFormPermissionGroupDto, UpdateOrganizationAccountParams, UpdateOrganizationDepartmentParams, UpdatePagePermissionGroupDto, UpdateRoleParams, UpdateUiPermissionParams, UpdateUserParams, UseAuthOptions, UseCanAccessRouteInput, UseLoginMethodsState, UseProcessActionsOptions, UseProcessActionsReturn, UseProcessCapabilitiesOptions, UseProcessCapabilitiesReturn, UsePublicAccessOptions, UsePublicAccessState, UserListParams, UserMenuPermissionsResponse, ValidateUserParams, ViewFieldPermissionValue, ViewOperationPermission, ViewPermissionSummary, WorkCenterBoxType, WorkCenterGroupedStat, WorkCenterItem, WorkCenterListResult, WorkCenterStats, WorkCenterStatsParams, WorkflowApproveParams, WorkflowCapabilityActionKey, WorkflowDefinitionByFormParams, WorkflowInitiatorSelectCandidatesParams, WorkflowInitiatorSelectRequirementsParams, WorkflowPreviewParams, WorkflowResubmitInitiatorSelectRequirementsParams, WorkflowResubmitParams, WorkflowReturnParams, WorkflowSaveTaskParams, WorkflowStartFromExistingInstanceParams, WorkflowTaskParams, WorkflowTransferParams, WorkflowWithdrawParams, createAuthClient, createPageSdk, createPublicAccessClient, createReactPage, getAuthErrorExtra, getAuthErrorReason, isAuthChallengeRequired, isAuthClientError, useAppMenus, useAuth, useCanAccessRoute, useCurrentUser, useDataSource, useFormViewPermissions, useLoginMethods, useMessage, useModal, useNavigation, useOpenXiangda, usePageContext, usePageProps, usePageRoute, usePageSdk, usePermission, useProcessActions, useProcessCapabilities, usePublicAccess, useRuntimeAuth, useRuntimeBootstrap } from './react.mjs';
|
|
3
3
|
import React__default from 'react';
|
|
4
|
-
import { F as FormSchema, a as FormRuntimeApi, b as FormRuntimeApiConfig, c as FieldDefinition } from '../ProcessPreview-
|
|
4
|
+
import { F as FormSchema, a as FormRuntimeApi, b as FormRuntimeApiConfig, c as FieldDefinition } from '../ProcessPreview-CZJP8n3e.mjs';
|
|
5
5
|
|
|
6
6
|
type RuntimeCssIsolation = "none" | "namespace" | "shadow";
|
|
7
7
|
interface RuntimeHostBootstrap {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PageContext, PageInfo, PageBridgeApi } from './react.js';
|
|
2
2
|
export { ApiEnvelope, ApiPermissionListParams, AppAuthClient, AppFunctionConnectorApi, AppFunctionContext, AppFunctionDataViewApi, AppFunctionFormApi, AppFunctionFormGetByIdParams, AppFunctionFormQueryParams, AppFunctionFormWriteParams, AppFunctionNotificationApi, AppFunctionOperatorInfo, AppFunctionOrganizationApi, AppFunctionPermissionContext, AppFunctionRuntimeContext, ApproveTaskParams, AssignPermissionsParams, AssignRolesParams, AuthChallengePayload, AuthClientError, AuthClientErrorOptions, AuthClientOptions, AuthErrorExtra, AuthLogoutRedirectOptions, AuthMethod, AuthMethodType, AuthTokenData, AuthUser, BatchAddUsersToRoleParams, BatchSendNotificationByTypeParams, ChangeOrganizationAccountPasswordParams, ChangeUserRoleParams, ConnectorCallParams, ConnectorInvokeParams, ConnectorInvokeResult, ConnectorRequestBodyType, ConnectorResponseType, CreateApiPermissionParams, CreateFormPermissionGroupDto, CreateOrganizationAccountParams, CreateOrganizationDepartmentParams, CreatePagePermissionGroupDto, CreateRoleParams, CreateUiPermissionParams, CreateUserParams, CurrentUserDepartmentParents, CustomPageEntryConfig, CustomPageEntryMode, DataManagementConfigParams, DataManagementFilterState, DataPermissionConditionDto, DataPermissionDto, DataPermissionRuleDto, DataViewQueryParams, DataViewQueryResult, DataViewStatsParams, DingTalkLoginInput, DingTalkNotificationCapabilities, DingTalkNotificationCardConfig, DingTalkNotificationCardField, DingTalkNotificationCardMode, DingTalkNotificationCardPreview, DingTalkNotificationChannelConfig, DingTalkNotificationDeliveryMode, DingTalkNotificationPreviewResult, ExecuteProcessOperationInput, FieldAccessLevel, FieldAccessPolicyDto, FieldAccessPolicyItemDto, FieldOptionValue, FieldPermissionDto, FindNotificationConfigParams, FormAdvancedSearchParams, FormChangeRecordParams, FormCreateParams, FormCreateResult, FormDetailResult, FormExportParams, FormFieldValue, FormGetDetailParams, FormImportParams, FormInstanceIdentifierResult, FormPermissionGroup, FormRemoveParams, FormSearchParams, FormUpdateParams, FormUpdateResult, FunctionInvokeParams, FunctionInvokeResult, GetParentDepartmentsOptions, GetProcessInstanceParams, GetUserRolesParams, GuestLoginInput, ImportExportRecordDownloadParams, ImportExportRecordQuery, InitiatorApproverSelector, InstanceStatus, ListNotificationInboxParams, ListWorkCenterItemsParams, LoginLogGetParams, LoginLogListParams, LoginLogRecord, LoginLogStats, LoginLogStatsParams, LoginLogStatus, LoginMethodsResult, LoginPage, LoginPageProps, MarkAllNotificationReadResult, NotificationChannel, NotificationChannelConfig, NotificationChannelsConfig, NotificationConfigLevel, NotificationInboxListResult, NotificationInboxMessage, NotificationInboxReadStatus, NotificationMessageRecord, NotificationTemplate, NotificationTemplatePreview, NotificationTypeConfig, NotificationUnreadCountResult, OpenXiangdaPageProvider, OpenXiangdaPageProviderProps, OpenXiangdaProvider, OpenXiangdaProviderProps, OrganizationAccountListParams, OrganizationCapabilities, OrganizationListResult, PageApiPermissionRecord, PageApiResponse, PageAppInfo, PageBinaryResponse, PageDataManagementConfig, PageDataSourceDescriptor, PageDepartmentInfo, PageDepartmentRecord, PageHttpMethod, PageListResult, PageMessageApi, PageModalApi, PageNavigationApi, PageOffsetListResult, PagePermissionGroup, PagePermissionInfo, PageProvider, PageQueryValue, PageRequestOptions, PageRoleRecord, PageRouteInfo, PageScope, PageSdk, PageSdkError, PageSdkMeta, PageTransportDownloadPayload, PageTransportRequestPayload, PageUiPermissionRecord, PageUiPermissionType, PageUserInfo, PageUserRecord, PageUserType, PasswordLoginInput, PermissionBoundary, PermissionBoundaryFallback, PermissionBoundaryFallbackState, PermissionBoundaryProps, PhoneCodeInput, PhoneCodeLoginInput, PhoneCodeRegisterInput, PhoneCodeSendResult, PreviewDingTalkNotificationParams, PreviewNotificationTemplateParams, ProcessActionBar, ProcessActionBarProps, ProcessApproveAction, ProcessCapabilities, ProcessCapabilityOperation, ProcessInstanceLookupParams, ProcessPreviewPanel, ProcessPreviewPanelProps, ProcessTimeline, ProcessTimelineProps, PublicAccessClaim, PublicAccessClient, PublicAccessClientError, PublicAccessClientOptions, PublicAccessGate, PublicAccessGateProps, PublicAccessSessionData, PublicAccessSessionInput, QueryFormPermissionGroupDto, QueryPagePermissionGroupDto, RefreshInput, ResetOrganizationAccountPasswordParams, ResolveLoginUrlInput, ResolveProcessCapabilitiesParams, RoleListParams, RoleUsersParams, RouteAccessResult, RuntimeBootstrap, RuntimeErrorSnapshot, RuntimeErrorType, RuntimeLogoutOptions, RuntimeMenuItem, RuntimePagePermissions, RuntimeRedirectLoginOptions, RuntimeRequestError, RuntimeRequestState, RuntimeResolveLoginOptions, SaveDataManagementConfigParams, SearchComponentName, SearchExpression, SearchFieldKey, SearchGroup, SearchLogic, SearchOperator, SearchRule, SearchSortItem, SearchSystemField, SendNotificationByTypeParams, SendNotificationResult, SsoLoginUrlInput, SsoLoginUrlResult, SubFormRule, SwitchAppRoleParams, SwitchPlatformRoleParams, TerminateProcessInstanceParams, TriggerCallbackTaskParams, UiPermissionListParams, UpdateApiPermissionParams, UpdateFormPermissionGroupDto, UpdateOrganizationAccountParams, UpdateOrganizationDepartmentParams, UpdatePagePermissionGroupDto, UpdateRoleParams, UpdateUiPermissionParams, UpdateUserParams, UseAuthOptions, UseCanAccessRouteInput, UseLoginMethodsState, UseProcessActionsOptions, UseProcessActionsReturn, UseProcessCapabilitiesOptions, UseProcessCapabilitiesReturn, UsePublicAccessOptions, UsePublicAccessState, UserListParams, UserMenuPermissionsResponse, ValidateUserParams, ViewFieldPermissionValue, ViewOperationPermission, ViewPermissionSummary, WorkCenterBoxType, WorkCenterGroupedStat, WorkCenterItem, WorkCenterListResult, WorkCenterStats, WorkCenterStatsParams, WorkflowApproveParams, WorkflowCapabilityActionKey, WorkflowDefinitionByFormParams, WorkflowInitiatorSelectCandidatesParams, WorkflowInitiatorSelectRequirementsParams, WorkflowPreviewParams, WorkflowResubmitInitiatorSelectRequirementsParams, WorkflowResubmitParams, WorkflowReturnParams, WorkflowSaveTaskParams, WorkflowStartFromExistingInstanceParams, WorkflowTaskParams, WorkflowTransferParams, WorkflowWithdrawParams, createAuthClient, createPageSdk, createPublicAccessClient, createReactPage, getAuthErrorExtra, getAuthErrorReason, isAuthChallengeRequired, isAuthClientError, useAppMenus, useAuth, useCanAccessRoute, useCurrentUser, useDataSource, useFormViewPermissions, useLoginMethods, useMessage, useModal, useNavigation, useOpenXiangda, usePageContext, usePageProps, usePageRoute, usePageSdk, usePermission, useProcessActions, useProcessCapabilities, usePublicAccess, useRuntimeAuth, useRuntimeBootstrap } from './react.js';
|
|
3
3
|
import React__default from 'react';
|
|
4
|
-
import { F as FormSchema, a as FormRuntimeApi, b as FormRuntimeApiConfig, c as FieldDefinition } from '../ProcessPreview-
|
|
4
|
+
import { F as FormSchema, a as FormRuntimeApi, b as FormRuntimeApiConfig, c as FieldDefinition } from '../ProcessPreview-CZJP8n3e.js';
|
|
5
5
|
|
|
6
6
|
type RuntimeCssIsolation = "none" | "namespace" | "shadow";
|
|
7
7
|
interface RuntimeHostBootstrap {
|
|
@@ -2809,7 +2809,27 @@ var useDataSource = (name, options = {}) => {
|
|
|
2809
2809
|
import { useCallback as useCallback2, useEffect as useEffect2, useMemo as useMemo3, useState as useState2 } from "react";
|
|
2810
2810
|
var EMPTY_SUMMARY = {
|
|
2811
2811
|
fieldPermissions: {},
|
|
2812
|
-
operations: []
|
|
2812
|
+
operations: [],
|
|
2813
|
+
actions: []
|
|
2814
|
+
};
|
|
2815
|
+
var normalizeSummary = (summary) => {
|
|
2816
|
+
const actions = Array.from(
|
|
2817
|
+
/* @__PURE__ */ new Set([...summary?.actions || [], ...summary?.operations || []])
|
|
2818
|
+
);
|
|
2819
|
+
const can = actions.reduce(
|
|
2820
|
+
(result, operation) => {
|
|
2821
|
+
result[operation] = Boolean(summary?.can?.[operation] ?? true);
|
|
2822
|
+
return result;
|
|
2823
|
+
},
|
|
2824
|
+
{}
|
|
2825
|
+
);
|
|
2826
|
+
return {
|
|
2827
|
+
...summary,
|
|
2828
|
+
fieldPermissions: summary?.fieldPermissions || {},
|
|
2829
|
+
operations: actions,
|
|
2830
|
+
actions,
|
|
2831
|
+
can
|
|
2832
|
+
};
|
|
2813
2833
|
};
|
|
2814
2834
|
var toError = (error) => {
|
|
2815
2835
|
if (error instanceof Error) {
|
|
@@ -2843,10 +2863,7 @@ var useFormViewPermissions = (formUuid, options = {}) => {
|
|
|
2843
2863
|
});
|
|
2844
2864
|
const nextSummary = nextResponse.result || EMPTY_SUMMARY;
|
|
2845
2865
|
setResponse(nextResponse);
|
|
2846
|
-
setSummary(
|
|
2847
|
-
fieldPermissions: nextSummary.fieldPermissions || {},
|
|
2848
|
-
operations: nextSummary.operations || []
|
|
2849
|
-
});
|
|
2866
|
+
setSummary(normalizeSummary(nextSummary));
|
|
2850
2867
|
return nextResponse;
|
|
2851
2868
|
} catch (requestError) {
|
|
2852
2869
|
const nextError = toError(requestError);
|
|
@@ -2865,12 +2882,12 @@ var useFormViewPermissions = (formUuid, options = {}) => {
|
|
|
2865
2882
|
void refresh();
|
|
2866
2883
|
}, [immediate, refresh]);
|
|
2867
2884
|
const operationSet = useMemo3(
|
|
2868
|
-
() => new Set(summary.operations),
|
|
2869
|
-
[summary.operations]
|
|
2885
|
+
() => new Set(summary.actions || summary.operations),
|
|
2886
|
+
[summary.actions, summary.operations]
|
|
2870
2887
|
);
|
|
2871
2888
|
const can = useCallback2(
|
|
2872
|
-
(operation) => operationSet.has(operation),
|
|
2873
|
-
[operationSet]
|
|
2889
|
+
(operation) => Boolean(summary.can?.[operation] ?? operationSet.has(operation)),
|
|
2890
|
+
[operationSet, summary.can]
|
|
2874
2891
|
);
|
|
2875
2892
|
const getFieldPermission = useCallback2(
|
|
2876
2893
|
(fieldName) => summary.fieldPermissions[fieldName] || null,
|
|
@@ -21519,6 +21536,16 @@ var StandardFormPage = ({
|
|
|
21519
21536
|
};
|
|
21520
21537
|
|
|
21521
21538
|
// packages/sdk/src/components/core/dataManagementApi.ts
|
|
21539
|
+
var FORM_ACTION_PERMISSIONS = [
|
|
21540
|
+
"view",
|
|
21541
|
+
"create",
|
|
21542
|
+
"edit",
|
|
21543
|
+
"delete",
|
|
21544
|
+
"export",
|
|
21545
|
+
"import",
|
|
21546
|
+
"change_records",
|
|
21547
|
+
"workflow"
|
|
21548
|
+
];
|
|
21522
21549
|
var unwrap = (response) => {
|
|
21523
21550
|
if (response instanceof Blob) return response;
|
|
21524
21551
|
if (response?.data?.result !== void 0) return response.data.result;
|
|
@@ -21527,6 +21554,24 @@ var unwrap = (response) => {
|
|
|
21527
21554
|
return response;
|
|
21528
21555
|
};
|
|
21529
21556
|
var pickData = (value) => value?.data ?? value?.result ?? value;
|
|
21557
|
+
var normalizeActionSummary = (value) => {
|
|
21558
|
+
const raw = pickData(value) || {};
|
|
21559
|
+
const actions = Array.from(
|
|
21560
|
+
/* @__PURE__ */ new Set([...raw.actions || [], ...raw.operations || []])
|
|
21561
|
+
).filter(
|
|
21562
|
+
(action) => FORM_ACTION_PERMISSIONS.includes(action)
|
|
21563
|
+
);
|
|
21564
|
+
const can = FORM_ACTION_PERMISSIONS.reduce((result, action) => {
|
|
21565
|
+
result[action] = Boolean(raw.can?.[action] ?? actions.includes(action));
|
|
21566
|
+
return result;
|
|
21567
|
+
}, {});
|
|
21568
|
+
return {
|
|
21569
|
+
...raw,
|
|
21570
|
+
actions,
|
|
21571
|
+
operations: actions,
|
|
21572
|
+
can
|
|
21573
|
+
};
|
|
21574
|
+
};
|
|
21530
21575
|
var normalizeComponentName = (field) => field?.componentName || field?.component_name || field?.component_type || field?.componentType || field?.type || "TextField";
|
|
21531
21576
|
var normalizeField = (key, field, system = false) => ({
|
|
21532
21577
|
...field,
|
|
@@ -21778,6 +21823,14 @@ async function getDataManagementConfig(request, options) {
|
|
|
21778
21823
|
});
|
|
21779
21824
|
return unwrap(response);
|
|
21780
21825
|
}
|
|
21826
|
+
async function getDataManagementActionSummary(request, params) {
|
|
21827
|
+
const response = await request({
|
|
21828
|
+
url: "/permission/form-group/view-permissions",
|
|
21829
|
+
method: "get",
|
|
21830
|
+
params
|
|
21831
|
+
});
|
|
21832
|
+
return normalizeActionSummary(response);
|
|
21833
|
+
}
|
|
21781
21834
|
async function saveDataManagementConfig(request, options) {
|
|
21782
21835
|
const targetFormUuid = options.menuFormUuid || options.formUuid;
|
|
21783
21836
|
const personal = options.scope === "personal";
|
|
@@ -22838,7 +22891,9 @@ var DataManagementList = ({
|
|
|
22838
22891
|
requestOverride,
|
|
22839
22892
|
allowSchemaFallback = false,
|
|
22840
22893
|
rowActions = [],
|
|
22841
|
-
maxVisibleRowActions
|
|
22894
|
+
maxVisibleRowActions,
|
|
22895
|
+
permissionMode = "auto",
|
|
22896
|
+
actionOverrides
|
|
22842
22897
|
}) => {
|
|
22843
22898
|
const rootRef = useRef22(null);
|
|
22844
22899
|
const api = useMemo36(() => {
|
|
@@ -22889,6 +22944,9 @@ var DataManagementList = ({
|
|
|
22889
22944
|
const [activeRecord, setActiveRecord] = useState41(null);
|
|
22890
22945
|
const [detailOpen, setDetailOpen] = useState41(false);
|
|
22891
22946
|
const [submitOpen, setSubmitOpen] = useState41(false);
|
|
22947
|
+
const [actionSummary, setActionSummary] = useState41(null);
|
|
22948
|
+
const [permissionLoading, setPermissionLoading] = useState41(permissionMode === "auto");
|
|
22949
|
+
const [permissionError, setPermissionError] = useState41(null);
|
|
22892
22950
|
const fetchStateRef = useRef22({});
|
|
22893
22951
|
const isProcessForm = isProcessFormType(formType);
|
|
22894
22952
|
const request = api.request;
|
|
@@ -22904,6 +22962,67 @@ var DataManagementList = ({
|
|
|
22904
22962
|
const confirmDanger = useCallback26((title2, content, onOk) => {
|
|
22905
22963
|
if (confirmAction(title2, content)) onOk();
|
|
22906
22964
|
}, []);
|
|
22965
|
+
useEffect49(() => {
|
|
22966
|
+
let mounted = true;
|
|
22967
|
+
if (permissionMode !== "auto") {
|
|
22968
|
+
setActionSummary(null);
|
|
22969
|
+
setPermissionLoading(false);
|
|
22970
|
+
setPermissionError(null);
|
|
22971
|
+
return () => {
|
|
22972
|
+
mounted = false;
|
|
22973
|
+
};
|
|
22974
|
+
}
|
|
22975
|
+
if (!appType || !formUuid) return void 0;
|
|
22976
|
+
setPermissionLoading(true);
|
|
22977
|
+
setPermissionError(null);
|
|
22978
|
+
getDataManagementActionSummary(request, { appType, formUuid }).then((summary) => {
|
|
22979
|
+
if (!mounted) return;
|
|
22980
|
+
setActionSummary(summary);
|
|
22981
|
+
}).catch((error) => {
|
|
22982
|
+
if (!mounted) return;
|
|
22983
|
+
setActionSummary(null);
|
|
22984
|
+
setPermissionError(error instanceof Error ? error : new Error(String(error)));
|
|
22985
|
+
}).finally(() => {
|
|
22986
|
+
if (mounted) setPermissionLoading(false);
|
|
22987
|
+
});
|
|
22988
|
+
return () => {
|
|
22989
|
+
mounted = false;
|
|
22990
|
+
};
|
|
22991
|
+
}, [appType, formUuid, permissionMode, request]);
|
|
22992
|
+
const baseActionCan = useMemo36(() => {
|
|
22993
|
+
if (permissionMode === "auto") {
|
|
22994
|
+
return FORM_ACTION_PERMISSIONS.reduce((result, action) => {
|
|
22995
|
+
result[action] = Boolean(actionSummary?.can?.[action]);
|
|
22996
|
+
return result;
|
|
22997
|
+
}, {});
|
|
22998
|
+
}
|
|
22999
|
+
return FORM_ACTION_PERMISSIONS.reduce((result, action) => {
|
|
23000
|
+
result[action] = true;
|
|
23001
|
+
return result;
|
|
23002
|
+
}, {});
|
|
23003
|
+
}, [actionSummary?.can, permissionMode]);
|
|
23004
|
+
const canAction = useCallback26(
|
|
23005
|
+
(action) => {
|
|
23006
|
+
if (permissionLoading && permissionMode === "auto") return false;
|
|
23007
|
+
if (permissionError && permissionMode === "auto") return action === "view";
|
|
23008
|
+
let allowed = permissionMode === "off" ? true : Boolean(baseActionCan[action]);
|
|
23009
|
+
if (permissionMode === "auto") {
|
|
23010
|
+
allowed = allowed && actionOverrides?.[action] !== false;
|
|
23011
|
+
} else if (actionOverrides?.[action] === false) {
|
|
23012
|
+
allowed = false;
|
|
23013
|
+
}
|
|
23014
|
+
if (readonly && ["create", "edit", "delete", "import"].includes(action)) {
|
|
23015
|
+
return false;
|
|
23016
|
+
}
|
|
23017
|
+
return allowed;
|
|
23018
|
+
},
|
|
23019
|
+
[actionOverrides, baseActionCan, permissionError, permissionLoading, permissionMode, readonly]
|
|
23020
|
+
);
|
|
23021
|
+
const canCreate = canAction("create");
|
|
23022
|
+
const canDelete = canAction("delete");
|
|
23023
|
+
const canExport = canAction("export");
|
|
23024
|
+
const canImport = canAction("import");
|
|
23025
|
+
const canWorkflow = canAction("workflow");
|
|
22907
23026
|
const visibleFields = useMemo36(
|
|
22908
23027
|
() => showFields.map((fieldId) => fields.find((field) => field.fieldId === fieldId)).filter(Boolean),
|
|
22909
23028
|
[fields, showFields]
|
|
@@ -23147,11 +23266,15 @@ var DataManagementList = ({
|
|
|
23147
23266
|
const handleDelete = useCallback26(
|
|
23148
23267
|
async (ids) => {
|
|
23149
23268
|
if (ids.length === 0) return;
|
|
23269
|
+
if (!canDelete) {
|
|
23270
|
+
message6.error("\u65E0\u6743\u9650\u5220\u9664\u6570\u636E");
|
|
23271
|
+
return;
|
|
23272
|
+
}
|
|
23150
23273
|
await deleteDataManagementRows(request, { appType, formUuid, formInstanceIds: ids });
|
|
23151
23274
|
setSelectedRowKeys([]);
|
|
23152
23275
|
await loadData({ current, pageSize });
|
|
23153
23276
|
},
|
|
23154
|
-
[appType, current, formUuid, loadData, pageSize, request]
|
|
23277
|
+
[appType, canDelete, current, formUuid, loadData, pageSize, request]
|
|
23155
23278
|
);
|
|
23156
23279
|
const getSelectedRecordIds = useCallback26(
|
|
23157
23280
|
() => selectedRowKeys.map((key) => {
|
|
@@ -23191,6 +23314,10 @@ var DataManagementList = ({
|
|
|
23191
23314
|
}
|
|
23192
23315
|
};
|
|
23193
23316
|
const handleExport = async (scope) => {
|
|
23317
|
+
if (!canExport) {
|
|
23318
|
+
message6.error("\u65E0\u6743\u9650\u5BFC\u51FA\u6570\u636E");
|
|
23319
|
+
return;
|
|
23320
|
+
}
|
|
23194
23321
|
const selectedIds = scope === "selected" ? getSelectedRecordIds() : [];
|
|
23195
23322
|
if (scope === "selected" && selectedIds.length === 0) {
|
|
23196
23323
|
message6.warning("\u8BF7\u5148\u9009\u62E9\u8981\u5BFC\u51FA\u7684\u8BB0\u5F55");
|
|
@@ -23229,6 +23356,10 @@ var DataManagementList = ({
|
|
|
23229
23356
|
}
|
|
23230
23357
|
};
|
|
23231
23358
|
const handleDownloadTemplate = async () => {
|
|
23359
|
+
if (!canImport) {
|
|
23360
|
+
message6.error("\u65E0\u6743\u9650\u5BFC\u5165\u6570\u636E");
|
|
23361
|
+
return;
|
|
23362
|
+
}
|
|
23232
23363
|
setTemplateDownloading(true);
|
|
23233
23364
|
try {
|
|
23234
23365
|
const response = await downloadDataManagementImportTemplate(request, { appType, formUuid });
|
|
@@ -23242,6 +23373,8 @@ var DataManagementList = ({
|
|
|
23242
23373
|
}
|
|
23243
23374
|
};
|
|
23244
23375
|
const loadTransferRecords = async (type) => {
|
|
23376
|
+
if (type === "import" && !canImport) return;
|
|
23377
|
+
if (type === "export" && !canExport) return;
|
|
23245
23378
|
setRecordTab(type);
|
|
23246
23379
|
setRecordsOpen(true);
|
|
23247
23380
|
const result = await getDataManagementTransferRecords(request, {
|
|
@@ -23254,6 +23387,10 @@ var DataManagementList = ({
|
|
|
23254
23387
|
setTransferRecords(result.records);
|
|
23255
23388
|
};
|
|
23256
23389
|
const handleImportPreview = async (file) => {
|
|
23390
|
+
if (!canImport) {
|
|
23391
|
+
message6.error("\u65E0\u6743\u9650\u5BFC\u5165\u6570\u636E");
|
|
23392
|
+
return Upload3.LIST_IGNORE;
|
|
23393
|
+
}
|
|
23257
23394
|
const base64 = await fileToBase64(file);
|
|
23258
23395
|
setImportBase64(base64);
|
|
23259
23396
|
const result = await importPreviewDataManagementRows(request, {
|
|
@@ -23267,6 +23404,10 @@ var DataManagementList = ({
|
|
|
23267
23404
|
};
|
|
23268
23405
|
const handleImportConfirm = async () => {
|
|
23269
23406
|
if (!importBase64) return;
|
|
23407
|
+
if (!canImport) {
|
|
23408
|
+
message6.error("\u65E0\u6743\u9650\u5BFC\u5165\u6570\u636E");
|
|
23409
|
+
return;
|
|
23410
|
+
}
|
|
23270
23411
|
await importDataManagementRows(request, { appType, formUuid, fileBase64: importBase64 });
|
|
23271
23412
|
message6.success("\u5BFC\u5165\u4EFB\u52A1\u5DF2\u521B\u5EFA");
|
|
23272
23413
|
setImportOpen(false);
|
|
@@ -23275,7 +23416,7 @@ var DataManagementList = ({
|
|
|
23275
23416
|
await loadData({ current: 1, pageSize });
|
|
23276
23417
|
};
|
|
23277
23418
|
const visibleRowActionLimit = normalizeMaxVisibleRowActions(maxVisibleRowActions);
|
|
23278
|
-
const rowActionCount = 1 + rowActions.length + (
|
|
23419
|
+
const rowActionCount = 1 + rowActions.filter((action) => !action.requiredAction || canAction(action.requiredAction)).length + (canDelete ? 1 : 0) + (isProcessForm && canWorkflow ? 1 : 0);
|
|
23279
23420
|
const actionColumnWidth = Math.max(
|
|
23280
23421
|
ACTION_COLUMN_MIN_WIDTH,
|
|
23281
23422
|
Math.min(rowActionCount, visibleRowActionLimit) * ACTION_BUTTON_ESTIMATED_WIDTH + (rowActionCount > visibleRowActionLimit ? ACTION_MORE_BUTTON_WIDTH : 0) + ACTION_COLUMN_HORIZONTAL_PADDING
|
|
@@ -23315,13 +23456,13 @@ var DataManagementList = ({
|
|
|
23315
23456
|
label: "\u8BE6\u60C5",
|
|
23316
23457
|
onClick: () => handleDetail(record)
|
|
23317
23458
|
},
|
|
23318
|
-
...rowActions.map((action) => ({
|
|
23459
|
+
...rowActions.filter((action) => !action.requiredAction || canAction(action.requiredAction)).map((action) => ({
|
|
23319
23460
|
key: action.key,
|
|
23320
23461
|
label: action.label,
|
|
23321
23462
|
danger: action.danger,
|
|
23322
23463
|
onClick: () => action.onClick(record)
|
|
23323
23464
|
})),
|
|
23324
|
-
|
|
23465
|
+
...canDelete ? [
|
|
23325
23466
|
{
|
|
23326
23467
|
key: "delete",
|
|
23327
23468
|
label: "\u5220\u9664",
|
|
@@ -23334,7 +23475,7 @@ var DataManagementList = ({
|
|
|
23334
23475
|
)
|
|
23335
23476
|
}
|
|
23336
23477
|
] : [],
|
|
23337
|
-
...isProcessForm ? [
|
|
23478
|
+
...isProcessForm && canWorkflow ? [
|
|
23338
23479
|
{
|
|
23339
23480
|
key: "workflow",
|
|
23340
23481
|
label: "\u6D41\u7A0B\u65E5\u5FD7",
|
|
@@ -23395,7 +23536,9 @@ var DataManagementList = ({
|
|
|
23395
23536
|
handleDetail,
|
|
23396
23537
|
isProcessForm,
|
|
23397
23538
|
lockFieldIds,
|
|
23398
|
-
|
|
23539
|
+
canAction,
|
|
23540
|
+
canDelete,
|
|
23541
|
+
canWorkflow,
|
|
23399
23542
|
rowActions,
|
|
23400
23543
|
updateColumnWidth,
|
|
23401
23544
|
visibleRowActionLimit,
|
|
@@ -23435,7 +23578,7 @@ var DataManagementList = ({
|
|
|
23435
23578
|
/* @__PURE__ */ jsxs50("div", { className: "mx-auto flex min-h-0 w-full max-w-[1440px] flex-col px-4 py-4 md:px-6", children: [
|
|
23436
23579
|
title && /* @__PURE__ */ jsx100("div", { className: "mb-4", children: /* @__PURE__ */ jsx100("h2", { className: "m-0 text-xl font-semibold text-ant-color-text", children: title }) }),
|
|
23437
23580
|
/* @__PURE__ */ jsx100("div", { className: "mb-4 flex flex-col gap-3 md:flex-row md:items-center", children: /* @__PURE__ */ jsxs50(Space10, { wrap: true, children: [
|
|
23438
|
-
|
|
23581
|
+
canCreate && (submitRenderer || runtimeFormSchema) && /* @__PURE__ */ jsx100(Button15, { icon: /* @__PURE__ */ jsx100(PlusOutlined2, {}), type: "primary", onClick: () => setSubmitOpen(true), children: "\u65B0\u589E" }),
|
|
23439
23582
|
/* @__PURE__ */ jsx100(
|
|
23440
23583
|
Input15.Search,
|
|
23441
23584
|
{
|
|
@@ -23461,7 +23604,7 @@ var DataManagementList = ({
|
|
|
23461
23604
|
),
|
|
23462
23605
|
/* @__PURE__ */ jsx100(Button15, { icon: /* @__PURE__ */ jsx100(FilterOutlined, {}), onClick: () => setFilterOpen(true), children: "\u7B5B\u9009" }),
|
|
23463
23606
|
/* @__PURE__ */ jsx100(Button15, { icon: /* @__PURE__ */ jsx100(SettingOutlined, {}), onClick: () => setColumnOpen(true), children: "\u5217\u8BBE\u7F6E" }),
|
|
23464
|
-
/* @__PURE__ */ jsx100(
|
|
23607
|
+
canExport && /* @__PURE__ */ jsx100(
|
|
23465
23608
|
Dropdown2,
|
|
23466
23609
|
{
|
|
23467
23610
|
getPopupContainer,
|
|
@@ -23486,7 +23629,7 @@ var DataManagementList = ({
|
|
|
23486
23629
|
children: /* @__PURE__ */ jsx100(Button15, { icon: /* @__PURE__ */ jsx100(DownloadOutlined2, {}), children: "\u5BFC\u51FA" })
|
|
23487
23630
|
}
|
|
23488
23631
|
),
|
|
23489
|
-
|
|
23632
|
+
canImport && /* @__PURE__ */ jsx100(
|
|
23490
23633
|
Dropdown2,
|
|
23491
23634
|
{
|
|
23492
23635
|
getPopupContainer,
|
|
@@ -23512,7 +23655,7 @@ var DataManagementList = ({
|
|
|
23512
23655
|
" \u6761"
|
|
23513
23656
|
] }),
|
|
23514
23657
|
/* @__PURE__ */ jsxs50(Space10, { wrap: true, children: [
|
|
23515
|
-
/* @__PURE__ */ jsx100(
|
|
23658
|
+
canExport && /* @__PURE__ */ jsx100(
|
|
23516
23659
|
Button15,
|
|
23517
23660
|
{
|
|
23518
23661
|
icon: /* @__PURE__ */ jsx100(DownloadOutlined2, {}),
|
|
@@ -23524,8 +23667,8 @@ var DataManagementList = ({
|
|
|
23524
23667
|
children: "\u5BFC\u51FA\u9009\u4E2D"
|
|
23525
23668
|
}
|
|
23526
23669
|
),
|
|
23527
|
-
|
|
23528
|
-
|
|
23670
|
+
isProcessForm && canWorkflow && /* @__PURE__ */ jsx100(Button15, { icon: /* @__PURE__ */ jsx100(SwapOutlined3, {}), onClick: handleBatchApprove, children: "\u6279\u91CF\u5BA1\u6279" }),
|
|
23671
|
+
canDelete && /* @__PURE__ */ jsx100(
|
|
23529
23672
|
Button15,
|
|
23530
23673
|
{
|
|
23531
23674
|
danger: true,
|
|
@@ -23830,7 +23973,7 @@ var DataManagementList = ({
|
|
|
23830
23973
|
width: 720,
|
|
23831
23974
|
onCancel: () => setImportOpen(false),
|
|
23832
23975
|
onOk: handleImportConfirm,
|
|
23833
|
-
okButtonProps: { disabled: !importBase64 },
|
|
23976
|
+
okButtonProps: { disabled: !importBase64 || !canImport },
|
|
23834
23977
|
okText: "\u786E\u8BA4\u5BFC\u5165",
|
|
23835
23978
|
children: [
|
|
23836
23979
|
/* @__PURE__ */ jsxs50("div", { className: "mb-3 flex flex-col gap-3 rounded-lg border border-ant-border-secondary bg-ant-bg-container px-4 py-3 md:flex-row md:items-center md:justify-between", children: [
|
|
@@ -23843,6 +23986,7 @@ var DataManagementList = ({
|
|
|
23843
23986
|
{
|
|
23844
23987
|
icon: /* @__PURE__ */ jsx100(DownloadOutlined2, {}),
|
|
23845
23988
|
loading: templateDownloading,
|
|
23989
|
+
disabled: !canImport,
|
|
23846
23990
|
onClick: handleDownloadTemplate,
|
|
23847
23991
|
children: "\u4E0B\u8F7D\u5BFC\u5165\u6A21\u677F"
|
|
23848
23992
|
}
|
|
@@ -23893,8 +24037,8 @@ var DataManagementList = ({
|
|
|
23893
24037
|
{
|
|
23894
24038
|
value: recordTab,
|
|
23895
24039
|
options: [
|
|
23896
|
-
{ label: "\u5BFC\u5165\u8BB0\u5F55", value: "import" },
|
|
23897
|
-
{ label: "\u5BFC\u51FA\u8BB0\u5F55", value: "export" }
|
|
24040
|
+
...canImport ? [{ label: "\u5BFC\u5165\u8BB0\u5F55", value: "import" }] : [],
|
|
24041
|
+
...canExport ? [{ label: "\u5BFC\u51FA\u8BB0\u5F55", value: "export" }] : []
|
|
23898
24042
|
],
|
|
23899
24043
|
onChange: (value) => loadTransferRecords(value)
|
|
23900
24044
|
}
|