From e02cd0d4a2f4349de0ef2726c4de0f63ae47a988 Mon Sep 17 00:00:00 2001 From: hLinx <327159425@qq.com> Date: Sun, 29 Sep 2024 17:23:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(frontend):=20=E5=8D=95=E6=8D=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E8=BF=AD=E4=BB=A3=20#7190?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbm-ui/frontend/.prettierignore | 3 + .../frontend/lib/bk-icon/fonts/iconcool.eot | Bin 52560 -> 53216 bytes .../frontend/lib/bk-icon/fonts/iconcool.svg | 453 +++++++------ .../frontend/lib/bk-icon/fonts/iconcool.ttf | Bin 52392 -> 53048 bytes .../frontend/lib/bk-icon/fonts/iconcool.woff | Bin 31228 -> 31676 bytes dbm-ui/frontend/lib/bk-icon/iconcool.js | 19 +- dbm-ui/frontend/lib/bk-icon/iconcool.json | 2 +- dbm-ui/frontend/lib/bk-icon/style.css | 9 + .../frontend/src/common/const/ticketTypes.ts | 80 +-- dbm-ui/frontend/src/common/importComps.ts | 2 + .../components/common/task-panel/Item.vue | 2 +- .../src/components/db-popconfirm/index.vue | 58 +- .../src/components/db-search-select/index.vue | 5 + .../Index.vue | 17 +- .../src/components/scroll-faker/Index.vue | 37 +- .../stretch-layout/StretchLayout.vue | 41 +- .../components/ticket-status-tag/Index.vue | 73 ++ dbm-ui/frontend/src/hooks/index.ts | 1 + .../frontend/src/hooks/useSQLTaskNotify.tsx | 4 +- .../generateCloneData/mysql/authorizeRule.ts | 5 +- .../generateCloneData/mysql/checksum.ts | 5 +- .../generateCloneData/mysql/clientClone.ts | 5 +- .../generateCloneData/mysql/dataMigrate.ts | 5 +- .../generateCloneData/mysql/dbRename.ts | 5 +- .../generateCloneData/mysql/flashback.ts | 5 +- .../generateCloneData/mysql/haApply.ts | 5 +- .../generateCloneData/mysql/haDbBackup.ts | 5 +- .../generateCloneData/mysql/haDbClear.ts | 5 +- .../mysql/haDbTableBackup.ts | 5 +- .../generateCloneData/mysql/importSqlFile.ts | 6 +- .../generateCloneData/mysql/instanceClone.ts | 5 +- .../generateCloneData/mysql/masterFailover.ts | 5 +- .../mysql/masterSlaveSwitch.ts | 5 +- .../generateCloneData/mysql/migrateCluster.ts | 5 +- .../generateCloneData/mysql/openArea.ts | 5 +- .../generateCloneData/mysql/proxyAdd.ts | 5 +- .../generateCloneData/mysql/proxyReplace.ts | 5 +- .../mysql/restoreLocalSlave.ts | 5 +- .../generateCloneData/mysql/restoreSlave.ts | 5 +- .../generateCloneData/mysql/rollback.ts | 5 +- .../generateCloneData/mysql/singleApply.ts | 5 +- .../generateCloneData/mysql/slaveAdd.ts | 5 +- .../mysql/versionLocalUpgrade.ts | 5 +- .../mysql/versionMigrateUpgrade.ts | 5 +- .../mysql/versionProxyUpgrade.ts | 5 +- .../generateCloneData/redis/apply.ts | 5 +- .../redis/clusterAddSlave.ts | 5 +- .../generateCloneData/redis/clusterCutoff.ts | 5 +- .../redis/clusterShardUpdate.ts | 7 +- .../redis/clusterTypeUpdate.ts | 5 +- .../generateCloneData/redis/dataCopy.ts | 5 +- .../redis/dataCopyCheckRepair.ts | 5 +- .../generateCloneData/redis/dataStructure.ts | 5 +- .../redis/masterSlaveSwitch.ts | 5 +- .../generateCloneData/redis/operation.ts | 5 +- .../generateCloneData/redis/proxyScaleDown.ts | 5 +- .../generateCloneData/redis/proxyScaleUp.ts | 5 +- .../generateCloneData/redis/rollbackData.ts | 5 +- .../generateCloneData/redis/scaleUpdown.ts | 5 +- .../generateCloneData/redis/versionUpgrade.ts | 5 +- .../generateCloneData/spider/addMnt.ts | 5 +- .../generateCloneData/spider/apply.ts | 5 +- .../generateCloneData/spider/authorizeRule.ts | 5 +- .../spider/capacityChange.ts | 5 +- .../generateCloneData/spider/checksum.ts | 5 +- .../generateCloneData/spider/dbBackup.ts | 5 +- .../generateCloneData/spider/dbClear.ts | 5 +- .../generateCloneData/spider/dbRename.ts | 5 +- .../generateCloneData/spider/dbTableBackup.ts | 5 +- .../generateCloneData/spider/flashback.ts | 5 +- .../generateCloneData/spider/index.ts | 2 +- .../spider/masterFailover.ts | 5 +- .../spider/masterSlaveClone.ts | 5 +- .../spider/masterSlaveSwap.ts | 5 +- .../spider/privilegeCloneClient.ts | 5 +- .../spider/privilegeCloneInst.ts | 7 +- .../spider/proxyScaleDown.ts | 5 +- .../generateCloneData/spider/proxyScaleUp.ts | 5 +- .../spider/proxySlaveApply.ts | 5 +- .../generateCloneData/spider/rollback.ts | 44 -- .../spider/slaveRebuildLocal.ts | 7 +- .../spider/slaveRebuildNew.ts | 5 +- .../generateCloneData/spider/sqlExecute.ts | 6 +- .../tendbcluster/rollback.ts | 5 +- dbm-ui/frontend/src/hooks/useTicketCount.ts | 39 ++ dbm-ui/frontend/src/layout/Index.vue | 19 +- .../layout/components/PersonalWorkbench.vue | 84 ++- .../components/database-manage/Index.vue | 2 +- dbm-ui/frontend/src/locales/zh-cn.json | 74 +- dbm-ui/frontend/src/router/index.ts | 35 +- .../services/model/ticket/details/common.ts | 22 +- .../model/ticket/details/doris/apply.ts | 27 + .../model/ticket/details/doris/destroy.ts | 6 + .../model/ticket/details/doris/disable.ts | 6 + .../model/ticket/details/doris/enable.ts | 6 + .../model/ticket/details/doris/index.ts | 8 + .../model/ticket/details/doris/reboot.ts | 14 + .../model/ticket/details/doris/replace.ts | 33 + .../model/ticket/details/doris/scaleUp.ts | 41 ++ .../model/ticket/details/doris/shrink.ts | 41 ++ .../ticket/details/dumper/disableNodes.ts | 37 + .../ticket/details/dumper/enableNodes.ts | 37 + .../model/ticket/details/dumper/index.ts | 5 + .../model/ticket/details/dumper/install.ts | 19 + .../ticket/details/dumper/reduceNodes.ts | 3 + .../ticket/details/dumper/switchNodes.ts | 15 + .../ticket/details/elastic-search/apply.ts | 26 + .../ticket/details/elastic-search/destroy.ts | 6 + .../ticket/details/elastic-search/disable.ts | 6 + .../ticket/details/elastic-search/enable.ts | 6 + .../ticket/details/elastic-search/index.ts | 8 + .../ticket/details/elastic-search/reboot.ts | 14 + .../ticket/details/elastic-search/replace.ts | 33 + .../ticket/details/elastic-search/scaleUp.ts | 41 ++ .../ticket/details/elastic-search/shrink.ts | 41 ++ .../model/ticket/details/hdfs/apply.ts | 25 + .../model/ticket/details/hdfs/destroy.ts | 6 + .../model/ticket/details/hdfs/disable.ts | 6 + .../model/ticket/details/hdfs/enable.ts | 6 + .../model/ticket/details/hdfs/index.ts | 8 + .../model/ticket/details/hdfs/reboot.ts | 14 + .../model/ticket/details/hdfs/replace.ts | 33 + .../model/ticket/details/hdfs/scaleUp.ts | 41 ++ .../model/ticket/details/hdfs/shrink.ts | 41 ++ .../model/ticket/details/influxdb/apply.ts | 19 + .../model/ticket/details/influxdb/destroy.ts | 11 + .../model/ticket/details/influxdb/disable.ts | 11 + .../model/ticket/details/influxdb/enable.ts | 11 + .../model/ticket/details/influxdb/index.ts | 6 + .../model/ticket/details/influxdb/reboot.ts | 11 + .../model/ticket/details/influxdb/replace.ts | 18 + .../model/ticket/details/kafka/apply.ts | 25 + .../model/ticket/details/kafka/destroy.ts | 6 + .../model/ticket/details/kafka/disable.ts | 6 + .../model/ticket/details/kafka/enable.ts | 6 + .../model/ticket/details/kafka/index.ts | 8 + .../model/ticket/details/kafka/reboot.ts | 14 + .../model/ticket/details/kafka/replace.ts | 33 + .../model/ticket/details/kafka/scaleUp.ts | 41 ++ .../model/ticket/details/kafka/shrink.ts | 41 ++ .../model/ticket/details/mongodb/addMongos.ts | 18 + .../ticket/details/mongodb/addShardNodes.ts | 19 + .../ticket/details/mongodb/authorizeRules.ts | 16 + .../model/ticket/details/mongodb/backup.ts | 17 + .../model/ticket/details/mongodb/cutoff.ts | 22 + .../model/ticket/details/mongodb/destroy.ts | 6 + .../model/ticket/details/mongodb/disable.ts | 6 + .../model/ticket/details/mongodb/enable.ts | 6 + .../ticket/details/mongodb/excelAuthorize.ts | 16 + .../ticket/details/mongodb/execScriptApply.ts | 11 + .../ticket/details/mongodb/fullBackup.ts | 35 + .../model/ticket/details/mongodb/index.ts | 19 + .../ticket/details/mongodb/reduceMongos.ts | 16 + .../details/mongodb/reduceShardNodes.ts | 11 + .../model/ticket/details/mongodb/removeNs.ts | 17 + .../ticket/details/mongodb/replicasetApply.ts | 30 + .../model/ticket/details/mongodb/restore.ts | 122 ++++ .../ticket/details/mongodb/scaleUpdown.ts | 19 + .../ticket/details/mongodb/shardApply.ts | 25 + .../details/mongodb/temporaryDestroy.ts | 32 + .../services/model/ticket/details/mysql.ts | 638 ------------------ .../ticket/details/mysql/accountRuleChange.ts | 14 + .../model/ticket/details/mysql/addSlava.ts | 19 + .../ticket/details/mysql/authorizeRules.ts | 33 + .../model/ticket/details/mysql/checkSum.ts | 37 + .../ticket/details/mysql/clientCloneRules.ts | 17 + .../model/ticket/details/mysql/dataMigrate.ts | 15 + .../model/ticket/details/mysql/dumpData.ts | 13 + .../details/mysql/excelAuthorizeRules.ts | 33 + .../model/ticket/details/mysql/flashBack.ts | 21 + .../model/ticket/details/mysql/haApply.ts | 33 + .../ticket/details/mysql/haDBTableBackup.ts | 15 + .../ticket/details/mysql/haFullBackup.ts | 16 + .../ticket/details/mysql/haRenameDatabase.ts | 12 + .../ticket/details/mysql/haTeuncateData.ts | 18 + .../ticket/details/mysql/importSqlFile.ts | 42 ++ .../model/ticket/details/mysql/index.ts | 31 + .../details/mysql/instanceCloneRules.ts | 18 + .../ticket/details/mysql/localUpgrade.ts | 18 + .../ticket/details/mysql/masterFailOver.ts | 30 + .../ticket/details/mysql/masterSlaveSwitch.ts | 29 + .../ticket/details/mysql/migrateCluster.ts | 29 + .../ticket/details/mysql/migrateUpgrade.ts | 62 ++ .../model/ticket/details/mysql/openArea.ts | 36 + .../model/ticket/details/mysql/partition.ts | 31 + .../model/ticket/details/mysql/proxyAdd.ts | 15 + .../model/ticket/details/mysql/proxySwitch.ts | 27 + .../ticket/details/mysql/proxyUpgrade.ts | 13 + .../ticket/details/mysql/restoreLocalSlave.ts | 21 + .../ticket/details/mysql/restoreSlave.ts | 27 + .../ticket/details/mysql/rollBackCluster.ts | 90 +++ .../model/ticket/details/mysql/singleApply.ts | 33 + .../details/mysql/singleRenameDatabase.ts | 12 + .../model/ticket/details/pulsar/apply.ts | 28 + .../model/ticket/details/pulsar/destroy.ts | 6 + .../model/ticket/details/pulsar/disable.ts | 6 + .../model/ticket/details/pulsar/enable.ts | 6 + .../model/ticket/details/pulsar/index.ts | 8 + .../model/ticket/details/pulsar/reboot.ts | 14 + .../model/ticket/details/pulsar/replace.ts | 33 + .../model/ticket/details/pulsar/scaleUp.ts | 41 ++ .../model/ticket/details/pulsar/shrink.ts | 41 ++ .../services/model/ticket/details/redis.ts | 417 ------------ .../model/ticket/details/redis/backup.ts | 17 + .../ticket/details/redis/clusterAddSlave.ts | 24 + .../ticket/details/redis/clusterApply.ts | 49 ++ .../ticket/details/redis/clusterCutoff.ts | 24 + .../ticket/details/redis/clusterDataCopy.ts | 24 + .../details/redis/clusterRollbackDataCopy.ts | 15 + .../details/redis/clusterShardNumUpdate.ts | 33 + .../ticket/details/redis/clusterTypeUpdate.ts | 35 + .../ticket/details/redis/dataStructure.ts | 19 + .../details/redis/dataStructureTaskDelete.ts | 9 + .../details/redis/datacopyCheckRepair.ts | 21 + .../model/ticket/details/redis/destroy.ts | 6 + .../model/ticket/details/redis/index.ts | 35 + .../model/ticket/details/redis/insApply.ts | 32 + .../ticket/details/redis/instanceDestroy.ts | 6 + .../details/redis/instanceProxyClose.ts | 6 + .../ticket/details/redis/instanceProxyOpen.ts | 6 + .../model/ticket/details/redis/keysDelete.ts | 17 + .../model/ticket/details/redis/keysExtract.ts | 17 + .../ticket/details/redis/masterSlaveSwitch.ts | 15 + .../ticket/details/redis/pluginCreateClb.ts | 6 + .../details/redis/pluginCreatePolaris.ts | 3 + .../ticket/details/redis/pluginDeleteClb.ts | 6 + .../details/redis/pluginDeletePolaris.ts | 3 + .../ticket/details/redis/pluginDnsBindClb.ts | 6 + .../details/redis/pluginDnsUnbindClb.ts | 6 + .../model/ticket/details/redis/proxyClose.ts | 6 + .../model/ticket/details/redis/proxyOpen.ts | 6 + .../ticket/details/redis/proxyScaleDown.ts | 17 + .../ticket/details/redis/proxyScaleUp.ts | 18 + .../model/ticket/details/redis/purge.ts | 17 + .../model/ticket/details/redis/scaleDown.ts | 3 + .../model/ticket/details/redis/scaleUp.ts | 3 + .../model/ticket/details/redis/scaleUpdown.ts | 27 + .../ticket/details/redis/slotsMigrate.ts | 3 + .../details/redis/versionUpdateOnline.ts | 11 + .../model/ticket/details/riak/apply.ts | 22 + .../model/ticket/details/riak/destroy.ts | 6 + .../model/ticket/details/riak/disable.ts | 6 + .../model/ticket/details/riak/enable.ts | 6 + .../model/ticket/details/riak/index.ts | 7 + .../model/ticket/details/riak/reboot.ts | 9 + .../model/ticket/details/riak/scaleIn.ts | 22 + .../model/ticket/details/riak/scaleOut.ts | 22 + .../services/model/ticket/details/spider.ts | 429 ------------ .../ticket/details/sqlserver/importSqlFile.ts | 12 +- .../details/tendbCluster/accountRuleChange.ts | 14 + .../ticket/details/tendbCluster/apply.ts | 34 + .../details/tendbCluster/authorizeRules.ts | 33 + .../ticket/details/tendbCluster/checkSum.ts | 28 + .../details/tendbCluster/clientCloneRules.ts | 17 + .../details/tendbCluster/dBTableBackup.ts | 16 + .../ticket/details/tendbCluster/destroy.ts | 6 + .../ticket/details/tendbCluster/disable.ts | 5 + .../ticket/details/tendbCluster/dumpData.ts | 13 + .../ticket/details/tendbCluster/enable.ts | 6 + .../tendbCluster/excelAuthorizeRules.ts | 33 + .../ticket/details/tendbCluster/flashBack.ts | 22 + .../ticket/details/tendbCluster/fullBackup.ts | 16 + .../details/tendbCluster/importSqlFile.ts | 42 ++ .../ticket/details/tendbCluster/index.ts | 33 + .../tendbCluster/instanceCloneRules.ts | 19 + .../details/tendbCluster/masterFailOver.ts | 30 + .../details/tendbCluster/masterSlaveSwitch.ts | 28 + .../details/tendbCluster/migrateCluster.ts | 26 + .../details/tendbCluster/nodeRebalance.ts | 30 + .../ticket/details/tendbCluster/openArea.ts | 31 + .../ticket/details/tendbCluster/partition.ts | 31 + .../details/tendbCluster/renameDataBase.ts | 15 + .../details/tendbCluster/restoreLocalSlave.ts | 21 + .../details/tendbCluster/restoreSlave.ts | 45 ++ .../details/tendbCluster/rollBackCluster.ts | 75 ++ .../details/tendbCluster/spiderAddNodes.ts | 21 + .../details/tendbCluster/spiderMntApply.ts | 18 + .../details/tendbCluster/spiderMntDestroy.ts | 12 + .../details/tendbCluster/spiderReduceNodes.ts | 21 + .../details/tendbCluster/spiderSlaveApply.ts | 49 ++ .../tendbCluster/spiderSlaveDestroy.ts | 6 + .../details/tendbCluster/truncateDataBase.ts | 18 + .../src/services/model/ticket/flow.ts | 148 ++++ .../src/services/model/ticket/ticket.ts | 92 ++- .../frontend/src/services/source/profile.ts | 1 + .../frontend/src/services/source/ticket.tsx | 4 + .../src/services/source/ticketFlow.ts | 97 +++ dbm-ui/frontend/src/services/types/ticket.ts | 515 +------------- dbm-ui/frontend/src/stores/useUserProfile.ts | 17 +- dbm-ui/frontend/src/styles/common.less | 1 - dbm-ui/frontend/src/utils/getBusinessHref.ts | 2 + dbm-ui/frontend/src/utils/index.ts | 1 + .../db-manage/common/FlowRedisKeyExtract.vue | 399 +++++++++++ .../mysql/rollback/pages/page1/Index.vue | 8 +- .../pages/page1/components/RenderData.vue | 25 +- .../pages/page1/components/RenderTable.vue | 26 +- .../page1/components/render-row/Index.vue | 21 +- .../components/RenderHostInputSelect.vue | 11 +- .../mysql/sql-execute/steps/step2/Index.vue | 6 +- .../components/render-status/Success.vue | 1 + .../redis/db-data-copy/pages/page1/Index.vue | 6 +- .../Index.vue | 6 +- .../RenderClusterType.vue | 11 +- .../selfbuilt-clusters-intra-business/Row.vue | 13 +- .../rollback/pages/page1/Index.vue | 8 +- .../pages/page1/components/RenderData.vue | 25 +- .../pages/page1/components/RenderTable.vue | 26 +- .../page1/components/render-row/Index.vue | 21 +- .../sql-execute/steps/step1/Index.vue | 4 +- .../sql-execute/steps/step2/Index.vue | 6 +- .../views/quick-search/components/Ticket.vue | 7 +- .../rollback/pages/page1/Index.vue | 77 --- .../src/views/task-history/pages/Details.vue | 4 +- .../views/ticket-center/business/Index.vue | 69 ++ .../business/components/list/Index.vue | 30 + .../components/list/components/CardMode.vue | 58 ++ .../components/list/components/TableMode.vue | 143 ++++ .../ticket-center/common/CardModeList.vue | 263 ++++++++ .../ticket-center/common/TableModeTable.vue | 482 +++++++++++++ .../ticket-center/common/TicketClone.vue | 184 +++++ .../action-confirm/ProcessApproveExce.vue | 84 +++ .../common/action-confirm/ProcessPass.vue | 101 +++ .../common/action-confirm/ProcessRefuse.vue | 103 +++ .../common/action-confirm/ProcessRetry.vue | 84 +++ .../action-confirm/ProcessTerminate.vue | 103 +++ .../common}/hooks/use-date-picker.ts | 11 + .../common/hooks/use-fetch-data.ts} | 87 ++- .../common/hooks/use-search-select.ts | 106 +++ .../common/hooks/use-url-redirect.ts | 82 +++ .../common/ticket-detail}/Index.vue | 134 +--- .../ticket-detail/components/BaseInfo.vue | 7 +- .../components/common}/MessageList.vue | 0 .../components/common/SqlFileContent.vue} | 5 - .../components/common}/SqlFileList.vue | 0 .../components/flow-info/Index.vue | 113 ++++ .../flow-info/components/FlowTypeBase.vue | 21 + .../flow-type-common/StatusFailed.vue | 92 +++ .../flow-type-common/StatusRunning.vue | 76 +++ .../flow-type-common/StatusSkipped.vue | 83 +++ .../flow-type-common/StatusSucceeded.vue | 78 +++ .../flow-type-common/StatusTerminated.vue | 74 ++ .../flow-type-common/StausPending.vue | 28 + .../components/flow-type-common/index.ts | 17 + .../components/flow-type-delivery/Index.vue | 38 ++ .../components/SqlGrammarCheck.vue | 235 +++++++ .../flow-type-describe-task/Index.vue | 38 ++ .../StatusSucceeded.vue | 65 ++ .../components/flow-type-inner-flow/Index.vue | 38 ++ .../flow-type-inner-flow/StatusFailed.vue | 69 ++ .../flow-type-inner-flow/StatusRunning.vue | 46 ++ .../flow-type-inner-flow/StatusSucceeded.vue | 70 ++ .../flow-type-inner-flow/StatusTerminated.vue | 44 ++ .../components/MysqlDumpDataDownload.vue | 37 + .../components/flow-type-itsm/Index.vue | 46 ++ .../flow-type-itsm/StatusFailed.vue | 49 ++ .../flow-type-itsm/StatusRunning.vue | 36 + .../flow-type-itsm/StatusSucceeded.vue | 53 ++ .../flow-type-itsm/StatusTerminated.vue | 61 ++ .../components/flow-type-pause/Index.vue | 41 ++ .../flow-type-pause/StatusFailed.vue | 54 ++ .../flow-type-pause/StatusRunning.vue | 31 + .../flow-type-pause/StatusSucceeded.vue | 31 + .../flow-type-pause/StatusTerminated.vue | 31 + .../components/flow-type-timer/Index.vue | 31 + .../flow-type-timer/StatusRunning.vue | 42 ++ .../components/RunCountdown.vue | 29 + .../flow-info/components/time-line/Index.vue | 11 + .../components/time-line/TimeLineItem.vue | 107 +++ .../flow-info/components/todo-list/Index.vue | 35 + .../todo-list/common/StatusDoneFailed.vue | 52 ++ .../todo-list/common/StatusDoneSuccess.vue | 45 ++ .../todo-list/common/StatusTodo.vue | 66 ++ .../components/todo-list/common/index.ts | 17 + .../todo-list/type-approve/Index.vue | 22 + .../todo-list/type-inner-approve/Index.vue | 26 + .../type-inner-approve/StatusTodo.vue | 38 ++ .../components/todo-list/type-itsm/Index.vue | 30 + .../todo-list/type-itsm/StatusDoneFailed.vue | 22 + .../todo-list/type-itsm/StatusTodo.vue | 52 ++ .../type-resource-replenish/Index.vue | 26 + .../type-resource-replenish/StatusTodo.vue | 52 ++ .../components/task-info/Index.vue} | 11 +- .../task-info/com-factory}/Default.vue | 2 +- .../task-info/com-factory/Index.vue | 469 +------------ .../common/bigdata/ClusterOperation.vue} | 8 +- .../bigdata/scale-up-&-shrink}/Index.vue | 15 +- .../scale-up-&-shrink}/SelectIpTable.vue | 0 .../mysql-account-rule-change}/Index.vue | 12 +- .../components/PreviewDiff.vue | 5 +- .../components/RuleDeleteTable.vue | 47 +- .../mysql-authorize-rules}/Index.vue | 30 +- .../components}/TargetClusterPreview.vue | 74 +- .../components}/useTargetClusterData.ts | 16 +- .../common/mysql-dump-data/Index.vue} | 38 +- .../common/mysql-import-sqlfile}/Index.vue | 12 +- .../components/render-sqlfile/Index.vue | 0 .../components/RenderFileContent.vue | 0 .../components/RenderFileList.vue | 0 .../common/mysql-open-area}/Index.vue | 11 +- .../mysql-open-area}/components/CloneRule.vue | 0 .../components/PermissionRule.vue | 5 +- .../components/TargetCluster.vue | 6 +- .../common/mysql-partition/Index.vue} | 9 +- .../com-factory}/components/DemandInfo.vue | 4 +- .../com-factory}/components/SpecInfos.vue | 0 .../components/TableGroupContent.vue | 0 .../components/import-sqlfile/Index.vue | 220 ++++++ .../components/render-sqlfile/Index.vue | 146 ++++ .../components/RenderFileContent.vue | 196 ++++++ .../components/RenderFileList.vue | 137 ++++ .../components/info-list/Index.vue | 0 .../components/info-list/InfoItem.vue | 43 ++ .../task-info/com-factory/doris/Apply.vue} | 15 +- .../task-info/com-factory/doris/Destroy.vue} | 36 +- .../task-info/com-factory/doris/Disable.vue | 34 + .../task-info/com-factory/doris/Enable.vue | 34 + .../task-info/com-factory/doris/Reboot.vue} | 49 +- .../task-info/com-factory/doris}/Replace.vue | 47 +- .../task-info/com-factory/doris/ScaleUp.vue | 34 + .../task-info/com-factory/doris/Shrink.vue | 34 + .../com-factory/dumper/DisableNodes.vue | 34 + .../com-factory/dumper/EnableNodes.vue | 34 + .../task-info/com-factory/dumper/Install.vue} | 21 +- .../com-factory/dumper/SwitchNodes.vue} | 16 +- .../dumper/common/Disable&Enable.vue} | 11 +- .../com-factory/elastic-search/Apply.vue} | 28 +- .../com-factory/elastic-search/Destroy.vue | 34 + .../com-factory/elastic-search/Disable.vue | 34 + .../com-factory/elastic-search/Enable.vue | 34 + .../com-factory/elastic-search}/Reboot.vue | 15 +- .../com-factory/elastic-search/Replace.vue | 141 ++++ .../com-factory/elastic-search/ScaleUp.vue | 34 + .../com-factory/elastic-search/Shrink.vue} | 16 +- .../task-info/com-factory/hdfs/Apply.vue} | 26 +- .../task-info/com-factory/hdfs/Destroy.vue | 34 + .../task-info/com-factory/hdfs/Disable.vue | 34 + .../task-info/com-factory/hdfs/Enable.vue | 34 + .../task-info/com-factory/hdfs/Reboot.vue} | 73 +- .../task-info/com-factory/hdfs/Replace.vue | 141 ++++ .../task-info/com-factory/hdfs/ScaleUp.vue | 34 + .../task-info/com-factory/hdfs/Shrink.vue | 34 + .../task-info/com-factory/influxdb/Apply.vue} | 41 +- .../com-factory/influxdb/Destroy.vue | 35 + .../com-factory/influxdb/Disable.vue | 35 + .../task-info/com-factory/influxdb/Enable.vue | 35 + .../task-info/com-factory/influxdb/Reboot.vue | 35 + .../com-factory}/influxdb/Replace.vue | 27 +- .../influxdb/common/Operation.vue} | 0 .../task-info/com-factory/kafka/Apply.vue} | 26 +- .../task-info/com-factory/kafka/Destroy.vue | 34 + .../task-info/com-factory/kafka/Disable.vue | 34 + .../task-info/com-factory/kafka/Enable.vue | 34 + .../task-info/com-factory/kafka/Reboot.vue | 94 +++ .../task-info/com-factory/kafka/Replace.vue | 141 ++++ .../task-info/com-factory/kafka/ScaleUp.vue | 34 + .../task-info/com-factory/kafka/Shrink.vue | 34 + .../com-factory/mongodb/AddMongos.vue} | 67 +- .../com-factory/mongodb/AddShardNodes.vue} | 56 +- .../com-factory/mongodb/AuthorizeRules.vue | 12 +- .../task-info/com-factory/mongodb/Backup.vue} | 74 +- .../task-info/com-factory/mongodb/Cutoff.vue} | 71 +- .../task-info/com-factory/mongodb/Destroy.vue | 21 + .../task-info/com-factory/mongodb/Disable.vue | 21 + .../task-info/com-factory/mongodb/Enable.vue | 21 + .../com-factory/mongodb/ExcelAuthorize.vue} | 12 +- .../com-factory/mongodb/ExecScriptApply.vue} | 47 +- .../com-factory/mongodb/FullBackup.vue} | 67 +- .../com-factory/mongodb/ReduceMongos.vue} | 45 +- .../com-factory/mongodb/ReduceShardNodes.vue} | 68 +- .../com-factory/mongodb/RemoveNs.vue} | 73 +- .../com-factory/mongodb/ReplicasetApply.vue} | 16 +- .../com-factory/mongodb/Restore.vue} | 175 +---- .../com-factory/mongodb/ScaleUpdown.vue} | 73 +- .../com-factory/mongodb/ShardApply.vue} | 16 +- .../com-factory/mongodb/TemporaryDestroy.vue} | 40 +- .../common/Destroy&Disable&Enable.vue} | 32 +- .../mongodb}/components/RenderFileContent.vue | 0 .../mongodb}/components/SqlFileList.vue | 0 .../components}/TargetClusterPreview.vue | 0 .../com-factory/mysql/AccountRuleChange.vue | 21 + .../task-info/com-factory/mysql/AddSlave.vue | 59 ++ .../com-factory/mysql/AuthorizeRule.vue | 21 + .../task-info/com-factory/mysql/Checksum.vue | 115 ++++ .../com-factory/mysql/ClientCloneRules.vue | 72 ++ .../com-factory/mysql/DataMigrate.vue | 68 ++ .../task-info/com-factory/mysql/DbRename.vue | 21 + .../task-info/com-factory/mysql/DumpData.vue | 21 + .../com-factory/mysql/ExcelAuthrizeRule.vue | 21 + .../task-info/com-factory/mysql/Flashback.vue | 95 +++ .../com-factory/mysql/ForceImportSqlfile.vue | 21 + .../com-factory/mysql/HaDBTableBackup.vue | 83 +++ .../com-factory/mysql/HaFullBackup.vue | 99 +++ .../com-factory/mysql/ImportSqlfile.vue | 21 + .../com-factory/mysql/InstanceCloneRules.vue | 54 ++ .../com-factory/mysql/LocalUpgrade.vue} | 21 +- .../com-factory/mysql/MasterFailOver.vue | 59 ++ .../com-factory/mysql/MasterSlaveSwitch.vue | 59 ++ .../com-factory/mysql/MigrateCluster.vue | 61 ++ .../com-factory/mysql/MigrateUpgrade.vue} | 58 +- .../task-info/com-factory/mysql/OpenArea.vue | 21 + .../task-info/com-factory/mysql/Partition.vue | 21 + .../task-info/com-factory/mysql/ProxyAdd.vue | 54 ++ .../com-factory/mysql/ProxySwitch.vue | 49 ++ .../com-factory/mysql/ProxyUpgrade.vue} | 23 +- .../com-factory}/mysql/RestoreLocalSlave.vue | 18 +- .../com-factory/mysql/RestoreSlave.vue | 66 ++ .../com-factory/mysql/SingleBbRename.vue | 21 + .../com-factory/mysql/common/DBRename.vue | 34 + .../mysql}/components/VersionContent.vue | 0 .../openarea/components/PermissionRule.vue | 181 ----- .../task-info/com-factory/pulsar/Apply.vue} | 56 +- .../task-info/com-factory/pulsar/Destroy.vue | 34 + .../task-info/com-factory/pulsar/Disable.vue | 34 + .../task-info/com-factory/pulsar/Enable.vue | 34 + .../task-info/com-factory/pulsar/Reboot.vue | 94 +++ .../task-info/com-factory/pulsar/Replace.vue | 141 ++++ .../task-info/com-factory/pulsar/ScaleUp.vue | 34 + .../task-info/com-factory/pulsar/Shrink.vue | 34 + .../task-info/com-factory/redis/Backup.vue | 118 ++++ .../com-factory/redis/ClusterAddSlave.vue} | 12 +- .../com-factory/redis/ClusterApply.vue | 301 +++++++++ .../com-factory/redis/ClusterCutoff.vue} | 5 +- .../com-factory/redis/ClusterDataCopy.vue} | 16 +- .../redis/ClusterRollbackDataCopy.vue} | 15 +- .../redis/ClusterShardNumUpdate.vue} | 15 +- .../com-factory/redis/ClusterTypeUpdate.vue | 205 ++++++ .../com-factory}/redis/DataStructure.vue | 12 +- .../redis/DataStructureTaskDelete.vue} | 12 +- .../redis/DatacopyCheckRepair.vue} | 17 +- .../task-info/com-factory/redis/Destroy.vue | 34 + .../task-info/com-factory/redis/InsApply.vue} | 16 +- .../com-factory/redis/InstanceDestroy.vue | 34 + .../com-factory/redis/InstanceProxyClose.vue | 34 + .../com-factory/redis/InstanceProxyOpen.vue | 34 + .../com-factory/redis/KeysDelete.vue} | 120 +--- .../com-factory/redis/KeysExtract.vue | 121 ++++ .../com-factory/redis/PluginDeleteClb.vue | 34 + .../com-factory/redis/PluginDnsBindClb.vue | 34 + .../com-factory/redis/PluginDnsUnbindClb.vue | 34 + .../com-factory/redis/ProxyClose.vue | 34 + .../task-info/com-factory/redis/ProxyOpen.vue | 34 + .../com-factory/redis/ProxyScaleDown.vue | 167 +++++ .../com-factory}/redis/ProxyScaleUp.vue | 34 +- .../task-info/com-factory/redis/Purge.vue | 110 +++ .../com-factory/redis/ScaleUpdown.vue} | 14 +- .../redis/VersionUpdateOnline.vue} | 14 +- .../com-factory/redis/common/Clb.vue} | 5 +- .../redis/common/InstanceOperation.vue} | 12 +- .../com-factory/redis/masterSlaveSwitch.vue} | 16 +- .../com-factory/redis/pluginCreateClb.vue | 34 + .../task-info/com-factory/riak/Apply.vue} | 37 +- .../task-info/com-factory/riak/Destroy.vue | 34 + .../task-info/com-factory/riak/Disable.vue | 34 + .../task-info/com-factory/riak/Enable.vue | 34 + .../task-info/com-factory/riak/Reboot.vue} | 36 +- .../task-info/com-factory/riak/ScaleIn.vue | 34 + .../task-info/com-factory/riak/ScaleOut.vue | 34 + .../riak/common/ScaleIn&ScaleOut.vue} | 30 +- .../com-factory/spider/AuthorizeRules.vue | 204 ------ .../com-factory}/sqlserver/AddSlave.vue | 1 + .../com-factory}/sqlserver/AuthorizeRules.vue | 1 + .../com-factory}/sqlserver/BackupDbs.vue | 5 +- .../com-factory}/sqlserver/BuildDbSync.vue | 1 + .../com-factory}/sqlserver/ClearDbs.vue | 1 + .../com-factory}/sqlserver/ClusterDestroy.vue | 1 + .../com-factory}/sqlserver/ClusterDisable.vue | 1 + .../com-factory}/sqlserver/ClusterEnable.vue | 1 + .../com-factory}/sqlserver/DataMigrate.vue | 1 + .../com-factory}/sqlserver/DbRename.vue | 1 + .../com-factory}/sqlserver/HaApply.vue | 11 +- .../com-factory}/sqlserver/ImportSqlfile.vue | 3 +- .../com-factory}/sqlserver/MasterFailOver.vue | 1 + .../sqlserver/MasterSlaveSwitch.vue | 1 + .../com-factory}/sqlserver/Reset.vue | 1 + .../sqlserver/RestoreLocalSlave.vue | 1 + .../com-factory}/sqlserver/RestoreSlave.vue | 1 + .../com-factory}/sqlserver/Rollback.vue | 5 +- .../com-factory}/sqlserver/SingleApply.vue | 9 +- .../sqlserver/common/DataMigrate.vue | 4 +- .../common/Disabled&enable&destroy.vue | 0 .../com-factory}/sqlserver/fullMigrate.vue | 1 + .../com-factory}/sqlserver/incrMigrate.vue | 1 + .../tendbCluster/AccountRuleChange.vue | 21 + .../com-factory/tendbCluster/Apply.vue} | 20 +- .../tendbCluster/AuthorizeRule.vue | 21 + .../com-factory/tendbCluster/CheckSum.vue | 178 +++++ .../tendbCluster/ClientCloneRules.vue | 73 ++ .../tendbCluster/DBTableBackup.vue | 89 +++ .../com-factory/tendbCluster}/Destroy.vue | 15 +- .../com-factory/tendbCluster}/Disable.vue | 15 +- .../com-factory/tendbCluster/DumpData.vue | 21 + .../com-factory/tendbCluster}/Enable.vue | 15 +- .../tendbCluster/ExcelAuthrizeRule.vue | 21 + .../com-factory/tendbCluster/Flashback.vue | 96 +++ .../com-factory/tendbCluster/FullBackup.vue | 86 +++ .../tendbCluster/ImportSqlfile.vue | 21 + .../tendbCluster/InstanceCloneRules.vue | 54 ++ .../tendbCluster/MasterFailOver.vue | 67 ++ .../tendbCluster/MasterSlaveSwitch.vue | 67 ++ .../tendbCluster}/MigrateCluster.vue | 17 +- .../tendbCluster/NodeRebalance.vue | 159 +++++ .../com-factory/tendbCluster/OpenArea.vue | 21 + .../com-factory/tendbCluster/Partition.vue | 21 + .../tendbCluster/RenameDataBase.vue} | 63 +- .../tendbCluster/RestoreLocalSlave.vue | 90 +++ .../com-factory/tendbCluster/RestoreSlave.vue | 86 +++ .../tendbCluster/SpiderAddNodes.vue | 129 ++++ .../tendbCluster/SpiderMntApply.vue | 54 ++ .../tendbCluster/SpiderMntDestroy.vue} | 12 +- .../tendbCluster/SpiderReduceNodes.vue | 132 ++++ .../tendbCluster/SpiderSlaveApply.vue | 119 ++++ .../tendbCluster/SpiderSlaveDestroy.vue} | 15 +- .../tendbCluster/TruncateDatabase.vue | 145 ++++ .../components/task-info}/hooks/logCounts.ts | 0 .../task-info}/hooks/useAffinity.ts | 0 .../task-info/hooks/useTargetClusterData.ts | 143 ++++ .../views/ticket-center/detail-page/Index.vue | 12 + .../src/views/ticket-center/routes.ts | 65 ++ .../views/ticket-center/self-apply/Index.vue | 69 ++ .../self-apply/components/list/Index.vue | 30 + .../components/list/components/CardMode.vue | 50 ++ .../components/list/components/TableMode.vue | 141 ++++ .../views/ticket-center/self-done/Index.vue | 69 ++ .../self-done/components/list/Index.vue | 30 + .../components/list/components/CardMode.vue | 56 ++ .../components/list/components/TableMode.vue | 135 ++++ .../views/ticket-center/self-manage/Index.vue | 69 ++ .../self-manage/components/list/Index.vue | 30 + .../components/list/components/CardMode.vue | 50 ++ .../components/list/components/TableMode.vue | 129 ++++ .../views/ticket-center/self-todo/Index.vue | 69 ++ .../self-todo/components/list/Index.vue | 30 + .../components/list/components/CardMode.vue | 119 ++++ .../components/list/components/TableMode.vue | 196 ++++++ .../components/batch-operation/Index.vue | 144 ++++ .../batch-operation/StatusApproveAction.vue | 35 + .../StatusResourceReplenishAction.vue | 35 + .../batch-operation/StatusTodoAction.vue | 35 + .../components/row-action/Index.vue | 31 + .../components/row-action/StatusApprove.vue | 49 ++ .../components/row-action/StatusFailed.vue | 71 ++ .../row-action/StatusResourceReplenish.vue | 49 ++ .../components/row-action/StatusRunning.vue | 71 ++ .../components/row-action/StatusTodo.vue | 49 ++ .../list/components/hooks/useStatusList.ts | 34 + .../src/views/ticket-manage/Index.vue | 3 - .../src/views/ticket-manage/list/Index.vue | 39 -- .../list/components/detail/Index.vue | 255 ------- .../list/components/list/Index.vue | 19 - .../components/list/components/CardMode.vue | 234 ------- .../components/list/components/TableMode.vue | 184 ----- .../list/components/hooks/use-data.ts | 107 --- .../list/components/hooks/use-date-picker.ts | 74 -- .../components/hooks/use-search-select.ts | 77 --- .../list/components/hooks/use-table-height.ts | 28 - .../src/views/ticket-manage/routes.ts | 48 -- .../src/views/ticket-self-apply/Index.vue | 39 -- .../components/detail/Index.vue | 255 ------- .../components/list/Index.vue | 19 - .../components/list/components/CardMode.vue | 234 ------- .../components/list/components/TableMode.vue | 184 ----- .../list/components/hooks/use-data.ts | 104 --- .../list/components/hooks/use-date-picker.ts | 74 -- .../components/hooks/use-search-select.ts | 92 --- .../list/components/hooks/use-table-height.ts | 28 - .../src/views/ticket-self-apply/routes.ts | 30 - .../src/views/ticket-self-manage/Index.vue | 39 -- .../components/detail/Index.vue | 255 ------- .../components/list/Index.vue | 19 - .../components/list/components/CardMode.vue | 234 ------- .../components/list/components/TableMode.vue | 186 ----- .../list/components/hooks/use-data.ts | 105 --- .../components/hooks/use-search-select.ts | 92 --- .../list/components/hooks/use-table-height.ts | 28 - .../src/views/ticket-self-manage/routes.ts | 30 - .../src/views/ticket-self-todo/Index.vue | 39 -- .../components/list/Index.vue | 19 - .../components/list/components/CardMode.vue | 234 ------- .../components/list/components/TableMode.vue | 184 ----- .../list/components/hooks/use-date-picker.ts | 74 -- .../components/hooks/use-search-select.ts | 91 --- .../list/components/hooks/use-table-height.ts | 28 - .../src/views/ticket-self-todo/routes.ts | 30 - .../common/components/baseinfo/Index.vue | 289 -------- .../components/demand-factory/common/types.ts | 194 ------ .../demand-factory/mongodb/ScaleUpdown.vue | 59 -- .../demand-factory/mysql/Checksum.vue | 162 ----- .../components/demand-factory/mysql/Clone.vue | 131 ---- .../demand-factory/mysql/ClusterOperation.vue | 95 --- .../demand-factory/mysql/DataMigrate.vue | 91 --- .../demand-factory/mysql/Details.vue | 210 ------ .../demand-factory/mysql/Flashback.vue | 115 ---- .../demand-factory/mysql/FullBackup.vue | 146 ---- .../demand-factory/mysql/HATruncate.vue | 174 ----- .../demand-factory/mysql/MasterFailOver.vue | 117 ---- .../mysql/MasterSlaveSwitch.vue | 117 ---- .../demand-factory/mysql/MigrateCluster.vue | 101 --- .../demand-factory/mysql/OpenArea.vue | 127 ---- .../demand-factory/mysql/RestoreSlave.vue | 113 ---- .../demand-factory/mysql/SlaveAdd.vue | 104 --- .../demand-factory/mysql/TableBackup.vue | 148 ---- .../mysql/proxy-replace/Index.vue | 70 -- .../proxy-replace/components/ReplaceHost.vue | 88 --- .../components/ReplaceInstance.vue | 80 --- .../demand-factory/mysql/rollback/Index.vue | 66 -- .../components/RollbackNewCluster.vue | 146 ---- .../components/RollbackOriginCluster.vue | 75 -- .../demand-factory/redis/Details.vue | 298 -------- .../demand-factory/redis/ProxyScaleDown.vue | 92 --- .../demand-factory/spider/CheckSum.vue | 162 ----- .../demand-factory/spider/Flashback.vue | 128 ---- .../demand-factory/spider/FullBackup.vue | 121 ---- .../demand-factory/spider/MNTApply.vue | 92 --- .../demand-factory/spider/MasterFailOver.vue | 81 --- .../spider/MasterSlaveSwitch.vue | 83 --- .../demand-factory/spider/SlaveRebuild.vue | 105 --- .../demand-factory/spider/TableBackup.vue | 117 ---- .../spider/TruncateDatabase.vue | 127 ---- .../demand-factory/spider/rollback/Index.vue | 65 -- .../components/RollbackNewCluster.vue | 150 ---- .../components/RollbackOriginCluster.vue | 73 -- .../demand-factory/sqlserver/Details.vue | 198 ------ .../common/components/flow-content/Index.vue | 402 ----------- .../components/ContentInnerFlow.vue | 156 ----- .../flow-content/components/ContentTodo.vue | 91 --- .../flow-content/components/FlowIcon.vue | 125 ---- .../tickets/common/styles/DetailsTable.less | 35 - .../tickets/common/styles/ticketDetails.less | 79 --- .../src/views/tickets/my-tickets/Index.vue | 63 -- .../my-tickets/components/details/Index.vue | 249 ------- .../details/components/BaseInfo.vue | 67 -- .../details/components/flow/Index.vue | 165 ----- .../components/flow/components/Common.vue | 62 -- .../flow/components/MySqlDumpDataFlows.vue | 100 --- .../components/flow/components/RedisFlows.vue | 92 --- .../my-tickets/components/list/Index.vue | 498 -------------- .../list/components/TicketStatus.vue | 61 -- .../src/views/tickets/my-todos/Index.vue | 48 -- .../tickets/my-todos/components/List.vue | 553 --------------- .../my-todos/components/details/Index.vue | 289 -------- .../details/components/BaseInfo.vue | 67 -- .../details/components/flow/Index.vue | 193 ------ .../components/flow/components/Approve.vue | 263 -------- .../components/flow/components/RedisFlows.vue | 295 -------- .../flow/components/approve/Index.vue | 88 --- .../components/approve/InnerManualConfirm.vue | 111 --- .../flow/components/approve/ManualConfirm.vue | 224 ------ dbm-ui/frontend/src/views/tickets/routes.ts | 51 -- dbm-ui/frontend/tsconfig.json | 2 +- 749 files changed, 20016 insertions(+), 18674 deletions(-) rename dbm-ui/frontend/src/components/{mult-line-text => multline-text}/Index.vue (85%) create mode 100644 dbm-ui/frontend/src/components/ticket-status-tag/Index.vue delete mode 100644 dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/rollback.ts create mode 100644 dbm-ui/frontend/src/hooks/useTicketCount.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/doris/apply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/doris/destroy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/doris/disable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/doris/enable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/doris/index.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/doris/reboot.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/doris/replace.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/doris/scaleUp.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/doris/shrink.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/dumper/disableNodes.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/dumper/enableNodes.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/dumper/index.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/dumper/install.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/dumper/reduceNodes.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/dumper/switchNodes.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/elastic-search/apply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/elastic-search/destroy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/elastic-search/disable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/elastic-search/enable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/elastic-search/index.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/elastic-search/reboot.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/elastic-search/replace.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/elastic-search/scaleUp.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/elastic-search/shrink.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/hdfs/apply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/hdfs/destroy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/hdfs/disable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/hdfs/enable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/hdfs/index.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/hdfs/reboot.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/hdfs/replace.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/hdfs/scaleUp.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/hdfs/shrink.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/influxdb/apply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/influxdb/destroy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/influxdb/disable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/influxdb/enable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/influxdb/index.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/influxdb/reboot.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/influxdb/replace.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/kafka/apply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/kafka/destroy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/kafka/disable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/kafka/enable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/kafka/index.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/kafka/reboot.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/kafka/replace.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/kafka/scaleUp.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/kafka/shrink.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/addMongos.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/addShardNodes.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/authorizeRules.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/backup.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/cutoff.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/destroy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/disable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/enable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/excelAuthorize.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/execScriptApply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/fullBackup.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/index.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/reduceMongos.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/reduceShardNodes.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/removeNs.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/replicasetApply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/restore.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/scaleUpdown.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/shardApply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mongodb/temporaryDestroy.ts delete mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/accountRuleChange.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/addSlava.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/authorizeRules.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/checkSum.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/clientCloneRules.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/dataMigrate.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/dumpData.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/excelAuthorizeRules.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/flashBack.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/haApply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/haDBTableBackup.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/haFullBackup.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/haRenameDatabase.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/haTeuncateData.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/importSqlFile.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/index.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/instanceCloneRules.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/localUpgrade.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/masterFailOver.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/masterSlaveSwitch.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/migrateCluster.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/migrateUpgrade.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/openArea.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/partition.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/proxyAdd.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/proxySwitch.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/proxyUpgrade.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/restoreLocalSlave.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/restoreSlave.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/rollBackCluster.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/singleApply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/mysql/singleRenameDatabase.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/pulsar/apply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/pulsar/destroy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/pulsar/disable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/pulsar/enable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/pulsar/index.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/pulsar/reboot.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/pulsar/replace.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/pulsar/scaleUp.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/pulsar/shrink.ts delete mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/backup.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/clusterAddSlave.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/clusterApply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/clusterCutoff.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/clusterDataCopy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/clusterRollbackDataCopy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/clusterShardNumUpdate.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/clusterTypeUpdate.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/dataStructure.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/dataStructureTaskDelete.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/datacopyCheckRepair.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/destroy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/index.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/insApply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/instanceDestroy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/instanceProxyClose.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/instanceProxyOpen.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/keysDelete.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/keysExtract.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/masterSlaveSwitch.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/pluginCreateClb.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/pluginCreatePolaris.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/pluginDeleteClb.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/pluginDeletePolaris.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/pluginDnsBindClb.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/pluginDnsUnbindClb.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/proxyClose.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/proxyOpen.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/proxyScaleDown.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/proxyScaleUp.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/purge.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/scaleDown.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/scaleUp.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/scaleUpdown.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/slotsMigrate.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/redis/versionUpdateOnline.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/riak/apply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/riak/destroy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/riak/disable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/riak/enable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/riak/index.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/riak/reboot.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/riak/scaleIn.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/riak/scaleOut.ts delete mode 100644 dbm-ui/frontend/src/services/model/ticket/details/spider.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/accountRuleChange.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/apply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/authorizeRules.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/checkSum.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/clientCloneRules.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/dBTableBackup.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/destroy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/disable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/dumpData.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/enable.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/excelAuthorizeRules.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/flashBack.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/fullBackup.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/importSqlFile.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/index.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/instanceCloneRules.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/masterFailOver.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/masterSlaveSwitch.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/migrateCluster.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/nodeRebalance.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/openArea.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/partition.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/renameDataBase.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/restoreLocalSlave.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/restoreSlave.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/rollBackCluster.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/spiderAddNodes.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/spiderMntApply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/spiderMntDestroy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/spiderReduceNodes.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/spiderSlaveApply.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/spiderSlaveDestroy.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/details/tendbCluster/truncateDataBase.ts create mode 100644 dbm-ui/frontend/src/services/model/ticket/flow.ts create mode 100644 dbm-ui/frontend/src/services/source/ticketFlow.ts create mode 100644 dbm-ui/frontend/src/utils/getBusinessHref.ts create mode 100644 dbm-ui/frontend/src/views/db-manage/common/FlowRedisKeyExtract.vue delete mode 100644 dbm-ui/frontend/src/views/spider-manage/rollback/pages/page1/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/business/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/business/components/list/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/business/components/list/components/CardMode.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/business/components/list/components/TableMode.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/CardModeList.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/TableModeTable.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/TicketClone.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/action-confirm/ProcessApproveExce.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/action-confirm/ProcessPass.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/action-confirm/ProcessRefuse.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/action-confirm/ProcessRetry.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/action-confirm/ProcessTerminate.vue rename dbm-ui/frontend/src/views/{ticket-self-manage/components/list/components => ticket-center/common}/hooks/use-date-picker.ts (86%) rename dbm-ui/frontend/src/views/{ticket-self-todo/components/list/components/hooks/use-data.ts => ticket-center/common/hooks/use-fetch-data.ts} (59%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/hooks/use-search-select.ts create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/hooks/use-url-redirect.ts rename dbm-ui/frontend/src/views/{ticket-self-todo/components/detail => ticket-center/common/ticket-detail}/Index.vue (55%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/import-sql-file/components => ticket-center/common/ticket-detail/components/common}/MessageList.vue (100%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/import-sql-file/components/RenderFileContent.vue => ticket-center/common/ticket-detail/components/common/SqlFileContent.vue} (97%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/import-sql-file/components => ticket-center/common/ticket-detail/components/common}/SqlFileList.vue (100%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/FlowTypeBase.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-common/StatusFailed.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-common/StatusRunning.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-common/StatusSkipped.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-common/StatusSucceeded.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-common/StatusTerminated.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-common/StausPending.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-common/index.ts create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-delivery/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-delivery/components/SqlGrammarCheck.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-describe-task/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-describe-task/StatusSucceeded.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-inner-flow/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-inner-flow/StatusFailed.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-inner-flow/StatusRunning.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-inner-flow/StatusSucceeded.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-inner-flow/StatusTerminated.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-inner-flow/components/MysqlDumpDataDownload.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-itsm/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-itsm/StatusFailed.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-itsm/StatusRunning.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-itsm/StatusSucceeded.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-itsm/StatusTerminated.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-pause/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-pause/StatusFailed.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-pause/StatusRunning.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-pause/StatusSucceeded.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-pause/StatusTerminated.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-timer/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-timer/StatusRunning.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/flow-type-timer/components/RunCountdown.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/time-line/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/time-line/TimeLineItem.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/todo-list/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/todo-list/common/StatusDoneFailed.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/todo-list/common/StatusDoneSuccess.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/todo-list/common/StatusTodo.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/todo-list/common/index.ts create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/todo-list/type-approve/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/todo-list/type-inner-approve/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/todo-list/type-inner-approve/StatusTodo.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/todo-list/type-itsm/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/todo-list/type-itsm/StatusDoneFailed.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/todo-list/type-itsm/StatusTodo.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/todo-list/type-resource-replenish/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/flow-info/components/todo-list/type-resource-replenish/StatusTodo.vue rename dbm-ui/frontend/src/views/{tickets/my-todos/components/details/components/Demand.vue => ticket-center/common/ticket-detail/components/task-info/Index.vue} (80%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/Default.vue (95%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata/DetailsClusterOperation.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/common/bigdata/ClusterOperation.vue} (91%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata/expansion-capacity => ticket-center/common/ticket-detail/components/task-info/com-factory/common/bigdata/scale-up-&-shrink}/Index.vue (94%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata/expansion-capacity => ticket-center/common/ticket-detail/components/task-info/com-factory/common/bigdata/scale-up-&-shrink}/SelectIpTable.vue (100%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/account-rule-change => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-account-rule-change}/Index.vue (79%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/account-rule-change => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-account-rule-change}/components/PreviewDiff.vue (97%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/account-rule-change => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-account-rule-change}/components/RuleDeleteTable.vue (59%) rename dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/{mysql/authorize-rule => common/mysql-authorize-rules}/Index.vue (90%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/spider => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-authorize-rules/components}/TargetClusterPreview.vue (76%) rename dbm-ui/frontend/src/views/{tickets/common/hooks => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-authorize-rules/components}/useTargetClusterData.ts (84%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/ExportData.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-dump-data/Index.vue} (86%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/components/import-sqlfile => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-import-sqlfile}/Index.vue (95%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/components/import-sqlfile => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-import-sqlfile}/components/render-sqlfile/Index.vue (100%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/components/import-sqlfile => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-import-sqlfile}/components/render-sqlfile/components/RenderFileContent.vue (100%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/components/import-sqlfile => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-import-sqlfile}/components/render-sqlfile/components/RenderFileList.vue (100%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/openarea => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-open-area}/Index.vue (92%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/openarea => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-open-area}/components/CloneRule.vue (100%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/openarea => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-open-area}/components/PermissionRule.vue (96%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/openarea => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-open-area}/components/TargetCluster.vue (94%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/Partition.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/common/mysql-partition/Index.vue} (88%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/components/DemandInfo.vue (97%) rename dbm-ui/frontend/src/views/{tickets/common => ticket-center/common/ticket-detail/components/task-info/com-factory}/components/SpecInfos.vue (100%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/components/TableGroupContent.vue (100%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/components/import-sqlfile/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/components/import-sqlfile/components/render-sqlfile/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/components/import-sqlfile/components/render-sqlfile/components/RenderFileContent.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/components/import-sqlfile/components/render-sqlfile/components/RenderFileList.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/components/info-list/Index.vue (100%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/components/info-list/InfoItem.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata/DetailsDoris.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/doris/Apply.vue} (96%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/import-sql-file/components/SyntaxChecking.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/doris/Destroy.vue} (62%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/doris/Disable.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/doris/Enable.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/Rename.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/doris/Reboot.vue} (65%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata => ticket-center/common/ticket-detail/components/task-info/com-factory/doris}/Replace.vue (83%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/doris/ScaleUp.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/doris/Shrink.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/dumper/DisableNodes.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/dumper/EnableNodes.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/DumperInstall.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/dumper/Install.vue} (92%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/DumperSwitchNode.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/dumper/SwitchNodes.vue} (82%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/DumperNodeStatusUpdate.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/dumper/common/Disable&Enable.vue} (85%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata/DetailsES.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/elastic-search/Apply.vue} (95%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/elastic-search/Destroy.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/elastic-search/Disable.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/elastic-search/Enable.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata => ticket-center/common/ticket-detail/components/task-info/com-factory/elastic-search}/Reboot.vue (91%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/elastic-search/Replace.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/elastic-search/ScaleUp.vue rename dbm-ui/frontend/src/views/{tickets/my-tickets/components/details/components/Demand.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/elastic-search/Shrink.vue} (70%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata/DetailsHDFS.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/hdfs/Apply.vue} (94%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/hdfs/Destroy.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/hdfs/Disable.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/hdfs/Enable.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/ProxyAdd.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/hdfs/Reboot.vue} (57%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/hdfs/Replace.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/hdfs/ScaleUp.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/hdfs/Shrink.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata/DetailsInfluxDB.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/influxdb/Apply.vue} (89%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/influxdb/Destroy.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/influxdb/Disable.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/influxdb/Enable.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/influxdb/Reboot.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/influxdb/Replace.vue (74%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/influxdb/Operations.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/influxdb/common/Operation.vue} (100%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata/DetailsKafka.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/kafka/Apply.vue} (94%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/kafka/Destroy.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/kafka/Disable.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/kafka/Enable.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/kafka/Reboot.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/kafka/Replace.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/kafka/ScaleUp.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/kafka/Shrink.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/ProxyScaleUp.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/AddMongos.vue} (58%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/ShardScaleUp.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/AddShardNodes.vue} (66%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/DbTableBackup.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/Backup.vue} (72%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/DBReplace.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/Cutoff.vue} (59%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/Destroy.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/Disable.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/Enable.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/AuthorizeRules.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/ExcelAuthorize.vue} (95%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/script-execute/Index.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/ExecScriptApply.vue} (85%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/DbBackup.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/FullBackup.vue} (64%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/ProxyScaleDown.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/ReduceMongos.vue} (67%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/ShardScaleDown.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/ReduceShardNodes.vue} (70%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/DbClear.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/RemoveNs.vue} (71%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/DetailsMongoDBReplicaSet.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/ReplicasetApply.vue} (92%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/DbStruct.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/Restore.vue} (54%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/CapacityChange.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/ScaleUpdown.vue} (56%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/DetailsMongoDBSharedCluster.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/ShardApply.vue} (92%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/TemporaryDestrot.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/TemporaryDestroy.vue} (61%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/DetailsClusterOperation.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/common/Destroy&Disable&Enable.vue} (75%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/script-execute => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb}/components/RenderFileContent.vue (100%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb/script-execute => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb}/components/SqlFileList.vue (100%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mongodb => ticket-center/common/ticket-detail/components/task-info/com-factory/mongodb/components}/TargetClusterPreview.vue (100%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/AccountRuleChange.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/AddSlave.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/AuthorizeRule.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/Checksum.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/ClientCloneRules.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/DataMigrate.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/DbRename.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/DumpData.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/ExcelAuthrizeRule.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/Flashback.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/ForceImportSqlfile.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/HaDBTableBackup.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/HaFullBackup.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/ImportSqlfile.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/InstanceCloneRules.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/version-upgrade/VersionLocalUpgrade.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/LocalUpgrade.vue} (85%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/MasterFailOver.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/MasterSlaveSwitch.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/MigrateCluster.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/version-upgrade/VersionMigrateUpgrade.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/MigrateUpgrade.vue} (81%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/OpenArea.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/Partition.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/ProxyAdd.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/ProxySwitch.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/version-upgrade/VersionProxyUpgrade.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/ProxyUpgrade.vue} (85%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/mysql/RestoreLocalSlave.vue (88%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/RestoreSlave.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/SingleBbRename.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/common/DBRename.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/mysql/version-upgrade => ticket-center/common/ticket-detail/components/task-info/com-factory/mysql}/components/VersionContent.vue (100%) delete mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/openarea/components/PermissionRule.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata/DetailsPulsar.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Apply.vue} (90%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Destroy.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Disable.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Enable.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Reboot.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Replace.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/ScaleUp.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Shrink.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/Backup.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/AddSlave.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterAddSlave.vue} (90%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterApply.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/DBReplace.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterCutoff.vue} (90%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/DataCopy.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterDataCopy.vue} (96%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/RollbackDataCopy.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterRollbackDataCopy.vue} (91%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/ClusterShardUpdate.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterShardNumUpdate.vue} (94%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterTypeUpdate.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/redis/DataStructure.vue (90%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/StructureDelete.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/DataStructureTaskDelete.vue} (80%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/DataCheckAndRepair.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/DatacopyCheckRepair.vue} (91%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/Destroy.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/DetailsHa.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InsApply.vue} (93%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InstanceDestroy.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InstanceProxyClose.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InstanceProxyOpen.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/Operation.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/KeysDelete.vue} (57%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/KeysExtract.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/PluginDeleteClb.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/PluginDnsBindClb.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/PluginDnsUnbindClb.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyClose.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyOpen.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyScaleDown.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/redis/ProxyScaleUp.vue (72%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/Purge.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/ClusterCapacityUpdate.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ScaleUpdown.vue} (95%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/VersionUpgrade.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/VersionUpdateOnline.vue} (84%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/CLBDetail.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/common/Clb.vue} (88%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/HaClusterOperation.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/common/InstanceOperation.vue} (90%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/redis/MasterFailover.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/redis/masterSlaveSwitch.vue} (89%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/pluginCreateClb.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata/DetailsRiak.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Apply.vue} (89%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Destroy.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Disable.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Enable.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata/RiakReboot.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Reboot.vue} (75%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/ScaleIn.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/ScaleOut.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/bigdata/RiakExpansionCapacity.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/riak/common/ScaleIn&ScaleOut.vue} (87%) delete mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/spider/AuthorizeRules.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/AddSlave.vue (98%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/AuthorizeRules.vue (99%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/BackupDbs.vue (95%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/BuildDbSync.vue (98%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/ClearDbs.vue (99%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/ClusterDestroy.vue (97%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/ClusterDisable.vue (97%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/ClusterEnable.vue (97%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/DataMigrate.vue (99%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/DbRename.vue (98%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/HaApply.vue (95%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/ImportSqlfile.vue (92%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/MasterFailOver.vue (98%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/MasterSlaveSwitch.vue (98%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/Reset.vue (98%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/RestoreLocalSlave.vue (98%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/RestoreSlave.vue (98%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/Rollback.vue (96%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/SingleApply.vue (96%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/common/DataMigrate.vue (95%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/common/Disabled&enable&destroy.vue (100%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/fullMigrate.vue (97%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory => ticket-center/common/ticket-detail/components/task-info/com-factory}/sqlserver/incrMigrate.vue (97%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/AccountRuleChange.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/spider/Details.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Apply.vue} (93%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/AuthorizeRule.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/CheckSum.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/ClientCloneRules.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/DBTableBackup.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/spider => ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster}/Destroy.vue (89%) rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/spider => ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster}/Disable.vue (88%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/DumpData.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/spider => ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster}/Enable.vue (89%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/ExcelAuthrizeRule.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Flashback.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/FullBackup.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/ImportSqlfile.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/InstanceCloneRules.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/MasterFailOver.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/MasterSlaveSwitch.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/spider => ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster}/MigrateCluster.vue (92%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/NodeRebalance.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/OpenArea.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Partition.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/spider/RenameDatabase.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/RenameDataBase.vue} (69%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/RestoreLocalSlave.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/RestoreSlave.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderAddNodes.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderMntApply.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/spider/MNTDestroy.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderMntDestroy.vue} (89%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderReduceNodes.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderSlaveApply.vue rename dbm-ui/frontend/src/views/{tickets/common/components/demand-factory/spider/SlaveDestroy.vue => ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderSlaveDestroy.vue} (88%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/TruncateDatabase.vue rename dbm-ui/frontend/src/views/{tickets/common => ticket-center/common/ticket-detail/components/task-info}/hooks/logCounts.ts (100%) rename dbm-ui/frontend/src/views/{tickets/common => ticket-center/common/ticket-detail/components/task-info}/hooks/useAffinity.ts (100%) create mode 100644 dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/hooks/useTargetClusterData.ts create mode 100644 dbm-ui/frontend/src/views/ticket-center/detail-page/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/routes.ts create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-apply/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-apply/components/list/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-apply/components/list/components/CardMode.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-apply/components/list/components/TableMode.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-done/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-done/components/list/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-done/components/list/components/CardMode.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-done/components/list/components/TableMode.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-manage/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-manage/components/list/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-manage/components/list/components/CardMode.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-manage/components/list/components/TableMode.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/CardMode.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/TableMode.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/StatusApproveAction.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/StatusResourceReplenishAction.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/StatusTodoAction.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/Index.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusApprove.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusFailed.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusResourceReplenish.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusRunning.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusTodo.vue create mode 100644 dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/hooks/useStatusList.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-manage/Index.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-manage/list/Index.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-manage/list/components/detail/Index.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-manage/list/components/list/Index.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/CardMode.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/TableMode.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-data.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-date-picker.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-search-select.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-table-height.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-manage/routes.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-self-apply/Index.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-apply/components/detail/Index.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-apply/components/list/Index.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/CardMode.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/TableMode.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-data.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-date-picker.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-search-select.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-table-height.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-self-apply/routes.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-self-manage/Index.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-manage/components/detail/Index.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-manage/components/list/Index.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/CardMode.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/TableMode.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/hooks/use-data.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/hooks/use-search-select.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/hooks/use-table-height.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-self-manage/routes.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-self-todo/Index.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-todo/components/list/Index.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/CardMode.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/TableMode.vue delete mode 100644 dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/hooks/use-date-picker.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/hooks/use-search-select.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/hooks/use-table-height.ts delete mode 100644 dbm-ui/frontend/src/views/ticket-self-todo/routes.ts delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/baseinfo/Index.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/common/types.ts delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mongodb/ScaleUpdown.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Checksum.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Clone.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/ClusterOperation.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/DataMigrate.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Details.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Flashback.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/FullBackup.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/HATruncate.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/MasterFailOver.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/MasterSlaveSwitch.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/MigrateCluster.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/OpenArea.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/RestoreSlave.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/SlaveAdd.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/TableBackup.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/proxy-replace/Index.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/proxy-replace/components/ReplaceHost.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/proxy-replace/components/ReplaceInstance.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/rollback/Index.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/rollback/components/RollbackNewCluster.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/rollback/components/RollbackOriginCluster.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/Details.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/ProxyScaleDown.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/CheckSum.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Flashback.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/FullBackup.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MNTApply.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MasterFailOver.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MasterSlaveSwitch.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/SlaveRebuild.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/TableBackup.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/TruncateDatabase.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/rollback/Index.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/rollback/components/RollbackNewCluster.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/rollback/components/RollbackOriginCluster.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/Details.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/flow-content/Index.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/flow-content/components/ContentInnerFlow.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/flow-content/components/ContentTodo.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/components/flow-content/components/FlowIcon.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/common/styles/DetailsTable.less delete mode 100644 dbm-ui/frontend/src/views/tickets/common/styles/ticketDetails.less delete mode 100644 dbm-ui/frontend/src/views/tickets/my-tickets/Index.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-tickets/components/details/Index.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/BaseInfo.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/Index.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/components/Common.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/components/MySqlDumpDataFlows.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/components/RedisFlows.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-tickets/components/list/Index.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-tickets/components/list/components/TicketStatus.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-todos/Index.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-todos/components/List.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-todos/components/details/Index.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/BaseInfo.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/Index.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/Approve.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/RedisFlows.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/approve/Index.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/approve/InnerManualConfirm.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/approve/ManualConfirm.vue delete mode 100644 dbm-ui/frontend/src/views/tickets/routes.ts diff --git a/dbm-ui/frontend/.prettierignore b/dbm-ui/frontend/.prettierignore index b1e3b23119..657b422922 100644 --- a/dbm-ui/frontend/.prettierignore +++ b/dbm-ui/frontend/.prettierignore @@ -1,3 +1,6 @@ node_modules dist +lib +patch +public src/types/auto-imports.d.ts \ No newline at end of file diff --git a/dbm-ui/frontend/lib/bk-icon/fonts/iconcool.eot b/dbm-ui/frontend/lib/bk-icon/fonts/iconcool.eot index 91666f38ebfed10c5f9ea5768f5724faad025361..3257d928f5c5a0ce72ac5c86d1bb6bbf709fdafb 100644 GIT binary patch delta 4438 zcmYk934B!56~@2!X30V_nMo#@>?D(gEu>^2gbL_|au zhgwC&5JAxjqH&?95fxDZktKpfikx6uYpGIHN^LvzyL0sSYx4WgyKmmRFYlgv&Ud~X z-sm{f4YY`De#u)WN2#0p28 ztHQ0eGu-NQhF81lb9O`@1$!GD(NPJH@qE)AaN3K*U%2{na;|%Qs1Hie8+}oVpP&pC zs6>BMVF0Qz5H;wAL8!%G)S(^?7>XenhT#~2MqGg=G-D)29`ixV*+l(b-00d`~o*24Y8OQ!YK5@Bm^)SQ!o|NkcjD+ffn4% z7nq3*+=5w{jXC%w=Hph}h6VT)Zif?h;7%;WA}q#TSb`9i;@4Ql>vv;0?!gMIL~iuA z5c819-)v;zKCHrOtikk)bo37Cs8HZVTr_zfPyZ}BjEcm$8)F+7e0PSgqs_7D7v0}e1yX|f*9C% z9vhh=?y$rz3V#y2Hm)g}Ai&A+ytn|j6JjgeScpU67DJdy25vUQrEuFJZiNW|iB*^i zkT``&0b$-6m>!S>g^2=5QkXIjFAy>x%pQnOVIDz}6>cabO<`_90t#aaVU-w|Z;%Xy znFq;Ln1hh+3bPTCr!X%e`3f^M1PStlFj*l53ey%+s4#&cMG8|HQminkAw3kPH>9V+ zM2GZJnDP)4Ny6lZm}nE00mMYRB*c@^9GDOj)&|6chOkN?CNhNe0x^*xtQ?4m3}FpH zOk@bF31Xr_SXU4e4Z;e8m}n4I62wHqh{M%9hD_%MB*ZF*m~ar*J7ko?%7>W95NZI# zM21ieAZDc`x*D@mLWO{sl@e+N#H@}`H6Uiyg!%z7izArG<5;u*Tp=|DVpd0}E)cUi zLY;w_w-!#q6aba3FQxB<`W7b#9SkkM2NXYD2@QSv;;&*mNKp6}BJ9qY4`lv%g?$vVQ(;Giyr8hRLfRE}S;$KY`z_>Ug`F4jssgj}T?)G~WVgb;40%mq zhi3i1&J)6B4S7Rh+lF)~(Pr}|$AqmMvPWT4hrFe*y+hts*ytheC~WzVy$YK@! zYXkXA3BiO@6#5-VmqO2^j?sED0E?v3kvdh{6?WOgM6#dqd~q? z=++aFBl~G;@&e71}z;zZK)i5~=9nNK=&}`B zLUcJ4nnQFsNr)fxiRj{68R!_%#Xo4EcSM&tCv=hMidBrCjQ%80wA*mX8gA{fF4-;i zVTaRE?ik}}bL?~0I2XI(UA3+UU3=W|?iTl^nAn)fFj^NP(yI^L);llXBT}2NSr}wJswWe2RZ+Gu2doSw!d7r92OZuEFX)NjJ z8|*u?@7~gF{eoq4Dz5E6VL*BH{(T0g3nO@T|D0$GTL3?UFwKvwTuI;S7H2C_# zy9ZyWdp%SasUKOtrv6exu;JQG?C$7~pLacs@l6=OTbUK*D>Zuz*k z$0v-RJf5{~{+qjejsopB8#`um)H$aaJIus?v%r z%J3vwp2W=InXW{SCnM-|rg##4ZY##JV^ShZJ!yZ<>R}~V%VIMUCuIA(Qa@q9U6D$mRGVOGy8Du5RiSZ;S+HN~0F7}(OR4eT5ne}hKC$b>E zTk047B|QtQyT6Xy+Ru8pUu0S&Qf|3Y2e#Ly7Tuo1l)qf!grkH?9zY+iFbx4WVv5nD z3gLB6r`=M)<cS&<2SRe7!zQ|5|ZFE`ixNk2xuvPYSH$s2jkR~>jY zkRR|_HQrL+32!9ZSDK$+ns52+#nFpX(yP6^<~`&|@dkV+D!ksaym_EEJwNbDV4!(` zlmzsF$?D0 eJfgf`Rr}d}Z?N|JRfiuvu$9LF?Sl@cSpNe>Cx}k~ delta 3848 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 diff --git a/dbm-ui/frontend/lib/bk-icon/fonts/iconcool.svg b/dbm-ui/frontend/lib/bk-icon/fonts/iconcool.svg index 65cf7f419b..f56e283c54 100644 --- a/dbm-ui/frontend/lib/bk-icon/fonts/iconcool.svg +++ b/dbm-ui/frontend/lib/bk-icon/fonts/iconcool.svg @@ -7,659 +7,680 @@ - + + + + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + - + \ No newline at end of file diff --git a/dbm-ui/frontend/lib/bk-icon/fonts/iconcool.ttf b/dbm-ui/frontend/lib/bk-icon/fonts/iconcool.ttf index 58a61df889fb5a9a86d570fe00f6a63abc97e93a..a0824fb9e64fa0ec1e3d3a5ebb58af5e20ca80bd 100644 GIT binary patch delta 4453 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 Vto+i!ZQmZ)!sDR!wu8ym{{ZCug7E+V delta 3812 zcmXw+3w)Jz8OOipY=hm{U>mT(7-Jg<<026fmjQF28>FZ)D9sWOkaS#1L?rUiL_`z? zMy3N15oIEHVW@=Q1t%zSF(afR>LD^SG9oluB>w*AS=;CPzW?`}|9kmA@ALeg-`TM) zq2aNF6~(dT5LpOJym{v2IrVp3eG4SDg*FFnskv+V_1Smd2RZtF>)aXBCQt1*Gkufh z{!t8?p%2<5rOelOmnfMrbME}xDleYV^^QP7ST!*vCbCnHI9Z$=I_u8bax)J;iTQg=FW zRF{VM*F-mv5Fho?K2;ChKw@-W-Bn4K>7?4Em9bKK(~Cazr62tnz}FebWenmQ3}%SV z7|Jlp7|sYrayjKxFpAM!!Ie}}#TdTHRb-Px2?bouIIiJ3uH{>dr-jF<<2&4-88`BM+S8hwVvMCHljy)?rf@S;NoN|{t=vWpGnvB=`4P7> zmphoJ#mr{`cXAg$W+6Y}ZelFrr~1B@dsxi9+((!Ae=)Pk(|>0=v6TCHfaNUXK_22^ zRuEfB8nakMox=JxR`W9+;pepFQ68h7HLT@v){)N>tmjGEC?Xqpif7o!(`=%M2A*Xz z&#{FbyugcWqmk{r#LK+Gt8`}vzhEb?DS>wLI&bhM8Dw%PZ?T8BX&S&gT*6-7WgqX+ zmFL+?B1`DTev(Mx{rGwcIlw^<(Mm79Ro!*T3+gJ8AC8s8vj9HQKICXXIbkhOsgM1M`?kjI7$#q=^ThDSFm(PS%YOd${(z)qfElu zIm#(4%hAilIylNRtfLch)N&o=9+u}Q3$X%6`G|GZ{k1`R3-lNsoo-2`Xb6gb)i=0v19nR1;VTt59`dA*@1m zf`w=ZRSXuQAyhk9h=x!VVIdkq^@N282vrsqA|O;_ScpJO8oL_?@Ru@C{FQpG|9go+jm5fCb0EJQ%4kg*T}p^_$Ml{yfrZY)GVsLrtv z0ilY=#yYBfEJQ;{1+WkeAw9st>V%X53#$|H#e~HPsRb4mB%~WySmoGlTtLLDAeWR&Eq?1^fC#0xYm?xyISePfIvRIfWq_;ZtI`Q%S8jJXNnZ|-*?H_Q|O|S<8dP21o zY`GI3Kculxv%wyA)ON5Hjv5eF@2C}FYaBHtY^|gAggx%4QDN&GwJhujN6kwSTCa^z zAH$w>)X}gF4lA{P%2AWUHaco|*wc<0ANGu+7Km+fg2%81M{N;%)=`7RHaju(N^Fax zu8D1R)IYK39d%Od1xGyb?i+?4IX>TQLD%HIBNRX+YV31G-z_< z1h97;c>-*&BX@x9bL11ScO5wf>^(=`0o(7$MPTnc@)Otxj+_PdOGh39`%uKRk=?+4 z<;ZwoM;uuY?AMOW2zJzwEx|r=WKghUj;spy8%L%E`>iAUg8j~sk-?5TvNWpy-|Ilg z-C!r2V3h3-jvNnWj=T?c(vb_o{^Srse#((E!v5^YBVivqa!c4>9Qh{flQ@chcrTwi zGE>;!9Kvfk?Z{tYe|O}xu+JQMF6Bx~`XB~Mn>|c&t8g@?iw{u#3 z$okJ6SvTwpM1de z`osfCMM>8t)hC^A)vwi~t2wpGMh3#Yn$43OS@>h>Fr)=_i0u^R(aNptlF#tSyTHKSDUvZ?{ueQ&HdYOhCnohVH$om;xMcSi49dmrsHuFtkU&3&u; z4Zd_+|1Sr8GVt`EJ%eu;vS`SmAt#4?F?8I}4Z}JOyLQ;RVF$``$_AI!mo*O`F#N)Z z5hIq3I5cwb$SKt$A04@;Jh^;qdDG>omp@pMUQt`Ixnk$2jib(wE*!mf^#0N3uULA; z2Ukw7%&%;!JX2LrwX|ycnA9;n#w@sI*7ybEk5?B~*Hmw;J~1J2!mSe;CY+sEHF0O% zuAIEam)n=z*?8CT4plL!G~e{nGD{MTWKVK!j62NY%m$pHY{tqU1=oW<97kX7{=#_{i6 zU|oa+B@w|y>{ziRioJ_sSAq%=yQl9If86vrf* zSVvRH^WJCw@jo+@8Sl=AIeWSHcg}gw?=1`T0J_9QY50h?e`$WV(R#ldOSj(d z-gcIMU!Rrzxi8bHcJ)+m_0<3k)^Lr|SWVDmP1h{V(L62E>v~HcYe}f zm-?um25N{#Xtc&@qNZquW^1nIYq6xa^+~g>_4&{LYWSMgXEU~7D|TQQM=_OYJkA@9 z_Qs&bhK-FILmDF+f8!e$Hl{YFw?4nF?`jxdX3G!N-wtbN?WrH z+p?Wk+@2lTiJ|PwE?#|Cc4H6r2=-%t4xlG}`3n6R$+sEJ z!HnWSf8rnxp&uO_%I>VqVJy$#9Kn%{;Y+^eqdA7LKL2+Zf5147$$KD#5w0ux&_YY?u8W7GyG%%czXr*v&qLss0idG5dD_S+2 zxoEX;4x`n>*^Jf*=QSD>&TzD5IM>ly;jBk%hw~q;6Rrek-Ed7n>xHWW8XT?@Xh^tX zpiRTIe*uxXPhj!}SjB7Os3~_iznFdxWbY+A~}i(O%KI zm%YQa673VNnrPpk_RjF2_UVXlO-1_!b= z9UQLF=#X%=Mu&#$HaaX^!O`L2T8@qgS9Nq`wD$j)aHU5_1-0Lg4p)D4Ot=rAvEhz@ z#)W$WIyT%T&~f2@fsPM%4s=4eN1zkK-2|N!?knizaEC#sL`?!ZHQaU3Y2p5Z#z)m1 zf1MugNvJd2ozNNKK7}TPI~JN4?p^5Ya2G@8g!>sfH{99KdC|K5^TYiCb#bRaUEBdt z7xzNc#a$6y5>zd@G+M`(MeF$Tpz6dGLB(uRxSygcqjh{$xXYre!~GUb4r=WwL9KmV zQ0rYE)EYMgbA{3+nmb9`5+)j&ScscScQr zniif1&|Trl08J0i2xvxlT0nP)=LR%0sCs`-c$Pr-26f-Fg1Yb7LEZO#LEZP9pzeEa zQ1?AAJdvRJLB-&KpknY~P%(HYJh`BUqt#y?2`V;^1{Isff{MZ8LB;8bpyKpoe^9Ym z5L9nj7*w2|3QtGq>7ZivOi(d?eic-lejQXS ze-l*9ejA?3(C>nZ-|vI!doKkQ%a?MtgJ6jWXLIH=vGlX?71!$uxU}=VhAhL49wj@C;3}Bbf4E&?Qo3e*ge@oXoum zoLgnNIDDS>Y}vPyiup^X96;Ke+ zDySe(D=H{g$|#5hilXQRabvmO3kr%W2+iSp-gA;^W(r>JcfbGt_q93iS>E@&>$5-4 zdximqdH)S2&$t=FFqMMGe;smnF!+zh=U-sQ$o-6y31a?KW;(-wAle`VatH=t0E!tR z3ek9R0NTLo@$$t4#JeCW1i>p~sX~4b%60;!0#raWf-IGbV2Jr`R3tVRKTU*_)NWbWas#m=Pdw!^1kcDgCe`j*?#jX~S#^V|=7IN2 zrK5d+D~|6C#*8Cmzy=}?Yyc`5U=tO&A`|9Fjpu7ewDg5vOyM0d$jdwv?((_CdO2;U2GJa&Oid2ZtjEP4ndx-7({I#g}~#+ zg_J!?DPFD&0G5vnqDLu~33JyA9QVRqdfL>*r?OVBU$$Chf4|q--#4c(B*8q^7YcZx z)$eU%7tA8}jlXu+3p1Mgf2Y-JwR&4<0vn+(->*1ZB)cQp8l`%1*I~~5>H7~a zUb$r66a71HfBZCrX5wkyn*VlubWK(+e$nQ_w`nEe<743`Zh;_u{nP3zGsD0BNaJjV zl~yJ?an0oMH7h$3*+d2r3lbC*n}J1}oE1?R9_j7J3tf7{2O)63=CE6!p(K_@UO38E5D zl<-=?Opku2!4*xhzi!%T!c?KX+>XEQjgMxnHt@lcEG+Ta%=yPgMAwsG58D9-v*GL@ z=+}jm-3fEc<+%{aO|dypK{@It3rO*0INNAVOqg;JrUum~H1mu7ho!15J3nnGUo zirxW;cjFqw6Ct2DOTp)BzvsB$e@#o_Kwob!{ytW?B-LfeR?pa9u`?2`7Xy)~;BmUWg-E_!!ZiYC#5rM9Beg1}6J!k2+AtYaU#cEF zh(B_l%XT8GRwbjgQNqw1q#P6Ip*)F#i3u@L(TJir0TfN?Yp!YhCeo}&nsTr*Z46c9 zebsFc${9@TgX?STx84YT!Y7J0k0@H%rqb3PCv3BoFWA?3)&<0UrauedcfrNnP8`BiON7# zJ!o@{Xme84E~=v{Q$-?skbJ>Ji~8KOf2gnaIH8Y6a0cnL(hC?-tAtVUo%;AL)p#YY zPuxZsV8K~&7J$+qc3o|j$zdb{B;X(-G>*wh?gOLCWl#^RS1g4NSYnV|#yV|4TxR@8 z8J1vO$SIs|p$o~HphS>)IE&?8C>6^EKH`bc%mUIqHbmt702zdYja3lJ5ig4af25N4 zBA=E$73~Q-Vs|?2BTjp5tbRelIR1lnXH~sEG1!5WGdma!X5+F+n8mxKfL&5dHnTYx zlI#JK(ZbCJr_Eg zeJl1xM3|@8B{KoUFoj7lT}(GqU@A;6Gsp}vvzhtKVrD6`l37F7*BOZ+&czVpV%WP1 zJ>$_hH(ysi;P|lT^kB!1kFul3$5^Izc;`;osUC(U2S-O$$AJSQ)hZk~e|%VdwpztY z_3+5Zh<2s_uuyHR>3;l2w$?@|m@+%7^xxrXxpc2{+es5Yv^;0-|xpZjv)*L zk>AG{BzKbM1m@Y#{h^9K6!O=$ zd&2->FZ@BB3lD8qAA-5RsQr?(Z}UVV9`!+*lCz4w)>dD!)mJ;OvD^AY1CB6f`aCnM@~jh-B_f4Ok^4C*^?A=r)5 zgZ$2AJN~$qx#Y>eU%C3!)ph!=^D8^zLgoWzT0m}FM&!m*v5bwc&A49zU z1>!LSR3)KoB1mNboe7i*9&Kg|<;qkjmvZcwq;95sVY38EOB4w^GYX8&752HjVDY=* z7Nb$!X-C1if6T+1z~y~IqAuS7wT*O29D|T8ct5t zB>_)_a%{I(jtoG_St)ikBtH~6khdT;l(i|&mn)@Wg7Q3+#=Ye3wR?#A1C!NifJjx>$bOmSDrTF_T;W(#B<}UbBYK}{LQ)l*0{ieS2QyvWjXrjHlFl);vp0qs#&3M&?#slfcPEWRP+G zE7~Phn3Pfh`+`5JFf~6yl8G0X!+N}VRFF3Vojxab`|jd(Qxz^g);A|WqQu|X~uiCjIa>latH`XrCn<{kdT z!%t1mZ=XMP>fqXJ_51fu?O2*j55*Gu&QB!zP6#+m9*qmoOB2Eea?i2tz% z98Wl#!Dz%gBN$npGdQq+hCb-G+xwBa^P-LOdA)t$GMn73AREjrK@WgO(_K;=f5TF^ z@lz`mBgUCTnW=ag(Z-HL5XbQ9Z(e*+{SD7U~uAu6$^hNZL<&Qu}5|u#*?99G+@% zYh9=N3i}ZGW?c`Cp8!t}h2&C$RUjWn6;p90M7fe+cPFR1 zZ{584R`;Bhg#DM*9UX&930XR5B&=uG!UgBMIbs}GhMMp|yd$}=FC12{e;MdWU3p~+ zZc5rVjuJAuQQ9%zxcWj=R+bGK2bV#_Zl8B5z^U`>_DKEFV7PBVm$7SsdLN|JpH8K( z*X@yC!MQ(#I##4kTN#8}nVKZUXacWr1abV)#rDd0#^+uhZ%_!J)(sJ;zVDXnN~5=; zy;t!jkRHcz7RY;;jmN$T75227zdk%<}%i%69w&aOu@qte`s&A8&P}gd^&bI za*u#?h_YQA8rwt_CAzfuEFok_rC3234Of`N6LB$)?vehyol_v#y6~?Kn}OG5 zZbY~-(x=%}!%S+TO#+cxx2iS|nr&b@G77@zh9N!GO-q5MaUI$7ST_6E9xa9Y#tW9` zK3cb8!D3vZ#!tw-P0VQ9DccCyc8Zol zs!;+{^-vRIgGU-=Fdet!QFw5n&f3jPL+y#$I=yWaFi?-e6)z@aC5mgT8MlgYsi9Np z3U+}%ao-P`O#HiX^})oW`tY=_JP4nlbg8z4rmSW_qGlv=0FNY9BskKnNbEA?42B%b z!>=0eki$0De`v$@l*Ri4b$ot={VsU~;aNf5Z#{FqW(S~*)$LJ)1SM7jAhzmoPHh?p zv1hePF@)n2NmuTZnov7qk2`urtDxIu} z2R32mLme$=awgJQaeKs8x2uISB_PXUm7KB7z_WtUn5ejA0+)B3J;li8;x=m#hc%@r z*$8VVe_WOqY_86P$uO{D)u#u~Gt};kSy?XNbhio~X=;*1evR{Nz*Q^8BgH z4(0-8FLNpLDXP_#P@xkDHCMm)5!L`ml3bjdVBU>qs2 zTuzh|arQF%vue!ZgcLO!q`+YzH&~o@yjfX0M26LNx7#OMEEcmr)Yc+HgtaFSC&?DU+B*d49U z9DW&QKZ^tI|Jnn;0omUc@_P-EU2-_Re=Xq_ug=GHJ=3MpL8oTzq=tHgd{oIQPGoZh zO>^*4#~kVnl*QAfA#Ala3RQKiNqek)vSnv z4jg-yDe5hKkf9gb3{vZyq~N83%~RuH!!E;)P*JJb)QdgAnH{aVZ0ZPMYR|zE^)O2l zdQf9|v$dDLLoIBC!S17+R(-YFe?M+3`#pOx_L0h-32McPl}?!Bk)c*fy3|EQE^h_# zNT9sgqcMoam6vj_))D$oE$q9SgN!Z@j`P&XHvS2$vzbrUe?2ZVC4J2- z@e_^5m^SptQ z@WU3#CFh&u;X(qBhg8Ae>@yw0Qh9t9wJ%)7QOmM%ys2etza^fYmc+ ztR`eNq}xJs5=uB4QaZg`e++~ews<=gU!W)0Hm9u`nxnL(+ggK~tItC1$%!{mFVA!_Sj!0K8*wOaO4oA=?j+>|7_Kj;LH zPrT*caM4_QPt<@X_1$_MHdDjSe|a{08~O7@J0~SG zC)+vyMeRY=162_6l+C5y3l{aSe}${mJ@g=dlB~xcv`UhdtUmUSYu2n@Q}>Y|UTKgw zPP`CNA|+I8DG|f@*;%U_rC`YzjE%t(?T*|>%~mvr8ntQeODGXH`^H%0a~515%^qI@ zIZ=_tQI@GOW7}bLfBSG{Yq@2+c6n`iTUq0Y_iFE1k#Z%Frc_azSckekL!DDZ151>i z#A2MfJSnpppaxI32CP(-ka1Q#y1ffIUpy+fwO0`6$IIip)B{a4Q6)qWz;#&A-+`(* z81xtnri3#UaZGEIE51<3SCQMS2}d;Tj60(#=W8;xLT705e-m0N?n*_$F%=8x#Xp9; z-{1+gn&W0X2V2ceFOWW(7Yv#w*K|e9nT|Rpw>r%cNjbHa->#R-v~7sfE{fPiQ!wZ@ zi00n{zMwTOw`p_V@YlC6r4RJgH)M3ww5VmO?vhtDm%N7P9`8wh`7>xNL`%!GfMzhMPe|EyxwnLyZfWLpYx4LaO3WuX5?x()?auui(exeUG&Lp)siAZSxrNo?< z@(mLm8J6` z?Ci)+Y?5}@N|Bd#m!4~{k~8PeKa;2jUy!4+&uv2m&gRC>VoBOXyS3iMFIgQ~EQh7D ze;amsf4$COTdo`qmvasJq0h5Hg9_A)V!BZhG2BB9Sg3VSA72+BYm87s7wsE_so#~Y zvtpO+;3%?X4QCi~Q2ewmbR2FGe4~+&RjV_GQnplR`s%ni7k5{efSeBlwb3S$$Tf8c8DzwxU}w1X%TqflI!Sl3u}41beq zqmRbwbaYgcH>fXCL1~)$wdybJ~%Y;0JW}AtI5N z)GFSoPn{I2RheW}(0foUOH`}L08;w|f3=qgREsRLWc&4dCz zW3)vitix}&N{(>K7PPo|L!SY74?gisSk!;hL%YGb|;!=TzQReYmJk@c{&4+t&Nf1|h_ zOobhi)$Vt&L~Mx~eSuIW>h$0P4-YsR-fan<1%ZwL{w56R`1hOQz~FUL*yXWECSvip zPd~q4w}>XiEt%W`hXZ>$=r!{rZdye^Uo*A}Z&1lAMk7vutd-sy3_(9L zv5Z9HQDBS~K{&sMmQf$mVf`5Ee<1rA6lr*BSV!d00#}Bf8Mm79KeQEUba*}0GjiK6D zlnM`RRO+EBS|K9p@&Xkm*gffoOg>ZEWI9ddwfMgGPBY=H&-983rl%h=e;U&!zv(n2 z)yNZ0$IFz-^s>=cZ(}E!OZzRgK_!6{sge*6%zA#-og`d)>CRctLu%IZbM8Fr&N{b+se#lMwpA3k25z@`!xk=DvH-nngtlIJfb2B3Vnpvf}*j=Zh|LKGo2K5TO!rg z5leV{D^F#4lx~pu*VP(of3MLp1aBMh(8_Vl6sc$q9~U&p#X6N7+vM3H7jssZjpglD zbJoif8*qdpMw7#4w3~R|KtzklAON_fWM>QEtagJS5LB;u5fDy^K=8zKCN&WK()LrP zBfGOFP&N`%`{rHqkipDFzqDhhSF{R12=F|>%oQL1mcdMNf++GJf8t}7uz%bCEsp!v z{_DQYvfqZeR#vcZ9AS;IsWw}e(MSm4jW%Q*ED%93ne7IS2nM&;$#M>d3l$r|%DX!x zPBa>g4u>EZje=)KGznJOW8}haqv&!&fA@BgKNd-XA&@i^!f^%;gV7o8`)$Z&de<6d}?kXeV8a~ZlO0H*uOfR#NScg{8>8E-4g$GvJFDX zU&mXzBk7-YhCbwZ5Y!dX&S2+HI@+2`1V6L$vkzQ+*ZG?-e^6(2l*>!X<&Isho`pX9 zP|;TS<*>!+Suab(Caw3_ElVwS&w9y5Bze8ZX})^c?DS$LSfw-EcI#5B-F*fs94>ji z*I|Z$l~|msoMsDF;T@q>xX#e3uuRL`AFO;em&!%K8};H3PKn53R|177mo8hpfpff- zk(drvVQpXU_q0gAnLe7G1tV;Em~1iF{Mgr&2H41m2@&K62Z}{MtCQ z`H~mSzWjccj0zqhFoTrZ96m=|iLkS3w}FX`eCF(tn_>o&CuvEXUcBr+77AFHz5nvd z4zcW^V*AFlk zTh=%c5(V;$aNcs*@C|#XzpDqJr>mx3meJxhe< zCv1CgtyL?&rVn(v>sUQruuGFebxSu2gpC!E8`^rL;RdT{i^PsJY}`nV*AAUZpr`v& zTSEzeM5uO?e%|`2?j9hgT2Q>lA2~=)9V#t$f1ZmuS-k)~o$Fj&8alPX4=zK#g<^ax zn$V>2LIf$TAc8;`lTp203wR_)C6VO>^>$;*0HdNLnL#p1qB?5O#-qmxnW$bKLnIV+ zw;T;dQ^o^^2$Q}hy{Wn>eGOb+tDb?h<%HgVeA!h zrB=#2Me3l`tVja&`9%|yCE-mMXqTF+e-%552&p*>kc6?KrxL@1rF0ArseVmb9(4db zh==2gyje8xNU{wk{veWlgOM1GEc>W~fRp165n^XKPJGmv+P4q>b;pj|KelIg?X}%| z_Wa|r%kH>n&&A~VtwxCz*&lP<*(TSoB-0wRzySa+m{xD3e1?#%M%OP<2!auge}B$t zBp`5GO|@e)|8>^K`}Yrkb^45re+VS2C!iba5bAHjqai1@XgwC<3WDuvK@a(^Wk8z+Dmm|`Q;Hnd7wEC&CGbQ zy^|rK;4PPm2{G?R^=iV}Kl!P3f7y9we8zvuaL0tjenDMu3pr)zDsIm8*K74(Q;&0_ z_B4j~YMN>y7T3+jlHit6lBmSWMSK<&C3;Q6jZhKbu_JIu@&ouK^*2&Wi{SPd--DLH^3{TAbWzp(XzvGRWiD>qlzHB1m)h56Bf6FG*@z*?7 z)79n}Ev8>+xNtdpBYBWgqdJ%8O`U9nS26xU zThE2K^>gc{-U#gTWZq`=t#fxug@km$wAMA}LHyjU@7D9`^L!o7!!xLT1hjZ=`e>1i^YX2T}S3OWnkZTe}0CoNQ%)zmPwXra%hRKFS7AyD` zwM1%1XeJh#9>oP_Mo|@<9M7poxiXC?v_^a-j{rpDxTwjz5r5Y3189Nbqg54admm|; zW{o?MhiB?y(3H)puAd%e50D>eFqEkC5naS zi`8MVa~-DEfUCt~wm3{iHYTzU7rR!m4{vcAk>OnO@D_*2f1VYd64_n%6O7v!l!p6e1sJ{W}3x>7JG8hhsfxvyznYtJvA1+0~|^tGpY zdQy=-yI{2r_fGKn*cm^z9%r(emOcqyQC6V=DPp1`WoY~m4Mhc6l;}h4v0M%j(K8v8 z;g#jyd7D3Le_Nhj)+Xg7_3LeWV1WbFwNsa@{p{{}@^X1uX89W?p9>5pgSonGxr{H{ zmuHp%xWJ))V|NG^N;&o0Ju^OZI!-Ful{gCbIFB$sWPxh;|J(|cGV+G;V<+L6N%d zQDf8{(G_Z;jZ=@`iJdysf8x=dor${s7^Z?nfQ!RL*7dNj?W-u#fjt>^G3d^4U0 z;MTIjL-c}AbC~&{z^-Qj9?{|UVVaUu?OE5_Oo)OpyrvdUcgUtaH5g5nj3;2S4?%c*Q`Umj>brHJ>{4JeMyJhWfALwZ zVOzi&ve_i7#qKg@I6iH1+S`(0Yrq!E8ZBihEhNqy`5sC{FpoAo30N!wlW(Rx&^^QE=ye|O3Ij1y@? zMZ<|)nHuyciOqSC77S7`Ql?uz1?nfGVXJPDdbD%8p-@4ti+W)KM_>otnnYbu2p39J zEWk@q!CqZRF1wYT_LD1lcr^v#Q_>Lhb6r6|+M7tK=eJCq);X;L%TOy=wU7ip`NljF zzIXSY*H*ylw})$rdswD>iBa>Xfgv(TsLjG#3vN+4 zIDX3l@C~0$mMysT>|5~?e6?pumcIM`@%KA9j?E(1nuBySOQk!Je}-_BiWLc`48c7n zX+cgB5?QL8N}61x#IiY*``CD?I0!ME8#BcrUdBw3t&~|8vcEt7#o-RbNcRss5cPxe zA~Bo{i@QNWs_QsOZH0de={l4-V&6aQGYFnD7PFlTm=d*1f*v&tYimHt=Zjd^2e@#AgI3@ zHS4tE9`gjv#WZ66SXek*b{{p6UD_v)AQUAK-Y-!b~Nfe|Of1fGcD1j;UPib=uIL95D z2R;#FHFFb-dLIpFWChBrkQ&S0f)>xq(x5)JCbUZGo4d71yGZ>bPMYUvH^CY4*#G<| zy9YjoD&#$Gy3eh>;vg4(R{b)Zdhb)usTaT}Aqd2_ z_nxop{qlWqD!ixdb!wK=Lpomr84#$8ah5s-OA}(Gf7lWA04VCp6nv%X%G5^pezvg} znA}%YSES$`^;fWyhB;AfufdiMGP+$RWuWo(9@JR7nCZ*{W)*X8BaXuzBG|$J!70fQ zP*~(K1w<{-Y!do^USSg=tFQ&hi~Lk7$odIbEb5dBPK5@emm(!Cuq`G~HmgvvAf8|q zsUTG}e+!f%p7xI!GuIG*x;G+xC(@htYso?9n}xVd(W`h zPOt8%&N3TZ?8>=S*=n%O>3{E&e;Vk0YoO=XstR`X8?ZwCFV-wJ2el|tc%&g6*HxwaSlgDeYNxcQ0f5KyvT85{}*OzWD!@5#Qy%Qh)G?$)d zg7RxihEr1@UN57Sf2VYPSuK~hPwg6B@|yY-pNwTQkW%TZ#uRy!6#H1=tH;7*Q4j=qmW!y7V} z+>iVK+u$3{P?qAjq)DX`Dj{SJbPROhZ+0l@qrOh?B`t0AK?k`t88WC z$7S+7VKu)z)lM}-QKCY=^rbIl@3|+df2D*pt}w0R|0r2NwFDz1L?f`h>YTA5;Nd;8 zK%MoyA@x0YPm>>h#C{U{+pu+%^D=m~9k7);X`+_E5|w1&w$ynk;5r9ZsfJYpop7VC z-G{$r%gD%r1!~8lO@wS(1XY(TyME&G`CNOKY54t+winljTrR`pnX+bq)wOOtf3S3X zyKOI^{w<3FDq@(Rgp5){r5umdb=UgQO*bhKX6H@pTHavbYdthw%ii?yt5}X(Y6m0R zxKOWKlUPH3o>-Gmhl?|caMz6D%w>y6hP`R0`WsOw3Up(qc8cu0>5AJ~!#1AdZf8Z< z#&PGBW|U^&Zw#wQ;BR#E=818mfB&~^2=kr)8ymuWcm6|d2q$Q~U;A1Jjk0P3(1J_p zf7x5nrA1kT;sNlI>o;A?@yFKA&4B)&iWmYh&nKS7g#@Ih`B$ob3-v7kMfB3&~F{&#+ zl815rM{+QJ@}Kw@A^y?bi^EOc#fg6S)0vMkS2CaY|JV;t6?+ z&IxaHbeILr2Y=nS*@h3^CTK2rGIPcLhuQx-9{5&27jc8;fvQL#vz zBB;pc3&>owM>$0hsg(in4f-I4S*U8!;Nct=E)T+p7ocEwfO^ypYGCW zng+yZSCs)4l_jb-f9d3`NH*R%+X;6d|yoEMG&D3JvBWpdVmkCP>M>TT&iy;(#aCF@@Rpo6>1ZR+Oa$e z{1jtE6#9$tgvSOn`j_^cQe3T}jJEl=q<=4|qHhJ(YS1@ZeXoQVRGY|hOkV}9V~HY4In-ntiwa0qs0$yj=?UjV4zYvU=iO*$ig9h<6b%W`jIOv8 zg|djNfb-$;f0lDtOTL^?gbEgn4nm=vhzbdi?+lQ98v~K=GDi zN>tRcs5E+tKP}n)CV{sZO?HF9ib!X0a%K+Yg*J}ZcoSzvMCT2>$eB3mR^`9~q5)7u zVp*PgSq;3^#+eN^BTx4qazT46lk%F46321^vS5>ef8$x+U^EyV_%3j)K*^cG-YMA~ zev?V!ITon74oMbfV)K}3z_ZQaw+So@950x?m|<-(Tg;+?1(xH@l98uAUY>BVxQHzP zp~QmYSiBUxc0-HJByc=OM9$+hn^~kmE}LAAIa|%V$#2BIav~?XupK0qPO~fG!rE#J{OHH-ss@4IN>cGrvYb9_S!{*J!nr` zT3qft1p(QI$zU@Wc{%|` z2U&=<8gXy}4qgP_NGFe2Y(X5X4ZDqGmk{o&6#l+dnW)m?O?1psb()L!H11AZ)&-0?oX>%Bm6JgJ=J*^Ny zf1Y47IPrC-jT3M@yonchw}WLlixI2Oum;g?XX%>b81YrX=)%6+h*|KO93oC9hl3RI z$fK|_5qTo^6rc19R$Lsc)+~xZ;aA{rDWZ0BJSHXOSlrWTkETt6U=UnkhqV=F)ge0k z2&$sfW)N_eEyTcEjDi&>*qic74h2EaecjfH0e`#PR+1j&q_>mqmq5Cj;*e|ke$nQg1bc|;Hp{6iu z{;9-hTo`>qzxLo%O1vVAg^FBAR1}fy7wzWS_i2bc={5g_1|~ds%{A)$ZKI>x=FZ)= zZ{N1LtWPu_UtqGrF!8&{t1cfq46DHJu64Tou!dZ+=06^MaMLC{8ut8Sf9%J|{t3|; zrSV9uf|x)KfJ~OU?98|QkmG)M+hzB2-2IpBz1O(;@+;0V9=q$Y_ZhOE`@zjO|A3pq zefg40zRa7NemwqJf&fRTH7igj&m+p7F9+N|fY=mekcs zPp#_876l%B5R{fffha&Ue*j&-{`Er-5&DIiTD>UIRv_B)hd176p=Dag6L_xOb=Owd z0Sq%SCdI*cCi##eawWownvJ~KXa0FLd=QuYAgJGkmnM3{i+68>p>4fQ-w33;w|i;y z8=Uy)0Z!nFFC*{;kDH3j^!`K3XtP3P1Es{S3DWSd;HFLL?>24Hf3MYnnNHhJpY7^l zVamz5WG80O0+7PHL-DBpxeAoK{{2~-L}u#nv5EZ-`2)g7 zR@W%ns4SrA6K*?bpNj!W5xPOsZRDV%De`8|Pe4}wy&pi0{t<%XZCZw!aKPOVeUu*OlesYabHk<>G)cQH| z>`fhK4{qt$I&*X9=J^Jn;ne;)>Wt6Km=J5$IdL_4F`gLreF%!?9@K3;URkV6T;WsN z%d<}3N65a@mt5eMyf&L_aY5g=myO2`Ojz>6xpu&ESQ^&Ne=~6DGGHkz3%$W3(1pBH)?i5LGlCyB=sq;A5T!00_yFzRJ&mFS)0{&>KD&Jt4n=K z_O)WZtCeZQf9!n$=dq;0ZbaJw)Vv=!qjgh*OC3!M5#4l6ftMC2$AMxowPb5pOt*fs zE$aO}^I>JrA_5Dh!cx43`8`XQ+THLeJUF)n@Y-$n`KHb%IF4PP0=HfL8fM{nCCn$s z$f6!R_o(+zT>yn!t{7 zz4o2A!g#Ev=56t6aew0$dWDMT6$ytb$MtY~>XXtGYx-rDvZnLK;e3aOJ<56RfB*V$uaD-&ljNQVaWFCgGjv>}zzLK~^XtPKo@k5YeJK{+~sV!fn&9!LWE*#nQe zlBX&Fumu(tF9)z#&0eA6VTr?IZtt4Ds9ab(e*hl2yK9Qw=bWWJ{Oqzqt+3?Bq_-&c z73T&6J_o7&eamz3!2H3Vx*a?_U`Pn8!z?)F56+CWLtEVLa`Dpz`P;Qi@4S=jQ`eA0 zVlLRNG7FEX_cr#|jgb2o8xy3MO_d7G+^pksY2xjKxRVj?iBEm%3GU=nJ=pZ%*hRC} ze-W~7R{b=+0{6V;1mf_2cW|E_Lk#58QVjnU!=-?K@B@3EBJ&gR9ej?HCBz zEA!?gVGh}U99p$-OvdJ_lD_I$)ibNxe+O^KXZcd)KyQz$Yjt{Fa?ZSpJv5jo&!#^5 z_fy7EHifjPlc_SZnC11aHC)Hsz}(1unz^lc->i=0xb$)a*Sret2{`rfS?|8|#&r6vY17ivi=9J@Z@+bQ zZ?ZT$UHh-pf>gYFWAwBGu%z~vxp_9V=b2}&hUa(hR)4+c?%mycC{D{w>lj4oqJI-9 z^h#zkvzyt=T*h3*T+4ih`4;m8bBy^3^B>G>%$rP&#tNUjwtPgJd-^f32m+_J5;2)B z3}`Enujs4P*g=SEP_B3cF&6RY&kOqdpe<;mv8X6T^NPNN9xbZZQ{XA+P(cb=f|8&g zk3&^oplF;(C4={;}URK-d zS)z|*>fWQdFy1;noJh+`z0_rJ5){3A5tyu&vc;_C)Oe1}R2E(t-mCsHdg^7NeYFLH zgXT~LGFeNxI5JXLxUeG@>ws6)C%7{cEBUXuJb90F1Gz1!S-E#0zIiN=>dL{CoRVyPwyYk- zs&Bbq*_=^gExwyST6{A9UVriE(b|(I0qVO!pE00Zvgnk>(ZN~a>C;1tdJ<*zlY==D zJmj+HZLZH}_wCE>cX7o5)D27|A89G$awZCTu%{^K9h zFn90X>sR$ux9)^%AAa~@*lg^~KmFJaW%OsC$xV5~rg~NlSK*Gm>O*=fzsJfc z%=^b-e)6|;yO|ZtY0P$n{Vy{2F!wWGW4_6JpLvq`G4nI#x6JDZ{Yn@@<9Giq86s|!7b7zDGmwXs_b334@9;-bvHO`9DK^4mSAni zFuZPe6&;S3$>R+W|HuA!-~IW|=?mv?u>V;7qhZ$;TGb0Lyz`FwTXK&2D(yr;>&Yuc zm;H4Z?pO=(^vjM%)s5J*n{rUhsatZi*KBzL2!H=t=&2;8ei{#OZRNR&-FL+rtuNofS(?#i?D$0%6VTB<){wTDm;>oqtL;Yx}`@c}EAG#J-uw-V+ zCH{klD1YJQp8OwB{NqRS@mxNiOhwbnr}Xx%TVb=AVyGHetv_CKzOZM_85v)zb6zxQ z1LuhS?DUnX1=jU{G-cK2y1#0%mMoTg$lV{t3{>OMqiRB92;}-FpZrJ7+3L%9Y{}>y z#hA%vTd}UMcgpf~G?mQfbMd^! z-eZB`Wo1l*J}esNI=?pG-qIbnW<*1B zquG!V)bDoq@^S(gbsrSk+X`!TNjcLr^^Qmc&YYH(N`sq&vavOye(ZypN$%m(kewWQ z*nd%IYgeCvOH(-%sWv7JV#XTpZn4k*nscsE9R9d;@p`+EF{t0opN!NecnzmT^R=SZG>h55T)}*qd5HNAGsZm5 zyvqEZ`6Kfe@W2%4hv~2$&V>tLH}aYSN`JMW5%iOhSlcp2zpPprm#75#DP2($iYdlG zou|lgibe^aEcDV;%iPDp}Qq@YrP3rd3z!3^9gy zNVUPbJm#hbz9_yhP3{$#o6XulY6*^Lc;L zc<_75RiEJ43oq>6jxCHB+ZMJA$1IsMLT9P-3NV~k=N1}6FtA*HPRq~`d-Ww8ITt&< zgYcJLD2U-DEz7v@;nc<9&`nljF1|T9E43%sb})Bm@`lK5slMyvi!Wb#27jB|aGv@1 z?eW>O^UIcHbJk=Ma0KSw{&+h(IDrJb(Z5`MXZoS(Wd9@@fSj+#;Y1;L~38pQH zLPvktAWn~~Z-qh-w++nkl*66Dj58ey*UQW(zdZms4ubbMt$C~SuI%V&_6Db?C^^+P z7wz3WoE+MmIg*^xpH0j} zcv;;~TTM?-PKUH;2={js5|$Iab2@t3JLBs!M^gRmzJPGntVFhdO7ci%^H6el_ufU> zzFR-JeEBDPyFAVtXs7Pd`gczdxEu^T<&L6aB z!HXKg%k-o2Qi6Vmwp65rXdEQg;Kgh~)=<16jMt;fk-A7BYb>6v(}e=nj!tInw6DAy zDG_2?i6WL~9Fr-=dVk!CrjeDLb*#kq+yZ@qazKg7tumDa@e=2oH?@Dtr5z0K~aF`>W!KCku+!KLBFMsC_v{yR2l9gwmIM*Bv zOLyJ1_P5LLxZ~nbDKRBv+%&JM3QH%+_4I)+}JU) zaqZlUyQO<@m1pgc+>>K{kLQ+lcQ4JoI%|b*#WYwreSh1|q2%11Tj!|no?zb(Km24A zfTUp>nc~MbGWYBVU-;d({Un(O!TN{D%x|G6!M?yDg}T7Oxr%4y`@3aipVm zE2*s7v2vCyVOI(*?#$d%R?G@cTLCxkoSPilxovvaoF}y|Jnmz2JLHuwR!JI-k*7_#V& zDpq5%a+BE$dE+?ZoiKS78ip`9f%BTZOVq4jAB35)CZ?(j#T0M&6PJk-98=JEbb@9k z1gc6jPzrlQZ}~bl)5^y&I>Oh--5CFea@jYI9Dn&wY7YC)BS*-$KR}^;`=N_+Tejr$ zt;tX>JGGv-OiW(E;Z>5!9r^0Thl|$e45!$ z{dU8=w@NejsVh(5(tEVX>|(NK&8@dD9)IdAmOFE^_w8=Ubi{)e+Tu+0i>U>vq3&}# zigQBK4y5;a*>v%`o6?R0r$tv?{me6aQfz)MvF7xSV{-0?%eW1EX{+zkS;wqLS(pAj zi3^zB%*UDQnLAPL)p^}x%nz8Sbv&Wg3T-F%2Z^~KW*GTM@E)sUUZR14P12_H0e?mj z`F{=1M~)o-0X09IMhzw6y_4C>D<5nCdE~<(^}VwxAZgaV+PViGs9oG-e{t1NB!1XNU0-hU?$95Gr3#^ zivk08tyRATbDGPY@as#+bF{xGMK=>C#{HunEw+U2FxJ1n$`0ro+$vsyM$<*c(S+RF z=2HLS3c-!7DPXIRYW>?Ut>$|z)-x3c>;b#7N3?F*YBH!VLT4K}goQ|HgMX_HAS7)d znby5~gBi$MtX7M%Z|MqWS{U7}kSh}D5 z8uCMgAs>8pv}4X)PGMO<;d-qSZ%!5degU9{>=x98#3?+C%0HQBNQ`c(dxJK z&$3{r8E3x<-G<3R%6nzaiH~$#iIwU(J&49`vr z{7V0GV=($U-rLPnA?#Nd+RYHA&q$n>yx;1uo5>2yS6B2r+ylR}o7F952Z1491Pb)= zvpqWPII$O}i^e}Oa(`n(PV+Z5#Bq;qVSM*0VH%rn8k=zrKF4v-9n{jj|4(&a9w$X{ z_TNucAJaYEGkwfV@668ZTsz0!GdmXxyUTJ3D9Ry=q8L_GKrS&VUO`a_qOTeiF&arE zo)I+B81Z^ll&JA|6OtH@7>&_fKaKJI#JsPGahqRN^~|zpOn-jA&nN!`cB+r6KB}MU zs^_VGzTao@7ZKjFe96WB!?fck&mKYOh<@DpDM-)eMro36@n5`T`4)`6xVZlaghpmh zK3+SN7d<@ATd6_@q#*N!6)^L2X*ehC-8;${&XIcjIiGZVvgRN@V+d{9OWl#)cCJ5{ z=8X9w+|Ag{+kXz8y$wEd`mqZeNxB#94z-Y;AT;_eY}oE_Lu3{1n11{#U9TLEYHpTy zbT3Jf%1V)4Lx|hHlPqs{USs9pvPKRX@{;sWo~BQ6kz&#{9O5BEl$=>G?+{0r(Hmgi zEa%<^7tHq=W-vk88jTA>4Z-?XkTH*zO0Ch{E9s1prhj-IqZB7~cf)>3^$+PW*9Q&u z-+I^bq_a351lt2!}}n8KmXYKWP8u$&@OA5eCN=p8>37Zt3!Z!?F`W97a8|` zsTdOVWq)zIaS2@h*Pu~jOu1|zr~y+n>IylHNImEyA6*}(hM1pSgWKuTQUAuGMzinvm475ojs7PKqd1+U&X2>XRBtNvu(K4t zNq^`?L;K_tnvZ$S7(Je5_NE{*X=Q&s2E-El6ndXwh`Nd0HIqA*TgIJFo*HHpOzD(F zT9i#`A%sw^my!a4K;7gi-9dPSPGh9@+W12TN~>DsoQzK-8tPMG!xbbdfA44`THsP3RP0vGW6u2UW1o z0~6>9^2reRv5Gszz*VMd@0NXNHu8Ax_J8>BZ0bb*ESzhE#q*Hi{6$L`&Kk1uMGQJL zt4Vl$p&%x)w#MfKWC`A>TNSnxI-z1m6NYb4Zb?&`mNE@b@=StEF1tgqgtU7dHCx1%zW4BLL-z-pc&x?z;Ym9VIXXDnkYyB#{8=DOMj@g9pETi%3%|TzBGEKX~W?F%)^ts>~LvEA4noX z#Q{jrQq{K6jgy8+W0g>ElR5ekmN0#H_A**`=D*X4hsn63aiOu8tSjV zX`e(IZ_oU$wmW}= zfR6X*!MUG&<9mq?mTxH2f7#N(YnCnh{(|`n_AMLz{otw7 zj+zbJDPP~U>$atL?fS}9yKei!^2=O3;YDI&TtU_trx~Rr1p4uTl8sRF&?vb^C+W#p zyy~F?q^R>243U))_BRAW&Rdu}z`aO0#$fNzrUM)$z5$W~w`s^>+<#;4wf2$w-%dsW zFN?Qq;Uu;M@=IDda_6}k+P{ClGqQg_obT+~y&D$o{@;<2y(1&&I_Cz8$cB|e&a2L= zkiUceYqYn6Tw)QTizgWGRY;e_giHKpXA_dB+o43QstZO=kaCc$k(UDxTyn|f&etv{ zDJ(zXZ0Cn(uU~&Q^naece)NT{@buQLpgaG)6$ZAVQ^!hOe#yP0OrxYh@*g1OR&90m zkJW=f@aeWMjYV#vZJ&BXezxr=eC8jWs~ECBJNjn`wniV!UL(NSME9e}_z{PQ zUiXf^xli|^=e_!*(G8b2C14Vq4@+3U;7vnA98da%PW(3RVSoC5nVbF3^!+i)P^Q<1 zOsXXQU4`E!3jdVh(=k4Mc+u$yoxW)69*p;Fz3c&uAGqw;0Lle>POU!j5s&tMO*h15 z*64H)oiPGv}exhllBTNb0Pcy>QVP2%WKL;p~gN z-A&$bg#YM~oqzA9_~xX6+nhf<_6z3?G2Q|zb-xld(wV7ilX6Q;_H=AJrnj4o$?bd_ z>2nTpbrEg%GhAIn@jaBQEAT2r#r{6=wCZWsI$zsHm;IAPh`w^t@_}+)ttDQRmKE2Y;_XTJ^^2jpUEE#{(Z9Na20B zi|DmY%p(Ktx!Ayp(Mh+vKe z!AjSvHM}iS@s_VU);j6Q1%iLdt>3<;P7v~j z@7{CFg@5xR7ewaoc$&hfPLTQiH*Y>0_}r2_kFL2rZp=P8z?+@@_@qhY(DAcd&>8&X z_UA7-VPVT11M%aYe&XsSc=tu@L?m71+%|6>x_{8;eE3XrL}+dA*!c^!|5WE?zyG}R zeSTL@U4@@yws9YezD?@yhYt9x13O}Y%~BGzkbfv=1f#E~Gp}Prnd5!nb2ZmBzDiAL zwDza769{?4OwlSPN>(Y}YxTDBe0%f;&6rpws@1x}tbnW#bt??*&izaSdl#b~o?ktK z=PSP|i;{q+uaW*pwXnNiIy{NRR54I&DOu%YiJr>Kx3{3FhUPqOr6)xfRWQ-Zgkxv9 zihmk82=xeFe$@uV%`WH?{-nvAQ5cm8(iI z!x)!(TRx#!~U6(q=)JE&@9^^ySw!tYMSwi(PfN} zN!M17neO5$k`3U5K^bq|361h(Fd6^~HjYD*Xzmp^0Pbg&Im>mbDxq4u4S;hMYcV85 zn?-5#3p7+>P^>H99JIyZ^wBHqYs{!QQvY3JA2v#doCnvfLw_KpXcUO5#=uHiGE^Wt`8|Y-8^jlM3uy z+4aB!T`TY2yO)u$zJ)kv(h9n31w37!3v0x(;bagjylIqZ8W*6uohLUt`xx%_0(>iZ zw$$dCz)k0dx#is1+@;(NW7c5Mjek5d0IV~%#WVw?(td#jE(+1F{VkL`H{Fc~iDd9t zpoel6rw_&@VhX68b2WMzF^_5Vb}q{RxefiFs`$(ZIJlFdM-Lt)A@1CpF&s6u#l9;P zpLQhRo0}zB^_YcbuLgbE_ytMunZDI8sD`1wpy~P=)qiMeGFWn_ z?3d-RobXeSXjqBs=Sd#f*X2*hY^ld(ry}cdCG7E#A_-DdzCu(I{!X9lk;q|PKBAEq z@XhDWyC|dC)CRY;%tiChx%qwpJb^GqeqzN4$*7`wJ$cQxcmQv}Fufo>r}R_w8(n%l8-HbT&B)lbJ^ICB{q{sz_IK*>OUB=SM2_o?`M=HVeen^k zBf(|4UfRo1kABj5iP=NBTWF6Sv@4|?Gg}XVLM?wip6cy5z@2|HMz^BoaWN#nOBAW0 zO?#aaS6+(HWy??5%Hypcx=%SHj z7rTAY6Zjs+KSF1zxQrWBoy7ysu!#esgumiEl30*%9*MOLpeqL2oONaLZxBr^mq(we z&O~Ttth54pKRqYi&e+EeaEFWD(9;8M`~CM<=eK7Xsf>io(1Q?=iM8(!Y@ zGTJ$34j=M6Ck(A^z3;x(wL@^LKjggfW9RiBLuPC)eJlDe%3N$4Zn%DmfYGJkMq3b58Ql(78Y7t!?NxyID}87 znP^5`+yJ+XdVlUV;#tty>T*_a>D7~T+M?8$zbGA?$T)O{1E(q2o{~JJDT29V zNSv{h9&(!Qol5p3n?1+RCfmy(WS&9~IK>Q|Lyr#|<9}1MkBn^7Xg)k<*v>A{w67lE zd=^r*(?|)>Rs;Af(dWOz3|j}=^VLMIbbf`R?*inx_;{jhbPE-umJ#eirjX7F#PlgZ zssoHcVE_vF>fF%$g>zdJPki1n3#Yav;8ZxR$vGDx=Xsb269QXzw9K3_RE(jW(I5P} zZNZ%Bm48-ZLyN7I>2nse!4HI)GX(`|#Ee?x>~fY%E&1NQfy9?x{+9nB@7IfLUNphY zVpx)s-55J9b&x)r5X;u;ioH;&QpOO>W|vcG3i)r$Lu6g>Rjrb4u%1;z0_FK*7I2Bi zHcwWpa+azlfflI3GoJQpo6n9(UT6YU==V8qGk@%354yL5h93BW-n<1Nq2MzNpYyEG z@aye(yQv!i#5L*86%eNgD3aRI63DffjqP~6JC3$TVu?zp4|_dBGkFhA)|@<4^6eAw zzI{+@Yo7#)^SzLcaJS}Ls`>o-@wx_lmtTirQ$xN-gVAUZ2U}3g`CYjTU7?mJQOshj z4}X4w=$ZGDXVuEpNW0#^9gIUu8Rp%tvauYG7F+5jI7^o$Edi}@b~ zBA*|M7GPW`T16T0Sdxzyd61^Y!tImKJ0uou9;pby5h1ghM_wLKP7zvi5jcsLQNBuJ z(OPDhSF+H9V!0^qiF?T9WKX_g*$BRrKYzIKxd?s%fXoYvq(mfYaQRENr?D!FW$ z@rLJE^UP6-QEKRf?6jCmlLt!MVspUn##QeiZ z_Zx;^wZMFmti%kW>#Z{bc7n96_lzJ}+OPv%xU6z)Oy)(+PwBM*B`_IVKm#(Kj%@l6 zZ9ExYw!$F2CuyK(kQcYqJ*I_Z}b9wSVXCgx=}> zn@)2^U?=^d@5K1`?prYHIZf}sc<1fV>l{6B#sE9_>BO%25$Tr-G!|cmk~{l>4dFCm zBGn*WGuPyJYQVURDTCmKx(kHp!~QzC`@jCiclRA}NuOCmE`K!7>5 z&CmtXqo|vAAe3Nte>&-rV$40-;SR)=6;+qO~H6A-GR}D{&ZitB? zgz%g}=P%AnmsIA34}*;`t;gpFT|N9{g#0o8nRxR_KEI)!|1GSOA%M!Eg9qHnDO5WG zD-A^V=5kdtLqC`y376o!eNTWiG~+erO#$zR!+!+2fFJqljrZebXMb??*MZ>rmYBftAoHHkKR=5uyhG*eN@GJNY zybm9t8E7NghQ5b>f_{TO!5U8B5}tv-fY;#D@rC$ud;`82--92(`|u0+4g4$ofAELI zrW_*@B6aTJ>)b>=EO=iJB3f0TXuDy!*=Ryi-X&j>e29%zQc=v7BzB6)co5ZcWj31i zU^?iKF{fG+8-GV*JH#|<+UH6cN;1X*HINrCju-(G>4Hfv&lrpS?2IsoNe7(G*`XjM zwI$j(Jp&dG=DWm1HJjcJl-tXT<|Ng5F?Bz>&p+9&kMli@07xjY97Fv>SKfN(vE4 z*4ds|B7fB*UrF^kvQjR?`Z!S^Dq1>c$7r;u4{}4iOyJ~(|Gk8Jd)va!?j?m2o?NEb z)ANBqFxY-TUMWsCsNvQ;iZR7yJX`z6N{3^uN&zj z@_(e(!6UMVx6Z<(Gmv}<(<56_(4R2$R<8$Bt(4~}&yXUJ|FYFY>*x0be4^)vo+Db& ztfk_OQ^4%*oRpttDkH72Cg?=v5K`12Qgqr*BycWO-<&L6(2BP#7QVW$U%D_AfyzK4 zszZ?Xmhp_FissgEt9XmLCnDW+mw4@vIDceCamU3Qck%Nsl-0Y{XT48$;}eR){MqQs zs~{(y;Op(wnsC*xeNTu8JYU3zXCV@Mq8vW*R^>{;Gjq`2g*$nijH#mU*Z(>(50$Bu zy&`3kA}Wt!`%Fb*5+}Jt4dK(8-W<>nuMrswRL0Q(c<%4ZSW^&_aWLq$d!w2!)_+T6 z9Q0a5`$N2d#TzND6;H(1Z0Lrb33`KSpfy269Fcim`>qhl5dn)D5wJ)026G9`iKxw5 zG&XV5^b|!iOid=IZ0wIuiWPlvBQ=K#+UvE<^_kY$s3B@aR*3PH(9Kqr*bO4(ml7zK z7A9LwM9EbYD~xFqHar3C^?wt2pMTR_30X-a(c=rW)+|N#czi*TyqKa_#FP$;7udT) z+BA8}m?(UL?DvqDM2+b2HUoJ(2C`PjYpZ~Trb>%HZpaZ!HZ7S5EtAw^n(UQiMGz?U z76QGvCl(~HVzch?yx%fJUVkjTB^n8< zcDp5ejC`=uZc@XMm|wEvljF_gHbqfWB~w-Hj)2u_ntn-A6MDwVSZyJd+?KaFR_P8X zGHC^(sH#e!qe+cuPR~&T?Mk57e^_q0?9p|9tQ_=`y7xAfA~PvJpX6`$io`Mu`68;i zMmJ=SWm@EZGp6C&iAal6(|x2yzXA3SX z5-v}HObO-c8 zE52kVA8gOdOx_7!tn~Qj$va6bn7Au%Q}O6+b$LhY^47wdNMzkaWNlh$pGOt-WX8&x zZRF+dj>f7z0a+G2SbuUQU5Gd;>9nl;K)@^UA_{r6aDU3kSj)|Xzoir+twO+>c0@Qb zOCa5Xq(_L%d0zKZp|ACmzTLE_&=uJgI}EiK}omu8-^ICUaA{8Qd&x4uAVTxrkfLoxq*Ut>9L1 zYq|B@2JT$$OWZ}=X6{n%a_&m*8tw+}>)cN6UhaNwPn`o~Klc*%GE9MKa2R|8z6rO( zx8VEm61)n(fVbe+@LPBn{s{jA2T&8SA=aVo=-cRV^b~rAM(m)xEJe{S(v)Z)R=qJfJcyO_nrATCZKYFDn5DcKb%L!oF=CS*e~N38&%7^G@ijzzm6 zs-1}i1I zXnzJHpCzVfEmI;|U(JQoN;Q|~md%z`DKK5i3F%-Zoqx&&Dbzej36B`?mK0@pHAWmu z-SrGtL$1&nBO^^~>>_vF`j_hP1$sL!@GeMWuGJ_!mj=KwLM0mbwnA!U84Sr=lic%G z$mL6w1|m0DssnSSV4CiwcU}kSWplM03lh`-@VW@OM%4^lD3T{!VNXmT*%V?ykD}>8 z#P8pO@PF4_7=I0DelbH2O-m)nN?9TpOwmI1jR}F8Eyk8-JS5w=QH^*9iO%a_#N@aM<}hQJ|K1 z1g|WM(NgieQ-u!-(A9IQGI}=87f83c6VNBJ$di23I`1k?4`YOK#bR?h-C8UWk9QO_JxNB;37wixlV#0! z>~@dR+@k8S_Uu*~dL`)TdITq>5m3uelO>X@JB!1S66u9}L_=MFjc5Dcp7Z<6Y@uUWM=X=8MAP9QOfNq4(0@_W zjD@GnUf?YkOAmp!zdPF=)76${#k2jC&IuV^%bGsF7|(mvY}M$mT(3q7uqoBo<++AW zPs7-Zri0P`1>tj!oSTFlet&OQfAcx<_Gl&@Te765!(4WuQtVoFvfUkwgnCo5RD^T8 zXFSlda@H0#Kx&f849wjSfq^MoiGQA0{#$7r4k!7?--eo-Bhi+YCXeL&-UshkR)xrW z5gD`pvva2NDw;w>GJ30sn$8R#rF_ZYuTzw*rqRmd(VKd&BC7091lT5s;(EV9be{<( zX*?S=U4O^Z3t+vv8sAS;*o5<@%U}A*Z_uApMQe??8ChC zuEw8uz1N#gcXVXZxpLVI+;0XABj^_e;Sos`pXnVG1Q11Hz4{PVle%U#$B7=b*m|is zMq9c`uTScBr6?2xGK^axU#QE_d{>6U-Hrpud6gLw zYdS5b2@;+;Q)|(-a>0pO=W|Lyy+oA zip6l(U{|6|4=gHV!w9vsw)Z8ReXw9F&l|xHA3CZhk{<}iQi(iy8gf%}G1}F+!fLk9 z>ipn?PKKC!^wCFi0n0;;fVWl?edjdEshR*4O^4s-(wUBqP%>b?K!5MH`zFok3i-UG zE~2=t+j)f=zF6?b6cIedm#oFDQd^mw#3b&h2@Pr)*4MQ2yE*xZy)q+;QL ze5B{7hdOMSbb<4rdw>6bAa~!0iQr;&Jen>3- z<8FWV;fEidBXnd|ug-UkfcW#HTk@xVj7$@Kyt=Jr;c-1Pdw-(HkB{*^DA;NBT||8x@1YOd%Ze5sC(}?#q25dm`6y`w{t5f z^5-DN!eo(o>GU-jX2-*RY^lP&g;19o#5p_B-l6e~wto|!+#3#`^;oa+`Yk^6;?U?2 z=_TG8$96k%`z?p_aQ^CBe#UeEPuI&biVlhB8r4>K@6*@A!Ly$0*W@YhcON4SL-y}o z@o8nn$ss#4{MTOf@`c>NSin2#{3$f@6y+PB7-@@sE}&j<@(SmIQ_x4wUTb;Ra_2ZY zQ;!xbcYijWA`A_|{^eb#j9$=)Bj@6S+?dXjDaRs(D7iJDAB(NzK`0aRaA@$5)@w-f z8zHsmwhg-#6+l&-VMWuFL$*+nY?7U1gY7(I3wIuxG5XpeCqemtm|e#@;R|sW`+h-v zm<1yP8g!v-N)m_=XpCxsesRfAy4M`8I`_gnXMZa!cJ6e(g$_8YiRI>e(QAO>ft$#B z04_B^AASnXeiDplUwEP8cY^Rc(nUKN#Sq^k%FEl{5WHcjV= z{eSXQawAcVZ=THYl7VX29R}-owGz~^$Fu@?z1td{{qFJ>%{ahC(wN?+^QNjJa+lB3 z5SlMHz%0~1?*P~E=A+BE$X#Cm$?!sQ%QyMG*rOSvZ|#MvC;hU&;Ya1h<%kpeY$EeL z{O8ZG*S6?)3pbiuwq{i=T7>$-KYhZAbPs7&va?Gj#{NB$LX^;e*QEHX#fBKc${NkWRp>I z6%z>nqyh(#c${Nl0D=?-1{Q`Ph?9A99Dnlbf96m;?tb+DKZ^#CKJ@<=t;3y=pP1`W z`2c#77M%b900000000aCd;p>V+yO)ZxB>VAXadj!1OqYyR0E;|#soS9d<6;xJOz>k zzy=BiXa=4K2nS*ZqzFa`hzVi|mI>|(R0`A!ObeO|+zdPn@D0)q91cznpbqvAB!3T# z5C#x55MB^^5gZY65!MnW5?T_D60j2367mx~6KWH96Vwz$6jl^y6o3?%6si>56!aC= z7Kj%97i<@@7t|O47)BV(83Y+L8HO3S8S)w^8eAHb8wwjp8?GDj95fuT9PAw|9dI4& z9ts|09{-iaWqO4m@5wj6Bpl_&r)Zx;^qfygvRvNcMdU^jMxsXQM}SB+NZv^bNjOQONzO_nN58NRQ6Rm zRfbi*RrppOR)ki@0&?7qZy;=HEZ<$*CJ-H7>lz6OEQzC zSejWZ!?G;L@~ps$ti;N!!m6ys>a4+1Y{k}W z!?tY4_Uu4HN?=SzPCO;xJ4*7w$R_Bq&3u6|;_i9QqgiT%d8#W@eLPJUxd)JfDy z>?_e{ni$nd)k)>0a#A^|b4aZZ)(7i@zJr{g-=N3b>VmGQsTN2z|Pe(5|)bxL*0 z_`j%A$*+IxtBQW(9*F;&v9_+3U(2uUuU4nF&sx34y2id5b(^>s;y%)UBfpW;sMAb& zA^u0L+*WRDAFX|~@>}QC%5CHRlHcmHlh^65lh?`bfJnMS(dU<`^Q})x_Pj5fH^Xh#cz5Of=>J91)>I`xRxr5vx?mxMMyovsY axKHIy;=b+dKN!cxY&7~87-cI}0002aUROu} delta 30922 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

rtF$QWp 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 diff --git a/dbm-ui/frontend/lib/bk-icon/iconcool.js b/dbm-ui/frontend/lib/bk-icon/iconcool.js index d5655d4995..f7b58899e4 100644 --- a/dbm-ui/frontend/lib/bk-icon/iconcool.js +++ b/dbm-ui/frontend/lib/bk-icon/iconcool.js @@ -1,11 +1,10 @@ !(function () { - var svgCode = - ''; - if (document.body) { - document.body.insertAdjacentHTML('afterbegin', svgCode); - } else { - document.addEventListener('DOMContentLoaded', function () { - document.body.insertAdjacentHTML('afterbegin', svgCode); - }); - } -})(); + var svgCode = '' + if (document.body) { + document.body.insertAdjacentHTML('afterbegin', svgCode) + } else { + document.addEventListener('DOMContentLoaded', function() { + document.body.insertAdjacentHTML('afterbegin', svgCode) + }) + } +})() \ No newline at end of file diff --git a/dbm-ui/frontend/lib/bk-icon/iconcool.json b/dbm-ui/frontend/lib/bk-icon/iconcool.json index 407cdb5afe..22a64a58b3 100644 --- a/dbm-ui/frontend/lib/bk-icon/iconcool.json +++ b/dbm-ui/frontend/lib/bk-icon/iconcool.json @@ -1 +1 @@ -{"iconName":"bk-dbm","icons":[{"name":"check-circle-fill","svgCode":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n","codepoint":"\\e1a7"},{"name":"exclamation-fill","svgCode":"\n\n\n\n\n\n","codepoint":"\\e173"},{"name":"help","svgCode":"\n\n\n\n\n\t\n\t\n\t\n\n\n","codepoint":"\\e1f5"},{"name":"help-document","svgCode":"\n\n\n\n\n\t\n\t\n\t\n\n\n","codepoint":"\\e1fa"},{"name":"auth","svgCode":"","codepoint":"\\e152"},{"name":"apply","svgCode":"","codepoint":"\\e144"},{"name":"increase","svgCode":"","codepoint":"\\e1fb"},{"name":"close-circle-shape","svgCode":"","codepoint":"\\e1be"},{"name":"right-shape","svgCode":"","codepoint":"\\e1a3"},{"name":"bulk-edit","svgCode":"","codepoint":"\\e15f"},{"name":"funnel","svgCode":"","codepoint":"\\e1bd"},{"name":"copy-2","svgCode":"","codepoint":"\\e1e4"},{"name":"paste","svgCode":"","codepoint":"\\e1e5"},{"name":"keyboard","svgCode":"","codepoint":"\\e1ae"},{"name":"draft","svgCode":"","codepoint":"\\e145"},{"name":"todolist","svgCode":"","codepoint":"\\e146"},{"name":"file","svgCode":"","codepoint":"\\e136"},{"name":"script","svgCode":"","codepoint":"\\e137"},{"name":"fast-script","svgCode":"","codepoint":"\\e151"},{"name":"homepage","svgCode":"","codepoint":"\\e158"},{"name":"template","svgCode":"","codepoint":"\\e147"},{"name":"unlock-line","svgCode":"","codepoint":"\\e166"},{"name":"sync-failed","svgCode":"","codepoint":"\\e18c"},{"name":"sync-pending","svgCode":"","codepoint":"\\e18f"},{"name":"sync-success","svgCode":"","codepoint":"\\e18d"},{"name":"sync-default","svgCode":"","codepoint":"\\e18e"},{"name":"pulsar","svgCode":"","codepoint":"\\e1b8"},{"name":"abnormal","svgCode":"","codepoint":"\\e187"},{"name":"normal","svgCode":"","codepoint":"\\e188"},{"name":"unknown","svgCode":"","codepoint":"\\e189"},{"name":"code","svgCode":"","codepoint":"\\e139"},{"name":"download-line","svgCode":"","codepoint":"\\e1f2"},{"name":"invisible1","svgCode":"","codepoint":"\\e1ff"},{"name":"variable-manage","svgCode":"","codepoint":"\\e1f7"},{"name":"visible1","svgCode":"","codepoint":"\\e1c5"},{"name":"sync-waiting-01","svgCode":"","codepoint":"\\e18a"},{"name":"script-template","svgCode":"","codepoint":"\\e138"},{"name":"qiyeweixin","svgCode":"","codepoint":"\\e1d9"},{"name":"sql","svgCode":"","codepoint":"\\e1cb"},{"name":"daochu","svgCode":"","codepoint":"\\e1ed"},{"name":"version","svgCode":"","codepoint":"\\e156"},{"name":"copy","svgCode":"","codepoint":"\\e103"},{"name":"database","svgCode":"","codepoint":"\\e101"},{"name":"eyes","svgCode":"","codepoint":"\\e102"},{"name":"setting-fill","svgCode":"","codepoint":"\\e104"},{"name":"resource","svgCode":"","codepoint":"\\e105"},{"name":"ticket","svgCode":"","codepoint":"\\e106"},{"name":"pc","svgCode":"","codepoint":"\\e1e6"},{"name":"edit","svgCode":"","codepoint":"\\e108"},{"name":"loading","svgCode":"","codepoint":"\\e1a8"},{"name":"help-fill","svgCode":"","codepoint":"\\e109"},{"name":"unlock-line-2","svgCode":"","codepoint":"\\e10b"},{"name":"lock-fill","svgCode":"","codepoint":"\\e10c"},{"name":"un-full-screen","svgCode":"","codepoint":"\\e10f"},{"name":"full-screen","svgCode":"","codepoint":"\\e110"},{"name":"minus-fill","svgCode":"","codepoint":"\\e111"},{"name":"plus-fill","svgCode":"","codepoint":"\\e112"},{"name":"add","svgCode":"","codepoint":"\\e116"},{"name":"delete-fill","svgCode":"","codepoint":"\\e117"},{"name":"refresh","svgCode":"","codepoint":"\\e118"},{"name":"more","svgCode":"","codepoint":"\\e119"},{"name":"arrow-fill","svgCode":"","codepoint":"\\e11e"},{"name":"attention-fill","svgCode":"","codepoint":"\\e11f"},{"name":"attention","svgCode":"","codepoint":"\\e120"},{"name":"up-big","svgCode":"","codepoint":"\\e121"},{"name":"down-big","svgCode":"","codepoint":"\\e123"},{"name":"arrow-down","svgCode":"","codepoint":"\\e122"},{"name":"arrow-up","svgCode":"","codepoint":"\\e124"},{"name":"right-big","svgCode":"","codepoint":"\\e125"},{"name":"arrow-right","svgCode":"","codepoint":"\\e126"},{"name":"arrow-left","svgCode":"","codepoint":"\\e127"},{"name":"mysql","svgCode":"","codepoint":"\\e128"},{"name":"redis","svgCode":"","codepoint":"\\e129"},{"name":"mongo-db","svgCode":"","codepoint":"\\e12a"},{"name":"kafka","svgCode":"","codepoint":"\\e12b"},{"name":"approval-node","svgCode":"","codepoint":"\\e155"},{"name":"down-shape","svgCode":"","codepoint":"\\e12c"},{"name":"import","svgCode":"","codepoint":"\\e12d"},{"name":"master","svgCode":"","codepoint":"\\e13a"},{"name":"cluster","svgCode":"","codepoint":"\\e13b"},{"name":"host","svgCode":"","codepoint":"\\e13c"},{"name":"proxy","svgCode":"","codepoint":"\\e13e"},{"name":"node","svgCode":"","codepoint":"\\e13d"},{"name":"check","svgCode":"","codepoint":"\\e13f"},{"name":"deploy","svgCode":"","codepoint":"\\e140"},{"name":"switch","svgCode":"","codepoint":"\\e141"},{"name":"refresh-2","svgCode":"","codepoint":"\\e142"},{"name":"stop","svgCode":"","codepoint":"\\e143"},{"name":"dns","svgCode":"","codepoint":"\\e148"},{"name":"member","svgCode":"","codepoint":"\\e14c"},{"name":"spec","svgCode":"","codepoint":"\\e149"},{"name":"timed-task","svgCode":"","codepoint":"\\e14d"},{"name":"history","svgCode":"","codepoint":"\\e14a"},{"name":"backup","svgCode":"","codepoint":"\\e14f"},{"name":"account","svgCode":"","codepoint":"\\e14b"},{"name":"note","svgCode":"","codepoint":"\\e150"},{"name":"single-node","svgCode":"","codepoint":"\\e14e"},{"name":"dba-config","svgCode":"","codepoint":"\\e154"},{"name":"db-config","svgCode":"","codepoint":"\\e157"},{"name":"default-node","svgCode":"","codepoint":"\\e159"},{"name":"position","svgCode":"","codepoint":"\\e15c"},{"name":"plus-circle","svgCode":"","codepoint":"\\e15d"},{"name":"minus-circle","svgCode":"","codepoint":"\\e15e"},{"name":"rtx","svgCode":"","codepoint":"\\e160"},{"name":"expand-line","svgCode":"","codepoint":"\\e161"},{"name":"star","svgCode":"","codepoint":"\\e162"},{"name":"search","svgCode":"","codepoint":"\\e163"},{"name":"plus-8","svgCode":"","codepoint":"\\e164"},{"name":"star-fill","svgCode":"","codepoint":"\\e165"},{"name":"unlock","svgCode":"","codepoint":"\\e167"},{"name":"return","svgCode":"","codepoint":"\\e168"},{"name":"link","svgCode":"","codepoint":"\\e169"},{"name":"new","svgCode":"","codepoint":"\\e16b"},{"name":"drag","svgCode":"","codepoint":"\\e1a4"},{"name":"warning-2","svgCode":"","codepoint":"\\e18b"},{"name":"exclamation","svgCode":"","codepoint":"\\e16c"},{"name":"close","svgCode":"","codepoint":"\\e16d"},{"name":"check-line","svgCode":"","codepoint":"\\e16e"},{"name":"early-warning","svgCode":"","codepoint":"\\e16f"},{"name":"warning","svgCode":"","codepoint":"\\e170"},{"name":"spce","svgCode":"","codepoint":"\\e171"},{"name":"password","svgCode":"","codepoint":"\\e172"},{"name":"redis-2","svgCode":"","codepoint":"\\e176"},{"name":"mysql-2","svgCode":"","codepoint":"\\e174"},{"name":"es","svgCode":"","codepoint":"\\e177"},{"name":"hdfs","svgCode":"","codepoint":"\\e175"},{"name":"delete","svgCode":"","codepoint":"\\e178"},{"name":"excel","svgCode":"","codepoint":"\\e179"},{"name":"history-2","svgCode":"","codepoint":"\\e17a"},{"name":"migration","svgCode":"","codepoint":"\\e17d"},{"name":"switch-2","svgCode":"","codepoint":"\\e17e"},{"name":"remote","svgCode":"","codepoint":"\\e17f"},{"name":"clearing","svgCode":"","codepoint":"\\e180"},{"name":"alert","svgCode":"","codepoint":"\\e181"},{"name":"rebuild","svgCode":"","codepoint":"\\e182"},{"name":"clone","svgCode":"","codepoint":"\\e183"},{"name":"associated","svgCode":"","codepoint":"\\e184"},{"name":"rollback","svgCode":"","codepoint":"\\e185"},{"name":"aa","svgCode":"","codepoint":"\\e1f6"},{"name":"data","svgCode":"","codepoint":"\\e186"},{"name":"audit","svgCode":"","codepoint":"\\e190"},{"name":"yijinyong","svgCode":"","codepoint":"\\e19a"},{"name":"kuorongzhong","svgCode":"","codepoint":"\\e19d"},{"name":"zhongqizhong","svgCode":"","codepoint":"\\e19b"},{"name":"suorongzhong","svgCode":"","codepoint":"\\e19e"},{"name":"tihuanzong","svgCode":"","codepoint":"\\e19c"},{"name":"shanchuzhong","svgCode":"","codepoint":"\\e19f"},{"name":"jinyongzhong","svgCode":"","codepoint":"\\e1a0"},{"name":"qiyongzhong","svgCode":"","codepoint":"\\e1a1"},{"name":"help-fill-2","svgCode":"","codepoint":"\\e1a2"},{"name":"2-jiantou-you","svgCode":"","codepoint":"\\e1a5"},{"name":"2-jiantou-zuo","svgCode":"","codepoint":"\\e1a6"},{"name":"tools","svgCode":"","codepoint":"\\e1a9"},{"name":"todos","svgCode":"","codepoint":"\\e1aa"},{"name":"manual","svgCode":"","codepoint":"\\e1ac"},{"name":"minimap","svgCode":"","codepoint":"\\e1ad"},{"name":"backup-2","svgCode":"","codepoint":"\\e1af"},{"name":"host-select","svgCode":"","codepoint":"\\e1b0"},{"name":"batch-host-select","svgCode":"","codepoint":"\\e1b1"},{"name":"revoke","svgCode":"","codepoint":"\\e1b3"},{"name":"en","svgCode":"","codepoint":"\\e1b4"},{"name":"cn","svgCode":"","codepoint":"\\e1b5"},{"name":"list","svgCode":"","codepoint":"\\e1b7"},{"name":"influxdb","svgCode":"","codepoint":"\\e1ba"},{"name":"summation","svgCode":"","codepoint":"\\e1bb"},{"name":"folder-open","svgCode":"","codepoint":"\\e1bc"},{"name":"wenjian","svgCode":"","codepoint":"\\e1bf"},{"name":"drag","svgCode":"","codepoint":"\\e1c0"},{"name":"gaokeyong","svgCode":"","codepoint":"\\e1c2"},{"name":"fenbushijiqun","svgCode":"","codepoint":"\\e1c3"},{"name":"danjiedian","svgCode":"","codepoint":"\\e1c1"},{"name":"zhongkongji","svgCode":"","codepoint":"\\e1c4"},{"name":"wenjian","svgCode":"","codepoint":"\\e1c6"},{"name":"manual-2","svgCode":"","codepoint":"\\e1c7"},{"name":"clock","svgCode":"","codepoint":"\\e1c8"},{"name":"auto","svgCode":"","codepoint":"\\e1c9"},{"name":"dirty-host","svgCode":"","codepoint":"\\e1ca"},{"name":"saoba","svgCode":"","codepoint":"\\e1f4"},{"name":"dongzuo-xiazai","svgCode":"","codepoint":"\\e1f3"},{"name":"entry","svgCode":"","codepoint":"\\e1d0"},{"name":"gaojingcelve","svgCode":"","codepoint":"\\e1d1"},{"name":"lunzhi","svgCode":"","codepoint":"\\e1d5"},{"name":"gaojing","svgCode":"","codepoint":"\\e1d2"},{"name":"yonghuzu","svgCode":"","codepoint":"\\e1d3"},{"name":"pingbi","svgCode":"","codepoint":"\\e1d4"},{"name":"hongqi","svgCode":"","codepoint":"\\e1d6"},{"name":"jiankong","svgCode":"","codepoint":"\\e1d7"},{"name":"mimasuijihua","svgCode":"","codepoint":"\\e1d8"},{"name":"jiqiren","svgCode":"","codepoint":"\\e1da"},{"name":"qiyeweixin-2","svgCode":"","codepoint":"\\e1db"},{"name":"weixin-2","svgCode":"","codepoint":"\\e1dc"},{"name":"youjian","svgCode":"","codepoint":"\\e1dd"},{"name":"duanxin","svgCode":"","codepoint":"\\e1de"},{"name":"yuyin","svgCode":"","codepoint":"\\e1df"},{"name":"warn-lightning","svgCode":"","codepoint":"\\e1e1"},{"name":"unlink","svgCode":"","codepoint":"\\e1e2"},{"name":"mobanshili","svgCode":"","codepoint":"\\e1e3"},{"name":"qiangzhizhongzhi","svgCode":"","codepoint":"\\e1e7"},{"name":"sqlserver","svgCode":"","codepoint":"\\e1e8"},{"name":"qianyizhong","svgCode":"","codepoint":"\\e1ea"},{"name":"liucheng","svgCode":"","codepoint":"\\e1eb"},{"name":"kejian","svgCode":"","codepoint":"\\e1ec"},{"name":"doris","svgCode":"","codepoint":"\\e1ee"},{"name":"daochu-2","svgCode":"","codepoint":"\\e1f0"},{"name":"daoru","svgCode":"","codepoint":"\\e1ef"},{"name":"piliangluru","svgCode":"","codepoint":"\\e1f1"},{"name":"cluster-standardize","svgCode":"","codepoint":"\\e1f9"},{"name":"fill-1","svgCode":"","codepoint":"\\e1fc"},{"name":"kelong","svgCode":"","codepoint":"\\e1fe"},{"name":"yuandezhongjian","svgCode":"","codepoint":"\\e1fd"}]} +{"iconName":"bk-dbm","icons":[{"name":"tags","svgCode":"\n\n\n\n\n\n\n\t\n\t\n\n\n","codepoint":"\\e206"},{"name":"check-circle-fill","svgCode":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n","codepoint":"\\e1a7"},{"name":"exclamation-fill","svgCode":"\n\n\n\n\n\n","codepoint":"\\e173"},{"name":"help","svgCode":"\n\n\n\n\n\t\n\t\n\t\n\n\n","codepoint":"\\e1f5"},{"name":"help-document","svgCode":"\n\n\n\n\n\t\n\t\n\t\n\n\n","codepoint":"\\e1fa"},{"name":"check","svgCode":"\n\n\n\n\n\t\n\t\n\n\n","codepoint":"\\e205"},{"name":"auth","svgCode":"","codepoint":"\\e152"},{"name":"apply","svgCode":"","codepoint":"\\e144"},{"name":"increase","svgCode":"","codepoint":"\\e1fb"},{"name":"close-circle-shape","svgCode":"","codepoint":"\\e1be"},{"name":"right-shape","svgCode":"","codepoint":"\\e1a3"},{"name":"bulk-edit","svgCode":"","codepoint":"\\e15f"},{"name":"funnel","svgCode":"","codepoint":"\\e1bd"},{"name":"copy-2","svgCode":"","codepoint":"\\e1e4"},{"name":"paste","svgCode":"","codepoint":"\\e1e5"},{"name":"keyboard","svgCode":"","codepoint":"\\e1ae"},{"name":"draft","svgCode":"","codepoint":"\\e145"},{"name":"todolist","svgCode":"","codepoint":"\\e146"},{"name":"file","svgCode":"","codepoint":"\\e136"},{"name":"script","svgCode":"","codepoint":"\\e137"},{"name":"fast-script","svgCode":"","codepoint":"\\e151"},{"name":"homepage","svgCode":"","codepoint":"\\e158"},{"name":"template","svgCode":"","codepoint":"\\e147"},{"name":"unlock-line","svgCode":"","codepoint":"\\e166"},{"name":"sync-failed","svgCode":"","codepoint":"\\e18c"},{"name":"sync-pending","svgCode":"","codepoint":"\\e18f"},{"name":"sync-success","svgCode":"","codepoint":"\\e18d"},{"name":"sync-default","svgCode":"","codepoint":"\\e18e"},{"name":"pulsar","svgCode":"","codepoint":"\\e1b8"},{"name":"abnormal","svgCode":"","codepoint":"\\e187"},{"name":"normal","svgCode":"","codepoint":"\\e188"},{"name":"unknown","svgCode":"","codepoint":"\\e189"},{"name":"code","svgCode":"","codepoint":"\\e139"},{"name":"download-line","svgCode":"","codepoint":"\\e1f2"},{"name":"invisible1","svgCode":"","codepoint":"\\e1ff"},{"name":"variable-manage","svgCode":"","codepoint":"\\e1f7"},{"name":"visible1","svgCode":"","codepoint":"\\e1c5"},{"name":"sync-waiting-01","svgCode":"","codepoint":"\\e18a"},{"name":"script-template","svgCode":"","codepoint":"\\e138"},{"name":"qiyeweixin","svgCode":"","codepoint":"\\e1d9"},{"name":"sql","svgCode":"","codepoint":"\\e1cb"},{"name":"daochu","svgCode":"","codepoint":"\\e1ed"},{"name":"version","svgCode":"","codepoint":"\\e156"},{"name":"copy","svgCode":"","codepoint":"\\e103"},{"name":"database","svgCode":"","codepoint":"\\e101"},{"name":"eyes","svgCode":"","codepoint":"\\e102"},{"name":"setting-fill","svgCode":"","codepoint":"\\e104"},{"name":"resource","svgCode":"","codepoint":"\\e105"},{"name":"ticket","svgCode":"","codepoint":"\\e106"},{"name":"pc","svgCode":"","codepoint":"\\e1e6"},{"name":"edit","svgCode":"","codepoint":"\\e108"},{"name":"loading","svgCode":"","codepoint":"\\e1a8"},{"name":"help-fill","svgCode":"","codepoint":"\\e109"},{"name":"unlock-line-2","svgCode":"","codepoint":"\\e10b"},{"name":"lock-fill","svgCode":"","codepoint":"\\e10c"},{"name":"un-full-screen","svgCode":"","codepoint":"\\e10f"},{"name":"full-screen","svgCode":"","codepoint":"\\e110"},{"name":"minus-fill","svgCode":"","codepoint":"\\e111"},{"name":"plus-fill","svgCode":"","codepoint":"\\e112"},{"name":"add","svgCode":"","codepoint":"\\e116"},{"name":"delete-fill","svgCode":"","codepoint":"\\e117"},{"name":"refresh","svgCode":"","codepoint":"\\e118"},{"name":"more","svgCode":"","codepoint":"\\e119"},{"name":"arrow-fill","svgCode":"","codepoint":"\\e11e"},{"name":"attention-fill","svgCode":"","codepoint":"\\e11f"},{"name":"attention","svgCode":"","codepoint":"\\e120"},{"name":"up-big","svgCode":"","codepoint":"\\e121"},{"name":"down-big","svgCode":"","codepoint":"\\e123"},{"name":"arrow-down","svgCode":"","codepoint":"\\e122"},{"name":"arrow-up","svgCode":"","codepoint":"\\e124"},{"name":"right-big","svgCode":"","codepoint":"\\e125"},{"name":"arrow-right","svgCode":"","codepoint":"\\e126"},{"name":"arrow-left","svgCode":"","codepoint":"\\e127"},{"name":"mysql","svgCode":"","codepoint":"\\e128"},{"name":"redis","svgCode":"","codepoint":"\\e129"},{"name":"mongo-db","svgCode":"","codepoint":"\\e12a"},{"name":"kafka","svgCode":"","codepoint":"\\e12b"},{"name":"approval-node","svgCode":"","codepoint":"\\e155"},{"name":"down-shape","svgCode":"","codepoint":"\\e12c"},{"name":"import","svgCode":"","codepoint":"\\e12d"},{"name":"master","svgCode":"","codepoint":"\\e13a"},{"name":"cluster","svgCode":"","codepoint":"\\e13b"},{"name":"host","svgCode":"","codepoint":"\\e13c"},{"name":"proxy","svgCode":"","codepoint":"\\e13e"},{"name":"node","svgCode":"","codepoint":"\\e13d"},{"name":"check-search","svgCode":"","codepoint":"\\e13f"},{"name":"deploy","svgCode":"","codepoint":"\\e140"},{"name":"switch","svgCode":"","codepoint":"\\e141"},{"name":"refresh-2","svgCode":"","codepoint":"\\e142"},{"name":"stop","svgCode":"","codepoint":"\\e143"},{"name":"dns","svgCode":"","codepoint":"\\e148"},{"name":"member","svgCode":"","codepoint":"\\e14c"},{"name":"spec","svgCode":"","codepoint":"\\e149"},{"name":"timed-task","svgCode":"","codepoint":"\\e14d"},{"name":"history","svgCode":"","codepoint":"\\e14a"},{"name":"backup","svgCode":"","codepoint":"\\e14f"},{"name":"account","svgCode":"","codepoint":"\\e14b"},{"name":"note","svgCode":"","codepoint":"\\e150"},{"name":"single-node","svgCode":"","codepoint":"\\e14e"},{"name":"dba-config","svgCode":"","codepoint":"\\e154"},{"name":"db-config","svgCode":"","codepoint":"\\e157"},{"name":"default-node","svgCode":"","codepoint":"\\e159"},{"name":"position","svgCode":"","codepoint":"\\e15c"},{"name":"plus-circle","svgCode":"","codepoint":"\\e15d"},{"name":"minus-circle","svgCode":"","codepoint":"\\e15e"},{"name":"rtx","svgCode":"","codepoint":"\\e160"},{"name":"expand-line","svgCode":"","codepoint":"\\e161"},{"name":"star","svgCode":"","codepoint":"\\e162"},{"name":"search","svgCode":"","codepoint":"\\e163"},{"name":"plus-8","svgCode":"","codepoint":"\\e164"},{"name":"star-fill","svgCode":"","codepoint":"\\e165"},{"name":"unlock","svgCode":"","codepoint":"\\e167"},{"name":"return","svgCode":"","codepoint":"\\e168"},{"name":"link","svgCode":"","codepoint":"\\e169"},{"name":"new","svgCode":"","codepoint":"\\e16b"},{"name":"drag","svgCode":"","codepoint":"\\e1a4"},{"name":"warning-2","svgCode":"","codepoint":"\\e18b"},{"name":"exclamation","svgCode":"","codepoint":"\\e16c"},{"name":"close","svgCode":"","codepoint":"\\e16d"},{"name":"check-line","svgCode":"","codepoint":"\\e16e"},{"name":"early-warning","svgCode":"","codepoint":"\\e16f"},{"name":"warning","svgCode":"","codepoint":"\\e170"},{"name":"spce","svgCode":"","codepoint":"\\e171"},{"name":"password","svgCode":"","codepoint":"\\e172"},{"name":"redis-2","svgCode":"","codepoint":"\\e176"},{"name":"mysql-2","svgCode":"","codepoint":"\\e174"},{"name":"es","svgCode":"","codepoint":"\\e177"},{"name":"hdfs","svgCode":"","codepoint":"\\e175"},{"name":"delete","svgCode":"","codepoint":"\\e178"},{"name":"excel","svgCode":"","codepoint":"\\e179"},{"name":"history-2","svgCode":"","codepoint":"\\e17a"},{"name":"migration","svgCode":"","codepoint":"\\e17d"},{"name":"switch-2","svgCode":"","codepoint":"\\e17e"},{"name":"remote","svgCode":"","codepoint":"\\e17f"},{"name":"clearing","svgCode":"","codepoint":"\\e180"},{"name":"alert","svgCode":"","codepoint":"\\e181"},{"name":"rebuild","svgCode":"","codepoint":"\\e182"},{"name":"clone","svgCode":"","codepoint":"\\e183"},{"name":"associated","svgCode":"","codepoint":"\\e184"},{"name":"rollback","svgCode":"","codepoint":"\\e185"},{"name":"aa","svgCode":"","codepoint":"\\e1f6"},{"name":"data","svgCode":"","codepoint":"\\e186"},{"name":"audit","svgCode":"","codepoint":"\\e190"},{"name":"yijinyong","svgCode":"","codepoint":"\\e19a"},{"name":"kuorongzhong","svgCode":"","codepoint":"\\e19d"},{"name":"zhongqizhong","svgCode":"","codepoint":"\\e19b"},{"name":"suorongzhong","svgCode":"","codepoint":"\\e19e"},{"name":"tihuanzong","svgCode":"","codepoint":"\\e19c"},{"name":"shanchuzhong","svgCode":"","codepoint":"\\e19f"},{"name":"jinyongzhong","svgCode":"","codepoint":"\\e1a0"},{"name":"qiyongzhong","svgCode":"","codepoint":"\\e1a1"},{"name":"help-fill-2","svgCode":"","codepoint":"\\e1a2"},{"name":"2-jiantou-you","svgCode":"","codepoint":"\\e1a5"},{"name":"2-jiantou-zuo","svgCode":"","codepoint":"\\e1a6"},{"name":"tools","svgCode":"","codepoint":"\\e1a9"},{"name":"todos","svgCode":"","codepoint":"\\e1aa"},{"name":"manual","svgCode":"","codepoint":"\\e1ac"},{"name":"minimap","svgCode":"","codepoint":"\\e1ad"},{"name":"backup-2","svgCode":"","codepoint":"\\e1af"},{"name":"loading-tubiao","svgCode":"","codepoint":"\\e208"},{"name":"host-select","svgCode":"","codepoint":"\\e1b0"},{"name":"batch-host-select","svgCode":"","codepoint":"\\e1b1"},{"name":"revoke","svgCode":"","codepoint":"\\e1b3"},{"name":"en","svgCode":"","codepoint":"\\e1b4"},{"name":"cn","svgCode":"","codepoint":"\\e1b5"},{"name":"list","svgCode":"","codepoint":"\\e1b7"},{"name":"influxdb","svgCode":"","codepoint":"\\e1ba"},{"name":"summation","svgCode":"","codepoint":"\\e1bb"},{"name":"folder-open","svgCode":"","codepoint":"\\e1bc"},{"name":"wenjian","svgCode":"","codepoint":"\\e1bf"},{"name":"drag","svgCode":"","codepoint":"\\e1c0"},{"name":"gaokeyong","svgCode":"","codepoint":"\\e1c2"},{"name":"fenbushijiqun","svgCode":"","codepoint":"\\e1c3"},{"name":"danjiedian","svgCode":"","codepoint":"\\e1c1"},{"name":"zhongkongji","svgCode":"","codepoint":"\\e1c4"},{"name":"wenjian","svgCode":"","codepoint":"\\e1c6"},{"name":"manual-2","svgCode":"","codepoint":"\\e1c7"},{"name":"clock","svgCode":"","codepoint":"\\e1c8"},{"name":"auto","svgCode":"","codepoint":"\\e1c9"},{"name":"dirty-host","svgCode":"","codepoint":"\\e1ca"},{"name":"tag-3","svgCode":"","codepoint":"\\e207"},{"name":"saoba","svgCode":"","codepoint":"\\e1f4"},{"name":"dongzuo-xiazai","svgCode":"","codepoint":"\\e1f3"},{"name":"entry","svgCode":"","codepoint":"\\e1d0"},{"name":"gaojingcelve","svgCode":"","codepoint":"\\e1d1"},{"name":"lunzhi","svgCode":"","codepoint":"\\e1d5"},{"name":"gaojing","svgCode":"","codepoint":"\\e1d2"},{"name":"yonghuzu","svgCode":"","codepoint":"\\e1d3"},{"name":"pingbi","svgCode":"","codepoint":"\\e1d4"},{"name":"hongqi","svgCode":"","codepoint":"\\e1d6"},{"name":"jiankong","svgCode":"","codepoint":"\\e1d7"},{"name":"mimasuijihua","svgCode":"","codepoint":"\\e1d8"},{"name":"jiqiren","svgCode":"","codepoint":"\\e1da"},{"name":"qiyeweixin-2","svgCode":"","codepoint":"\\e1db"},{"name":"weixin-2","svgCode":"","codepoint":"\\e1dc"},{"name":"youjian","svgCode":"","codepoint":"\\e1dd"},{"name":"duanxin","svgCode":"","codepoint":"\\e1de"},{"name":"yuyin","svgCode":"","codepoint":"\\e1df"},{"name":"warn-lightning","svgCode":"","codepoint":"\\e1e1"},{"name":"unlink","svgCode":"","codepoint":"\\e1e2"},{"name":"mobanshili","svgCode":"","codepoint":"\\e1e3"},{"name":"qiangzhizhongzhi","svgCode":"","codepoint":"\\e1e7"},{"name":"sqlserver","svgCode":"","codepoint":"\\e1e8"},{"name":"qianyizhong","svgCode":"","codepoint":"\\e1ea"},{"name":"liucheng","svgCode":"","codepoint":"\\e1eb"},{"name":"kejian","svgCode":"","codepoint":"\\e1ec"},{"name":"doris","svgCode":"","codepoint":"\\e1ee"},{"name":"daochu-2","svgCode":"","codepoint":"\\e1f0"},{"name":"daoru","svgCode":"","codepoint":"\\e1ef"},{"name":"piliangluru","svgCode":"","codepoint":"\\e1f1"},{"name":"cluster-standardize","svgCode":"","codepoint":"\\e1f9"},{"name":"fill-1","svgCode":"","codepoint":"\\e1fc"},{"name":"kelong","svgCode":"","codepoint":"\\e1fe"},{"name":"yuandezhongjian","svgCode":"","codepoint":"\\e1fd"},{"name":"daihuishou-2","svgCode":"","codepoint":"\\e202"},{"name":"daihuishou","svgCode":"","codepoint":"\\e203"},{"name":"guzhangji","svgCode":"","codepoint":"\\e204"}]} \ No newline at end of file diff --git a/dbm-ui/frontend/lib/bk-icon/style.css b/dbm-ui/frontend/lib/bk-icon/style.css index 6b7f07362a..70c39a0a2b 100644 --- a/dbm-ui/frontend/lib/bk-icon/style.css +++ b/dbm-ui/frontend/lib/bk-icon/style.css @@ -23,6 +23,9 @@ url("fonts/iconcool.eot?#iefix") format("embedded-opentype"); -moz-osx-font-smoothing: grayscale; } +.db-icon-tags:before { + content: "\e206"; +} .db-icon-check-circle-fill:before { content: "\e1a7"; } @@ -497,6 +500,9 @@ url("fonts/iconcool.eot?#iefix") format("embedded-opentype"); .db-icon-backup-2:before { content: "\e1af"; } +.db-icon-loading-tubiao:before { + content: "\e208"; +} .db-icon-host-select:before { content: "\e1b0"; } @@ -557,6 +563,9 @@ url("fonts/iconcool.eot?#iefix") format("embedded-opentype"); .db-icon-dirty-host:before { content: "\e1ca"; } +.db-icon-tag-3:before { + content: "\e207"; +} .db-icon-saoba:before { content: "\e1f4"; } diff --git a/dbm-ui/frontend/src/common/const/ticketTypes.ts b/dbm-ui/frontend/src/common/const/ticketTypes.ts index bb9c81c0e5..55772b291f 100644 --- a/dbm-ui/frontend/src/common/const/ticketTypes.ts +++ b/dbm-ui/frontend/src/common/const/ticketTypes.ts @@ -44,41 +44,43 @@ export enum TicketTypes { MYSQL_ACCOUNT_RULE_CHANGE = 'MYSQL_ACCOUNT_RULE_CHANGE', // MySQL 权限变更 } export enum TicketTypes { - REDIS_CLUSTER_APPLY = 'REDIS_CLUSTER_APPLY', - REDIS_KEYS_EXTRACT = 'REDIS_KEYS_EXTRACT', - REDIS_KEYS_DELETE = 'REDIS_KEYS_DELETE', REDIS_BACKUP = 'REDIS_BACKUP', - REDIS_PURGE = 'REDIS_PURGE', + REDIS_CLUSTER_ADD_SLAVE = 'REDIS_CLUSTER_ADD_SLAVE', + REDIS_CLUSTER_APPLY = 'REDIS_CLUSTER_APPLY', + REDIS_CLUSTER_CUTOFF = 'REDIS_CLUSTER_CUTOFF', + REDIS_CLUSTER_DATA_COPY = 'REDIS_CLUSTER_DATA_COPY', + REDIS_CLUSTER_ROLLBACK_DATA_COPY = 'REDIS_CLUSTER_ROLLBACK_DATA_COPY', + REDIS_CLUSTER_SHARD_NUM_UPDATE = 'REDIS_CLUSTER_SHARD_NUM_UPDATE', + REDIS_CLUSTER_TYPE_UPDATE = 'REDIS_CLUSTER_TYPE_UPDATE', + REDIS_DATACOPY_CHECK_REPAIR = 'REDIS_DATACOPY_CHECK_REPAIR', REDIS_DESTROY = 'REDIS_DESTROY', - REDIS_PROXY_OPEN = 'REDIS_PROXY_OPEN', - REDIS_PROXY_CLOSE = 'REDIS_PROXY_CLOSE', - REDIS_PLUGIN_DNS_BIND_CLB = 'REDIS_PLUGIN_DNS_BIND_CLB', - REDIS_PLUGIN_DNS_UNBIND_CLB = 'REDIS_PLUGIN_DNS_UNBIND_CLB', + REDIS_INS_APPLY = 'REDIS_INS_APPLY', + REDIS_INSTANCE_PROXY_CLOSE = 'REDIS_INSTANCE_PROXY_CLOSE', + REDIS_INSTANCE_PROXY_OPEN = 'REDIS_INSTANCE_PROXY_OPEN', + REDIS_INSTANCE_DESTROY = 'REDIS_INSTANCE_DESTROY', + REDIS_KEYS_DELETE = 'REDIS_KEYS_DELETE', + REDIS_KEYS_EXTRACT = 'REDIS_KEYS_EXTRACT', + REDIS_MASTER_SLAVE_SWITCH = 'REDIS_MASTER_SLAVE_SWITCH', REDIS_PLUGIN_CREATE_CLB = 'REDIS_PLUGIN_CREATE_CLB', - REDIS_PLUGIN_DELETE_CLB = 'REDIS_PLUGIN_DELETE_CLB', REDIS_PLUGIN_CREATE_POLARIS = 'REDIS_PLUGIN_CREATE_POLARIS', + REDIS_PLUGIN_DELETE_CLB = 'REDIS_PLUGIN_DELETE_CLB', REDIS_PLUGIN_DELETE_POLARIS = 'REDIS_PLUGIN_DELETE_POLARIS', - REDIS_CLUSTER_CUTOFF = 'REDIS_CLUSTER_CUTOFF', // redis 整机替换 - REDIS_PROXY_SCALE_UP = 'REDIS_PROXY_SCALE_UP', // redis 接入层扩容 - REDIS_PROXY_SCALE_DOWN = 'REDIS_PROXY_SCALE_DOWN', // redis 接入层缩容 - REDIS_SCALE_UPDOWN = 'REDIS_SCALE_UPDOWN', // redis 集群容量变更 - REDIS_SCALE_UP = 'REDIS_SCALE_UP', // redis 存储层扩容 - REDIS_SCALE_DOWN = 'REDIS_SCALE_DOWN', // redis 存储层缩容 - REDIS_MASTER_SLAVE_SWITCH = 'REDIS_MASTER_SLAVE_SWITCH', // redis 主故障切换 - REDIS_SLOTS_MIGRATE = 'REDIS_SLOTS_MIGRATE', // redis slots 迁移 + REDIS_PLUGIN_DNS_BIND_CLB = 'REDIS_PLUGIN_DNS_BIND_CLB', + REDIS_PLUGIN_DNS_UNBIND_CLB = 'REDIS_PLUGIN_DNS_UNBIND_CLB', REDIS_DATA_STRUCTURE = 'REDIS_DATA_STRUCTURE', // redis 定点构造 REDIS_DATA_STRUCTURE_TASK_DELETE = 'REDIS_DATA_STRUCTURE_TASK_DELETE', // redis 构造销毁 - REDIS_CLUSTER_ADD_SLAVE = 'REDIS_CLUSTER_ADD_SLAVE', // redis 新建从库 - REDIS_CLUSTER_DATA_COPY = 'REDIS_CLUSTER_DATA_COPY', // redis 数据复制 - REDIS_CLUSTER_SHARD_NUM_UPDATE = 'REDIS_CLUSTER_SHARD_NUM_UPDATE', // redis 集群分片变更 - REDIS_CLUSTER_TYPE_UPDATE = 'REDIS_CLUSTER_TYPE_UPDATE', // redis 集群类型变更 - REDIS_DATACOPY_CHECK_REPAIR = 'REDIS_DATACOPY_CHECK_REPAIR', // redis 数据校验与修复 - REDIS_CLUSTER_ROLLBACK_DATA_COPY = 'REDIS_CLUSTER_ROLLBACK_DATA_COPY', // redis 数据回写 - REDIS_VERSION_UPDATE_ONLINE = 'REDIS_VERSION_UPDATE_ONLINE', // redis 版本升级 - REDIS_INS_APPLY = 'REDIS_INS_APPLY', // redis 主从集群部署 REDIS_INSTANCE_OPEN = 'REDIS_INSTANCE_OPEN', // redis 主从集群启用 REDIS_INSTANCE_CLOSE = 'REDIS_INSTANCE_CLOSE', // redis 主从集群禁用 - REDIS_INSTANCE_DESTROY = 'REDIS_INSTANCE_DESTROY', // redis 主从集群删除 + REDIS_PURGE = 'REDIS_PURGE', + REDIS_PROXY_CLOSE = 'REDIS_PROXY_CLOSE', + REDIS_PROXY_OPEN = 'REDIS_PROXY_OPEN', + REDIS_PROXY_SCALE_DOWN = 'REDIS_PROXY_SCALE_DOWN', + REDIS_PROXY_SCALE_UP = 'REDIS_PROXY_SCALE_UP', + REDIS_SCALE_DOWN = 'REDIS_SCALE_DOWN', + REDIS_SCALE_UP = 'REDIS_SCALE_UP', + REDIS_SCALE_UPDOWN = 'REDIS_SCALE_UPDOWN', + REDIS_SLOTS_MIGRATE = 'REDIS_SLOTS_MIGRATE', + REDIS_VERSION_UPDATE_ONLINE = 'REDIS_VERSION_UPDATE_ONLINE', } export enum TicketTypes { TENDBCLUSTER_APPLY = 'TENDBCLUSTER_APPLY', @@ -118,27 +120,27 @@ export enum TicketTypes { TENDBCLUSTER_ACCOUNT_RULE_CHANGE = 'TENDBCLUSTER_ACCOUNT_RULE_CHANGE', // spider 权限变更 } export enum TicketTypes { + MONGODB_ADD_MONGOS = 'MONGODB_ADD_MONGOS', // mongo 扩容接入层 + MONGODB_ADD_SHARD_NODES = 'MONGODB_ADD_SHARD_NODES', // mongo 扩容 shard 节点数 + MONGODB_AUTHORIZE_RULES = 'MONGODB_AUTHORIZE_RULES', // MongoDB 集群授权 + MONGODB_BACKUP = 'MONGODB_BACKUP', // mongo 库表备份 + MONGODB_CUTOFF = 'MONGODB_CUTOFF', // mongo 整机替换 MONGODB_DISABLE = 'MONGODB_DISABLE', // mongodb禁用 - MONGODB_INSTANCE_RELOAD = 'MONGODB_INSTANCE_RELOAD', // mongodb重启 - MONGODB_SHARD_APPLY = 'MONGODB_SHARD_APPLY', // MongoDB 分片式集群部署申请 - MONGODB_REPLICASET_APPLY = 'MONGODB_REPLICASET_APPLY', // MongoDB 副本集部署申请 - MONGODB_ENABLE = 'MONGODB_ENABLE', // MongoDB 集群启用 MONGODB_DESTROY = 'MONGODB_DESTROY', // MongoDB 集群删除 - MONGODB_SCALE_UPDOWN = 'MONGODB_SCALE_UPDOWN', // MongoDB 分片式集群单个容量变更 + MONGODB_ENABLE = 'MONGODB_ENABLE', // MongoDB 集群启用 MONGODB_EXCEL_AUTHORIZE = 'MONGODB_EXCEL_AUTHORIZE', // MongoDB 导入授权 - MONGODB_AUTHORIZE_RULES = 'MONGODB_AUTHORIZE_RULES', // MongoDB 集群授权 MONGODB_EXCEL_AUTHORIZE_RULES = 'MONGODB_EXCEL_AUTHORIZE_RULES', // MongoDB 导入授权 MONGODB_EXEC_SCRIPT_APPLY = 'MONGODB_EXEC_SCRIPT_APPLY', // mongo 变更脚本执行 - MONGODB_ADD_SHARD_NODES = 'MONGODB_ADD_SHARD_NODES', // mongo 扩容 shard 节点数 - MONGODB_REDUCE_SHARD_NODES = 'MONGODB_REDUCE_SHARD_NODES', // mongo 缩容 shard 节点数 - MONGODB_ADD_MONGOS = 'MONGODB_ADD_MONGOS', // mongo 扩容接入层 - MONGODB_REDUCE_MONGOS = 'MONGODB_REDUCE_MONGOS', // mongo 缩容接入层 - MONGODB_CUTOFF = 'MONGODB_CUTOFF', // mongo 整机替换 - MONGODB_FULL_BACKUP = 'MONGODB_FULL_BACKUP', // mongo 全库备份 + MONGODB_INSTANCE_RELOAD = 'MONGODB_INSTANCE_RELOAD', // mongodb重启 MONGODB_REMOVE_NS = 'MONGODB_REMOVE_NS', // mongo 清档 - MONGODB_BACKUP = 'MONGODB_BACKUP', // mongo 库表备份 + MONGODB_REDUCE_MONGOS = 'MONGODB_REDUCE_MONGOS', // mongo 缩容接入层 + MONGODB_REDUCE_SHARD_NODES = 'MONGODB_REDUCE_SHARD_NODES', // mongo 缩容 shard 节点数 MONGODB_RESTORE = 'MONGODB_RESTORE', // mongo 定点构造 + MONGODB_SCALE_UPDOWN = 'MONGODB_SCALE_UPDOWN', // MongoDB 分片式集群单个容量变更 + MONGODB_SHARD_APPLY = 'MONGODB_SHARD_APPLY', // MongoDB 分片式集群部署申请 + MONGODB_REPLICASET_APPLY = 'MONGODB_REPLICASET_APPLY', // MongoDB 副本集部署申请 MONGODB_TEMPORARY_DESTROY = 'MONGODB_TEMPORARY_DESTROY', // mongo 临时集群销毁 + MONGODB_FULL_BACKUP = 'MONGODB_FULL_BACKUP', // mongo 全库备份 } export enum TicketTypes { SQLSERVER_SINGLE_APPLY = 'SQLSERVER_SINGLE_APPLY', // sqlserver单节点部署 diff --git a/dbm-ui/frontend/src/common/importComps.ts b/dbm-ui/frontend/src/common/importComps.ts index 9f4a9be534..9595e8dc09 100644 --- a/dbm-ui/frontend/src/common/importComps.ts +++ b/dbm-ui/frontend/src/common/importComps.ts @@ -64,4 +64,6 @@ export const setGlobalComps = (app: App) => { app.component('AuthSwitcher', AuthSwitch); app.component('AuthRouterLink', AuthRouterLink); app.component('BKTableColumn', Table.Column); + + console.log('aapp = ', app); }; diff --git a/dbm-ui/frontend/src/components/cluster-selector/components/common/task-panel/Item.vue b/dbm-ui/frontend/src/components/cluster-selector/components/common/task-panel/Item.vue index c913610b21..a2ddd2e50b 100644 --- a/dbm-ui/frontend/src/components/cluster-selector/components/common/task-panel/Item.vue +++ b/dbm-ui/frontend/src/components/cluster-selector/components/common/task-panel/Item.vue @@ -30,7 +30,7 @@ class="fail-tip">  ,  {{ $t('执行失败') }} -  , {{ $t('待确认') }} +  , {{ $t('待继续') }} diff --git a/dbm-ui/frontend/src/components/db-popconfirm/index.vue b/dbm-ui/frontend/src/components/db-popconfirm/index.vue index 2b645a42aa..5dd0cc3e34 100644 --- a/dbm-ui/frontend/src/components/db-popconfirm/index.vue +++ b/dbm-ui/frontend/src/components/db-popconfirm/index.vue @@ -21,12 +21,14 @@

+ :style="contentStyle">
{{ title }}
- {{ content }} + + {{ content }} +
Promise | void; cancelHandler?: () => Promise | void; } const props = withDefaults(defineProps(), { placement: 'top', + content: '', + width: 280, cancelHandler: () => Promise.resolve(), }); @@ -72,6 +77,11 @@ const popRef = ref(); const isConfirmLoading = ref(false); + const contentStyle = computed(() => ({ + width: `${props.width}px`, + padding: '15px 10px', + })); + const handleConfirm = () => { isConfirmLoading.value = true; Promise.resolve() @@ -114,7 +124,7 @@ { name: 'flip', options: { - fallbackPlacements: ['top-start', 'top-end'], + fallbackPlacements: ['top', 'bottom'], allowedAutoPlacements: ['top-start', 'top-end'], }, }, @@ -147,25 +157,25 @@ background-color: #fff; } - .tippy-arrow { - position: absolute; - bottom: -6px !important; - left: 50% !important; - background: #fff; - border: 1px solid #dcdee5 !important; - transform: translateX(-50%) rotateZ(45deg) !important; - box-shadow: 0 0 6px 0 #dcdee5 !important; - - &::before { - content: none; - } - } - - &[data-placement^='top-end'] { - & > .tippy-arrow { - right: -6px; - left: unset !important; - } - } + // .tippy-arrow { + // position: absolute; + // bottom: -6px !important; + // left: 50% !important; + // background: #fff; + // border: 1px solid #dcdee5 !important; + // transform: translateX(-50%) rotateZ(45deg) !important; + // box-shadow: 0 0 6px 0 #dcdee5 !important; + + // &::before { + // content: none; + // } + // } + + // &[data-placement^='top-end'] { + // & > .tippy-arrow { + // right: -6px; + // left: unset !important; + // } + // } } diff --git a/dbm-ui/frontend/src/components/db-search-select/index.vue b/dbm-ui/frontend/src/components/db-search-select/index.vue index 6e847af905..1a545bd1cd 100644 --- a/dbm-ui/frontend/src/components/db-search-select/index.vue +++ b/dbm-ui/frontend/src/components/db-search-select/index.vue @@ -108,6 +108,11 @@ .search-container-selected { height: 22px; max-width: 250px !important; + + .selected-name { + height: 22px; + overflow: hidden; + } } } diff --git a/dbm-ui/frontend/src/components/mult-line-text/Index.vue b/dbm-ui/frontend/src/components/multline-text/Index.vue similarity index 85% rename from dbm-ui/frontend/src/components/mult-line-text/Index.vue rename to dbm-ui/frontend/src/components/multline-text/Index.vue index 9b9b5fc2d0..6974a7bf11 100644 --- a/dbm-ui/frontend/src/components/mult-line-text/Index.vue +++ b/dbm-ui/frontend/src/components/multline-text/Index.vue @@ -18,16 +18,18 @@ text theme="primary" @click="handleToggleMore"> - {{ t('更多') }} - + + {{ t('更多') }} + +
- + @@ -177,9 +176,9 @@ } & > .scroll-faker-content { - height: inherit; - max-width: inherit; - max-height: inherit; + height: 100%; + max-width: 100%; + max-height: 100%; overflow: scroll; &::-webkit-scrollbar { diff --git a/dbm-ui/frontend/src/components/stretch-layout/StretchLayout.vue b/dbm-ui/frontend/src/components/stretch-layout/StretchLayout.vue index ebd646daad..2a9dde2a17 100644 --- a/dbm-ui/frontend/src/components/stretch-layout/StretchLayout.vue +++ b/dbm-ui/frontend/src/components/stretch-layout/StretchLayout.vue @@ -42,6 +42,22 @@ + diff --git a/dbm-ui/frontend/src/hooks/index.ts b/dbm-ui/frontend/src/hooks/index.ts index d8cfd8c6c8..2b3d724061 100644 --- a/dbm-ui/frontend/src/hooks/index.ts +++ b/dbm-ui/frontend/src/hooks/index.ts @@ -36,6 +36,7 @@ export * from './useTableSettings'; export * from './useTagsOverflow'; export * from './useTaskCount'; export * from './useTicketCloneInfo'; +export * from './useTicketCount'; export * from './useTicketMessage'; export * from './useTimeZoneFormat'; export * from './useUrlSearach'; diff --git a/dbm-ui/frontend/src/hooks/useSQLTaskNotify.tsx b/dbm-ui/frontend/src/hooks/useSQLTaskNotify.tsx index b4e246e4c6..a8721d356c 100644 --- a/dbm-ui/frontend/src/hooks/useSQLTaskNotify.tsx +++ b/dbm-ui/frontend/src/hooks/useSQLTaskNotify.tsx @@ -40,8 +40,8 @@ export const useSQLTaskNotify = () => { }; const { cancel: cancelRequest } = useRequest(getUserSemanticTasks, { - pollingInterval: 10000, - debounceInterval: 10000, + pollingInterval: 10000000, + debounceInterval: 10000000, onSuccess(data) { const isAlterItem = _.find(data, (item) => item.is_alter); diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/authorizeRule.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/authorizeRule.ts index 388930ded0..a7dceedeb3 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/authorizeRule.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/authorizeRule.ts @@ -10,8 +10,7 @@ * 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 type { MysqlAuthorizationDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { checkHost } from '@services/source/ipchooser'; import { getTendbhaList } from '@services/source/tendbha'; import { getTendbsingleList } from '@services/source/tendbsingle'; @@ -19,7 +18,7 @@ import { getTendbsingleList } from '@services/source/tendbsingle'; import { ClusterTypes } from '@common/const'; // Mysql 集群授权 -export async function generateMysqlAuthorizeRuleCloneData(ticketData: TicketModel) { +export async function generateMysqlAuthorizeRuleCloneData(ticketData: TicketModel) { const { authorize_data: authorizeData } = ticketData.details; const sourceIpList: ServiceReturnType = []; if (authorizeData.source_ips && Array.isArray(authorizeData.source_ips)) { diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/checksum.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/checksum.ts index ce31db2819..ac0da80761 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/checksum.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/checksum.ts @@ -11,14 +11,13 @@ * the specific language governing permissions and limitations under the License. */ import TendbhaModel from '@services/model/mysql/tendbha'; -import type { MySQLChecksumDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { getTendbhaList } from '@services/source/tendbha'; import { random } from '@utils'; // Mysql SQL变更执行 -export async function generateMysqlChecksumCloneData(ticketData: TicketModel) { +export async function generateMysqlChecksumCloneData(ticketData: TicketModel) { const { details, remark } = ticketData; const clustersResult = await getTendbhaList({ cluster_ids: details.infos.map((item) => item.cluster_id), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/clientClone.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/clientClone.ts index 7cb26710e7..d08c30eff6 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/clientClone.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/clientClone.ts @@ -10,13 +10,12 @@ * 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 type { MySQLCloneDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Mysql 客户端权限克隆 -export function generateMysqlClientCloneData(ticketData: TicketModel) { +export function generateMysqlClientCloneData(ticketData: TicketModel) { return Promise.resolve({ tableDataList: ticketData.details.clone_data.map((item) => ({ ...item, diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/dataMigrate.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/dataMigrate.ts index ab5aa08720..255ac4fbc3 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/dataMigrate.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/dataMigrate.ts @@ -10,13 +10,12 @@ * 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 type { MysqlDataMigrateDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // MySQL DB克隆 -export function generateMysqlDataMigrateCloneData(ticketData: TicketModel) { +export function generateMysqlDataMigrateCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const tableDataList = infos.map((item) => { const sourceClusterInfo = clusters[item.source_cluster]; diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/dbRename.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/dbRename.ts index 92ee67924e..ce36cc58d3 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/dbRename.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/dbRename.ts @@ -10,13 +10,12 @@ * 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 type { MySQLRenameDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // MySQL 高可用DB重命名 -export function generateMysqlDbRenameCloneData(ticketData: TicketModel) { +export function generateMysqlDbRenameCloneData(ticketData: TicketModel) { const { clusters, force, infos } = ticketData.details; const tableDataList = infos.map((item) => ({ rowKey: random(), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/flashback.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/flashback.ts index f2dd11db49..29d08a2992 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/flashback.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/flashback.ts @@ -10,13 +10,12 @@ * 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 type { MySQLFlashback } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // MySQL 闪回 -export function generateMysqlFlashbackCloneData(ticketData: TicketModel) { +export function generateMysqlFlashbackCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const tableDataList = infos.map((item) => ({ rowKey: random(), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haApply.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haApply.ts index ea8e332edb..29abf73ed1 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haApply.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haApply.ts @@ -10,11 +10,10 @@ * 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 type { MySQLDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; // Mysql 高可用部署 -export function generateMysqlHaApplyCloneData(ticketData: TicketModel) { +export function generateMysqlHaApplyCloneData(ticketData: TicketModel) { const { details } = ticketData; return Promise.resolve({ affinity: details.disaster_tolerance_level, diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haDbBackup.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haDbBackup.ts index 7b8f0bc728..e1c7ff5f7d 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haDbBackup.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haDbBackup.ts @@ -10,13 +10,12 @@ * 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 type { MySQLFullBackupDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Mysql 全库备份 -export function generateMysqlDbBackupCloneData(ticketData: TicketModel) { +export function generateMysqlDbBackupCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const tableDataList = infos.clusters.map((item) => ({ rowKey: random(), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haDbClear.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haDbClear.ts index 7045929318..3b65e2ccf8 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haDbClear.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haDbClear.ts @@ -10,13 +10,12 @@ * 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 type { MySQLHATruncateDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // MySQL 高可用清档 -export function generateMysqlDbClearCloneData(ticketData: TicketModel) { +export function generateMysqlDbClearCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const tableDataList = infos.map((item) => ({ rowKey: random(), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haDbTableBackup.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haDbTableBackup.ts index 1605c6a88a..ec4645b04c 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haDbTableBackup.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/haDbTableBackup.ts @@ -10,13 +10,12 @@ * 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 type { MySQLTableBackupDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Mysql 库表备份 -export function generateMysqlDbTableBackupCloneData(ticketData: TicketModel) { +export function generateMysqlDbTableBackupCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const tableDataList = infos.map((item) => ({ rowKey: random(), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/importSqlFile.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/importSqlFile.ts index ead1893165..8a581ba8df 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/importSqlFile.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/importSqlFile.ts @@ -10,11 +10,10 @@ * 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 type { MySQLImportSQLFileDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; // Mysql SQL变更执行 -export function generateMysqlImportSqlFileCloneData(ticketData: TicketModel) { +export function generateMysqlImportSqlFileCloneData(ticketData: TicketModel) { const { details } = ticketData; return Promise.resolve({ backup: details.backup, @@ -22,7 +21,6 @@ export function generateMysqlImportSqlFileCloneData(ticketData: TicketModel[number]; // Mysql DB实例权限克隆 -export async function generateMysqlInstanceCloneData(ticketData: TicketModel) { +export async function generateMysqlInstanceCloneData(ticketData: TicketModel) { const instanceList = _.flatMap(ticketData.details.clone_data.map((item) => [item.source, item.target])); const instanceListInfos = await checkMysqlInstances({ bizId: ticketData.bk_biz_id, diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/masterFailover.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/masterFailover.ts index 55f06f897b..402be45767 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/masterFailover.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/masterFailover.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { MySQLMasterFailDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // MySQL 主库故障切换 -export function generateMysqlMasterFailoverCloneData(ticketData: TicketModel) { +export function generateMysqlMasterFailoverCloneData(ticketData: TicketModel) { const { clusters, infos, diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/masterSlaveSwitch.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/masterSlaveSwitch.ts index df3a6fbec3..687cf638fb 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/masterSlaveSwitch.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/masterSlaveSwitch.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { MySQLMasterSlaveDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // MySQL 主从互换 -export function generateMysqlMasterSlaveSwicthCloneData(ticketData: TicketModel) { +export function generateMysqlMasterSlaveSwicthCloneData(ticketData: TicketModel) { const { clusters, infos, diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/migrateCluster.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/migrateCluster.ts index bb00bc7e43..ddb45552a1 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/migrateCluster.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/migrateCluster.ts @@ -10,13 +10,12 @@ * 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 type { MySQLMigrateDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // MySQL 迁移(克隆)主从 -export function generateMysqlMigrateClusterCloneData(ticketData: TicketModel) { +export function generateMysqlMigrateClusterCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const tableDataList = infos.map((item) => { const clusterId = item.cluster_ids[0]; diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/openArea.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/openArea.ts index a65f88336c..2e389e9513 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/openArea.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/openArea.ts @@ -12,8 +12,7 @@ */ import _ from 'lodash'; -import type { MysqlOpenAreaDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { getDetail } from '@services/source/openarea'; import { random } from '@utils'; @@ -25,7 +24,7 @@ const parser = (pattern: string, input: string) => { }; // MySQL 开区 -export async function generateMysqlOpenAreaCloneData(ticketData: TicketModel) { +export async function generateMysqlOpenAreaCloneData(ticketData: TicketModel) { const { details } = ticketData; // 获取模板详情 const templateDetail = await getDetail({ id: details.config_id }); diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/proxyAdd.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/proxyAdd.ts index 85c01d98b6..5e5ed3a6fb 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/proxyAdd.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/proxyAdd.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { MySQLProxyAddDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // MySQL 添加Proxy -export function generateMysqlProxyAddCloneData(ticketData: TicketModel) { +export function generateMysqlProxyAddCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const tableDataList = infos.map((item) => { const clusterId = item.cluster_ids[0]; diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/proxyReplace.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/proxyReplace.ts index a6887cba46..d20780b8a9 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/proxyReplace.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/proxyReplace.ts @@ -10,11 +10,10 @@ * 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 type { MySQLProxySwitchDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; // MySQL 替换Proxy -export function generateMysqlProxyReplaceCloneData(ticketData: TicketModel) { +export function generateMysqlProxyReplaceCloneData(ticketData: TicketModel) { const { force, infos } = ticketData.details; return Promise.resolve({ force, diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/restoreLocalSlave.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/restoreLocalSlave.ts index f2fba038f8..b35d41344c 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/restoreLocalSlave.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/restoreLocalSlave.ts @@ -10,13 +10,12 @@ * 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 type { MySQLRestoreLocalSlaveDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // MySQL 重建从库-原地重建 -export function generateMysqlRestoreLocalSlaveCloneData(ticketData: TicketModel) { +export function generateMysqlRestoreLocalSlaveCloneData(ticketData: TicketModel) { const { infos } = ticketData.details; const tableDataList = infos.map((item) => ({ rowKey: random(), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/restoreSlave.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/restoreSlave.ts index d40934cfdc..74b597e73d 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/restoreSlave.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/restoreSlave.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { MySQLRestoreSlaveDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // MySQL 重建从库-新机重建 -export function generateMysqlRestoreSlaveCloneData(ticketData: TicketModel) { +export function generateMysqlRestoreSlaveCloneData(ticketData: TicketModel) { const { infos } = ticketData.details; const tableDataList = infos.map((item) => { const clusterId = item.cluster_ids[0]; diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/rollback.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/rollback.ts index f1b9449fd3..4d2a20f0c0 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/rollback.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/rollback.ts @@ -10,13 +10,12 @@ * 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 type { MySQLRollbackDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // MySQL 定点构造 -export function generateMysqlRollbackCloneData(ticketData: TicketModel) { +export function generateMysqlRollbackCloneData(ticketData: TicketModel) { const { clusters, infos, rollback_cluster_type } = ticketData.details; const tableDataList = infos.map((item) => ({ rowKey: random(), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/singleApply.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/singleApply.ts index e88b79fc7f..ba798b3037 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/singleApply.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/singleApply.ts @@ -10,11 +10,10 @@ * 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 type { MySQLDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; // Mysql 单节点部署 -export function generateMysqlSingleApplyCloneData(ticketData: TicketModel) { +export function generateMysqlSingleApplyCloneData(ticketData: TicketModel) { const { details } = ticketData; return Promise.resolve({ affinity: details.disaster_tolerance_level, diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/slaveAdd.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/slaveAdd.ts index a80d61565d..a02299a882 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/slaveAdd.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/slaveAdd.ts @@ -10,13 +10,12 @@ * 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 type { MySQLSlaveDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // MySQL 添加从库 -export function generateMysqlSlaveAddCloneData(ticketData: TicketModel) { +export function generateMysqlSlaveAddCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const tableDataList = infos.map((item) => ({ rowKey: random(), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/versionLocalUpgrade.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/versionLocalUpgrade.ts index db8e30aa45..03e3382696 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/versionLocalUpgrade.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/versionLocalUpgrade.ts @@ -13,8 +13,7 @@ import TendbhaModel from '@services/model/mysql/tendbha'; import TendbsingleModel from '@services/model/mysql/tendbsingle'; -import type { MySQLLocalUpgradeDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { getTendbhaList } from '@services/source/tendbha'; import { getTendbsingleList } from '@services/source/tendbsingle'; @@ -23,7 +22,7 @@ import { ClusterTypes } from '@common/const'; import { random } from '@utils'; // MySQL 原地升级 -export async function generateMysqlVersionLocalUpgradeCloneData(ticketData: TicketModel) { +export async function generateMysqlVersionLocalUpgradeCloneData(ticketData: TicketModel) { const { clusters, infos, force } = ticketData.details; const clusterType = infos[0].display_info.cluster_type; const apiMap = { diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/versionMigrateUpgrade.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/versionMigrateUpgrade.ts index 6af49b5c0d..3a25cfb3b8 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/versionMigrateUpgrade.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/versionMigrateUpgrade.ts @@ -12,14 +12,13 @@ */ import TendbhaModel from '@services/model/mysql/tendbha'; -import type { MySQLMigrateUpgradeDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { getTendbhaList } from '@services/source/tendbha'; import { random } from '@utils'; // MySQL 迁移升级 -export async function generateMysqlVersionMigrateUpgradeCloneData(ticketData: TicketModel) { +export async function generateMysqlVersionMigrateUpgradeCloneData(ticketData: TicketModel) { const { clusters, infos, backup_source: backupSource, force } = ticketData.details; const clusterListResult = await getTendbhaList({ cluster_ids: infos.map((item) => item.cluster_ids[0]), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/versionProxyUpgrade.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/versionProxyUpgrade.ts index cb46443455..93efa2a8c3 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/versionProxyUpgrade.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/mysql/versionProxyUpgrade.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { MySQLProxyUpgradeDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; import { random } from '@utils'; // MySQL Proxy 升级 -export function generateMysqlVersionProxyUpgradeCloneData(ticketData: TicketModel) { +export function generateMysqlVersionProxyUpgradeCloneData(ticketData: TicketModel) { const { clusters, infos, force } = ticketData.details; const tableList = infos.map((item) => { const clusterId = item.cluster_ids[0]; diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/apply.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/apply.ts index 703c5fd908..232bd892d8 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/apply.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/apply.ts @@ -10,13 +10,12 @@ * 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 type { RedisDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { TicketTypes } from '@common/const'; // Redis 集群部署 -export function generateRedisApplyCloneData(ticketData: TicketModel) { +export function generateRedisApplyCloneData(ticketData: TicketModel) { const { details } = ticketData; return Promise.resolve({ bk_biz_id: ticketData.bk_biz_id, diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterAddSlave.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterAddSlave.ts index 1c6096a112..d0643991a8 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterAddSlave.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterAddSlave.ts @@ -10,14 +10,13 @@ * 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 type { RedisAddSlaveDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { getRedisMachineList } from '@services/source/redis'; import { random } from '@utils'; // Redis 重建从库 -export async function generateRedisClusterAddSlaveCloneData(ticketData: TicketModel) { +export async function generateRedisClusterAddSlaveCloneData(ticketData: TicketModel) { const { infos } = ticketData.details; const masterIps: string[] = []; const masterSlaveIpMap: Record = {}; diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterCutoff.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterCutoff.ts index f7c724a585..c9493b41f9 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterCutoff.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterCutoff.ts @@ -10,13 +10,12 @@ * 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 type { RedisDBReplaceDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Redis 整机替换 -export function generateRedisClusterCutoffCloneData(ticketData: TicketModel) { +export function generateRedisClusterCutoffCloneData(ticketData: TicketModel) { const { clusters, infos, specs } = ticketData.details; return Promise.resolve({ tableDataList: infos.flatMap((info) => diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterShardUpdate.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterShardUpdate.ts index 1eaa450928..a023bae870 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterShardUpdate.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterShardUpdate.ts @@ -11,8 +11,7 @@ * the specific language governing permissions and limitations under the License. */ import RedisModel from '@services/model/redis/redis'; -import type { RedisClusterShardUpdateDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { getRedisList } from '@services/source/redis'; import { random } from '@utils'; @@ -20,9 +19,7 @@ import { random } from '@utils'; import { t } from '@locales/index'; // Redis 集群分片数变更 -export async function generateRedisClusterShardUpdateCloneData( - ticketData: TicketModel, -) { +export async function generateRedisClusterShardUpdateCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const clusterListResult = await getRedisList({ cluster_ids: infos.map((item) => item.src_cluster).join(','), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterTypeUpdate.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterTypeUpdate.ts index b50d95c8a9..f7af2f41ca 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterTypeUpdate.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/clusterTypeUpdate.ts @@ -11,8 +11,7 @@ * the specific language governing permissions and limitations under the License. */ import RedisModel from '@services/model/redis/redis'; -import type { RedisClusterTypeUpdateDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { getRedisList } from '@services/source/redis'; import { random } from '@utils'; @@ -20,7 +19,7 @@ import { random } from '@utils'; import { t } from '@locales/index'; // Redis 集群类型变更 -export async function generateRedisClusterTypeUpdateCloneData(ticketData: TicketModel) { +export async function generateRedisClusterTypeUpdateCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const clusterListResult = await getRedisList({ cluster_ids: infos.map((item) => item.src_cluster).join(','), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/dataCopy.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/dataCopy.ts index 7593954c09..8744a197d5 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/dataCopy.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/dataCopy.ts @@ -10,13 +10,12 @@ * 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 type { RedisDataCopyDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Redis 集群数据复制 -export function generateRedisDataCopyCloneData(ticketData: TicketModel) { +export function generateRedisDataCopyCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const tableList = infos.map((item) => ({ diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/dataCopyCheckRepair.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/dataCopyCheckRepair.ts index a387746454..1187ed0b3c 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/dataCopyCheckRepair.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/dataCopyCheckRepair.ts @@ -12,15 +12,14 @@ */ import dayjs from 'dayjs'; -import type { RedisDataCheckAndRepairDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { random } from '@utils'; import { t } from '@locales/index'; // Redis 数据校验与修复 -export function generateRedisDataCopyCheckRepairCloneData(ticketData: TicketModel) { +export function generateRedisDataCopyCheckRepairCloneData(ticketData: TicketModel) { const { details } = ticketData; const tableList = details.infos.map((item) => ({ rowKey: random(), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/dataStructure.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/dataStructure.ts index c269595ba9..4c20211445 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/dataStructure.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/dataStructure.ts @@ -11,14 +11,13 @@ * the specific language governing permissions and limitations under the License. */ import RedisModel from '@services/model/redis/redis'; -import type { RedisDataStructrueDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { getRedisList } from '@services/source/redis'; import { random } from '@utils'; // Redis 定点构造 -export async function generateRedisDataStructureCloneData(ticketData: TicketModel) { +export async function generateRedisDataStructureCloneData(ticketData: TicketModel) { const { infos } = ticketData.details; const clusterListResult = await getRedisList({ cluster_ids: infos.map((item) => item.cluster_id).join(','), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/masterSlaveSwitch.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/masterSlaveSwitch.ts index 50207f059d..02e739328e 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/masterSlaveSwitch.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/masterSlaveSwitch.ts @@ -10,15 +10,14 @@ * 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 type { RedisMasterSlaveSwitchDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { checkRedisInstances } from '@services/source/instances'; import { queryMachineInstancePair } from '@services/source/redisToolbox'; import { random } from '@utils'; // Redis 主从切换 -export async function generateRedisMasterSlaveSwitchCloneData(ticketData: TicketModel) { +export async function generateRedisMasterSlaveSwitchCloneData(ticketData: TicketModel) { const { infos, force } = ticketData.details; const masterIps: string[] = []; const ipSwitchMode: Record = {}; diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/operation.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/operation.ts index 8fe9a53283..869ee122c3 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/operation.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/operation.ts @@ -11,11 +11,10 @@ * the specific language governing permissions and limitations under the License. */ import RedisModel from '@services/model/redis/redis'; -import type { RedisKeysDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; // Redis 提取Key/删除Key/备份 -export function generateRedisOperationCloneData(ticketData: TicketModel) { +export function generateRedisOperationCloneData(ticketData: TicketModel) { const { clusters, rules } = ticketData.details; return Promise.resolve( rules.map( diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/proxyScaleDown.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/proxyScaleDown.ts index 480309d50e..fad832225e 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/proxyScaleDown.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/proxyScaleDown.ts @@ -15,14 +15,13 @@ import _ from 'lodash'; import RedisModel from '@services/model/redis/redis'; import RedisInstanceModel from '@services/model/redis/redis-instance'; -import type { RedisProxyScaleDownDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { getRedisInstances, getRedisList } from '@services/source/redis'; import { random } from '@utils'; // Redis 接入层缩容 -export async function generateRedisProxyScaleDownCloneData(ticketData: TicketModel) { +export async function generateRedisProxyScaleDownCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const [clusterListResult, instanceListResult] = await Promise.all([ getRedisList({ diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/proxyScaleUp.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/proxyScaleUp.ts index a68c194aca..0d273e6817 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/proxyScaleUp.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/proxyScaleUp.ts @@ -11,14 +11,13 @@ * the specific language governing permissions and limitations under the License. */ import RedisModel from '@services/model/redis/redis'; -import type { RedisProxyScaleUpDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { getRedisList } from '@services/source/redis'; import { random } from '@utils'; // Redis 接入层扩容 -export async function generateRedisProxyScaleUpCloneData(ticketData: TicketModel) { +export async function generateRedisProxyScaleUpCloneData(ticketData: TicketModel) { const { clusters, infos, specs } = ticketData.details; const clusterListResult = await getRedisList({ cluster_ids: infos.map((item) => item.cluster_id).join(','), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/rollbackData.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/rollbackData.ts index 0c61546f9e..045c800607 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/rollbackData.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/rollbackData.ts @@ -10,13 +10,12 @@ * 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 type { RedisRollbackDataCopyDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Redis 以构造实例恢复 -export function generateRedisRollbackDataCloneData(ticketData: TicketModel) { +export function generateRedisRollbackDataCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const tableList = infos.map((item) => ({ rowKey: random(), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/scaleUpdown.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/scaleUpdown.ts index c1af5097f2..00ce8c7bd5 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/scaleUpdown.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/scaleUpdown.ts @@ -11,8 +11,7 @@ * the specific language governing permissions and limitations under the License. */ import RedisModel from '@services/model/redis/redis'; -import type { RedisScaleUpDownDetails } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { getRedisList } from '@services/source/redis'; import { ClusterTypes } from '@common/const'; @@ -20,7 +19,7 @@ import { ClusterTypes } from '@common/const'; import { random } from '@utils'; // Redis 集群容量变更 -export async function generateRedisScaleUpdownCloneData(ticketData: TicketModel) { +export async function generateRedisScaleUpdownCloneData(ticketData: TicketModel) { const { clusters, infos } = ticketData.details; const clusterListResult = await getRedisList({ cluster_ids: infos.map((item) => item.cluster_id).join(','), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/versionUpgrade.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/versionUpgrade.ts index 67f50961f0..73c76a32bc 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/versionUpgrade.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/redis/versionUpgrade.ts @@ -11,14 +11,13 @@ * the specific language governing permissions and limitations under the License. */ import RedisModel from '@services/model/redis/redis'; -import type { RedisVersionUpgrade } from '@services/model/ticket/details/redis'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { getRedisList } from '@services/source/redis'; import { random } from '@utils'; // Redis 版本升级 -export async function generateRedisRedisVersionUpgradeCloneData(ticketData: TicketModel) { +export async function generateRedisRedisVersionUpgradeCloneData(ticketData: TicketModel) { const { infos } = ticketData.details; const clusterListResult = await getRedisList({ cluster_ids: infos.map((item) => item.cluster_ids[0]).join(','), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/addMnt.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/addMnt.ts index ec580196a3..4670fba20e 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/addMnt.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/addMnt.ts @@ -12,14 +12,13 @@ */ import TendbclusterModel from '@services/model/tendbcluster/tendbcluster'; -import type { SpiderMNTApplyDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbClusterList } from '@services/source/tendbcluster'; import { random } from '@utils'; // Spider 临时节点添加 -export async function generateSpiderAddMntDataCloneData(ticketData: TicketModel) { +export async function generateSpiderAddMntDataCloneData(ticketData: TicketModel) { const { infos } = ticketData.details; const clusterListResult = await getTendbClusterList({ cluster_ids: infos.map((item) => item.cluster_id), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/apply.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/apply.ts index 670e0361ab..630c4dacbc 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/apply.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/apply.ts @@ -11,11 +11,10 @@ * the specific language governing permissions and limitations under the License. */ -import type { SpiderApplyDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; // spider 集群部署 -export async function generateSpiderApplyCloneData(ticketData: TicketModel) { +export async function generateSpiderApplyCloneData(ticketData: TicketModel) { const { details } = ticketData; return Promise.resolve({ diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/authorizeRule.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/authorizeRule.ts index 1fb4dd9a7d..afbaf6374a 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/authorizeRule.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/authorizeRule.ts @@ -10,15 +10,14 @@ * 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 type { MysqlAuthorizationDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { checkHost } from '@services/source/ipchooser'; import { getTendbClusterList } from '@services/source/tendbcluster'; import { ClusterTypes } from '@common/const'; // Spider 集群授权 -export async function generateSpiderAuthorizeRuleCloneData(ticketData: TicketModel) { +export async function generateSpiderAuthorizeRuleCloneData(ticketData: TicketModel) { const { authorize_data: authorizeData } = ticketData.details; const sourceIpList: ServiceReturnType = []; if (authorizeData.source_ips && Array.isArray(authorizeData.source_ips)) { diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/capacityChange.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/capacityChange.ts index 07f926b35c..88f4a4edba 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/capacityChange.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/capacityChange.ts @@ -12,14 +12,13 @@ */ import TendbclusterModel from '@services/model/tendbcluster/tendbcluster'; -import type { SpiderNodeRebalanceDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbClusterList } from '@services/source/tendbcluster'; import { random } from '@utils'; // Spider 集群remote节点扩缩容 -export async function generateSpiderCapacityChangeCloneData(ticketData: TicketModel) { +export async function generateSpiderCapacityChangeCloneData(ticketData: TicketModel) { const { infos, need_checksum: needChecksum, diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/checksum.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/checksum.ts index c64696fb69..0606e01437 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/checksum.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/checksum.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { SpiderCheckSumDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Spider Checksum -export function generateSpiderChecksumCloneData(ticketData: TicketModel) { +export function generateSpiderChecksumCloneData(ticketData: TicketModel) { const { details, remark } = ticketData; const { infos, clusters } = details; const tableDataList = infos.map((item) => { diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbBackup.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbBackup.ts index 38475fc15a..6d5b6d6501 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbBackup.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbBackup.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { SpiderFullBackupDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Spider TenDBCluster 全备单据 -export function generateSpiderDbBackupCloneData(ticketData: TicketModel) { +export function generateSpiderDbBackupCloneData(ticketData: TicketModel) { const { infos, clusters } = ticketData.details; const tableDataList = infos.clusters.map((item) => { const clusterItem = clusters[item.cluster_id]; diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbClear.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbClear.ts index af95c16ebb..b156069b4a 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbClear.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbClear.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { SpiderTruncateDatabaseDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Spider tendbcluster 清档 -export function generateSpiderDbClearCloneData(ticketData: TicketModel) { +export function generateSpiderDbClearCloneData(ticketData: TicketModel) { const { infos, clusters } = ticketData.details; const tableDataList = infos.map((item) => { const clusterItem = clusters[item.cluster_id]; diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbRename.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbRename.ts index 8f2fecf451..30ee1b7e3a 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbRename.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbRename.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { SpiderRenameDatabaseDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Spider Tendbcluster 重命名 -export function generateSpiderDbRenameCloneData(ticketData: TicketModel) { +export function generateSpiderDbRenameCloneData(ticketData: TicketModel) { const { infos, force, clusters } = ticketData.details; const tableDataList = infos.map((item) => { const clusterItem = clusters[item.cluster_id]; diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbTableBackup.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbTableBackup.ts index c3747f01b6..8195135e86 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbTableBackup.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/dbTableBackup.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { SpiderTableBackupDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Spider TenDBCluster 库表备份 -export function generateSpiderDbTableBackupCloneData(ticketData: TicketModel) { +export function generateSpiderDbTableBackupCloneData(ticketData: TicketModel) { const { infos, clusters } = ticketData.details; const tableDataList = infos.map((item) => { const clusterItem = clusters[item.cluster_id]; diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/flashback.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/flashback.ts index 389f83d992..15fc8b2a2e 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/flashback.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/flashback.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { SpiderFlashbackDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Spider flashback -export function generateSpiderFlashbackCloneData(ticketData: TicketModel) { +export function generateSpiderFlashbackCloneData(ticketData: TicketModel) { const { infos, clusters } = ticketData.details; const tableDataList = infos.map((item) => { const clusterItem = clusters[item.cluster_id]; diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/index.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/index.ts index 2dc6ba5184..033d50b0b7 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/index.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/index.ts @@ -29,7 +29,7 @@ export * from './privilegeCloneInst'; export * from './proxyScaleDown'; export * from './proxyScaleUp'; export * from './proxySlaveApply'; -export * from './rollback'; +// export * from './rollback'; export * from './slaveRebuildLocal'; export * from './slaveRebuildNew'; export * from './sqlExecute'; diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/masterFailover.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/masterFailover.ts index 642637e93f..88c4f738d4 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/masterFailover.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/masterFailover.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { SpiderMasterSlaveSwitchDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Spider 主库故障切换 -export function generateSpiderMasterFailoverCloneData(ticketData: TicketModel) { +export function generateSpiderMasterFailoverCloneData(ticketData: TicketModel) { const { clusters, infos, diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/masterSlaveClone.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/masterSlaveClone.ts index b4d8f366a1..c54e34869c 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/masterSlaveClone.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/masterSlaveClone.ts @@ -12,14 +12,13 @@ */ import TendbclusterMachineModel from '@services/model/tendbcluster/tendbcluster-machine'; -import type { SpiderMigrateCluster } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbclusterMachineList } from '@services/source/tendbcluster'; import { random } from '@utils'; // spider 迁移主从 -export async function generateSpiderMasterSlaveCloneCloneData(ticketData: TicketModel) { +export async function generateSpiderMasterSlaveCloneCloneData(ticketData: TicketModel) { const { infos, backup_source: backupSource } = ticketData.details; const masterMachineResult = await getTendbclusterMachineList({ ip: infos.map((item) => item.old_master.ip).join(','), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/masterSlaveSwap.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/masterSlaveSwap.ts index cdc1dde63a..f06024bc94 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/masterSlaveSwap.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/masterSlaveSwap.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { SpiderMasterSlaveSwitchDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Spider 主从切换 -export function generateSpiderMasterSlaveSwapCloneData(ticketData: TicketModel) { +export function generateSpiderMasterSlaveSwapCloneData(ticketData: TicketModel) { const { clusters, infos, diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/privilegeCloneClient.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/privilegeCloneClient.ts index 09eb672fd6..8d8986f1bc 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/privilegeCloneClient.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/privilegeCloneClient.ts @@ -11,13 +11,12 @@ * the specific language governing permissions and limitations under the License. */ -import type { MySQLCloneDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { random } from '@utils'; // Spider 权限克隆 -export function generateSpiderPrivilegeCloneClientCloneData(ticketData: TicketModel) { +export function generateSpiderPrivilegeCloneClientCloneData(ticketData: TicketModel) { return Promise.resolve({ tableDataList: ticketData.details.clone_data.map((item) => ({ rowKey: random(), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/privilegeCloneInst.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/privilegeCloneInst.ts index f7b912dabd..ae5155c6f1 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/privilegeCloneInst.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/privilegeCloneInst.ts @@ -12,14 +12,15 @@ */ import TendbclusterInstanceModel from '@services/model/tendbcluster/tendbcluster-instance'; -import type { MySQLInstanceCloneDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbclusterInstanceList } from '@services/source/tendbcluster'; import { random } from '@utils'; // Spider 权限克隆 -export async function generateSpiderPrivilegeCloneInstCloneData(ticketData: TicketModel) { +export async function generateSpiderPrivilegeCloneInstCloneData( + ticketData: TicketModel, +) { const { clone_data: cloneData } = ticketData.details; const instanceListResult = await getTendbclusterInstanceList({ // instance_address: cloneData.reduce((prev, item) => [...prev, item.source], []).join(','), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/proxyScaleDown.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/proxyScaleDown.ts index a3240efc02..8f7d048247 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/proxyScaleDown.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/proxyScaleDown.ts @@ -15,14 +15,13 @@ import _ from 'lodash'; import TendbclusterModel from '@services/model/tendbcluster/tendbcluster'; import TendbclusterInstanceModel from '@services/model/tendbcluster/tendbcluster-instance'; -import type { SpiderReduceNodesDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbclusterInstanceList, getTendbClusterList } from '@services/source/tendbcluster'; import { random } from '@utils'; // spider 缩容接入层 -export async function generateSpiderProxyScaleDownCloneData(ticketData: TicketModel) { +export async function generateSpiderProxyScaleDownCloneData(ticketData: TicketModel) { const { infos, is_safe: isSafe } = ticketData.details; const [clusterListResult, instanceListResult] = await Promise.all([ getTendbClusterList({ diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/proxyScaleUp.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/proxyScaleUp.ts index deba3d271e..d7d8466247 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/proxyScaleUp.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/proxyScaleUp.ts @@ -12,14 +12,13 @@ */ import TendbclusterModel from '@services/model/tendbcluster/tendbcluster'; -import type { SpiderAddNodesDeatils } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbClusterList } from '@services/source/tendbcluster'; import { random } from '@utils'; // spider扩容接入层 -export async function generateSpiderProxyScaleUpCloneData(ticketData: TicketModel) { +export async function generateSpiderProxyScaleUpCloneData(ticketData: TicketModel) { const { infos } = ticketData.details; const clusterListResult = await getTendbClusterList({ cluster_ids: infos.map((item) => item.cluster_id), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/proxySlaveApply.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/proxySlaveApply.ts index f4295a3cc7..33c729f9f7 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/proxySlaveApply.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/proxySlaveApply.ts @@ -12,14 +12,13 @@ */ import TendbclusterModel from '@services/model/tendbcluster/tendbcluster'; -import type { SpiderSlaveApplyDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbClusterList } from '@services/source/tendbcluster'; import { random } from '@utils'; // Spider slave集群添加 -export async function generateSpiderProxySlaveApplyCloneData(ticketData: TicketModel) { +export async function generateSpiderProxySlaveApplyCloneData(ticketData: TicketModel) { const { infos } = ticketData.details; const clusterListResult = await getTendbClusterList({ cluster_ids: infos.map((item) => item.cluster_id), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/rollback.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/rollback.ts deleted file mode 100644 index 15da2bb195..0000000000 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/rollback.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * TencentBlueKing is pleased to support the open source community by making 蓝鲸智云-DB管理系统(BlueKing-BK-DBM) available. - * - * Copyright (C) 2017-2023 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at https://opensource.org/licenses/MIT - * - * 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 type { SpiderRollbackDetails } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; - -import { random } from '@utils'; - -// spider 定点回档 -export function generateSpiderRollbackCloneData(ticketData: TicketModel) { - const tableDataList = [ticketData.details].map((item) => { - const clusterItem = ticketData.details.clusters[item.cluster_id]; - return { - rowKey: random(), - isLoading: false, - clusterData: { - id: clusterItem.id, - domain: clusterItem.immute_domain, - cloudId: clusterItem.bk_cloud_id, - }, - rollbackupType: item.rollback_type, - rollbackTime: item.rollback_time, - databases: item.databases, - databasesIgnore: item.databases_ignore, - tables: item.tables, - tablesIgnore: item.tables_ignore, - }; - }); - - return Promise.resolve({ - tableDataList, - remark: ticketData.remark, - }); -} diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/slaveRebuildLocal.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/slaveRebuildLocal.ts index 7614cd2d93..b16eb9029c 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/slaveRebuildLocal.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/slaveRebuildLocal.ts @@ -12,14 +12,15 @@ */ import TendbclusterInstanceModel from '@services/model/tendbcluster/tendbcluster-instance'; -import type { SpiderSlaveRebuid } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbclusterInstanceList } from '@services/source/tendbcluster'; import { random } from '@utils'; // spider 重建从库-本地重建 -export async function generateSpiderSlaveRebuildLocalCloneData(ticketData: TicketModel) { +export async function generateSpiderSlaveRebuildLocalCloneData( + ticketData: TicketModel, +) { const { infos, backup_source } = ticketData.details; const instanceListResult = await getTendbclusterInstanceList({ instance: infos.map((item) => item.slave.ip), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/slaveRebuildNew.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/slaveRebuildNew.ts index 8d4f1652d2..df235c7873 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/slaveRebuildNew.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/slaveRebuildNew.ts @@ -12,14 +12,13 @@ */ import TendbclusterMachineModel from '@services/model/tendbcluster/tendbcluster-machine'; -import type { SpiderSlaveRebuid } from '@services/model/ticket/details/spider'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbclusterMachineList } from '@services/source/tendbcluster'; import { random } from '@utils'; // spider 重建从库-新机重建 -export async function generateSpiderSlaveRebuildNewCloneData(ticketData: TicketModel) { +export async function generateSpiderSlaveRebuildNewCloneData(ticketData: TicketModel) { const { infos, backup_source } = ticketData.details; const slaveMachineResult = await getTendbclusterMachineList({ ip: infos.map((item) => item.old_slave.ip).join(','), diff --git a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/sqlExecute.ts b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/sqlExecute.ts index 6dbf2a0d28..8e5efa718a 100644 --- a/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/sqlExecute.ts +++ b/dbm-ui/frontend/src/hooks/useTicketCloneInfo/generateCloneData/spider/sqlExecute.ts @@ -11,11 +11,10 @@ * the specific language governing permissions and limitations under the License. */ -import type { MySQLImportSQLFileDetails } from '@services/model/ticket/details/mysql'; -import TicketModel from '@services/model/ticket/ticket'; +import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; // spider SQL变更执行 -export function generateSpiderSqlExecuteCloneData(ticketData: TicketModel) { +export function generateSpiderSqlExecuteCloneData(ticketData: TicketModel) { const { details } = ticketData; return Promise.resolve({ backup: details.backup, @@ -23,7 +22,6 @@ export function generateSpiderSqlExecuteCloneData(ticketData: TicketModel) { +export function generateSpiderRollbackCloneData(ticketData: TicketModel) { const { clusters, infos, rollback_cluster_type } = ticketData.details; const tableDataList = infos.map((item) => ({ rowKey: random(), diff --git a/dbm-ui/frontend/src/hooks/useTicketCount.ts b/dbm-ui/frontend/src/hooks/useTicketCount.ts new file mode 100644 index 0000000000..c876444a39 --- /dev/null +++ b/dbm-ui/frontend/src/hooks/useTicketCount.ts @@ -0,0 +1,39 @@ +import { onBeforeUnmount } from 'vue'; +import { useRequest } from 'vue-request'; + +import { getTicketCount } from '@services/source/ticketFlow'; + +import { useEventBus } from '@hooks'; + +export const useTicketCount = () => { + const data = ref>({ + MY_APPROVE: 0, + APPROVE: 0, + TODO: 0, + RUNNING: 0, + RESOURCE_REPLENISH: 0, + FAILED: 0, + DONE: 0, + SELF_MANAGE: 0, + }); + + const { run } = useRequest(getTicketCount, { + cacheKey: 'ticketCount', + cacheTime: 1000, + onSuccess(result) { + data.value = result; + }, + }); + + const eventBus = useEventBus(); + + eventBus.on('refreshTicketStatus', run); + + onBeforeUnmount(() => { + eventBus.off('refreshTicketStatus', run); + }); + + return { + data, + }; +}; diff --git a/dbm-ui/frontend/src/layout/Index.vue b/dbm-ui/frontend/src/layout/Index.vue index 19c4ad3a4a..cba77158a8 100644 --- a/dbm-ui/frontend/src/layout/Index.vue +++ b/dbm-ui/frontend/src/layout/Index.vue @@ -133,7 +133,7 @@ 'DorisManage', 'taskHistory', 'DatabaseWhitelist', - 'ticketManage', + 'bizTicketManage', 'DBPasswordTemporaryModify', ], [menuEnum.observableManage]: ['DBHASwitchEvents', 'inspectionManage'], @@ -157,7 +157,13 @@ 'PlatformTicketFlowSetting', 'PlatformStaffManage', ], - [menuEnum.personalWorkbench]: ['SelfServiceMyTickets', 'MyTodos', 'serviceApply', 'ticketSelfManage'], + [menuEnum.personalWorkbench]: [ + 'serviceApply', + 'SelfServiceMyTickets', + 'MyTodos', + 'ticketSelfDone', + 'ticketSelfManage', + ], } as Record; const menuType = ref(''); @@ -177,7 +183,7 @@ const contentTitle = computed(() => route.meta.navName); const isContendFullscreen = computed(() => Boolean(route.meta.fullscreen)); // 全局搜索结果页面不显示,点击顶部导航栏后显示并自动跳转 - const needMenu = computed(() => !(route.name === 'QuickSearch' && menuType.value === '')); + const needMenu = computed(() => Boolean(menuType.value)); // 解析路由分组 watch( @@ -205,6 +211,13 @@ menuType.value = routeGroupMap[routeName]; } }); + + // fix: menu 组件 acitve 生效有延迟的问题 + setTimeout(() => { + document.body.querySelector('.bk-menu-item.is-active')?.scrollIntoView({ + block: 'start', + }); + }, 300); }, { immediate: true, diff --git a/dbm-ui/frontend/src/layout/components/PersonalWorkbench.vue b/dbm-ui/frontend/src/layout/components/PersonalWorkbench.vue index 47962227a4..c0c0fd6f7e 100644 --- a/dbm-ui/frontend/src/layout/components/PersonalWorkbench.vue +++ b/dbm-ui/frontend/src/layout/components/PersonalWorkbench.vue @@ -6,18 +6,17 @@ @click="handleMenuChange"> + :name="t('单据管理')"> + key="MyTodos" + v-db-console="'personalWorkbench.myTodos'"> - - {{ t('服务申请') }} + + {{ t('我的待办') }} + {{ todoCount }} - + {{ t('我的申请') }} + key="ticketSelfDone" + v-db-console="'personalWorkbench.myTickets'"> - - {{ t('我的待办') }} + + {{ t('我的已办') }} + + {{ t('我负责的业务') }} + + + + - {{ t('我负责的业务') }} + {{ t('服务申请') }} @@ -62,6 +67,8 @@ import { Menu } from 'bkui-vue'; import { useI18n } from 'vue-i18n'; + import { useTicketCount } from '@hooks'; + import { useActiveKey } from './hooks/useActiveKey'; const { t } = useI18n(); @@ -72,5 +79,44 @@ parentKey, key: currentActiveKey, routeLocation: handleMenuChange, - } = useActiveKey(menuRef as Ref>, 'serviceApply'); + } = useActiveKey(menuRef as Ref>, 'MyTodos'); + + const { data: ticketCount } = useTicketCount(); + + const todoCount = computed(() => { + if (!ticketCount.value) { + return 0; + } + + return ( + ticketCount.value.APPROVE + + ticketCount.value.FAILED + + ticketCount.value.RESOURCE_REPLENISH + + ticketCount.value.RUNNING + + ticketCount.value.TODO + ); + }); + diff --git a/dbm-ui/frontend/src/layout/components/database-manage/Index.vue b/dbm-ui/frontend/src/layout/components/database-manage/Index.vue index b0bc677666..ad1596bfdb 100644 --- a/dbm-ui/frontend/src/layout/components/database-manage/Index.vue +++ b/dbm-ui/frontend/src/layout/components/database-manage/Index.vue @@ -36,7 +36,7 @@ v-db-console="'databaseManage.missionManage'" :name="t('任务中心')"> - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/RestoreLocalSlave.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/RestoreLocalSlave.vue similarity index 88% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/RestoreLocalSlave.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/RestoreLocalSlave.vue index dfb9e4362d..f0e6d5d278 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/RestoreLocalSlave.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/RestoreLocalSlave.vue @@ -20,11 +20,12 @@ - - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/RestoreSlave.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/RestoreSlave.vue new file mode 100644 index 0000000000..c1f6688279 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/RestoreSlave.vue @@ -0,0 +1,66 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/SingleBbRename.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/SingleBbRename.vue new file mode 100644 index 0000000000..cf2c3d5300 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/SingleBbRename.vue @@ -0,0 +1,21 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/common/DBRename.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/common/DBRename.vue new file mode 100644 index 0000000000..bd27722b0e --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/common/DBRename.vue @@ -0,0 +1,34 @@ + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/version-upgrade/components/VersionContent.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/components/VersionContent.vue similarity index 100% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/version-upgrade/components/VersionContent.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/components/VersionContent.vue diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/openarea/components/PermissionRule.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/openarea/components/PermissionRule.vue deleted file mode 100644 index 6539e68d94..0000000000 --- a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/mysql/openarea/components/PermissionRule.vue +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/bigdata/DetailsPulsar.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Apply.vue similarity index 90% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/bigdata/DetailsPulsar.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Apply.vue index ef71ad0e89..1553c17ee7 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/bigdata/DetailsPulsar.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Apply.vue @@ -181,67 +181,39 @@ import { useI18n } from 'vue-i18n'; import { useRequest } from 'vue-request'; + import TicketModel, { type Pulsar } from '@services/model/ticket/ticket'; import { getInfrasCities, getTicketHostNodes } from '@services/source/ticket'; import { useSystemEnviron } from '@stores'; + import { TicketTypes } from '@common/const'; + import HostPreview from '@components/host-preview/HostPreview.vue'; import { redisIpSources } from '@views/db-manage/redis/apply/common/const'; - import SpecInfos, { type SpecInfo } from '../../SpecInfos.vue'; + import SpecInfos from '../components/SpecInfos.vue'; type ServiceKeys = 'bookkeeper' | 'zookeeper' | 'broker'; - interface TicketDetails { - id: number; - bk_biz_id: number; - remark: string; - ticket_type: string; - bk_biz_name: string; - db_app_abbr: string; - details: { - username: string; - password: string; - ip_source: string; - db_version: string; - retention_hours: number; - replication_num: number; - ack_quorum: number; - port: number; - partition_num: number; - cluster_name: string; - cluster_alias: string; - city_code: string; - db_app_abbr: string; - disaster_tolerance_level: string; - nodes: { - zookeeper: []; - broker: []; - bookkeeper: []; - }; - resource_spec: { - zookeeper: SpecInfo; - broker: SpecInfo; - bookkeeper: SpecInfo; - }; - }; - } - interface Props { - ticketDetails: TicketDetails; + ticketDetails: TicketModel; } const props = defineProps(); + defineOptions({ + name: TicketTypes.PULSAR_APPLY, + inheritAttrs: false, + }); const { t } = useI18n(); const { AFFINITY: affinityList } = useSystemEnviron().urls; const cityName = ref('--'); - const zookeeperSpec = computed(() => props.ticketDetails?.details?.resource_spec?.zookeeper || {}); - const bookkeeperSpec = computed(() => props.ticketDetails?.details?.resource_spec?.bookkeeper || {}); - const brokerSpec = computed(() => props.ticketDetails?.details?.resource_spec?.broker || {}); + const zookeeperSpec = computed(() => props.ticketDetails?.details?.resource_spec.zookeeper || {}); + const bookkeeperSpec = computed(() => props.ticketDetails?.details?.resource_spec.bookkeeper || {}); + const brokerSpec = computed(() => props.ticketDetails?.details?.resource_spec.broker || {}); const affinity = computed(() => { const level = props.ticketDetails?.details?.disaster_tolerance_level; @@ -288,7 +260,3 @@ previewState.title = `【${title}】${t('主机预览')}`; } - - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Destroy.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Destroy.vue new file mode 100644 index 0000000000..aa7e4bc45f --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Destroy.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Disable.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Disable.vue new file mode 100644 index 0000000000..96b7c6fdbc --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Disable.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Enable.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Enable.vue new file mode 100644 index 0000000000..06bb26a7a9 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Enable.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Reboot.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Reboot.vue new file mode 100644 index 0000000000..e33b017b8c --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Reboot.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Replace.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Replace.vue new file mode 100644 index 0000000000..20051f508a --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Replace.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/ScaleUp.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/ScaleUp.vue new file mode 100644 index 0000000000..ec47c50c49 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/ScaleUp.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Shrink.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Shrink.vue new file mode 100644 index 0000000000..d5450b5aa4 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/pulsar/Shrink.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/Backup.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/Backup.vue new file mode 100644 index 0000000000..d69ca77602 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/Backup.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/AddSlave.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterAddSlave.vue similarity index 90% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/AddSlave.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterAddSlave.vue index ee8ac934d4..2930148574 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/AddSlave.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterAddSlave.vue @@ -20,11 +20,12 @@ diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/DBReplace.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterCutoff.vue similarity index 90% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/DBReplace.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterCutoff.vue index a333e763f0..f9fc3697d5 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/DBReplace.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterCutoff.vue @@ -20,11 +20,10 @@ - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/RollbackDataCopy.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterRollbackDataCopy.vue similarity index 91% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/RollbackDataCopy.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterRollbackDataCopy.vue index 2396b56887..8b5dedac4b 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/RollbackDataCopy.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterRollbackDataCopy.vue @@ -26,13 +26,14 @@ - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/ClusterShardUpdate.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterShardNumUpdate.vue similarity index 94% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/ClusterShardUpdate.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterShardNumUpdate.vue index 91b3efc042..57063c38fc 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/ClusterShardUpdate.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterShardNumUpdate.vue @@ -48,14 +48,15 @@ import { useRequest } from 'vue-request'; import RedisModel from '@services/model/redis/redis'; - import type { RedisClusterShardUpdateDetails } from '@services/model/ticket/details/redis'; - import TicketModel from '@services/model/ticket/ticket'; + import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { getRedisListByBizId } from '@services/source/redis'; + import { TicketTypes } from '@common/const'; + import { repairAndVerifyFrequencyList, repairAndVerifyTypeList } from '@views/db-manage/redis/common/const'; interface Props { - ticketDetails: TicketModel + ticketDetails: TicketModel } interface RowData { @@ -68,6 +69,11 @@ const props = defineProps(); + defineOptions({ + name: TicketTypes.REDIS_CLUSTER_SHARD_NUM_UPDATE, + inheritAttrs: false + }) + const { t } = useI18n(); const tableData = ref([]); @@ -165,6 +171,3 @@ }, {} as Record); } - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterTypeUpdate.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterTypeUpdate.vue new file mode 100644 index 0000000000..2d51ca6c13 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ClusterTypeUpdate.vue @@ -0,0 +1,205 @@ + + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/DataStructure.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/DataStructure.vue similarity index 90% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/DataStructure.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/DataStructure.vue index 4732857a35..36617dda05 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/DataStructure.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/DataStructure.vue @@ -20,13 +20,14 @@ - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/Destroy.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/Destroy.vue new file mode 100644 index 0000000000..5de485453d --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/Destroy.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/DetailsHa.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InsApply.vue similarity index 93% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/DetailsHa.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InsApply.vue index bd812aa58f..2697af4aec 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/DetailsHa.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InsApply.vue @@ -21,20 +21,26 @@ import { useI18n } from 'vue-i18n'; import { useRequest } from 'vue-request'; + import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { getInfrasCities } from '@services/source/ticket'; - import type { TicketDetails } from '@services/types/ticket'; - import { useAffinity } from '../../../hooks/useAffinity'; - import SpecInfos from '../../SpecInfos.vue'; - import type { RedisHaApply } from '../common/types'; + import { TicketTypes } from '@common/const'; + + import { useAffinity } from '../../hooks/useAffinity'; import DemandInfo from '../components/DemandInfo.vue'; + import SpecInfos from '../components/SpecInfos.vue'; interface Props{ - ticketDetails: TicketDetails + ticketDetails: TicketModel } const props = defineProps(); + defineOptions({ + name: TicketTypes.REDIS_INS_APPLY, + inheritAttrs: false + }) + const { t } = useI18n(); const { affinity } = useAffinity(props.ticketDetails); diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InstanceDestroy.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InstanceDestroy.vue new file mode 100644 index 0000000000..a2c5d3a20a --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InstanceDestroy.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InstanceProxyClose.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InstanceProxyClose.vue new file mode 100644 index 0000000000..34e2b23b5d --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InstanceProxyClose.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InstanceProxyOpen.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InstanceProxyOpen.vue new file mode 100644 index 0000000000..08ae187d0f --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/InstanceProxyOpen.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/Operation.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/KeysDelete.vue similarity index 57% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/Operation.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/KeysDelete.vue index ab8e0843e5..dd6fd3c083 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/Operation.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/KeysDelete.vue @@ -21,19 +21,23 @@ import { computed } from 'vue'; import { useI18n } from 'vue-i18n'; - import type { RedisKeysDetails } from '@services/model/ticket/details/redis'; - import TicketModel from '@services/model/ticket/ticket'; + import TicketModel, { type Redis } from '@services/model/ticket/ticket'; import { TicketTypes } from '@common/const'; import { utcDisplayTime } from '@utils'; interface Props{ - ticketDetails: TicketModel + ticketDetails: TicketModel } const props = defineProps(); + defineOptions({ + name: TicketTypes.REDIS_KEYS_DELETE, + inheritAttrs: false + }) + const { t } = useI18n(); /** @@ -77,8 +81,7 @@ `, allowHTML: true, }}> - {data.domain}
- {data.name} + {data.domain} ), }, @@ -135,8 +138,7 @@ `, allowHTML: true, }}> - {data.domain}
- {data.name} + {data.domain} ), }, @@ -147,99 +149,12 @@ }, ]; - /** - * 备份的需求信息 - */ - const backupColumns = [ - { - label: t('域名'), - field: 'domain', - showOverflowTooltip: false, - render: ({ data } : { data: RedisAssign }) => ( -
${t('域名')}:${data.domain}

- ${data.name ? `

${('集群别名')}:${data.name}

` : null} - `, - allowHTML: true, - }}> - {data.domain}
- {data.name} -
- ), - }, - { - label: t('架构版本'), - field: 'cluster_type_name', - render: ({ cell }: { cell: string }) => {cell || '--'}, - }, - { - label: t('备份目标'), - field: 'target', - }, - { - label: t('备份类型'), - field: 'backup_type', - render: ({ cell }: { cell: 'normal_backup' | 'forever_backup' }) => { - const backupType = { - normal_backup: t('常规备份'), - forever_backup: t('长期备份'), - }; - return ( - {backupType[cell]} - ); - }, - }, - ]; - - // 清档 - const purgeColumns = [ - { - label: t('域名'), - field: 'domain', - showOverflowTooltip: false, - render: ({ data } : { data: RedisAssign }) => ( -
${t('域名')}:${data.domain}

- ${data.name ? `

${('集群别名')}:${data.name}

` : null} - `, - allowHTML: true, - }}> - {data.domain}
- {data.name} -
- ), - }, - { - label: t('架构版本'), - field: 'cluster_type_name', - render: ({ cell }: { cell: string }) => {cell || '--'}, - }, - { - label: t('强制清档'), - field: 'force', - render: ({ cell }: { cell: string }) => {cell ? t('是') : t('否')}, - }, - { - label: t('清档前备份'), - field: 'backup', - render: ({ cell }: { cell: string }) => {cell ? t('是') : t('否')}, - }, - ]; - const rederColumns = computed(() => { - if (props.ticketDetails?.ticket_type === TicketTypes.REDIS_BACKUP) { - return backupColumns; - } + if (props.ticketDetails?.details?.delete_type === 'files') { return fileColumns; } - if (props.ticketDetails?.ticket_type === TicketTypes.REDIS_PURGE) { - return purgeColumns; - } + return columns; }); @@ -250,16 +165,3 @@ return rules.map(item => Object.assign({ create_at: utcDisplayTime(createAt) }, item, clusters[item.cluster_id])); }); - - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/KeysExtract.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/KeysExtract.vue new file mode 100644 index 0000000000..cb4a34e054 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/KeysExtract.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/PluginDeleteClb.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/PluginDeleteClb.vue new file mode 100644 index 0000000000..e995d65354 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/PluginDeleteClb.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/PluginDnsBindClb.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/PluginDnsBindClb.vue new file mode 100644 index 0000000000..03fae8fc69 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/PluginDnsBindClb.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/PluginDnsUnbindClb.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/PluginDnsUnbindClb.vue new file mode 100644 index 0000000000..2a21a91b57 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/PluginDnsUnbindClb.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyClose.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyClose.vue new file mode 100644 index 0000000000..f591ad9d0a --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyClose.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyOpen.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyOpen.vue new file mode 100644 index 0000000000..125827e125 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyOpen.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyScaleDown.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyScaleDown.vue new file mode 100644 index 0000000000..ef7801b3f0 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyScaleDown.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/ProxyScaleUp.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyScaleUp.vue similarity index 72% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/ProxyScaleUp.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyScaleUp.vue index 7706a1d0a3..ef7837c666 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/ProxyScaleUp.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ProxyScaleUp.vue @@ -20,11 +20,12 @@ diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/Purge.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/Purge.vue new file mode 100644 index 0000000000..6fc70e0ae8 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/Purge.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/ClusterCapacityUpdate.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ScaleUpdown.vue similarity index 95% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/ClusterCapacityUpdate.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ScaleUpdown.vue index 339b8842ba..616330ce03 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/ClusterCapacityUpdate.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/ScaleUpdown.vue @@ -61,10 +61,11 @@ import { useRequest } from 'vue-request'; import RedisModel from '@services/model/redis/redis'; - import type { RedisScaleUpDownDetails } from '@services/model/ticket/details/redis'; - import TicketModel from '@services/model/ticket/ticket'; + import TicketModel, {type Redis} from '@services/model/ticket/ticket'; import { getRedisList } from '@services/source/redis'; + import { TicketTypes } from '@common/const'; + import RenderSpec from '@components/render-table/columns/spec-display/Index.vue'; import ClusterCapacityUsageRate from '@views/db-manage/common/cluster-capacity-usage-rate/Index.vue'; @@ -75,13 +76,18 @@ import TableGroupContent from '../components/TableGroupContent.vue' interface Props { - ticketDetails: TicketModel + ticketDetails: TicketModel } - type RowData = RedisModel & RedisScaleUpDownDetails['infos'][number] + type RowData = RedisModel & Props['ticketDetails']['details']['infos'][number] const props = defineProps(); + defineOptions({ + name: TicketTypes.REDIS_SCALE_UPDOWN, + inheritAttrs: false + }) + const { t } = useI18n(); const tableData = ref([]); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/VersionUpgrade.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/VersionUpdateOnline.vue similarity index 84% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/VersionUpgrade.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/VersionUpdateOnline.vue index ad29d1a9f5..82499ae4a1 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/VersionUpgrade.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/VersionUpdateOnline.vue @@ -20,19 +20,25 @@ - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/MasterFailover.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/masterSlaveSwitch.vue similarity index 89% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/MasterFailover.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/masterSlaveSwitch.vue index dd8896187e..d4e30b8e55 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/MasterFailover.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/masterSlaveSwitch.vue @@ -28,11 +28,12 @@ - - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/pluginCreateClb.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/pluginCreateClb.vue new file mode 100644 index 0000000000..40d2787c10 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/redis/pluginCreateClb.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/bigdata/DetailsRiak.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Apply.vue similarity index 89% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/bigdata/DetailsRiak.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Apply.vue index defe0fb500..6ac1265e28 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/bigdata/DetailsRiak.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Apply.vue @@ -116,39 +116,26 @@ - - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Destroy.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Destroy.vue new file mode 100644 index 0000000000..a863d383dd --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Destroy.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Disable.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Disable.vue new file mode 100644 index 0000000000..b4c11038f5 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Disable.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Enable.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Enable.vue new file mode 100644 index 0000000000..73e4240d78 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Enable.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/bigdata/RiakReboot.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Reboot.vue similarity index 75% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/bigdata/RiakReboot.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Reboot.vue index 215ce14e6e..850d2fe6d0 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/bigdata/RiakReboot.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/Reboot.vue @@ -20,25 +20,23 @@ - - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/ScaleIn.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/ScaleIn.vue new file mode 100644 index 0000000000..cfb1ba6e2f --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/ScaleIn.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/ScaleOut.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/ScaleOut.vue new file mode 100644 index 0000000000..47708062b6 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/ScaleOut.vue @@ -0,0 +1,34 @@ + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/bigdata/RiakExpansionCapacity.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/common/ScaleIn&ScaleOut.vue similarity index 87% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/bigdata/RiakExpansionCapacity.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/common/ScaleIn&ScaleOut.vue index 2ed560a7c8..1c5811db19 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/bigdata/RiakExpansionCapacity.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/riak/common/ScaleIn&ScaleOut.vue @@ -60,33 +60,11 @@ import { useI18n } from 'vue-i18n'; import { useRequest } from 'vue-request'; + import TicketModel, { type Riak } from '@services/model/ticket/ticket'; import { getResourceSpecList } from '@services/source/dbresourceSpec'; - import type { - clustersItems, - TicketDetails, - } from '@services/types/ticket'; interface Props { - ticketDetails: TicketDetails<{ - clusters: clustersItems - cluster_id: number, - ip_source: 'manual_input' | 'resource_pool', - resource_spec: { - riak: { - count: number, - spec_id: number - } - }, - nodes?: { - riak: Array<{ - bk_cloud_id: number - bk_host_id: number - ip: string, - alive: number, - bk_disk: number, - }> - } - }> + ticketDetails: TicketModel } const props = defineProps(); @@ -143,7 +121,3 @@ }, }); - - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/spider/AuthorizeRules.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/spider/AuthorizeRules.vue deleted file mode 100644 index a1e7ea2b03..0000000000 --- a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/spider/AuthorizeRules.vue +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/AddSlave.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/AddSlave.vue similarity index 98% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/AddSlave.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/AddSlave.vue index 7c33155cab..f7bef99aa7 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/AddSlave.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/AddSlave.vue @@ -47,6 +47,7 @@ defineOptions({ name: TicketTypes.SQLSERVER_ADD_SLAVE, + inheritAttrs: false, }); const { t } = useI18n(); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/AuthorizeRules.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/AuthorizeRules.vue similarity index 99% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/AuthorizeRules.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/AuthorizeRules.vue index 6f6fed568d..5528a01673 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/AuthorizeRules.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/AuthorizeRules.vue @@ -43,6 +43,7 @@ const props = defineProps(); defineOptions({ name: TicketTypes.SQLSERVER_AUTHORIZE_RULES, + inheritAttrs: false, }); const { t } = useI18n(); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/BackupDbs.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/BackupDbs.vue similarity index 95% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/BackupDbs.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/BackupDbs.vue index 24e1d4c950..68f3e726b5 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/BackupDbs.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/BackupDbs.vue @@ -67,9 +67,7 @@ import { TicketTypes } from '@common/const'; - import InfoList, { - Item as InfoItem, - } from '@views/tickets/common/components/demand-factory/components/info-list/Index.vue'; + import InfoList, { Item as InfoItem } from '../components/info-list/Index.vue'; interface Props { ticketDetails: TicketModel; @@ -80,6 +78,7 @@ defineProps(); defineOptions({ name: TicketTypes.SQLSERVER_BACKUP_DBS, + inheritAttrs: false, }); const { t } = useI18n(); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/BuildDbSync.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/BuildDbSync.vue similarity index 98% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/BuildDbSync.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/BuildDbSync.vue index cfa988a024..20b4dfd242 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/BuildDbSync.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/BuildDbSync.vue @@ -48,6 +48,7 @@ defineProps(); defineOptions({ name: TicketTypes.SQLSERVER_BUILD_DB_SYNC, + inheritAttrs: false, }); const { t } = useI18n(); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ClearDbs.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ClearDbs.vue similarity index 99% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ClearDbs.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ClearDbs.vue index de3ee8051e..1f13677728 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ClearDbs.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ClearDbs.vue @@ -93,6 +93,7 @@ defineOptions({ name: TicketTypes.SQLSERVER_CLEAR_DBS, + inheritAttrs: false, }); const { t } = useI18n(); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ClusterDestroy.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ClusterDestroy.vue similarity index 97% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ClusterDestroy.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ClusterDestroy.vue index 9f04042c9a..c803a73f63 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ClusterDestroy.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ClusterDestroy.vue @@ -30,5 +30,6 @@ defineOptions({ name: TicketTypes.SQLSERVER_DESTROY, + inheritAttrs: false, }); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ClusterDisable.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ClusterDisable.vue similarity index 97% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ClusterDisable.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ClusterDisable.vue index 3fe91a4be8..bfccaabb7a 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ClusterDisable.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ClusterDisable.vue @@ -30,5 +30,6 @@ defineOptions({ name: TicketTypes.SQLSERVER_DISABLE, + inheritAttrs: false, }); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ClusterEnable.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ClusterEnable.vue similarity index 97% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ClusterEnable.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ClusterEnable.vue index 15093fa220..454c2a20a1 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ClusterEnable.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ClusterEnable.vue @@ -30,5 +30,6 @@ defineOptions({ name: TicketTypes.SQLSERVER_ENABLE, + inheritAttrs: false, }); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/DataMigrate.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/DataMigrate.vue similarity index 99% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/DataMigrate.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/DataMigrate.vue index 2e2e09e317..f22c15950d 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/DataMigrate.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/DataMigrate.vue @@ -71,6 +71,7 @@ defineOptions({ name: TicketTypes.SQLSERVER_DATA_MIGRATE, + inheritAttrs: false, }); const { t } = useI18n(); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/DbRename.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/DbRename.vue similarity index 98% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/DbRename.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/DbRename.vue index 71565aad03..7ee9f1f98b 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/DbRename.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/DbRename.vue @@ -54,6 +54,7 @@ defineProps(); defineOptions({ name: TicketTypes.SQLSERVER_DBRENAME, + inheritAttrs: false, }); const { t } = useI18n(); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/HaApply.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/HaApply.vue similarity index 95% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/HaApply.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/HaApply.vue index 9e5f5e1320..9a7175b559 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/HaApply.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/HaApply.vue @@ -28,11 +28,11 @@ import PreviewTable from '@views/db-manage/sqlserver/apply/components/PreviewTable.vue'; - import { useAffinity } from '../../../hooks/useAffinity'; - import SpecInfos from '../../SpecInfos.vue'; + import { useAffinity } from '../../hooks/useAffinity'; import DemandInfo, { type DemandInfoConfig, } from '../components/DemandInfo.vue'; + import SpecInfos from '../components/SpecInfos.vue'; interface Props { ticketDetails: TicketModel; @@ -41,7 +41,8 @@ const props = defineProps(); defineOptions({ - name: TicketTypes.SQLSERVER_HA_APPLY + name: TicketTypes.SQLSERVER_HA_APPLY, + inheritAttrs: false }) const { t } = useI18n(); @@ -191,7 +192,3 @@ }, }); - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ImportSqlfile.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ImportSqlfile.vue similarity index 92% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ImportSqlfile.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ImportSqlfile.vue index 90ea4024f4..221410ac17 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/ImportSqlfile.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/ImportSqlfile.vue @@ -20,7 +20,7 @@ import { TicketTypes } from '@common/const'; - import ImportSqlfile from '../components/import-sqlfile/Index.vue'; + import ImportSqlfile from '../common/mysql-import-sqlfile/Index.vue'; interface Props { ticketDetails: TicketModel; @@ -30,5 +30,6 @@ defineOptions({ name: TicketTypes.SQLSERVER_IMPORT_SQLFILE, + inheritAttrs: false, }); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/MasterFailOver.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/MasterFailOver.vue similarity index 98% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/MasterFailOver.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/MasterFailOver.vue index aaf6131b86..c41f499b01 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/MasterFailOver.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/MasterFailOver.vue @@ -53,6 +53,7 @@ defineOptions({ name: TicketTypes.SQLSERVER_MASTER_FAIL_OVER, + inheritAttrs: false, }); const { t } = useI18n(); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/MasterSlaveSwitch.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/MasterSlaveSwitch.vue similarity index 98% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/MasterSlaveSwitch.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/MasterSlaveSwitch.vue index 50d62f8ba2..837a30002c 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/MasterSlaveSwitch.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/MasterSlaveSwitch.vue @@ -53,6 +53,7 @@ defineOptions({ name: TicketTypes.SQLSERVER_MASTER_SLAVE_SWITCH, + inheritAttrs: false, }); const { t } = useI18n(); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/Reset.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/Reset.vue similarity index 98% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/Reset.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/Reset.vue index 37a1bc3b83..4b8f0e2ab2 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/Reset.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/Reset.vue @@ -43,6 +43,7 @@ defineOptions({ name: TicketTypes.SQLSERVER_RESET, + inheritAttrs: false, }); const { t } = useI18n(); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/RestoreLocalSlave.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/RestoreLocalSlave.vue similarity index 98% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/RestoreLocalSlave.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/RestoreLocalSlave.vue index ac2500d17d..d2c37a0cd7 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/RestoreLocalSlave.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/RestoreLocalSlave.vue @@ -45,6 +45,7 @@ defineOptions({ name: TicketTypes.SQLSERVER_RESTORE_LOCAL_SLAVE, + inheritAttrs: false, }); const { t } = useI18n(); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/RestoreSlave.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/RestoreSlave.vue similarity index 98% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/RestoreSlave.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/RestoreSlave.vue index 6a3bcb6c6b..25b20f2f41 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/RestoreSlave.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/RestoreSlave.vue @@ -51,6 +51,7 @@ defineOptions({ name: TicketTypes.SQLSERVER_RESTORE_SLAVE, + inheritAttrs: false, }); const { t } = useI18n(); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/Rollback.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/Rollback.vue similarity index 96% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/Rollback.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/Rollback.vue index 40290e1be3..c7bd13df35 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/Rollback.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/Rollback.vue @@ -84,9 +84,7 @@ import { TicketTypes } from '@common/const'; - import InfoList, { - Item as InfoItem, - } from '@views/tickets/common/components/demand-factory/components/info-list/Index.vue'; + import InfoList, { Item as InfoItem } from '../components/info-list/Index.vue'; interface Props { ticketDetails: TicketModel; @@ -98,6 +96,7 @@ defineOptions({ name: TicketTypes.SQLSERVER_ROLLBACK, + inheritAttrs: false, }); const { t } = useI18n(); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/SingleApply.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/SingleApply.vue similarity index 96% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/SingleApply.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/SingleApply.vue index c5d5da6556..838e1b304a 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/SingleApply.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/SingleApply.vue @@ -28,10 +28,10 @@ import PreviewTable from '@views/db-manage/sqlserver/apply/components/PreviewTable.vue'; - import SpecInfos from '../../SpecInfos.vue'; import DemandInfo, { type DemandInfoConfig, } from '../components/DemandInfo.vue'; + import SpecInfos from '../components/SpecInfos.vue'; interface Props { ticketDetails: TicketModel; @@ -40,7 +40,8 @@ const props = defineProps(); defineOptions({ - name: TicketTypes.SQLSERVER_SINGLE_APPLY + name: TicketTypes.SQLSERVER_SINGLE_APPLY, + inheritAttrs: false }) const { t } = useI18n(); @@ -173,7 +174,3 @@ }, }); - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/common/DataMigrate.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/common/DataMigrate.vue similarity index 95% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/common/DataMigrate.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/common/DataMigrate.vue index e6eb438237..cf69514f9a 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/common/DataMigrate.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/common/DataMigrate.vue @@ -66,9 +66,7 @@ import TicketModel, { type Sqlserver } from '@services/model/ticket/ticket'; - import InfoList, { - Item as InfoItem, - } from '@views/tickets/common/components/demand-factory/components/info-list/Index.vue'; + import InfoList, { Item as InfoItem } from '../../components/info-list/Index.vue'; interface Props { ticketDetails: TicketModel; diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/common/Disabled&enable&destroy.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/common/Disabled&enable&destroy.vue similarity index 100% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/common/Disabled&enable&destroy.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/common/Disabled&enable&destroy.vue diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/fullMigrate.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/fullMigrate.vue similarity index 97% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/fullMigrate.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/fullMigrate.vue index 0a67b50223..f1dbe9769d 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/fullMigrate.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/fullMigrate.vue @@ -29,5 +29,6 @@ defineOptions({ name: TicketTypes.SQLSERVER_FULL_MIGRATE, + inheritAttrs: false, }); diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/incrMigrate.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/incrMigrate.vue similarity index 97% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/incrMigrate.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/incrMigrate.vue index b4fb4cf2f0..9391182c5d 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/incrMigrate.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/sqlserver/incrMigrate.vue @@ -29,5 +29,6 @@ defineOptions({ name: TicketTypes.SQLSERVER_INCR_MIGRATE, + inheritAttrs: false, }); diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/AccountRuleChange.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/AccountRuleChange.vue new file mode 100644 index 0000000000..5b17ed344f --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/AccountRuleChange.vue @@ -0,0 +1,21 @@ + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Details.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Apply.vue similarity index 93% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Details.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Apply.vue index 76e635ddec..b7bf5219a9 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Details.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Apply.vue @@ -103,19 +103,25 @@ import { useRequest } from 'vue-request'; import ClusterSpecModel from '@services/model/resource-spec/cluster-sepc'; - import type { SpiderApplyDetails } from '@services/model/ticket/details/spider'; + import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getInfrasCities } from '@services/source/infras'; - import type { TicketDetails } from '@services/types/ticket'; - import { useAffinity } from '../../../hooks/useAffinity'; - import SpecInfos from '../../SpecInfos.vue'; + import { TicketTypes } from '@common/const'; + + import { useAffinity } from '../../hooks/useAffinity'; + import SpecInfos from '../components/SpecInfos.vue'; interface Props { - ticketDetails: TicketDetails; + ticketDetails: TicketModel; } const props = defineProps(); + defineOptions({ + name: TicketTypes.TENDBCLUSTER_APPLY, + inheritAttrs: false, + }); + const { t } = useI18n(); const { affinity } = useAffinity(props.ticketDetails); @@ -160,7 +166,3 @@ }, }); - - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/AuthorizeRule.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/AuthorizeRule.vue new file mode 100644 index 0000000000..7f0a662b56 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/AuthorizeRule.vue @@ -0,0 +1,21 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/CheckSum.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/CheckSum.vue new file mode 100644 index 0000000000..fce8ea9d6e --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/CheckSum.vue @@ -0,0 +1,178 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/ClientCloneRules.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/ClientCloneRules.vue new file mode 100644 index 0000000000..6daf884672 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/ClientCloneRules.vue @@ -0,0 +1,73 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/DBTableBackup.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/DBTableBackup.vue new file mode 100644 index 0000000000..cdadaf02cd --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/DBTableBackup.vue @@ -0,0 +1,89 @@ + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Destroy.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Destroy.vue similarity index 89% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Destroy.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Destroy.vue index 14309ded90..26bfa675c7 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Destroy.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Destroy.vue @@ -29,12 +29,13 @@ import { useI18n } from 'vue-i18n'; import { useRequest } from 'vue-request'; - import type { SpiderDestroyDetails } from '@services/model/ticket/details/spider'; - import TicketModel from '@services/model/ticket/ticket'; + import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbclusterListByBizId } from '@services/source/tendbcluster'; + import { TicketTypes } from '@common/const'; + interface Props { - ticketDetails: TicketModel; + ticketDetails: TicketModel; } interface RowData { @@ -43,6 +44,11 @@ const props = defineProps(); + defineOptions({ + name: TicketTypes.TENDBCLUSTER_DESTROY, + inheritAttrs: false, + }); + const { t } = useI18n(); // eslint-disable-next-line vue/no-setup-props-destructure @@ -83,6 +89,3 @@ }, }); - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Disable.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Disable.vue similarity index 88% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Disable.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Disable.vue index bb4056ec71..6f30b38dbc 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Disable.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Disable.vue @@ -23,12 +23,13 @@ import { useI18n } from 'vue-i18n'; import { useRequest } from 'vue-request'; - import type { SpiderDisableDetails } from '@services/model/ticket/details/spider'; - import TicketModel from '@services/model/ticket/ticket'; + import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbclusterListByBizId } from '@services/source/tendbcluster'; + import { TicketTypes } from '@common/const'; + interface Props { - ticketDetails: TicketModel; + ticketDetails: TicketModel; } interface RowData { @@ -37,6 +38,11 @@ const props = defineProps(); + defineOptions({ + name: TicketTypes.TENDBCLUSTER_DISABLE, + inheritAttrs: false, + }); + const { t } = useI18n(); // eslint-disable-next-line vue/no-setup-props-destructure @@ -80,6 +86,3 @@ }, }); - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/DumpData.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/DumpData.vue new file mode 100644 index 0000000000..ef564a2c65 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/DumpData.vue @@ -0,0 +1,21 @@ + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Enable.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Enable.vue similarity index 89% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Enable.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Enable.vue index 06274817c1..667e3f7a3c 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Enable.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Enable.vue @@ -29,12 +29,13 @@ import { useI18n } from 'vue-i18n'; import { useRequest } from 'vue-request'; - import type { SpiderEnableDetails } from '@services/model/ticket/details/spider'; - import TicketModel from '@services/model/ticket/ticket'; + import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbclusterListByBizId } from '@services/source/tendbcluster'; + import { TicketTypes } from '@common/const'; + interface Props { - ticketDetails: TicketModel; + ticketDetails: TicketModel; } interface RowData { @@ -43,6 +44,11 @@ const props = defineProps(); + defineOptions({ + name: TicketTypes.TENDBCLUSTER_ENABLE, + inheritAttrs: false, + }); + const { t } = useI18n(); // eslint-disable-next-line vue/no-setup-props-destructure @@ -83,6 +89,3 @@ }, }); - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/ExcelAuthrizeRule.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/ExcelAuthrizeRule.vue new file mode 100644 index 0000000000..3cf77bb198 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/ExcelAuthrizeRule.vue @@ -0,0 +1,21 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Flashback.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Flashback.vue new file mode 100644 index 0000000000..d8ac3436ed --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Flashback.vue @@ -0,0 +1,96 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/FullBackup.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/FullBackup.vue new file mode 100644 index 0000000000..a9b1fa6eb2 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/FullBackup.vue @@ -0,0 +1,86 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/ImportSqlfile.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/ImportSqlfile.vue new file mode 100644 index 0000000000..5c56b78887 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/ImportSqlfile.vue @@ -0,0 +1,21 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/InstanceCloneRules.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/InstanceCloneRules.vue new file mode 100644 index 0000000000..3e53893e15 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/InstanceCloneRules.vue @@ -0,0 +1,54 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/MasterFailOver.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/MasterFailOver.vue new file mode 100644 index 0000000000..5e967a621b --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/MasterFailOver.vue @@ -0,0 +1,67 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/MasterSlaveSwitch.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/MasterSlaveSwitch.vue new file mode 100644 index 0000000000..a098039e5d --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/MasterSlaveSwitch.vue @@ -0,0 +1,67 @@ + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MigrateCluster.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/MigrateCluster.vue similarity index 92% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MigrateCluster.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/MigrateCluster.vue index 0554aa575a..ffe0d3b15e 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MigrateCluster.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/MigrateCluster.vue @@ -26,12 +26,14 @@ - - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/NodeRebalance.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/NodeRebalance.vue new file mode 100644 index 0000000000..1280d9e164 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/NodeRebalance.vue @@ -0,0 +1,159 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/OpenArea.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/OpenArea.vue new file mode 100644 index 0000000000..d149794761 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/OpenArea.vue @@ -0,0 +1,21 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Partition.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Partition.vue new file mode 100644 index 0000000000..cff0bf5777 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/Partition.vue @@ -0,0 +1,21 @@ + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/RenameDatabase.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/RenameDataBase.vue similarity index 69% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/RenameDatabase.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/RenameDataBase.vue index b29555a2f5..af1cb7a184 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/RenameDatabase.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/RenameDataBase.vue @@ -13,54 +13,55 @@ - - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/RestoreSlave.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/RestoreSlave.vue new file mode 100644 index 0000000000..ef4974e33e --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/RestoreSlave.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderAddNodes.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderAddNodes.vue new file mode 100644 index 0000000000..4302250f8e --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderAddNodes.vue @@ -0,0 +1,129 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderMntApply.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderMntApply.vue new file mode 100644 index 0000000000..801e26763a --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderMntApply.vue @@ -0,0 +1,54 @@ + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MNTDestroy.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderMntDestroy.vue similarity index 89% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MNTDestroy.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderMntDestroy.vue index 76d815dd6c..2dd02d1e63 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MNTDestroy.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderMntDestroy.vue @@ -23,12 +23,13 @@ import { useI18n } from 'vue-i18n'; import { useRequest } from 'vue-request'; - import type { SpiderMNTDestroyDetails } from '@services/model/ticket/details/spider'; - import TicketModel from '@services/model/ticket/ticket'; + import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbclusterListByBizId } from '@services/source/tendbcluster'; + import { TicketTypes } from '@common/const'; + interface Props { - ticketDetails: TicketModel; + ticketDetails: TicketModel; } interface RowData { @@ -38,6 +39,11 @@ const props = defineProps(); + defineOptions({ + name: TicketTypes.TENDBCLUSTER_SPIDER_MNT_DESTROY, + inheritAttrs: false, + }); + const { t } = useI18n(); // eslint-disable-next-line vue/no-setup-props-destructure diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderReduceNodes.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderReduceNodes.vue new file mode 100644 index 0000000000..c4cd02cb62 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderReduceNodes.vue @@ -0,0 +1,132 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderSlaveApply.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderSlaveApply.vue new file mode 100644 index 0000000000..d8892be806 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderSlaveApply.vue @@ -0,0 +1,119 @@ + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/SlaveDestroy.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderSlaveDestroy.vue similarity index 88% rename from dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/SlaveDestroy.vue rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderSlaveDestroy.vue index d5429a105a..30b84e6ac7 100644 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/SlaveDestroy.vue +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/SpiderSlaveDestroy.vue @@ -29,12 +29,13 @@ import { useI18n } from 'vue-i18n'; import { useRequest } from 'vue-request'; - import type { SpiderSlaveDestroyDetails } from '@services/model/ticket/details/spider'; - import TicketModel from '@services/model/ticket/ticket'; + import TicketModel, { type TendbCluster } from '@services/model/ticket/ticket'; import { getTendbclusterListByBizId } from '@services/source/tendbcluster'; + import { TicketTypes } from '@common/const'; + interface Props { - ticketDetails: TicketModel; + ticketDetails: TicketModel; } interface RowData { @@ -43,6 +44,11 @@ const props = defineProps(); + defineOptions({ + name: TicketTypes.TENDBCLUSTER_SPIDER_SLAVE_DESTROY, + inheritAttrs: false, + }); + const { t } = useI18n(); // eslint-disable-next-line vue/no-setup-props-destructure @@ -83,6 +89,3 @@ }, }); - diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/TruncateDatabase.vue b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/TruncateDatabase.vue new file mode 100644 index 0000000000..7c24c07dae --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/com-factory/tendbCluster/TruncateDatabase.vue @@ -0,0 +1,145 @@ + + + + diff --git a/dbm-ui/frontend/src/views/tickets/common/hooks/logCounts.ts b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/hooks/logCounts.ts similarity index 100% rename from dbm-ui/frontend/src/views/tickets/common/hooks/logCounts.ts rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/hooks/logCounts.ts diff --git a/dbm-ui/frontend/src/views/tickets/common/hooks/useAffinity.ts b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/hooks/useAffinity.ts similarity index 100% rename from dbm-ui/frontend/src/views/tickets/common/hooks/useAffinity.ts rename to dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/hooks/useAffinity.ts diff --git a/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/hooks/useTargetClusterData.ts b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/hooks/useTargetClusterData.ts new file mode 100644 index 0000000000..a6136c3517 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/common/ticket-detail/components/task-info/hooks/useTargetClusterData.ts @@ -0,0 +1,143 @@ +/* + * TencentBlueKing is pleased to support the open source community by making 蓝鲸智云-DB管理系统(BlueKing-BK-DBM) available. + * + * Copyright (C) 2017-2023 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at https://opensource.org/licenses/MIT + * + * 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 type { ISearchValue } from 'bkui-vue/lib/search-select/utils'; +import { useI18n } from 'vue-i18n'; + +import TicketModel, { type Mysql } from '@services/model/ticket/ticket'; +import { getTendbclusterListByBizId } from '@services/source/tendbcluster'; +import { getTendbhaListByBizId } from '@services/source/tendbha'; +import { getTendbsingleListByBizId } from '@services/source/tendbsingle'; + +import { useDefaultPagination } from '@hooks'; + +import { ClusterTypes, DBTypes } from '@common/const'; + +import { getSearchSelectorParams } from '@utils'; + +export function useTargetClusterData(ticketDetails: TicketModel) { + const { t } = useI18n(); + const apiMap = { + [ClusterTypes.TENDBSINGLE]: getTendbsingleListByBizId, + [ClusterTypes.TENDBHA]: getTendbhaListByBizId, + [ClusterTypes.TENDBCLUSTER]: getTendbclusterListByBizId, + }; + + const listState = reactive({ + isAnomalies: false, + isLoading: false, + data: [] as { + master_domain: string; + cluster_name: string; + db_module_name: string; + status: string; + }[], + pagination: useDefaultPagination(), + filters: { + search: [] as ISearchValue[], + }, + dbModuleList: [] as { + id: number | string; + name: string; + }[], + }); + + /** + * search select 过滤参数 + */ + const searchSelectData = computed(() => [ + { + name: t('域名'), + id: 'domain', + }, + { + name: t('集群'), + id: 'cluster_name', + }, + { + name: t('所属DB模块'), + id: 'db_module_id', + children: listState.dbModuleList, + }, + ]); + + /** + * 获取目标集群列表 + */ + const fetchCluster = () => { + const type = ticketDetails?.details?.authorize_data?.cluster_type as keyof typeof apiMap; + + if (!apiMap[type]) { + return; + } + + const params = { + dbType: DBTypes.MYSQL, + bk_biz_id: ticketDetails.bk_biz_id, + type, + cluster_ids: ticketDetails.details.authorize_data?.cluster_ids, + ...listState.pagination.getFetchParams(), + ...getSearchSelectorParams(listState.filters.search), + }; + listState.isLoading = true; + + apiMap[type](params) + .then((res) => { + listState.pagination.count = res.count; + listState.data = res.results; + listState.isAnomalies = false; + }) + .catch(() => { + listState.pagination.count = 0; + listState.data = []; + listState.isAnomalies = true; + }) + .finally(() => { + listState.isLoading = false; + }); + }; + + /** + * change page + */ + const handleChangePage = (value: number) => { + listState.pagination.current = value; + fetchCluster(); + }; + + /** + * change limit + */ + const handeChangeLimit = (value: number) => { + listState.pagination.limit = value; + handleChangePage(1); + }; + + /** + * change filter search values + */ + const handleChangeValues = () => { + nextTick(() => { + handleChangePage(1); + }); + }; + + return { + listState, + searchSelectData, + fetchCluster, + handleChangePage, + handeChangeLimit, + handleChangeValues, + }; +} diff --git a/dbm-ui/frontend/src/views/ticket-center/detail-page/Index.vue b/dbm-ui/frontend/src/views/ticket-center/detail-page/Index.vue new file mode 100644 index 0000000000..37209e4a84 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/detail-page/Index.vue @@ -0,0 +1,12 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/routes.ts b/dbm-ui/frontend/src/views/ticket-center/routes.ts new file mode 100644 index 0000000000..456374fbea --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/routes.ts @@ -0,0 +1,65 @@ +import { registerBusinessModule, registerModule } from '@router'; + +import { t } from '@locales/index'; + +export default () => { + registerModule([ + { + name: 'SelfServiceMyTickets', + path: 'ticket-self-apply/:ticketId?', + meta: { + navName: t('我的申请'), + fullscreen: true, + }, + component: () => import('@views/ticket-center/self-apply/Index.vue'), + }, + { + name: 'MyTodos', + path: 'ticket-self-todo/:status?/:ticketId?', + meta: { + navName: t('我的待办'), + fullscreen: true, + }, + component: () => import('@views/ticket-center/self-todo/Index.vue'), + }, + { + name: 'ticketSelfDone', + path: 'ticket-self-done/:ticketId?', + meta: { + navName: t('我的已办'), + fullscreen: true, + }, + component: () => import('@views/ticket-center/self-done/Index.vue'), + }, + { + name: 'ticketSelfManage', + path: 'ticket-self-manage/:ticketId?', + meta: { + navName: t('我负责的业务'), + fullscreen: true, + }, + component: () => import('@views/ticket-center/self-manage/Index.vue'), + }, + { + name: 'ticketDetail', + path: 'ticket/:ticketId?', + meta: { + navName: t('单据详情'), + fullscreen: true, + }, + component: () => import('@views/ticket-center/detail-page/Index.vue'), + }, + ]); + + registerBusinessModule([ + { + name: 'bizTicketManage', + path: 'ticket-manage/:ticketId?', + meta: { + navName: t('单据'), + fullscreen: true, + }, + component: () => import('@views/ticket-center/business/Index.vue'), + }, + ]); +}; diff --git a/dbm-ui/frontend/src/views/ticket-center/self-apply/Index.vue b/dbm-ui/frontend/src/views/ticket-center/self-apply/Index.vue new file mode 100644 index 0000000000..d18307da64 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-apply/Index.vue @@ -0,0 +1,69 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-apply/components/list/Index.vue b/dbm-ui/frontend/src/views/ticket-center/self-apply/components/list/Index.vue new file mode 100644 index 0000000000..fdca155bcf --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-apply/components/list/Index.vue @@ -0,0 +1,30 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-apply/components/list/components/CardMode.vue b/dbm-ui/frontend/src/views/ticket-center/self-apply/components/list/components/CardMode.vue new file mode 100644 index 0000000000..e0facefd5d --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-apply/components/list/components/CardMode.vue @@ -0,0 +1,50 @@ + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-apply/components/list/components/TableMode.vue b/dbm-ui/frontend/src/views/ticket-center/self-apply/components/list/components/TableMode.vue new file mode 100644 index 0000000000..b7a5fdbe94 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-apply/components/list/components/TableMode.vue @@ -0,0 +1,141 @@ + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-done/Index.vue b/dbm-ui/frontend/src/views/ticket-center/self-done/Index.vue new file mode 100644 index 0000000000..d18307da64 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-done/Index.vue @@ -0,0 +1,69 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-done/components/list/Index.vue b/dbm-ui/frontend/src/views/ticket-center/self-done/components/list/Index.vue new file mode 100644 index 0000000000..fdca155bcf --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-done/components/list/Index.vue @@ -0,0 +1,30 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-done/components/list/components/CardMode.vue b/dbm-ui/frontend/src/views/ticket-center/self-done/components/list/components/CardMode.vue new file mode 100644 index 0000000000..c31c69baf8 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-done/components/list/components/CardMode.vue @@ -0,0 +1,56 @@ + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-done/components/list/components/TableMode.vue b/dbm-ui/frontend/src/views/ticket-center/self-done/components/list/components/TableMode.vue new file mode 100644 index 0000000000..5ebf064610 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-done/components/list/components/TableMode.vue @@ -0,0 +1,135 @@ + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-manage/Index.vue b/dbm-ui/frontend/src/views/ticket-center/self-manage/Index.vue new file mode 100644 index 0000000000..d18307da64 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-manage/Index.vue @@ -0,0 +1,69 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-manage/components/list/Index.vue b/dbm-ui/frontend/src/views/ticket-center/self-manage/components/list/Index.vue new file mode 100644 index 0000000000..fdca155bcf --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-manage/components/list/Index.vue @@ -0,0 +1,30 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-manage/components/list/components/CardMode.vue b/dbm-ui/frontend/src/views/ticket-center/self-manage/components/list/components/CardMode.vue new file mode 100644 index 0000000000..e0facefd5d --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-manage/components/list/components/CardMode.vue @@ -0,0 +1,50 @@ + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-manage/components/list/components/TableMode.vue b/dbm-ui/frontend/src/views/ticket-center/self-manage/components/list/components/TableMode.vue new file mode 100644 index 0000000000..007e51076d --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-manage/components/list/components/TableMode.vue @@ -0,0 +1,129 @@ + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/Index.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/Index.vue new file mode 100644 index 0000000000..d18307da64 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/Index.vue @@ -0,0 +1,69 @@ + + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/Index.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/Index.vue new file mode 100644 index 0000000000..fdca155bcf --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/Index.vue @@ -0,0 +1,30 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/CardMode.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/CardMode.vue new file mode 100644 index 0000000000..e04debf29a --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/CardMode.vue @@ -0,0 +1,119 @@ + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/TableMode.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/TableMode.vue new file mode 100644 index 0000000000..73c3ccdd35 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/TableMode.vue @@ -0,0 +1,196 @@ + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/Index.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/Index.vue new file mode 100644 index 0000000000..e3ac328c2f --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/Index.vue @@ -0,0 +1,144 @@ + + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/StatusApproveAction.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/StatusApproveAction.vue new file mode 100644 index 0000000000..27aef11fd2 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/StatusApproveAction.vue @@ -0,0 +1,35 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/StatusResourceReplenishAction.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/StatusResourceReplenishAction.vue new file mode 100644 index 0000000000..d11dce0962 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/StatusResourceReplenishAction.vue @@ -0,0 +1,35 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/StatusTodoAction.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/StatusTodoAction.vue new file mode 100644 index 0000000000..49c4828f6c --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/batch-operation/StatusTodoAction.vue @@ -0,0 +1,35 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/Index.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/Index.vue new file mode 100644 index 0000000000..80f1881527 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/Index.vue @@ -0,0 +1,31 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusApprove.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusApprove.vue new file mode 100644 index 0000000000..22e2114160 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusApprove.vue @@ -0,0 +1,49 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusFailed.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusFailed.vue new file mode 100644 index 0000000000..0ae663ab0f --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusFailed.vue @@ -0,0 +1,71 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusResourceReplenish.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusResourceReplenish.vue new file mode 100644 index 0000000000..31649166fb --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusResourceReplenish.vue @@ -0,0 +1,49 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusRunning.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusRunning.vue new file mode 100644 index 0000000000..656532a0e5 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusRunning.vue @@ -0,0 +1,71 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusTodo.vue b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusTodo.vue new file mode 100644 index 0000000000..6a2ecf3296 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/components/row-action/StatusTodo.vue @@ -0,0 +1,49 @@ + + diff --git a/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/hooks/useStatusList.ts b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/hooks/useStatusList.ts new file mode 100644 index 0000000000..4b6e62c199 --- /dev/null +++ b/dbm-ui/frontend/src/views/ticket-center/self-todo/components/list/components/hooks/useStatusList.ts @@ -0,0 +1,34 @@ +import { computed } from 'vue'; +import { useI18n } from 'vue-i18n'; + +import TicketModel from '@services/model/ticket/ticket'; + +import { useTicketCount } from '@hooks'; + +export default () => { + const { t } = useI18n(); + const { data: ticketCount } = useTicketCount(); + + return computed(() => [ + { + id: TicketModel.STATUS_APPROVE, + name: `${t('待审批')}(${ticketCount.value.APPROVE})`, + }, + { + id: TicketModel.STATUS_TODO, + name: `${t('待执行')}(${ticketCount.value.TODO})`, + }, + { + id: TicketModel.STATUS_RESOURCE_REPLENISH, + name: `${t('待补货')}(${ticketCount.value.RESOURCE_REPLENISH})`, + }, + { + id: TicketModel.STATUS_FAILED, + name: `${t('失败待处理')}(${ticketCount.value.FAILED})`, + }, + { + id: TicketModel.STATUS_RUNNING, + name: `${t('待继续')}(${ticketCount.value.RUNNING})`, + }, + ]); +}; diff --git a/dbm-ui/frontend/src/views/ticket-manage/Index.vue b/dbm-ui/frontend/src/views/ticket-manage/Index.vue deleted file mode 100644 index 7c2aa3f3e1..0000000000 --- a/dbm-ui/frontend/src/views/ticket-manage/Index.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/dbm-ui/frontend/src/views/ticket-manage/list/Index.vue b/dbm-ui/frontend/src/views/ticket-manage/list/Index.vue deleted file mode 100644 index 3c07d5974c..0000000000 --- a/dbm-ui/frontend/src/views/ticket-manage/list/Index.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - diff --git a/dbm-ui/frontend/src/views/ticket-manage/list/components/detail/Index.vue b/dbm-ui/frontend/src/views/ticket-manage/list/components/detail/Index.vue deleted file mode 100644 index c27b7841be..0000000000 --- a/dbm-ui/frontend/src/views/ticket-manage/list/components/detail/Index.vue +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - diff --git a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/Index.vue b/dbm-ui/frontend/src/views/ticket-manage/list/components/list/Index.vue deleted file mode 100644 index 53caa55a4c..0000000000 --- a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/Index.vue +++ /dev/null @@ -1,19 +0,0 @@ - - diff --git a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/CardMode.vue b/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/CardMode.vue deleted file mode 100644 index 42107de546..0000000000 --- a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/CardMode.vue +++ /dev/null @@ -1,234 +0,0 @@ - - - diff --git a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/TableMode.vue b/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/TableMode.vue deleted file mode 100644 index 0e2a7806a2..0000000000 --- a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/TableMode.vue +++ /dev/null @@ -1,184 +0,0 @@ - - - diff --git a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-data.ts b/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-data.ts deleted file mode 100644 index 510df23ac5..0000000000 --- a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-data.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { reactive, ref } from 'vue'; -import { useRequest } from 'vue-request'; - -import TicketModel from '@services/model/ticket/ticket'; -import { getTickets, getTicketStatus } from '@services/source/ticket'; - -import { useUrlSearch } from '@hooks'; - -import { useTimeoutFn } from '@vueuse/core'; - -const isLoading = ref(false); -const dataList = ref[]>([]); -const pagination = reactive({ - offset: 0, - limit: 15, - current: 1, - count: 0, -}); - -export default (options?: { onSuccess?: (data: TicketModel[]) => void }) => { - const { replaceSearchParams, getSearchParams } = useUrlSearch(); - const searchParams = getSearchParams(); - - if (searchParams.limit && searchParams.current) { - pagination.limit = Number(searchParams.limit); - pagination.current = Number(searchParams.current); - } - - const { run: fetchTicketStatus } = useRequest( - () => { - if (dataList.value.length < 1) { - return Promise.reject(); - } - return getTicketStatus({ - ticket_ids: dataList.value.map((item) => item.id).join(','), - }); - }, - { - manual: true, - debounceOptions: { - maxWait: 100, - }, - onSuccess(data) { - dataList.value.forEach((ticketData) => { - if (data[ticketData.id]) { - Object.assign(ticketData, { - status: data[ticketData.id], - }); - } - }); - loopFetchTicketStatus(); - }, - }, - ); - - const { start: loopFetchTicketStatus } = useTimeoutFn(() => { - fetchTicketStatus(); - }, 10000); - - const { run: fetchTicketList } = useRequest( - (params: ServiceParameters) => - getTickets({ - bk_biz_id: window.PROJECT_CONFIG.BIZ_ID, - limit: pagination.limit, - offset: (pagination.current - 1) * pagination.limit, - ...params, - }), - { - manual: true, - debounceInterval: 100, - onBefore() { - isLoading.value = true; - }, - onAfter() { - isLoading.value = false; - }, - onSuccess(data, params) { - dataList.value = data.results; - pagination.count = data.count; - - const urlSearchParams = { - limit: pagination.limit, - current: pagination.current, - ...params[0], - }; - - const searchParams = getSearchParams(); - if (Number(searchParams.viewId)) { - Object.assign(urlSearchParams, { - viewId: searchParams.viewId, - }); - } - replaceSearchParams(urlSearchParams); - if (options && options.onSuccess) { - options.onSuccess(data.results); - } - }, - }, - ); - - return { - loading: isLoading, - dataList, - pagination, - fetchTicketList, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-date-picker.ts b/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-date-picker.ts deleted file mode 100644 index 7d15acc4b5..0000000000 --- a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-date-picker.ts +++ /dev/null @@ -1,74 +0,0 @@ -import dayjs from 'dayjs'; -import { computed, ref } from 'vue'; - -import { useUrlSearch } from '@hooks'; - -interface IPicker { - value: () => [Date, Date]; -} - -const value = ref<[Date, Date] | [string, string]>(['', '']); - -export default () => { - const { getSearchParams } = useUrlSearch(); - - const searchParams = getSearchParams(); - if (searchParams.create_at__gte && searchParams.create_at__lte) { - value.value = [dayjs(searchParams.create_at__gte).toDate(), dayjs(searchParams.create_at__lte).toDate()]; - } - - const shortcutsRange = [ - { - text: '今天', - value() { - return [dayjs().startOf('day').toDate(), dayjs().endOf('day').toDate()]; - }, - onClick: (picker: IPicker) => { - value.value = picker.value(); - }, - }, - { - text: '近7天', - value() { - return [dayjs().subtract(7, 'day').toDate(), dayjs().toDate()]; - }, - onClick: (picker: IPicker) => { - value.value = picker.value(); - }, - }, - { - text: '近15天', - value() { - return [dayjs().subtract(15, 'day').toDate(), dayjs().toDate()]; - }, - onClick: (picker: IPicker) => { - value.value = picker.value(); - }, - }, - { - text: '近30天', - value() { - return [dayjs().subtract(30, 'day').toDate(), dayjs().toDate()]; - }, - onClick: (picker: IPicker) => { - value.value = picker.value(); - }, - }, - ]; - - const formatValue = computed(() => { - if (value.value[0] && value.value[1]) { - return { - create_at__gte: dayjs(value.value[0]).format('YYYY-MM-DD HH:mm:ss'), - create_at__lte: dayjs(value.value[1]).format('YYYY-MM-DD HH:mm:ss'), - }; - } - return {}; - }); - - return { - value, - formatValue, - shortcutsRange, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-search-select.ts b/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-search-select.ts deleted file mode 100644 index 6c5a10d87a..0000000000 --- a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-search-select.ts +++ /dev/null @@ -1,77 +0,0 @@ -import _ from 'lodash'; -import { computed, shallowRef } from 'vue'; -import { useI18n } from 'vue-i18n'; -import { useRequest } from 'vue-request'; - -import TicketModel from '@services/model/ticket/ticket'; -import { getTicketTypes } from '@services/source/ticket'; - -import type { SearchValue } from '@components/vue2/search-select/index.vue'; - -import { getSearchSelectorParams } from '@utils'; - -const value = ref([]); - -export default () => { - const { t } = useI18n(); - - const ticketTypeList = shallowRef<{ id: string; name: string }[]>([]); - - const searchSelectData = computed(() => [ - { - name: t('单号'), - id: 'id', - }, - { - name: t('单据类型'), - id: 'ticket_type__in', - multiple: true, - children: ticketTypeList.value, - }, - { - name: t('集群'), - id: 'cluster', - multiple: true, - }, - { - name: t('状态'), - id: 'status__in', - multiple: true, - children: Object.keys(TicketModel.statusTextMap).reduce[]>((acc, key) => { - acc.push({ - id: key, - name: t(TicketModel.statusTextMap[key as keyof typeof TicketModel.statusTextMap]), - }); - return acc; - }, []), - }, - { - name: t('备注'), - id: 'remark', - }, - ]); - - const formatSearchValue = computed(() => { - const result = getSearchSelectorParams(value.value); - if (_.has(result, 'id')) { - result.ids = result.id; - delete result.id; - } - return result; - }); - - useRequest(getTicketTypes, { - onSuccess(data) { - ticketTypeList.value = data.map((item) => ({ - id: item.key, - name: item.value, - })); - }, - }); - - return { - value, - searchSelectData, - formatSearchValue, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-table-height.ts b/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-table-height.ts deleted file mode 100644 index 1268499fb7..0000000000 --- a/dbm-ui/frontend/src/views/ticket-manage/list/components/list/components/hooks/use-table-height.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { onMounted, ref, useTemplateRef } from 'vue'; - -import { getOffset } from '@utils'; - -export default () => { - const tableRef = useTemplateRef('table'); - const tableMaxHeight = ref('auto'); - - onMounted(() => { - const { top } = getOffset(tableRef.value as HTMLElement); - const totalHeight = window.innerHeight; - const tableHeaderHeight = 42; - const paginationHeight = 60; - const pageOffsetBottom = 20; - const tableRowHeight = 42; - - const tableRowTotalHeight = totalHeight - top - tableHeaderHeight - paginationHeight - pageOffsetBottom; - - const rowNum = Math.max(Math.floor(tableRowTotalHeight / tableRowHeight), 5); - - tableMaxHeight.value = tableHeaderHeight + rowNum * tableRowHeight + paginationHeight + 3; - }); - - return { - tableRef, - tableMaxHeight, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-manage/routes.ts b/dbm-ui/frontend/src/views/ticket-manage/routes.ts deleted file mode 100644 index 110a274a73..0000000000 --- a/dbm-ui/frontend/src/views/ticket-manage/routes.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* - * TencentBlueKing is pleased to support the open source community by making 蓝鲸智云-DB管理系统(BlueKing-BK-DBM) available. - * - * Copyright (C) 2017-2023 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at https://opensource.org/licenses/MIT - * - * 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 type { RouteRecordRaw } from 'vue-router'; - -import { checkDbConsole } from '@utils'; - -import { t } from '@locales/index'; - -const routes: RouteRecordRaw[] = [ - { - name: 'ticketManage', - path: 'ticket-manage', - component: () => import('@views/ticket-manage/Index.vue'), - meta: { - navName: t('单据管理'), - }, - redirect: { - name: 'bizTicketManage', - }, - children: [], - }, -]; - -export default function getRoutes() { - if (checkDbConsole('databaseManage.missionManage')) { - routes[0].children.push({ - name: 'bizTicketManage', - path: 'index', - meta: { - navName: t('单据'), - fullscreen: true, - }, - component: () => import('@views/ticket-manage/list/Index.vue'), - }); - } - - return routes; -} diff --git a/dbm-ui/frontend/src/views/ticket-self-apply/Index.vue b/dbm-ui/frontend/src/views/ticket-self-apply/Index.vue deleted file mode 100644 index 3c07d5974c..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-apply/Index.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - diff --git a/dbm-ui/frontend/src/views/ticket-self-apply/components/detail/Index.vue b/dbm-ui/frontend/src/views/ticket-self-apply/components/detail/Index.vue deleted file mode 100644 index 3fd5ce1917..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-apply/components/detail/Index.vue +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - diff --git a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/Index.vue b/dbm-ui/frontend/src/views/ticket-self-apply/components/list/Index.vue deleted file mode 100644 index 53caa55a4c..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/Index.vue +++ /dev/null @@ -1,19 +0,0 @@ - - diff --git a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/CardMode.vue b/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/CardMode.vue deleted file mode 100644 index 6e05a5f9d7..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/CardMode.vue +++ /dev/null @@ -1,234 +0,0 @@ - - - diff --git a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/TableMode.vue b/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/TableMode.vue deleted file mode 100644 index 0e2a7806a2..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/TableMode.vue +++ /dev/null @@ -1,184 +0,0 @@ - - - diff --git a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-data.ts b/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-data.ts deleted file mode 100644 index ff23b537c4..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-data.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { reactive, ref } from 'vue'; -import { useRequest } from 'vue-request'; - -import TicketModel from '@services/model/ticket/ticket'; -import { getTickets, getTicketStatus } from '@services/source/ticket'; - -import { useUrlSearch } from '@hooks'; - -import { useTimeoutFn } from '@vueuse/core'; - -const isLoading = ref(false); -const dataList = ref[]>([]); -const pagination = reactive({ - offset: 0, - limit: 15, - current: 1, - count: 0, -}); - -export default (options?: { onSuccess?: (data: TicketModel[]) => void }) => { - const { replaceSearchParams, getSearchParams } = useUrlSearch(); - const searchParams = getSearchParams(); - - if (searchParams.limit && searchParams.current) { - pagination.limit = Number(searchParams.limit); - pagination.current = Number(searchParams.current); - } - - const { run: fetchTicketStatus } = useRequest( - () => { - if (dataList.value.length < 1) { - return Promise.reject(); - } - return getTicketStatus({ - ticket_ids: dataList.value.map((item) => item.id).join(','), - }); - }, - { - manual: true, - debounceInterval: 100, - onSuccess(data) { - dataList.value.forEach((ticketData) => { - if (data[ticketData.id]) { - Object.assign(ticketData, { - status: data[ticketData.id], - }); - } - }); - loopFetchTicketStatus(); - }, - }, - ); - - const { start: loopFetchTicketStatus } = useTimeoutFn(() => { - fetchTicketStatus(); - }, 10000000); - - const { run: fetchTicketList } = useRequest( - (params: ServiceParameters) => - getTickets({ - limit: pagination.limit, - offset: (pagination.current - 1) * pagination.limit, - self_manage: 0, - ...params, - }), - { - manual: true, - onBefore() { - isLoading.value = true; - }, - onAfter() { - isLoading.value = false; - }, - onSuccess(data, params) { - dataList.value = data.results; - pagination.count = data.count; - - const urlSearchParams = { - limit: pagination.limit, - current: pagination.current, - ...params[0], - }; - - const searchParams = getSearchParams(); - if (Number(searchParams.viewId)) { - Object.assign(urlSearchParams, { - viewId: searchParams.viewId, - }); - } - replaceSearchParams(urlSearchParams); - if (options && options.onSuccess) { - options.onSuccess(data.results); - } - }, - }, - ); - - return { - loading: isLoading, - dataList, - pagination, - fetchTicketList, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-date-picker.ts b/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-date-picker.ts deleted file mode 100644 index 7d15acc4b5..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-date-picker.ts +++ /dev/null @@ -1,74 +0,0 @@ -import dayjs from 'dayjs'; -import { computed, ref } from 'vue'; - -import { useUrlSearch } from '@hooks'; - -interface IPicker { - value: () => [Date, Date]; -} - -const value = ref<[Date, Date] | [string, string]>(['', '']); - -export default () => { - const { getSearchParams } = useUrlSearch(); - - const searchParams = getSearchParams(); - if (searchParams.create_at__gte && searchParams.create_at__lte) { - value.value = [dayjs(searchParams.create_at__gte).toDate(), dayjs(searchParams.create_at__lte).toDate()]; - } - - const shortcutsRange = [ - { - text: '今天', - value() { - return [dayjs().startOf('day').toDate(), dayjs().endOf('day').toDate()]; - }, - onClick: (picker: IPicker) => { - value.value = picker.value(); - }, - }, - { - text: '近7天', - value() { - return [dayjs().subtract(7, 'day').toDate(), dayjs().toDate()]; - }, - onClick: (picker: IPicker) => { - value.value = picker.value(); - }, - }, - { - text: '近15天', - value() { - return [dayjs().subtract(15, 'day').toDate(), dayjs().toDate()]; - }, - onClick: (picker: IPicker) => { - value.value = picker.value(); - }, - }, - { - text: '近30天', - value() { - return [dayjs().subtract(30, 'day').toDate(), dayjs().toDate()]; - }, - onClick: (picker: IPicker) => { - value.value = picker.value(); - }, - }, - ]; - - const formatValue = computed(() => { - if (value.value[0] && value.value[1]) { - return { - create_at__gte: dayjs(value.value[0]).format('YYYY-MM-DD HH:mm:ss'), - create_at__lte: dayjs(value.value[1]).format('YYYY-MM-DD HH:mm:ss'), - }; - } - return {}; - }); - - return { - value, - formatValue, - shortcutsRange, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-search-select.ts b/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-search-select.ts deleted file mode 100644 index c79428d235..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-search-select.ts +++ /dev/null @@ -1,92 +0,0 @@ -import _ from 'lodash'; -import { computed, shallowRef } from 'vue'; -import { useI18n } from 'vue-i18n'; -import { useRequest } from 'vue-request'; - -import TicketModel from '@services/model/ticket/ticket'; -import { getTicketTypes } from '@services/source/ticket'; - -import { useGlobalBizs } from '@stores'; - -import type { SearchValue } from '@components/vue2/search-select/index.vue'; - -import { getSearchSelectorParams } from '@utils'; - -const value = ref([]); - -export default () => { - const { t } = useI18n(); - const globalBizsStore = useGlobalBizs(); - - const ticketTypeList = shallowRef<{ id: string; name: string }[]>([]); - - const searchSelectData = computed(() => [ - { - name: t('单号'), - id: 'id', - }, - { - name: t('单据类型'), - id: 'ticket_type__in', - multiple: true, - children: ticketTypeList.value, - }, - { - name: t('集群'), - id: 'cluster', - multiple: true, - }, - { - name: t('业务'), - id: 'bk_biz_id', - children: globalBizsStore.bizs.map((item) => ({ - id: item.bk_biz_id, - name: item.name, - })), - }, - { - name: t('状态'), - id: 'status__in', - multiple: true, - children: Object.keys(TicketModel.statusTextMap).reduce[]>((acc, key) => { - acc.push({ - id: key, - name: t(TicketModel.statusTextMap[key as keyof typeof TicketModel.statusTextMap]), - }); - return acc; - }, []), - }, - { - name: t('备注'), - id: 'remark', - }, - { - name: t('提单人'), - id: 'creator', - }, - ]); - - const formatSearchValue = computed(() => { - const result = getSearchSelectorParams(value.value); - if (_.has(result, 'id')) { - result.ids = result.id; - delete result.id; - } - return result; - }); - - useRequest(getTicketTypes, { - onSuccess(data) { - ticketTypeList.value = data.map((item) => ({ - id: item.key, - name: item.value, - })); - }, - }); - - return { - value, - searchSelectData, - formatSearchValue, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-table-height.ts b/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-table-height.ts deleted file mode 100644 index 1268499fb7..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-apply/components/list/components/hooks/use-table-height.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { onMounted, ref, useTemplateRef } from 'vue'; - -import { getOffset } from '@utils'; - -export default () => { - const tableRef = useTemplateRef('table'); - const tableMaxHeight = ref('auto'); - - onMounted(() => { - const { top } = getOffset(tableRef.value as HTMLElement); - const totalHeight = window.innerHeight; - const tableHeaderHeight = 42; - const paginationHeight = 60; - const pageOffsetBottom = 20; - const tableRowHeight = 42; - - const tableRowTotalHeight = totalHeight - top - tableHeaderHeight - paginationHeight - pageOffsetBottom; - - const rowNum = Math.max(Math.floor(tableRowTotalHeight / tableRowHeight), 5); - - tableMaxHeight.value = tableHeaderHeight + rowNum * tableRowHeight + paginationHeight + 3; - }); - - return { - tableRef, - tableMaxHeight, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-self-apply/routes.ts b/dbm-ui/frontend/src/views/ticket-self-apply/routes.ts deleted file mode 100644 index 79935ff275..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-apply/routes.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * TencentBlueKing is pleased to support the open source community by making 蓝鲸智云-DB管理系统(BlueKing-BK-DBM) available. - * - * Copyright (C) 2017-2023 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at https://opensource.org/licenses/MIT - * - * 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 { checkDbConsole } from '@utils'; - -import { t } from '@locales/index'; - -const route = { - name: 'SelfServiceMyTickets', - path: 'ticket-self-apply/:typeId?', - meta: { - navName: t('我的申请'), - fullscreen: true, - }, - component: () => import('@views/ticket-self-apply/Index.vue'), -}; - -export default function getRoutes() { - return checkDbConsole('personalWorkbench.myTickets') ? [route] : []; -} diff --git a/dbm-ui/frontend/src/views/ticket-self-manage/Index.vue b/dbm-ui/frontend/src/views/ticket-self-manage/Index.vue deleted file mode 100644 index 3c07d5974c..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-manage/Index.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - diff --git a/dbm-ui/frontend/src/views/ticket-self-manage/components/detail/Index.vue b/dbm-ui/frontend/src/views/ticket-self-manage/components/detail/Index.vue deleted file mode 100644 index c27b7841be..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-manage/components/detail/Index.vue +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - diff --git a/dbm-ui/frontend/src/views/ticket-self-manage/components/list/Index.vue b/dbm-ui/frontend/src/views/ticket-self-manage/components/list/Index.vue deleted file mode 100644 index 53caa55a4c..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-manage/components/list/Index.vue +++ /dev/null @@ -1,19 +0,0 @@ - - diff --git a/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/CardMode.vue b/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/CardMode.vue deleted file mode 100644 index f0d5573a37..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/CardMode.vue +++ /dev/null @@ -1,234 +0,0 @@ - - - diff --git a/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/TableMode.vue b/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/TableMode.vue deleted file mode 100644 index 7078076423..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/TableMode.vue +++ /dev/null @@ -1,186 +0,0 @@ - - - diff --git a/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/hooks/use-data.ts b/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/hooks/use-data.ts deleted file mode 100644 index 73fd98c4b1..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/hooks/use-data.ts +++ /dev/null @@ -1,105 +0,0 @@ -import { reactive, ref } from 'vue'; -import { useRequest } from 'vue-request'; - -import TicketModel from '@services/model/ticket/ticket'; -import { getTickets, getTicketStatus } from '@services/source/ticket'; - -import { useUrlSearch } from '@hooks'; - -import { useTimeoutFn } from '@vueuse/core'; - -const isLoading = ref(false); -const dataList = ref[]>([]); -const pagination = reactive({ - offset: 0, - limit: 15, - current: 1, - count: 0, -}); - -export default (options?: { onSuccess?: (data: TicketModel[]) => void }) => { - const { replaceSearchParams, getSearchParams } = useUrlSearch(); - - const searchParams = getSearchParams(); - - if (searchParams.limit && searchParams.current) { - pagination.limit = Number(searchParams.limit); - pagination.current = Number(searchParams.current); - } - - const { run: fetchTicketStatus } = useRequest( - () => { - if (dataList.value.length < 1) { - return Promise.reject(); - } - return getTicketStatus({ - ticket_ids: dataList.value.map((item) => item.id).join(','), - }); - }, - { - manual: true, - onSuccess(data) { - dataList.value.forEach((ticketData) => { - if (data[ticketData.id]) { - Object.assign(ticketData, { - status: data[ticketData.id], - }); - } - }); - loopFetchTicketStatus(); - }, - }, - ); - - const { start: loopFetchTicketStatus } = useTimeoutFn(() => { - fetchTicketStatus(); - }, 10000); - - const { run: fetchTicketList } = useRequest( - (params: ServiceParameters) => - getTickets({ - limit: pagination.limit, - offset: (pagination.current - 1) * pagination.limit, - self_manage: 1, - ...params, - }), - { - manual: true, - debounceInterval: 100, - onBefore() { - isLoading.value = true; - }, - onAfter() { - isLoading.value = false; - }, - onSuccess(data, params) { - dataList.value = data.results; - pagination.count = data.count; - - const urlSearchParams = { - limit: pagination.limit, - current: pagination.current, - ...params[0], - }; - - const searchParams = getSearchParams(); - if (Number(searchParams.viewId)) { - Object.assign(urlSearchParams, { - viewId: searchParams.viewId, - }); - } - replaceSearchParams(urlSearchParams); - if (options && options.onSuccess) { - options.onSuccess(data.results); - } - }, - }, - ); - - return { - loading: isLoading, - dataList, - pagination, - fetchTicketList, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/hooks/use-search-select.ts b/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/hooks/use-search-select.ts deleted file mode 100644 index c79428d235..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/hooks/use-search-select.ts +++ /dev/null @@ -1,92 +0,0 @@ -import _ from 'lodash'; -import { computed, shallowRef } from 'vue'; -import { useI18n } from 'vue-i18n'; -import { useRequest } from 'vue-request'; - -import TicketModel from '@services/model/ticket/ticket'; -import { getTicketTypes } from '@services/source/ticket'; - -import { useGlobalBizs } from '@stores'; - -import type { SearchValue } from '@components/vue2/search-select/index.vue'; - -import { getSearchSelectorParams } from '@utils'; - -const value = ref([]); - -export default () => { - const { t } = useI18n(); - const globalBizsStore = useGlobalBizs(); - - const ticketTypeList = shallowRef<{ id: string; name: string }[]>([]); - - const searchSelectData = computed(() => [ - { - name: t('单号'), - id: 'id', - }, - { - name: t('单据类型'), - id: 'ticket_type__in', - multiple: true, - children: ticketTypeList.value, - }, - { - name: t('集群'), - id: 'cluster', - multiple: true, - }, - { - name: t('业务'), - id: 'bk_biz_id', - children: globalBizsStore.bizs.map((item) => ({ - id: item.bk_biz_id, - name: item.name, - })), - }, - { - name: t('状态'), - id: 'status__in', - multiple: true, - children: Object.keys(TicketModel.statusTextMap).reduce[]>((acc, key) => { - acc.push({ - id: key, - name: t(TicketModel.statusTextMap[key as keyof typeof TicketModel.statusTextMap]), - }); - return acc; - }, []), - }, - { - name: t('备注'), - id: 'remark', - }, - { - name: t('提单人'), - id: 'creator', - }, - ]); - - const formatSearchValue = computed(() => { - const result = getSearchSelectorParams(value.value); - if (_.has(result, 'id')) { - result.ids = result.id; - delete result.id; - } - return result; - }); - - useRequest(getTicketTypes, { - onSuccess(data) { - ticketTypeList.value = data.map((item) => ({ - id: item.key, - name: item.value, - })); - }, - }); - - return { - value, - searchSelectData, - formatSearchValue, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/hooks/use-table-height.ts b/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/hooks/use-table-height.ts deleted file mode 100644 index 1268499fb7..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-manage/components/list/components/hooks/use-table-height.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { onMounted, ref, useTemplateRef } from 'vue'; - -import { getOffset } from '@utils'; - -export default () => { - const tableRef = useTemplateRef('table'); - const tableMaxHeight = ref('auto'); - - onMounted(() => { - const { top } = getOffset(tableRef.value as HTMLElement); - const totalHeight = window.innerHeight; - const tableHeaderHeight = 42; - const paginationHeight = 60; - const pageOffsetBottom = 20; - const tableRowHeight = 42; - - const tableRowTotalHeight = totalHeight - top - tableHeaderHeight - paginationHeight - pageOffsetBottom; - - const rowNum = Math.max(Math.floor(tableRowTotalHeight / tableRowHeight), 5); - - tableMaxHeight.value = tableHeaderHeight + rowNum * tableRowHeight + paginationHeight + 3; - }); - - return { - tableRef, - tableMaxHeight, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-self-manage/routes.ts b/dbm-ui/frontend/src/views/ticket-self-manage/routes.ts deleted file mode 100644 index 8d33521465..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-manage/routes.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * TencentBlueKing is pleased to support the open source community by making 蓝鲸智云-DB管理系统(BlueKing-BK-DBM) available. - * - * Copyright (C) 2017-2023 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at https://opensource.org/licenses/MIT - * - * 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 { checkDbConsole } from '@utils'; - -import { t } from '@locales/index'; - -const route = { - name: 'ticketSelfManage', - path: 'ticket-self-manage', - meta: { - navName: t('我负责的业务'), - fullscreen: true, - }, - component: () => import('@views/ticket-self-manage/Index.vue'), -}; - -export default function getRoutes() { - return checkDbConsole('personalWorkbench.myTickets') ? [route] : []; -} diff --git a/dbm-ui/frontend/src/views/ticket-self-todo/Index.vue b/dbm-ui/frontend/src/views/ticket-self-todo/Index.vue deleted file mode 100644 index 3c07d5974c..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-todo/Index.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - diff --git a/dbm-ui/frontend/src/views/ticket-self-todo/components/list/Index.vue b/dbm-ui/frontend/src/views/ticket-self-todo/components/list/Index.vue deleted file mode 100644 index 53caa55a4c..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-todo/components/list/Index.vue +++ /dev/null @@ -1,19 +0,0 @@ - - diff --git a/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/CardMode.vue b/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/CardMode.vue deleted file mode 100644 index f0d5573a37..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/CardMode.vue +++ /dev/null @@ -1,234 +0,0 @@ - - - diff --git a/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/TableMode.vue b/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/TableMode.vue deleted file mode 100644 index 0e2a7806a2..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/TableMode.vue +++ /dev/null @@ -1,184 +0,0 @@ - - - diff --git a/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/hooks/use-date-picker.ts b/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/hooks/use-date-picker.ts deleted file mode 100644 index 7d15acc4b5..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/hooks/use-date-picker.ts +++ /dev/null @@ -1,74 +0,0 @@ -import dayjs from 'dayjs'; -import { computed, ref } from 'vue'; - -import { useUrlSearch } from '@hooks'; - -interface IPicker { - value: () => [Date, Date]; -} - -const value = ref<[Date, Date] | [string, string]>(['', '']); - -export default () => { - const { getSearchParams } = useUrlSearch(); - - const searchParams = getSearchParams(); - if (searchParams.create_at__gte && searchParams.create_at__lte) { - value.value = [dayjs(searchParams.create_at__gte).toDate(), dayjs(searchParams.create_at__lte).toDate()]; - } - - const shortcutsRange = [ - { - text: '今天', - value() { - return [dayjs().startOf('day').toDate(), dayjs().endOf('day').toDate()]; - }, - onClick: (picker: IPicker) => { - value.value = picker.value(); - }, - }, - { - text: '近7天', - value() { - return [dayjs().subtract(7, 'day').toDate(), dayjs().toDate()]; - }, - onClick: (picker: IPicker) => { - value.value = picker.value(); - }, - }, - { - text: '近15天', - value() { - return [dayjs().subtract(15, 'day').toDate(), dayjs().toDate()]; - }, - onClick: (picker: IPicker) => { - value.value = picker.value(); - }, - }, - { - text: '近30天', - value() { - return [dayjs().subtract(30, 'day').toDate(), dayjs().toDate()]; - }, - onClick: (picker: IPicker) => { - value.value = picker.value(); - }, - }, - ]; - - const formatValue = computed(() => { - if (value.value[0] && value.value[1]) { - return { - create_at__gte: dayjs(value.value[0]).format('YYYY-MM-DD HH:mm:ss'), - create_at__lte: dayjs(value.value[1]).format('YYYY-MM-DD HH:mm:ss'), - }; - } - return {}; - }); - - return { - value, - formatValue, - shortcutsRange, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/hooks/use-search-select.ts b/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/hooks/use-search-select.ts deleted file mode 100644 index b70d241510..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/hooks/use-search-select.ts +++ /dev/null @@ -1,91 +0,0 @@ -import _ from 'lodash'; -import { computed, shallowRef } from 'vue'; -import { useI18n } from 'vue-i18n'; -import { useRequest } from 'vue-request'; - -import TicketModel from '@services/model/ticket/ticket'; -import { getTicketTypes } from '@services/source/ticket'; - -import { useGlobalBizs } from '@stores'; - -import type { SearchValue } from '@components/vue2/search-select/index.vue'; - -import { getSearchSelectorParams } from '@utils'; - -const value = ref([]); - -export default () => { - const { t } = useI18n(); - const globalBizsStore = useGlobalBizs(); - - const ticketTypeList = shallowRef<{ id: string; name: string }[]>([]); - - const searchSelectData = computed(() => [ - { - name: t('单号'), - id: 'id', - }, - { - name: t('单据类型'), - id: 'ticket_type__in', - multiple: true, - children: ticketTypeList.value, - }, - { - name: t('集群'), - id: 'cluster', - }, - { - name: t('业务'), - id: 'bk_biz_id', - children: globalBizsStore.bizs.map((item) => ({ - id: item.bk_biz_id, - name: item.name, - })), - }, - { - name: t('状态'), - id: 'status__in', - multiple: true, - children: Object.keys(TicketModel.statusTextMap).reduce[]>((acc, key) => { - acc.push({ - id: key, - name: t(TicketModel.statusTextMap[key as keyof typeof TicketModel.statusTextMap]), - }); - return acc; - }, []), - }, - { - name: t('备注'), - id: 'remark', - }, - { - name: t('提单人'), - id: 'creator', - }, - ]); - - const formatSearchValue = computed(() => { - const result = getSearchSelectorParams(value.value); - if (_.has(result, 'id')) { - result.ids = result.id; - delete result.id; - } - return result; - }); - - useRequest(getTicketTypes, { - onSuccess(data) { - ticketTypeList.value = data.map((item) => ({ - id: item.key, - name: item.value, - })); - }, - }); - - return { - value, - searchSelectData, - formatSearchValue, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/hooks/use-table-height.ts b/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/hooks/use-table-height.ts deleted file mode 100644 index 1268499fb7..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-todo/components/list/components/hooks/use-table-height.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { onMounted, ref, useTemplateRef } from 'vue'; - -import { getOffset } from '@utils'; - -export default () => { - const tableRef = useTemplateRef('table'); - const tableMaxHeight = ref('auto'); - - onMounted(() => { - const { top } = getOffset(tableRef.value as HTMLElement); - const totalHeight = window.innerHeight; - const tableHeaderHeight = 42; - const paginationHeight = 60; - const pageOffsetBottom = 20; - const tableRowHeight = 42; - - const tableRowTotalHeight = totalHeight - top - tableHeaderHeight - paginationHeight - pageOffsetBottom; - - const rowNum = Math.max(Math.floor(tableRowTotalHeight / tableRowHeight), 5); - - tableMaxHeight.value = tableHeaderHeight + rowNum * tableRowHeight + paginationHeight + 3; - }); - - return { - tableRef, - tableMaxHeight, - }; -}; diff --git a/dbm-ui/frontend/src/views/ticket-self-todo/routes.ts b/dbm-ui/frontend/src/views/ticket-self-todo/routes.ts deleted file mode 100644 index 17cc6cda6a..0000000000 --- a/dbm-ui/frontend/src/views/ticket-self-todo/routes.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * TencentBlueKing is pleased to support the open source community by making 蓝鲸智云-DB管理系统(BlueKing-BK-DBM) available. - * - * Copyright (C) 2017-2023 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at https://opensource.org/licenses/MIT - * - * 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 { checkDbConsole } from '@utils'; - -import { t } from '@locales/index'; - -const route = { - name: 'MyTodos', - path: 'ticket-self-todo', - meta: { - navName: t('我的待办'), - fullscreen: true, - }, - component: () => import('@views/ticket-self-todo/Index.vue'), -}; - -export default function getRoutes() { - return checkDbConsole('personalWorkbench.myTickets') ? [route] : []; -} diff --git a/dbm-ui/frontend/src/views/tickets/common/components/baseinfo/Index.vue b/dbm-ui/frontend/src/views/tickets/common/components/baseinfo/Index.vue deleted file mode 100644 index b8715112f4..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/baseinfo/Index.vue +++ /dev/null @@ -1,289 +0,0 @@ - - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/common/types.ts b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/common/types.ts deleted file mode 100644 index 395f182c73..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/common/types.ts +++ /dev/null @@ -1,194 +0,0 @@ -/* - * TencentBlueKing is pleased to support the open source community by making 蓝鲸智云-DB管理系统(BlueKing-BK-DBM) available. - * - * Copyright (C) 2017-2023 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at https://opensource.org/licenses/MIT - * - * 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 type { SpecInfo } from '@services/model/ticket/details/common'; - -import { ClusterTypes } from '@common/const'; - -import type { IHostTableData } from '@components/cluster-common/big-data-host-table/HdfsHostTable.vue'; - -// MongoDB 副本集群 -export interface DetailsMongoDBReplicaSet { - bk_cloud_name: string; - cap_spec: string; - city_code: string; - city_name: string; - cluster_alias: string; - cluster_id: number; - cluster_name: string; - cluster_type: string; - db_app_abbr: string; - db_version: string; - disaster_tolerance_level: string; - ip_source: string; - node_count: number; - node_replica_count: number; - oplog_percent: number; - proxy_port: number; - replica_count: number; - replica_sets: Array<{ - domain: string; - name: string; - set_id: string; - }>; - resource_spec: { - mongo_machine_set: SpecInfo; - }; - start_port: number; -} - -// MongoDB 分片集群 -export interface DetailsMongoDBSharedCluster { - bk_cloud_name: string; - cap_key: string; - cap_spec: string; - city_code: string; - city_name: string; - cluster_alias: string; - cluster_id: number; - cluster_name: string; - cluster_type: string; - db_app_abbr: string; - db_version: string; - disaster_tolerance_level: string; - ip_source: string; - oplog_percent: number; - proxy_port: number; - start_port: number; - resource_spec: { - mongo_config: SpecInfo; - mongos: SpecInfo; - mongodb: SpecInfo; - }; -} - -// MongoDB 账号授权 -export interface MongoDBAuthorizeRules { - authorize_data?: { - auth_db: string; - cluster_ids: number[]; - password: string; - rule_sets: { - db: string; - privileges: string[]; - }[]; - username: string; - }[]; - authorize_uid: string; - excel_url?: string; -} - -// Sqlserver 集群部署 -export interface DetailsSqlserver { - bk_cloud_id: number; - charset: string; - city_code: string; - city_name: string; - cluster_count: number; - db_module_id: number; - db_module_name: string; - db_version: string; - disaster_tolerance_level: string; - domains: { - key: string; - master: string; - slave: string; - }[]; - inst_num: number; - ip_source: string; - nodes?: { - [ClusterTypes.SQLSERVER_SINGLE]: { - ip: string; - bk_host_id: number; - bk_cloud_id: number; - bk_biz_id: number; - }[]; - [ClusterTypes.SQLSERVER_HA]: { - ip: string; - bk_host_id: number; - bk_cloud_id: number; - bk_biz_id: number; - }[]; - }; - resource_spec?: { - [ClusterTypes.SQLSERVER_SINGLE]: SpecInfo; - [ClusterTypes.SQLSERVER_HA]: SpecInfo; - }; - spec: string; - spec_display: string; - start_mysql_port: number; - start_mssql_port: number; -} - -export interface RedisHaApply { - bk_cloud_id: number; - cluster_type: string; - disaster_tolerance_level: string; - append_apply: boolean; // 是否是追加部署 - port?: number; // 追加就非必填 - city_code?: string; // 追加就非必填 - db_version?: string; // 追加就非必填 - infos: { - databases: number; - cluster_name: string; - // 如果是追加部署,则一定有backend_group,表示追加的主机信息 - backend_group?: { - master: { - ip: string; - bk_cloud_id: number; - bk_host_id: number; - }; - slave: { - ip: string; - bk_cloud_id: number; - bk_host_id: number; - }; - }; - }[]; - // 如果是新部署,则一定从资源池部署 - resource_spec: { - backend_group: SpecInfo; - }; -} - -// Doris 集群 -export interface DorisCluster { - db_app_abbr: string; - city_code: string; - cluster_alias: string; - cluster_name: string; - db_version: string; - disaster_tolerance_level: string; - http_port: number; - ip_source: string; - nodes?: { - follower: IHostTableData[]; - observer: IHostTableData[]; - hot: IHostTableData[]; - cold: IHostTableData[]; - }; - query_port: number; - resource_spec?: { - follower: SpecInfo; - observer: SpecInfo; - hot: SpecInfo; - cold: SpecInfo; - }; -} - -export type TicketDetailTypes = - | DetailsMongoDBReplicaSet - | DetailsMongoDBSharedCluster - | MongoDBAuthorizeRules - | DetailsSqlserver - | RedisHaApply - | DorisCluster; diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mongodb/ScaleUpdown.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mongodb/ScaleUpdown.vue deleted file mode 100644 index 0fe64e5674..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mongodb/ScaleUpdown.vue +++ /dev/null @@ -1,59 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Checksum.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Checksum.vue deleted file mode 100644 index 3487ccd6c5..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Checksum.vue +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Clone.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Clone.vue deleted file mode 100644 index 2d26a5e6e5..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Clone.vue +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/ClusterOperation.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/ClusterOperation.vue deleted file mode 100644 index 42f7b6da57..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/ClusterOperation.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/DataMigrate.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/DataMigrate.vue deleted file mode 100644 index 923a0466f4..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/DataMigrate.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Details.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Details.vue deleted file mode 100644 index 7fde8a35ed..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Details.vue +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Flashback.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Flashback.vue deleted file mode 100644 index 12a244c888..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/Flashback.vue +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/FullBackup.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/FullBackup.vue deleted file mode 100644 index f468568162..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/FullBackup.vue +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/HATruncate.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/HATruncate.vue deleted file mode 100644 index 19536e1b73..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/HATruncate.vue +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/MasterFailOver.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/MasterFailOver.vue deleted file mode 100644 index 3ee5dc176d..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/MasterFailOver.vue +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/MasterSlaveSwitch.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/MasterSlaveSwitch.vue deleted file mode 100644 index 704dbc60f0..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/MasterSlaveSwitch.vue +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/MigrateCluster.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/MigrateCluster.vue deleted file mode 100644 index 656e09527c..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/MigrateCluster.vue +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/OpenArea.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/OpenArea.vue deleted file mode 100644 index 9107908443..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/OpenArea.vue +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/RestoreSlave.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/RestoreSlave.vue deleted file mode 100644 index 467703f198..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/RestoreSlave.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/SlaveAdd.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/SlaveAdd.vue deleted file mode 100644 index 3e5c049632..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/SlaveAdd.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/TableBackup.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/TableBackup.vue deleted file mode 100644 index 1af8c5dade..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/TableBackup.vue +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/proxy-replace/Index.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/proxy-replace/Index.vue deleted file mode 100644 index 8d7a8eacf4..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/proxy-replace/Index.vue +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/proxy-replace/components/ReplaceHost.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/proxy-replace/components/ReplaceHost.vue deleted file mode 100644 index 0b033825df..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/proxy-replace/components/ReplaceHost.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/proxy-replace/components/ReplaceInstance.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/proxy-replace/components/ReplaceInstance.vue deleted file mode 100644 index 4595d4bf55..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/proxy-replace/components/ReplaceInstance.vue +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/rollback/Index.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/rollback/Index.vue deleted file mode 100644 index 8ea15eaa5b..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/rollback/Index.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/rollback/components/RollbackNewCluster.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/rollback/components/RollbackNewCluster.vue deleted file mode 100644 index c9b2b5ee31..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/rollback/components/RollbackNewCluster.vue +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/rollback/components/RollbackOriginCluster.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/rollback/components/RollbackOriginCluster.vue deleted file mode 100644 index cceda243e0..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/mysql/rollback/components/RollbackOriginCluster.vue +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/Details.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/Details.vue deleted file mode 100644 index 60817c07da..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/Details.vue +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/ProxyScaleDown.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/ProxyScaleDown.vue deleted file mode 100644 index d99196649a..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/redis/ProxyScaleDown.vue +++ /dev/null @@ -1,92 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/CheckSum.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/CheckSum.vue deleted file mode 100644 index 9415680d9c..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/CheckSum.vue +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Flashback.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Flashback.vue deleted file mode 100644 index d0260d9200..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/Flashback.vue +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/FullBackup.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/FullBackup.vue deleted file mode 100644 index bf8b9a7abb..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/FullBackup.vue +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MNTApply.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MNTApply.vue deleted file mode 100644 index 5eb3b364d6..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MNTApply.vue +++ /dev/null @@ -1,92 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MasterFailOver.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MasterFailOver.vue deleted file mode 100644 index 4129136a87..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MasterFailOver.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MasterSlaveSwitch.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MasterSlaveSwitch.vue deleted file mode 100644 index 8b7a78c964..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/MasterSlaveSwitch.vue +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/SlaveRebuild.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/SlaveRebuild.vue deleted file mode 100644 index 90fe713f92..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/SlaveRebuild.vue +++ /dev/null @@ -1,105 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/TableBackup.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/TableBackup.vue deleted file mode 100644 index f6d0468730..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/TableBackup.vue +++ /dev/null @@ -1,117 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/TruncateDatabase.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/TruncateDatabase.vue deleted file mode 100644 index 0766c30d87..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/TruncateDatabase.vue +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/rollback/Index.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/rollback/Index.vue deleted file mode 100644 index e780c6d814..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/rollback/Index.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/rollback/components/RollbackNewCluster.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/rollback/components/RollbackNewCluster.vue deleted file mode 100644 index 4cb417c4ad..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/rollback/components/RollbackNewCluster.vue +++ /dev/null @@ -1,150 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/rollback/components/RollbackOriginCluster.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/rollback/components/RollbackOriginCluster.vue deleted file mode 100644 index dc3583aee9..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/spider/rollback/components/RollbackOriginCluster.vue +++ /dev/null @@ -1,73 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/Details.vue b/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/Details.vue deleted file mode 100644 index 3454c10f8d..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/demand-factory/sqlserver/Details.vue +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/flow-content/Index.vue b/dbm-ui/frontend/src/views/tickets/common/components/flow-content/Index.vue deleted file mode 100644 index b2d41189eb..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/flow-content/Index.vue +++ /dev/null @@ -1,402 +0,0 @@ - - - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/flow-content/components/ContentInnerFlow.vue b/dbm-ui/frontend/src/views/tickets/common/components/flow-content/components/ContentInnerFlow.vue deleted file mode 100644 index 684b452024..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/flow-content/components/ContentInnerFlow.vue +++ /dev/null @@ -1,156 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/flow-content/components/ContentTodo.vue b/dbm-ui/frontend/src/views/tickets/common/components/flow-content/components/ContentTodo.vue deleted file mode 100644 index a6b0bfb7eb..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/flow-content/components/ContentTodo.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/components/flow-content/components/FlowIcon.vue b/dbm-ui/frontend/src/views/tickets/common/components/flow-content/components/FlowIcon.vue deleted file mode 100644 index 3c36af9f46..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/components/flow-content/components/FlowIcon.vue +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/common/styles/DetailsTable.less b/dbm-ui/frontend/src/views/tickets/common/styles/DetailsTable.less deleted file mode 100644 index 7c04a55186..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/styles/DetailsTable.less +++ /dev/null @@ -1,35 +0,0 @@ -/* - * TencentBlueKing is pleased to support the open source community by making 蓝鲸智云-DB管理系统(BlueKing-BK-DBM) available. - * - * Copyright (C) 2017-2023 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at https://opensource.org/licenses/MIT - * - * 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 "@styles/mixins.less"; - -:deep(.cell) { - margin: 5px 0; - line-height: unset !important; - - .db-icon-copy { - margin-top: 1px; - margin-left: 4px; - color: @primary-color; - cursor: pointer; - } - - .cluster-name { - padding: 8px 0; - line-height: 16px; - - &__alias { - color: @light-gray; - } - } -} \ No newline at end of file diff --git a/dbm-ui/frontend/src/views/tickets/common/styles/ticketDetails.less b/dbm-ui/frontend/src/views/tickets/common/styles/ticketDetails.less deleted file mode 100644 index b5e22ecc65..0000000000 --- a/dbm-ui/frontend/src/views/tickets/common/styles/ticketDetails.less +++ /dev/null @@ -1,79 +0,0 @@ -/* - * TencentBlueKing is pleased to support the open source community by making 蓝鲸智云-DB管理系统(BlueKing-BK-DBM) available. - * - * Copyright (C) 2017-2023 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at https://opensource.org/licenses/MIT - * - * 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 "@styles/mixins.less"; - -.ticket-details-page { - .ticket-details-info { - padding-left: 82px; - font-size: @font-size-mini; - - .ticket-details-info-title { - color: @title-color; - } - } - - .ticket-details-list { - .flex-center(); - - max-width: 1000px; - padding: 8px 0 16px; - flex-wrap: wrap; - - } - - .ticket-details-item { - .flex-center(); - - overflow: hidden; - font-size: 12px; - line-height: 32px; - flex: 0 0 50%; - - .ticket-details-item-label { - flex-shrink: 0; - min-width: 140px; - text-align: right; - } - - .ticket-details-item-value { - overflow: hidden; - color: @title-color; - text-overflow: ellipsis; - white-space: nowrap; - flex: 1; - - .host-nums { - cursor: pointer; - - a { - font-weight: bold; - } - } - } - - &.whole { - align-items: flex-start; - flex: 0 0 100%; - } - - &.table { - align-items: flex-start; - flex: 0 0 100%; - - .ticket-details-item-value { - padding-top: 8px; - } - } - } -} diff --git a/dbm-ui/frontend/src/views/tickets/my-tickets/Index.vue b/dbm-ui/frontend/src/views/tickets/my-tickets/Index.vue deleted file mode 100644 index c2d65ea58d..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-tickets/Index.vue +++ /dev/null @@ -1,63 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/Index.vue b/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/Index.vue deleted file mode 100644 index 2e8936467e..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/Index.vue +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/BaseInfo.vue b/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/BaseInfo.vue deleted file mode 100644 index 48a6922a8e..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/BaseInfo.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/Index.vue b/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/Index.vue deleted file mode 100644 index cf1a75521b..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/Index.vue +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/components/Common.vue b/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/components/Common.vue deleted file mode 100644 index b568589a3a..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/components/Common.vue +++ /dev/null @@ -1,62 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/components/MySqlDumpDataFlows.vue b/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/components/MySqlDumpDataFlows.vue deleted file mode 100644 index 0f9bb9168b..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/components/MySqlDumpDataFlows.vue +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/components/RedisFlows.vue b/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/components/RedisFlows.vue deleted file mode 100644 index a2d836a67e..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-tickets/components/details/components/flow/components/RedisFlows.vue +++ /dev/null @@ -1,92 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-tickets/components/list/Index.vue b/dbm-ui/frontend/src/views/tickets/my-tickets/components/list/Index.vue deleted file mode 100644 index b9581f5cdc..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-tickets/components/list/Index.vue +++ /dev/null @@ -1,498 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-tickets/components/list/components/TicketStatus.vue b/dbm-ui/frontend/src/views/tickets/my-tickets/components/list/components/TicketStatus.vue deleted file mode 100644 index 31b33bb92f..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-tickets/components/list/components/TicketStatus.vue +++ /dev/null @@ -1,61 +0,0 @@ - - diff --git a/dbm-ui/frontend/src/views/tickets/my-todos/Index.vue b/dbm-ui/frontend/src/views/tickets/my-todos/Index.vue deleted file mode 100644 index 6b739a176a..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-todos/Index.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-todos/components/List.vue b/dbm-ui/frontend/src/views/tickets/my-todos/components/List.vue deleted file mode 100644 index 25f8b40bcf..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-todos/components/List.vue +++ /dev/null @@ -1,553 +0,0 @@ - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/Index.vue b/dbm-ui/frontend/src/views/tickets/my-todos/components/details/Index.vue deleted file mode 100644 index 63fb41cc66..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/Index.vue +++ /dev/null @@ -1,289 +0,0 @@ - - - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/BaseInfo.vue b/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/BaseInfo.vue deleted file mode 100644 index 48a6922a8e..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/BaseInfo.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/Index.vue b/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/Index.vue deleted file mode 100644 index 0e7c9628bd..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/Index.vue +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/Approve.vue b/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/Approve.vue deleted file mode 100644 index 181db7a90c..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/Approve.vue +++ /dev/null @@ -1,263 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/RedisFlows.vue b/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/RedisFlows.vue deleted file mode 100644 index 46d3475005..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/RedisFlows.vue +++ /dev/null @@ -1,295 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/approve/Index.vue b/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/approve/Index.vue deleted file mode 100644 index 9d34464178..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/approve/Index.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/approve/InnerManualConfirm.vue b/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/approve/InnerManualConfirm.vue deleted file mode 100644 index b0ee1a5596..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/approve/InnerManualConfirm.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - - - diff --git a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/approve/ManualConfirm.vue b/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/approve/ManualConfirm.vue deleted file mode 100644 index 26dcad07d8..0000000000 --- a/dbm-ui/frontend/src/views/tickets/my-todos/components/details/components/flow/components/approve/ManualConfirm.vue +++ /dev/null @@ -1,224 +0,0 @@ - - - - diff --git a/dbm-ui/frontend/src/views/tickets/routes.ts b/dbm-ui/frontend/src/views/tickets/routes.ts deleted file mode 100644 index 43d20e45f3..0000000000 --- a/dbm-ui/frontend/src/views/tickets/routes.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * TencentBlueKing is pleased to support the open source community by making 蓝鲸智云-DB管理系统(BlueKing-BK-DBM) available. - * - * Copyright (C) 2017-2023 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at https://opensource.org/licenses/MIT - * - * 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 type { RouteRecordRaw } from 'vue-router'; - -import { checkDbConsole } from '@utils'; - -import { t } from '@locales/index'; - -const selfServiceMyTicketsRoute = { - name: 'SelfServiceMyTickets', - path: 'my-tickets/:typeId?', - meta: { - navName: t('单据'), - fullscreen: true, - }, - component: () => import('@views/tickets/my-tickets/Index.vue'), -}; - -const myTodosRoute = { - name: 'MyTodos', - path: 'my-todos', - meta: { - navName: t('我的待办'), - fullscreen: true, - }, - component: () => import('@views/tickets/my-todos/Index.vue'), -}; - -export default function getRoutes() { - const routes: RouteRecordRaw[] = []; - - if (checkDbConsole('personalWorkbench.myTickets')) { - routes.push(selfServiceMyTicketsRoute); - } - - if (checkDbConsole('personalWorkbench.myTodos')) { - routes.push(myTodosRoute); - } - - return routes; -} diff --git a/dbm-ui/frontend/tsconfig.json b/dbm-ui/frontend/tsconfig.json index f79d7a105c..8070752ed6 100644 --- a/dbm-ui/frontend/tsconfig.json +++ b/dbm-ui/frontend/tsconfig.json @@ -10,7 +10,7 @@ "@/*": ["src/*"], "@services/*": ["src/services/*"], "@hooks": ["src/hooks"], - "@router/*": ["src/router/*"], + "@router": ["src/router"], "@stores": ["src/stores"], "@common/*": ["src/common/*"], "@components/*": ["src/components/*"],