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.
Files changed (28) hide show
  1. package/lib/cli.js +687 -5
  2. package/lib/design-gates.js +16 -3
  3. package/openxiangda-skills/references/best-practices.md +18 -7
  4. package/openxiangda-skills/references/component-guide.md +7 -1
  5. package/openxiangda-skills/references/permission-design-patterns.md +95 -5
  6. package/openxiangda-skills/references/permissions-settings.md +165 -0
  7. package/openxiangda-skills/references/resource-manifest-cheatsheet.md +87 -0
  8. package/package.json +1 -1
  9. package/packages/sdk/dist/{ProcessPreview-Ci8_UsbN.d.mts → ProcessPreview-CZJP8n3e.d.mts} +6 -0
  10. package/packages/sdk/dist/{ProcessPreview-Ci8_UsbN.d.ts → ProcessPreview-CZJP8n3e.d.ts} +6 -0
  11. package/packages/sdk/dist/components/index.cjs +143 -16
  12. package/packages/sdk/dist/components/index.cjs.map +1 -1
  13. package/packages/sdk/dist/components/index.d.mts +8 -2
  14. package/packages/sdk/dist/components/index.d.ts +8 -2
  15. package/packages/sdk/dist/components/index.mjs +143 -16
  16. package/packages/sdk/dist/components/index.mjs.map +1 -1
  17. package/packages/sdk/dist/runtime/index.cjs +169 -25
  18. package/packages/sdk/dist/runtime/index.cjs.map +1 -1
  19. package/packages/sdk/dist/runtime/index.d.mts +1 -1
  20. package/packages/sdk/dist/runtime/index.d.ts +1 -1
  21. package/packages/sdk/dist/runtime/index.mjs +169 -25
  22. package/packages/sdk/dist/runtime/index.mjs.map +1 -1
  23. package/packages/sdk/dist/runtime/react.cjs +26 -9
  24. package/packages/sdk/dist/runtime/react.cjs.map +1 -1
  25. package/packages/sdk/dist/runtime/react.d.mts +13 -3
  26. package/packages/sdk/dist/runtime/react.d.ts +13 -3
  27. package/packages/sdk/dist/runtime/react.mjs +26 -9
  28. 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-Ci8_UsbN.mjs';
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-Ci8_UsbN.js';
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 + (readonly ? 0 : 1) + (isProcessForm ? 1 : 0);
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
- ...!readonly ? [
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
- readonly,
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
- !readonly && (submitRenderer || runtimeFormSchema) && /* @__PURE__ */ jsx100(Button15, { icon: /* @__PURE__ */ jsx100(PlusOutlined2, {}), type: "primary", onClick: () => setSubmitOpen(true), children: "\u65B0\u589E" }),
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
- !readonly && /* @__PURE__ */ jsx100(
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
- !readonly && isProcessForm && /* @__PURE__ */ jsx100(Button15, { icon: /* @__PURE__ */ jsx100(SwapOutlined3, {}), onClick: handleBatchApprove, children: "\u6279\u91CF\u5BA1\u6279" }),
23528
- !readonly && /* @__PURE__ */ jsx100(
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
  }