diff --git a/dbm-ui/frontend/src/locales/zh-cn.json b/dbm-ui/frontend/src/locales/zh-cn.json
index 14cc4f8285..e8e39f37b6 100644
--- a/dbm-ui/frontend/src/locales/zh-cn.json
+++ b/dbm-ui/frontend/src/locales/zh-cn.json
@@ -4022,10 +4022,8 @@
"从资源池选择": "从资源池选择",
"还差n台_请先勾选足够的IP": "还差 {n} 台,请先勾选足够的 IP",
"已选够n台": "已选够 {n} 台",
- "从资源池选择": "从资源池选择",
- "还差n台_请先勾选足够的IP": "还差 {n} 台,请先勾选足够的 IP",
- "已选够n台": "已选够 {n} 台",
"原DB名": "原 DB 名",
+ "DB已存在": "DB 已存在",
"DB不存在": "DB 不存在",
"这行勿动!新增翻译请在上一行添加!": ""
}
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_RENAME_DATABASE/components/DbNameColumn.vue b/dbm-ui/frontend/src/views/db-manage/common/toolbox-field/column/db-name-column/Index.vue
similarity index 76%
rename from dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_RENAME_DATABASE/components/DbNameColumn.vue
rename to dbm-ui/frontend/src/views/db-manage/common/toolbox-field/column/db-name-column/Index.vue
index 7c2e647632..9f783473c0 100644
--- a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_RENAME_DATABASE/components/DbNameColumn.vue
+++ b/dbm-ui/frontend/src/views/db-manage/common/toolbox-field/column/db-name-column/Index.vue
@@ -83,28 +83,45 @@
trigger: 'change',
},
{
- validator: async (value: string) => {
- if (!_.some(value, (item) => !/[*%]/.test(item))) {
+ validator: (value: string) => {
+ if (!props.checkExist) {
return true;
}
- const data = await checkClusterDatabase({
+ const clearDbList = _.filter(value, (item) => !/[*%]/.test(item));
+ if (clearDbList.length < 1) {
+ return true;
+ }
+ return checkClusterDatabase({
infos: [
{
cluster_id: props.clusterId,
db_names: [value],
},
],
- });
- const isExist = Boolean(data[0]?.check_info[value]);
- if (isExist && props.checkExist) {
- return t('DB已存在');
+ }).then((data) => (data.length > 0 ? data[0].check_info[value] : false));
+ },
+ message: t('DB不存在'),
+ trigger: 'blur',
+ },
+ {
+ validator: (value: string) => {
+ if (!props.checkNotExist) {
+ return true;
}
- if (!isExist && props.checkNotExist) {
- return t('DB不存在');
+ const clearDbList = _.filter(value, (item) => !/[*%]/.test(item));
+ if (clearDbList.length < 1) {
+ return true;
}
- return true;
+ return checkClusterDatabase({
+ infos: [
+ {
+ cluster_id: props.clusterId,
+ db_names: [value],
+ },
+ ],
+ }).then((data) => (data.length > 0 ? !data[0].check_info[value] : true));
},
- message: '',
+ message: t('DB已存在'),
trigger: 'blur',
},
];
diff --git a/dbm-ui/frontend/src/views/db-manage/common/toolbox-field/column/tag-db-name-column/Index.vue b/dbm-ui/frontend/src/views/db-manage/common/toolbox-field/column/tag-db-name-column/Index.vue
new file mode 100644
index 0000000000..23b7539a24
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/common/toolbox-field/column/tag-db-name-column/Index.vue
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ t('库表输入说明') }}:
+
+
+
{{ t('不允许输入系统库和特殊库,如mysql、sys 等') }}
+
+
+
+
{{ t('DB名、表名不允许为空,忽略DB名、忽略表名不允许为 *') }}
+
+
+
+
{{ t('支持 %(指代任意长度字符串), ?(指代单个字符串), *(指代全部)三个通配符') }}
+
+
+
+
{{ t('单元格可同时输入多个对象,使用换行,空格或;,|分隔,按 Enter 或失焦完成内容输入') }}
+
+
+
+
{{ t('% ? 不能独立使用, * 只能单独使用') }}
+
+
+
+
+
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/common/toolbox-field/form-item/check-group/Index.vue b/dbm-ui/frontend/src/views/db-manage/common/toolbox-field/form-item/check-group/Index.vue
index 3bd7c7c812..b8cf9fbd4e 100644
--- a/dbm-ui/frontend/src/views/db-manage/common/toolbox-field/form-item/check-group/Index.vue
+++ b/dbm-ui/frontend/src/views/db-manage/common/toolbox-field/form-item/check-group/Index.vue
@@ -1,16 +1,16 @@
-
+
{{ t('检查业务来源的连接') }}
-
+
{{ t('检查主从同步延迟') }}
-
+
{{ t('检查主从数据校验结果') }}
@@ -21,15 +21,15 @@
const { t } = useI18n();
- const modelValue = defineModel<{
- is_check_process: boolean;
- is_verify_checksum: boolean;
- is_check_delay: boolean;
- }>({
- default: () => ({
- is_check_process: true,
- is_verify_checksum: true,
- is_check_delay: true,
- }),
+ const isCheckProcess = defineModel('is_check_process', {
+ required: true,
+ });
+
+ const isVerifyChecksum = defineModel('is_verify_checksum', {
+ required: true,
+ });
+
+ const isCheckDelay = defineModel('is_check_delay', {
+ required: true,
});
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_DB_TABLE_BACKUP/Create.vue b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_DB_TABLE_BACKUP/Create.vue
new file mode 100644
index 0000000000..daba2b36e0
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_DB_TABLE_BACKUP/Create.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('提交') }}
+
+
+
+ {{ t('重置') }}
+
+
+
+
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_DB_TABLE_BACKUP/Index.vue b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_DB_TABLE_BACKUP/Index.vue
new file mode 100644
index 0000000000..7d5a04e740
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_DB_TABLE_BACKUP/Index.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_DB_TABLE_BACKUP/components/BackupColumn.vue b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_DB_TABLE_BACKUP/components/BackupColumn.vue
new file mode 100644
index 0000000000..19657d59ef
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_DB_TABLE_BACKUP/components/BackupColumn.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_DB_TABLE_BACKUP/components/ClusterColumn.vue b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_DB_TABLE_BACKUP/components/ClusterColumn.vue
new file mode 100644
index 0000000000..2b519c01a1
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_DB_TABLE_BACKUP/components/ClusterColumn.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_FULL_BACKUP/Create.vue b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_FULL_BACKUP/Create.vue
new file mode 100644
index 0000000000..b909eb143d
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_FULL_BACKUP/Create.vue
@@ -0,0 +1,193 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('逻辑备份') }}
+
+
+ {{ t('物理备份') }}
+
+
+
+
+
+
+ {{ t('1个月') }}
+
+
+ {{ t('6个月') }}
+
+
+ {{ t('1年') }}
+
+
+ {{ t('3年') }}
+
+
+
+
+
+
+
+ {{ t('提交') }}
+
+
+
+ {{ t('重置') }}
+
+
+
+
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_FULL_BACKUP/Index.vue b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_FULL_BACKUP/Index.vue
new file mode 100644
index 0000000000..7d5a04e740
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_FULL_BACKUP/Index.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_FULL_BACKUP/components/BackupColumn.vue b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_FULL_BACKUP/components/BackupColumn.vue
new file mode 100644
index 0000000000..56e9848bd2
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_FULL_BACKUP/components/BackupColumn.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_FULL_BACKUP/components/ClusterColumn.vue b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_FULL_BACKUP/components/ClusterColumn.vue
new file mode 100644
index 0000000000..2b519c01a1
--- /dev/null
+++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_FULL_BACKUP/components/ClusterColumn.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_MASTER_FAIL_OVER/Create.vue b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_MASTER_FAIL_OVER/Create.vue
index e0261691df..f50cc925d5 100644
--- a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_MASTER_FAIL_OVER/Create.vue
+++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_MASTER_FAIL_OVER/Create.vue
@@ -47,7 +47,10 @@
:create-row-method="createTableRow" />
-
+
@@ -127,11 +130,9 @@
const defaultData = () => ({
tableData: [createTableRow()],
- checkGroup: {
- is_check_process: true,
- is_verify_checksum: true,
- is_check_delay: true,
- },
+ is_check_process: true,
+ is_verify_checksum: true,
+ is_check_delay: true,
remark: '',
});
@@ -169,7 +170,9 @@
}
createTicketRun({
details: {
- ...formData.checkGroup,
+ is_check_process: formData.is_check_process,
+ is_verify_checksum: formData.is_verify_checksum,
+ is_check_delay: formData.is_check_delay,
infos: formData.tableData.map((item) => ({
cluster_id: item.cluster.id,
switch_tuples: [
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_MASTER_SLAVE_SWITCH/Create.vue b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_MASTER_SLAVE_SWITCH/Create.vue
index 7a38d6f02e..153e141216 100644
--- a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_MASTER_SLAVE_SWITCH/Create.vue
+++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_MASTER_SLAVE_SWITCH/Create.vue
@@ -47,7 +47,10 @@
:create-row-method="createTableRow" />
-
+
@@ -127,11 +130,9 @@
const defaultData = () => ({
tableData: [createTableRow()],
- checkGroup: {
- is_check_process: true,
- is_verify_checksum: true,
- is_check_delay: true,
- },
+ is_check_process: true,
+ is_verify_checksum: true,
+ is_check_delay: true,
remark: '',
});
@@ -169,7 +170,9 @@
}
createTicketRun({
details: {
- ...formData.checkGroup,
+ is_check_process: formData.is_check_process,
+ is_verify_checksum: formData.is_verify_checksum,
+ is_check_delay: formData.is_check_delay,
infos: formData.tableData.map((item) => ({
cluster_id: item.cluster.id,
switch_tuples: [
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_RENAME_DATABASE/Create.vue b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_RENAME_DATABASE/Create.vue
index d8a1cd180c..47391ec588 100644
--- a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_RENAME_DATABASE/Create.vue
+++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/TENDBCLUSTER_RENAME_DATABASE/Create.vue
@@ -85,12 +85,12 @@
import EditableTable, { Row as EditableTableRow } from '@components/editable-table/Index.vue';
+ import DbNameColumn from '@views/db-manage/common/toolbox-field/column/db-name-column/Index.vue';
import OperationColumn from '@views/db-manage/common/toolbox-field/column/operation-column/Index.vue';
import IgnoreBiz from '@views/db-manage/common/toolbox-field/form-item/ignore-biz/Index.vue';
import TicketRemark from '@views/db-manage/common/toolbox-field/form-item/ticket-remark/Index.vue';
import ClusterColumn from './components/ClusterColumn.vue';
- import DbNameColumn from './components/DbNameColumn.vue';
interface RowData {
cluster: {
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/routes.ts b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/routes.ts
index f8d6746e47..fd2919f21c 100644
--- a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/routes.ts
+++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/routes.ts
@@ -51,23 +51,9 @@ const spiderProxySlaveApplyRoute = createRouteItem(TicketTypes.TENDBCLUSTER_SPID
const spiderAddMntRoute = createRouteItem(TicketTypes.TENDBCLUSTER_SPIDER_MNT_APPLY, t('添加运维节点'));
-const spiderDbTableBackupRoute = {
- path: 'db-table-backup/:page?',
- name: 'spiderDbTableBackup',
- meta: {
- navName: t('库表备份'),
- },
- component: () => import('@views/db-manage/tendb-cluster/db-table-backup/Index.vue'),
-};
+const spiderDbTableBackupRoute = createRouteItem(TicketTypes.TENDBCLUSTER_DB_TABLE_BACKUP, t('库表备份'));
-const spiderDbBackupRoute = {
- path: 'db-backup/:page?',
- name: 'spiderDbBackup',
- meta: {
- navName: t('全库备份'),
- },
- component: () => import('@views/db-manage/tendb-cluster/db-backup/Index.vue'),
-};
+const spiderDbBackupRoute = createRouteItem(TicketTypes.TENDBCLUSTER_FULL_BACKUP, t('全库备份'));
const spiderFlashbackRoute = {
path: 'flashback/:page?',
diff --git a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/toolbox-menu.ts b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/toolbox-menu.ts
index 782d2be534..e1751d3fb7 100644
--- a/dbm-ui/frontend/src/views/db-manage/tendb-cluster/toolbox-menu.ts
+++ b/dbm-ui/frontend/src/views/db-manage/tendb-cluster/toolbox-menu.ts
@@ -124,13 +124,13 @@ export default [
children: [
{
name: t('库表备份'),
- id: 'spiderDbTableBackup',
+ id: TicketTypes.TENDBCLUSTER_DB_TABLE_BACKUP,
parentId: 'spider_copy',
dbConsoleValue: 'tendbCluster.toolbox.dbTableBackup',
},
{
name: t('全库备份'),
- id: 'spiderDbBackup',
+ id: TicketTypes.TENDBCLUSTER_FULL_BACKUP,
parentId: 'spider_copy',
dbConsoleValue: 'tendbCluster.toolbox.dbBackup',
},