From 6169a89a7eb6d5c4ffdcfd6ffb1b654aaa6ea2dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=92=8F=E5=92=8C?= Date: Tue, 12 Mar 2024 18:31:00 +0800 Subject: [PATCH 01/80] PullRequest: 366 bug fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'fix/dev-4.2.4-bugs-xyh-031202 of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.2.4 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/366 Signed-off-by: 晓康 * Fixes oceanbase/odc#1687 --- src/component/TooltipAction/index.tsx | 28 +++++++++++++++++ .../Database/AddDataBaseButton/index.tsx | 29 +++++++++-------- src/page/Project/Database/index.tsx | 5 +++ src/page/Project/User/index.tsx | 25 ++++++++++----- src/page/Project/index.tsx | 31 ++++++++++--------- 5 files changed, 81 insertions(+), 37 deletions(-) create mode 100644 src/component/TooltipAction/index.tsx diff --git a/src/component/TooltipAction/index.tsx b/src/component/TooltipAction/index.tsx new file mode 100644 index 000000000..aa75fb2e7 --- /dev/null +++ b/src/component/TooltipAction/index.tsx @@ -0,0 +1,28 @@ +/* + * Copyright 2023 OceanBase + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Tooltip } from 'antd'; + +interface IProps { + title?: string; + children?: React.ReactElement; +} + +const TooltipAction: React.FC = (props) => { + const { title = '', children } = props; + return title?.length ? {children} : children; +}; + +export default TooltipAction; diff --git a/src/page/Project/Database/AddDataBaseButton/index.tsx b/src/page/Project/Database/AddDataBaseButton/index.tsx index 9c90e9db6..93f9b51ae 100644 --- a/src/page/Project/Database/AddDataBaseButton/index.tsx +++ b/src/page/Project/Database/AddDataBaseButton/index.tsx @@ -18,6 +18,7 @@ import { getConnectionDetail, getConnectionList } from '@/common/network/connect import { listDatabases, updateDataBase } from '@/common/network/database'; import RiskLevelLabel from '@/component/RiskLevelLabel'; import ApplyDatabasePermissionButton from '@/component/Task/ApplyDatabasePermission/CreateButton'; +import TooltipAction from '@/component/TooltipAction'; import { formatMessage } from '@/util/intl'; import { useRequest } from 'ahooks'; import { useContext, useState } from 'react'; @@ -61,6 +62,10 @@ export default function AddDataBaseButton({ projectId, onSuccess }: IProps) { } = useRequest(listDatabases, { manual: true, }); + const disabledAction = + project?.currentUserResourceRoles?.filter((roles) => + [ProjectRole.DBA, ProjectRole.OWNER]?.includes(roles), + )?.length === 0; function close() { setOpen(false); form.resetFields(); @@ -85,21 +90,15 @@ export default function AddDataBaseButton({ projectId, onSuccess }: IProps) { return ( <> - + + + = ({ id }) => { handleMenuClick(TaskPageType.EXPORT, record.id); }} disabled={!hasExportAuth} + tooltip={!hasExportAuth ? '暂无权限' : ''} > { formatMessage({ @@ -306,6 +307,7 @@ const Database: React.FC = ({ id }) => { handleMenuClick(TaskPageType.IMPORT, record.id); }} disabled={!hasChangeAuth} + tooltip={!hasChangeAuth ? '暂无权限' : ''} > { formatMessage({ @@ -321,6 +323,7 @@ const Database: React.FC = ({ id }) => { handleMenuClick(TaskPageType.ASYNC, record.id); }} disabled={!hasChangeAuth} + tooltip={!hasChangeAuth ? '暂无权限' : ''} > { formatMessage({ @@ -335,6 +338,7 @@ const Database: React.FC = ({ id }) => { gotoSQLWorkspace(parseInt(id), record?.dataSource?.id, record?.id); }} disabled={!hasLoginAuth} + tooltip={!hasLoginAuth ? '暂无权限' : ''} > { formatMessage({ @@ -350,6 +354,7 @@ const Database: React.FC = ({ id }) => { setDatabase(record); }} disabled={!hasChangeAuth || disableTransfer} + tooltip={!hasChangeAuth || disableTransfer ? '暂无权限' : ''} > = ({ id, userStore }) => { return ( setAddUserModalVisiable(true)} disabled={!isOwner}> - { - formatMessage({ - id: 'odc.Project.User.AddMembers', - }) /*添加成员*/ - } - + + + } extra={ @@ -187,6 +190,7 @@ const User: React.FC = ({ id, userStore }) => { onClick={() => updateUser(record.id)} key={'export'} disabled={disabled} + tooltip={disabled ? '暂无权限' : ''} > { formatMessage({ @@ -201,7 +205,11 @@ const User: React.FC = ({ id, userStore }) => { })} /*确定删除该成员吗?*/ onConfirm={() => deleteUser(record.id)} > - + { formatMessage({ id: 'odc.Project.User.Remove', @@ -211,6 +219,7 @@ const User: React.FC = ({ id, userStore }) => { { showManageModal(record.id); }} diff --git a/src/page/Project/index.tsx b/src/page/Project/index.tsx index b95fe0f2c..d960ce302 100644 --- a/src/page/Project/index.tsx +++ b/src/page/Project/index.tsx @@ -15,6 +15,7 @@ */ import PageContainer, { TitleType } from '@/component/PageContainer'; +import TooltipAction from '@/component/TooltipAction'; import { formatMessage } from '@/util/intl'; import { Button, Menu, Space } from 'antd'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; @@ -54,20 +55,22 @@ const ExtraContent = ({ projectId }) => { return ( - + + + ); }; From e4fbbdbad75ee9c0b4f7111c64ce4d7dc1e93cb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=9C=9D=E4=BF=8A?= Date: Tue, 12 Mar 2024 18:32:13 +0800 Subject: [PATCH 02/80] PullRequest: 367 Fixes oceanbase/odc#1853 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'fix/dev-4.2.4-odc-1853 of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.2.4 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/367 Signed-off-by: 晓康 * Fixes oceanbase/odc#1853 --- src/page/Secure/Env/index.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/page/Secure/Env/index.tsx b/src/page/Secure/Env/index.tsx index 83063137b..c4d041c7e 100644 --- a/src/page/Secure/Env/index.tsx +++ b/src/page/Secure/Env/index.tsx @@ -99,6 +99,8 @@ const Environment = () => { const handleDeleteEnvironment = async () => { return Modal.confirm({ title: formatMessage({ id: 'src.page.Secure.Env.65EAAB75' }), //'确认删除该环境么?' + content: '删除后不可撤回', + centered: true, onCancel: () => {}, onOk: async () => { if (currentEnvironment?.builtIn) { From 47c94a82dc02c7bbeae0907bd17c4b009d60a038 Mon Sep 17 00:00:00 2001 From: xiaokang Date: Wed, 13 Mar 2024 12:34:16 +0800 Subject: [PATCH 03/80] fix: connection popup --- src/component/Manage/ResourceSelector/index.less | 5 ----- .../Content/List/ConnectionNameItem/index.less | 7 ------- .../components/FormRecordExportModal/index.less | 5 ----- .../ResourceTree/SelectPanel/Datasource/index.less | 12 +----------- .../SessionSelect/SessionDropdown/index.less | 8 -------- .../SessionContextWrap/SessionSelect/index.less | 8 -------- 6 files changed, 1 insertion(+), 44 deletions(-) diff --git a/src/component/Manage/ResourceSelector/index.less b/src/component/Manage/ResourceSelector/index.less index 4e7aafbbd..0b881a19f 100644 --- a/src/component/Manage/ResourceSelector/index.less +++ b/src/component/Manage/ResourceSelector/index.less @@ -6,11 +6,6 @@ .connectionPopover { padding: 0; - :global { - .ant-popover-inner-content { - padding: 0; - } - } } .labelName { diff --git a/src/page/Datasource/Datasource/Content/List/ConnectionNameItem/index.less b/src/page/Datasource/Datasource/Content/List/ConnectionNameItem/index.less index e5aedd81a..035f72236 100644 --- a/src/page/Datasource/Datasource/Content/List/ConnectionNameItem/index.less +++ b/src/page/Datasource/Datasource/Content/List/ConnectionNameItem/index.less @@ -3,13 +3,6 @@ font-size: 24px; } -.connectionPopover { - :global { - .ant-popover-inner-content { - padding: 0; - } - } -} .container { display: flex; align-items: center; diff --git a/src/page/Secure/components/FormRecordExportModal/index.less b/src/page/Secure/components/FormRecordExportModal/index.less index be73eeb3a..3c9396c77 100644 --- a/src/page/Secure/components/FormRecordExportModal/index.less +++ b/src/page/Secure/components/FormRecordExportModal/index.less @@ -12,11 +12,6 @@ .connectionPopover { padding: 0; - :global { - .ant-popover-inner-content { - padding: 0; - } - } } .labelName { diff --git a/src/page/Workspace/SideBar/ResourceTree/SelectPanel/Datasource/index.less b/src/page/Workspace/SideBar/ResourceTree/SelectPanel/Datasource/index.less index 07a068255..73057dfaf 100644 --- a/src/page/Workspace/SideBar/ResourceTree/SelectPanel/Datasource/index.less +++ b/src/page/Workspace/SideBar/ResourceTree/SelectPanel/Datasource/index.less @@ -21,14 +21,6 @@ } } -.connectionPopover { - :global { - .ant-popover-inner-content { - padding: 0; - } - } -} - .tree { :global { .ant-tree-list { @@ -85,11 +77,9 @@ font-size: 24px; } - - .fullWidthTitle { display: block; line-height: 24px; height: 100%; flex: 1; -} \ No newline at end of file +} diff --git a/src/page/Workspace/components/SessionContextWrap/SessionSelect/SessionDropdown/index.less b/src/page/Workspace/components/SessionContextWrap/SessionSelect/SessionDropdown/index.less index ef36be832..fd443c9b3 100644 --- a/src/page/Workspace/components/SessionContextWrap/SessionSelect/SessionDropdown/index.less +++ b/src/page/Workspace/components/SessionContextWrap/SessionSelect/SessionDropdown/index.less @@ -39,11 +39,3 @@ } } } - -.pop { - :global { - .ant-popover-inner-content { - width: 100%; - } - } -} diff --git a/src/page/Workspace/components/SessionContextWrap/SessionSelect/index.less b/src/page/Workspace/components/SessionContextWrap/SessionSelect/index.less index e5c3f761d..bc4e128b0 100644 --- a/src/page/Workspace/components/SessionContextWrap/SessionSelect/index.less +++ b/src/page/Workspace/components/SessionContextWrap/SessionSelect/index.less @@ -10,14 +10,6 @@ align-items: center; } -.pop { - :global { - .ant-popover-inner-content { - padding: 0px; - } - } -} - .link { cursor: pointer; &:hover { From 6ec67829907505a8fb96f20ded09caa904459a4e Mon Sep 17 00:00:00 2001 From: xiaokang Date: Wed, 13 Mar 2024 14:01:34 +0800 Subject: [PATCH 04/80] fix: remove blob text disable mode --- .../hooks/components/BlobFormatter/BlobViewModal.tsx | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/page/Workspace/components/DDLResultSet/hooks/components/BlobFormatter/BlobViewModal.tsx b/src/page/Workspace/components/DDLResultSet/hooks/components/BlobFormatter/BlobViewModal.tsx index 87b8df288..32e86a7b1 100644 --- a/src/page/Workspace/components/DDLResultSet/hooks/components/BlobFormatter/BlobViewModal.tsx +++ b/src/page/Workspace/components/DDLResultSet/hooks/components/BlobFormatter/BlobViewModal.tsx @@ -53,9 +53,7 @@ const maxTextSize = 1024 * 200; const maxReadyonlyTextSize = 1024 * 1024 * 2; const len = 500; -type Request = ( - offset: number, -) => Promise<{ +type Request = (offset: number) => Promise<{ content: string; size: number; }>; @@ -265,9 +263,7 @@ const BlobViewModal: React.FC = (props) => { /> ) : disabled ? (
- - {mode == DISPLAY_MODE.TEXT ? text : hexText} - + {mode == DISPLAY_MODE.TEXT ? text : hexText}
) : ( Date: Wed, 13 Mar 2024 14:51:14 +0800 Subject: [PATCH 05/80] PullRequest: 368 feat: append overLimitStrategy to channel's detail drawer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'feat/dev-4.2.4-appendItemToNotificationDetail of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.2.4 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/368 Signed-off-by: 晓康 * feat: append overLimitStrategy to channel's detail drawer --- .../CreateModal/index.tsx | 11 +---- src/d.ts/projectNotification.ts | 8 ++++ .../Notification/components/Channel.tsx | 42 +++++++++++++------ 3 files changed, 39 insertions(+), 22 deletions(-) diff --git a/src/component/Task/StructureComparisonTask/CreateModal/index.tsx b/src/component/Task/StructureComparisonTask/CreateModal/index.tsx index 54f6a7a84..06266150e 100644 --- a/src/component/Task/StructureComparisonTask/CreateModal/index.tsx +++ b/src/component/Task/StructureComparisonTask/CreateModal/index.tsx @@ -178,15 +178,7 @@ const StructureComparisonTask: React.FC = ({ projectId, modalStore }) => })} /> - + {comparisonScopeMap[EComparisonScope.PART]} @@ -240,6 +232,7 @@ const StructureComparisonTask: React.FC = ({ projectId, modalStore }) => id: 'src.component.Task.StructureComparisonTask.CreateModal.EE50E3DC', }) /*"执行方式"*/ } + required name="executionStrategy" > diff --git a/src/d.ts/projectNotification.ts b/src/d.ts/projectNotification.ts index 91fee6de2..80008356f 100644 --- a/src/d.ts/projectNotification.ts +++ b/src/d.ts/projectNotification.ts @@ -43,6 +43,14 @@ export enum EOverLimitStrategy { // 重发 RESEND = 'RESEND', } +export const EOverLimitStrategyMap = { + [EOverLimitStrategy.THROWN]: '忽略', + [EOverLimitStrategy.RESEND]: '重发', +}; +export const EOverLimitStrategyTipMap = { + [EOverLimitStrategy.THROWN]: '忽略已超出限流的消息,不再重发', + [EOverLimitStrategy.RESEND]: '限流时间过后,将自动重发超出限流的消息', +}; export interface IRateLimitConfig { timeUnit: ETimeUnit; limit: number; diff --git a/src/page/Project/Notification/components/Channel.tsx b/src/page/Project/Notification/components/Channel.tsx index 1a7948571..f12feec2a 100644 --- a/src/page/Project/Notification/components/Channel.tsx +++ b/src/page/Project/Notification/components/Channel.tsx @@ -33,6 +33,8 @@ import { EChannelType, ELanguage, EOverLimitStrategy, + EOverLimitStrategyMap, + EOverLimitStrategyTipMap, ETimeUnit, IChannel, IRateLimitConfig, @@ -854,7 +856,6 @@ export const DetailChannelDrawer: React.FC<{ )} - + {channel?.channelConfig?.rateLimitConfig?.overLimitStrategy && ( + + + {EOverLimitStrategyMap?.[channel?.channelConfig?.rateLimitConfig?.overLimitStrategy]} + + + )} - - { - formatMessage({ - id: 'src.page.Project.Notification.components.91FA1DA5' /*忽略*/, - }) /* 忽略 */ - } + + {EOverLimitStrategyMap?.[EOverLimitStrategy.THROWN]} - - { - formatMessage({ - id: 'src.page.Project.Notification.components.AB93FA16' /*重发*/, - }) /* 重发 */ - } + + {EOverLimitStrategyMap?.[EOverLimitStrategy.RESEND]} From fe95c91eee54adb9c70db2877073d2e793f6b4de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=92=8F=E5=92=8C?= Date: Wed, 13 Mar 2024 20:11:17 +0800 Subject: [PATCH 06/80] PullRequest: 369 bug fixed and PartitionTask (details page API change adaptation) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'feat/dev-4.2.4-partitionTask-adaptation-0313 of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.2.4 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/369 Signed-off-by: 晓康 * feat: PartitionTask (details page API change adaptation) * Fixes oceanbase/odc#1882 * Fixes oceanbase/odc#1881 * style: PartitionTask (PartitionPolicyFormTable) --- .../Task/component/ActionBar/index.tsx | 10 +- .../EditTable/index.less | 5 +- .../PartitionPolicyTable/ConfigDrawer.tsx | 101 +++++++++++------- .../PartitionPolicyTable/ConfigTable.tsx | 8 +- .../Task/component/SQLPreviewModal/index.tsx | 1 - src/d.ts/index.ts | 2 + 6 files changed, 76 insertions(+), 51 deletions(-) diff --git a/src/component/Task/component/ActionBar/index.tsx b/src/component/Task/component/ActionBar/index.tsx index 2ddeb4caa..56e704be4 100644 --- a/src/component/Task/component/ActionBar/index.tsx +++ b/src/component/Task/component/ActionBar/index.tsx @@ -193,17 +193,11 @@ const ActionBar: React.FC = inject( return; } default: { - const { - database: { id: databaseId } = {}, - executionStrategy, - executionTime, - parameters, - description, - } = task; + const { database, executionStrategy, executionTime, parameters, description } = task; const data = { taskType: type, parameters, - databaseId, + databaseId: database?.id, executionStrategy, executionTime, description, diff --git a/src/component/Task/component/PartitionPolicyFormTable/EditTable/index.less b/src/component/Task/component/PartitionPolicyFormTable/EditTable/index.less index f72b5dc96..c87208b4a 100644 --- a/src/component/Task/component/PartitionPolicyFormTable/EditTable/index.less +++ b/src/component/Task/component/PartitionPolicyFormTable/EditTable/index.less @@ -34,17 +34,20 @@ display: inline-flex; padding: 0 8px; line-height: 62px; + border-bottom: 1px solid var(--neutral-grey4-color); } } .ruleFormItem { width: 100%; padding: 4px 8px; + border-bottom: 1px solid var(--neutral-grey4-color); } .typeSelect { display: flex; vertical-align: middle; padding: 0 8px; - line-height: 72px; + line-height: 71px; + border-bottom: 1px solid var(--neutral-grey4-color); :global { .ant-form-item { margin-bottom: 0px; diff --git a/src/component/Task/component/PartitionPolicyTable/ConfigDrawer.tsx b/src/component/Task/component/PartitionPolicyTable/ConfigDrawer.tsx index 77a144dba..25a208287 100644 --- a/src/component/Task/component/PartitionPolicyTable/ConfigDrawer.tsx +++ b/src/component/Task/component/PartitionPolicyTable/ConfigDrawer.tsx @@ -21,10 +21,25 @@ import { getStrategyLabelByConfig } from './index'; import ConfigTable from './ConfigTable'; import { SimpleTextItem } from '../../component/SimpleTextItem'; import type { IPartitionTableConfig } from '@/d.ts'; -import { TaskPartitionStrategy, PARTITION_NAME_INVOKER } from '@/d.ts'; +import { TaskPartitionStrategy, PARTITION_NAME_INVOKER, PARTITION_KEY_INVOKER } from '@/d.ts'; import { getFormatDateTime } from '@/util/utils'; import styles from './index.less'; +const periodUnits = [ + { + label: '年', + value: 1, + }, + { + label: '月', + value: 2, + }, + { + label: '日', + value: 5, + }, +]; + interface IProps { visible: boolean; config?: IPartitionTableConfig; @@ -44,6 +59,27 @@ const ConfigDrawer: React.FC = (props) => { (item) => item?.strategy === TaskPartitionStrategy.CREATE, ); + const getNamingSuffix = () => { + const isFromCurrentTime = + partitionNameInvokerParameters?.partitionNameGeneratorConfig?.fromCurrentTime; + const baseTimestampMillis = + partitionNameInvokerParameters?.partitionNameGeneratorConfig?.baseTimestampMillis; + const suffixExpression = + partitionNameInvokerParameters.partitionNameGeneratorConfig.namingSuffixExpression; + const suffix = [isFromCurrentTime ? '当前时间' : '指定时间']; + if (!isFromCurrentTime && !!baseTimestampMillis) { + suffix.push(getFormatDateTime(baseTimestampMillis)); + } + if (suffixExpression) { + suffix.push(`时间格式: ${suffixExpression}`); + } + return suffix.filter(Boolean).join(', '); + }; + + const getUnitLabel = (periodUnit) => { + return periodUnits?.find((item) => item.value === periodUnit)?.label; + }; + const handleClose = () => { onClose(); }; @@ -148,17 +184,8 @@ const ConfigDrawer: React.FC = (props) => { }, )} - 后缀: - {partitionNameInvokerParameters?.partitionNameGeneratorConfig?.fromCurrentTime - ? '当前时间' - : '指定时间'} - {partitionNameInvokerParameters?.partitionNameGeneratorConfig - ?.baseTimestampMillis && - getFormatDateTime( - partitionNameInvokerParameters?.partitionNameGeneratorConfig - ?.baseTimestampMillis, - )} - {partitionNameInvokerParameters.partitionNameGeneratorConfig.namingSuffixExpression} + 后缀: + {getNamingSuffix()}
) : ( @@ -171,35 +198,29 @@ const ConfigDrawer: React.FC = (props) => { ) )} - {dropKeyConfig && ( - <> - - {dropKeyConfig?.partitionKeyInvokerParameters?.keepLatestCount} - - - {dropKeyConfig?.partitionKeyInvokerParameters?.reloadIndexes - ? formatMessage({ - id: 'src.component.Task.component.PartitionPolicyTable.88E93248', - }) - : formatMessage({ - id: 'src.component.Task.component.PartitionPolicyTable.A5E08D34', - })} - - - )} + {dropKeyConfig && ( + + 保留最近 {dropKeyConfig?.partitionKeyInvokerParameters?.expirePeriod}个 + {getUnitLabel(dropKeyConfig?.partitionKeyInvokerParameters?.periodUnit)} + 的分区,不重建全局索引 + + ) : ( +
+ 保留最近{dropKeyConfig?.partitionKeyInvokerParameters?.keepLatestCount}个分区, + {dropKeyConfig?.partitionKeyInvokerParameters?.reloadIndexes ? '重建' : '不重建'} + 全局索引 +
+ ) + } + direction="column" + /> + )} ); }; diff --git a/src/component/Task/component/PartitionPolicyTable/ConfigTable.tsx b/src/component/Task/component/PartitionPolicyTable/ConfigTable.tsx index fd24d1e5b..368f553c4 100644 --- a/src/component/Task/component/PartitionPolicyTable/ConfigTable.tsx +++ b/src/component/Task/component/PartitionPolicyTable/ConfigTable.tsx @@ -28,6 +28,9 @@ const columns = [ title: formatMessage({ id: 'src.component.Task.component.PartitionPolicyTable.8086D142' }), //'分区键' ellipsis: true, width: 100, + render: (partitionKey) => { + return partitionKey || '-'; + }, }, { dataIndex: 'partitionOption', @@ -47,7 +50,10 @@ const columns = [ ? formatMessage({ id: 'src.component.Task.component.PartitionPolicyTable.C9467B5B' }) : formatMessage({ id: 'src.component.Task.component.PartitionPolicyTable.F057FAAF' })} - {record?.partitionKeyInvoker === PARTITION_KEY_INVOKER.TIME_INCREASING_GENERATOR ? ( + {[ + PARTITION_KEY_INVOKER.TIME_INCREASING_GENERATOR, + PARTITION_KEY_INVOKER.HISTORICAL_PARTITION_PLAN_CREATE_GENERATOR, + ].includes(record?.partitionKeyInvoker) ? ( {formatMessage({ diff --git a/src/d.ts/index.ts b/src/d.ts/index.ts index f8747b784..f7367a8cc 100644 --- a/src/d.ts/index.ts +++ b/src/d.ts/index.ts @@ -3175,6 +3175,8 @@ export enum PARTITION_KEY_INVOKER { CUSTOM_GENERATOR = 'CUSTOM_GENERATOR', TIME_INCREASING_GENERATOR = 'TIME_INCREASING_GENERATOR', KEEP_MOST_LATEST_GENERATOR = 'KEEP_MOST_LATEST_GENERATOR', + HISTORICAL_PARTITION_PLAN_DROP_GENERATOR = 'HISTORICAL_PARTITION_PLAN_DROP_GENERATOR', + HISTORICAL_PARTITION_PLAN_CREATE_GENERATOR = 'HISTORICAL_PARTITION_PLAN_CREATE_GENERATOR', } export enum TaskErrorStrategy { From f5c517ac5a98d30fa0633505c565f109838fc889 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=9C=9D=E4=BF=8A?= Date: Wed, 13 Mar 2024 20:11:37 +0800 Subject: [PATCH 07/80] PullRequest: 370 Fixes oceanbase/odc#1884 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch fix/dev-4.2.4-odc-1884 of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.2.4 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/370 Signed-off-by: 晓康 * Fixes oceanbase/odc#1884 --- src/component/Login/LoginForm.tsx | 9 +++---- src/component/Login/index.tsx | 5 +++- .../Task/component/DatabaseSelect/index.tsx | 2 +- src/page/Login/components/LDAPModal/index.tsx | 25 ++++++++++++++++--- src/page/Login/index.tsx | 3 ++- .../SessionSelect/SelectItem.tsx | 2 +- 6 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/component/Login/LoginForm.tsx b/src/component/Login/LoginForm.tsx index ed7b66a29..17d67d81b 100644 --- a/src/component/Login/LoginForm.tsx +++ b/src/component/Login/LoginForm.tsx @@ -43,6 +43,7 @@ export interface ILoginFormProps extends FormProps { showAuthCode?: boolean; showOtherLoginButton?: boolean; ssoLoginType?: ESSOLgoinType; + ssoLoginName?: string; authCodeImg?: string; otherLoginProps?: any; switchSSOLoginType?: () => void; @@ -56,6 +57,7 @@ const Login: React.FC = ({ showAuthCode, showOtherLoginButton, ssoLoginType, + ssoLoginName, authCodeImg, otherLoginProps, onAuthCodeImgChange, @@ -186,7 +188,6 @@ const Login: React.FC = ({ - {builtIn ? null : ( + + + {builtIn || !hasPremissions ? null : ( diff --git a/src/page/Secure/Env/index.tsx b/src/page/Secure/Env/index.tsx index c4d041c7e..f04af8509 100644 --- a/src/page/Secure/Env/index.tsx +++ b/src/page/Secure/Env/index.tsx @@ -17,7 +17,7 @@ import { formatMessage } from '@/util/intl'; import { deleteEnvironment, listEnvironments } from '@/common/network/env'; import { getIntegrationList } from '@/common/network/manager'; -import { IManagerIntegration, IntegrationType } from '@/d.ts'; +import { IManagerIntegration, IManagerResourceType, IntegrationType, actionTypes } from '@/d.ts'; import { IEnvironment } from '@/d.ts/environment'; import { RuleType } from '@/d.ts/rule'; import { useLayoutEffect, useState } from 'react'; @@ -29,6 +29,7 @@ import styles from './index.less'; import Icon, { PlusOutlined } from '@ant-design/icons'; import { Modal, SelectProps, message } from 'antd'; import { FormEnvironmentModal } from './components/FormEnvironmentModal'; +import { Acess, createPermission } from '@/component/Acess'; // 从Environment数组中生成Sider中的Item数据 function genEnv(env: IEnvironment): { @@ -149,11 +150,16 @@ const Environment = () => {
{formatMessage({ id: 'src.page.Secure.Env.48529F6E' /*全部环境*/ }) /* 全部环境 */}
- + + + } loading={loading} From 1b4148148886457231ae5143daab8ce0aac41302 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=92=8F=E5=92=8C?= Date: Fri, 22 Mar 2024 09:46:24 +0800 Subject: [PATCH 24/80] PullRequest: 381 fix style MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch fix/dev-4.2.4-bugs-xyh-032002 of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.2.4 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/381 Signed-off-by: 晓康 * style: Crontab * style: PartitionTask (fix style) * chore: clear test log --- src/component/Crontab/index.less | 6 +++ src/component/Crontab/index.tsx | 16 ++---- .../EditTable/index.less | 14 +++-- .../RuleFormItem/index.tsx | 3 -- .../PartitionPolicyFormTable/configModal.tsx | 54 +++++++++++-------- .../PartitionPolicyFormTable/index.less | 10 ++++ 6 files changed, 62 insertions(+), 41 deletions(-) diff --git a/src/component/Crontab/index.less b/src/component/Crontab/index.less index 89c14327b..0d6fe49df 100644 --- a/src/component/Crontab/index.less +++ b/src/component/Crontab/index.less @@ -7,9 +7,15 @@ } .content { width: 100%; + display: grid; + grid-gap: 8px; &.default-mode { padding: 8px; background: var(--background-tertraiy-color); + grid-template-columns: 120px 210px 1fr; + &.daily { + grid-template-columns: 120px 1fr; + } } } .custom-editor { diff --git a/src/component/Crontab/index.tsx b/src/component/Crontab/index.tsx index 667947b10..ad51863db 100644 --- a/src/component/Crontab/index.tsx +++ b/src/component/Crontab/index.tsx @@ -191,11 +191,11 @@ const Crontab = (props, ref) => { /> - {mode === CrontabMode.custom ? ( <> @@ -215,19 +215,13 @@ const Crontab = (props, ref) => { ) : ( <> - {dateType === CrontabDateType.weekly && ( + - + name={['channelConfig', 'sign']} + requiredMark="optional" + > + + + {channelId && ( + + {hasChangeSign ? '取消修改' : '修改密钥'} + + )} + ) : null} {isWebhook ? ( diff --git a/src/page/Project/Notification/components/index.less b/src/page/Project/Notification/components/index.less index 4904e2046..920383e1f 100644 --- a/src/page/Project/Notification/components/index.less +++ b/src/page/Project/Notification/components/index.less @@ -38,4 +38,9 @@ .tip { color: var(--text-color-placeholder); } +.modifyBtn { + display: inline-block; + margin-bottom: 8px; + user-select: none; +} // #endregion From 1dea9cadfb7075d9b8128a7e7fafe7c5ec8fcd44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=9C=9D=E4=BF=8A?= Date: Fri, 22 Mar 2024 10:39:17 +0800 Subject: [PATCH 26/80] PullRequest: 383 feat: disabled some feature in SSOLogin on ver.4.2.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'feat/dev-4.2.4-hideSomeItemsInSSOLogin of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.2.4 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/383 Signed-off-by: 晓康 * feat: disabled some feature in SSOLogin on ver.4.2.4 --- .../NewSSODrawerButton/SSOForm/PartForm.tsx | 9 + .../SSO/NewSSODrawerButton/SSOForm/index.tsx | 336 ++++++++---------- 2 files changed, 166 insertions(+), 179 deletions(-) diff --git a/src/page/ExternalIntegration/SSO/NewSSODrawerButton/SSOForm/PartForm.tsx b/src/page/ExternalIntegration/SSO/NewSSODrawerButton/SSOForm/PartForm.tsx index dffc57745..ac546de81 100644 --- a/src/page/ExternalIntegration/SSO/NewSSODrawerButton/SSOForm/PartForm.tsx +++ b/src/page/ExternalIntegration/SSO/NewSSODrawerButton/SSOForm/PartForm.tsx @@ -621,6 +621,15 @@ export const LDAPPartForm: React.FC<{ ]} /> + {/* */} + + ); +}; +const SomeFetureInODC430: React.FC<{ + tip: string; +}> = ({ tip }) => { + return ( + <> ; }>, ) { + const [form] = Form.useForm(); + const type = useWatch('type', form); + const userProfileViewType = useWatch(['mappingRule', 'userProfileViewType'], form); + const userNickNameField = useWatch(['mappingRule', 'userNickNameField'], form); const loginWindow = useRef(); + const channelStatusRef = useRef(false); const timer = useRef(); const [showExtraConfig, setShowExtraConfig] = useState(!!isEdit); @@ -86,7 +92,6 @@ export default inject('userStore')( _setTestInfo(v); onTestInfoChanged(v); } - const [form] = Form.useForm(); useImperativeHandle( ref, () => { @@ -257,8 +262,8 @@ export default inject('userStore')( ['ssoParameter', 'groupSearchBase'], ['ssoParameter', 'groupSearchFilter'], ['ssoParameter', 'groupSearchSubtree'], - ['ssoParameter', 'loginFailedLimit'], - ['ssoParameter', 'lockTimeSeconds'], + // ['ssoParameter', 'loginFailedLimit'], + // ['ssoParameter', 'lockTimeSeconds'], ['mappingRule', 'userProfileViewType'], ['mappingRule', 'nestedAttributeField'], ]) @@ -327,6 +332,21 @@ export default inject('userStore')( }, }); } + const getPartForm = (type: ISSOType) => { + if (type === ISSOType.OAUTH2) { + return ( + + ); + } else if (type === ISSOType.LDAP) { + return ; + } else { + return ; + } + }; const redirectUrl = `${window.ODCApiHost || location.origin}/login/oauth2/code/${ userStore?.organizationId }-test`; @@ -415,111 +435,82 @@ export default inject('userStore')( /> - {({ getFieldValue }) => { - const type = getFieldValue(['type']); - if (type === ISSOType.OAUTH2) { - return ( - - ); - } else if (type === ISSOType.LDAP) { - return ; - } else { - return ; - } - }} + {getPartForm(type)} - {({ getFieldValue }) => { - const type = getFieldValue(['type']); - return type !== ISSOType.LDAP ? ( - - + + ) : null} - {({ getFieldValue }) => { - const userProfileViewType = getFieldValue(['mappingRule', 'userProfileViewType']); - if (userProfileViewType === 'NESTED') { - return ( - - - - ); - } - }} + {userProfileViewType === 'NESTED' && ( + + + + )} - - {({ getFieldValue }) => { - const type = getFieldValue(['type']); - return ( - - - testByType(type)}> - { - formatMessage({ - id: 'odc.NewSSODrawerButton.SSOForm.TestConnection', - }) /*测试连接*/ - } - - - - ); - }} + + + testByType(type)}> + { + formatMessage({ + id: 'odc.NewSSODrawerButton.SSOForm.TestConnection', + }) /*测试连接*/ + } + + + {testInfo ? ( - {({ getFieldValue }) => { - const type = getFieldValue('type'); - if (type !== ISSOType.LDAP) { - return ( - - - - ); - } - }} + {type !== ISSOType.LDAP && ( + + + + )} - {({ getFieldValue }) => { - const userNickNameField = getFieldValue(['mappingRule', 'userNickNameField']); - return ( - - + - {({ getFieldValue }) => { - const type = getFieldValue(['type']); - return type === ISSOType.LDAP ? ( - - + + ) : null} {(fields, operation) => { From 0c76182e8c9a37b24ea973a7000aef1553a31e85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=9C=9D=E4=BF=8A?= Date: Fri, 22 Mar 2024 10:39:32 +0800 Subject: [PATCH 27/80] PullRequest: 384 Fixes oceanbase/odc#1976 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch fix/dev-4.2.4-odc-1967 of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.2.4 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/384 Signed-off-by: 晓康 * Fixes oceanbase/odc#1976 * fix: wrap database's name when it disabled --- src/page/Project/Database/index.tsx | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/page/Project/Database/index.tsx b/src/page/Project/Database/index.tsx index 06bc0c765..97681b189 100644 --- a/src/page/Project/Database/index.tsx +++ b/src/page/Project/Database/index.tsx @@ -110,7 +110,13 @@ const Database: React.FC = ({ id }) => { default: } }; - const statusMap = datasourceStatus.statusMap; + const renderDisabledDBWithTip = (name: React.ReactNode) => { + return ( + + {name} + + ); + }; return ( reload()} projectId={parseInt(id)} />} @@ -150,10 +156,18 @@ const Database: React.FC = ({ id }) => { fixed: 'left', ellipsis: true, render: (name, record) => { - const disabled = !record.authorizedPermissionTypes?.length; + const disabled = !record?.authorizedPermissionTypes?.length; if (!record.existed) { return disabled ? ( -
{name}
+ + {renderDisabledDBWithTip(name)} + ) : ( = ({ id }) => { ); } return disabled ? ( -
{name}
+ renderDisabledDBWithTip(name) ) : ( Date: Fri, 22 Mar 2024 11:50:03 +0800 Subject: [PATCH 28/80] PullRequest: 386 design change sync MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge branch 'fix/dev-4.2.4-bugs-xyh-032201 of git@code.alipay.com:oceanbase/oceanbase-developer-center.git into dev-4.2.4 https://code.alipay.com/oceanbase/oceanbase-developer-center/pull_requests/386 Signed-off-by: 晓康 * style: user manageModal (design change sync) * style: PartitionTask (design change sync) --- .../RuleFormItem/index.tsx | 21 +++--- src/component/helpDoc/doc.tsx | 6 ++ .../User/ManageModal/CreateAuth/index.tsx | 12 +--- .../User/ManageModal/TaskApplyList/index.tsx | 23 ++----- .../User/ManageModal/UserAuthList/index.tsx | 23 ++----- src/page/Project/User/ManageModal/index.less | 1 + src/page/Project/User/ManageModal/index.tsx | 64 +++++++------------ 7 files changed, 50 insertions(+), 100 deletions(-) diff --git a/src/component/Task/component/PartitionPolicyFormTable/RuleFormItem/index.tsx b/src/component/Task/component/PartitionPolicyFormTable/RuleFormItem/index.tsx index 4e78e793b..32b494d64 100644 --- a/src/component/Task/component/PartitionPolicyFormTable/RuleFormItem/index.tsx +++ b/src/component/Task/component/PartitionPolicyFormTable/RuleFormItem/index.tsx @@ -12,6 +12,7 @@ import { Typography, } from 'antd'; import { CloseCircleFilled } from '@ant-design/icons'; +import HelpDoc from '@/component/helpDoc'; import { intervalPrecisionOptions } from '../configModal'; import { START_DATE } from '../const'; import { PARTITION_KEY_INVOKER } from '@/d.ts'; @@ -146,27 +147,25 @@ const RuleFormItem: React.FC = (props) => { help={EmptyHelp} > - { - formatMessage({ - id: 'src.component.Task.component.PartitionPolicyFormTable.RuleFormItem.9F9223B3' /*间隔*/, - }) /* 间隔 */ - } + + { + formatMessage({ + id: 'src.component.Task.component.PartitionPolicyFormTable.RuleFormItem.9F9223B3' /*间隔*/, + }) /* 间隔 */ + } + ), + userManageTip: ( + <> +

工单授权:用户通过工单申请的权限

+

用户权限:项目管理员/DBA授予的权限

+ + ), }; diff --git a/src/page/Project/User/ManageModal/CreateAuth/index.tsx b/src/page/Project/User/ManageModal/CreateAuth/index.tsx index ce875b972..8d74b97c9 100644 --- a/src/page/Project/User/ManageModal/CreateAuth/index.tsx +++ b/src/page/Project/User/ManageModal/CreateAuth/index.tsx @@ -106,21 +106,13 @@ const CreateModal: React.FC = (props) => { }} type="primary" > - { - formatMessage({ - id: 'src.page.Project.User.ManageModal.CreateAuth.67243BDA' /*新增授权*/, - }) /* 新增授权 */ - } + 新增库授权 { setOpen(false); diff --git a/src/page/ExternalIntegration/SSO/SSODetailDrawer/index.tsx b/src/page/ExternalIntegration/SSO/SSODetailDrawer/index.tsx index 8f8d73ae1..c4b648e3b 100644 --- a/src/page/ExternalIntegration/SSO/SSODetailDrawer/index.tsx +++ b/src/page/ExternalIntegration/SSO/SSODetailDrawer/index.tsx @@ -147,7 +147,7 @@ export default function SSODetailDrawer({ visible, id, close }: IProps) { return ( close()} footer={ diff --git a/src/page/ExternalIntegration/index.tsx b/src/page/ExternalIntegration/index.tsx index 2f1d67d3c..7809ade96 100644 --- a/src/page/ExternalIntegration/index.tsx +++ b/src/page/ExternalIntegration/index.tsx @@ -46,7 +46,7 @@ const tabs = [ key: IPageType.ExternalIntegration_Sql, }, { - tab: '登录集成', + tab: formatMessage({ id: 'src.page.ExternalIntegration.B29CC4F4' }), //'登录集成' key: IPageType.ExternalIntegration_SSO, }, ]; diff --git a/src/page/Login/components/LDAPModal/index.tsx b/src/page/Login/components/LDAPModal/index.tsx index 59f817451..205fc4990 100644 --- a/src/page/Login/components/LDAPModal/index.tsx +++ b/src/page/Login/components/LDAPModal/index.tsx @@ -236,7 +236,10 @@ const LDAPLoginContent: React.FC<{ }} > {ssoLoginName - ? `${ssoLoginName} 登录` + ? formatMessage( + { id: 'src.page.Login.components.LDAPModal.7201A252' }, + { ssoLoginName: ssoLoginName }, + ) : formatMessage({ id: 'src.page.Login.components.LDAPModal.95DA8BD0' /*LDAP 登录*/ })}
diff --git a/src/page/Project/Database/AddDataBaseButton/index.tsx b/src/page/Project/Database/AddDataBaseButton/index.tsx index dd89c7d31..b19c7cfc8 100644 --- a/src/page/Project/Database/AddDataBaseButton/index.tsx +++ b/src/page/Project/Database/AddDataBaseButton/index.tsx @@ -90,7 +90,13 @@ export default function AddDataBaseButton({ projectId, onSuccess }: IProps) { return ( <> - + +
)} diff --git a/src/page/Project/Notification/components/interface.ts b/src/page/Project/Notification/components/interface.ts index d5ee7226c..41d48087e 100644 --- a/src/page/Project/Notification/components/interface.ts +++ b/src/page/Project/Notification/components/interface.ts @@ -20,27 +20,37 @@ export const EChannelTypeMap = { id: 'src.page.Project.Notification.components.F80DF1C7', }), //'飞书' [EChannelType.WE_COM]: formatMessage({ id: 'src.page.Project.Notification.components.A41C487F' }), //'企业微信' - [EChannelType.WEBHOOK]: '自定义', + [EChannelType.WEBHOOK]: formatMessage({ + id: 'src.page.Project.Notification.components.CDD8F083', + }), //'自定义' }; export const WebhookPlaceholderMap = { - [EChannelType.DING_TALK]: '请输入钉钉群机器人 Webhook 地址', - [EChannelType.FEI_SHU]: '请输入飞书群机器人 Webhook 地址', - [EChannelType.WE_COM]: '请输入企业微信群机器人 Webhook 地址', - [EChannelType.WEBHOOK]: '请输入 Webhook 地址', + [EChannelType.DING_TALK]: formatMessage({ + id: 'src.page.Project.Notification.components.D6700838', + }), //'请输入钉钉群机器人 Webhook 地址' + [EChannelType.FEI_SHU]: formatMessage({ + id: 'src.page.Project.Notification.components.0EB64694', + }), //'请输入飞书群机器人 Webhook 地址' + [EChannelType.WE_COM]: formatMessage({ id: 'src.page.Project.Notification.components.83F1E770' }), //'请输入企业微信群机器人 Webhook 地址' + [EChannelType.WEBHOOK]: formatMessage({ + id: 'src.page.Project.Notification.components.F33A3513', + }), //'请输入 Webhook 地址' }; export const ELanguageMap = { - [ELanguage.ZH_CN]: '简体中文', + [ELanguage.ZH_CN]: formatMessage({ id: 'src.page.Project.Notification.components.B1D41451' }), //'简体中文' [ELanguage.ZH_TW]: formatMessage({ id: 'src.page.Project.Notification.components.739AD573' }), //'繁体中文' [ELanguage.EN_US]: formatMessage({ id: 'src.page.Project.Notification.components.21BD64D9' }), //'英文' }; // @oic-line-ignore -const EContentTemplateMap_ZH_CN = - '### ODC ${taskType}-${taskStatus}\n- 任务ID: ${taskId}\n- 项目: ${projectName}\n- 数据库: ${databaseName}\n- 发起人: ${creatorName}\n- 触发时间: ${triggerTime}'; -// @oic-line-ignore -const EContentTemplateMap_ZH_TW = - '### ODC ${taskType}-${taskStatus}\n- 任務ID: ${taskId}\n- 項目: ${projectName}\n- 數據庫: ${databaseName}\n- 發起人: ${creatorName}\n- 觸發時間: ${triggerTime}'; -// @oic-line-ignore +const EContentTemplateMap_ZH_CN = formatMessage({ + id: 'src.page.Project.Notification.components.F562FBAA', +}); //'### ODC ${taskType}-${taskStatus}\n- 任务ID: ${taskId}\n- 项目: ${projectName}\n- 数据库: ${databaseName}\n- 发起人: ${creatorName}\n- 触发时间: ${triggerTime}' + +const EContentTemplateMap_ZH_TW = formatMessage({ + id: 'src.page.Project.Notification.components.ED742927', +}); //'### ODC ${taskType}-${taskStatus}\n- 任務ID: ${taskId}\n- 項目: ${projectName}\n- 數據庫: ${databaseName}\n- 發起人: ${creatorName}\n- 觸發時間: ${triggerTime}' + const EContentTemplateMap_EN_US = '### ODC ${taskType}-${taskStatus}\n- task ID: ${taskId}\n- project: ${projectName}\n- database: ${databaseName}\n- creator: ${creatorName}\n- trigger time: ${triggerTime}'; export const EContentTemplateMap = { diff --git a/src/page/Project/User/ManageModal/CreateAuth/index.tsx b/src/page/Project/User/ManageModal/CreateAuth/index.tsx index 8d74b97c9..8dd581883 100644 --- a/src/page/Project/User/ManageModal/CreateAuth/index.tsx +++ b/src/page/Project/User/ManageModal/CreateAuth/index.tsx @@ -106,13 +106,21 @@ const CreateModal: React.FC = (props) => { }} type="primary" > - 新增库授权 + { + formatMessage({ + id: 'src.page.Project.User.ManageModal.CreateAuth.ED0CF3A6' /*新增库授权*/, + }) /* 新增库授权 */ + }