From 3474b5b701a305b69950556926578fb5e1cfbc6c Mon Sep 17 00:00:00 2001 From: zhangboxuan Date: Thu, 7 Mar 2024 19:30:38 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat=20task=20=E4=BC=98=E5=8C=96=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/clusterapi.js | 128 +++++++++++++++++++++--------------------- src/api/commonApi.js | 44 +++++++-------- 2 files changed, 86 insertions(+), 86 deletions(-) diff --git a/src/api/clusterapi.js b/src/api/clusterapi.js index 73a28f2..ee7b468 100644 --- a/src/api/clusterapi.js +++ b/src/api/clusterapi.js @@ -1,107 +1,107 @@ -import request from '@/utils/request' +import request from "@/utils/request"; -// 创建集群 +// 创建集群 export function creatCluster(data) { - return request({ - url: '/cluster/creatCluster', - method: 'post', - data - }) + return request({ + url: "/cluster/creatCluster", + method: "post", + data, + }); } // 分页获取集群存储资源 export function pageStorage(data) { - return request({ - url: '/cluster/pageStorage', - method: 'post', - data - }) + return request({ + url: "/cluster/pageStorage", + method: "post", + data, + }); } // 分页获取集群 export function pageCluster(data) { - return request({ - url: '/cluster/pageCluster', - method: 'post', - data - }) + return request({ + url: "/cluster/pageCluster", + method: "post", + data, + }); } // 集群详情 export function clusterInfo(data) { - return request({ - url: '/cluster/clusterInfo', - method: 'post', - data - }) + return request({ + url: "/cluster/clusterInfo", + method: "post", + data, + }); } // 分页获取物理主机列表 export function pagePhysicalHost(data) { - return request({ - url: '/cluster/pagePhysicalHost', - method: 'post', - data - }) + return request({ + url: "/cluster/pagePhysicalHost", + method: "post", + data, + }); } // 编辑集群-获取集群内容 export function clusterDetail(data) { - return request({ - url: '/cluster/clusterDetail', - method: 'post', - data - }) + return request({ + url: "/cluster/clusterDetail", + method: "post", + data, + }); } // 编辑集群 export function modifyCluster(data) { - return request({ - url: '/cluster/modifyCluster', - method: 'post', - data - }) + return request({ + url: "/cluster/modifyCluster", + method: "post", + data, + }); } // 获取登录用户可见的物理集群列表 export function getLoginUserCluster(data) { - return request({ - url: '/cluster/getLoginUserCluster', - method: 'post', - data - }) + return request({ + url: "/cluster/getLoginUserCluster", + method: "post", + data, + }); } // 校验集群账号密码 export function checkClusterUserNameAndPassword(data) { - return request({ - url: '/cluster/checkClusterUserNameAndPassword', - method: 'post', - data - }) + return request({ + url: "/cluster/checkClusterUserNameAndPassword", + method: "post", + data, + }); } // 获取登录集群地址 export function getQuickLoginUrl(data) { - return request({ - url: '/cluster/getQuickLoginUrl', - method: 'post', - data - }) + return request({ + url: "/cluster/getQuickLoginUrl", + method: "post", + data, + }); } // 删除集群 export function deleteCluster(data) { - return request({ - url: '/cluster/deleteCluster', - method: 'post', - data - }) + return request({ + url: "/cluster/deleteCluster", + method: "post", + data, + }); } -// 启用禁用 +// 启用禁用 export function changeClusterUse(data) { - return request({ - url: '/cluster/updateClusterStorageForbadeStatus', - method: 'post', - data - }) -} \ No newline at end of file + return request({ + url: "/cluster/updateClusterStorageForbadeStatus", + method: "post", + data, + }); +} diff --git a/src/api/commonApi.js b/src/api/commonApi.js index 6144c14..185de92 100644 --- a/src/api/commonApi.js +++ b/src/api/commonApi.js @@ -1,33 +1,33 @@ -import request from '@/utils/request' +import request from "@/utils/request"; //获取云服务器分组列表 export function getServerVmGroup(data) { - return request({ - url: '/general/serverVmGroups', - method: 'post', - data - }) + return request({ + url: "/general/serverVmGroups", + method: "post", + data, + }); } //获取云服务器分组云服务器列表 export function getServerVmList(data) { - return request({ - url: '/general/serverVm/list', - method: 'post', - data - }) + return request({ + url: "/general/serverVm/list", + method: "post", + data, + }); } //获取云服务器存储位置 export function getbackupServerList(data) { - return request({ - url: '/general/backupServer/list', - method: 'post', - data - }) + return request({ + url: "/general/backupServer/list", + method: "post", + data, + }); } //获取网卡列表 export function getNetworkCardList(data) { - return request({ - url: '/network/specification/list', - method: 'post', - data - }) -} \ No newline at end of file + return request({ + url: "/network/specification/list", + method: "post", + data, + }); +} -- Gitee From 7e7b807f9002d9da0e93e9ab1bb47a2195ed7664 Mon Sep 17 00:00:00 2001 From: zhangboxuan Date: Thu, 7 Mar 2024 20:04:17 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat=20task=20=E4=BC=98=E5=8C=96=E6=9D=83?= =?UTF-8?q?=E9=99=90=E3=80=81=E4=BC=98=E5=8C=96=E9=A1=B5=E9=9D=A2=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E3=80=81=E6=96=B0=E5=A2=9E=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/clusterapi.js | 124 +- src/api/commonApi.js | 33 - src/api/ecsapi.js | 18 +- src/api/imageApi.js | 117 -- src/api/login.js | 14 +- src/api/operateLog.js | 19 - src/api/organization.js | 10 - src/api/remoteDisasterRecovery.js | 294 ---- src/api/serverVm.js | 16 - src/api/taskcenter.js | 55 - src/api/userMgr.js | 11 +- src/api/vMwareMgr.js | 81 +- src/api/vcenter.js | 405 ------ src/api/vdcapi.js | 32 - src/api/workOrder.js | 9 - .../common/dataDictionary/dictionary.js | 205 +-- .../common/dataDictionary/imageLogDic.js | 131 -- src/assets/common/lang/en/alarmevents.js | 7 +- src/assets/common/lang/en/common.js | 612 ++++----- src/assets/common/lang/en/externalCloud.js | 267 ---- src/assets/common/lang/en/imageMgr.js | 75 - src/assets/common/lang/en/index.js | 14 +- src/assets/common/lang/en/operateLog.js | 17 - src/assets/common/lang/en/operateMgr.js | 3 +- src/assets/common/lang/en/reliableCenter.js | 356 ----- src/assets/common/lang/en/resourceMgr.js | 765 +++++------ src/assets/common/lang/en/taskcenter.js | 36 - src/assets/common/lang/en/transferMgr.js | 20 - src/assets/common/lang/index.js | 2 +- src/assets/common/lang/zh/alarmevents.js | 8 +- src/assets/common/lang/zh/common.js | 605 ++++---- src/assets/common/lang/zh/externalCloud.js | 246 ---- src/assets/common/lang/zh/imageMgr.js | 75 - src/assets/common/lang/zh/index.js | 12 - src/assets/common/lang/zh/operateLog.js | 17 - src/assets/common/lang/zh/operateMgr.js | 3 +- src/assets/common/lang/zh/reliableCenter.js | 338 ----- src/assets/common/lang/zh/resourceMgr.js | 734 +++++----- src/assets/common/lang/zh/taskcenter.js | 36 - src/assets/common/lang/zh/transferMgr.js | 20 - src/assets/hnkylin/cant-brz.png | Bin 12574 -> 0 bytes src/assets/hnkylin/dr-explain.png | Bin 25527 -> 0 bytes src/assets/hnkylin/main-server.png | Bin 8453 -> 0 bytes src/assets/hnkylin/main2sleaver.png | Bin 27776 -> 0 bytes src/assets/hnkylin/online-brz.png | Bin 14776 -> 0 bytes src/assets/hnkylin/s2m.png | Bin 19718 -> 0 bytes src/assets/hnkylin/slaverMain.png | Bin 9506 -> 0 bytes src/assets/hnkylin/slaverSlaver.png | Bin 12173 -> 0 bytes src/assets/icon/u524.png | Bin 9527 -> 0 bytes src/assets/icon/u582.png | Bin 1635 -> 0 bytes src/assets/icon/wh.png | Bin 6031 -> 0 bytes src/assets/icon/whb.png | Bin 6207 -> 0 bytes src/components/Breadcrumb/index.vue | 26 +- src/components/Footbtn/index.vue | 5 +- src/components/Hightchart/index.vue | 57 +- src/components/MctablePro/index.vue | 53 +- src/components/SearchInput/index.vue | 6 + src/components/SvgIcon/index.vue | 42 +- src/components/TreeSelect/index.vue | 169 --- src/components/getNetworkCardBox.vue | 215 --- src/components/headerBox/index.vue | 57 - src/components/messageBox.vue | 134 -- src/components/networkSpecDetail.vue | 197 --- src/components/statuscell/index.vue | 161 --- src/components/tips.vue | 54 - src/components/utilsButton/index.vue | 61 - src/icons/index.js | 8 +- src/icons/svg/drLoading.svg | 7 - src/icons/svg/recover.svg | 1 - src/icons/svg/warning.svg | 6 - src/layout/components/Navbar.vue | 24 +- src/layout/components/Sidebar/index.vue | 9 +- src/layout/components/changePwdCont.vue | 3 +- src/layout/components/menuNav.vue | 48 +- src/layout/externalCloudPage/index.vue | 55 - src/layout/index.vue | 124 +- src/layout/reliableCenter/index.vue | 53 - src/mixins/commonPageBtnPromiss.js | 1 + src/permission.js | 5 +- src/router/index.js | 6 - src/router/modules/externalCloud.js | 63 - src/router/modules/monitorRoute.js | 28 +- src/router/modules/reliableCenter.js | 79 -- src/router/modules/resourceRoute.js | 157 +-- src/store/modules/user.js | 4 +- src/styles/element-ui.scss | 60 +- src/styles/index.scss | 3 +- src/styles/mixin.scss | 47 +- src/styles/newTheme.scss | 287 ---- src/styles/themeDark/iconBg.scss | 18 - src/styles/themeDark/images/ljsj.png | Bin 7221 -> 0 bytes src/styles/themeDark/images/rzbf.png | Bin 6260 -> 0 bytes src/styles/themeDark/images/zbkcp.png | Bin 6066 -> 0 bytes src/styles/themeDark/index.scss | 427 +++--- src/styles/themeLight/iconBg.scss | 19 - src/styles/themeLight/index.scss | 263 ++-- src/styles/variables.scss | 14 +- src/utils/dealtree.js | 154 ++- src/utils/index.js | 48 +- src/utils/request.js | 19 +- src/utils/transformat.js | 36 +- src/utils/validate.js | 66 +- src/views/components/bindVdc/bindVdcBox.vue | 8 +- src/views/components/bindVdc/bindVdcModal.vue | 5 +- .../bindVirtualFirewallBox.vue | 12 +- .../bindVirtualFirewallModal.vue | 7 +- .../setVdcNetWork/createEditNetworkBox.vue | 4 +- .../setVdcNetWork/selectVdcNetWorkBox.vue | 12 +- .../setVdcNetWork/setVdcNetWorkBox.vue | 107 +- .../setVdcNetWork/setVdcNetWorkModal.vue | 5 +- .../components/vdcBindVdc/bindVdcBox.vue | 8 +- .../components/vdcBindVdc/bindVdcModal.vue | 5 +- .../components/main/actbtnPmsList.js | 447 ------ .../components/main/btn-more.vue | 139 -- .../components/main/header-bar.vue | 437 ------ .../externalCloud/components/main/index.js | 2 - .../components/statuscell/index.vue | 143 -- .../vcenter/cloudServerDetail/detail-disk.vue | 109 -- .../vcenter/cloudServerDetail/detail-log.vue | 154 --- .../cloudServerDetail/detail-monitor.vue | 360 ----- .../cloudServerDetail/detail-network.vue | 89 -- .../cloudServerDetail/detail-summary.vue | 365 ----- .../vcenter/cloudServerDetail/header-bar.vue | 160 --- .../vcenter/cloudServerDetail/index.js | 5 - .../vcenter/cloudServerDetail/index.vue | 300 ---- .../cloudServerDetail/serverI18nMap.js | 149 -- .../cloudServerDetail/taskDetailInfo.js | 960 ------------- .../vcenter/createEditModal/createEditBox.vue | 835 ------------ .../createEditModal/createEditModal.vue | 55 - src/views/externalCloud/vcenter/detail.vue | 101 -- .../vcenter/detailPage/cloudServer.vue | 905 ------------ .../cloneVmDetailBox.vue | 311 ----- .../createVmDetailBox.vue | 932 ------------- .../cloudServerCommpoents/editVmBox.vue | 906 ------------ .../cloudServerCommpoents/editVmDetailBox.vue | 53 - .../cloudServerCommpoents/getStorageBox.vue | 261 ---- .../cloudServerCommpoents/getTemplateBox.vue | 165 --- .../cloudServerCommpoents/transferVmBox.vue | 550 -------- .../vcenter/detailPage/clusterSummary.vue | 466 ------- .../vcenter/detailPage/detailStorage.vue | 193 --- .../vcenter/detailPage/pagePhysicalHost.vue | 189 --- src/views/externalCloud/vcenter/vcenter.vue | 400 ------ src/views/homePage/index.vue | 127 +- src/views/homePage/ordinaryHome/index.vue | 4 +- .../alarmevent/alarmLog/clusterAlarmlog.vue | 20 +- .../alarmLog/clusterAlarmlogHeader.vue | 21 +- .../alarmevent/alarmLog/platformAlarmlog.vue | 23 +- .../alarmLog/platformAlarmlogHeader.vue | 68 +- .../alarmSet/cloudServerAlarmPolicy.vue | 3 + .../alarmSet/clusterAlarmSettings.vue | 13 +- .../alarmevent/alarmSet/header-bar.vue | 22 +- .../alarmSet/physicalServerAlertPolicy.vue | 3 + .../alarmSet/platformAlarmSettings.vue | 3 + .../cloudServerevents/header-bar.vue | 20 +- .../cloudServerevents/header-barNew.vue | 178 +++ .../operationLog/cloudServerevents/index.vue | 21 +- .../physicalHostevents/header-bar.vue | 18 +- .../operationLog/physicalHostevents/index.vue | 18 +- src/views/monitor/taskcenter/index.vue | 277 ---- .../monitor/taskcenter/taskcenterHeader.vue | 258 ---- .../taskcenterModal/taskcenterBox.vue | 254 ---- .../taskcenterModal/taskcenterModal.vue | 121 -- .../taskcenter/teskDetail/teskDetailBox.vue | 139 -- .../taskcenter/teskDetail/teskDetailModal.vue | 64 - .../monitor/taskcenter/testCenterstatus.vue | 131 -- .../drawer/createNetworkConfigDrawer.vue | 2 +- src/views/network/header-bar.vue | 2 +- src/views/network/index.vue | 1 + .../roleMgr/createRole/createRoleBox.vue | 239 ++-- .../roleMgr/detailRole/detailRoleBox.vue | 7 +- .../operate/authorityMgr/roleMgr/index.vue | 31 +- .../userMgr/bindRoleModal/bindRoleBox.vue | 14 +- .../userMgr/bindRoleModal/bindRoleModal.vue | 7 +- .../userMgr/createUser/createUserBox.vue | 6 +- .../authorityMgr/userMgr/header-bar.vue | 13 +- .../operate/authorityMgr/userMgr/index.vue | 18 +- .../bindOrganization/bindOrgBox.vue | 17 +- .../bindOrganization/bindOrgModal.vue | 5 +- .../createOrganization/createorganizBox.vue | 21 +- .../organizationMgr}/header-bar.vue | 8 +- src/views/operate/organizationMgr/index.vue | 32 +- .../modifyOrgName/modifyOrgNameBox.vue | 16 +- src/views/reliableCenter/kcpha/addKcp.vue | 204 --- src/views/reliableCenter/kcpha/index.vue | 175 --- .../components/getNetworkCardBox.vue | 219 --- .../components/getStorageBox.vue | 224 --- .../components/recoverPlaceModel.vue | 318 ----- .../drStatus/disasterRecoveryDrill.vue | 422 ------ .../drStatus/drStatus.vue | 756 ---------- .../drStatus/mainSiteRecover.vue | 322 ----- .../drStatus/moveBackToThePrimary.vue | 154 --- .../drStatus/recoverModel.vue | 382 ------ .../drStatus/sleaverSiteRecovery.vue | 441 ------ .../drStrategy/chooseLocation.vue | 257 ---- .../drStrategy/choosenVmBox.vue | 512 ------- .../drStrategy/drStrategy.vue | 588 -------- .../drStrategy/drStrategyInfor.vue | 1212 ----------------- .../drStrategy/vmBox.vue | 107 -- .../remoteDisasterRecovery/index.vue | 71 - .../linkManagement/addLinkBox.vue | 426 ------ .../linkManagement/editLinkBox.vue | 484 ------- .../linkManagement/index.vue | 274 ---- .../linkManagement/testLinkBox.vue | 209 --- .../secSiteDisaterRecoverData.vue | 59 - .../siteManagement/addSiteBox.vue | 169 --- .../siteManagement/siteManagement.vue | 192 --- .../createEditModal/createEditBox.vue | 53 +- .../detailPage/detailStorage.vue | 5 + .../detailPage/pagePhysicalHost.vue | 5 + .../resource/availabilityZone/header-bar.vue | 16 +- src/views/resource/availabilityZone/index.vue | 30 +- .../selectNetSpecList/selectNetSpecList.vue | 147 -- .../ecs/components/detail/detail-disk.vue | 11 +- .../ecs/components/detail/detail-log.vue | 18 +- .../ecs/components/detail/detail-monitor.vue | 21 +- .../ecs/components/detail/detail-network.vue | 10 +- .../ecs/components/detail/detail-summary.vue | 16 +- .../ecs/components/detail/header-bar.vue | 6 +- .../resource/ecs/components/detail/index.vue | 22 +- .../ecs/components/detail/taskDetailInfo.js | 2 +- .../ecs/components/main/actbtnPmsList.js | 50 +- .../resource/ecs/components/main/btn-more.vue | 83 +- .../ecs/components/main/header-bar.vue | 68 +- .../components/makeImage/createEditBox.vue | 227 --- .../components/makeImage/createEditModal.vue | 55 - .../resource/ecs/components/systemImg.vue | 3 +- .../resource/ecs/components/taskStatusRow.vue | 8 +- .../bindNetworkModal/bindNetworkBox.vue | 206 --- .../bindNetworkModal/bindNetworkModal.vue | 63 - .../transferVm/bindOrgModal/bindOrgBox.vue | 173 --- .../transferVm/bindOrgModal/bindOrgModal.vue | 63 - .../transferVm/bindUserModal/bindUserBox.vue | 202 --- .../bindUserModal/bindUserModal.vue | 63 - .../components/transferVm/createEditBox.vue | 428 ------ .../components/transferVm/createEditModal.vue | 68 - src/views/resource/ecs/index.vue | 317 ++--- src/views/resource/hostTube/detalPage.vue | 124 -- src/views/resource/hostTube/index.vue | 503 ------- src/views/resource/hostTube/vmData.vue | 303 ----- .../convertTopublicMirror/createEditBox.vue | 183 --- .../convertTopublicMirror/createEditModal.vue | 55 - .../convertTosharedImage/createEditBox.vue | 189 --- .../convertTosharedImage/createEditModal.vue | 55 - .../imageMgr/components/imageDetail.vue | 293 ---- .../imageMgr/components/imageOperateLog.vue | 293 ---- .../imageMgr/components/imageStatus.vue | 99 -- .../imageMgr/components/imageupload.vue | 295 ---- .../imageMgr/components/imageuploading.vue | 250 ---- .../imageMgr/components/logPercentBox.vue | 49 - src/views/resource/imageMgr/index.vue | 64 - .../privateImage/editImage/createEditBox.vue | 141 -- .../editImage/createEditModal.vue | 55 - .../resource/imageMgr/privateImage/header.vue | 125 -- .../resource/imageMgr/privateImage/index.vue | 540 -------- .../publicImage/editImage/createEditBox.vue | 184 --- .../publicImage/editImage/createEditModal.vue | 55 - .../resource/imageMgr/publicImage/header.vue | 143 -- .../resource/imageMgr/publicImage/index.vue | 495 ------- .../sharedMirror/editImage/createEditBox.vue | 143 -- .../editImage/createEditModal.vue | 55 - .../resource/imageMgr/sharedMirror/header.vue | 151 -- .../resource/imageMgr/sharedMirror/index.vue | 539 -------- .../createEditModal/createEditBox.vue | 134 +- src/views/resource/physicalCluster/detail.vue | 16 +- .../detailPage/detailStorage.vue | 79 +- .../bindVirtualFirewallBox.vue | 150 -- .../bindVirtualFirewallModal.vue | 70 - .../detailPage/networkDetail/mcL3Network.vue | 163 --- .../detailPage/networkDetail/netWorkSpec.vue | 1075 --------------- .../networkDetail/networkDetail.vue | 284 ---- .../networkDetail/networkSpecDetail.vue | 195 --- .../detailPage/pagePhysicalHost.vue | 5 + .../resource/physicalCluster/header-bar.vue | 6 +- src/views/resource/physicalCluster/index.vue | 38 +- .../createEditModal/createEditBox.vue | 30 +- .../vMwareMgr/detailPage/pagePhysicalHost.vue | 14 +- src/views/resource/vMwareMgr/index.vue | 3 + .../vdcPage/changeSpecModal/createEditBox.vue | 21 +- .../vdcPage/createEditModal/createEditBox.vue | 132 +- .../vdcPage/detailPage/clusterSummary.vue | 163 +-- src/views/resource/vdcPage/index.vue | 37 +- .../vdcPage/vdcEditModal/createEditBox.vue | 108 +- .../bindIsoTempModal/bindTemplateBox.vue | 33 +- .../bindIsoTempModal/bindTemplateModal.vue | 5 +- .../changeSpecModal/createEditBox.vue | 23 +- src/views/workorder/detail/detail.vue | 38 +- src/views/workorder/detail/ipsetDeiatl.vue | 3 +- .../workorder/detail/modifyVdcDetail.vue | 6 +- .../workorder/drawer/PassServervmApply.vue | 102 +- .../workorder/drawer/PassServervmIsoApply.vue | 407 +++--- .../workorder/drawer/PassServervmModify.vue | 24 +- .../workorder/drawer/computResources.vue | 11 +- .../drawer/pass-apply-servervm-drawer.vue | 5 +- src/views/workorder/drawer/pass-drawer.vue | 67 +- src/views/workorder/drawer/refuse-drawer.vue | 19 +- .../workorder/drawer/selectCluster-drawer.vue | 15 +- .../workorder/drawer/selectNetwork-drawer.vue | 107 +- .../drawer/selectTagNames-drawer.vue | 20 +- src/views/workorder/drawer/setDiskInfo.vue | 4 +- src/views/workorder/drawer/setNetWorkInfo.vue | 58 +- src/views/workorder/header-bar.vue | 28 +- src/views/workorder/index.vue | 16 +- src/views/workorder/ipsetDeiatl.vue | 3 +- 303 files changed, 3767 insertions(+), 37727 deletions(-) delete mode 100644 src/api/commonApi.js delete mode 100644 src/api/imageApi.js delete mode 100644 src/api/operateLog.js delete mode 100644 src/api/remoteDisasterRecovery.js delete mode 100644 src/api/taskcenter.js delete mode 100644 src/api/vcenter.js delete mode 100644 src/assets/common/dataDictionary/imageLogDic.js delete mode 100644 src/assets/common/lang/en/externalCloud.js delete mode 100644 src/assets/common/lang/en/imageMgr.js delete mode 100644 src/assets/common/lang/en/operateLog.js delete mode 100644 src/assets/common/lang/en/reliableCenter.js delete mode 100644 src/assets/common/lang/en/taskcenter.js delete mode 100644 src/assets/common/lang/en/transferMgr.js delete mode 100644 src/assets/common/lang/zh/externalCloud.js delete mode 100644 src/assets/common/lang/zh/imageMgr.js delete mode 100644 src/assets/common/lang/zh/operateLog.js delete mode 100644 src/assets/common/lang/zh/reliableCenter.js delete mode 100644 src/assets/common/lang/zh/taskcenter.js delete mode 100644 src/assets/common/lang/zh/transferMgr.js delete mode 100644 src/assets/hnkylin/cant-brz.png delete mode 100644 src/assets/hnkylin/dr-explain.png delete mode 100644 src/assets/hnkylin/main-server.png delete mode 100644 src/assets/hnkylin/main2sleaver.png delete mode 100644 src/assets/hnkylin/online-brz.png delete mode 100644 src/assets/hnkylin/s2m.png delete mode 100644 src/assets/hnkylin/slaverMain.png delete mode 100644 src/assets/hnkylin/slaverSlaver.png delete mode 100644 src/assets/icon/u524.png delete mode 100644 src/assets/icon/u582.png delete mode 100644 src/assets/icon/wh.png delete mode 100644 src/assets/icon/whb.png delete mode 100644 src/components/TreeSelect/index.vue delete mode 100644 src/components/getNetworkCardBox.vue delete mode 100644 src/components/headerBox/index.vue delete mode 100644 src/components/messageBox.vue delete mode 100644 src/components/networkSpecDetail.vue delete mode 100644 src/components/statuscell/index.vue delete mode 100644 src/components/tips.vue delete mode 100644 src/components/utilsButton/index.vue delete mode 100644 src/icons/svg/drLoading.svg delete mode 100644 src/icons/svg/recover.svg delete mode 100644 src/icons/svg/warning.svg delete mode 100644 src/layout/externalCloudPage/index.vue delete mode 100644 src/layout/reliableCenter/index.vue delete mode 100644 src/router/modules/externalCloud.js delete mode 100644 src/router/modules/reliableCenter.js delete mode 100644 src/styles/newTheme.scss delete mode 100644 src/styles/themeDark/images/ljsj.png delete mode 100644 src/styles/themeDark/images/rzbf.png delete mode 100644 src/styles/themeDark/images/zbkcp.png delete mode 100644 src/views/externalCloud/components/main/actbtnPmsList.js delete mode 100644 src/views/externalCloud/components/main/btn-more.vue delete mode 100644 src/views/externalCloud/components/main/header-bar.vue delete mode 100644 src/views/externalCloud/components/main/index.js delete mode 100644 src/views/externalCloud/components/statuscell/index.vue delete mode 100644 src/views/externalCloud/vcenter/cloudServerDetail/detail-disk.vue delete mode 100644 src/views/externalCloud/vcenter/cloudServerDetail/detail-log.vue delete mode 100644 src/views/externalCloud/vcenter/cloudServerDetail/detail-monitor.vue delete mode 100644 src/views/externalCloud/vcenter/cloudServerDetail/detail-network.vue delete mode 100644 src/views/externalCloud/vcenter/cloudServerDetail/detail-summary.vue delete mode 100644 src/views/externalCloud/vcenter/cloudServerDetail/header-bar.vue delete mode 100644 src/views/externalCloud/vcenter/cloudServerDetail/index.js delete mode 100644 src/views/externalCloud/vcenter/cloudServerDetail/index.vue delete mode 100644 src/views/externalCloud/vcenter/cloudServerDetail/serverI18nMap.js delete mode 100644 src/views/externalCloud/vcenter/cloudServerDetail/taskDetailInfo.js delete mode 100644 src/views/externalCloud/vcenter/createEditModal/createEditBox.vue delete mode 100644 src/views/externalCloud/vcenter/createEditModal/createEditModal.vue delete mode 100644 src/views/externalCloud/vcenter/detail.vue delete mode 100644 src/views/externalCloud/vcenter/detailPage/cloudServer.vue delete mode 100644 src/views/externalCloud/vcenter/detailPage/cloudServerCommpoents/cloneVmDetailBox.vue delete mode 100644 src/views/externalCloud/vcenter/detailPage/cloudServerCommpoents/createVmDetailBox.vue delete mode 100644 src/views/externalCloud/vcenter/detailPage/cloudServerCommpoents/editVmBox.vue delete mode 100644 src/views/externalCloud/vcenter/detailPage/cloudServerCommpoents/editVmDetailBox.vue delete mode 100644 src/views/externalCloud/vcenter/detailPage/cloudServerCommpoents/getStorageBox.vue delete mode 100644 src/views/externalCloud/vcenter/detailPage/cloudServerCommpoents/getTemplateBox.vue delete mode 100644 src/views/externalCloud/vcenter/detailPage/cloudServerCommpoents/transferVmBox.vue delete mode 100644 src/views/externalCloud/vcenter/detailPage/clusterSummary.vue delete mode 100644 src/views/externalCloud/vcenter/detailPage/detailStorage.vue delete mode 100644 src/views/externalCloud/vcenter/detailPage/pagePhysicalHost.vue delete mode 100644 src/views/externalCloud/vcenter/vcenter.vue create mode 100644 src/views/monitor/operationLog/cloudServerevents/header-barNew.vue delete mode 100644 src/views/monitor/taskcenter/index.vue delete mode 100644 src/views/monitor/taskcenter/taskcenterHeader.vue delete mode 100644 src/views/monitor/taskcenter/taskcenterModal/taskcenterBox.vue delete mode 100644 src/views/monitor/taskcenter/taskcenterModal/taskcenterModal.vue delete mode 100644 src/views/monitor/taskcenter/teskDetail/teskDetailBox.vue delete mode 100644 src/views/monitor/taskcenter/teskDetail/teskDetailModal.vue delete mode 100644 src/views/monitor/taskcenter/testCenterstatus.vue rename src/views/{externalCloud/vcenter => operate/organizationMgr}/header-bar.vue (80%) delete mode 100644 src/views/reliableCenter/kcpha/addKcp.vue delete mode 100644 src/views/reliableCenter/kcpha/index.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/components/getNetworkCardBox.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/components/getStorageBox.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/components/recoverPlaceModel.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/drStatus/disasterRecoveryDrill.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/drStatus/drStatus.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/drStatus/mainSiteRecover.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/drStatus/moveBackToThePrimary.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/drStatus/recoverModel.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/drStatus/sleaverSiteRecovery.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/drStrategy/chooseLocation.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/drStrategy/choosenVmBox.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/drStrategy/drStrategy.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/drStrategy/drStrategyInfor.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/drStrategy/vmBox.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/index.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/linkManagement/addLinkBox.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/linkManagement/editLinkBox.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/linkManagement/index.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/linkManagement/testLinkBox.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/secSiteDisaterRecoverData/secSiteDisaterRecoverData.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/siteManagement/addSiteBox.vue delete mode 100644 src/views/reliableCenter/remoteDisasterRecovery/siteManagement/siteManagement.vue delete mode 100644 src/views/resource/components/selectNetSpecList/selectNetSpecList.vue delete mode 100644 src/views/resource/ecs/components/makeImage/createEditBox.vue delete mode 100644 src/views/resource/ecs/components/makeImage/createEditModal.vue delete mode 100644 src/views/resource/ecs/components/transferVm/bindNetworkModal/bindNetworkBox.vue delete mode 100644 src/views/resource/ecs/components/transferVm/bindNetworkModal/bindNetworkModal.vue delete mode 100644 src/views/resource/ecs/components/transferVm/bindOrgModal/bindOrgBox.vue delete mode 100644 src/views/resource/ecs/components/transferVm/bindOrgModal/bindOrgModal.vue delete mode 100644 src/views/resource/ecs/components/transferVm/bindUserModal/bindUserBox.vue delete mode 100644 src/views/resource/ecs/components/transferVm/bindUserModal/bindUserModal.vue delete mode 100644 src/views/resource/ecs/components/transferVm/createEditBox.vue delete mode 100644 src/views/resource/ecs/components/transferVm/createEditModal.vue delete mode 100644 src/views/resource/hostTube/detalPage.vue delete mode 100644 src/views/resource/hostTube/index.vue delete mode 100644 src/views/resource/hostTube/vmData.vue delete mode 100644 src/views/resource/imageMgr/components/convertTopublicMirror/createEditBox.vue delete mode 100644 src/views/resource/imageMgr/components/convertTopublicMirror/createEditModal.vue delete mode 100644 src/views/resource/imageMgr/components/convertTosharedImage/createEditBox.vue delete mode 100644 src/views/resource/imageMgr/components/convertTosharedImage/createEditModal.vue delete mode 100644 src/views/resource/imageMgr/components/imageDetail.vue delete mode 100644 src/views/resource/imageMgr/components/imageOperateLog.vue delete mode 100644 src/views/resource/imageMgr/components/imageStatus.vue delete mode 100644 src/views/resource/imageMgr/components/imageupload.vue delete mode 100644 src/views/resource/imageMgr/components/imageuploading.vue delete mode 100644 src/views/resource/imageMgr/components/logPercentBox.vue delete mode 100644 src/views/resource/imageMgr/index.vue delete mode 100644 src/views/resource/imageMgr/privateImage/editImage/createEditBox.vue delete mode 100644 src/views/resource/imageMgr/privateImage/editImage/createEditModal.vue delete mode 100644 src/views/resource/imageMgr/privateImage/header.vue delete mode 100644 src/views/resource/imageMgr/privateImage/index.vue delete mode 100644 src/views/resource/imageMgr/publicImage/editImage/createEditBox.vue delete mode 100644 src/views/resource/imageMgr/publicImage/editImage/createEditModal.vue delete mode 100644 src/views/resource/imageMgr/publicImage/header.vue delete mode 100644 src/views/resource/imageMgr/publicImage/index.vue delete mode 100644 src/views/resource/imageMgr/sharedMirror/editImage/createEditBox.vue delete mode 100644 src/views/resource/imageMgr/sharedMirror/editImage/createEditModal.vue delete mode 100644 src/views/resource/imageMgr/sharedMirror/header.vue delete mode 100644 src/views/resource/imageMgr/sharedMirror/index.vue delete mode 100644 src/views/resource/physicalCluster/detailPage/networkDetail/bindVirtualFirewall/bindVirtualFirewallBox.vue delete mode 100644 src/views/resource/physicalCluster/detailPage/networkDetail/bindVirtualFirewall/bindVirtualFirewallModal.vue delete mode 100644 src/views/resource/physicalCluster/detailPage/networkDetail/mcL3Network.vue delete mode 100644 src/views/resource/physicalCluster/detailPage/networkDetail/netWorkSpec.vue delete mode 100644 src/views/resource/physicalCluster/detailPage/networkDetail/networkDetail.vue delete mode 100644 src/views/resource/physicalCluster/detailPage/networkDetail/networkSpecDetail.vue diff --git a/src/api/clusterapi.js b/src/api/clusterapi.js index ee7b468..57d0d91 100644 --- a/src/api/clusterapi.js +++ b/src/api/clusterapi.js @@ -1,107 +1,99 @@ -import request from "@/utils/request"; +import request from '@/utils/request' -// 创建集群 +// 创建集群 export function creatCluster(data) { - return request({ - url: "/cluster/creatCluster", - method: "post", - data, - }); + return request({ + url: '/cluster/creatCluster', + method: 'post', + data + }) } // 分页获取集群存储资源 export function pageStorage(data) { - return request({ - url: "/cluster/pageStorage", - method: "post", - data, - }); + return request({ + url: '/cluster/pageStorage', + method: 'post', + data + }) } // 分页获取集群 export function pageCluster(data) { - return request({ - url: "/cluster/pageCluster", - method: "post", - data, - }); + return request({ + url: '/cluster/pageCluster', + method: 'post', + data + }) } // 集群详情 export function clusterInfo(data) { - return request({ - url: "/cluster/clusterInfo", - method: "post", - data, - }); + return request({ + url: '/cluster/clusterInfo', + method: 'post', + data + }) } // 分页获取物理主机列表 export function pagePhysicalHost(data) { - return request({ - url: "/cluster/pagePhysicalHost", - method: "post", - data, - }); + return request({ + url: '/cluster/pagePhysicalHost', + method: 'post', + data + }) } // 编辑集群-获取集群内容 export function clusterDetail(data) { - return request({ - url: "/cluster/clusterDetail", - method: "post", - data, - }); + return request({ + url: '/cluster/clusterDetail', + method: 'post', + data + }) } // 编辑集群 export function modifyCluster(data) { - return request({ - url: "/cluster/modifyCluster", - method: "post", - data, - }); + return request({ + url: '/cluster/modifyCluster', + method: 'post', + data + }) } // 获取登录用户可见的物理集群列表 export function getLoginUserCluster(data) { - return request({ - url: "/cluster/getLoginUserCluster", - method: "post", - data, - }); + return request({ + url: '/cluster/getLoginUserCluster', + method: 'post', + data + }) } // 校验集群账号密码 export function checkClusterUserNameAndPassword(data) { - return request({ - url: "/cluster/checkClusterUserNameAndPassword", - method: "post", - data, - }); + return request({ + url: '/cluster/checkClusterUserNameAndPassword', + method: 'post', + data + }) } // 获取登录集群地址 export function getQuickLoginUrl(data) { - return request({ - url: "/cluster/getQuickLoginUrl", - method: "post", - data, - }); + return request({ + url: '/cluster/getQuickLoginUrl', + method: 'post', + data + }) } // 删除集群 export function deleteCluster(data) { - return request({ - url: "/cluster/deleteCluster", - method: "post", - data, - }); -} -// 启用禁用 -export function changeClusterUse(data) { - return request({ - url: "/cluster/updateClusterStorageForbadeStatus", - method: "post", - data, - }); -} + return request({ + url: '/cluster/deleteCluster', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/src/api/commonApi.js b/src/api/commonApi.js deleted file mode 100644 index 185de92..0000000 --- a/src/api/commonApi.js +++ /dev/null @@ -1,33 +0,0 @@ -import request from "@/utils/request"; -//获取云服务器分组列表 -export function getServerVmGroup(data) { - return request({ - url: "/general/serverVmGroups", - method: "post", - data, - }); -} -//获取云服务器分组云服务器列表 -export function getServerVmList(data) { - return request({ - url: "/general/serverVm/list", - method: "post", - data, - }); -} -//获取云服务器存储位置 -export function getbackupServerList(data) { - return request({ - url: "/general/backupServer/list", - method: "post", - data, - }); -} -//获取网卡列表 -export function getNetworkCardList(data) { - return request({ - url: "/network/specification/list", - method: "post", - data, - }); -} diff --git a/src/api/ecsapi.js b/src/api/ecsapi.js index 2289c4f..9e0680c 100644 --- a/src/api/ecsapi.js +++ b/src/api/ecsapi.js @@ -11,24 +11,10 @@ export function zoneOrgTree(data) { } // 云服务器列表 -export function serverVmList(data, headers) { +export function serverVmList(data) { return request({ url: '/serverVm/serverVmList', method: 'post', - data, - headers: { - ...headers - } + data }) } -// 云服务器列表 -export function defaultServerVmList(data, headers) { - return request({ - url: '/serverVm/servers/non/self', - method: 'post', - data, - headers: { - ...headers - } - }) -} \ No newline at end of file diff --git a/src/api/imageApi.js b/src/api/imageApi.js deleted file mode 100644 index 283db5c..0000000 --- a/src/api/imageApi.js +++ /dev/null @@ -1,117 +0,0 @@ -import request from '@/utils/request' - -// 检查镜像名称是否已存在 -export function checkImageName(data) { - return request({ - url: '/image/checkImageName', - method: 'post', - data - }) -} - -// 上传镜像 -export function uploadImage(data, cancelToken, cd) { - return request({ - url: '/image/uploadImage', - method: 'post', - data, - headers: { "Content-Type": "multipart/form-data" }, - onUploadProgress: function (progressEvent) { - if (progressEvent.lengthComputable) { - cd(progressEvent); - } - }, - cancelToken: cancelToken - }) -} - - -// 分页查询镜像 -export function pageImage(data) { - return request({ - url: '/image/pageImage', - method: 'post', - data - }) -} - -// 获取镜像详情 -export function imageDetail(data) { - return request({ - url: '/image/imageDetail', - method: 'post', - data - }) -} - -// 编辑镜像 -export function modifyImage(data) { - return request({ - url: '/image/modifyImage', - method: 'post', - data - }) -} - -// 镜像异常时-同步镜像 -export function syncImage(data) { - return request({ - url: '/image/syncImage', - method: 'post', - data - }) -} - -// 将私有镜像转为共享镜像 -export function changeToShare(data) { - return request({ - url: '/image/changeToShare', - method: 'post', - data - }) -} - -// 删除镜像 -export function deleteImage(data) { - return request({ - url: '/image/deleteImage', - method: 'post', - data - }) -} - -// 制作镜像 -export function makeImage(data) { - return request({ - url: '/image/makeImage', - method: 'post', - data - }) -} - -// 镜像详情 -export function imageInfo(data) { - return request({ - url: '/image/imageInfo', - method: 'post', - data - }) -} - -// 获取镜像下载地址 -export function imageDownload(data) { - return request({ - url: '/image/imageDownload', - method: 'post', - data - }) -} - -// 批量删除镜像 -export function batchDeleteImage(data) { - return request({ - url: '/image/batchDeleteImage', - method: 'post', - data - }) -} diff --git a/src/api/login.js b/src/api/login.js index 69315f4..ada616f 100644 --- a/src/api/login.js +++ b/src/api/login.js @@ -45,25 +45,19 @@ export function resetPassword(data) { } // 获取告警数量 -export function alarmNotifications(data, headers) { +export function alarmNotifications(data) { return request({ url: '/monitoring/alarmNotifications', method: 'post', - data, - headers: { - ...headers - } + data }) } // 获取待审核工单数量 -export function getWaitCheckCount(data, headers) { +export function getWaitCheckCount(data) { return request({ url: '/workOrder/getWaitCheckCount', method: 'post', - data, - headers: { - ...headers - } + data }) } \ No newline at end of file diff --git a/src/api/operateLog.js b/src/api/operateLog.js deleted file mode 100644 index ce87bca..0000000 --- a/src/api/operateLog.js +++ /dev/null @@ -1,19 +0,0 @@ -import request from '@/utils/request' - -// 根据操作对象获取操作日志 -export function listOperateLogByObjId(data) { - return request({ - url: '/operateLog/listOperateLogByObjId', - method: 'post', - data - }) -} - -// 获取子任务列表 -export function listChildOperateLogList(data) { - return request({ - url: '/operateLog/listChildOperateLogList', - method: 'post', - data - }) -} \ No newline at end of file diff --git a/src/api/organization.js b/src/api/organization.js index 28e9dc3..dc041f0 100644 --- a/src/api/organization.js +++ b/src/api/organization.js @@ -92,14 +92,4 @@ export function modifyTopOrgName(data) { method: 'post', data }) -} - - -// 私有镜像组织 -export function canSelectOrg(data) { - return request({ - url: '/image/canSelectOrg', - method: 'post', - data - }) } \ No newline at end of file diff --git a/src/api/remoteDisasterRecovery.js b/src/api/remoteDisasterRecovery.js deleted file mode 100644 index e428168..0000000 --- a/src/api/remoteDisasterRecovery.js +++ /dev/null @@ -1,294 +0,0 @@ -import request from '@/utils/request' - -// 获取站点列表 -export function drSiteList(data) { - return request({ - url: '/bdr/site/list', - method: 'post', - data - }) -} -// 删除站点数据 -export function delSiteConnect(data) { - return request({ - url: '/bdr/site/delete', - method: 'post', - data - }) -} - -// 获取集群列表 -export function getClusterList(data) { - return request({ - url: '/bdr/site/clusterList', - method: 'post', - data - }) -} - -// 添加集群 -export function addCluster(data) { - return request({ - url: '/bdr/site/add', - method: 'post', - data - }) -} -// 删除集群 -export function delCluster(data) { - return request({ - url: '/bdr/site/delete', - method: 'post', - data - }) -} -//获取站点列表 -export function getSiteArr(data) { - return request({ - url: '/bdr/site/link/siteNodeList', - method: 'post', - data - }) -} -//添加链路 -export function addLinkSite(data) { - return request({ - url: '/bdr/site/link/add', - method: 'post', - data - }) -} -//链路列表 -export function linkSiteList(data) { - return request({ - url: '/bdr/site/link/list', - method: 'post', - data - }) -} -//检测链路 -export function checkLinkConnect(data) { - return request({ - url: '/bdr/site/link/check', - method: 'post', - data - }) -} -//删除链路 -export function delLinkConnect(data) { - return request({ - url: '/bdr/site/link/delete', - method: 'post', - data - }) -} - -//链路编辑详情 -export function bdrLinkDetail(data) { - return request({ - url: '/bdr/site/link/detail', - method: 'post', - data - }) -} -//链路编辑提交 -export function editLinkSite(data) { - return request({ - url: '/bdr/site/link/edit', - method: 'post', - data - }) -} -//容灾策略列表 -export function getBdrPlanList(data) { - return request({ - url: '/bdr/plan/page', - method: 'post', - data - }) -} -//容灾策略虚拟机列表 -export function getPlanVmList(data) { - return request({ - url: '/bdr/plan/machineList', - method: 'post', - data - }) -} -//创建策略 -export function handelAddPlan(data) { - return request({ - url: '/bdr/plan/add', - method: 'post', - data - }) -} -//删除容灾策略 -export function handelDelPlan(data){ - return request({ - url: '/bdr/plan/delete', - method: 'post', - data - }) -} -//容灾策略启用禁用 -export function handelSwitchPlan(data){ - return request({ - url: '/bdr/plan/switch', - method: 'post', - data - }) -} - -//获取容灾策略详情 -export function handelGetDeatail(data){ - return request({ - url: '/bdr/plan/detail', - method: 'post', - data - }) -} -//修改容灾策略详情 -export function handelEditPlan(data){ - return request({ - url: '/bdr/plan/edit', - method: 'post', - data - }) -} -//立即执行 -export function handelRunBdrNow(data){ - return request({ - url: '/bdr/plan/batchImmediateExecution', - method: 'post', - data - }) -} -//批量 -export function handelbatchSwitchBdr(data){ - return request({ - url: '/bdr/plan/batchSwitch', - method: 'post', - data - }) -} -export function siteBackupData(data){ - return request({ - url: '/bdr/machine/siteBackupData', - method: 'post', - data - }) -} -//恢复站点数据 -export function getBackupDataList(data){ - return request({ - url: '/bdr/machine/backupList', - method: 'post', - data - }) -} -//同步恢复 -export function handelRpoBackupFile(data){ - return request({ - url: '/bdr/machine/rpoBackupFile', - method: 'post', - data - }) -} -//差异性比较 -export function handelCheckDifference(data){ - return request({ - url: '/bdr/machine/checkDifference', - method: 'post', - data - }) -} -//提交容灾演练 -export function handelStartDrill(data){ - return request({ - url: '/bdr/machine/startDrill', - method: 'post', - data - }) -} -//提交结束容灾演练 -export function handelEndDrill(data){ - return request({ - url: '/bdr/machine/endDrill', - method: 'post', - data - }) -} -// 主站点备份恢复 -export function handelMasterSiteRecover(data){ - return request({ - url: '/bdr/machine/masterSiteRecover', - method: 'post', - data - }) -} -// 计划内备份恢复 -export function handelPlanRecover(data){ - return request({ - url: '/bdr/machine/planRecover', - method: 'post', - data - }) -} -// 灾难后恢复备份恢复 -export function handelfailureRecover(data){ - return request({ - url: '/bdr/machine/failureRecover', - method: 'post', - data - }) -} -// 数据回迁 -export function handelmoveBack(data){ - return request({ - url: '/bdr/machine/moveBack', - method: 'post', - data - }) -} - -//主备kcp列表 -export function handelGetKcpHa(data){ - return request({ - url: '/ha/nodeList', - method: 'post', - data - }) -} -//主备kcp列表删除 -export function handelDelKcpHa(data){ - return request({ - url: '/ha/deleteSlave', - method: 'post', - data - }) -} -//主备kcp 备变主 -export function handelChangeToMaster(data){ - return request({ - url: '/ha/changeToMaster', - method: 'post', - data - }) -} -//主备kcp 添加 -export function handelAddHa(data){ - return request({ - url: '/ha/addSlave', - method: 'post', - data - }) -} -//主备站点备份文件列表 -export function backupDataList(data){ - return request({ - url: '/bdr/machine/backupDataList', - method: 'post', - data - }) -} \ No newline at end of file diff --git a/src/api/serverVm.js b/src/api/serverVm.js index 27e7a71..ac7c1f2 100644 --- a/src/api/serverVm.js +++ b/src/api/serverVm.js @@ -270,20 +270,4 @@ export function serverVmAlarmEvent(data) { }) } -// 云服务器转移 -export function serverVmTransfer(data) { - return request({ - url: '/serverVm/serverVmTransfer', - method: 'post', - data - }) -} -// 云服务器转移(跨组织) -export function transferCanSelectOrg(data) { - return request({ - url: '/serverVm/transferCanSelectOrg', - method: 'post', - data - }) -} diff --git a/src/api/taskcenter.js b/src/api/taskcenter.js deleted file mode 100644 index e11d436..0000000 --- a/src/api/taskcenter.js +++ /dev/null @@ -1,55 +0,0 @@ -import request from '@/utils/request' - -// 获取操作类型列表 -export function getOperateLogType(data) { - return request({ - url: '/operateLog/getOperateLogType', - method: 'post', - data - }) -} - -// 获取操作任务列表 -export function getOperateLogAction(data) { - return request({ - url: '/operateLog/getOperateLogAction', - method: 'post', - data - }) -} - -// 获取操状态接口 -export function getOperateLogStatus(data) { - return request({ - url: '/operateLog/getOperateLogStatus', - method: 'post', - data - }) -} - -// 分页获取操作日志 -export function pageOperateLog(data) { - return request({ - url: '/operateLog/pageOperateLog', - method: 'post', - data - }) -} - -// 获取子任务 -export function childOperateLogList(data) { - return request({ - url: '/operateLog/childOperateLogList', - method: 'post', - data - }) -} - -// 任务详情 -export function operateLogDetail(data) { - return request({ - url: '/operateLog/operateLogDetail', - method: 'post', - data - }) -} diff --git a/src/api/userMgr.js b/src/api/userMgr.js index 7b60594..78c16b7 100644 --- a/src/api/userMgr.js +++ b/src/api/userMgr.js @@ -53,13 +53,4 @@ export function modifyUser(data) { method: 'post', data }) -} - -// 编辑用户 -export function pageUserByOrg(data) { - return request({ - url: '/user/pageUserByOrg', - method: 'post', - data - }) -} +} \ No newline at end of file diff --git a/src/api/vMwareMgr.js b/src/api/vMwareMgr.js index 1fb111c..b5070c8 100644 --- a/src/api/vMwareMgr.js +++ b/src/api/vMwareMgr.js @@ -61,83 +61,4 @@ export function powerOff(data) { method: 'post', data }) -} - - - -// 添加主机 -export function bareMetalcreate(data) { - return request({ - url: '/bareMetal/create', - method: 'post', - data - }) -} -// 编辑主机 -export function bareMetalupdate(data) { - return request({ - url: '/bareMetal/update', - method: 'post', - data - }) -} -// 查询主机列表 -export function bareMetallist(data) { - return request({ - url: '/bareMetal/list', - method: 'post', - data - }) -} -// 查询主机详情 -export function bareMetaldetail(data) { - return request({ - url: '/bareMetal/detail', - method: 'post', - data - }) -} -// 主机开机 -export function bareMetalpowerOn(data) { - return request({ - url: '/bareMetal/powerOn', - method: 'post', - data - }) -} -// 主机关机 -export function bareMetalpowerOff(data) { - return request({ - url: '/bareMetal/powerOff', - method: 'post', - data - }) -} -// 主机监控信息 -export function monitorinfo(data) { - return request({ - url: '/bareMetal/monitor/info', - method: 'post', - data - }) -} - -//删除主机 -export function bareMetaldelete(data) { - return request({ - url: '/bareMetal/delete', - method: 'post', - data - }) -} - - //删除主机 -export function bareMetalmonitor(data) { - return request({ - url: '/bareMetal/monitor/info', - method: 'post', - data - }) -} - - \ No newline at end of file +} \ No newline at end of file diff --git a/src/api/vcenter.js b/src/api/vcenter.js deleted file mode 100644 index 9c3116f..0000000 --- a/src/api/vcenter.js +++ /dev/null @@ -1,405 +0,0 @@ -import request from '@/utils/request' -//已纳管vcenter列表查询 -export function getVcenterList(data) { - return request({ - url: '/vcenter/list', - method: 'post', - data - }) -} - -//删除vcenter -export function deleteCluster(data) { - return request({ - url: '/vcenter/delete', - method: 'post', - data - }) -} -//vcenter名称重复校验 -export function checkNameIp(data) { - return request({ - url: '/vcenter/exist/check', - method: 'post', - data - }) -} -//vcenter创建列表校验 -export function getVcenterStorage(data) { - return request({ - url: '/vcenter/storage/list', - method: 'post', - data - }) -} - -//校验vcenter 账号 -export function checkVcenterLogin(data) { - return request({ - url: '/vcenter/connection/check', - method: 'post', - data - }) -} - - -//创建vcenter -export function createVcenter(data) { - return request({ - url: '/vcenter/add', - method: 'post', - data - }) -} -//编辑vCenter -export function editVcenter(data) { - return request({ - url: '/vcenter/modify', - method: 'post', - data - }) -} - - -//详情-编辑vCenter -export function getVcenterEditDetail(data) { - return request({ - url: '/vcenter/info', - method: 'post', - data - }) -} -//获取vCenter概要 -export function getVcenterDetail(data) { - return request({ - url: '/vcenter/summary', - method: 'post', - data - }) -} - -//云服务器列表 -export function getVcenterCloudList(data) { - return request({ - url: '/vcenter/server/list', - method: 'post', - data - }) -} - -//主机列表 -export function getVcenterhostList(data) { - return request({ - url: '/vcenter/host/list', - method: 'post', - data - }) -} -//存储列表 -export function getVcenterStorageList(data) { - return request({ - url: '/vcenter/id/storage/list', - method: 'post', - data - }) -} - -//云服务器详情数据 -export function getServerMainData(data) { - return request({ - url: '/vcenter/server/info', - method: 'post', - data - }) -} -//云服务器详情数据-占用率接口 -export function getServerSummaryData(data) { - return request({ - url: '/vcenter/server/summary', - method: 'post', - data - }) -} - -//云服务器告警 -export function getServerSummaryAlarmData(data) { - return request({ - url: '/vcenter/server/alarm/list', - method: 'post', - data - }) -} - -//云服务器网络列表 -export function getServerNetListData(data) { - return request({ - url: '/vcenter/server/network/list', - method: 'post', - data - }) -} -//云服务器存储列表 -export function getServerDiskListData(data) { - return request({ - url: '/vcenter/server/storage/list', - method: 'post', - data - }) -} -//已纳管vcenter下云服务器详情监控信息查询-单一采集项监控数据查询 -export function getServerMonitorListData(data) { - return request({ - url: '/vcenter/server/monitor/info', - method: 'post', - data - }) -} -//已纳管vcenter下云服务器详情存储监控信息查询 -export function getServerStorageMonitorListData(data) { - return request({ - url: '/vcenter/server/monitor/storage/info', - method: 'post', - data - }) -} -//已纳管vcenter下云服务器详情网络监控信息查询 -export function getServerNetworkMonitorListData(data) { - return request({ - url: '/vcenter/server/monitor/network/info', - method: 'post', - data - }) -} -//云服务器任务列表 -export function getServerTaskListData(data) { - return request({ - url: '/vcenter/server/task/list', - method: 'post', - data - }) -} -//控制台 -export function getVncUrl(data) { - return request({ - url: '/vcenter/server/ticket', - method: 'post', - data - }) -} - - -//获取主机下存储列表 -export function getdataStoreByHostname(data) { - return request({ - url: '/vcenter/host/datastore/list', - method: 'post', - data - }) -} -//获取主机下存储列表 -export function getStorageByHostname(data) { - return request({ - url: '/vcenter/location/storage/list', - method: 'post', - data - }) -} -//删除云服务器 -export function hadelDelVm(data) { - return request({ - url: '/vcenter/server/delete', - method: 'post', - data - }) -} -//克隆云服务器 -export function handelCloneVm(data) { - return request({ - url: '/vcenter/server/clone', - method: 'post', - data - }) -} -//克隆云服务器 -export function handelGetRp(data) { - return request({ - url: '/vcenter/location/tree', - method: 'post', - data - }) -} -//获取镜像文件列表 -export function handelGetTemplateList(data) { - return request({ - url: '/vcenter/image/list', - method: 'post', - data - }) -} -//获取网卡列表 -export function handelGetNetCardList(data) { - return request({ - url: '/vcenter/network/list', - method: 'post', - data - }) -} -//云服务器开机 -export function startServerVm(data) { - return request({ - url: '/vcenter/server/power/on', - method: 'post', - data - }) -} -//云服务器关机 -export function shutdownServerVm(data) { - return request({ - url: '/vcenter/server/power/off', - method: 'post', - data - }) -} - -//云服务器唤醒 -export function resumeVm(data) { - return request({ - url: '/vcenter/server/power/resume', - method: 'post', - data - }) -} -//云服务器暂停 -export function suspendVm(data) { - return request({ - url: '/vcenter/server/power/suspend', - method: 'post', - data - }) -} -//云服务器重启 -export function restartVm(data) { - return request({ - url: '/vcenter/server/power/restart', - method: 'post', - data - }) -} -//云服务器关闭电源 -export function offForceVm(data) { - return request({ - url: '/vcenter/server/power/off/force', - method: 'post', - data - }) -} -//云服务器列表新建云服务器 -export function createVm(data) { - return request({ - url: '/vcenter/server/create', - method: 'post', - data - }) -} -//云服务器编辑详情 -export function modifyDetail(data) { - return request({ - url: '/vcenter/server/modify/detail', - method: 'post', - data - }) -} -//云服务器提交编辑 -export function handelSubmitEdit(data) { - return request({ - url: '/vcenter/server/modify', - method: 'post', - data - }) - -} -//云服务器图片 -export function getSummaryImage(data) { - return request({ - url: '/vcenter/server/logo/download', - method: 'get', - params: data - }) -} - -//集群列表 -export function getClusterList(data) { - return request({ - url: '/vcenter/cluster/list', - method: 'post', - data - }) -} -//主机列表 -export function getClusterHostList(data) { - return request({ - url: '/vcenter/cluster/host/list', - method: 'post', - data - }) -} -//迁移界面存储列表查询 -export function getClusterPageStorageList(data) { - return request({ - url: '/general/cluster/storageList', - method: 'post', - data - }) -} - -//迁移界面网络列表查询 -export function getClusterSpecificationList(data) { - return request({ - url: '/network/specification/list', - method: 'post', - data - }) -} - -//迁移界面资源组列表查询 -export function getClusterResourceList(data) { - return request({ - url: '/vcenter/cluster/resource/list', - method: 'post', - data - }) -} - -//获取详情 -export function getTranseferDetail(data) { - return request({ - url: '/vcenter/server/detail', - method: 'post', - data - }) -} -//提交vdc -export function handelSubmitTransfer(data) { - return request({ - url: '/vcenter/server/migrate', - method: 'post', - data - }) -} - - //校验云服务器重名 - export function checkExistVmName(data) { - return request({ - url: '/vcenter/server/exist/check', - method: 'post', - data - }) -} - //校验云服务器重名 - export function vcenterResourceMax(data) { - return request({ - url: '/vcenter/resource/max', - method: 'post', - data - }) -} diff --git a/src/api/vdcapi.js b/src/api/vdcapi.js index 0032adf..004cd74 100644 --- a/src/api/vdcapi.js +++ b/src/api/vdcapi.js @@ -143,35 +143,3 @@ export function listNetworkListByVdcId(data) { data }) } -// 创建网络规格 -export function handelSubmitSpec(data) { - return request({ - url: '/network/specification/create', - method: 'post', - data - }) -} -//删除规格 -export function handelDelSpec(data) { - return request({ - url: '/network/specification/delete', - method: 'post', - data - }) -} -//获取网卡详情 -export function handelGetSpecDetail(data) { - return request({ - url: '/network/specification/detail', - method: 'post', - data - }) -} -//获取网卡详情 -export function handelmodifySpecDetail(data) { - return request({ - url: '/network/specification/modify', - method: 'post', - data - }) -} diff --git a/src/api/workOrder.js b/src/api/workOrder.js index 28fecf5..48d34a9 100644 --- a/src/api/workOrder.js +++ b/src/api/workOrder.js @@ -156,13 +156,4 @@ export function applyModifyVdcDetail(data) { method: 'post', data }) -} - -// 审核云服务器申请-更改集群-刷新数据 -export function refreshMcBaseInfo(data) { - return request({ - url: '/workOrder/refreshMcBaseInfo', - method: 'post', - data - }) } \ No newline at end of file diff --git a/src/assets/common/dataDictionary/dictionary.js b/src/assets/common/dataDictionary/dictionary.js index 5b28ab2..83ac3e2 100644 --- a/src/assets/common/dataDictionary/dictionary.js +++ b/src/assets/common/dataDictionary/dictionary.js @@ -18,13 +18,6 @@ export default { { value: "VDC_STORAGE", label: i18n.t('alarmSetting.vdcStorageAlarm') // "VDC-存储使用率告警" }, - { - value: "SITE_LICK_CHECK", label: i18n.t('alarmSetting.siteLickCheck') // "异地容灾-链路检测" - }, - - { - value: "MACHINE_EXPIRE", label: i18n.t('alarmSetting.machineExpire') // "云服务器使用到期" - }, ], // "告警级别", // 枚举: GENERAL,SEVERITY,URGENT @@ -89,201 +82,6 @@ export default { }, ], - // 镜像管理 status - // 枚举: NORMAL,ERROR,SYNCING - // 枚举备注: NORMAL("正常"), ERROR("异常"), SYNCING("同步中"), - imgstatusArr: [ - { - value: "NORMAL", label: i18n.t("imageMgr.imgstatus.NORMAL"), // "正常" - }, - { - value: "ERROR", label: i18n.t("imageMgr.imgstatus.ERROR"), // "异常" - }, - { - value: "SYNCING", label: i18n.t("imageMgr.imgstatus.SYNCING"), // "同步中" - }, - ], - // 镜像管理 type - // 枚举: ISO,GVM - // 枚举备注: ISO GVM - imgtypeArr: [ - { - value: "ISO", label: "ISO", // "ISO" - }, - { - value: "GVM", label: "其他",// "其他" - }, - ], - // 镜像管理 imageFrom - // 枚举: UPLOAD,MACHINE_MAKE,SHARE_CHANGE,PRIVATE_CHANGE - // 枚举备注: UPLOAD( "上传"), MACHINE_MAKE("云服务器制作"), SHARE_CHANGE("共享镜像转换"), PRIVATE_CHANGE("私有镜像转换"), - imageFromArr: [ - { - value: "UPLOAD", label: i18n.t("imageMgr.imageFrom.UPLOAD"), // "上传" - }, - { - value: "MACHINE_MAKE", label: i18n.t("imageMgr.imageFrom.MACHINE_MAKE"), // "云服务器制作" - }, - { - value: "SHARE_CHANGE", label: i18n.t("imageMgr.imageFrom.SHARE_CHANGE"), // "共享镜像转换" - }, - { - value: "PRIVATE_CHANGE", label: i18n.t("imageMgr.imageFrom.PRIVATE_CHANGE"), // "私有镜像转换" - }, - ], - - // 枚举: IMAGE,CLUSTER,VDC,ZONE,ORG - // 枚举备注: IMAGE(镜像管理) CLUSTER(集群管理) VDC(VDC管理) ZONE(可用区管理) ORG(组织管理) - operateLogTypeList: [ - { - value: "IMAGE", label: i18n.t("operateLog.logType.IMAGE"), // "镜像管理" - }, - { - value: "CLUSTER", label: i18n.t("operateLog.logType.CLUSTER"), // "集群管理" - }, - { - value: "VDC", label: i18n.t("operateLog.logType.VDC"), // "VDC管理" - }, - { - value: "ZONE", label: i18n.t("operateLog.logType.ZONE"), // "可用区管理" - }, - { - value: "ORG", label: i18n.t("operateLog.logType.ORG"), // "组织管理" - }, - ], - - // 枚举: IMAGE_UPLOAD,IMAGE_SYNC,IMAGE_CREATE_TEMPLATE,IMAGE_MODIFY,IMAGE_PRIVATE_TO_SHARE,IMAGE_SHARE_TO_PUBLIC,IMAGE_MAKE,IMAGE_CREATE_GVM_FILE,IMAGE_ERROR_SYNC,IMAGE_DELETE - // 枚举备注: - // IMAGE_UPLOAD("上传镜像"), IMAGE_SYNC("镜像同步"), IMAGE_CREATE_TEMPLATE("生成模板镜像"), - // IMAGE_MODIFY("编辑镜像"), IMAGE_PRIVATE_TO_SHARE("私有镜像提升为共享镜像"), - // IMAGE_SHARE_TO_PUBLIC("共享镜像提升为公共镜像"), IMAGE_MAKE("制作镜像"), - // IMAGE_CREATE_GVM_FILE("生成镜像文件"), IMAGE_ERROR_SYNC("镜像异常-同步镜像"), IMAGE_DELETE("删除镜像"); - imageActionList: [ - { - value: "IMAGE_UPLOAD", label: i18n.t("imageMgr.imageActionList.IMAGE_UPLOAD"), // "上传镜像" - }, - { - value: "IMAGE_SYNC", label: i18n.t("imageMgr.imageActionList.IMAGE_SYNC"), // "镜像同步" - }, - { - value: "IMAGE_CREATE_TEMPLATE", label: i18n.t("imageMgr.imageActionList.IMAGE_CREATE_TEMPLATE"), // "生成模板镜像" - }, - { - value: "IMAGE_MODIFY", label: i18n.t("imageMgr.imageActionList.IMAGE_MODIFY"), // "编辑镜像" - }, - { - value: "IMAGE_PRIVATE_TO_SHARE", label: i18n.t("imageMgr.imageActionList.IMAGE_PRIVATE_TO_SHARE"), // "私有镜像提升为共享镜像" - }, - { - value: "IMAGE_SHARE_TO_PUBLIC", label: i18n.t("imageMgr.imageActionList.IMAGE_SHARE_TO_PUBLIC"), // "共享镜像提升为公共镜像" - }, - { - value: "IMAGE_MAKE", label: i18n.t("imageMgr.imageActionList.IMAGE_MAKE"), // "制作镜像" - }, - { - value: "IMAGE_CREATE_GVM_FILE", label: i18n.t("imageMgr.imageActionList.IMAGE_CREATE_GVM_FILE"), // "生成镜像文件" - }, - { - value: "IMAGE_ERROR_SYNC", label: i18n.t("imageMgr.imageActionList.IMAGE_ERROR_SYNC"), // "镜像异常-同步镜像" - }, - { - value: "IMAGE_DELETE", label: i18n.t("imageMgr.imageActionList.IMAGE_DELETE"), // "删除镜像" - }, - { - value: "IMAGE_DOWNLOAD", label: i18n.t("imageMgr.imageActionList.IMAGE_DOWNLOAD"), // "镜像下载" - } - ], - - // 枚举: SUCCESS,FAIL,RUNNING - // 枚举备注: SUCCESS("成功"), FAIL("失败"), RUNNING("执行中"); - operateLogStatusList: [ - { - value: "SUCCESS", label: i18n.t("operateLog.logStatus.SUCCESS"), // "成功" - }, - { - value: "FAIL", label: i18n.t("operateLog.logStatus.FAIL"), // "失败" - }, - { - value: "RUNNING", label: i18n.t("operateLog.logStatus.RUNNING"), // "执行中" - } - ], - - - // 枚举: NORMAL,WAIT_SYNC,SYNCING,SYNC_SUCCESS,SYNC_FAILED,CREATE_GVM_FILE_IMG,CREATE_GVM_FILE_ERROR,CREATE_GVM_FILE_SUCCESS,CREATE_IMAGE_ING,CREATE_IMAGE_ERROR - // 枚举备注: - // NORMAL("正常"), WAIT_SYNC("等待同步镜像文件"), SYNCING("同步镜像文件中"), - // SYNC_SUCCESS("同步镜像文件完成"), SYNC_FAILED("同步镜像文件失败"), CREATE_GVM_FILE_IMG("生成GVM文件中"), - // CREATE_GVM_FILE_ERROR("生成GVM文件失败"), CREATE_GVM_FILE_SUCCESS("生成GVM文件成功"), - // CREATE_IMAGE_ING("创建模板镜像中"), CREATE_IMAGE_ERROR("创建镜像失败"), - imageClusterStatus: [ - { - value: "NORMAL", label: "正常", // "正常" - }, - { - value: "WAIT_SYNC", label: "等待同步镜像文件", // "等待同步镜像文件" - }, - { - value: "SYNCING", label: "同步镜像文件中", // "同步镜像文件中" - }, - { - value: "SYNC_SUCCESS", label: "同步镜像文件完成", // "同步镜像文件完成" - }, - { - value: "SYNC_FAILED", label: "同步镜像文件失败", // "同步镜像文件失败" - }, - { - value: "CREATE_GVM_FILE_IMG", label: "生成GVM文件中", // "生成GVM文件中" - }, - { - value: "CREATE_GVM_FILE_ERROR", label: "生成GVM文件失败", // "生成GVM文件失败" - }, - { - value: "CREATE_GVM_FILE_SUCCESS", label: "生成GVM文件成功", // "生成GVM文件成功" - }, - { - value: "CREATE_IMAGE_ING", label: "创建模板镜像中", // "创建模板镜像中" - }, - { - value: "CREATE_IMAGE_ERROR", label: "创建镜像失败", // "创建镜像失败" - } - ], - - // 任务中心状态枚举 - teskstatusList: [ - { - value: "SUCCESS", - label: i18n.t("taskcenter.success"), // "成功" - }, - { - value: "FAIL", - label: i18n.t("taskcenter.fail"), // "失败" - }, - { - value: "RUNNING", - label: i18n.t("taskcenter.running"), // "执行中" - }, - { - value: "WAIT_START", - label: i18n.t("taskcenter.tobestarted"), // "待开始" - }, - { - value: "CANCELED", - label: i18n.t("taskcenter.canceled"), // "已取消" - }, - { - value: "CANCELING", - label: i18n.t("taskcenter.canceling"), // "取消中" - }, - { - value: "TIMEOUT", - label: i18n.t("taskcenter.timeout"), // "超时" - }, - { - value: "UNKNOWN", - label: i18n.t("taskcenter.unknown"), // "未知" - }, - ], - // 获取数据字典映射 getDesc(key, list) { let desc = ""; @@ -293,8 +91,7 @@ export default { desc = label; } }); - - return desc || key; + return desc; }, } \ No newline at end of file diff --git a/src/assets/common/dataDictionary/imageLogDic.js b/src/assets/common/dataDictionary/imageLogDic.js deleted file mode 100644 index 7421ae3..0000000 --- a/src/assets/common/dataDictionary/imageLogDic.js +++ /dev/null @@ -1,131 +0,0 @@ - -import i18n from '@/assets/common/lang/index' - -const imageLogDic = [ - { - "type": "IMAGE_UPLOAD", - "name": "上传镜像", - "logDetail": { - "fileName": "文件名称", - "imageName": "镜像名称", - "imageRemark": "镜像描述", - "zoneName": "可用区" - } - }, - { - "type": "IMAGE_SYNC", - "name": "同步镜像文件", - "logDetail": { - "imageName": "镜像名称", - "clusterName": "集群名称" - } - }, - { - "type": "IMAGE_CREATE_TEMPLATE", - "name": "生成镜像模板", - "logDetail": { - "templateImageName": "模板镜像", - "clusterName": "集群名称" - } - }, - { - "type": "IMAGE_MODIFY", - "name": "编辑镜像", - "logDetail": { - "oldImageName": "原镜像名称", - "oldImageRemark": "原镜像描述", - "oldZoneName": "原可用区", - "imageName": "镜像名称", - "imageRemark": "镜像描述", - "zoneName": "可用区" - } - }, - { - "type": "IMAGE_PRIVATE_TO_SHARE", - "name": "私有镜像提升为共享镜像", - "logDetail": { - "oldImageName": "原镜像名称", - "oldImageRemark": "原镜像描述", - "imageName": "镜像名称", - "imageRemark": "镜像描述", - "shareOrg": "共享组织" - } - }, - { - "type": "IMAGE_SHARE_TO_PUBLIC", - "name": "共享镜像提升为公共镜像", - "logDetail": { - "oldImageName": "原镜像名称", - "oldImageRemark": "原镜像描述", - "oldZoneName": "原可用区", - "imageName": "镜像名称", - "imageRemark": "镜像描述", - "zoneName": "可用区" - } - }, - { - "type": "IMAGE_MAKE", - "name": "制作镜像", - "logDetail": { - "selectMachineName": "云服务器", - "selectCluster": "云服务器所在集群", - "imageName": "镜像名称", - "imageRemark": "镜像描述", - "zoneName": "可用区" - } - }, - { - "type": "IMAGE_CREATE_GVM_FILE", - "name": "生成镜像文件", - "logDetail": { - "templateImageName": "模板镜像", - "clusterName": "集群名称" - } - }, - { - "type": "IMAGE_ERROR_SYNC", - "name": "异常镜像-同步", - "logDetail": { - "imageName": "镜像名称" - } - }, - { - "type": "IMAGE_DELETE", - "name": "删除镜像", - "logDetail": { - "imageName": "镜像名称" - } - }, - { - "type": "IMAGE_DOWNLOAD", - "name": "镜像下载", - "logDetail": { - "filePath": "镜像路径", - "imageName": "镜像名称", - "clusterName": "下载集群" - } - } -] -export default { - // 获取数据字典映射 - getLabelDesc(key, detailobj) { - let newlogDetail = {} - let reqObj = {} - imageLogDic.forEach(element => { - let { type, logDetail } = element - if (key === type) { - newlogDetail = JSON.parse(JSON.stringify(logDetail)) - } - }); - for (let detailobjKey in detailobj) { - if (detailobj.hasOwnProperty(detailobjKey)) { - let reqkey = newlogDetail[detailobjKey] || detailobjKey - let reqLabel = detailobj[detailobjKey] - reqObj[reqkey] = reqLabel - } - - } - return JSON.stringify(reqObj) - }, - -} \ No newline at end of file diff --git a/src/assets/common/lang/en/alarmevents.js b/src/assets/common/lang/en/alarmevents.js index 9157051..c5753dd 100644 --- a/src/assets/common/lang/en/alarmevents.js +++ b/src/assets/common/lang/en/alarmevents.js @@ -65,8 +65,6 @@ export default { 'monitoring.alarmEvent.type.RABBIT_CONNECT_FAIL': 'RabbitMQ Connect Failed', 'monitoring.alarmEvent.type.VIRTUALSERVER_KYLINTOOL': 'qga version', 'monitoring.alarmEvent.type.VIRTUALSERVER_KSVDTOOL_EVENT': 'set ip/user/passwd', - 'monitoring.alarmEvent.type.MARIADB': 'Database alarm', - 'monitoring.alarmEvent.type.RESOURCE_ALLOCATION': 'Resource has reached quota threshold', alarmSetting: { type: 'Alarm Name', @@ -83,8 +81,7 @@ export default { 'thresholdInput': 'Invalid input! please input a integer between 0~99!', cloudServerAlarmPolicy: 'Cloud server alarm policy', // 云服务器告警策略 physicalServerAlertPolicy: 'Physical Server Alert Policy', // 物理服务器告警策略 - siteLickCheck:' Remote Dr - Link detection', - machineExpire:' cloud server expire ', + clusterAlarmSettings: 'Cluster Alarm Settings', // 集群告警设置 platformAlarmSettings: 'Platform Alarm Settings', // 平台告警设置 clusterAlarmlog: 'Cluster alarm log', // 集群告警日志 @@ -102,4 +99,4 @@ export default { urgent: 'emergency alert', // 紧急告警 platform: 'platform', // 紧急告警 }, -} +} \ No newline at end of file diff --git a/src/assets/common/lang/en/common.js b/src/assets/common/lang/en/common.js index dc0e609..ad668f8 100644 --- a/src/assets/common/lang/en/common.js +++ b/src/assets/common/lang/en/common.js @@ -1,325 +1,295 @@ // 公共模块 export default { - canceled: "Cancelled!", // 已取消! - delete: "Delete", - operation: "Operate", - sureDel: "Confirm delete", - save: "Save", - saveSuccess: "Save successfully!", - saveFail: "Save fail!", - passwordCantNull: "Password cannot be empty", - open: "Open", - password: "password", - openSuccess: "Open successfully!", - createSuccess: "create successfully", - editSuccess: "edit successfully", - openFail: "Open fail!", - hostSubmitSuccess: "Host hosting task submitted successfully", - hostEditSuccess: "Host hosting task editted successfully", - cancellation: "cancellation", - delLotSure: "Confirm Batch Delete", - delTips: "After deletion, it cannot be restored. Please operate with caution", - tips: "Tips", // 提示 - loadingText: "Loading desperately", // 拼命加载中 - refresh: "refresh", // 刷新 - select: "select", // 选择 - create: "create", // 创建 - open: "open", // 开 - close: "close", // 关 - placeholder: "Please enter content", // 请输入内容 - view: "View", // 查看 - add: "Add", // 添加 - nametooltip: - "Supports the combination of Chinese, numbers, and letters, with a character length of 2 to 18 digits", // 支持中文、数字、字母进行组合,字符长度为2 ~ 18位 - nameLength: "Length should be controlled between 2 ~ 18 characters", // 长度应控制在 2 ~ 18 个字符 - vmName: - "The value can contain only letters, digits, underscores, and hyphens (-)", - adminNameLength: "Length should be controlled between 6 ~ 20 characters", // 长度应控制在 6 ~ 20 个字符 - adminNameWranMsg: "Combination of English letters and numbers only", // 只能由英文字母、数字组合 - cpuValtip: "The cpu supports only an even number or 1", - adminPwdLength: "Length should be controlled between 6 ~ 18 characters", // 长度应控制在 6 ~ 18 个字符 - adminPwdWranMsg: - "The password can only be a combination of English letters and numbers", // 密码只能由英文字母、数字组合 - pleaseEnter: "please enter", // 请输入 - pleaseSelsect: "please choose", // 请选择 - pleaseSet: "please set", // 请设置 - set: "set up", // 设置 - previous: "Previous", // 上一步 - nextStep: "Next step", // 下一步 - confirmation: "confirm", // 确认 - notNull: "Can not be empty", // 不能为空 - cpu: "core", // 核 - mem: "RAM", // 内存 - disk: "storage", // 存储 - diskSize: "storage size", // 存储大小 - hard: "disk", // 磁盘 - addhardMsg: - "The cloud server has not applied for a disk, please add it as needed", // 该云服务器没有申请磁盘,请按需添加 - diskNumMaxMsg: "The maximum number of disks has been reached", // 磁盘数目已达上限 - diskNumMsg: "Disk size cannot be a positive integer less than 1", // "磁盘大小不能为小于1的正整数"; - diskNumSizeMsg: "Disk size cannot be empty", // "磁盘大小不能为空"; - diskNumMinMsg: "Add at least one disk", // "至少添加一块磁盘"; - cdRom: "CD-ROM", // 光驱 - newDisk: "add disk", // 新增磁盘 - network: "network card", // 网卡 - newnetwork: "Add network card", // 新增网卡 - addnetworkMsg: - "The cloud server has not been applied for, please add a network card as needed", // 该云服务器没有申请,请按需添加网卡 - networkNumMaxMsg: "The number of network cards has reached the upper limit", // 网卡数目已达上限 - networkpurpose: "Please select a network configuration", // 请选择网络配置 - networkSet: "set up network", // 设置网络 - newnetwork: "set up new network", - upperNetwork: "Select upper-level network", // 选择上级网络 - to: "to", // 至 - enddate: "end date", // 结束日期 - startdate: "start date", // 开始日期 - people: "people", // 人 - confirm: "OK", - cancel: "Cancel", - success: "successfully", - fail: "fail", - modify: "Edit", - batchModify: "Bulk Edit", - build: "Build", - operation: "Operate", - save: "Save", - startUp: "Start Up", - saveSuccess: "Save successfully!", - saveFail: "Save fail!", - createTime: "create time", - open: "Open", - openSuccess: "Open successfully!", - openFail: "Open fail!", - close: "Close", - closeSuccess: "Close successfully!", - closeFail: "Close fail!", - updateSuccess: "updateSuccess", - export: "Export", - exportCsv: "Export CSV", - exportElef: "Export ELFF", - startTIme: "Start date", - endTIme: "End date", - recentWeek: "In the latest week", - lastMonth: "Last Month", - lastThreeMonths: "Last 3 months", - filter: "Filter:", - emptyFilter: "Empty filter", - enter: "Please enter", - select: "Please select", - to: "To", - date: "Date", - user: "User", - userName: "User name", - type: "Type", - server: "Server", - organization: "Organization", - information: "Information", - name: "Name", - status: "Status", - normal: "Normal", - desc: "Descripetion", - warn: "Warn", - notAvailable: "Not available", - tips: "Tips", - hour: "Hour", - add: "Add", - delete: "Delete", - notRunning: "not Running", - startSession: "Start", - startSessionSuccess: "Start success", - closeSession: "Shutdown", - closeSessionSuccess: "Shutdown success", - forcedCloseSession: "Forced Shutdown", - restart: "restart", - forcedRestart: "Forced Restart", - sendMessage: "Send Message", - createSnapshot: "Create a snapshot", - migration: "Migration", - extractionLog: "Extraction Log", - detection: "detection", - systemRecovery: "System Recovery", - power: "power", - offline: "Offline", - loadingText: "Loading...", - moreLabel: "More", - validateNull: "Cannot be empty", - validateNumber: "Must be a number", - validateLeng3_15: "The length should be betwee 3 and 15 characters", - column_Dispaly: "Column Display Settings", - refreshTable: "Rfresh Table", - selected_label: "Selected", - to_select_label: "To Select", - operation_control: "Management console: ", - download_all: "Batch download", - all: "all", - sureDelete: "Do you want to delete it?", - deleteSuccess: "Deleted successfully!", - sureModify: "Confirm the modification?", - modifySuccess: "Modified successfully!", - sureSubmmit: "Do you confirm submission?", - submmitSuccess: "Submitted successfully!", - tableSetting: "Table Settings", - apply: "apply", - reset: "reset", - remoteControl: "Remote Control", - isSure: "confirm", - notice: "Notice", - approved: "Approved", // 审批 - alarm: "Alarm", // 告警 - search: "search", // 搜索 - createTime: "create Time", // 创建时间 - changeTheme: "switch skin", // 切换皮肤 - changeLangEvent: "switch language", // 切换语言 - changeLangok: "Are you sure you want to switch languages?", // 确定切换语言吗? - changePassword: "change Password", // 修改密码 - detailsInfo: "Details", // 详情 - changeSpec: "Change Specifications", // 变更规格 - pass: "pass", // 通过 - refuse: "Refuse", // 拒绝 - time: "time", // 时间 - batchPass: "batch pass", // 批量通过 - batchRefuse: "Bulk rejection", // 批量拒绝 - batchReviewsucc: "Batch review succeeded", // 批量审核成功 - reviewsucc: "Review succeeded", // 审核成功 - refusesucc: "refusal to succeed", // 拒绝成功 - applyDelete: "request deletion", // 申请删除 - originalSize: "original size", // 原大小 - strip: "strip", // 条 - alreadyAllocate: "Assigned", // 已分配 - noAllocate: "unassigned", // 已分配 + canceled: 'Cancelled!', // 已取消! + delete: 'Delete', + operation: 'Operate', + save: 'Save', + saveSuccess: 'Save successfully!', + saveFail: 'Save fail!', + open: 'Open', + openSuccess: 'Open successfully!', + openFail: 'Open fail!', + cancellation: 'cancellation', + tips: 'Tips', // 提示 + loadingText: 'Loading desperately', // 拼命加载中 + refresh: 'refresh', // 刷新 + select: 'select', // 选择 + create: 'create', // 创建 + open: 'open', // 开 + close: 'close', // 关 + placeholder: 'Please enter content', // 请输入内容 + view: 'View', // 查看 + add: 'Add', // 添加 + nametooltip: 'Supports the combination of Chinese, numbers, and letters, with a character length of 2 to 18 digits', // 支持中文、数字、字母进行组合,字符长度为2 ~ 18位 + nameLength: 'Length should be controlled between 2 ~ 18 characters', // 长度应控制在 2 ~ 18 个字符 - details: { - summary: "summary", // 概要 - resourceAllocation: "Resource Allocation", // 资源分配情况 - CPUallocationRatio: "CPU allocation ratio", // cpu分配比 - totalcapacity: "total capacity", // 总容量 - used: "used", // 已用 - available: "available", // 可用 - memoryAllocationRatio: "memory allocation ratio", // 内存分配比 - storageAllocationRatio: "storage allocation ratio", // 存储分配比 - resourceStatistics: "Resource Statistics", // 资源统计 - total: "total", // 总数 - activated: "activated", // 已激活 - inactivated: "inactivated", // 未激活 - online: "online", // 在线 - offline: "offline", // 离线 - resourceUsage: "Resource Usage", // 资源使用情况 - CPUUtilization: "CPU utilization", // CPU利用率 - memoryUtilization: "memory utilization", // 内存利用率 - storageUtilization: "storage utilization", // 存储利用率 - cpuCount: "cpu Count", // cpu数: - disk: "disk", // 磁盘 - diskIOwrites: "Disk I/O writes", // 磁盘I/O写入 - diskIOread: "Disk I/O read", // 磁盘I/O读取 - network: "network", // 网络 - netWorkInSpeedData: "network inflow speed", // 网络流入速度 - netWorkOutSpeedData: "network outgoing speed", // 网络流出速度 - }, - route: { - homePage: "Home", // 首页 - resource: "resources", // 资源 - operator: "operate", // 运营 - monitor: "Monitoring", // 监控 - zone: "Availability Zone", // 可用区 - zoneDetail: "Availability Zone Details", // 可用区详情 - cluster: "physical cluster", // 物理集群 - clusterDetail: "Physical Cluster Details", // 物理集群详情 - vdc: "Virtual Data Center (VDC)", // 虚拟数据中心(VDC) - vdcDetail: "Virtual Data Center (VDC) Details", // 虚拟数据中心(VDC)详情 - servervm: "Cloud Server", // 云服务器 - servervmDetail: "Cloud server details", // 云服务器详情 - org: "Organizational management", // 组织管理 - orgDetail: "Organization Details", // 组织详情 - permission: "authority management", // 权限管理 - userMgr: "User Management", // 用户管理 - roleMgr: "role management", // 用户管理 - workorder: "Work order", // 工单管理 - WorkorderReview: "Work order review", // 工单审核 - workorderDetail: "Ticket details", // 工单详情 - networkconfig: "network settings", // 网络设置 - alarmEvent: "Alarm event", // 告警事件 - alarmLog: "Alarm log", // 告警日志 - settingAlarm: "Alarm settings", // 告警设置 - operateLog: "Operation log", // 操作日志 - serverEvent: "Physical host events", // 物理主机事件 - cloudServerEvent: "Cloud server events", // 云服务器事件 - vMwareMgr: "VMware managed", // VMware纳管 - vMwareMgrDetail: "VMware Onboarding Details", // VMware纳管详情 - imageMgr: "Image management", // 镜像管理 - imageMgrUpload: "upload image", // 上传镜像 - imageMgrDetail: "Mirror details", // 镜像详情 - taskcenter: "task center", // 任务中心 - externalCloud: "external cloud", - vcenter: "Managed vCenter", - reliableCenter: "reliable Center", - linkManagement: "link Management", - remoteDisasterRecovery: "remote Disaster Recovery", - mainAndBackupKcp: "main And Backup Kcp", - bareMetal: "bare Metal", - }, - login: { - resetPassword: "reset Password", // 重置密码 - oldPwd: "old password", // 原密码 - placeholder: - "Password length should be controlled within 6 ~ 18 characters", // 长度6~18位 - newPwd: "new password", // 新密码 - confirmPwd: "confirm password", // 确认密码 - confirmPwdErr: "The passwords entered twice do not match!", // 两次输入密码不一致! - pwdMsg: "password can not be blank", // 密码不能为空 - confirmPwdlenMsg: - "The password can only be a combination of English letters and numbers", // 密码只能由英文字母、数字组合 - confirmPwdMsg: "Confirm password and password input are inconsistent", // 确认密码和密码输入不一致 - }, - home: { - homeText: - "Resource pooling and standardization, intelligent planning and management", // 资源池化与标准化,智能规划与管理 - homeSubText: - "A single neutral console manages heterogeneous infrastructures and connects to existing business process platforms. The resources on the cloud are logically pooled, so as to implement resource allocation based on the enterprise organizational structure, and provide standard processes and standardized cloud services", // 单个中立的控制台对下纳管异构的基础设施,对接已有业务流程平台。将云上的资源进行逻辑池化,从而基于企业组织架构来实行资源分配,并提供标准的流程和规范的云服务 - createZone: "Add Availability Zone", // 添加可用区 - createCluster: "Add a cluster", // 添加集群 - createVdc: "Add VDC", // 添加VDC - cpuUseRatio: "CPU usage", // CPU使用率 - memUseRatio: "memory usage", // 内存使用率 - owningCluster: "owning cluster", // 所属集群 - cloudHosting: "Cloud Server", // 云服务器 - physicalMachine: "physical host", // 物理主机 - workerOrder: "Work order review", // 工单审核 - alarm: "alert", // 告警 - cpuUtilization: "CPU utilization", // CPU利用率 - memoryUtilization: "memory utilization", // 内存利用率 - storageUtilization: "storage utilization", // 存储利用率 - accountOverview: "Account Overview", // 账户总览 - platformManage: "Platform management user", // 平台管理用户 - orgManage: "Organizing management users", // 组织管理用户 - selfService: "self-service users", // 自服务用户 - used: "used", // 已用 - totalCpu: "Total CPU capacity", // CPU总容量 - usable: "available", // 可用 - totalMem: "total memory capacity", // 内存总容量 - totalStorage: "total storage capacity", // 存储总容量 - zone: "Availability Zone", // 可用区 - zoneNum: "Number of Availability Zones", // 可用区数量 - cluster: "cluster", // 集群 - clusterNum: "Total number of clusters", // 集群总数 - physicalHost: "physical machine", // 物理机 - physicalHostNum: "Total number of physical machines", // 物理机总数 - VDC: "VDC", // VDC - VDCNum: "Total VDCs", // VDC总数 - serverVm: "Cloud Server", // 云服务器 - serverVmNum: "Total number of cloud servers", // 云服务器总数 - total: "total", // 总数 - }, + adminNameLength: 'Length should be controlled between 6 ~ 20 characters', // 长度应控制在 6 ~ 20 个字符 + adminNameWranMsg: 'Combination of English letters and numbers only', // 只能由英文字母、数字组合 - cloneTypeArr: { - LINK_CLONE: "linked clone", // 链接克隆 - FULL_CLONE: "full clone", // 链接克隆 - }, - securityPolicyArr: { - NONE: "none", // 无 - SECURITY_GROUP: "security group", // 安全组 - VIRTUAL_FIREWALL: "virtual firewall", // 虚拟防火墙 - }, - successfulOperation: "Successful operation!", // 操作成功 - operationFailed: "operation failed!", // 操作失败 - noMoreOperations: "No more operations", -}; + adminPwdLength: 'Length should be controlled between 6 ~ 18 characters', // 长度应控制在 6 ~ 18 个字符 + adminPwdWranMsg: 'The password can only be a combination of English letters and numbers', // 密码只能由英文字母、数字组合 + pleaseEnter: 'please enter', // 请输入 + pleaseSelsect: 'please choose', // 请选择 + pleaseSet: 'please set', // 请设置 + set: 'set up', // 设置 + previous: 'Previous', // 上一步 + nextStep: 'Next step', // 下一步 + confirmation: 'confirm', // 确认 + notNull: 'Can not be empty', // 不能为空 + cpu: 'core', // 核 + mem: 'RAM', // 内存 + disk: 'storage', // 存储 + diskSize: 'storage size', // 存储大小 + hard: 'disk', // 磁盘 + addhardMsg: "The cloud server has not applied for a disk, please add it as needed", // 该云服务器没有申请磁盘,请按需添加 + diskNumMaxMsg: 'The maximum number of disks has been reached', // 磁盘数目已达上限 + diskNumMsg: 'Disk size cannot be a positive integer less than 1',// "磁盘大小不能为小于1的正整数"; + diskNumSizeMsg: 'Disk size cannot be empty', // "磁盘大小不能为空"; + diskNumMinMsg: 'Add at least one disk', // "至少添加一块磁盘"; + cdRom: 'CD-ROM', // 光驱 + newDisk: 'add disk', // 新增磁盘 + network: 'network card', // 网卡 + newnetwork: 'Add network card', // 新增网卡 + addnetworkMsg: 'The cloud server has not been applied for, please add a network card as needed', // 该云服务器没有申请,请按需添加网卡 + networkNumMaxMsg: 'The number of network cards has reached the upper limit', // 网卡数目已达上限 + networkpurpose: 'Please select a network configuration', // 请选择网络配置 + networkSet: 'set up network', // 设置网络 + newnetwork: 'set up new network', + upperNetwork: 'Select upper-level network', // 选择上级网络 + to: 'to', // 至 + enddate: 'end date', // 结束日期 + startdate: 'start date', // 开始日期 + people: 'people', // 人 + confirm: 'OK', + cancel: 'Cancel', + success: 'successfully', + fail: 'fail', + modify: 'Edit', + batchModify: 'Bulk Edit', + build: 'Build', + operation: 'Operate', + save: 'Save', + startUp: 'Start Up', + saveSuccess: 'Save successfully!', + saveFail: 'Save fail!', + open: 'Open', + openSuccess: 'Open successfully!', + openFail: 'Open fail!', + close: 'Close', + closeSuccess: 'Close successfully!', + closeFail: 'Close fail!', + updateSuccess: 'updateSuccess', + export: 'Export', + exportCsv: 'Export CSV', + exportElef: 'Export ELFF', + startTIme: 'Start date', + endTIme: 'End date', + recentWeek: 'In the latest week', + lastMonth: 'Last Month', + lastThreeMonths: 'Last 3 months', + filter: 'Filter:', + emptyFilter: 'Empty filter', + enter: 'Please enter', + select: 'Please select', + to: 'To', + date: 'Date', + user: 'User', + userName: 'User name', + type: 'Type', + server: 'Server', + organization: 'Organization', + information: 'Information', + name: 'Name', + status: 'Status', + normal: 'Normal', + desc: 'Descripetion', + warn: 'Warn', + notAvailable: 'Not available', + tips: 'Tips', + hour: 'Hour', + add: 'Add', + delete: 'Delete', + notRunning: 'not Running', + startSession: 'Start', + startSessionSuccess: 'Start success', + closeSession: 'Shutdown', + closeSessionSuccess: 'Shutdown success', + forcedCloseSession: 'Forced Shutdown', + restart: 'restart', + forcedRestart: 'Forced Restart', + sendMessage: 'Send Message', + createSnapshot: 'Create a snapshot', + migration: 'Migration', + extractionLog: 'Extraction Log', + detection: 'detection', + systemRecovery: 'System Recovery', + power: 'power', + offline: 'Offline', + loadingText: 'Loading...', + moreLabel: 'More', + validateNull: 'Cannot be empty', + validateNumber: 'Must be a number', + validateLeng3_15: 'The length should be betwee 3 and 15 characters', + column_Dispaly: 'Column Display Settings', + refreshTable: 'Rfresh Table', + selected_label: 'Selected', + to_select_label: 'To Select', + operation_control: 'Management console: ', + download_all: 'Batch download', + all: '全部', + sureDelete: '确认删除吗?', + deleteSuccess: '删除成功!', + sureModify: '确认修改吗?', + modifySuccess: '修改成功!', + sureSubmmit: '确认提交吗?', + submmitSuccess: '提交成功!', + tableSetting: 'Table Settings', + apply: 'apply', + reset: 'reset', + remoteControl: 'Remote Control', + isSure: 'confirm', + notice: 'Notice', + approved: 'Approved',// 审批 + alarm: 'Alarm',// 告警 + search: 'search',// 搜索 + createTime: 'create Time', // 创建时间 + changeTheme: 'switch skin', // 切换皮肤 + changeLangEvent: 'switch language', // 切换语言 + changeLangok: 'Are you sure you want to switch languages?', // 确定切换语言吗? + changePassword: 'change Password', // 修改密码 + detailsInfo: 'Details', // 详情 + changeSpec: 'Change Specifications', // 变更规格 + pass: 'pass', // 通过 + refuse: 'Refuse', // 拒绝 + time: 'time', // 时间 + batchPass: 'batch pass', // 批量通过 + batchRefuse: 'Bulk rejection', // 批量拒绝 + batchReviewsucc: 'Batch review succeeded', // 批量审核成功 + reviewsucc: 'Review succeeded', // 审核成功 + refusesucc: 'refusal to succeed', // 拒绝成功 + applyDelete: 'request deletion', // 申请删除 + originalSize: 'original size', // 原大小 + strip: 'strip', // 条 + alreadyAllocate: 'Assigned', // 已分配 + noAllocate: 'unassigned', // 已分配 + + details: { + summary: 'summary', // 概要 + resourceAllocation: 'Resource Allocation', // 资源分配情况 + CPUallocationRatio: 'CPU allocation ratio', // cpu分配比 + totalcapacity: 'total capacity', // 总容量 + used: 'used', // 已用 + available: 'available', // 可用 + memoryAllocationRatio: 'memory allocation ratio', // 内存分配比 + storageAllocationRatio: 'storage allocation ratio', // 存储分配比 + resourceStatistics: 'Resource Statistics', // 资源统计 + total: 'total', // 总数 + activated: 'activated', // 已激活 + inactivated: 'inactivated', // 未激活 + online: 'online', // 在线 + offline: 'offline', // 离线 + resourceUsage: 'Resource Usage', // 资源使用情况 + CPUUtilization: 'CPU utilization', // CPU利用率 + memoryUtilization: 'memory utilization', // 内存利用率 + storageUtilization: 'storage utilization', // 存储利用率 + cpuCount: 'cpu Count', // cpu数: + disk: 'disk', // 磁盘 + diskIOwrites: 'Disk I/O writes', // 磁盘I/O写入 + diskIOread: 'Disk I/O read', // 磁盘I/O读取 + network: 'network', // 网络 + netWorkInSpeedData: 'network inflow speed', // 网络流入速度 + netWorkOutSpeedData: 'network outgoing speed', // 网络流出速度 + }, + route: { + homePage: 'Home', // 首页 + resource: 'resources', // 资源 + operator: 'operate', // 运营 + monitor: 'Monitoring', // 监控 + zone: 'Availability Zone', // 可用区 + zoneDetail: 'Availability Zone Details', // 可用区详情 + cluster: 'physical cluster', // 物理集群 + clusterDetail: 'Physical Cluster Details', // 物理集群详情 + vdc: 'Virtual Data Center (VDC)', // 虚拟数据中心(VDC) + vdcDetail: 'Virtual Data Center (VDC) Details', // 虚拟数据中心(VDC)详情 + servervm: 'Cloud Server', // 云服务器 + servervmDetail: 'Cloud server details', // 云服务器详情 + org: 'Organizational management', // 组织管理 + orgDetail: 'Organization Details', // 组织详情 + permission: 'authority management', // 权限管理 + userMgr: 'User Management', // 用户管理 + roleMgr: 'role management', // 用户管理 + workorder: 'Work order', // 工单管理 + WorkorderReview: 'Work order review', // 工单审核 + workorderDetail: 'Ticket details', // 工单详情 + networkconfig: 'network settings', // 网络设置 + alarmEvent: 'Alarm event', // 告警事件 + alarmLog: 'Alarm log', // 告警日志 + settingAlarm: 'Alarm settings', // 告警设置 + operateLog: 'Operation log', // 操作日志 + serverEvent: 'Physical host events', // 物理主机事件 + cloudServerEvent: 'Cloud server events', // 云服务器事件 + vMwareMgr: 'VMware managed', // VMware纳管 + vMwareMgrDetail: 'VMware Onboarding Details', // VMware纳管详情 + + }, + login: { + resetPassword: 'reset Password', // 重置密码 + oldPwd: 'old password', // 原密码 + placeholder: 'Password length should be controlled within 6 ~ 18 characters', // 长度6~18位 + newPwd: 'new password', // 新密码 + confirmPwd: 'confirm password', // 确认密码 + confirmPwdErr: 'The passwords entered twice do not match!', // 两次输入密码不一致! + pwdMsg: 'password can not be blank', // 密码不能为空 + confirmPwdlenMsg: 'The password can only be a combination of English letters and numbers', // 密码只能由英文字母、数字组合 + confirmPwdMsg: 'Confirm password and password input are inconsistent', // 确认密码和密码输入不一致 + }, + home: { + homeText: 'Resource pooling and standardization, intelligent planning and management', // 资源池化与标准化,智能规划与管理 + homeSubText: 'A single neutral console manages heterogeneous infrastructures and connects to existing business process platforms. The resources on the cloud are logically pooled, so as to implement resource allocation based on the enterprise organizational structure, and provide standard processes and standardized cloud services', // 单个中立的控制台对下纳管异构的基础设施,对接已有业务流程平台。将云上的资源进行逻辑池化,从而基于企业组织架构来实行资源分配,并提供标准的流程和规范的云服务 + createZone: 'Add Availability Zone', // 添加可用区 + createCluster: 'Add a cluster', // 添加集群 + createVdc: 'Add VDC', // 添加VDC + cpuUseRatio: 'CPU usage', // CPU使用率 + memUseRatio: 'memory usage', // 内存使用率 + owningCluster: 'owning cluster', // 所属集群 + cloudHosting: 'Cloud Server', // 云服务器 + physicalMachine: 'physical host', // 物理主机 + workerOrder: 'Work order review', // 工单审核 + alarm: 'alert', // 告警 + cpuUtilization: 'CPU utilization', // CPU利用率 + memoryUtilization: 'memory utilization', // 内存利用率 + storageUtilization: 'storage utilization', // 存储利用率 + accountOverview: 'Account Overview', // 账户总览 + platformManage: 'Platform management user', // 平台管理用户 + orgManage: 'Organizing management users', // 组织管理用户 + selfService: 'self-service users', // 自服务用户 + used: 'used', // 已用 + totalCpu: 'Total CPU capacity', // CPU总容量 + usable: 'available', // 可用 + totalMem: 'total memory capacity', // 内存总容量 + totalStorage: 'total storage capacity', // 存储总容量 + zone: 'Availability Zone', // 可用区 + zoneNum: 'Number of Availability Zones', // 可用区数量 + cluster: 'cluster', // 集群 + clusterNum: 'Total number of clusters', // 集群总数 + physicalHost: 'physical machine', // 物理机 + physicalHostNum: 'Total number of physical machines', // 物理机总数 + VDC: 'VDC', // VDC + VDCNum: 'Total VDCs', // VDC总数 + serverVm: 'Cloud Server', // 云服务器 + serverVmNum: 'Total number of cloud servers', // 云服务器总数 + total: 'total', // 总数 + }, + + cloneTypeArr: { + LINK_CLONE: 'linked clone', // 链接克隆 + FULL_CLONE: 'full clone', // 链接克隆 + }, + securityPolicyArr: { + NONE: 'none', // 无 + SECURITY_GROUP: 'security group', // 安全组 + VIRTUAL_FIREWALL: 'virtual firewall', // 虚拟防火墙 + }, + successfulOperation: 'Successful operation!', // 操作成功 + operationFailed: 'operation failed!', // 操作失败 +} \ No newline at end of file diff --git a/src/assets/common/lang/en/externalCloud.js b/src/assets/common/lang/en/externalCloud.js deleted file mode 100644 index 20ae7df..0000000 --- a/src/assets/common/lang/en/externalCloud.js +++ /dev/null @@ -1,267 +0,0 @@ -// externalCloud -export default { - clusterEdleteConfirm: 'Are you sure you want to delete this physical cluster?', // 确定删除该物理集群吗? - clusterEdleteSuccess: 'Delete physical cluster successfully!', // 删除物理集群成功! - transVmTips1:'During the migration process, the cloud server still provides services to the public normally. In the final stage of migration, the system automatically shuts down the cloud server and synchronizes the incremental data generated during the migration process to complete the migration;', - transVmTips2:'After the migration is completed, automatically start the cloud server on the target cluster', - statuscell: { - OVERDUE: 'expired', // 已过期 - AVAILABLE: 'online', // 在线 - CONNECTED: 'connected', // 已连接 - INSTALLING: 'Install', // 安装 - SUSPEND: 'pause', // 暂停 - UNKNOWN: 'other', // other - ONLINE: 'online', // 在线 - OFFLINE: 'offline', // 离线 - HALT: 'abnormal', // 异常 - EXCEPTION: 'abnormal', // 异常 - NORMAL: 'normal', // 正常 - WARNING: 'warn', // 警告 - ERROR: 'mistake', // 错误 - POWERED_ON: 'online', // 在线 - POWERED_OFF: 'closure', // 关闭 - TASK_EXECUTION: 'task executtion', - INIT: 'init', - }, - vcenter: { - name: 'name', - remark: 'remark', - status: 'status', - versionNumber: 'version Number', - clusterUrl: 'Cluster URL', - useRate:'Utilization', - clustercpurate: 'CPU utilization', - clustermemoryrate: 'memory utilization', // 内存利用率 - clusterstoragerate: 'storage utilization', // 存储利用率 - addVcenter: 'add vcenter', - versionNumber: 'version number', - editVcenter: 'edit vCenter', - nameLength: 'The value contains 2 to 32 characters',// - loginFalse: 'The vcenter login account fails to be verified. Check whether the account password is correct',// - nametooltip: 'The value can contain 2 to 32 characters, including digits, and letters',//The value can contain 2 to 32 characters, including digits, and letters - type: 'type', - storageTotalCapacity: 'Total capacity', - storageCapacityUsedRate: 'Capacity utilization rate', - clusterEditSussess: 'VCenter information is successfully edited', - clusterAddtSussess: 'VCenter information is successfully added. Procedure', - clusterSummary: 'Summary', // 概要 - clusterPhysicalHost: 'Physical Host', // 物理主机 - clusterVersion: 'Version', // 集群版本 - clusterCeateTime: 'Ceate Time', // 添加时间 - cpuModelName: 'name', // 名称 - cpuModelstatus: 'status', // 状态 - cpuModelType: 'CPU type', // CPU类型 - cpuModelserverArch: 'server Arch', // 服务器架构 - cpuModelserverType: 'server Type', // 服务器类型 - cpuModelcpurate: 'CPU rate', // CPU利用率 - cpuModelmemoryrate: 'memory rate', // 内存利用率 - vmNumber: 'host number', - storageModelmemoryrate: 'storage rate', // 内存利用率 - cloudServer: 'cloud Server', // 存储 - domainName:'Domain Name', - domainNameUrlWranMsg:'please input domain name Ip', - clusterEditPassword:'please input edit password', - enterPort:'Please enter the port number', - enterProtocol:'Please select an address protocol type', - }, - - // VMware纳管 - vMwareMgr: { - name: 'name', // 名称 - namePlac: 'Name is required', // 名称不能为空 - remark: 'describe', // 描述 - vcenterIp: 'ip address', // ip地址 - vcenterPort: 'port', // 端口 - vcenterAccount: 'account', // 账号 - vcenterAdminName: 'username', // 用户名 - vcenterAdminNameNot: 'Username can not be empty', // 用户名不能为空 - vcenterAdminNamePlac: 'Enter the vCenter administrator username', // 输入vCenter管理员用户名 - vcenterAdminPassword: 'password', // 密码 - vcenterAdminPasswordNot: 'password can not be blank', // 密码不能为空 - vcenterAdminPasswordPlac: 'Please enter password', // 请输入密码 - addvMwareMgr: 'Add VMware Managed', // 添加VMware纳管 - editvMwareMgr: 'Edit VMware Managed', // 编辑VMware纳管 - type: 'type', // 类型 - typePlac: 'Type cannot be null', // 类型不能为空 - addSucc: 'Added successfully', // 添加成功 - editSucc: 'Edited successfully', // 编辑成功 - vmlist: 'Cloud server list', // 云服务器列表 - powerStatus: 'state', // 状态 - memory: 'Memory', // 内存 - }, - network: { - network: 'The internet',// 网络 - networkName: 'network name',// 网络名称 - virtualSwitch: 'virtual switch',// 虚拟交换机 - portGroup: 'Port group to which it belongs',// 所属端口组 - macAddress: 'MAC address',// MAC地址 - ipAddress: 'IP address',// IP地址 - pool: 'address pool',// 地址池 - uploadSpend: 'Downlink bandwidth(KB/S)',// 下行带宽(KB/S) - downloadSpend: 'Upstream bandwidth(KB/S)',// 上行带宽(KB/S) - setUp: 'network settings', //网络设置 - cluster: 'physical cluster', //物理集群 - selectcluster: 'Please select a physical cluster', //请选择物理集群 - networkName: 'network name', //网络名称 - networkNameplac: 'Please enter a network name', //请输入网络名称 - networkNametooltip: 'Support Chinese, English, numbers, limited to 2~18 characters', //支持中文、英文、数字,限定2~18字数 - modelType: 'NIC type', //网卡类型 - networkCard: 'NIC', //网卡 - modelTypeplac: 'Please select the network card type', //请选择网卡类型 - addressPool: 'address pool', //地址池 - addressPoolplac: 'Please select an address pool', //请选择地址池 - virtualSwitch: 'virtual switch', //虚拟交换机 - virtualSwitchplac: 'Please select a virtual switch', //请选择虚拟交换机 - portGroup: 'port group', //端口组 - portGroupplac: 'Please select a port group', //请选择端口组 - permission: 'security group', //安全组 - permissionresouse: 'Security Group Resources', //安全组资源 - effectivepermission: 'Effective security group', //生效安全组资源 - networkNamelen: 'Name length should be controlled between 2 ~ 18 characters', //名称长度应控制在 2 ~ 18 个字符 - securityPolicy: 'security strategy', //安全策略 - virtualFirewallName: 'virtual firewall', //虚拟防火墙 - virtualFirewallNamePlc: 'Please select a virtual wall', //请选择虚拟防护墙 - }, - disk: { - provisionMode: 'Provision mode',//Provision mode - provisioningDeferredZeroing: 'Thick provisioning deferred zeroing',//Thick provisioning deferred zeroing - setForQuickZeroing: 'set for quick zeroing',//set for quick zeroing - sourceFile: 'source File', - leanProvisioning: 'Lean provisioning'//Lean provisioning - }, - task: { - type: 'type', - operation: 'operation', - objectName: 'object Name', - operationUser: 'operation User', - startTime: 'start Time', - finishTime: 'finish Time', - status: 'status', - detail: 'detail', - reason: 'reason', - }, - vmList: { - shutdown: 'shutdown', - wakeUp: 'wakeUp', - pause: 'pause', - restart: 'restart', - powerOff: 'power Off', - clone: 'clone', - edit: 'edit', - migration: 'migration', - migrationMc:'migration to MC', - delete: 'delete', - create: 'Create ', - cancelled: 'Cancelled ', - turnOn: 'Turn on ', - cancel: "Cancel ", - shutDown: 'Shut down ', - reboot: 'Reboot ', - ipAddress: 'ip address ', - cpuCore: "cpu (core) ", - memorySize: "Memory (GB) ", - storageSize: "Storage (GB) ", - hasOpenVmTips: 'There is a VM in power-on state in the selected VM, please check ', - hasCloseVmTips: "The selected VMS have VMS in shutdown state, please check ", - opensuccess: "Successfully issued the startup task. Please view it in the task console ", - closesuccess: "Successfully issued the Power off. Please view it in the task console ", - sureclose: "Confirm power off ", - delsuccess: "Delete successfully ", - wakeupsuccess: "Successfully issued the Wake up success. Please view it in the task console ", - pausesuccess: "Pause success ", - poweroffsuccess: "Successfully issued the Power off success. Please view it in the task console ", - rebootsuccess: "Successful reboot ", - sureShutUpTips: " This action will shut down this cloud server. Do you want to continue?", - sureWeakUpTips: " This operation will wake up the cloud server, Do you want to continue?", - sureDelTips: " This action will delete this cloud server, do you want to continue?", - sureBatchRebootTips: " This operation will restart cloud servers in bulk. Do you want to continue?", - surePauseTips: " This action will pause this cloud server. Do you want to continue?", - sureRebootTips: " This operation will restart the cloud server. Do you want to continue?", - sureCloseTips: " This operation will power down the cloud server. Do you want to continue?", - sureBatchDelTips: " This action will remove this cloud server in bulk, do you want to continue?", - sureWeakeUp: " Confirm wake up ", - surePause: "Confirm pause", - sureReboot: " Confirm restart ", - surePowerOff: " Confirm power off ", - powerOff: "power off", - sureDel: "Confirm delete", - batchReboot: "Batch restart", - batchDel: " Batch delete ", - }, - vmOperate: { - createVm: ' Create Cloud Server ', - physicalCluster: 'physical cluster', - name: 'Name', - description: 'Description', - runningPosition: 'Running position', - storageLocation: 'Storage location', - choose: 'choose', - MirrorFir: " mirror file ", - core: 'core', - custom: 'custom', - memory: 'memory', - diskCnatNull: "The disk must not be empty", - disk: ' Disk ', - netCardCantNull: ' Network card must not be empty ', - netCard: 'net card', - addntCard: " Add NIC ", - basicInfo: 'Basic information', - os: " operating system ", - configInfo: " Configuration information ", - disk: " disk ", - network: 'network', - networkName: ' Network name ', - ntAdapter: ' network adapter ', - cpuCore: " Number of CPU cores ", - memSize: " memory size ", - createSuccess: " The VM is created successfully, please view the progress on the task console ", - chooseRunWayTips: " Please select a virtual machine run location first ", - cantMoreDisk: 'The number of disks has reached the upper limit', - cantMoreNt: "The number of network card has reached the upper limit", - chooseLocation: "Choose where to store it ", - sure: "Be sure", - host:'host', - cancel: "Cancel", - mirName: "Mirror name", - opType: "Operation type", - osType: "Mirror type", - osSize: "Mirror size", - chooseMirFile: "Choose Mirror File", - editVm: 'Edit Cloud server ', - cantChangeOnlineCpu: 'The CPU size of an online VM cannot be modified ', - cantChangeOnlineMem: 'The memory size of an online virtual machine cannot be modified ', - cantDelOnlineDisk: ' Cannot delete an added disk from an online VM', - diskCantNull: 'Disk must not be empty ', - willDelDisk: 'This disk will be deleted ', - delThisDisk: 'Delete this disk ', - cancelThisDisk: 'cancel delete disk ', - diskCantNull: 'Disk must not be empty ', - addNewDisk: 'Add a new disk', - delNetCard: 'This network card will be deleted ', - recoverNetCard: 'undo to delete a network card', - cpuCantNull: 'cpu cannot be empty ', - memCantNull: 'Memory cannot be empty ', - cantChangeLessBefor: 'The disk size after modification must not be smaller than the original disk size ', - editSuccessTips: 'Edit and modify task submitted successfully, please view specific information in the task desk', - cloneVm: 'Clone Cloud Server ', - chooseHost: 'Select host ', - cluster: 'cluster', - cloneSuccess: 'Clone task submitted successfully, please check the specific information in the task console ', - chooseHostTips: 'Please select the host first', - autoPlace:'Automatic placement', - computingRes:'Computing resource', - automatic:'automatic', - customize:'customize', - bindRes:'Bind resources', - modeMig:'Mode of migration', - shutDownTips:'After the migration, the vCenter cloud server is automatically shut down', - stopTips:'After the migration is complete, the original VM is automatically stopped', - startMoving:'Start after moving in', - addNicTips:'If no NIC is added, add nics as required', - nic:'Network card', - phyTips:'The physical cluster cannot be empty', - storageTips:'The storage location cannot be empty', - nicTips:'The NIC specifications cannot be empty', - offlineMig:'The offline migration is submitted successfully. Check the progress on the task console', - } -} diff --git a/src/assets/common/lang/en/imageMgr.js b/src/assets/common/lang/en/imageMgr.js deleted file mode 100644 index 430bc1e..0000000 --- a/src/assets/common/lang/en/imageMgr.js +++ /dev/null @@ -1,75 +0,0 @@ -// imageMgr 镜像管理 -export default { - imageMgr: { - publicImage: 'public mirror', // 公共镜像 - sharedMirror: 'shared mirror', // 共享镜像 - privateImage: 'private image', // 私有镜像 - status: 'state', // 状态 - imageName: 'image name', // 镜像名称 - imageNameplac: 'Please enter a mirror name', // 请输入镜像名称 - imageRemark: 'describe', // 描述 - imageRemarkplac: 'Please enter a description', // 请输入描述 - imageSize: 'capacity', // 容量 - orgNameDesc: 'Organization', // 所属组织 - typeDesc: 'Image type', // 镜像类型 - imageFromDesc: 'source', // 来源 - zoneName: 'Availability Zone', // 可用区 - zoneNameplac: 'Please select an Availability Zone', // 可用区 - createTime: 'creation time', // 创建时间 - createUser: 'creator', // 创建者 - imageDownload: 'export image', // 导出镜像 - syncImage: 'Sync mirror', // 同步镜像 - syncImageSuccess: 'Sync mirroring succeeded', // 同步镜像 - deleteImage: 'delete', // 删除 - deleteConfirm: 'OK to delete the image?', // 确定删除该镜像? - deletebatchConfirm: 'OK to delete the selected image?', // 确定删除所选镜像? - deleteSuccess: 'Mirror deleted successfully!', // 删除镜像成功! - tosharedImage: 'Convert to shared image', // 转为共享镜像 - topublicMirror: 'Convert to public mirror', // 转为公共镜像 - editImage: 'Edit image', // 编辑镜像 - editImageSuccess: 'Edit image successfully!', // 编辑镜像成功! - makeImage: 'make a mirror', // 制作镜像 - makeImageSuccess: 'Created mirror successfully!', // 制作镜像成功! - uploadImage: 'upload image', // 上传镜像 - orgName: 'organize', // 组织 - orgNameplac: 'Please select an organization', // 请选择组织 - imageupload: 'Upload local image files to KCP cloud platform', // 上传本地镜像文件到KCP云平台 - fileName: 'Upload local image files to KCP cloud platform', // 选择镜像 - fileNameplac: 'Please select an image file!', // 请选择镜像文件! - uploadFileFormat: 'Upload files can only be in .iso, .gvm format!', // 上传文件只能是 .iso、.gvm格式! - uploadFileSize: 'Upload file size cannot exceed 50GB!', // 上传文件大小不能超过 50GB! - uploadingFile: 'uploading file', // 正在上传文件: - notCloseThisPage: 'please do not close this page', // ,请不要关闭此页面 - filetatalSize: 'total file size', // ,请不要关闭此页面 - uploaded: 'uploaded', // ,请不要关闭此页面 - uploadSpeed: 'upload speed', // 上传速度 - timeSpent: 'time spent', // 已花费时间 - timeRemaining: 'estimated time remaining', // 预计剩余时间 - cancelUpload: 'cancel upload', // 取消上传 - imgstatus: { - NORMAL: 'normal', // 正常 - ERROR: 'abnormal', // 异常 - SYNCING: 'synchronizing', // 同步中 - }, - imageFrom: { - UPLOAD: 'upload', // 上传 - MACHINE_MAKE: 'Cloud server production', // 云服务器制作 - SHARE_CHANGE: 'Shared image conversion', // 共享镜像转换 - PRIVATE_CHANGE: 'Private image conversion', // 私有镜像转换 - }, - imageActionList: { - IMAGE_UPLOAD: 'upload image', // 上传镜像 - IMAGE_SYNC: 'mirror sync', // 镜像同步 - IMAGE_CREATE_TEMPLATE: 'Generate template image', // 生成模板镜像 - IMAGE_MODIFY: 'Edit image', // 编辑镜像 - IMAGE_PRIVATE_TO_SHARE: 'Private image promoted to shared image', // 私有镜像提升为共享镜像 - IMAGE_SHARE_TO_PUBLIC: 'Shared image promoted to public image', // 共享镜像提升为公共镜像 - IMAGE_MAKE: 'make a mirror', // 制作镜像 - IMAGE_CREATE_GVM_FILE: 'Generate image file', // 生成镜像文件 - IMAGE_ERROR_SYNC: 'Mirror Abnormal - Sync Mirror', // 镜像异常-同步镜像 - IMAGE_DELETE: 'delete mirror', // 删除镜像 - IMAGE_DOWNLOAD: 'image download', // 镜像下载 - }, - makeImageMsg: 'The image only contains the system disk of the selected cloud server. In order to avoid incomplete image data, please migrate the important data of other disks of the cloud server to the system disk before making an image!', // 镜像中只包含选择云服务器的系统盘,为了避免镜像数据的不全面,请将云服务器的其他磁盘的重要数据迁移到系统盘中再来制作镜像! - } -} \ No newline at end of file diff --git a/src/assets/common/lang/en/index.js b/src/assets/common/lang/en/index.js index fe13f2b..d3ff3ca 100644 --- a/src/assets/common/lang/en/index.js +++ b/src/assets/common/lang/en/index.js @@ -5,12 +5,6 @@ import monitorMgr from './monitorMgr' import alarmevents from './alarmevents' import serverVirtualization from './serverVirtualization' import operateMgr from './operateMgr.js' -import imageMgr from './imageMgr.js' -import operateLog from './operateLog.js' -import transferMgr from './transferMgr.js' -import taskcenter from './taskcenter.js' -import externalCloud from './externalCloud.js' -import reliableCenter from './reliableCenter.js' export default { common,// 公共模块 authorityMgr, //权限管理 @@ -18,11 +12,5 @@ export default { ...monitorMgr, // 监控 ...alarmevents, // 告警事件 ...serverVirtualization, // kcp及自服务云服务器详情-操作日志,参考mc将任务详情,和失败原因,进行国际化转移 - ...operateMgr, // 操作 - ...imageMgr, // 镜像管理 - ...operateLog, // 操作日志 - ...transferMgr, // 云服务器转移 - ...taskcenter, // 任务中心 - externalCloud,//外部云 - reliableCenter, + ...operateMgr // 操作 } \ No newline at end of file diff --git a/src/assets/common/lang/en/operateLog.js b/src/assets/common/lang/en/operateLog.js deleted file mode 100644 index aef892c..0000000 --- a/src/assets/common/lang/en/operateLog.js +++ /dev/null @@ -1,17 +0,0 @@ -// operateLog 操作日志 -export default { - operateLog: { - logStatus: { - SUCCESS: "success", - FAIL: "fail", - RUNNING: "in execution", - }, - logType: { - IMAGE: "Image management", - CLUSTER: "Cluster management", - VDC: "VDC management", - ZONE: "Availability Zone Management", - ORG: "Organizational management", - }, - } -} \ No newline at end of file diff --git a/src/assets/common/lang/en/operateMgr.js b/src/assets/common/lang/en/operateMgr.js index 1dfc8c6..5da44b3 100644 --- a/src/assets/common/lang/en/operateMgr.js +++ b/src/assets/common/lang/en/operateMgr.js @@ -2,7 +2,6 @@ export default { workOrder: { - choseRole:'choose role', workOrderId: 'Ticket ID', // 工单ID applyUser: 'applicant', // 申请人 organizationName: 'Organization', // 所属组织 @@ -147,4 +146,4 @@ export default { pchooseNetworkInfo: "Please check at least one network configuration", // 请至少勾选一个网络配置 }, -} +} \ No newline at end of file diff --git a/src/assets/common/lang/en/reliableCenter.js b/src/assets/common/lang/en/reliableCenter.js deleted file mode 100644 index baa4746..0000000 --- a/src/assets/common/lang/en/reliableCenter.js +++ /dev/null @@ -1,356 +0,0 @@ -export default { - drStragtegyInfor:{ - Monday: 'Monday', - Tuesday: 'Tuesday', - Wednesday: 'Wednesday', - Thurday: 'Thurday', - Friday: 'Friday', - Saturday: 'Saturday', - Sunday: 'Sunday', - }, - weekObj: { - MONDAY: "Monday", - TUESDAY: "Tuesday", - WEDNESDAY: "Wednesday", - THURSDAY: "Thurday", - FRIDAY: "Friday", - STAURDAY: "Saturday", - SUNDAY: "Sunday", - }, - configurationGuide:' Configuration guide:', - configurationGuideStep1:'1. Install a new KCP and set the IP address', - configurationGuideStep2:'2. Add the new KCP as the standby KCP. The system automatically synchronizes the configuration and data of the active KCP to this node', - configurationGuideStep3:'3. If the active KCP is faulty, log in to the IP address of the standby KCP and switch the standby KCP to the active KCP', - nodeIp:'Node IP', - password:'password', - addStandyAdd:'The standby KCP is added', - standySlaveShip:'Master/slave relationship', - Switch:'Switch to primary site', - undeleted:'undeleted', - promotedTips:'This operation promotes the standby KCP node to the active node. Do you want to continue?', - promotedSuccess:'The active node is promoted successfully. Procedure', - cancelPromoted:'Cancelled promotion', - delNode:'This operation will delete the standby KCP node. Decide whether to continue', - masterNoe:'Master (current access)', - slave:'slave', - main:'The main', - slaveNow:'slave (current access)', - selectNic:'Select NIC specifications', - net2:'Two-layer network', - net3:'Three-layer network', - netName:'Network name', - netDes:'Network description', - netHie:'Network hierarchy', - nicType:'Nic type', - netType:'Network type', - addPool:'Address pool', - virSwitch:'Virtual switch', - primarySite:'Primary site recovery point list', - secSiteList:'Secondary site recovery point list', - fullBackup:'Full backup', - incBackup:'Incremental backup', - secSite:'Secondary site', - primarySite:'Primary site', - synTo:'Synchronize to', - backName:'Backup file name', - backPath:'Backup path', - backMode:'Backup mode', - backSize:'Backup size', - backComTime:'Backup completion time', - selectRePoint:'Select a recovery point', - mainSlaveSite:'Dr Data at the primary and secondary sites', - disasterPolicy:'Disaster recovery policy', - siteManage:'Site management', - addSite:'Add a site', - siteName:'Site name', - addSiteSuccess:'add Site Success', - linkManage:'Link management', - delSiteTips:'The deletion cannot be restored. Exercise caution when performing this operation', - delSiteTite:'Are you sure to delete data?', - remark:'remark', - - createDrPolicy:'Create a Dr Policy', - executeDrPolicy:'Execute the Dr Policy immediately', - enable:'enable', - disable:'disable', - connectivityTest:'Connectivity test', - probeObj:'Probe object', - detectionRes:'Detection result', - underDete:'Under detection', - probObjectCom:'The probe object communicates properly', - communicationError:'The communication between the probe object is abnormal. Check the network and try again', - linkDetection:'Link detection', - retest:'retest', - addLink:'Add link', - limited:'limited', - unlimited:'unlimited', - edit:'edit', - conTest:'Connectivity test', - delete:'delete', - site1:'Site 1', - site2:'Site 2', - linkStatusSite:'Link status of the site', - transRateLim:'Transmission rate limit', - normal:'normal', - anomaly:'anomaly', - editLink:'Edit link', - sectionDescri:'This section describes how to configure IP addresses for the management nodes of sites and sites so that data can be transmitted between sites.', - linkRestr:'Link broadband restriction', - configureDrIp:'Configure the Dr IP address', - communicationIpAddress:'The communication ip address cannot be empty', - enterNormalIp:'Please enter a normal ip address', - selectThePrimary:'Select the primary site and secondary site', - site1Tips:'Site 1 must not be empty', - site2Tips:'Site 2 must not be empty', - linkBroadBand:'The link broadband limit cannot be empty', - dataCommit:'Data commit, please close the window later', - linkEditSucc:'Link editing succeeded', - linkDete:'Link detection exception', - addLinkSuccess:'add Link Success', - - backupServerLoc: 'Backup server location', - backupServer: 'Backup server', - state: 'State', - totalCapacity: 'Total capacity', - availableSpace: 'Available space', - selectCloudServer: 'Select cloud server', - cloudServerSelected: 'selected', - clear: 'Clear', - noDataSelected: 'No data selected', - packetDataLoading: 'Packet data loading', - cloudServerName: 'Cloud server name', - description: 'Description', - createDrPolicy: 'Create DR policy', - executeDrPolicyImmediately: 'Execute DR policy immediately', - compressedTransmission: 'Compressed transmission', - uncompressedTransmission: 'Uncompressed transmission', - immediately: 'Immediately', - hour: 'Hour', - drPolicyName: 'DR policy name', - primarySite: 'Primary site', - secondarySite: 'Secondary site', - cloudServer: 'Cloud server', - primarySiteBackupLoc: 'Primary site backup location', - primarySiteBackupPeriod: 'Primary site backup period', - secondarySiteDrLoc: 'Secondary site DR location', - drTransmissionMode: 'DR transmission mode', - drPro: 'DR Pro', - enabledState: 'Enabled state', - nextDrTime: 'Next DR time', - enableConfirmation: 'Enable confirmation', - disableConfirmation: 'Disable confirmation', - deletionConfirmation: 'Deletion confirmation', - enabledSuccessfully: 'Enabled successfully', - disabledSuccessfully: 'Disabledsuccessfully', - hourlyBackup: 'Hourly backup', - dailyBackup: 'Daily backup', - everyDay: 'Every day', - startTime: 'Start time', - endTime: 'End time', - weeklyBackup: 'Weekly backup', - everyWeek: 'Every week', - executedSuccessfully: 'Executed successfully', - batchEnabledSuccessfully: 'Batch enabled successfully', - batchDisabledSuccessfully: 'Batch disabled successfully', - disabledStatusPolicySelected: 'Disabled status policy selected, cannot execute immediately', - enabledPolicyExists: 'Enabled policy exists, cannot start', - disabledStatusPolicyExists: 'Disabled status policy exists, cannot disable', - basicInfo: 'Basic information', - drConfig: 'DR configuration', - definiteInfo: 'Definite information', - choose: 'Choose', - schematicDiagram: 'Schematic diagram', - primarySiteLocalBackup: 'Primary site local backup', - backupLoc: 'Backup location', - pleaseEnter: 'Please enter', - backupFreq: 'Backup frequency', - day: 'Day', - weeks: 'Weeks', - backupCycle: 'Backup cycle', - backupPeriod: 'Backup period', - nextDay: 'Next day', - backupStartTime: 'Backup start time', - arbitraryPointInTime: 'Arbitrary point in time', - policyDuration: 'Policy duration', - singleServerTimeoutDuration: 'Single server timeout duration', - backupCopy: 'Backup copy', - secondarySiteRemoteDr: 'Secondary site remote DR', - drLocation: 'DR location', - drRpoPeriod: 'DR RPO period', - transmissionMode: 'Transmission mode', - dataSyncCompressed: 'Data sync compressed to improve transmission efficiency and reduce bandwidth consumption, but may consume more CPU resources. Please choose whether to enable based on bandwidth conditions.', - enterDrPolicyName: 'Enter DR policy name', - policyNameFormat: 'Supports 2-32 characters of Chinese, English, digits, and special characters', - selectPrimarySite: 'Select primary site', - selectSecondarySite: 'Select secondary site', - selectCloudServer: 'Select cloud server', - selectBackupLoc: 'Select backup location', - selectDrLoc: 'Select DR location', - selectStartTime: 'Select start time', - selectEndTime: 'Select end time', - selectBackupPeriod: 'Select backup period', - enterPolicyDuration: 'Enter policy duration', - enterSingleTimeout: 'Enter single timeout duration', - enterBackupCopies: 'Enter backup copies', - selectDrRpoPeriod: 'Select DR RPO period', - cloudServerName: 'Cloud server name', - cloudServerStatus: 'Cloud server status', - createDrPolicy: 'Create DR policy', - editDrPolicy: 'Edit DR policy', - policyCreationSucceeded: 'Policy creation succeeded', - policyModificationSucceeded: 'Policy modification succeeded', - enableConfirmation: 'Confirm enable this policy?', - disableConfirmation: 'Confirm disable this policy?', - deletionConfirmation: 'Confirm delete this policy?', - startTime: 'Start time', - primarySiteBackupMethod: 'primary Site Backup Method', - secondarySiteDrMethod: 'secondary Site Dr Method', - weeklyBackup: 'weekly Backup', - hourlyBackup: 'hourly Backup', - cloudServerList: 'Cloud server list', - cloudServerName: 'Cloud server name', - cloudServerStatus: 'Cloud server status', - drmRecoveryMethod: 'Disaster recovery method', - startPractice: 'Start practice', - endPractice: 'End practice', - practiceCloudServer: 'Practice cloud server', - practiceToSecondarySite: 'Practice to secondary site', - practiceRecoveryPoint: 'Practice recovery point', - selectPracticeRecoveryPoint: 'Select practice recovery point', - automatic: 'Automatic', - storageLocation: 'Storage location', - selectStorageLocation: 'Select storage location', - networkInterface: 'Network interface', - selectNetworkInterfaceData: 'Select network interface data', - drmSubmitSuccess: 'Disaster recovery practice submitted successfully, please check the progress in the task bar', - endDrmSubmitSuccess: 'End disaster recovery practice submitted successfully, please check the progress in the task bar', - notExist: 'Not exist', - rpoSyncing: 'RPO syncing', - deleting: 'Deleting', - allCloudServer: 'All cloud servers', - primarySiteRecovery: 'Primary site recovery', - secondarySiteRecovery: 'Secondary site recovery', - migrateToPrimarySite: 'Migrate to primary site', - differentialDetection: 'Differential detection', - primarySiteName: 'Primary site name', - primarySiteBackupNum: 'Primary site backup number', - primarySiteBackupTotalSize: 'Primary site backup total size', - primarySiteLatestRecoveryTime: 'Primary site latest recovery time', - primarySecondaryDataDiff: 'Primary and secondary site data difference', - secondarySiteName: 'Secondary site name', - secondarySiteBackupTotalSize: 'Secondary site backup total size', - secondarySiteBackupNum: 'Secondary site backup number', - secondarySiteLatestRecoveryTime: 'Secondary site latest recovery time', - cloudServerBackupDiffDetection: 'Cloud server backup differential detection', - prompt: 'Prompt', - confirm: 'Confirm', - cancel: 'Cancel', - cloudServerBackupDiffSubmitSuccess: 'Cloud server backup differential detection submitted successfully, please check the progress in the task bar', - primarySiteRecoveryTaskSubmitSuccess: 'Primary site recovery task submitted successfully, please check the progress in the task center', - migrateToPrimarySiteTip: 'Note: After the migration, the cloud server at the secondary site will be immediately shut down, the latest data will be migrated to the primary site, and the cloud server will be automatically started at the primary site after the data migration is completed. There will be a short interruption in the service during this process. If an error occurs during the migration, the migration will be canceled and the cloud server at the secondary site will be restarted.', - migrateCloudServer: 'Migrate cloud server', - migrateSubmitSuccess: 'Migrate data submitted successfully, please check the progress in the task bar', - secondarySiteStatus: 'Secondary site status', - primarySiteStatus: 'Primary site status', - synchronizeBackupRecoveryPointTo: 'Sync backup recovery point to', - confirmSyncTo: 'Confirm sync to', - data: 'Data', - dataSyncSubmitSuccess: 'Data sync submitted successfully, please check the progress in the task bar', - plannedRecovery: 'Planned recovery (primary site must be online)', - disasterRecovery: 'Disaster recovery', - recoverCloudServer: 'Recover cloud server', - recoverToSecondarySite: 'Recover to secondary site', - recoveryPoint: 'Recovery point', - runningLocation: 'Running location', - plannedRecoverySubmitSuccess: 'Planned recovery submitted successfully, please check the progress in the task bar', - disasterRecoverySubmitSuccess: 'Disaster recovery submitted successfully, please check the progress in the task bar', - "DRTest": "Disaster Recovery Test", - "recoveryMethod": "Recovery Method", - "startTest": "Start Test", - "endTest": "End Test", - startDrNote:" Note: After the drill starts, the cloud server at the primary site shuts down immediately and the Dr Machine is automatically started at the secondary site." , - endDrNote:" Note: After the drill is complete, delete the Dr Machine and clear the Dr Data during the drill." , - endDrNote2:" Ending the drill will not affect cloud server services at the primary site ", - startTestNote: "Note: During scheduled recovery, the cloud server at the primary site will be shut down immediately and the latest data will be synchronized to the secondary site. After data synchronization is complete, the Dr Machine will be automatically started at the secondary site.", - startTestNote1: "There will be a brief interruption of service during this process." , - startTestNote2: "If an error occurs during the recovery, the recovery will be canceled and the primary site cloud server will be restarted." , - endTestNote: "Note: Pull up the Dr Machine at the secondary site immediately after disaster recovery. ", - endTestNote2: "Data that is not synchronized to the secondary site will be lost." , - "testServer": "Test Cloud Server", - "testToBackup": "Test to Backup Site", - "testRecoveryPoint": "Test Recovery Point", - "chooseRecoveryPoint": "Please choose a recovery point for the test", - "auto": "Auto", - "storageLocation": "Storage Location", - "chooseStorageLocation": "Please choose a storage location", - "networkInterface": "Network Interface", - "chooseNetworkInterfaceData": "Please choose network interface data", - "testSubmitted": "The disaster recovery test has been submitted successfully. Please check the progress in the task list.", - "endTestSubmitted": "The end of the disaster recovery test has been submitted successfully. Please check the progress in the tasklist.", - "notExist": "Does not exist", - "RPOSyncing": "RPO syncing", - "deleting": "Deleting", - "allServers": "All Cloud Servers", - "mainSiteDRRecovery": "Primary Site Disaster Recovery Recovery", - "backupSiteDRRecovery": "Backup Site Disaster Recovery Recovery", - "revertToMainSite": "Revert to Primary Site", - "differencesCheck": "Differences Check", - "mainSiteName": "Primary Site Name", - "mainSiteBackupCount": "Number of Backups at Primary Site", - "mainSiteBackupSize": "Total Backup Data Size at Primary Site", - "mainSiteLastRecoveryTime": "Primary Site Last Recovery Time", - "mainBackupDifferences": "Data Differences between Primary and Backup Sites", - "backupSiteName": "Backup Site Name", - "backupSiteBackupSize": "Total Backup Data Size at Backup Site", - "backupSiteBackupCount": "Number of Backups at Backup Site", - "backupSiteLastRecoveryTime": "Backup Site Last Recovery Time", - "performBackupCheck": "Perform backup file differences check between the primary and backup sites?", - "prompt": "Prompt", - "confirm": "Confirm", - "cancel": "Cancel", - "backupCheckSubmitted": "The submission of the backup file differences check has been successful. Please check the progress in the task list.", - "mainSiteDRRecoverySubmitted": "The submission of the primary site disaster recovery recovery task has been successful. Please check the progress in the task list.", - "revertNote": "Note: After the revert, the cloud server at the backup site will immediately shut down, and the latest data will be reverted to the primary site. After the data is reverted, the cloud server will be automatically started at the primary site. During this process, there will be a brief interruption of the business. If an error occurs during the revert, the revert will be canceled, and the cloud server at the backup site will be restarted.", - "revertServer": "Revert Cloud Server", - "revertSubmitted": "The revert data submission has been successful. Please check the progress in the task list.", - "backupSiteStatus": "Backup Site Status", - "mainSiteStatus": "Primary Site Status", - "syncTo": "Sync and overwrite the backup recovery point to", - "confirmSyncTo": "Confirm to sync to", - "data": "Data", - "syncSubmitted": "The data synchronization submission has been successful. Please check the progress in the task list.", - "plannedRecovery": "Planned Recovery (Primary Site Must Be Online)", - "DRRecovery": "Disaster Recovery Recovery", - "recoveryServer": "Recovery Cloud Server", - "recoveryToBackup": "Recovery to BackupSite", - "recoveryPoint": "Recovery Point", - "runLocation": "Run Location", - "plannedRecoverySubmitted": "The submission of the planned backup recovery has been successful. Please check the progress in the task list.", - "DRRecoverySubmitted": "The submission of the disaster recovery backup recovery has been successful. Please check the progress in the task list.", - NORMAL: "Protected", - PLAN_RECOVER: "Planned Recovery", - PLAN_RECOVERING: "Planned Recovery in Progress", - FAIL_RECOVER: "Failover Recovery", - FAIL_RECOVERING: "Failover Recovery in Progress", - BACKUPING: "Backing Up", - DELETEING: "Deleting Backup Files", - PRONG: "Backing Up (pro sync)", - START_DRILL: "Starting Disaster Recovery Drill", - DRILL: "Disaster Recovery Drill in Progress", - END_DRILL: "Ending Disaster Recovery Drill", - MOVE_BACK: "Data Reversion in Progress", - MASTER_RECOVERING: "Primary Site Recovery in Progress", - backupFileStatus:'backup File Status', - chooseMainRecoveryPoint:'choose recover point', - bdStatus:'Disaster recovery status', - backStatus:'backup status', - will:'will', - runnowTips: 'Due to the high resource usage of remote disaster recovery, please operate with caution', - runnowTitleTips: 'Execute disaster recovery strategy immediately for"{name}"?', - serverSearchTips:'Server Name/IP/UUID/Label', - PRONG:'Pro synchronization in progress', - HourBackupTips: 'The first backup is a full backup, and after a successful backup, the backup cycle task is executed.', - DayBackupTips: 'After exceeding the duration, the virtual machine being backed up will continue to be backed up, and virtual machines that have not yet started backup will be backed up first in the next backup cycle', - WeekBackupTips: 'After exceeding the duration, the virtual machine being backed up will continue to be backed up, and virtual machines that have not yet started backup will be backed up first in the next backup cycle', - SingleBackupTimeOut: 'The single backup timeout time refers to the backup timeout time of a single cloud server in the backup strategy. After exceeding the timeout period, the cloud server recognizes it as timeout and executes the next cloud server backup in the backup strategy' -} diff --git a/src/assets/common/lang/en/resourceMgr.js b/src/assets/common/lang/en/resourceMgr.js index f0df437..327c34a 100644 --- a/src/assets/common/lang/en/resourceMgr.js +++ b/src/assets/common/lang/en/resourceMgr.js @@ -1,439 +1,348 @@ // 资源管理 resourceMgr export default { - // 物理集群 - allcluster: "All clusters", // 全部集群 - plccluster: "Please select a cluster", // 请选择集群 - clusterName: "cluster name", // 集群名称 - loginCluster: "Log in to the cluster background", // 登入集群后台 - loginVcenter: "Log in to vCenter", // 登入Vcenter - clusterNameplaceholder: "Please enter a cluster name", // 请输入集群名称 - clusterStatus: "cluster status", // 集群状态 - BMC_IPaddress: "BMC IP Address", - clusterStatusObj: { - ONLINE: "online", // "在线", - OFFLINE: "offline", // "离线", - EXCEPTION: "abnormal", // "异常", - }, - clusterRemark: "describe", // 描述 - zoneName: "Availability Zone", // 可用区 - clusterUrl: "Cluster URL", // 集群URL - clusterUrlWranMsg: "ip or port number entered incorrectly", // ip或端口号输入有误 - clusterUrlIpWranMsg: "wrong ip address", // ip地址输入有误 - clusterUrlPortWranMsg: "Port number entered incorrectly", // 端口号输入有误 - clusterUrlprotocol: "protocol", // 协议 - clusterUrlprotNum: "The port number", // 端口号 - clusterUrlContent: - "Enter the IP of all CM/CM_VDI nodes in http or https format", // 输入所有CM/CM_VDI节点的IP,格式http或https - clustertype: "Cluster type", // 集群类型 - clustertypeplaceholder: "Please select a cluster type", // 集群类型 - clustercpurate: "CPU utilization", // CPU利用率 - clustermemoryrate: "memory utilization", // 内存利用率 - clusterstoragerate: "storage utilization", // 存储利用率 - toCluster: "login", // 登入 + // 物理集群 + allcluster: 'All clusters', // 全部集群 + plccluster: 'Please select a cluster', // 请选择集群 + clusterName: 'cluster name', // 集群名称 + loginCluster: 'Log in to the cluster background', // 登入集群后台 + clusterNameplaceholder: 'Please enter a cluster name', // 请输入集群名称 + clusterStatus: 'cluster status', // 集群状态 + clusterStatusObj: { + ONLINE: 'online',// "在线", + OFFLINE: 'offline',// "离线", + EXCEPTION: 'abnormal',// "异常", + }, + clusterRemark: 'describe', // 描述 + zoneName: 'Availability Zone', // 可用区 + clusterUrl: 'Cluster URL', // 集群URL + clusterUrlWranMsg: 'ip or port number entered incorrectly', // ip或端口号输入有误 + clusterUrlIpWranMsg: 'wrong ip address', // ip地址输入有误 + clusterUrlPortWranMsg: 'Port number entered incorrectly', // 端口号输入有误 + clusterUrlprotocol: 'protocol', // 协议 + clusterUrlprotNum: 'The port number', // 端口号 + clusterUrlContent: 'Enter the IP of all CM/CM_VDI nodes in http or https format', // 输入所有CM/CM_VDI节点的IP,格式http或https + clustertype: 'Cluster type', // 集群类型 + clustertypeplaceholder: 'Please select a cluster type', // 集群类型 + clustercpurate: 'CPU utilization', // CPU利用率 + clustermemoryrate: 'memory utilization', // 内存利用率 + clusterstoragerate: 'storage utilization', // 存储利用率 + toCluster: 'login', // 登入 - clusterAdd: "Add a physical cluster", // 添加物理集群 - clusterAddtSussess: "Created physical cluster successfully!", // 添加物理集群 - clusterEdit: "Edit physical clusters", // 编辑物理集群 - clusterEditSussess: "Editing physical cluster succeeded!", // 编辑物理集群 + clusterAdd: 'Add a physical cluster', // 添加物理集群 + clusterAddtSussess: 'Created physical cluster successfully!', // 添加物理集群 + clusterEdit: 'Edit physical clusters', // 编辑物理集群 + clusterEditSussess: 'Editing physical cluster succeeded!', // 编辑物理集群 - clusterEdleteConfirm: - "Are you sure you want to delete this physical cluster?", // 确定删除该物理集群吗? - clusterEdleteSuccess: "Delete physical cluster successfully!", // 删除物理集群成功! - clusterBaseInfo: "Basic Information", // 基本信息 - clusterStorageInfo: "store information", // 存储信息 - clusterSettingInfo: "setting information", // 存储信息 - clusterConfirmInfo: "Confirm information", // 确认信息 + clusterEdleteConfirm: 'Are you sure you want to delete this physical cluster?', // 确定删除该物理集群吗? + clusterEdleteSuccess: 'Delete physical cluster successfully!', // 删除物理集群成功! + clusterBaseInfo: 'Basic Information', // 基本信息 + clusterStorageInfo: 'store information', // 存储信息 + clusterConfirmInfo: 'Confirm information', // 确认信息 - clusterAdminName: "username", // 用户名 - clusterAdmin: "cluster administrator", // 集群管理员 - clusterAdminPasswordplac: "Please enter the cluster administrator password", // 请输入集群管理员密码 - clusterAdminPassword: "password", // 密码 - clusterEditPassword: "change Password", // 修改密码 - rootPassword: "root password", // root密码 - rootPasswordplac: "Please enter root password", // 请输入root密码 + clusterAdminName: 'username', // 用户名 + clusterAdmin: 'cluster administrator', // 用户名 + clusterAdminPassword: 'password', // 用户名 + clusterEditPassword: 'change Password', // 修改密码 - clusterStorage: "storage", // 存储 - clusterStorageName: "name", // 名称 - storageName: "storage name", // 存储名称 - storageType: "storage type", // 存储类型 - storageStatus: "storage state", // 存储状态 - storageUsage: "storage use", // 存储用途 - storagetotalSize: "total capacity", // 存储用途 - storageUsedSize: "Available capacity", // 存储用途 - storageUserate: "Utilization", // 存储用途 - clusterSummary: "summary", // 概要 - clusterPhysicalHost: "physical host", // 物理主机 - clusterVersion: "Cluster version", // 集群版本 - clusterCeateTime: "add time", // 添加时间 - cpuModelName: "name", // 名称 - cpuModelstatus: "state", // 状态 - cpuModelType: "CPU type", // CPU类型 - cpuModelserverArch: "server architecture", // 服务器架构 - cpuModelserverType: "server type", // 服务器类型 - cpuModelcpurate: "CPU utilization", // CPU利用率 - cpuModelmemoryrate: "memory utilization", // 内存利用率 + clusterStorage: 'storage', // 存储 + clusterStorageName: 'name', // 名称 + storageName: 'storage name', // 存储名称 + storageType: 'storage type', // 存储类型 + storageStatus: 'storage state', // 存储状态 + storageUsage: 'storage use', // 存储用途 + storagetotalSize: 'total capacity', // 存储用途 + storageUsedSize: 'Available capacity', // 存储用途 + storageUserate: 'Utilization', // 存储用途 + clusterSummary: 'summary', // 概要 + clusterPhysicalHost: 'physical host', // 物理主机 + clusterVersion: 'Cluster version', // 集群版本 + clusterCeateTime: 'add time', // 添加时间 + cpuModelName: 'name', // 名称 + cpuModelstatus: 'state', // 状态 + cpuModelType: 'CPU type', // CPU类型 + cpuModelserverArch: 'server architecture', // 服务器架构 + cpuModelserverType: 'server type', // 服务器类型 + cpuModelcpurate: 'CPU utilization', // CPU利用率 + cpuModelmemoryrate: 'memory utilization', // 内存利用率 - zoneNameDesc: "Availability Zone Name", // 可用区名称 - zoneRemark: "describe", // 描述 - zoneType: "Resource Type", // 资源类型 - zoneCPUallocationratio: "CPU allocation ratio", // CPU分配比 - zoneMemoryallocationratio: "memory allocation ratio", // 内存分配比 - zoneStorageallocationratio: "storage allocation ratio", // 存储分配比 - cpuTotal: "Total CPU capacity", // CPU总容量 - memTotal: "total memory capacity", // 内存总容量 - storageTotal: "total storage capacity", // 存储总容量 - zoneAdd: "Add Availability Zone", // 添加可用区 - zoneAddSuccess: "Created Availability Zone Successfully!", // 创建可用区成功! - zoneEdit: "Edit Availability Zone", // 编辑可用区 - zoneEditSuccess: "Edit Availability Zone Successfully!", // 编辑可用区成功! - zoneDleteConfirm: "Are you sure you want to delete this Availability Zone??", // 确定删除该可用区吗? - zoneDleteSuccess: "Deleted Availability Zone Successfully!", //删除可用区成功! + zoneNameDesc: 'Availability Zone Name', // 可用区名称 + zoneRemark: 'describe', // 描述 + zoneType: 'Resource Type', // 资源类型 + zoneCPUallocationratio: 'CPU allocation ratio', // CPU分配比 + zoneMemoryallocationratio: 'memory allocation ratio', // 内存分配比 + zoneStorageallocationratio: 'storage allocation ratio', // 存储分配比 + cpuTotal: 'Total CPU capacity', // CPU总容量 + memTotal: 'total memory capacity', // 内存总容量 + storageTotal: 'total storage capacity', // 存储总容量 + zoneAdd: 'Add Availability Zone', // 添加可用区 + zoneAddSuccess: 'Created Availability Zone Successfully!', // 创建可用区成功! + zoneEdit: 'Edit Availability Zone', // 编辑可用区 + zoneEditSuccess: 'Edit Availability Zone Successfully!', // 编辑可用区成功! + zoneDleteConfirm: 'Are you sure you want to delete this Availability Zone??', // 确定删除该可用区吗? + zoneDleteSuccess: 'Deleted Availability Zone Successfully!', //删除可用区成功! - zoneBaseInfo: "Basic Information", // 基本信息 - zoneCluster: "Associated clusters", // 存储信息 - zoneConfirmInfo: "Confirm information", // 确认信息 - zoneNoClusterTo: "Don't have a suitable physical cluster? Go to", // 没有合适的物理集群? 前往 - zoneClusterDesc: "physical cluster", // 物理集群 - zoneSummary: "summary", // 概要 - zoneCreateTime: "add time", // 添加时间 + zoneBaseInfo: 'Basic Information', // 基本信息 + zoneCluster: 'Associated clusters', // 存储信息 + zoneConfirmInfo: 'Confirm information', // 确认信息 + zoneNoClusterTo: "Don't have a suitable physical cluster? Go to", // 没有合适的物理集群? 前往 + zoneClusterDesc: 'physical cluster', // 物理集群 + zoneSummary: 'summary', // 概要 + zoneCreateTime: 'add time', // 添加时间 - vdcName: "name", // 名称 - vdcparentName: "superior vdc", // 上级vdc - vdcorgName: "organization", // 组织机构 - vdcnetworkNum: "The internet", // 网络 - vdcCPUallocationratio: "CPU allocation ratio", // CPU分配比 - vdcmemoryallocationratio: "memory allocation ratio", // 内存分配比 - vdcStorageallocationratio: "storage allocation ratio", // 存储分配比 - vdcAdd: "Create VDC", // 创建虚拟数据中心 - vdcAddSuccess: "Create virtual data center successfully!", // 创建虚拟数据中心成功!' - vdcEdit: "Edit VDC", // 编辑虚拟数据中心 - vdcEditSuccess: "Edit VDC success!", // 编辑虚拟数据中心成功! - cdcDleteConfirm: "Are you sure you want to delete this VDC?", // 创建虚拟数据中心 - cdcDdleteSuccess: "Deleting this VDC succeeded!", // 删除该VDC成功! - vdcBaseInfo: "Basic Information", // 基本信息 - vdcResouse: "resource allocation", // 分配资源 - vdcConfirmInfo: "Confirm information", // 确认信息 - vdcArchitecture: "Architecture", // 架构 - vdcUsable: "available", // 可用 - vdcTotal: "total size", // 总大小 - vdcAllocationChild: "Subordinates assigned", // 总大小 - vdcClusterDesc: "physical cluster", // 物理集群 - vdcNetWorkDesc: "name", // 名称 - vdcallocationCpuEditMsg: - "The number of allocated CPUs cannot be greater than the number of available upper levels, and cannot be less than the number of allocated lower levels", // '分配CPU数不能大于上级可用数,并且不能小于已使用数' - vdcallocationCpuAddMsg: - "The number of allocated CPUs is a positive integer greater than 1 and less than the number of available CPUs", // '分配CPU数不能大于上级可用数,并且不能小于已使用数' - vdcallocationCpuMinMsg: - "The number of allocated CPUs cannot be less than the number of used CPUs", // '分配CPU数不能小于已使用数' - vdcallocationMemEditMsg: - "The number of allocated memory cannot be greater than the number of available upper levels, and cannot be less than the number of allocated lower levels", // '分配内存不能大于上级可用数,并且不能小于已使用数' - vdcallocationMemAddMsg: - "The number of allocated memory is a positive integer greater than 1 and less than the number of available memory", // '分配CPU数不能大于上级可用数,并且不能小于已使用数' - vdcallocationMemMinMsg: - "The number of allocated memory cannot be less than the number of used memory", // '分配内存数不能小于已使用数' - allocationStorageAddMsg: - "The allocated storage size is a positive integer greater than 1 and less than the amount of available storage", // 分配存储大小为大于1的正整数,且小于可用存储数 - allocationStorageEditMsg: - "The number of allocated storage cannot be greater than the number of available upper levels, and cannot be less than the number of allocated lower levels", // 分配存储数不能大于上级可用数,并且不能小于已使用数 - allocationStorageMinMsg: - "The number of allocated storage cannot be less than the number of used", // '分配存储数不能小于已使用数' - vdcNetWorkResouse: " Network resource information", // 网络资源信息 - vdcSummary: "summary", // 概要 - vdccreateTime: "add time", // 添加时间 - vdc: { - nomatchingVDC: "No matching VDC, go to", // 无匹配VDC,前往 No matching VDC, go to - bindVDC: "bind VDC", // 绑定VDC,前往 bind VDC - }, - vdcallocatedtooltip: - "Allocate resource quotas, which can exceed the total amount of resources", // 分配资源额度,其可超过资源总量 - vdcSupCanassigned: "Can be assigned by superiors", // 上级可分配 - firstvdcSupCanassigned: "total resources", // 资源总量 - vdcAllocateCPUused: - "The number of allocated CPUs should be greater than the number of used CPUs", // 分配CPU数应大于已使用CPU数 - vdcAllocateCPUequal: - "The number of allocated CPUs is a positive integer greater than or equal to 1", // 分配CPU数为大于等于1的正整数 - vdcAllocateMemused: - "The amount of allocated memory should be greater than the amount of used memory", // 分配内存数应大于已使用内存数 - vdcAllocateMemequal: - "The number of allocated memory is a positive integer greater than or equal to 1", // 分配内存数为大于等于1的正整数 - vdcAllocateStorageused: - "Allocated storage should be greater than used storage", // 分配存储数应大于已使用存储数 - vdcAllocateStorageequal: - "Allocate storage size as a positive integer greater than or equal to 1", // 分配存储大小为大于等于1的正整数 - vdcauditOpinion: "Reason for change", // 变更原因不能为空 - vdcauditOpinionEmpt: "Change reason cannot be empty", // 变更原因不能为空 - vdcauditOpinionspecialChar: - "The reason for change can only be a combination of Chinese, English and numbers", // 变更原因只能由中文、英文、数字组合 - vdcSubAssigned: "Subordinates assigned", // 已分配下级 - vdcThislevelUsed: "This level has been used", // 本级已使用 - surePowerOffTips: 'Confirm to shut down "{name}"?', - zonelist: "Availability Zone List", // 可用区列表 - zoneerror: "expired", // 已过期 - zonewarn: "Expiring soon", // 即将过期 - rootPasswordCantNull: "The root password cannot be empty", - bmcIpCantNull: "BMC IP cannot be empty", - bmcAccountCantNull: "BMC account cannot be empty", - start_servervm: "boot", // 开机 - shutdown_servervm: "shutdown", // 关机 - shutdownSucc: "Shut down successfully!", // 关机成功! - shutdownErr: "Shutdown failed!", // 关机失败! - hostIpCantNull: "Host management IP must not be empty", - deleteSuccess: "Delete Success", - shutdownTips: "Confirm to shut down the bare metal server '{name}'?", - shutdownManyTips: - "Confirm to shut down the choosen bare metal server '{name}'?", - restart_servervm: "reboot", // 重启 - restartSucc: "restarted successfully!", // 重启成功! - restartErr: "restart failed!", // 重启失败! - servervmmore: "More", // 更多 - batchAbort: "Force shutdown", // 强制关机 - batchForceReboot: "Force restart", // 强制重启 - batchDelete: "delete", // 删除 - deleteSucc: "successfully deleted!", // 删除成功! - deleteErr: "failed to delete!", // 删除失败! - batchstartSucc: "Batch boot successfully!", // 批量开机成功! - batchstartErr: "Batch boot failed!", // 批量开机失败! - batchcloseSucc: "Batch shutdown succeeded!", // 批量关机成功! - batchcloseErr: "Batch shutdown failed!", // 批量关机失败! - batchrebootSucc: "Batch restart succeeded!", // 批量重启成功! - batchrebootErr: "Batch restart failed!", // 批量重启失败! - batchDeleteSucc: "successfully deleted!", // 删除成功! - batchDeleteErr: "failed to delete!", // 删除失败! - deleteconfirmMsg: - "Are you sure you want to delete the selected cloud server?", // 确定要删除所选云服务器? - deleteconfirmTit: "delete", // 删除 - abortconfirmMsg: - "This operation may result in the loss of unsaved data in the cloud server. Do you want to confirm the forced shutdown?", // 此操作可能导致云服务器内尚未保存的数据丢失,是否确认强制关机? - abortconfirmTit: "Force shutdown", // 强制关机 - abortSucc: "Forced shutdown succeeded!", // 强制关机成功! - abortErr: "Forced shutdown failed!", // 强制关机失败! - addBareMetal: "Add Bare Metal Server", - editBareMetal: "edit Bare Metal Server", - BMCAccount: "BMC account", - nameCantNull: "Name cannot be empty", - forcedRestartconfirmMsg: - "This operation may result in the loss of unsaved data in the cloud server. Are you sure you want to force a restart?", // 此操作可能导致云服务器内尚未保存的数据丢失,是否确认强制关机? - forcedRestartconfirmTit: "Force restart", // 强制关机 - forcedRestartSucc: "Force restart succeeded!", // 强制重启成功! - forcedRestartErr: "Force restart failed!", // 强制重启失败! - openVnc: "console", // 控制台 - systemImg: "system", // 系统 - aliasName: "name", // 名称 - zonestatus: "condition", // 状态 - zonetaskStatus: "task status", // 任务状态 - zoneorgName: "Organization", // 所属组织 - zoneuserName: "owning user", // 所属用户 - zoneclusterName: "owning cluster", // 所属集群 - zoneip: "IP address", // IP地址 - zoneos: "operating system", // 操作系统 - architecture: "Architecture", // 操作系统 - zonecpu: "CPU(core)", // CPU(核) - zonememory: "Memory(GB)", // 内存(GB) - zonedisks: "Disk(GB)", // 磁盘(GB) - zoneusage: "Utilization", // 利用率 - zonecreateDate: "creation time", // 创建时间 - zonedeadlineTime: "Expiration time (days)", // 到期时间(天) - zonedescription: "describe", // 描述 - zoneAVAILABLE: "online", // 在线 - zoneOFFLINE: "offline", // 离线 - zoneINSTALLING: "Install", // 安装 - zoneCONNECTED: "connected", // 已连接 - zoneSUSPEND: "pause", // 暂停 - zoneOVERDUE: "expired", // 已过期 - zoneUNKNOWN: "other", // 其他 - startServerVm: "boot successfully", // 开机成功 - startServerVmErr: "Failed to boot", // 开机失败 - zoneLEISURE: "idle", // 空闲 - zoneNEW: "new", // 新建 - zonetaskINSTALLING: "installing", // 安装中 - zoneNEWFAILED: "New failed", // 新建失败 - zoneINSTALLFAILED: "installation failed", // 安装失败 - zoneCREATING: "creating", // 正在创建 - zoneSTARTING: "booting", // 正在开机 - zoneSHUTDOWNING: "shutting down", // 正在关机 - zoneREBOOTING: "restarting", // 正在重启 - zoneSUSPENDING: "Pausing", // 正在暂停 - zoneRESUMING: "waking up", // 正在唤醒 - zoneVOLUME_MIGRATING: "Storage migration in progress", // 正在存储迁移 - zoneHOST_MIGRATING: "Host migration in progress", // 正在主机迁移 - zoneBACKUP_RUNNING: "backing up", // 正在备份 - zoneBACKUP_RECOVERING: "Backup and restore", // 正在备份恢复 - zoneSNAPSHOT_RUNNING: "taking a snapshot", // 正在快照 - zoneSNAPSHOT_RECOVERING: "Snapshot restore in progress", // 正在快照恢复 - zoneIMPORTING: "importing", // 正在导入 - zoneEXPORTING: "exporting", // 正在导出 - zoneCLONING: "cloning", // 正在克隆 - zoneDISK_COPYING: "disk copying", // 正在磁盘复制 - zoneCREATE_KCP_IMAGE: "Template mirroring in progress", // 正在制作模板镜像 - zoneSNAPSHOT_RUNNING: "taking a snapshot", // 正在快照 - zoneOther: "other", // 其他 - type: "type", // 类型 - userName: "owner", // 所有者 - vncAddr: "VNC address", // VNC地址 - operationHours: "boot time", // 开机时间 - powerOnDate: "operation hours", // 运行时间 - selectCluster: "computing resources", // 计算资源 - runMachine: "run host", // 运行主机 - monitor: "monitor", // 监控 - log: "Task", // 任务 - summary: { - summary: "summary", // 概要 - type: "Alert Type", // 告警类型 - date: "Alarm time", // 告警时间 - severity: "Alarm level", // 告警等级 - info: "Alarm info", // 告警详情 - objectName: "Alert object", // 告警对象 - }, - network: { - network: "The internet", // 网络 - modelType: "NIC type", //网卡类型 - macAddress: "MAC address", // MAC地址 - ipAddress: "IP address", // IP地址 - numberOfQueues: "Number of queues", // Number of queues - networkName: "Network Name ", // Network name - virtualSwitch: "virtual switch ", // Virtual switch - portGroup: "Owning port group ", // Owning port group - pool: "address pool ", // Address pool - uploadSpend: "Downstream bandwidth (KB/S)", // Downstream bandwidth (KB/S) - downloadSpend: "Upstream bandwidth (KB/S)", // Upstream bandwidth (KB/S) - setUp: "Network Settings ", // network Settings - cluster: "physical cluster ", // physical cluster - selectcluster: "Please select physical cluster ", // Please select physical cluster - networkName: "Network Name ", // Network name - networkNameplac: "Please enter the network name ", // Please enter the network name - networkNametooltip: - "Support Chinese, English, digital, limited 2~18 words ", // Support Chinese, English, digital, limited 2~18 words - networkCard: "network card ", // network card - modelTypeplac: "Please select NIC type ", // Please select NIC type - addressPool: "address pool ", // Address pool - addressPoolplac: "Please select the address pool ", // Please select the address pool - virtualSwitch: "virtual switch ", // Virtual switch - virtualSwitchplac: "Please select a virtual switch ", // Please select a virtual switch - portGroup: "port group ", // Port group - portGroupplac: "Please select a port group ", // Please select a port group - permission: "security group ", // security group - permissionresouse: "Security group resource ", // Security group resource - effectivepermission: "Effectivesecurity group resource ", // Effectiveresource - networkNamelen: "Name length shall be 2 to 18 characters ", // Name length shall be 2 to 18 characters - securityPolicy: "Security policy ", // Security policy - virtualFirewallName: "Virtual Firewall ", // Virtual firewall - virtualFirewallNamePlc: "Please select Virtual Protection Wall ", // Please select virtual protection wall - networkHierarchy: "Networkhierarchy", - networkType: " Network type ", - none: " No ", - netSpecEditSuccess: "The network specifications were edited successfully", // - netSpecCreatSuccess: "The network specifications are created successfully", //The network specifications are created successfully - advacedSetting: "Advanced Settings", //Advanced Settings - auto: "automatic", //automatic - netSpecSec: "Secondary network", //Secondary network - netSpec3rd: "Three-level network", //Three-level network - netSpecName: " Network specification name ", - selectnetworkType: " Please select a network type ", - addNetTop1: " Don`t have the right network specifications? To ", - addNetTop2: - " Access to Physical Cluster Details -> Network -> Create Network Specifications", - }, - task: { - action: "operate", // 操作 - objName: "object name", // 对象名称 - operUser: "operating user", // 操作用户 - startTime: "Starting time", // 开始时间 - finishTime: "End Time", // 结束时间 - status: "condition", // 状态 - detail: "Details", // 详情 - reason: "reason", // 原因 - }, - bindTheVirtualFirewall: "Bind the virtual firewall", // 绑定虚拟防火墙 - virtualFirewallName: "name", // 名称 - virtualFirewallRemark: "illustrate", // 说明 + vdcName: 'name', // 名称 + vdcparentName: 'superior vdc', // 上级vdc + vdcorgName: 'organization', // 组织机构 + vdcnetworkNum: 'The internet', // 网络 + vdcCPUallocationratio: 'CPU allocation ratio', // CPU分配比 + vdcmemoryallocationratio: 'memory allocation ratio', // 内存分配比 + vdcStorageallocationratio: 'storage allocation ratio', // 存储分配比 + vdcAdd: 'Create VDC', // 创建虚拟数据中心 + vdcAddSuccess: 'Create virtual data center successfully!', // 创建虚拟数据中心成功!' + vdcEdit: 'Edit VDC', // 编辑虚拟数据中心 + vdcEditSuccess: 'Edit VDC success!', // 编辑虚拟数据中心成功! + cdcDleteConfirm: 'Are you sure you want to delete this VDC?', // 创建虚拟数据中心 + cdcDdleteSuccess: 'Deleting this VDC succeeded!', // 删除该VDC成功! + vdcBaseInfo: 'Basic Information', // 基本信息 + vdcResouse: 'resource allocation', // 分配资源 + vdcConfirmInfo: 'Confirm information', // 确认信息 + vdcArchitecture: 'Architecture', // 架构 + vdcUsable: 'available', // 可用 + vdcTotal: 'total size', // 总大小 + vdcAllocationChild: 'Subordinates assigned', // 总大小 + vdcClusterDesc: 'physical cluster', // 物理集群 + vdcNetWorkDesc: 'name', // 名称 + vdcallocationCpuEditMsg: 'The number of allocated CPUs cannot be greater than the number of available upper levels, and cannot be less than the number of allocated lower levels', // '分配CPU数不能大于上级可用数,并且不能小于已使用数' + vdcallocationCpuAddMsg: 'The number of allocated CPUs is a positive integer greater than 1 and less than the number of available CPUs', // '分配CPU数不能大于上级可用数,并且不能小于已使用数' + vdcallocationCpuMinMsg: 'The number of allocated CPUs cannot be less than the number of used CPUs', // '分配CPU数不能小于已使用数' + vdcallocationMemEditMsg: 'The number of allocated memory cannot be greater than the number of available upper levels, and cannot be less than the number of allocated lower levels', // '分配内存不能大于上级可用数,并且不能小于已使用数' + vdcallocationMemAddMsg: 'The number of allocated memory is a positive integer greater than 1 and less than the number of available memory', // '分配CPU数不能大于上级可用数,并且不能小于已使用数' + vdcallocationMemMinMsg: 'The number of allocated memory cannot be less than the number of used memory', // '分配内存数不能小于已使用数' + allocationStorageAddMsg: 'The allocated storage size is a positive integer greater than 1 and less than the amount of available storage', // 分配存储大小为大于1的正整数,且小于可用存储数 + allocationStorageEditMsg: 'The number of allocated storage cannot be greater than the number of available upper levels, and cannot be less than the number of allocated lower levels', // 分配存储数不能大于上级可用数,并且不能小于已使用数 + allocationStorageMinMsg: 'The number of allocated storage cannot be less than the number of used', // '分配存储数不能小于已使用数' + vdcNetWorkResouse: ' Network resource information', // 网络资源信息 + vdcSummary: 'summary', // 概要 + vdccreateTime: 'add time', // 添加时间 + vdc: { + nomatchingVDC: 'No matching VDC, go to', // 无匹配VDC,前往 No matching VDC, go to + bindVDC: 'bind VDC', // 绑定VDC,前往 bind VDC + }, + vdcallocatedtooltip: 'Allocate resource quotas, which can exceed the total amount of resources', // 分配资源额度,其可超过资源总量 + vdcSupCanassigned: 'Can be assigned by superiors', // 上级可分配 + firstvdcSupCanassigned: 'total resources', // 资源总量 + vdcAllocateCPUused: 'The number of allocated CPUs should be greater than the number of used CPUs', // 分配CPU数应大于已使用CPU数 + vdcAllocateCPUequal: 'The number of allocated CPUs is a positive integer greater than or equal to 1', // 分配CPU数为大于等于1的正整数 + vdcAllocateMemused: 'The amount of allocated memory should be greater than the amount of used memory', // 分配内存数应大于已使用内存数 + vdcAllocateMemequal: 'The number of allocated memory is a positive integer greater than or equal to 1', // 分配内存数为大于等于1的正整数 + vdcAllocateStorageused: 'Allocated storage should be greater than used storage', // 分配存储数应大于已使用存储数 + vdcAllocateStorageequal: 'Allocate storage size as a positive integer greater than or equal to 1', // 分配存储大小为大于等于1的正整数 + vdcauditOpinion: 'Reason for change', // 变更原因不能为空 + vdcauditOpinionEmpt: 'Change reason cannot be empty', // 变更原因不能为空 + vdcauditOpinionspecialChar: 'The reason for change can only be a combination of Chinese, English and numbers', // 变更原因只能由中文、英文、数字组合 + vdcSubAssigned: 'Subordinates assigned', // 已分配下级 + vdcThislevelUsed: 'This level has been used', // 本级已使用 - statuscell: { - OVERDUE: "expired", // 已过期 - AVAILABLE: "online", // 在线 - CONNECTED: "connected", // 已连接 - INSTALLING: "Install", // 安装 - SUSPEND: "pause", // 暂停 - UNKNOWN: "other", // other - ONLINE: "online", // 在线 - OFFLINE: "offline", // 离线 - HALT: "abnormal", // 异常 - EXCEPTION: "abnormal", // 异常 - NORMAL: "normal", // 正常 - WARNING: "warn", // 警告 - ERROR: "mistake", // 错误 - POWERED_ON: "online", // 在线 - POWERED_OFF: "closure", // 关闭 - }, + zonelist: 'Availability Zone List',// 可用区列表 + zoneerror: 'expired',// 已过期 + zonewarn: 'Expiring soon',// 即将过期 - // VMware纳管 - vMwareMgr: { - name: "name", // 名称 - namePlac: "Name is required", // 名称不能为空 - remark: "describe", // 描述 - vcenterIp: "ip address", // ip地址 - vcenterPort: "port", // 端口 - vcenterAccount: "account", // 账号 - vcenterAdminName: "username", // 用户名 - vcenterAdminNameNot: "Username can not be empty", // 用户名不能为空 - vcenterAdminNamePlac: "Enter the vCenter administrator username", // 输入vCenter管理员用户名 - vcenterAdminPassword: "password", // 密码 - vcenterAdminPasswordNot: "password can not be blank", // 密码不能为空 - vcenterAdminPasswordPlac: "Please enter password", // 请输入密码 - addvMwareMgr: "Add VMware Managed", // 添加VMware纳管 - editvMwareMgr: "Edit VMware Managed", // 编辑VMware纳管 - type: "type", // 类型 - typePlac: "Type cannot be null", // 类型不能为空 - addSucc: "Added successfully", // 添加成功 - editSucc: "Edited successfully", // 编辑成功 - vmlist: "Cloud server list", // 云服务器列表 - powerStatus: "state", // 状态 - memory: "Memory", // 内存 - }, - storage: { - disk: "storage", // 存储 - diskName: "name", // 名称 - device: "storage type", // 存储类型 - targetBus: "storage controller", // 存储控制器 - diskCapacity: "capacity(G)", // 容量(G) - sourceFile: "Storage path", // 存储路径 - raw: "block device", // 块设备 - existed: "Local Disk", // 本地磁盘 - qcow2: "Local Disk", // 本地磁盘 - enable: "enable", - disable: "disable", - enableState: "Enabled state", - sure: "determine", - cancel: "cancel", - disTips: - "After the storage pool is disabled, the cloud server of the self-service user cannot use the storage pool", - enableTips: - "After the storage pool is enabled, the cloud servers of self-service users can use the storage pool", - success: "success", - }, - addSpec: "Add specifications", - delSpec: "Delete Specification", - layerNet2: "2-layer network", - layerNet3: "3-layer network", - delSpecTips: - "This operation will delete the network specification. Do you want to continue?", - delManySpecTips: - "This operation will batch delete the selected network specifications. Do you want to continue?", - prompt: "prompt", - tips: "tips", - pubNet: "Host Managed Public Network", - vpcNet: "VPC network", - netSeg: "Network segment", - editNetSpec: "Edit network specifications", - createNetSpec: "Create network specifications", - ipAcq: "IP acquisition", - selectNetLevel: "Please select a network level", - selectCardType: "Please select a network card type", - selectSecPolicy: "Please select a security policy", - selectVirFirewall: "Please select a virtual firewall", - selectThreeLayerNet: "Please select a three-layer network", - selectEffectGroup: - "Please select the security group that needs to be effective", - macPool: "MAC address pool", - netSepcDetail: "Network specification details", - autoDhcp: "Automatic (DHCP)", -}; + start_servervm: 'boot',// 开机 + shutdown_servervm: 'shutdown',// 关机 + shutdownSucc: 'Shut down successfully!',// 关机成功! + shutdownErr: 'Shutdown failed!',// 关机失败! + + restart_servervm: 'reboot',// 重启 + restartSucc: 'restarted successfully!',// 重启成功! + restartErr: 'restart failed!',// 重启失败! + servervmmore: 'More',// 更多 + batchAbort: 'Force shutdown',// 强制关机 + batchForceReboot: 'Force restart',// 强制重启 + batchDelete: 'delete',// 删除 + deleteSucc: 'successfully deleted!',// 删除成功! + deleteErr: 'failed to delete!',// 删除失败! + batchstartSucc: 'Batch boot successfully!',// 批量开机成功! + batchstartErr: 'Batch boot failed!',// 批量开机失败! + batchcloseSucc: 'Batch shutdown succeeded!',// 批量关机成功! + batchcloseErr: 'Batch shutdown failed!',// 批量关机失败! + batchrebootSucc: 'Batch restart succeeded!',// 批量重启成功! + batchrebootErr: 'Batch restart failed!',// 批量重启失败! + batchDeleteSucc: 'successfully deleted!',// 删除成功! + batchDeleteErr: 'failed to delete!',// 删除失败! + deleteconfirmMsg: 'Are you sure you want to delete the selected cloud server?',// 确定要删除所选云服务器? + deleteconfirmTit: 'delete',// 删除 + abortconfirmMsg: 'This operation may result in the loss of unsaved data in the cloud server. Do you want to confirm the forced shutdown?',// 此操作可能导致云服务器内尚未保存的数据丢失,是否确认强制关机? + abortconfirmTit: 'Force shutdown',// 强制关机 + abortSucc: 'Forced shutdown succeeded!',// 强制关机成功! + abortErr: 'Forced shutdown failed!',// 强制关机失败! + + forcedRestartconfirmMsg: 'This operation may result in the loss of unsaved data in the cloud server. Are you sure you want to force a restart?',// 此操作可能导致云服务器内尚未保存的数据丢失,是否确认强制关机? + forcedRestartconfirmTit: 'Force restart',// 强制关机 + forcedRestartSucc: 'Force restart succeeded!',// 强制重启成功! + forcedRestartErr: 'Force restart failed!',// 强制重启失败! + openVnc: 'console',// 控制台 + systemImg: 'system',// 系统 + aliasName: 'name',// 名称 + zonestatus: 'condition',// 状态 + zonetaskStatus: 'task status',// 任务状态 + zoneorgName: 'Organization',// 所属组织 + zoneclusterName: 'owning cluster',// 所属集群 + zoneip: 'IP address',// IP地址 + zoneos: 'operating system',// 操作系统 + architecture: 'Architecture',// 操作系统 + zonecpu: 'CPU(core)',// CPU(核) + zonememory: 'Memory(GB)',// 内存(GB) + zonedisks: 'Disk(GB)',// 磁盘(GB) + zoneusage: 'Utilization',// 利用率 + zonecreateDate: 'creation time',// 创建时间 + zonedeadlineTime: 'Expiration time (days)',// 到期时间(天) + zonedescription: 'describe',// 描述 + zoneAVAILABLE: 'online',// 在线 + zoneOFFLINE: 'offline',// 离线 + zoneINSTALLING: 'Install',// 安装 + zoneCONNECTED: 'connected',// 已连接 + zoneSUSPEND: 'pause',// 暂停 + zoneOVERDUE: 'expired',// 已过期 + zoneUNKNOWN: 'other',// 其他 + startServerVm: 'boot successfully',// 开机成功 + startServerVmErr: 'Failed to boot',// 开机失败 + zoneLEISURE: 'idle',// 空闲 + zoneNEW: 'new',// 新建 + zonetaskINSTALLING: 'installing',// 安装中 + zoneNEWFAILED: 'New failed',// 新建失败 + zoneINSTALLFAILED: 'installation failed',// 安装失败 + zoneCREATING: 'creating',// 正在创建 + zoneSTARTING: 'booting',// 正在开机 + zoneSHUTDOWNING: 'shutting down',// 正在关机 + zoneREBOOTING: 'restarting',// 正在重启 + zoneSUSPENDING: 'Pausing',// 正在暂停 + zoneRESUMING: 'waking up',// 正在唤醒 + zoneVOLUME_MIGRATING: 'Storage migration in progress',// 正在存储迁移 + zoneHOST_MIGRATING: 'Host migration in progress',// 正在主机迁移 + zoneBACKUP_RUNNING: 'backing up',// 正在备份 + zoneBACKUP_RECOVERING: 'Backup and restore',// 正在备份恢复 + zoneSNAPSHOT_RUNNING: 'taking a snapshot',// 正在快照 + zoneSNAPSHOT_RECOVERING: 'Snapshot restore in progress',// 正在快照恢复 + zoneIMPORTING: 'importing',// 正在导入 + zoneEXPORTING: 'exporting',// 正在导出 + zoneCLONING: 'cloning',// 正在克隆 + zoneDISK_COPYING: 'disk copying',// 正在磁盘复制 + zoneSNAPSHOT_RUNNING: 'taking a snapshot',// 正在快照 + zoneOther: 'other',// 其他 + type: 'type',// 类型 + userName: 'owner',// 所有者 + vncAddr: 'VNC address',// VNC地址 + operationHours: 'boot time',// 开机时间 + powerOnDate: 'operation hours',// 运行时间 + selectCluster: 'computing resources',// 计算资源 + runMachine: 'run host',// 运行主机 + monitor: 'monitor',// 监控 + log: 'Task',// 任务 + summary: { + summary: 'summary',// 概要 + type: 'Alert Type',// 告警类型 + date: 'Alarm time',// 告警时间 + severity: 'Alarm level',// 告警等级 + info: 'Alarm info',// 告警详情 + objectName: 'Alert object',// 告警对象 + }, + network: { + network: 'The internet',// 网络 + networkName: 'network name',// 网络名称 + virtualSwitch: 'virtual switch',// 虚拟交换机 + portGroup: 'Port group to which it belongs',// 所属端口组 + macAddress: 'MAC address',// MAC地址 + ipAddress: 'IP address',// IP地址 + pool: 'address pool',// 地址池 + uploadSpend: 'Downlink bandwidth(KB/S)',// 下行带宽(KB/S) + downloadSpend: 'Upstream bandwidth(KB/S)',// 上行带宽(KB/S) + setUp: 'network settings', //网络设置 + cluster: 'physical cluster', //物理集群 + selectcluster: 'Please select a physical cluster', //请选择物理集群 + networkName: 'network name', //网络名称 + networkNameplac: 'Please enter a network name', //请输入网络名称 + networkNametooltip: 'Support Chinese, English, numbers, limited to 2~18 characters', //支持中文、英文、数字,限定2~18字数 + modelType: 'NIC type', //网卡类型 + networkCard: 'NIC', //网卡 + modelTypeplac: 'Please select the network card type', //请选择网卡类型 + addressPool: 'address pool', //地址池 + addressPoolplac: 'Please select an address pool', //请选择地址池 + virtualSwitch: 'virtual switch', //虚拟交换机 + virtualSwitchplac: 'Please select a virtual switch', //请选择虚拟交换机 + portGroup: 'port group', //端口组 + portGroupplac: 'Please select a port group', //请选择端口组 + permission: 'security group', //安全组 + permissionresouse: 'Security Group Resources', //安全组资源 + effectivepermission: 'Effective security group', //生效安全组资源 + networkNamelen: 'Name length should be controlled between 2 ~ 18 characters', //名称长度应控制在 2 ~ 18 个字符 + securityPolicy: 'security strategy', //安全策略 + virtualFirewallName: 'virtual firewall', //虚拟防火墙 + virtualFirewallNamePlc: 'Please select a virtual wall', //请选择虚拟防护墙 + }, + storage: { + disk: 'storage',// 存储 + diskName: 'name',// 名称 + device: 'storage type',// 存储类型 + targetBus: 'storage controller',// 存储控制器 + diskCapacity: 'capacity(G)',// 容量(G) + sourceFile: 'Storage path',// 存储路径 + raw: 'block device',// 块设备 + existed: 'Local Disk',// 本地磁盘 + qcow2: 'Local Disk',// 本地磁盘 + }, + task: { + action: 'operate',// 操作 + objName: 'object name',// 对象名称 + operUser: 'operating user',// 操作用户 + startTime: 'Starting time',// 开始时间 + finishTime: 'End Time',// 结束时间 + status: 'condition',// 状态 + detail: 'Details',// 详情 + reason: 'reason',// 原因 + }, + bindTheVirtualFirewall: 'Bind the virtual firewall', // 绑定虚拟防火墙 + virtualFirewallName: 'name', // 名称 + virtualFirewallRemark: 'illustrate', // 说明 + + statuscell: { + OVERDUE: 'expired', // 已过期 + AVAILABLE: 'online', // 在线 + CONNECTED: 'connected', // 已连接 + INSTALLING: 'Install', // 安装 + SUSPEND: 'pause', // 暂停 + UNKNOWN: 'other', // other + ONLINE: 'online', // 在线 + OFFLINE: 'offline', // 离线 + HALT: 'abnormal', // 异常 + EXCEPTION: 'abnormal', // 异常 + NORMAL: 'normal', // 正常 + WARNING: 'warn', // 警告 + ERROR: 'mistake', // 错误 + POWERED_ON: 'online', // 在线 + POWERED_OFF: 'closure', // 关闭 + }, + + // VMware纳管 + vMwareMgr: { + name: 'name', // 名称 + namePlac: 'Name is required', // 名称不能为空 + remark: 'describe', // 描述 + vcenterIp: 'ip address', // ip地址 + vcenterPort: 'port', // 端口 + vcenterAccount: 'account', // 账号 + vcenterAdminName: 'username', // 用户名 + vcenterAdminNameNot: 'Username can not be empty', // 用户名不能为空 + vcenterAdminNamePlac: 'Enter the vCenter administrator username', // 输入vCenter管理员用户名 + vcenterAdminPassword: 'password', // 密码 + vcenterAdminPasswordNot: 'password can not be blank', // 密码不能为空 + vcenterAdminPasswordPlac: 'Please enter password', // 请输入密码 + addvMwareMgr: 'Add VMware Managed', // 添加VMware纳管 + editvMwareMgr: 'Edit VMware Managed', // 编辑VMware纳管 + type: 'type', // 类型 + typePlac: 'Type cannot be null', // 类型不能为空 + addSucc: 'Added successfully', // 添加成功 + editSucc: 'Edited successfully', // 编辑成功 + vmlist: 'Cloud server list', // 云服务器列表 + powerStatus: 'state', // 状态 + memory: 'Memory', // 内存 + } +} \ No newline at end of file diff --git a/src/assets/common/lang/en/taskcenter.js b/src/assets/common/lang/en/taskcenter.js deleted file mode 100644 index 2e4992e..0000000 --- a/src/assets/common/lang/en/taskcenter.js +++ /dev/null @@ -1,36 +0,0 @@ -// taskcenter 任务中心 -export default { - taskcenter: { - task: 'Task', // 任务 - checkTheDetails: 'check the details', // 查看详情 - taskName: 'task name', // 任务名称 - taskObject: 'object', // 对象 - taskObjectType: 'object type', // 对象类型 - taskStatus: 'state', // 状态 - startingTime: 'Starting time', // 开始时间 - endTime: 'End Time', // 结束时间 - operator: 'operator', // 操作者 - operatorIp: 'Operation user IP', // 操作用户IP - organization: 'Organization', // 所属组织 - availabilityZone: 'Availability Zone', // 可用区 - canceling: 'canceling', // 取消中 - processing: 'processing', // 进行中 - tobestarted: 'to be started', // 待开始 - fail: 'fail', // 失败 - success: 'success', // 成功 - running: 'in execution', // 执行中 - canceled: 'Cancelled', // 已取消 - timeout: 'time out', // 超时 - unknown: 'unknown', // 未知 - allTasksPlac: 'Please select a task', // 请选择任务 - allTasks: 'all tasks', // 全部任务 - allStatusPlac: 'Please select a status', // 请选择状态 - allStatus: 'all status', // 全部状态 - taskDescription: 'task description', // 任务描述 - failureReason: 'Failure reason', // 失败原因 - taskDesk: 'task desk', // 任务台 - viewHistoricalTasks: 'View historical tasks', // 查看历史任务 - allTypes: 'All task types', // 全部任务类型 - allTypePlac: 'Please select a task type', // 请选择任务类型 - } -} \ No newline at end of file diff --git a/src/assets/common/lang/en/transferMgr.js b/src/assets/common/lang/en/transferMgr.js deleted file mode 100644 index b20bf60..0000000 --- a/src/assets/common/lang/en/transferMgr.js +++ /dev/null @@ -1,20 +0,0 @@ -// transferMgr 云服务器转移 -export default { - transferMgr: { - transferMsg: 'Transferring a cloud server across organizations will disconnect the cloud server network; you need to configure the network for the cloud server.', // 跨组织转移云服务器,会断开云服务器网络;需为云服务器配置网络。 - userName: 'user name', // 用户名称 - realName: 'actual name', // 真实姓名 - roleName: 'Role Name', // 角色名称 - orgName: 'Organization', // 所属组织 - type: 'type', // 类型 - selectUser: 'select user', // 选择用户 - selectUserPlac: 'Please select a user', // 选择用户 - selectOrg: 'Choose an organization', // 选择组织 - selectOrgPlac: 'Please select an organization', // 请选择组织 - selectOrgUser: 'Select Organization User', // 选择组织用户 - selectOrgUserPlac: 'Please select an organization user', // 请选择组织用户 - sameOrgTransfer: 'same organization transfer', // 同组织转移 - transferAcrossOrg: 'Transfer across organizations', // 跨组织转移 - transfer: 'transfer' - } -} \ No newline at end of file diff --git a/src/assets/common/lang/index.js b/src/assets/common/lang/index.js index 30876a9..6abd523 100644 --- a/src/assets/common/lang/index.js +++ b/src/assets/common/lang/index.js @@ -24,4 +24,4 @@ const i18n = new VueI18n({ } }) -export default i18n +export default i18n \ No newline at end of file diff --git a/src/assets/common/lang/zh/alarmevents.js b/src/assets/common/lang/zh/alarmevents.js index cfc15e7..6fdad92 100644 --- a/src/assets/common/lang/zh/alarmevents.js +++ b/src/assets/common/lang/zh/alarmevents.js @@ -65,8 +65,7 @@ export default { 'monitoring.alarmEvent.type.RABBIT_CONNECT_FAIL': 'RabbitMQ连接错误', 'monitoring.alarmEvent.type.VIRTUALSERVER_KYLINTOOL': 'qga版本', 'monitoring.alarmEvent.type.VIRTUALSERVER_KSVDTOOL_EVENT': '设置IP/用户名/密码', - 'monitoring.alarmEvent.type.MARIADB': '数据库告警', - 'monitoring.alarmEvent.type.RESOURCE_ALLOCATION': '资源达到配额阈值', + alarmSetting: { type: '类型', urgentValue: '紧急告警', @@ -82,8 +81,7 @@ export default { 'thresholdInput': '无效的告警阈值,告警阈值有效范围:0~99!', cloudServerAlarmPolicy: '云服务器告警策略', // 云服务器告警策略 physicalServerAlertPolicy: '物理服务器告警策略', // 物理服务器告警策略 - siteLickCheck:'异地容灾-链路检测', - machineExpire:'云服务器使用到期', + clusterAlarmSettings: '集群告警设置', // 集群告警设置 platformAlarmSettings: '平台告警设置', // 平台告警设置 clusterAlarmlog: '集群告警日志', // 集群告警日志 @@ -101,4 +99,4 @@ export default { urgent: '紧急告警', // 紧急告警 platform: '平台', // 紧急告警 }, -} +} \ No newline at end of file diff --git a/src/assets/common/lang/zh/common.js b/src/assets/common/lang/zh/common.js index e55de87..f7150e5 100644 --- a/src/assets/common/lang/zh/common.js +++ b/src/assets/common/lang/zh/common.js @@ -1,318 +1,295 @@ // common 公共模块 export default { - canceled: "已取消!", // 已取消! - delete: "删除", - operation: "操作", - save: "保存", - saveSuccess: "保存成功", - saveFail: "保存失败", - sureDel: "确认删除", - open: "开启", - openSuccess: "开启成功", - openFail: "开启失败", - cancellation: "注销", - tips: "提示", // 提示 - delTips: "删除后不可恢复,请谨慎操作", - delLotSure: "确认批量删除", - passwordCantNull: "密码不得为空", - hostSubmitSuccess: "主机纳管任务提交成功", - hostEditSuccess: "主机纳管编辑成功", - password: "密码", - loadingText: "拼命加载中", // 拼命加载中 - refresh: "刷新", // 刷新 - select: "选择", // 选择 - create: "创建", // 创建 - createSuccess: "创建成功", - editSuccess: "编辑成功", - open: "开", // 开 - close: "关", // 关 - placeholder: "请输入内容", // 请输入内容 - view: "查看", // 查看 - add: "添加", // 添加 - nametooltip: "支持中文、数字、字母进行组合,字符长度为2 ~ 18位", // 支持中文、数字、字母进行组合,字符长度为2 ~ 18位 - nameLength: "长度应控制在 2 ~ 18 个字符", // 长度应控制在 2 ~ 18 个字符 - cpuValtip: "cpu仅支持输入偶数或1", - vmName: "仅支持用英文、字母、数字、下划线及-", - adminNameLength: "长度应控制在 6 ~ 20 个字符", // 长度应控制在 6 ~ 20 个字符 - adminNameWranMsg: "只能由英文字母、数字组合", // 只能由英文字母、数字组合 - createTime: "创建日期", - adminPwdLength: "长度应控制在 6 ~ 18 个字符", // 长度应控制在 6 ~ 18 个字符 - adminPwdWranMsg: "密码只能由英文字母、数字组合", // 密码只能由英文字母、数字组合 - pleaseEnter: "请输入", // 请输入 - pleaseSelsect: "请选择", // 请选择 - pleaseSet: "请设置", // 请设置 - set: "设置", // 设置 - previous: "上一步", // 上一步 - nextStep: "下一步", // 下一步 - confirmation: "确认", // 确认 - notNull: "不能为空", // 不能为空 - cpu: "核", // 核 - mem: "内存", // 内存 - disk: "存储", // 存储 - diskSize: "存储大小", // 存储大小 - hard: "磁盘", // 磁盘 - addhardMsg: "该云服务器没有申请磁盘,请按需添加", // 该云服务器没有申请磁盘,请按需添加 - diskNumMaxMsg: "磁盘数目已达上限", // 磁盘数目已达上限 - diskNumMsg: "磁盘大小不能为小于1的正整数", // "磁盘大小不能为小于1的正整数"; - diskNumSizeMsg: "磁盘大小不能为空", // "磁盘大小不能为空"; - diskNumMinMsg: "至少添加一块磁盘", // "至少添加一块磁盘"; - cdRom: "光驱", // 光驱 - newDisk: "新增磁盘", // 新增磁盘 - network: "网卡", // 网卡 - newnetwork: "新增网卡", // 新增网卡 - addnetworkMsg: "该云服务器没有申请,请按需添加网卡", // 该云服务器没有申请,请按需添加网卡 - networkNumMaxMsg: "网卡数目已达上限", // 网卡数目已达上限 - networkpurpose: "请选择网络配置", // 请选择网络配置 - networkSet: "设置网络", // 设置网络 - newnetwork: "新建网络", // 新建网络 - upperNetwork: "选择上级网络", // 选择上级网络 - to: "至", // 至 - enddate: "结束日期", // 结束日期 - startdate: "开始日期", // 开始日期 - people: "人", // 人 - confirm: "确定", - cancel: "取消", - success: "成功", - fail: "失败", - modify: "编辑", - batchModify: "批量编辑", - build: "新建", - operation: "操作", - save: "保存", - startUp: "启动", - saveSuccess: "保存成功", - saveFail: "保存失败", - open: "开启", - openSuccess: "开启成功", - openFail: "开启失败", - close: "关闭", - closeSuccess: "关闭成功", - closeFail: "关闭失败", - updateSuccess: "内容更新成功", - export: "导出", - exportCsv: "导出CSV", - exportElef: "导出ELFF", - startTIme: "开始日期", - endTIme: "结束日期", - recentWeek: "最近一周", - lastMonth: "最近一个月", - lastThreeMonths: "最近三个月", - filter: "筛选条件:", - emptyFilter: "清空筛选", - enter: "请输入", - select: "请选择", - to: "至", - date: "日期", - user: "用户", - userName: "用户名", - type: "类型", - server: "服务器", - organization: "组织", - information: "信息", - name: "名称", - status: "状态", - normal: "正常", - desc: "描述", - warn: "警告", - notAvailable: "不可用", - tips: "提示", - hour: "小时", - add: "添加", - delete: "删除", - notRunning: "未运行", - startSession: "开机", - startSessionSuccess: "开机成功", - closeSession: "关机", - closeSessionSuccess: "关机成功", - forcedCloseSession: "强制关机", - restart: "重启", - forcedRestart: "强制重启", - sendMessage: "发送消息", - createSnapshot: "创建快照", - migration: "迁移", - extractionLog: "提取日志", - detection: "检测", - systemRecovery: "系统还原", - power: "电源", - offline: "离线", - loadingText: "拼命加载中...", - moreLabel: "更多", - validateNull: "不能为空", - validateNumber: "必须为数字", - validateLeng3_15: "长度应在 3 到 15 个字符", - column_Dispaly: "列显示设置", - refreshTable: "刷新表格", - selected_label: "已选中", - to_select_label: "待选择", - operation_control: "管理控制台:", - download_all: "批量下载", - all: "全部", - sureDelete: "确认删除吗?", - deleteSuccess: "删除成功!", - sureModify: "确认修改吗?", - modifySuccess: "修改成功!", - sureSubmmit: "确认提交吗?", - submmitSuccess: "提交成功!", - tableSetting: "表格设置", - apply: "应用", - reset: "重置", - remoteControl: "远程控制", - isSure: "确认", - notice: "通知", - approved: "审批", // 审批 - alarm: "告警", // 告警 - search: "搜索", // 搜索 - createTime: "创建时间", // 创建时间 - changeTheme: "切换皮肤", // 切换皮肤 - changeLangEvent: "切换语言", // 切换语言 - changeLangok: "确定切换语言吗?", // 确定切换语言吗? - changePassword: "修改密码", // 修改密码 - detailsInfo: "详情", // 详情 - changeSpec: "变更规格", // 变更规格 - pass: "通过", // 通过 - refuse: "拒绝", // 拒绝 - time: "时间", // 时间 - batchPass: "批量通过", // 批量通过 - batchRefuse: "批量拒绝", // 批量拒绝 - batchReviewsucc: "批量审核成功", // 批量审核成功 - reviewsucc: "审核成功", // 审核成功 - refusesucc: "拒绝成功", // 拒绝成功 - applyDelete: "申请删除", // 申请删除 - originalSize: "原大小", // 原大小 - strip: "条", // 条 - alreadyAllocate: "已分配", // 已分配 - noAllocate: "未分配", // 已分配 + canceled: '已取消!', // 已取消! + delete: '删除', + operation: '操作', + save: '保存', + saveSuccess: '保存成功', + saveFail: '保存失败', + open: '开启', + openSuccess: '开启成功', + openFail: '开启失败', + cancellation: '注销', + tips: '提示', // 提示 + loadingText: '拼命加载中', // 拼命加载中 + refresh: '刷新', // 刷新 + select: '选择', // 选择 + create: '创建', // 创建 + open: '开', // 开 + close: '关', // 关 + placeholder: '请输入内容', // 请输入内容 + view: '查看', // 查看 + add: '添加', // 添加 + nametooltip: '支持中文、数字、字母进行组合,字符长度为2 ~ 18位', // 支持中文、数字、字母进行组合,字符长度为2 ~ 18位 + nameLength: '长度应控制在 2 ~ 18 个字符', // 长度应控制在 2 ~ 18 个字符 - details: { - summary: "概要", // 概要 - resourceAllocation: "资源分配情况", // 资源分配情况 - CPUallocationRatio: "cpu分配比", // cpu分配比 - totalcapacity: "总容量", // 总容量 - used: "已用", // 已用 - available: "可用", // 可用 - memoryAllocationRatio: "内存分配比", // 内存分配比 - storageAllocationRatio: "存储分配比", // 存储分配比 - resourceStatistics: "资源统计", // 资源统计 - total: "总数", // 总数 - activated: "已激活", // 已激活 - inactivated: "未激活", // 未激活 - online: "在线", // 在线 - offline: "离线", // 离线 - resourceUsage: "资源使用情况", // 资源使用情况 - CPUUtilization: "CPU利用率", // CPU利用率 - memoryUtilization: "内存利用率", // 内存利用率 - storageUtilization: "存储利用率", // 存储利用率 - cpuCount: "cpu数", // cpu数: - disk: "磁盘", // 磁盘 - diskIOwrites: "磁盘I/O写入", // 磁盘I/O写入 - diskIOread: "磁盘I/O读取", // 磁盘I/O读取 - network: "网络", // 网络 - netWorkInSpeedData: "网络流入速度", // 网络流入速度 - netWorkOutSpeedData: "网络流出速度", // 网络流出速度 - }, - route: { - homePage: "首页", // 首页 - resource: "资源", // 资源 - operator: "运营", // 运营 - monitor: "监控", // 监控 - zone: "可用区", // 可用区 - zoneDetail: "可用区详情", // 可用区详情 - cluster: "物理集群", // 物理集群 - clusterDetail: "物理集群详情", // 物理集群详情 - vdc: "虚拟数据中心(VDC)", // 虚拟数据中心(VDC) - vdcDetail: "虚拟数据中心(VDC)详情", // 虚拟数据中心(VDC)详情 - servervm: "云服务器", // 云服务器 - servervmDetail: "云服务器详情", // 云服务器详情 - org: "组织管理", // 组织管理 - orgDetail: "组织详情", // 组织详情 - permission: "权限管理", // 权限管理 - userMgr: "用户管理", // 用户管理 - roleMgr: "角色管理", // 用户管理 - workorder: "工单管理", // 工单管理 - WorkorderReview: "工单审核", // 工单审核 - workorderDetail: "工单详情", // 工单详情 - networkconfig: "网络设置", // 网络设置 - alarmEvent: "告警事件", // 告警事件 - alarmLog: "告警日志", // 告警日志 - settingAlarm: "告警设置", // 告警设置 - operateLog: "操作日志", // 操作日志 - serverEvent: "物理主机事件", // 物理主机事件 - cloudServerEvent: "云服务器事件", // 云服务器事件 - vMwareMgr: "VMware纳管", // VMware纳管 - vMwareMgrDetail: "VMware纳管详情", // VMware纳管详情 - imageMgr: "镜像管理", // 镜像管理 - imageMgrUpload: "上传镜像", // 上传镜像 - imageMgrDetail: "镜像详情", // 镜像详情 - taskcenter: "任务中心", // 任务中心 - externalCloud: "外部云", - vcenter: "纳管vCenter", - vcenterDetail: "vCenter详情", - reliableCenter: "可靠中心", - linkManagement: "链路管理", - remoteDisasterRecovery: "异地容灾", - mainAndBackupKcp: "主备kcp", - bareMetal: "裸金属服务器", - }, - login: { - resetPassword: "重置密码", // 重置密码 - oldPwd: "原密码", // 原密码 - placeholder: "密码长度应控制在 6 ~ 18 个字符", // 长度6~18位 - newPwd: "新密码", // 新密码 - confirmPwd: "确认密码", // 确认密码 - confirmPwdErr: "两次输入密码不一致!", // 两次输入密码不一致! - pwdMsg: "密码不能为空", // 密码不能为空 - confirmPwdlenMsg: "密码只能由英文字母、数字组合", // 密码只能由英文字母、数字组合 - confirmPwdMsg: "确认密码和密码输入不一致", // 确认密码和密码输入不一致 - }, - home: { - homeText: "资源池化与标准化,智能规划与管理", // 资源池化与标准化,智能规划与管理 - homeSubText: - "单个中立的控制台对下纳管异构的基础设施,对接已有业务流程平台。将云上的资源进行逻辑池化,从而基于企业组织架构来实行资源分配,并提供标准的流程和规范的云服务", // 单个中立的控制台对下纳管异构的基础设施,对接已有业务流程平台。将云上的资源进行逻辑池化,从而基于企业组织架构来实行资源分配,并提供标准的流程和规范的云服务 - createZone: "添加可用区", // 添加可用区 - createCluster: "添加集群", // 添加集群 - createVdc: "添加VDC", // 添加VDC - cpuUseRatio: "CPU使用率", // CPU使用率 - memUseRatio: "内存使用率", // 内存使用率 - owningCluster: "所属集群", // 所属集群 - cloudHosting: "云服务器", // 云服务器 - physicalMachine: "物理主机", // 物理主机 - workerOrder: "工单审核", // 工单审核 - alarm: "告警", // 告警 - cpuUtilization: "CPU利用率", // CPU利用率 - memoryUtilization: "内存利用率", // 内存利用率 - storageUtilization: "存储利用率", // 存储利用率 - accountOverview: "账户总览", // 账户总览 - platformManage: "平台管理用户", // 平台管理用户 - orgManage: "组织管理用户", // 组织管理用户 - selfService: "自服务用户", // 自服务用户 - used: "已用", // 已用 - totalCpu: "CPU总容量", // CPU总容量 - usable: "可用", // 可用 - totalMem: "内存总容量", // 内存总容量 - totalStorage: "存储总容量", // 存储总容量 - zone: "可用区", // 可用区 - zoneNum: "可用区数量", // 可用区数量 - cluster: "集群", // 集群 - clusterNum: "集群总数", // 集群总数 - physicalHost: "物理机", // 物理机 - physicalHostNum: "物理机总数", // 物理机总数 - VDC: "VDC", // VDC - VDCNum: "VDC总数", // VDC总数 - serverVm: "云服务器", // 云服务器 - serverVmNum: "云服务器总数", // 云服务器总数 - total: "总数", // 总数 - }, + adminNameLength: '长度应控制在 6 ~ 20 个字符', // 长度应控制在 6 ~ 20 个字符 + adminNameWranMsg: '只能由英文字母、数字组合', // 只能由英文字母、数字组合 - cloneTypeArr: { - LINK_CLONE: "链接克隆", // 链接克隆 - FULL_CLONE: "完整克隆", // 链接克隆 - }, - securityPolicyArr: { - NONE: "无", // 无 - SECURITY_GROUP: "安全组", // 安全组 - VIRTUAL_FIREWALL: "虚拟防火墙", // 虚拟防火墙 - }, - successfulOperation: "操作成功!", // 操作成功 - operationFailed: "操作失败!", // 操作失败 - noMoreOperations: "暂无更多操作", -}; + adminPwdLength: '长度应控制在 6 ~ 18 个字符', // 长度应控制在 6 ~ 18 个字符 + adminPwdWranMsg: '密码只能由英文字母、数字组合', // 密码只能由英文字母、数字组合 + pleaseEnter: '请输入', // 请输入 + pleaseSelsect: '请选择', // 请选择 + pleaseSet: '请设置', // 请设置 + set: '设置', // 设置 + previous: '上一步', // 上一步 + nextStep: '下一步', // 下一步 + confirmation: '确认', // 确认 + notNull: '不能为空', // 不能为空 + cpu: '核', // 核 + mem: '内存', // 内存 + disk: '存储', // 存储 + diskSize: '存储大小', // 存储大小 + hard: '磁盘', // 磁盘 + addhardMsg: "该云服务器没有申请磁盘,请按需添加", // 该云服务器没有申请磁盘,请按需添加 + diskNumMaxMsg: '磁盘数目已达上限', // 磁盘数目已达上限 + diskNumMsg: '磁盘大小不能为小于1的正整数',// "磁盘大小不能为小于1的正整数"; + diskNumSizeMsg: '磁盘大小不能为空', // "磁盘大小不能为空"; + diskNumMinMsg: '至少添加一块磁盘', // "至少添加一块磁盘"; + cdRom: '光驱', // 光驱 + newDisk: '新增磁盘', // 新增磁盘 + network: '网卡', // 网卡 + newnetwork: '新增网卡', // 新增网卡 + addnetworkMsg: '该云服务器没有申请,请按需添加网卡', // 该云服务器没有申请,请按需添加网卡 + networkNumMaxMsg: '网卡数目已达上限', // 网卡数目已达上限 + networkpurpose: '请选择网络配置', // 请选择网络配置 + networkSet: '设置网络', // 设置网络 + newnetwork: '新建网络', // 新建网络 + upperNetwork: '选择上级网络', // 选择上级网络 + to: '至', // 至 + enddate: '结束日期', // 结束日期 + startdate: '开始日期', // 开始日期 + people: '人', // 人 + confirm: '确定', + cancel: '取消', + success: '成功', + fail: '失败', + modify: '编辑', + batchModify: '批量编辑', + build: '新建', + operation: '操作', + save: '保存', + startUp: '启动', + saveSuccess: '保存成功', + saveFail: '保存失败', + open: '开启', + openSuccess: '开启成功', + openFail: '开启失败', + close: '关闭', + closeSuccess: '关闭成功', + closeFail: '关闭失败', + updateSuccess: '内容更新成功', + export: '导出', + exportCsv: '导出CSV', + exportElef: '导出ELFF', + startTIme: '开始日期', + endTIme: '结束日期', + recentWeek: '最近一周', + lastMonth: '最近一个月', + lastThreeMonths: '最近三个月', + filter: '筛选条件:', + emptyFilter: '清空筛选', + enter: '请输入', + select: '请选择', + to: '至', + date: '日期', + user: '用户', + userName: '用户名', + type: '类型', + server: '服务器', + organization: '组织', + information: '信息', + name: '名称', + status: '状态', + normal: '正常', + desc: '描述', + warn: '警告', + notAvailable: '不可用', + tips: '提示', + hour: '小时', + add: '添加', + delete: '删除', + notRunning: '未运行', + startSession: '开机', + startSessionSuccess: '开机成功', + closeSession: '关机', + closeSessionSuccess: '关机成功', + forcedCloseSession: '强制关机', + restart: '重启', + forcedRestart: '强制重启', + sendMessage: '发送消息', + createSnapshot: '创建快照', + migration: '迁移', + extractionLog: '提取日志', + detection: '检测', + systemRecovery: '系统还原', + power: '电源', + offline: '离线', + loadingText: '拼命加载中...', + moreLabel: '更多', + validateNull: '不能为空', + validateNumber: '必须为数字', + validateLeng3_15: '长度应在 3 到 15 个字符', + column_Dispaly: '列显示设置', + refreshTable: '刷新表格', + selected_label: '已选中', + to_select_label: '待选择', + operation_control: '管理控制台:', + download_all: '批量下载', + all: '全部', + sureDelete: '确认删除吗?', + deleteSuccess: '删除成功!', + sureModify: '确认修改吗?', + modifySuccess: '修改成功!', + sureSubmmit: '确认提交吗?', + submmitSuccess: '提交成功!', + tableSetting: '表格设置', + apply: '应用', + reset: '重置', + remoteControl: '远程控制', + isSure: '确认', + notice: '通知', + approved: '审批',// 审批 + alarm: '告警',// 告警 + search: '搜索',// 搜索 + createTime: '创建时间', // 创建时间 + changeTheme: '切换皮肤', // 切换皮肤 + changeLangEvent: '切换语言', // 切换语言 + changeLangok: '确定切换语言吗?', // 确定切换语言吗? + changePassword: '修改密码', // 修改密码 + detailsInfo: '详情', // 详情 + changeSpec: '变更规格', // 变更规格 + pass: '通过', // 通过 + refuse: '拒绝', // 拒绝 + time: '时间', // 时间 + batchPass: '批量通过', // 批量通过 + batchRefuse: '批量拒绝', // 批量拒绝 + batchReviewsucc: '批量审核成功', // 批量审核成功 + reviewsucc: '审核成功', // 审核成功 + refusesucc: '拒绝成功', // 拒绝成功 + applyDelete: '申请删除', // 申请删除 + originalSize: '原大小', // 原大小 + strip: '条', // 条 + alreadyAllocate: '已分配', // 已分配 + noAllocate: '未分配', // 已分配 + + details: { + summary: '概要', // 概要 + resourceAllocation: '资源分配情况', // 资源分配情况 + CPUallocationRatio: 'cpu分配比', // cpu分配比 + totalcapacity: '总容量', // 总容量 + used: '已用', // 已用 + available: '可用', // 可用 + memoryAllocationRatio: '内存分配比', // 内存分配比 + storageAllocationRatio: '存储分配比', // 存储分配比 + resourceStatistics: '资源统计', // 资源统计 + total: '总数', // 总数 + activated: '已激活', // 已激活 + inactivated: '未激活', // 未激活 + online: '在线', // 在线 + offline: '离线', // 离线 + resourceUsage: '资源使用情况', // 资源使用情况 + CPUUtilization: 'CPU利用率', // CPU利用率 + memoryUtilization: '内存利用率', // 内存利用率 + storageUtilization: '存储利用率', // 存储利用率 + cpuCount: 'cpu数', // cpu数: + disk: '磁盘', // 磁盘 + diskIOwrites: '磁盘I/O写入', // 磁盘I/O写入 + diskIOread: '磁盘I/O读取', // 磁盘I/O读取 + network: '网络', // 网络 + netWorkInSpeedData: '网络流入速度', // 网络流入速度 + netWorkOutSpeedData: '网络流出速度', // 网络流出速度 + }, + route: { + homePage: '首页', // 首页 + resource: '资源', // 资源 + operator: '运营', // 运营 + monitor: '监控', // 监控 + zone: '可用区', // 可用区 + zoneDetail: '可用区详情', // 可用区详情 + cluster: '物理集群', // 物理集群 + clusterDetail: '物理集群详情', // 物理集群详情 + vdc: '虚拟数据中心(VDC)', // 虚拟数据中心(VDC) + vdcDetail: '虚拟数据中心(VDC)详情', // 虚拟数据中心(VDC)详情 + servervm: '云服务器', // 云服务器 + servervmDetail: '云服务器详情', // 云服务器详情 + org: '组织管理', // 组织管理 + orgDetail: '组织详情', // 组织详情 + permission: '权限管理', // 权限管理 + userMgr: '用户管理', // 用户管理 + roleMgr: '角色管理', // 用户管理 + workorder: '工单管理', // 工单管理 + WorkorderReview: '工单审核', // 工单审核 + workorderDetail: '工单详情', // 工单详情 + networkconfig: '网络设置', // 网络设置 + alarmEvent: '告警事件', // 告警事件 + alarmLog: '告警日志', // 告警日志 + settingAlarm: '告警设置', // 告警设置 + operateLog: '操作日志', // 操作日志 + serverEvent: '物理主机事件', // 物理主机事件 + cloudServerEvent: '云服务器事件', // 云服务器事件 + vMwareMgr: 'VMware纳管', // VMware纳管 + vMwareMgrDetail: 'VMware纳管详情', // VMware纳管详情 + + }, + login: { + resetPassword: '重置密码', // 重置密码 + oldPwd: '原密码', // 原密码 + placeholder: '密码长度应控制在 6 ~ 18 个字符', // 长度6~18位 + newPwd: '新密码', // 新密码 + confirmPwd: '确认密码', // 确认密码 + confirmPwdErr: '两次输入密码不一致!', // 两次输入密码不一致! + pwdMsg: '密码不能为空', // 密码不能为空 + confirmPwdlenMsg: '密码只能由英文字母、数字组合', // 密码只能由英文字母、数字组合 + confirmPwdMsg: '确认密码和密码输入不一致', // 确认密码和密码输入不一致 + }, + home: { + homeText: '资源池化与标准化,智能规划与管理', // 资源池化与标准化,智能规划与管理 + homeSubText: '单个中立的控制台对下纳管异构的基础设施,对接已有业务流程平台。将云上的资源进行逻辑池化,从而基于企业组织架构来实行资源分配,并提供标准的流程和规范的云服务', // 单个中立的控制台对下纳管异构的基础设施,对接已有业务流程平台。将云上的资源进行逻辑池化,从而基于企业组织架构来实行资源分配,并提供标准的流程和规范的云服务 + createZone: '添加可用区', // 添加可用区 + createCluster: '添加集群', // 添加集群 + createVdc: '添加VDC', // 添加VDC + cpuUseRatio: 'CPU使用率', // CPU使用率 + memUseRatio: '内存使用率', // 内存使用率 + owningCluster: '所属集群', // 所属集群 + cloudHosting: '云服务器', // 云服务器 + physicalMachine: '物理主机', // 物理主机 + workerOrder: '工单审核', // 工单审核 + alarm: '告警', // 告警 + cpuUtilization: 'CPU利用率', // CPU利用率 + memoryUtilization: '内存利用率', // 内存利用率 + storageUtilization: '存储利用率', // 存储利用率 + accountOverview: '账户总览', // 账户总览 + platformManage: '平台管理用户', // 平台管理用户 + orgManage: '组织管理用户', // 组织管理用户 + selfService: '自服务用户', // 自服务用户 + used: '已用', // 已用 + totalCpu: 'CPU总容量', // CPU总容量 + usable: '可用', // 可用 + totalMem: '内存总容量', // 内存总容量 + totalStorage: '存储总容量', // 存储总容量 + zone: '可用区', // 可用区 + zoneNum: '可用区数量', // 可用区数量 + cluster: '集群', // 集群 + clusterNum: '集群总数', // 集群总数 + physicalHost: '物理机', // 物理机 + physicalHostNum: '物理机总数', // 物理机总数 + VDC: 'VDC', // VDC + VDCNum: 'VDC总数', // VDC总数 + serverVm: '云服务器', // 云服务器 + serverVmNum: '云服务器总数', // 云服务器总数 + total: '总数', // 总数 + }, + + cloneTypeArr: { + LINK_CLONE: '链接克隆', // 链接克隆 + FULL_CLONE: '完整克隆', // 链接克隆 + }, + securityPolicyArr: { + NONE: '无', // 无 + SECURITY_GROUP: '安全组', // 安全组 + VIRTUAL_FIREWALL: '虚拟防火墙', // 虚拟防火墙 + }, + successfulOperation: '操作成功!', // 操作成功 + operationFailed: '操作失败!', // 操作失败 +} \ No newline at end of file diff --git a/src/assets/common/lang/zh/externalCloud.js b/src/assets/common/lang/zh/externalCloud.js deleted file mode 100644 index c603a70..0000000 --- a/src/assets/common/lang/zh/externalCloud.js +++ /dev/null @@ -1,246 +0,0 @@ -// 外部云 -export default { - clusterEdleteConfirm: '确定删除该物理集群吗?', // 确定删除该物理集群吗? - clusterEdleteSuccess: '删除物理集群成功!', // 删除物理集群成功! - transVmTips1:'在迁移的过程中云服务器仍然正常对外提供服务,在迁移最后阶段系统自动将云服务器关机,并同步迁移过程中产生的增量数据完成迁移;', - transVmTips2:'迁移完成后,在目标集群自动启动云服务器', - overCpuMaxRes:'超出Vcenter可用最大资源,最大允许Cpu核数为{maxCpuCore}核', - overDiskMaxRes:'磁盘总大小大于超出Vcenter可用最大资源,最大允许磁盘大小为{max}GB', - overMemMaxRes:'超出Vcenter可用最大资源,最大允许内存大小为{max}GB', - nameExiseted:'该名称已存在', - statuscell: { - OVERDUE: '已过期', // 已过期 - AVAILABLE: '在线', // 在线 - CONNECTED: '已连接', // 已连接 - INSTALLING: '安装', // 安装 - SUSPEND: '暂停', // 暂停 - UNKNOWN: '其他', // 其他 - ONLINE: '在线', // 在线 - OFFLINE: '离线', // 离线 - HALT: '异常', // 异常 - EXCEPTION: '异常', // 异常 - NORMAL: '正常', // 正常 - WARNING: '警告', // 警告 - ERROR: '错误', // 错误 - POWERED_ON: '在线', // 在线 - POWERED_OFF: '关闭', // 关闭 - TASK_EXECUTION: '执行中', - INIT: '初始化中', - }, - vcenter: { - name: '名称', - status: '状态', - remark: '描述', - clusterUrl: '集群URL', - clustercpurate: 'CPU利用率', - clustermemoryrate: '内存利用率', - useRate:'使用率', - clusterstoragerate: '存储利用率', - addVcenter: '添加vCenter', - versionNumber: '版本号', - editVcenter: '编辑vCenter', - nameLength: '长度应控制在 2 ~ 32 个字符',//The value contains 2 to 32 characters - loginFalse: 'vcenter登录账号校验失败,请检查账号密码是否正确',//The vcenter login account fails to be verified. Check whether the account password is correct - nametooltip: '支持中文、数字、字母进行组合,字符长度为2 ~ 32位',//The value can contain 2 to 32 characters, including digits, and letters - type: '类型', - storageTotalCapacity: '总容量', - storageCapacityUsedRate: '容量利用率', - clusterEditSussess: 'VCenter信息编辑成功', - clusterAddtSussess: 'VCenter信息添加成功', - clusterSummary: '概要', // 概要 - clusterPhysicalHost: '物理主机', // 物理主机 - clusterVersion: '集群版本', // 集群版本 - clusterCeateTime: '添加时间', // 添加时间 - cpuModelName: '名称', // 名称 - cpuModelstatus: '状态', // 状态 - cpuModelType: 'CPU类型', // CPU类型 - cpuModelserverArch: '服务器架构', // 服务器架构 - cpuModelserverType: '服务器类型', // 服务器类型 - cpuModelcpurate: 'CPU利用率', // CPU利用率 - cpuModelmemoryrate: '内存利用率', // 内存利用率 - vmNumber: '云服务器数量', - storageModelmemoryrate: '存储利用率', // 内存利用率 - cloudServer: '云服务器', - clusterStorage: '存储', // 存储 - domainName:'域名', - domainNameUrlWranMsg:'请输入域名Ip', - clusterEditPassword:'请输入密码', - enterPort:'请输入端口号', - enterProtocol:'请选择地址协议类型', - }, - // VMware纳管 - vMwareMgr: { - name: '名称', // 名称 - namePlac: '名称不能为空', // 名称不能为空 - remark: '描述', // 描述 - vcenterIp: 'ip地址', // ip地址 - vcenterPort: '端口', // 端口 - vcenterAccount: '账号', // 账号 - vcenterAdminName: '用户名', // 用户名 - vcenterAdminNameNot: '用户名不能为空', // 用户名不能为空 - vcenterAdminNamePlac: '输入vCenter管理员用户名', // 输入vCenter管理员用户名 - vcenterAdminPassword: '密码', // 密码 - vcenterAdminPasswordNot: '密码不能为空', // 密码不能为空 - vcenterAdminPasswordPlac: '请输入密码', // 请输入密码 - addvMwareMgr: '添加VMware纳管', // 添加VMware纳管 - editvMwareMgr: '编辑VMware纳管', // 编辑VMware纳管 - type: '类型', // 类型 - typePlac: '类型不能为空', // 类型不能为空 - addSucc: '添加成功', // 添加成功 - editSucc: '编辑成功', // 编辑成功 - vmlist: '云服务器列表', // 云服务器列表 - powerStatus: '状态', // 状态 - memory: '内存', // 内存 - }, - network: { - networkName: '网络设备名称',// 网络设备名称 - modelType: '网卡型号', //网卡类型 - network: '网络',// 网络 - macAddress: 'MAC地址',// MAC地址 - ipAddress: 'IP地址',// IP地址 - }, - disk: { - provisionMode: '置备方式',//Provision mode - provisioningDeferredZeroing: '厚置备延迟置零',//Thick provisioning deferred zeroing - setForQuickZeroing: '厚置备快速置零',//set for quick zeroing - sourceFile: '磁盘文件', - leanProvisioning: '精简置备'//Lean provisioning - }, - task: { - type: '类型', - operation: '操作', - objectName: '对象名称', - operationUser: '操作用户', - startTime: '开始时间', - finishTime: '结束时间', - status: '状态', - detail: '详情', - reason: '原因', - }, - vmList: { - shutdown: '关机', - wakeUp: '唤醒', - pause: '暂停', - restart: '重启电源', - powerOff: '关闭电源', - clone: '克隆', - edit: '编辑', - migration: '迁移', - delete: '删除', - migrationMc:'迁入MC', - create: '创建', - cancelled: '已取消', - turnOn: '开机', - cancel: "取消", - shutDown: '关机', - reboot: '重启', - ipAddress: 'ip地址', - cpuCore: "cpu(核)", - memorySize: "内存(GB)", - storageSize: "存储(GB)", - hasOpenVmTips: '已选中虚拟机中存在非关机状态虚拟机,请查验', - hasCloseVmTips: "已选中虚拟机中存在非开机状态虚拟机,请查验", - opensuccess: "开机任务下发成功,请在任务控制台查看", - closesuccess: "关机任务下发成功,请在任务控制台查看", - sureclose: "确认关机", - delsuccess: "删除成功", - wakeupsuccess: "唤醒任务下发成功,请在任务控制台查看", - pausesuccess: "暂停成功", - poweroffsuccess: "关闭电源任务下发成功,请在任务控制台查看", - rebootsuccess: "重启成功", - - sureShutUpTips: "该操作将关机该云服务器,是否继续?", - sureWeakUpTips: "该操作将唤醒该云服务器,是否继续?", - sureDelTips: "该操作将删除该云服务器,是否继续?", - sureBatchRebootTips: "该操作将批量重启云服务器,是否继续?", - surePauseTips: "该操作将暂停该云服务器,是否继续?", - sureRebootTips: "该操作将重启该云服务器,是否继续?", - sureCloseTips: "该操作将关闭该云服务器电源,是否继续?", - sureBatchDelTips: "该操作将批量删除该云服务器,是否继续?", - sureWeakeUp: "确认唤醒", - surePause: "确认暂停", - sureReboot: "确认重启", - surePowerOff: "确认关闭电源", - powerOff: "关闭电源", - sureDel: "确认删除", - batchReboot: "批量重启", - batchDel: "批量删除", - }, - vmOperate: { - createVm: '创建云服务器', - physicalCluster: "物理集群", - name: "名称", - description: "描述", - runningPosition: "运行位置", - storageLocation: "存储位置", - choose: "选择", - MirrorFir: "镜像文件", - core: "核", - custom: "自定义", - memory: "内存", - diskCnatNull: '磁盘不得为空', - disk: '磁盘', - netCardCantNull: '网卡不得为空', - netCard: '网卡', - addntCard: "添加网卡", - basicInfo: "基本信息", - os: "操作系统", - configInfo: "配置信息", - network: '网络', - networkName: '网络名称', - ntAdapter: '网络适配器', - cpuCore: "CPU核数", - memSize: "内存大小", - createSuccess: "虚拟机创建成功,请在任务台中查看进度", - chooseRunWayTips: "请先选择虚拟机运行位置", - cantMoreDisk: "磁盘数目已达上限", - cantMoreNt: "网卡数目已达上限", - chooseLocation: "选择存储位置", - chooseMirFile: "选择镜像文件", - sure: "确 定", - cancel: "取 消", - mirName: "镜像名称", - opType: "操作类型", - osType: "镜像类型", - osSize: "镜像大小", - host:'主机', - editVm: '编辑云服务器', - cantChangeOnlineCpu: '在线虚拟机无法修改CPU大小', - cantChangeOnlineMem: '在线虚拟机无法修改内存大小', - cantDelOnlineDisk: '在线虚拟机无法删除已添加磁盘', - diskCantNull: '磁盘不得为空', - willDelDisk: '该磁盘将删除', - delThisDisk: '删除该磁盘', - cancelThisDisk: '撤销删除磁盘', - diskCantNull: '磁盘不得为空', - addNewDisk: '新增磁盘', - delNetCard: '该网卡将删除', - recoverNetCard: '撤销删除网卡', - cpuCantNull: 'cpu不能为空', - memCantNull: '内存不能为空', - cantChangeLessBefor: '修改后磁盘大小不得小于原磁盘大小', - editSuccessTips: '编辑修改任务提交成功,请在任务台中查看具体信息', - cloneVm: '克隆云服务器', - chooseHost: '选择主机', - cluster: '集群', - cloneSuccess: '克隆任务提交成功,请在任务台中查看具体信息', - chooseHostTips: '请先选择主机', - - autoPlace:'自动安置', - computingRes:'计算资源', - automatic:'自动', - customize:'自定义', - bindRes:'绑定资源', - modeMig:'迁移方式', - shutDownTips:'迁移完成后,自动关闭vCenter云服务器', - stopTips:'迁移完成后,自动关闭原虚拟机', - startMoving:'迁入后启动', - addNicTips:'未添加网卡,请按需添加网卡', - nic:'网卡', - phyTips:'物理集群不得为空', - storageTips:'存储位置不得为空', - nicTips:'网卡规格不得为空', - offlineMig:'离线迁移提交成功,请在任务台中查看具体进度', - } - -} \ No newline at end of file diff --git a/src/assets/common/lang/zh/imageMgr.js b/src/assets/common/lang/zh/imageMgr.js deleted file mode 100644 index 485920f..0000000 --- a/src/assets/common/lang/zh/imageMgr.js +++ /dev/null @@ -1,75 +0,0 @@ -// imageMgr 镜像管理 -export default { - imageMgr: { - publicImage: '公共镜像', // 公共镜像 - sharedMirror: '共享镜像', // 共享镜像 - privateImage: '私有镜像', // 私有镜像 - status: '状态', // 状态 - imageName: '镜像名称', // 镜像名称 - imageNameplac: '请输入镜像名称', // 请输入镜像名称 - imageRemark: '描述', // 描述 - imageRemarkplac: '请输入描述', // 请输入描述 - imageSize: '容量', // 容量 - orgNameDesc: '所属组织', // 所属组织 - typeDesc: '镜像类型', // 镜像类型 - imageFromDesc: '来源', // 来源 - zoneName: '可用区', // 可用区 - zoneNameplac: '请选择可用区', // 可用区 - createTime: '创建时间', // 创建时间 - createUser: '创建者', // 创建者 - imageDownload: '导出镜像', // 导出镜像 - syncImage: '同步镜像', // 同步镜像 - syncImageSuccess: '同步镜像成功', // 同步镜像 - deleteImage: '删除', // 删除 - deleteConfirm: '确定删除该镜像?', // 确定删除该镜像? - deletebatchConfirm: '确定删除所选镜像?', // 确定删除所选镜像? - deleteSuccess: '删除镜像成功!', // 删除镜像成功! - tosharedImage: '转为共享镜像', // 转为共享镜像 - topublicMirror: '转为公共镜像', // 转为公共镜像 - editImage: '编辑镜像', // 编辑镜像 - editImageSuccess: '编辑镜像成功!', // 编辑镜像成功! - makeImage: '制作镜像', // 制作镜像 - makeImageSuccess: '制作镜像成功!', // 制作镜像成功! - uploadImage: '上传镜像', // 上传镜像 - orgName: '组织', // 组织 - orgNameplac: '请选择组织', // 请选择组织 - imageupload: '上传本地镜像文件到KCP云平台', // 上传本地镜像文件到KCP云平台 - fileName: '选择镜像', // 选择镜像 - fileNameplac: '请选择镜像文件!', // 请选择镜像文件! - uploadFileFormat: '上传文件只能是 .iso、.gvm格式!', // 上传文件只能是 .iso、.gvm格式! - uploadFileSize: '上传文件大小不能超过 50GB!', // 上传文件大小不能超过 50GB! - uploadingFile: '正在上传文件', // 正在上传文件: - notCloseThisPage: '请不要关闭此页面', // ,请不要关闭此页面 - filetatalSize: '文件总大小', // ,请不要关闭此页面 - uploaded: '已上传', // ,请不要关闭此页面 - uploadSpeed: '上传速度', // 上传速度 - timeSpent: '已花费时间', // 已花费时间 - timeRemaining: '预计剩余时间', // 预计剩余时间 - cancelUpload: '取消上传', // 取消上传 - imgstatus: { - NORMAL: '正常', // 正常 - ERROR: '异常', // 异常 - SYNCING: '同步中', // 同步中 - }, - imageFrom: { - UPLOAD: '上传', // 上传 - MACHINE_MAKE: '云服务器制作', // 云服务器制作 - SHARE_CHANGE: '共享镜像转换', // 共享镜像转换 - PRIVATE_CHANGE: '私有镜像转换', // 私有镜像转换 - }, - imageActionList: { - IMAGE_UPLOAD: '上传镜像', // 上传镜像 - IMAGE_SYNC: '镜像同步', // 镜像同步 - IMAGE_CREATE_TEMPLATE: '生成模板镜像', // 生成模板镜像 - IMAGE_MODIFY: '编辑镜像', // 编辑镜像 - IMAGE_PRIVATE_TO_SHARE: '私有镜像提升为共享镜像', // 私有镜像提升为共享镜像 - IMAGE_SHARE_TO_PUBLIC: '共享镜像提升为公共镜像', // 共享镜像提升为公共镜像 - IMAGE_MAKE: '制作镜像', // 制作镜像 - IMAGE_CREATE_GVM_FILE: '生成镜像文件', // 生成镜像文件 - IMAGE_ERROR_SYNC: '镜像异常-同步镜像', // 镜像异常-同步镜像 - IMAGE_DELETE: '删除镜像', // 删除镜像 - IMAGE_DOWNLOAD: '镜像下载', // 镜像下载 - }, - makeImageMsg: '镜像中只包含选择云服务器的系统盘,为了避免镜像数据的不全面,请将云服务器的其他磁盘的重要数据迁移到系统盘中再来制作镜像!', // 镜像中只包含选择云服务器的系统盘,为了避免镜像数据的不全面,请将云服务器的其他磁盘的重要数据迁移到系统盘中再来制作镜像! - } -} \ No newline at end of file diff --git a/src/assets/common/lang/zh/index.js b/src/assets/common/lang/zh/index.js index a0e63b5..77a2bdf 100644 --- a/src/assets/common/lang/zh/index.js +++ b/src/assets/common/lang/zh/index.js @@ -5,12 +5,6 @@ import monitorMgr from './monitorMgr' import alarmevents from './alarmevents' import serverVirtualization from './serverVirtualization' import operateMgr from './operateMgr.js' -import imageMgr from './imageMgr.js' -import operateLog from './operateLog.js' -import transferMgr from './transferMgr.js' -import taskcenter from './taskcenter.js' -import externalCloud from './externalCloud.js' -import reliableCenter from './reliableCenter.js' export default { common,// 公共模块 authorityMgr, //权限管理 @@ -19,10 +13,4 @@ export default { ...alarmevents, // 告警事件 ...serverVirtualization, // kcp及自服务云服务器详情-操作日志,参考mc将任务详情,和失败原因,进行国际化转移 ...operateMgr, // 操作 - ...imageMgr, // 镜像管理 - ...operateLog, // 操作日志 - ...transferMgr, // 云服务器转移 - ...taskcenter, // 任务中心 - externalCloud,//外部云 - reliableCenter,//可靠中心 } \ No newline at end of file diff --git a/src/assets/common/lang/zh/operateLog.js b/src/assets/common/lang/zh/operateLog.js deleted file mode 100644 index 575bac4..0000000 --- a/src/assets/common/lang/zh/operateLog.js +++ /dev/null @@ -1,17 +0,0 @@ -// operateLog 操作日志 -export default { - operateLog: { - logStatus: { - SUCCESS: "成功", - FAIL: "失败", - RUNNING: "执行中", - }, - logType: { - IMAGE: "镜像管理", - CLUSTER: "集群管理", - VDC: "VDC管理", - ZONE: "可用区管理", - ORG: "组织管理", - }, - } -} \ No newline at end of file diff --git a/src/assets/common/lang/zh/operateMgr.js b/src/assets/common/lang/zh/operateMgr.js index c89e233..46e5cae 100644 --- a/src/assets/common/lang/zh/operateMgr.js +++ b/src/assets/common/lang/zh/operateMgr.js @@ -2,7 +2,6 @@ export default { workOrder: { - choseRole:'选择角色', workOrderId: '工单ID', // 工单ID applyUser: '申请人', // 申请人 organizationName: '所属组织', // 所属组织 @@ -147,4 +146,4 @@ export default { pchooseNetworkInfo: "请至少勾选一个网络配置", // 请至少勾选一个网络配置 }, -} +} \ No newline at end of file diff --git a/src/assets/common/lang/zh/reliableCenter.js b/src/assets/common/lang/zh/reliableCenter.js deleted file mode 100644 index 1ae817a..0000000 --- a/src/assets/common/lang/zh/reliableCenter.js +++ /dev/null @@ -1,338 +0,0 @@ -//$t('reliableCenter') -export default { - drStragtegyInfor:{ - Monday: '星期一', - Tuesday: '星期二', - Wednesday: '星期三', - Thurday: '星期四', - Friday: '星期五', - Saturday: '星期六', - Sunday: '星期日', - enable:'启用', - deactivate:'停用' - }, - weekObj: { - MONDAY: "周一", - TUESDAY: "周二", - WEDNESDAY: "周三", - THURSDAY: "周四", - FRIDAY: "周五", - STAURDAY: "周六", - SUNDAY: "周天", - }, - configurationGuide:'配置指引:', - configurationGuideStep1:'1.请安装一个全新的KCP,并设置IP', - configurationGuideStep2:'2.比处填写相应的信息将新KCP添加进来作为备KCP,系统将自动同步主KCP的相关配置和数据到该节点', - configurationGuideStep3:'3.当主KCP故障后,可登录备KCP的IP,将备KCP切换成主KCP', - nodeIp:'节点IP', - password:'密码', - addStandyAdd:'添加备KCP', - standySlaveShip:'主备关系', - Switch:'切换为主站点', - undeleted:'已取消删除', - promotedTips:'此操作将该KCP备节点提升为主节点, 是否继续?', - promotedSuccess:'提升主节点成功', - cancelPromoted:'已取消提升', - delNode:'此操作将删除该KCP备节点, 是否继续', - masterNoe:'主(当前访问)', - slave:' 备', - main:'主', - slaveNow:'备(当前访问)', - selectNic:'选择网卡规格', - net2:'2层网络', - net3:'3层网络', - netName:'网络名称', - netDes:'网络描述', - netHie:'网络层级', - nicType:'网卡类型', - netType:'网络类型', - addPool:'地址池', - virSwitch:'虚拟交换机', - primarySite:'主站点恢复点列表', - secSiteList:'备站点恢复点列表', - fullBackup:'全量备份', - incBackup:'增量备份', - secSite:'备站点', - primarySite:'主站点', - synTo:'同步至', - backName:'备份文件名称', - backPath:'备份路径', - backMode:'备份方式', - backSize:'备份大小', - backComTime:'备份完成时间', - selectRePoint:'请选择恢复点', - mainSlaveSite:'主备站点容灾数据', - disasterPolicy:'容灾策略', - siteManage:'站点管理', - addSite:'添加站点', - siteName:'站点名称', - addSiteSuccess:'站点添加成功', - linkManage:'链路管理', - delSiteTips:'删除后不可恢复,请谨慎操作', - delSiteTite:'确定删除数据?', - remark:'备注', - createDrPolicy:'创建容灾策略', - executeDrPolicy:'立即执行容灾策略', - enable:'启用', - disable:'禁用', - connectivityTest:' 连通性检验', - probeObj:'探测对象', - detectionRes:'探测结果', - underDete:'检测中', - probObjectCom:'探测对象通信正常', - communicationError:'探测对象通信异常,请检测网络后重试', - linkDetection:'链路检测中', - retest:'重新检测', - addLink:'添加链路', - unlimited:'不限制', - limited:'限制', - edit:'编辑', - conTest:'连通性测试', - delete:'删除', - site1:'站点1', - site2:'站点2', - linkStatusSite:'站点链路连接状态', - transRateLim:'传输速率限制', - normal:'正常', - anomaly:'异常', - editLink:'编辑链路', - sectionDescri:'配置站点与站点的管理节点主机IP,使站点与站点链路宽带限制之间能正常通信和传输数据。', - linkRestr:'链路宽带限制', - configureDrIp:'容灾IP配置', - communicationIpAddress:'该通信ip不得为空', - enterNormalIp:'请输入正常ip地址', - selectThePrimary:'请选择主站点和备站点', - site1Tips:'主站点不得为空', - site2Tips:'备站点不得为空', - linkBroadBand:'链路宽带限制不得为空', - dataCommit:'数据提交中,请稍后关闭窗口', - linkEditSucc:'链路编辑成功', - linkDete:'链路检测异常', - addLinkSuccess:'链路添加成功', - - backupServerLoc: '选择备份服务器位置', - backupServer: '备份服务器', - state: '状态', - totalCapacity: '总容量', - availableSpace: '可用空间', - selectCloudServer: '选择云服务器', - cloudServerSelected: '已选', - clear: '清除', - noDataSelected: '暂无选中数据', - packetDataLoading: '分组数据加载中', - cloudServerName: '云服务器名称', - description: '描述', - createDrPolicy: '创建容灾策略', - executeDrPolicyImmediately: '立即执行容灾策略', - compressedTransmission: '压缩传输', - uncompressedTransmission: '无压缩传输', - hour: '小时', - drPolicyName: '容灾策略名称', - primarySite: '主站点', - secondarySite: '备站点', - cloudServer: '云服务器', - primarySiteBackupLoc: ' 主站点备份位置', - primarySiteBackupPeriod: '主站点备份周期', - secondarySiteDrLoc: '备站点容灾位置', - drTransmissionMode: '容灾传输方式', - drPro: '容灾pro', - enabledState: '启用状态', - nextDrTime: '下次容灾时间', - - backupServerLoc: '选择备份服务器位置', - backupServer: '备份服务器', - state: '状态', - totalCapacity: '总容量', - availableSpace: '可用空间', - selectCloudServer: '选择云服务器', - clear: '清除', - noDataSelected: '暂无选中数据', - packetDataLoading: '分组数据加载中', - cloudServerName: '云服务器名称', - description: '描述', - - createDrPolicy: '创建容灾策略', - executeDrPolicyImmediately: '立即执行容灾策略', - compressedTransmission: '压缩传输', - uncompressedTransmission: '无压缩传输', - immediately: '即时同步', - hour: '小时', - drPolicyName: '容灾策略名称', - primarySite: '主站点', - secondarySite: '备站点', - cloudServer: '云服务器', - primarySiteBackupLoc: '主站点备份位置', - primarySiteBackupPeriod: '主站点备份周期', - secondarySiteDrLoc: '备站点容灾位置', - drTransmissionMode: '容灾传输方式', - drPro: '容灾pro', - enabledState: '启用状态', - nextDrTime: '下次容灾时间', - enableConfirmation: '启用确认', - disableConfirmation: '禁用确认', - deletionConfirmation: '删除确认', - enabledSuccessfully: '启用成功', - disabledSuccessfully: '禁用成功', - hourlyBackup: '小时备份', - dailyBackup: '每天备份', - everyDay: '每天', - startTime: '开始时间', - endTime: '结束时间', - weeklyBackup: '每周备份', - everyWeek: '每周', - executedSuccessfully: '执行成功', - batchEnabledSuccessfully: '批量启用成功', - batchDisabledSuccessfully: '批量禁用成功', - disabledStatusPolicySelected: '选中策略中有禁用状态策略,无法进行立即执行', - enabledPolicyExists: '选中策略中有启用状态策略,无法进行启动', - disabledStatusPolicyExists: '选中策略中有禁用状态策略,无法进行禁用', - basicInfo: '基本信息', - drConfig: '容灾配置', - definiteInfo: '确定信息', - choose: '选择', - schematicDiagram: '示意图', - primarySiteLocalBackup: '主站点本地备份', - backupLoc: '备份位置', - pleaseEnter: '请输入', - backupFreq: '备份频率', - day: '天', - weeks: '周', - backupCycle: '备份周期', - backupPeriod: '备份时间段', - nextDay: '隔天', - backupStartTime: '备份开始时间', - arbitraryPointInTime: '任意时间点', - policyDuration: '策略持续时长', - singleServerTimeoutDuration: '单台超时时长', - backupCopy: '备份份数', - secondarySiteRemoteDr: '备站点异地容灾', - drLocation: '容灾位置', - drRpoPeriod: '容灾RPO周期', - transmissionMode: '传输方式', - dataSyncCompressed: '对同步到备站点的数据压缩后再进行传输,从而提高传输效率,减少对带宽的消耗,同时也将消耗更多的CPU资源,请根据带宽情况选择是否开启。', - enterDrPolicyName: '请输入容灾策略名称', - policyNameFormat: '支持2-32位中英文、数字、特殊字符', - selectPrimarySite: '请选择主站点', - selectSecondarySite: '请选择备站点', - selectCloudServer: '请选择云服务器', - selectBackupLoc: '请选择备份位置', - selectDrLoc: '请选择容灾位置', - selectStartTime: '请选择起始时间', - selectEndTime: '请选择结束时间', - selectBackupPeriod: '请选择备份周期', - - enterPolicyDuration: '请输入策略持续时长', - enterSingleTimeout: '请输入单台超时时长', - enterBackupCopies: '请输入备份份数', - selectDrRpoPeriod: '请选择容灾RPO周期', - cloudServerName: '云服务器名称', - cloudServerStatus: '云服务器状态', - createDrPolicy: '创建容灾策略', - editDrPolicy: '编辑容灾策略', - policyCreationSucceeded: '策略创建成功', - policyModificationSucceeded: '策略修改成功', - enableConfirmation: '确认启用该策略?', - disableConfirmation: '确认禁用该策略?', - deletionConfirmation: '确认删除该策略?', - startTime: '起始时间', - primarySiteBackupMethod: '主站点备份方式', - secondarySiteDrMethod: '备站点容灾方式', - weeklyBackup: '按周备份', - hourlyBackup: '按小时备份', - cloudServerList: '云服务器列表', - cloudServerName: '云服务器名称', - cloudServerStatus: '云服务器状态', - serverSearchTips:'服务器名/IP/UUID/标签', - - DRTest: "容灾演练", - startDrNote:"注:开始演练后,主站点云服务器立即关机,同时自动在备站点拉起灾备机。", - endDrNote:"注:执行结束演练后,删除容灾备机并清理演练时容灾数据。", - endDrNote2:"结束演练不会影响主站点云服务器业务", - recoveryMethod: "恢复方式", - startTest: "开始演练", - endTest: "结束演练", - startTestNote: "注:计划内恢复会立即关闭主站点云服务器,将最新数据同步到备站点,数据同步完成后,自动在备站点拉起容灾备机。", - startTestNote1: "此过程中业务将会有短暂中断。", - startTestNote2: "恢复过程中若错误,将取消恢复,将主站点云服务器重新接起。", - endTestNote: "注:灾难后恢复立即在备站点拉起容灾备机,", - endTestNote2: "未同步到备站点的数据会丢失。", - testServer: "演练云服务器", - testToBackup: "演练到备站点", - testRecoveryPoint: "演练恢复点", - chooseRecoveryPoint: "请选择演练恢复点", - auto: "自动", - storageLocation: "存储位置", - chooseStorageLocation: "请选择存储位置", - networkInterface: "网口", - chooseNetworkInterfaceData: "请选择网口数据", - testSubmitted: "容灾演练提交成功,具体进度请在任务栏中查看。", - endTestSubmitted: "结束容灾演练提交成功,具体进度请在任务栏中查看。", - notExist: "不存在", - RPOSyncing: "RPO同步中", - deleting: "删除中", - allServers: "全部云服务器", - mainSiteDRRecovery: "主站点容灾恢复", - backupSiteDRRecovery: "备站点容灾恢复", - revertToMainSite: "回迁到主站点", - differencesCheck: "差异检测", - mainSiteName: "主站点名称", - mainSiteBackupCount: "主站点备份数量", - mainSiteBackupSize: "主站点备份数据总大小", - mainSiteLastRecoveryTime: "主站点最近恢复点时间", - mainBackupDifferences: "主备站点数据差异量", - backupSiteName: "备站点名称", - backupSiteBackupSize: "备站点备份数据总大小", - backupSiteBackupCount: "备站点备份数量", - backupSiteLastRecoveryTime: "备站点最近恢复时间", - performBackupCheck: "是否进行云服务器主备站点备份文件差异性检测", - prompt: "提示", - confirm: "确定", - cancel: "取消", - backupCheckSubmitted: "云服务器主备站点备份文件差异性检测提交成功,具体进度请在任务台查看。", - mainSiteDRRecoverySubmitted: "主站点容灾恢复任务提交成功,具体进度请在任务中心查看。", - revertNote: "注:执行回迁后,会立即关闭备站点云服务器,将最新数据回迁到主站点,并在数据回迁完成后,自动在主站点接起云服务器。", - revertNote1:"此过程中业务将会有短暂中断。", - revertNote2:"回迁过程中若错误,将取消回迁,将备站点云服务器重新接起。", - revertServer: "回迁云服务器", - revertSubmitted: "回迁数据提交成功,具体进度请在任务栏中查看。", - backupSiteStatus: "备站点状态", - mainSiteStatus: "主站点状态", - syncTo: "备份恢复点同步且覆盖到", - confirmSyncTo: "确定同步到", - data: "数据", - syncSubmitted: "数据同步成功提交成功,具体进度请在任务台查看。", - plannedRecovery: "计划内恢复(主站点需在线)", - DRRecovery: "灾难后恢复", - recoveryServer: "恢复云服务器", - recoveryToBackup: "恢复到备站点", - recoveryPoint: "恢复点", - runLocation: "运行位置", - plannedRecoverySubmitted: "计划内备份恢复提交成功,具体进度请在任务栏中查看。", - DRRecoverySubmitted: "灾难后恢复备份恢复提交成功,具体进度请在任务栏中查看。", - NORMAL: "保护中", - PLAN_RECOVER: "计划内恢复", - PLAN_RECOVERING: "计划内恢复中", - FAIL_RECOVER: "故障恢复", - FAIL_RECOVERING: "故障恢复中", - BACKUPING: "备份中", - DELETEING: "删除备份文件中", - PRONG: "备份文件pro同步中", - START_DRILL: "开始容灾演练中", - DRILL: "容灾演练中", - END_DRILL: "结束容灾演练中", - MOVE_BACK: "数据回迁中", - MASTER_RECOVERING: "主站点恢复中", - chooseMainRecoveryPoint:'选择恢复点', - backupFileStatus:'备份文件状态', - will:'将', - bdStatus:'容灾状态', - backStatus:'备份状态', - PRONG:'pro同步中', - - runnowTips:'由于异地容灾占用资源较大,请谨慎操作', - runnowTitleTips:'对"{name}"立即执行容灾策略?', - hourBackupTips:'首次备份时为全量备份,成功备份后,再执行备份周期任务。', - dayBackupTips:'超出持续时长后,正在备份的虚拟机继续备份,还未开始备份的虚拟机将在下一个备份周期优先进行备份', - weekBackupTips:'超出持续时长后,正在备份的虚拟机继续备份,还未开始备份的虚拟机将在下一个备份周期优先进行备份', - singleBackupTimeOut:'单台超时时间是指备份策略中单台云服务器的备份超时时间。超出超时时间后,云服务器认定为超时,执行备份策略中下一条云服务器备份' -} diff --git a/src/assets/common/lang/zh/resourceMgr.js b/src/assets/common/lang/zh/resourceMgr.js index ae627ef..a0dca21 100644 --- a/src/assets/common/lang/zh/resourceMgr.js +++ b/src/assets/common/lang/zh/resourceMgr.js @@ -1,414 +1,348 @@ // 资源管理 resourceMgr export default { - // 物理集群 - allcluster: "全部集群", // 全部集群 - plccluster: "请选择集群", // 请选择集群 - clusterName: "集群名称", // 集群名称 - loginCluster: "登入集群后台", // 登入集群后台 - loginVcenter: "登入vCenter", // 登入Vcenter - clusterNameplaceholder: "请输入集群名称", // 请输入集群名称 - clusterStatus: "集群状态", // 集群状态 - BMC_IPaddress: "BMC IP地址", - clusterStatusObj: { - ONLINE: "在线", // "在线", - OFFLINE: "离线", // "离线", - EXCEPTION: "异常", // "异常", - }, - bmcIpCantNull: "BMC IP不得为空", - clusterRemark: "描述", // 描述 - bmcAccountCantNull: "BMC账号不得为空", - clusterUrl: "集群URL", // 集群URL - clusterUrlWranMsg: "ip或端口号输入有误", // ip或端口号输入有误 - clusterUrlIpWranMsg: "ip地址输入有误", // ip地址输入有误 - clusterUrlPortWranMsg: "端口号输入有误", // 端口号输入有误 - clusterUrlprotocol: "协议", // 协议 - clusterUrlprotNum: "端口号", // 端口号 - clusterUrlContent: "输入所有CM/CM_VDI节点的IP,格式http或https", // 输入所有CM/CM_VDI节点的IP,格式http或https - clustertype: "集群类型", // 集群类型 - clustertypeplaceholder: "请选择集群类型", // 集群类型 - clustercpurate: "CPU利用率", // CPU利用率 - clustermemoryrate: "内存利用率", // 内存利用率 - clusterstoragerate: "存储利用率", // 存储利用率 - toCluster: "登入", // 登入 - hostIpCantNull: "主机管理IP不得为空", - rootPasswordCantNull: "The root password cannot be empty", - clusterAdd: "添加物理集群", // 添加物理集群 - clusterAddtSussess: "创建物理集群成功!", // 添加物理集群 - clusterEdit: "编辑物理集群", // 编辑物理集群 - clusterEditSussess: "编辑物理集群成功!", // 编辑物理集群 + // 物理集群 + allcluster: '全部集群', // 全部集群 + plccluster: '请选择集群', // 请选择集群 + clusterName: '集群名称', // 集群名称 + loginCluster: '登入集群后台', // 登入集群后台 + clusterNameplaceholder: '请输入集群名称', // 请输入集群名称 + clusterStatus: '集群状态', // 集群状态 + clusterStatusObj: { + ONLINE: '在线',// "在线", + OFFLINE: '离线',// "离线", + EXCEPTION: '异常',// "异常", + }, + clusterRemark: '描述', // 描述 + clusterUrl: '集群URL', // 集群URL + clusterUrlWranMsg: 'ip或端口号输入有误', // ip或端口号输入有误 + clusterUrlIpWranMsg: 'ip地址输入有误', // ip地址输入有误 + clusterUrlPortWranMsg: '端口号输入有误', // 端口号输入有误 + clusterUrlprotocol: '协议', // 协议 + clusterUrlprotNum: '端口号', // 端口号 + clusterUrlContent: '输入所有CM/CM_VDI节点的IP,格式http或https', // 输入所有CM/CM_VDI节点的IP,格式http或https + clustertype: '集群类型', // 集群类型 + clustertypeplaceholder: '请选择集群类型', // 集群类型 + clustercpurate: 'CPU利用率', // CPU利用率 + clustermemoryrate: '内存利用率', // 内存利用率 + clusterstoragerate: '存储利用率', // 存储利用率 + toCluster: '登入', // 登入 - clusterEdleteConfirm: "确定删除该物理集群吗?", // 确定删除该物理集群吗? - clusterEdleteSuccess: "删除物理集群成功!", // 删除物理集群成功! - clusterBaseInfo: "基本信息", // 基本信息 - clusterStorageInfo: "存储信息", // 存储信息 - clusterSettingInfo: "配置信息", // 存储信息 - clusterConfirmInfo: "确认信息", // 确认信息 + clusterAdd: '添加物理集群', // 添加物理集群 + clusterAddtSussess: '创建物理集群成功!', // 添加物理集群 + clusterEdit: '编辑物理集群', // 编辑物理集群 + clusterEditSussess: '编辑物理集群成功!', // 编辑物理集群 - clusterAdminName: "用户名", // 用户名 - clusterAdmin: "集群管理员", // 集群管理员 - clusterAdminPasswordplac: "请输入集群管理员密码", // 请输入集群管理员密码 - clusterAdminPassword: "密码", // 密码 - clusterEditPassword: "修改密码", // 修改密码 - rootPassword: "root密码", // root密码 - rootPasswordplac: "请输入root密码", // 请输入root密码 + clusterEdleteConfirm: '确定删除该物理集群吗?', // 确定删除该物理集群吗? + clusterEdleteSuccess: '删除物理集群成功!', // 删除物理集群成功! + clusterBaseInfo: '基本信息', // 基本信息 + clusterStorageInfo: '存储信息', // 存储信息 + clusterConfirmInfo: '确认信息', // 确认信息 - clusterStorage: "存储", // 存储 - clusterStorageName: "名称", // 名称 - storageName: "存储名称", // 存储名称 - storageType: "存储类型", // 存储类型 - storageStatus: "存储状态", // 存储状态 - storageUsage: "存储用途", // 存储用途 - storagetotalSize: "总容量", // 存储用途 - storageUsedSize: "可用容量", // 存储用途 - storageUserate: "利用率", // 存储用途 - clusterSummary: "概要", // 概要 - clusterPhysicalHost: "物理主机", // 物理主机 - clusterVersion: "集群版本", // 集群版本 - clusterCeateTime: "添加时间", // 添加时间 - cpuModelName: "名称", // 名称 - cpuModelstatus: "状态", // 状态 - cpuModelType: "CPU类型", // CPU类型 - cpuModelserverArch: "服务器架构", // 服务器架构 - cpuModelserverType: "服务器类型", // 服务器类型 - cpuModelcpurate: "CPU利用率", // CPU利用率 - cpuModelmemoryrate: "内存利用率", // 内存利用率 + clusterAdminName: '用户名', // 用户名 + clusterAdmin: ' 集群管理员', // 用户名 + clusterAdminPassword: '密码', // 用户名 + clusterEditPassword: '修改密码', // 修改密码 - zoneName: "可用区", // 可用区 - zoneNameDesc: "可用区名称", // 可用区名称 - zoneRemark: "描述", // 描述 - zoneType: "资源类型", // 资源类型 - zoneCPUallocationratio: "CPU分配比", // CPU分配比 - zoneMemoryallocationratio: "内存分配比", // 内存分配比 - zoneStorageallocationratio: "存储分配比", // 存储分配比 - cpuTotal: "CPU总容量", // CPU总容量 - memTotal: "内存总容量", // 内存总容量 - storageTotal: "存储总容量", // 存储总容量 - zoneAdd: "添加可用区", // 添加可用区 - zoneAddSuccess: "创建可用区成功!", // 创建可用区成功! - zoneEdit: "编辑可用区", // 编辑可用区 - zoneEditSuccess: "编辑可用区成功!", // 编辑可用区成功! - zoneDleteConfirm: "确定删除该可用区吗?", // 确定删除该可用区吗? - zoneDleteSuccess: "删除可用区成功!", //删除可用区成功! + clusterStorage: '存储', // 存储 + clusterStorageName: '名称', // 名称 + storageName: '存储名称', // 存储名称 + storageType: '存储类型', // 存储类型 + storageStatus: '存储状态', // 存储状态 + storageUsage: '存储用途', // 存储用途 + storagetotalSize: '总容量', // 存储用途 + storageUsedSize: '可用容量', // 存储用途 + storageUserate: '利用率', // 存储用途 + clusterSummary: '概要', // 概要 + clusterPhysicalHost: '物理主机', // 物理主机 + clusterVersion: '集群版本', // 集群版本 + clusterCeateTime: '添加时间', // 添加时间 + cpuModelName: '名称', // 名称 + cpuModelstatus: '状态', // 状态 + cpuModelType: 'CPU类型', // CPU类型 + cpuModelserverArch: '服务器架构', // 服务器架构 + cpuModelserverType: '服务器类型', // 服务器类型 + cpuModelcpurate: 'CPU利用率', // CPU利用率 + cpuModelmemoryrate: '内存利用率', // 内存利用率 - zoneBaseInfo: "基本信息", // 基本信息 - zoneCluster: "关联集群", // 存储信息 - zoneConfirmInfo: "确认信息", // 确认信息 - zoneNoClusterTo: "没有合适的物理集群? 前往", // 没有合适的物理集群? 前往 - zoneClusterDesc: "物理集群", // 物理集群 - zoneSummary: "概要", // 概要 - zoneCreateTime: "添加时间", // 添加时间 + zoneName: '可用区', // 可用区 + zoneNameDesc: '可用区名称', // 可用区名称 + zoneRemark: '描述', // 描述 + zoneType: '资源类型', // 资源类型 + zoneCPUallocationratio: 'CPU分配比', // CPU分配比 + zoneMemoryallocationratio: '内存分配比', // 内存分配比 + zoneStorageallocationratio: '存储分配比', // 存储分配比 + cpuTotal: 'CPU总容量', // CPU总容量 + memTotal: '内存总容量', // 内存总容量 + storageTotal: '存储总容量', // 存储总容量 + zoneAdd: '添加可用区', // 添加可用区 + zoneAddSuccess: '创建可用区成功!', // 创建可用区成功! + zoneEdit: '编辑可用区', // 编辑可用区 + zoneEditSuccess: '编辑可用区成功!', // 编辑可用区成功! + zoneDleteConfirm: '确定删除该可用区吗?', // 确定删除该可用区吗? + zoneDleteSuccess: '删除可用区成功!', //删除可用区成功! - vdcName: "名称", // 名称 - vdcparentName: "上级 VDC", // 上级vdc - vdcorgName: "组织机构", // 组织机构 - vdcnetworkNum: "网络", // 网络 - vdcCPUallocationratio: "CPU分配比", // CPU分配比 - vdcmemoryallocationratio: "内存分配比", // 内存分配比 - vdcStorageallocationratio: "存储分配比", // 存储分配比 - vdcAdd: "创建VDC", // 创建虚拟数据中心 - vdcAddSuccess: "创建VDC成功!", // 创建虚拟数据中心成功!' - vdcEdit: "编辑VDC", // 编辑虚拟数据中心 - vdcEditSuccess: "编辑VDC成功!", // 编辑虚拟数据中心成功! - cdcDleteConfirm: "确定删除该VDC吗?", // 创建虚拟数据中心 - cdcDdleteSuccess: "删除该VDC成功!", // 创建虚拟数据中心 - vdcBaseInfo: "基本信息", // 基本信息 - vdcResouse: "分配资源", // 分配资源 - vdcConfirmInfo: "确认信息", // 确认信息 - vdcArchitecture: "架构", // 架构 - vdcUsable: "可用", // 可用 - vdcTotal: "总大小", // 总大小 - vdcAllocationChild: "已使用", // 总大小 - vdcClusterDesc: "物理集群", // 物理集群 - vdcNetWorkDesc: "名称", // 名称 - vdcallocationCpuEditMsg: "分配CPU数不能大于上级可用数,并且不能小于已使用数", // '分配CPU数不能大于上级可用数,并且不能小于已使用数' - vdcallocationCpuAddMsg: "分配CPU数为大于1的正整数,且小于可用cpu数", // '分配CPU数不能大于上级可用数,并且不能小于已使用数' - vdcallocationCpuMinMsg: "分配CPU数不能小于已使用数", // '分配CPU数不能小于已使用数' - vdcallocationMemEditMsg: "分配内存数不能大于上级可用数,并且不能小于已使用数", // '分配内存不能大于上级可用数,并且不能小于已使用数' - vdcallocationMemAddMsg: "分配内存数为大于1的正整数,且小于可用内存数", // '分配CPU数不能大于上级可用数,并且不能小于已使用数' - vdcallocationMemMinMsg: "分配内存数不能小于已使用数", // '分配内存数不能小于已使用数' - allocationStorageAddMsg: "分配存储数为大于1的正整数,且小于可用存储数", // 分配存储大小为大于1的正整数,且小于可用存储数 - allocationStorageEditMsg: - "分配存储数不能大于上级可用数,并且不能小于已使用数", // 分配存储数不能大于上级可用数,并且不能小于已使用数 - allocationStorageMinMsg: "分配存储数不能小于已使用数", // '分配存储数不能小于已使用数' - vdcNetWorkResouse: "网络资源信息", // 网络资源信息 - vdcSummary: "概要", // 概要 - vdccreateTime: "添加时间", // 添加时间 - vdc: { - nomatchingVDC: "无匹配VDC,前往", // 无匹配VDC,前往 No matching VDC, go to - bindVDC: "绑定VDC", // 绑定VDC,前往 bind VDC - }, - vdcallocatedtooltip: "分配资源额度,其可超过资源总量", // 分配资源额度,其可超过资源总量 - vdcSupCanassigned: "上级可分配", // 上级可分配 - firstvdcSupCanassigned: "资源总量", // 资源总量 - vdcAllocateCPUused: "分配CPU数应大于已使用CPU数", // 分配CPU数应大于已使用CPU数 - vdcAllocateCPUequal: "分配CPU数为大于等于1的正整数", // 分配CPU数为大于等于1的正整数 - vdcAllocateMemused: "分配内存数应大于已使用内存数", // 分配内存数应大于已使用内存数 - vdcAllocateMemequal: "分配内存数为大于等于1的正整数", // 分配内存数为大于等于1的正整数 - vdcAllocateStorageused: "分配存储数应大于已使用存储数", // 分配存储数应大于已使用存储数 - vdcAllocateStorageequal: "分配存储大小为大于等于1的正整数", // 分配存储大小为大于等于1的正整数 - vdcauditOpinion: "变更原因", // 变更原因不能为空 - vdcauditOpinionEmpt: "变更原因不能为空", // 变更原因不能为空 - vdcauditOpinionspecialChar: "变更原因只能由中文、英文、数字组合", // 变更原因只能由中文、英文、数字组合 - vdcSubAssigned: "已分配下级", // 已分配下级 - vdcThislevelUsed: "本级已使用", // 本级已使用 + zoneBaseInfo: '基本信息', // 基本信息 + zoneCluster: '关联集群', // 存储信息 + zoneConfirmInfo: '确认信息', // 确认信息 + zoneNoClusterTo: '没有合适的物理集群? 前往', // 没有合适的物理集群? 前往 + zoneClusterDesc: '物理集群', // 物理集群 + zoneSummary: '概要', // 概要 + zoneCreateTime: '添加时间', // 添加时间 - zonelist: "可用区列表", // 可用区列表 - zoneerror: "已过期", // 已过期 - zonewarn: "即将过期", // 即将过期 + vdcName: '名称', // 名称 + vdcparentName: '上级 VDC', // 上级vdc + vdcorgName: '组织机构', // 组织机构 + vdcnetworkNum: '网络', // 网络 + vdcCPUallocationratio: 'CPU分配比', // CPU分配比 + vdcmemoryallocationratio: '内存分配比', // 内存分配比 + vdcStorageallocationratio: '存储分配比', // 存储分配比 + vdcAdd: '创建VDC', // 创建虚拟数据中心 + vdcAddSuccess: '创建VDC成功!', // 创建虚拟数据中心成功!' + vdcEdit: '编辑VDC', // 编辑虚拟数据中心 + vdcEditSuccess: '编辑VDC成功!', // 编辑虚拟数据中心成功! + cdcDleteConfirm: '确定删除该VDC吗?', // 创建虚拟数据中心 + cdcDdleteSuccess: '删除该VDC成功!', // 创建虚拟数据中心 + vdcBaseInfo: '基本信息', // 基本信息 + vdcResouse: '分配资源', // 分配资源 + vdcConfirmInfo: '确认信息', // 确认信息 + vdcArchitecture: '架构', // 架构 + vdcUsable: '可用', // 可用 + vdcTotal: '总大小', // 总大小 + vdcAllocationChild: '已使用', // 总大小 + vdcClusterDesc: '物理集群', // 物理集群 + vdcNetWorkDesc: '名称', // 名称 + vdcallocationCpuEditMsg: '分配CPU数不能大于上级可用数,并且不能小于已使用数', // '分配CPU数不能大于上级可用数,并且不能小于已使用数' + vdcallocationCpuAddMsg: '分配CPU数为大于1的正整数,且小于可用cpu数', // '分配CPU数不能大于上级可用数,并且不能小于已使用数' + vdcallocationCpuMinMsg: '分配CPU数不能小于已使用数', // '分配CPU数不能小于已使用数' + vdcallocationMemEditMsg: '分配内存数不能大于上级可用数,并且不能小于已使用数', // '分配内存不能大于上级可用数,并且不能小于已使用数' + vdcallocationMemAddMsg: '分配内存数为大于1的正整数,且小于可用内存数', // '分配CPU数不能大于上级可用数,并且不能小于已使用数' + vdcallocationMemMinMsg: '分配内存数不能小于已使用数', // '分配内存数不能小于已使用数' + allocationStorageAddMsg: '分配存储数为大于1的正整数,且小于可用存储数', // 分配存储大小为大于1的正整数,且小于可用存储数 + allocationStorageEditMsg: '分配存储数不能大于上级可用数,并且不能小于已使用数', // 分配存储数不能大于上级可用数,并且不能小于已使用数 + allocationStorageMinMsg: '分配存储数不能小于已使用数', // '分配存储数不能小于已使用数' + vdcNetWorkResouse: '网络资源信息', // 网络资源信息 + vdcSummary: '概要', // 概要 + vdccreateTime: '添加时间', // 添加时间 + vdc: { + nomatchingVDC: '无匹配VDC,前往', // 无匹配VDC,前往 No matching VDC, go to + bindVDC: '绑定VDC', // 绑定VDC,前往 bind VDC + }, + vdcallocatedtooltip: '分配资源额度,其可超过资源总量', // 分配资源额度,其可超过资源总量 + vdcSupCanassigned: '上级可分配', // 上级可分配 + firstvdcSupCanassigned: '资源总量', // 资源总量 + vdcAllocateCPUused: '分配CPU数应大于已使用CPU数', // 分配CPU数应大于已使用CPU数 + vdcAllocateCPUequal: '分配CPU数为大于等于1的正整数', // 分配CPU数为大于等于1的正整数 + vdcAllocateMemused: '分配内存数应大于已使用内存数', // 分配内存数应大于已使用内存数 + vdcAllocateMemequal: '分配内存数为大于等于1的正整数', // 分配内存数为大于等于1的正整数 + vdcAllocateStorageused: '分配存储数应大于已使用存储数', // 分配存储数应大于已使用存储数 + vdcAllocateStorageequal: '分配存储大小为大于等于1的正整数', // 分配存储大小为大于等于1的正整数 + vdcauditOpinion: '变更原因', // 变更原因不能为空 + vdcauditOpinionEmpt: '变更原因不能为空', // 变更原因不能为空 + vdcauditOpinionspecialChar: '变更原因只能由中文、英文、数字组合', // 变更原因只能由中文、英文、数字组合 + vdcSubAssigned: '已分配下级', // 已分配下级 + vdcThislevelUsed: '本级已使用', // 本级已使用 - start_servervm: "开机", // 开机 - shutdown_servervm: "关机", // 关机 - shutdownSucc: "关机成功!", // 关机成功! - shutdownErr: "关机失败!", // 关机失败! - deleteSuccess: "删除成功", - shutdownTips: "确认将裸金属服务器“{name}”关机?", - shutdownManyTips: "确认批量将裸金属服务器“{name}”关机?", - restart_servervm: "重启", // 重启 - restartSucc: "重启成功!", // 重启成功! - restartErr: "重启失败!", // 重启失败! - servervmmore: "更多", // 更多 - batchAbort: "强制关机", // 强制关机 - batchForceReboot: "强制重启", // 强制重启 - batchDelete: "删除", // 删除 - deleteSucc: "删除成功!", // 删除成功! - deleteErr: "删除失败!", // 删除失败! - batchstartSucc: "批量开机成功!", // 批量开机成功! - batchstartErr: "批量开机失败!", // 批量开机失败! - batchcloseSucc: "批量关机成功!", // 批量关机成功! - batchcloseErr: "批量关机失败!", // 批量关机失败! - batchrebootSucc: "批量重启成功!", // 批量重启成功! - batchrebootErr: "批量重启失败!", // 批量重启失败! - batchDeleteSucc: "删除成功!", // 删除成功! - batchDeleteErr: "删除失败!", // 删除失败! - deleteconfirmMsg: "确定要删除所选云服务器?", // 确定要删除所选云服务器? - deleteconfirmTit: "删除", // 删除 - abortconfirmMsg: - "此操作可能导致云服务器内尚未保存的数据丢失,是否确认强制关机?", // 此操作可能导致云服务器内尚未保存的数据丢失,是否确认强制关机? - abortconfirmTit: "强制关机", // 强制关机 - abortSucc: "强制关机成功!", // 强制关机成功! - abortErr: "强制关机失败!", // 强制关机失败! + zonelist: '可用区列表',// 可用区列表 + zoneerror: '已过期',// 已过期 + zonewarn: '即将过期',// 即将过期 - forcedRestartconfirmMsg: - "此操作可能导致云服务器内尚未保存的数据丢失,是否确认强制重启?", // 此操作可能导致云服务器内尚未保存的数据丢失,是否确认强制关机? - forcedRestartconfirmTit: "强制重启", // 强制关机 - forcedRestartSucc: "强制重启成功!", // 强制重启成功! - forcedRestartErr: "强制重启失败!", // 强制重启失败! - openVnc: "控制台", // 控制台 - systemImg: "系统", // 系统 - aliasName: "名称", // 名称 - zonestatus: "状态", // 状态 - zonetaskStatus: "任务状态", // 任务状态 - zoneorgName: "所属组织", // 所属组织 - zoneuserName: "所属用户", // 所属用户 - zoneclusterName: "所属集群", // 所属集群 - zoneip: "IP地址", // IP地址 - zoneos: "操作系统", // 操作系统 - architecture: "架构", // 架构 - zonecpu: "CPU(核)", // CPU(核) - zonememory: "内存(GB)", // 内存(GB) - zonedisks: "磁盘(GB)", // 磁盘(GB) - zoneusage: "利用率", // 利用率 - zonecreateDate: "创建时间", // 创建时间 - zonedeadlineTime: "到期时间(天)", // 到期时间(天) - zonedescription: "描述", // 描述 - zoneAVAILABLE: "在线", // 在线 - zoneOFFLINE: "离线", // 离线 - zoneINSTALLING: "安装", // 安装 - zoneCONNECTED: "已连接", // 已连接 - zoneSUSPEND: "暂停", // 暂停 - zoneOVERDUE: "已过期", // 已过期 - zoneUNKNOWN: "其他", // 其他 - startServerVm: "开机成功", // 开机成功 - startServerVmErr: "开机失败", // 开机失败 - zoneLEISURE: "空闲", // 空闲 - zoneNEW: "新建", // 新建 - zonetaskINSTALLING: "安装中", // 安装中 - zoneNEWFAILED: "新建失败", // 新建失败 - zoneINSTALLFAILED: "安装失败", // 安装失败 - zoneCREATING: "正在创建", // 正在创建 - zoneSTARTING: "正在开机", // 正在开机 - zoneSHUTDOWNING: "正在关机", // 正在关机 - zoneREBOOTING: "正在重启", // 正在重启 - zoneSUSPENDING: "正在暂停", // 正在暂停 - zoneRESUMING: "正在唤醒", // 正在唤醒 - zoneVOLUME_MIGRATING: "正在存储迁移", // 正在存储迁移 - zoneHOST_MIGRATING: "正在主机迁移", // 正在主机迁移 - zoneBACKUP_RUNNING: "正在备份", // 正在备份 - zoneBACKUP_RECOVERING: "正在备份恢复", // 正在备份恢复 - zoneSNAPSHOT_RUNNING: "正在快照", // 正在快照 - zoneSNAPSHOT_RECOVERING: "正在快照恢复", // 正在快照恢复 - zoneIMPORTING: "正在导入", // 正在导入 - zoneEXPORTING: "正在导出", // 正在导出 - zoneCLONING: "正在克隆", // 正在克隆 - zoneDISK_COPYING: "正在磁盘复制", // 正在磁盘复制 - zoneCREATE_KCP_IMAGE: "正在制作模板镜像", // 正在制作模板镜像 - zoneSNAPSHOT_RUNNING: "正在快照", // 正在快照 - zoneOther: "其他", // 其他 - type: "类型", // 类型 - userName: "所有者", // 所有者 - vncAddr: "VNC地址", // VNC地址 - operationHours: "开机时间", // 开机时间 - powerOnDate: "运行时间", // 运行时间 - selectCluster: "计算资源", // 计算资源 - runMachine: "运行主机", // 运行主机 - monitor: "监控", // 监控 - log: "任务", // 任务 - BMCAccount: "BMC账号", - nameCantNull: "名称不得为空", - surePowerOffTips: "确认认将“{name}”关机?", - addBareMetal: "添加裸金属服务器", - editBareMetal: "编辑裸金属服务器", - summary: { - summary: "概要", // 概要 - type: "告警类型", // 告警类型 - date: "告警时间", // 告警时间 - severity: "告警等级", // 告警等级 - info: "告警详情", // 告警详情 - objectName: "告警对象", // 告警对象 - }, - network: { - network: "网络", // 网络 - numberOfQueues: "队列个数", // Number of queues - networkName: "网络名称", // 网络名称 - virtualSwitch: "虚拟交换机", // 虚拟交换机 - portGroup: "所属端口组", // 所属端口组 - macAddress: "MAC地址", // MAC地址 - ipAddress: "IP地址", // IP地址 - pool: "地址池", // 地址池 - uploadSpend: "下行带宽(KB/S)", // 下行带宽(KB/S) - downloadSpend: "上行带宽(KB/S)", // 上行带宽(KB/S) - setUp: "网络设置", //网络设置 - cluster: "物理集群", //物理集群 - selectcluster: "请选择物理集群", //请选择物理集群 - networkName: "网络名称", //网络名称 - networkNameplac: "请输入网络名称", //请输入网络名称 - networkNametooltip: "支持中文、英文、数字,限定2~18字数", //支持中文、英文、数字,限定2~18字数 - modelType: "网卡类型", //网卡类型 - networkCard: "网卡", //网卡 - modelTypeplac: "请选择网卡类型", //请选择网卡类型 - addressPool: "地址池", //地址池 - addressPoolplac: "请选择地址池", //请选择地址池 - virtualSwitch: "虚拟交换机", //虚拟交换机 - virtualSwitchplac: "请选择虚拟交换机", //请选择虚拟交换机 - portGroup: "端口组", //端口组 - portGroupplac: "请选择端口组", //请选择端口组 - permission: "安全组", //安全组 - permissionresouse: "安全组资源", //安全组资源 - effectivepermission: "生效安全组资源", //生效安全组资源 - networkNamelen: "名称长度应控制在 2 ~ 18 个字符", //名称长度应控制在 2 ~ 18 个字符 - securityPolicy: "安全策略", //安全策略 - virtualFirewallName: "虚拟防火墙", //虚拟防火墙 - virtualFirewallNamePlc: "请选择虚拟防护墙", //请选择虚拟防护墙 - networkHierarchy: "网络层级", - networkType: "网络类型", - none: "无", - netSpecEditSuccess: "网络规格编辑成功", //The network specifications were edited successfully - netSpecCreatSuccess: "网络规格创建成功", //The network specifications are created successfully - advacedSetting: "高级设置", //Advanced Settings - auto: "自动", //automatic - netSpecSec: "二级网络", //Secondary network - netSpec3rd: "三级网络", //Three-level network - netSpecName: "网络规格名称", - selectnetworkType: "请选择网络类型", - addNetTop1: " 没有合适的网络规格? 前往", - addNetTop2: "进入物理集群详情 -> 网络 -> 创建网络规格", - }, - task: { - action: "操作", // 操作 - objName: "对象名称", // 对象名称 - operUser: "操作用户", // 操作用户 - startTime: "开始时间", // 开始时间 - finishTime: "结束时间", // 结束时间 - status: "状态", // 状态 - detail: "详情", // 详情 - reason: "原因", // 原因 - }, - bindTheVirtualFirewall: "绑定虚拟防火墙", // 绑定虚拟防火墙 - virtualFirewallName: "名称", // 名称 - virtualFirewallRemark: "说明", // 说明 + start_servervm: '开机',// 开机 + shutdown_servervm: '关机',// 关机 + shutdownSucc: '关机成功!',// 关机成功! + shutdownErr: '关机失败!',// 关机失败! - statuscell: { - OVERDUE: "已过期", // 已过期 - AVAILABLE: "在线", // 在线 - CONNECTED: "已连接", // 已连接 - INSTALLING: "安装", // 安装 - SUSPEND: "暂停", // 暂停 - UNKNOWN: "其他", // 其他 - ONLINE: "在线", // 在线 - OFFLINE: "离线", // 离线 - HALT: "异常", // 异常 - EXCEPTION: "异常", // 异常 - NORMAL: "正常", // 正常 - WARNING: "警告", // 警告 - ERROR: "错误", // 错误 - POWERED_ON: "在线", // 在线 - POWERED_OFF: "关闭", // 关闭 - }, + restart_servervm: '重启',// 重启 + restartSucc: '重启成功!',// 重启成功! + restartErr: '重启失败!',// 重启失败! + servervmmore: '更多',// 更多 + batchAbort: '强制关机',// 强制关机 + batchForceReboot: '强制重启',// 强制重启 + batchDelete: '删除',// 删除 + deleteSucc: '删除成功!',// 删除成功! + deleteErr: '删除失败!',// 删除失败! + batchstartSucc: '批量开机成功!',// 批量开机成功! + batchstartErr: '批量开机失败!',// 批量开机失败! + batchcloseSucc: '批量关机成功!',// 批量关机成功! + batchcloseErr: '批量关机失败!',// 批量关机失败! + batchrebootSucc: '批量重启成功!',// 批量重启成功! + batchrebootErr: '批量重启失败!',// 批量重启失败! + batchDeleteSucc: '删除成功!',// 删除成功! + batchDeleteErr: '删除失败!',// 删除失败! + deleteconfirmMsg: '确定要删除所选云服务器?',// 确定要删除所选云服务器? + deleteconfirmTit: '删除',// 删除 + abortconfirmMsg: '此操作可能导致云服务器内尚未保存的数据丢失,是否确认强制关机?',// 此操作可能导致云服务器内尚未保存的数据丢失,是否确认强制关机? + abortconfirmTit: '强制关机',// 强制关机 + abortSucc: '强制关机成功!',// 强制关机成功! + abortErr: '强制关机失败!',// 强制关机失败! - // VMware纳管 - vMwareMgr: { - name: "名称", // 名称 - namePlac: "名称不能为空", // 名称不能为空 - remark: "描述", // 描述 - vcenterIp: "ip地址", // ip地址 - vcenterPort: "端口", // 端口 - vcenterAccount: "账号", // 账号 - vcenterAdminName: "用户名", // 用户名 - vcenterAdminNameNot: "用户名不能为空", // 用户名不能为空 - vcenterAdminNamePlac: "输入vCenter管理员用户名", // 输入vCenter管理员用户名 - vcenterAdminPassword: "密码", // 密码 - vcenterAdminPasswordNot: "密码不能为空", // 密码不能为空 - vcenterAdminPasswordPlac: "请输入密码", // 请输入密码 - addvMwareMgr: "添加VMware纳管", // 添加VMware纳管 - editvMwareMgr: "编辑VMware纳管", // 编辑VMware纳管 - type: "类型", // 类型 - typePlac: "类型不能为空", // 类型不能为空 - addSucc: "添加成功", // 添加成功 - editSucc: "编辑成功", // 编辑成功 - vmlist: "云服务器列表", // 云服务器列表 - powerStatus: "状态", // 状态 - memory: "内存", // 内存 - }, + forcedRestartconfirmMsg: '此操作可能导致云服务器内尚未保存的数据丢失,是否确认强制重启?',// 此操作可能导致云服务器内尚未保存的数据丢失,是否确认强制关机? + forcedRestartconfirmTit: '强制重启',// 强制关机 + forcedRestartSucc: '强制重启成功!',// 强制重启成功! + forcedRestartErr: '强制重启失败!',// 强制重启失败! + openVnc: '控制台',// 控制台 + systemImg: '系统',// 系统 + aliasName: '名称',// 名称 + zonestatus: '状态',// 状态 + zonetaskStatus: '任务状态',// 任务状态 + zoneorgName: '所属组织',// 所属组织 + zoneclusterName: '所属集群',// 所属集群 + zoneip: 'IP地址',// IP地址 + zoneos: '操作系统',// 操作系统 + architecture: '架构',// 架构 + zonecpu: 'CPU(核)',// CPU(核) + zonememory: '内存(GB)',// 内存(GB) + zonedisks: '磁盘(GB)',// 磁盘(GB) + zoneusage: '利用率',// 利用率 + zonecreateDate: '创建时间',// 创建时间 + zonedeadlineTime: '到期时间(天)',// 到期时间(天) + zonedescription: '描述',// 描述 + zoneAVAILABLE: '在线',// 在线 + zoneOFFLINE: '离线',// 离线 + zoneINSTALLING: '安装',// 安装 + zoneCONNECTED: '已连接',// 已连接 + zoneSUSPEND: '暂停',// 暂停 + zoneOVERDUE: '已过期',// 已过期 + zoneUNKNOWN: '其他',// 其他 + startServerVm: '开机成功',// 开机成功 + startServerVmErr: '开机失败',// 开机失败 + zoneLEISURE: '空闲',// 空闲 + zoneNEW: '新建',// 新建 + zonetaskINSTALLING: '安装中',// 安装中 + zoneNEWFAILED: '新建失败',// 新建失败 + zoneINSTALLFAILED: '安装失败',// 安装失败 + zoneCREATING: '正在创建',// 正在创建 + zoneSTARTING: '正在开机',// 正在开机 + zoneSHUTDOWNING: '正在关机',// 正在关机 + zoneREBOOTING: '正在重启',// 正在重启 + zoneSUSPENDING: '正在暂停',// 正在暂停 + zoneRESUMING: '正在唤醒',// 正在唤醒 + zoneVOLUME_MIGRATING: '正在存储迁移',// 正在存储迁移 + zoneHOST_MIGRATING: '正在主机迁移',// 正在主机迁移 + zoneBACKUP_RUNNING: '正在备份',// 正在备份 + zoneBACKUP_RECOVERING: '正在备份恢复',// 正在备份恢复 + zoneSNAPSHOT_RUNNING: '正在快照',// 正在快照 + zoneSNAPSHOT_RECOVERING: '正在快照恢复',// 正在快照恢复 + zoneIMPORTING: '正在导入',// 正在导入 + zoneEXPORTING: '正在导出',// 正在导出 + zoneCLONING: '正在克隆',// 正在克隆 + zoneDISK_COPYING: '正在磁盘复制',// 正在磁盘复制 + zoneSNAPSHOT_RUNNING: '正在快照',// 正在快照 + zoneOther: '其他',// 其他 + type: '类型',// 类型 + userName: '所有者',// 所有者 + vncAddr: 'VNC地址',// VNC地址 + operationHours: '开机时间',// 开机时间 + powerOnDate: '运行时间',// 运行时间 + selectCluster: '计算资源',// 计算资源 + runMachine: '运行主机',// 运行主机 + monitor: '监控',// 监控 + log: '任务',// 任务 + summary: { + summary: '概要',// 概要 + type: '告警类型',// 告警类型 + date: '告警时间',// 告警时间 + severity: '告警等级',// 告警等级 + info: '告警详情',// 告警详情 + objectName: '告警对象',// 告警对象 + }, + network: { + network: '网络',// 网络 + networkName: '网络名称',// 网络名称 + virtualSwitch: '虚拟交换机',// 虚拟交换机 + portGroup: '所属端口组',// 所属端口组 + macAddress: 'MAC地址',// MAC地址 + ipAddress: 'IP地址',// IP地址 + pool: '地址池',// 地址池 + uploadSpend: '下行带宽(KB/S)',// 下行带宽(KB/S) + downloadSpend: '上行带宽(KB/S)',// 上行带宽(KB/S) + setUp: '网络设置', //网络设置 + cluster: '物理集群', //物理集群 + selectcluster: '请选择物理集群', //请选择物理集群 + networkName: '网络名称', //网络名称 + networkNameplac: '请输入网络名称', //请输入网络名称 + networkNametooltip: '支持中文、英文、数字,限定2~18字数', //支持中文、英文、数字,限定2~18字数 + modelType: '网卡类型', //网卡类型 + networkCard: '网卡', //网卡 + modelTypeplac: '请选择网卡类型', //请选择网卡类型 + addressPool: '地址池', //地址池 + addressPoolplac: '请选择地址池', //请选择地址池 + virtualSwitch: '虚拟交换机', //虚拟交换机 + virtualSwitchplac: '请选择虚拟交换机', //请选择虚拟交换机 + portGroup: '端口组', //端口组 + portGroupplac: '请选择端口组', //请选择端口组 + permission: '安全组', //安全组 + permissionresouse: '安全组资源', //安全组资源 + effectivepermission: '生效安全组资源', //生效安全组资源 + networkNamelen: '名称长度应控制在 2 ~ 18 个字符', //名称长度应控制在 2 ~ 18 个字符 + securityPolicy: '安全策略', //安全策略 + virtualFirewallName: '虚拟防火墙', //虚拟防火墙 + virtualFirewallNamePlc: '请选择虚拟防护墙', //请选择虚拟防护墙 + }, + storage: { + disk: '存储',// 存储 + diskName: '名称',// 名称 + device: '存储类型',// 存储类型 + targetBus: '存储控制器',// 存储控制器 + diskCapacity: '容量(G)',// 容量(G) + sourceFile: '存储路径',// 存储路径 + raw: '块设备',// 块设备 + existed: '本地磁盘',// 本地磁盘 + qcow2: '本地磁盘',// 本地磁盘 + }, + task: { + action: '操作',// 操作 + objName: '对象名称',// 对象名称 + operUser: '操作用户',// 操作用户 + startTime: '开始时间',// 开始时间 + finishTime: '结束时间',// 结束时间 + status: '状态',// 状态 + detail: '详情',// 详情 + reason: '原因',// 原因 + }, + bindTheVirtualFirewall: '绑定虚拟防火墙', // 绑定虚拟防火墙 + virtualFirewallName: '名称', // 名称 + virtualFirewallRemark: '说明', // 说明 - storage: { - enable: "启用", - disable: "禁用", - enableState: "启用状态", - sure: "确定", - cancel: "取消", - disTips: "禁用后,自服务用户的云服务器不可使用此存储池", - enableTips: "启用后,自服务用户的云服务器可使用此存储池", - success: "成功", - disk: "存储", // 存储 - diskName: "名称", // 名称 - device: "存储类型", // 存储类型 - targetBus: "存储控制器", // 存储控制器 - diskCapacity: "容量(G)", // 容量(G) - sourceFile: "存储路径", // 存储路径 - raw: "块设备", // 块设备 - existed: "本地磁盘", // 本地磁盘 - qcow2: "本地磁盘", // 本地磁盘 - }, - addSpec: "添加规格", - delSpec: "删除规格", - layerNet2: "二层网络", - layerNet3: "三层网络", - delSpecTips: "此操作将删除该网络规格, 是否继续?", - delManySpecTips: "此操作将批量删除选中网络规格, 是否继续?", - tips: "提示", - pubNet: "公有网络", - vpcNet: "VPC网络", - netSeg: "网络段", - editNetSpec: "编辑网络规格", - createNetSpec: "创建网络规格", - ipAcq: "IP获取", - selectNetLevel: "请选择网络层级", - selectCardType: "请选择网卡类型", - selectSecPolicy: "请选择安全策略", - selectVirFirewall: "请选择虚拟防火墙", - selectThreeLayerNet: "请选择三层网络", - selectEffectGroup: "请选择需要生效的安全组", - macPool: "mac地址池", - netSepcDetail: "网络规格详情", - autoDhcp: "自动(DHCP)", -}; + statuscell: { + OVERDUE: '已过期', // 已过期 + AVAILABLE: '在线', // 在线 + CONNECTED: '已连接', // 已连接 + INSTALLING: '安装', // 安装 + SUSPEND: '暂停', // 暂停 + UNKNOWN: '其他', // 其他 + ONLINE: '在线', // 在线 + OFFLINE: '离线', // 离线 + HALT: '异常', // 异常 + EXCEPTION: '异常', // 异常 + NORMAL: '正常', // 正常 + WARNING: '警告', // 警告 + ERROR: '错误', // 错误 + POWERED_ON: '在线', // 在线 + POWERED_OFF: '关闭', // 关闭 + }, + + // VMware纳管 + vMwareMgr: { + name: '名称', // 名称 + namePlac: '名称不能为空', // 名称不能为空 + remark: '描述', // 描述 + vcenterIp: 'ip地址', // ip地址 + vcenterPort: '端口', // 端口 + vcenterAccount: '账号', // 账号 + vcenterAdminName: '用户名', // 用户名 + vcenterAdminNameNot: '用户名不能为空', // 用户名不能为空 + vcenterAdminNamePlac: '输入vCenter管理员用户名', // 输入vCenter管理员用户名 + vcenterAdminPassword: '密码', // 密码 + vcenterAdminPasswordNot: '密码不能为空', // 密码不能为空 + vcenterAdminPasswordPlac: '请输入密码', // 请输入密码 + addvMwareMgr: '添加VMware纳管', // 添加VMware纳管 + editvMwareMgr: '编辑VMware纳管', // 编辑VMware纳管 + type: '类型', // 类型 + typePlac: '类型不能为空', // 类型不能为空 + addSucc: '添加成功', // 添加成功 + editSucc: '编辑成功', // 编辑成功 + vmlist: '云服务器列表', // 云服务器列表 + powerStatus: '状态', // 状态 + memory: '内存', // 内存 + } +} \ No newline at end of file diff --git a/src/assets/common/lang/zh/taskcenter.js b/src/assets/common/lang/zh/taskcenter.js deleted file mode 100644 index ef583da..0000000 --- a/src/assets/common/lang/zh/taskcenter.js +++ /dev/null @@ -1,36 +0,0 @@ -// taskcenter 任务中心 -export default { - taskcenter: { - task: '任务', // 任务 - checkTheDetails: '查看详情', // 查看详情 - taskName: '任务名称', // 任务名称 - taskObject: '对象', // 对象 - taskObjectType: '对象类型', // 对象类型 - taskStatus: '状态', // 状态 - startingTime: '开始时间', // 开始时间 - endTime: '结束时间', // 结束时间 - operator: '操作者', // 操作者 - operatorIp: '操作用户IP', // 操作用户IP - organization: '所属组织', // 所属组织 - availabilityZone: '可用区', // 可用区 - canceling: '取消中', // 取消中 - processing: '进行中', // 进行中 - tobestarted: '待开始', // 待开始 - fail: '失败', // 失败 - success: '成功', // 成功 - running: '执行中', // 执行中 - canceled: '已取消', // 已取消 - timeout: '超时', // 超时 - unknown: '未知', // 未知 - allTasksPlac: '请选择任务', // 请选择任务 - allTasks: '全部任务', // 全部任务 - allStatusPlac: '请选择状态', // 请选择状态 - allStatus: '全部状态', // 全部状态 - taskDescription: '任务描述', // 任务描述 - failureReason: '失败原因', // 失败原因 - taskDesk: '任务台', // 任务台 - viewHistoricalTasks: '查看历史任务', // 查看历史任务 - allTypes: '全部任务类型', // 全部任务类型 - allTypePlac: '请选择任务类型', // 请选择任务类型 - } -} \ No newline at end of file diff --git a/src/assets/common/lang/zh/transferMgr.js b/src/assets/common/lang/zh/transferMgr.js deleted file mode 100644 index bc03c80..0000000 --- a/src/assets/common/lang/zh/transferMgr.js +++ /dev/null @@ -1,20 +0,0 @@ -// transferMgr 云服务器转移 -export default { - transferMgr: { - transferMsg: '跨组织转移云服务器,会断开云服务器网络;需为云服务器配置网络。', // 跨组织转移云服务器,会断开云服务器网络;需为云服务器配置网络。 - userName: '用户名称', // 用户名称 - realName: '真实姓名', // 真实姓名 - roleName: '角色名称', // 角色名称 - orgName: '所属组织', // 所属组织 - type: '类型', // 类型 - selectUser: '选择用户', // 选择用户 - selectUserPlac: '请选择用户', // 选择用户 - selectOrg: '选择组织', // 选择组织 - selectOrgPlac: '请选择组织', // 请选择组织 - selectOrgUser: '选择组织用户', // 选择组织用户 - selectOrgUserPlac: '请选择组织用户', // 请选择组织用户 - sameOrgTransfer: '同组织转移', // 同组织转移 - transferAcrossOrg: '跨组织转移', // 跨组织转移 - transfer: '转移' - } -} \ No newline at end of file diff --git a/src/assets/hnkylin/cant-brz.png b/src/assets/hnkylin/cant-brz.png deleted file mode 100644 index 9853c534b81576f8494ff526e8d8c47d1c34fce6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12574 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 P6G-`~+LHqL*B|}|5@JHe diff --git a/src/assets/hnkylin/dr-explain.png b/src/assets/hnkylin/dr-explain.png deleted file mode 100644 index 8e8587dad0e640cb98e6860275a8871cf0131232..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25527 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 IUH<+50ALLl(f|Me diff --git a/src/assets/hnkylin/main-server.png b/src/assets/hnkylin/main-server.png deleted file mode 100644 index 41d550c6e2e0e429cbfb3f4c6b749513bc7c8e52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8453 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 diff --git a/src/assets/hnkylin/online-brz.png b/src/assets/hnkylin/online-brz.png deleted file mode 100644 index 516a20324ccf46e68beaf05e5fac098220048382..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14776 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 THGu^JX#b+8tDnm{r-UW|ZdLNE diff --git a/src/assets/hnkylin/slaverMain.png b/src/assets/hnkylin/slaverMain.png deleted file mode 100644 index ea7a05b5af6dc6006f3c1e94bf7aa9bb543f5c3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9506 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 diff --git a/src/assets/hnkylin/slaverSlaver.png b/src/assets/hnkylin/slaverSlaver.png deleted file mode 100644 index 0a30c2f5ff2ca95049e198c957594eca969de969..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12173 zcmch-Wmr_v_b)yO$WStXk^&Bm4BgU0N+Z(U4HD9!FqCw63{pzN(51B0&?Sv9gn*PZ z-0}On_j&G{`#ksFf4rDD`|Q2e-mA{%thJ&v)D#HusPF&)0O4yz**5?HMmPHZIq)(1 zy9ads3;l!P@kRj(s2Y2|i@w0Jl~$Do0BYm$Z_TmM*SPN#^*sQ9Cq4f@7z3_lRsaAO z{cBn2w>~BZxks+g6lPKR!B(rkyS`C}Xz=oBB7Pi3YS$@#Q~c;FotLNw#~Q`doVUX1 z8&+goAcRt}GmL-6;!iH9vE<={1%@nO`1}55iF%DiYeAYMtoBEk;(5%Kx&McH)Y-wF zq4CArht|NrYS&=pYhXZ|%lr4Mhu5=TzIyD@9WEKt#|}54b`JJUCmYM@ruM2Oi-Lo< z)X$DOg`c1|UO^$-rW1T_USM5lU+7%5A^=<;S@!qbxqfzyOvZG8qo;gRl0&HSt0BgA zOjLl?%N@!Of!86|*62G0hM-E)(P&(F8G|ec0FcrKjglTj!!%UnI2h2k$15ZMVnbPz zBQi*_000dE*_%h;lvI9$e?l$zi3`(6OLf4(002I?uz;Y)q|;9xp>HgYN!}ie(FhM? z0sv)@k8))+=t00&0PG)w;*TKooHBk86g`&u7z#uanv?>fX}qNZg3*+eFv0&=*}s6H zC%h#5zg+Y-Qq%8dR`?)iI<6s4U^RAfcy)i^RniahMG0||Kk=)%lc#`jY$>3$^*nEI zM9A464CA)DmaI~yfE$rq6F&{ni^-?X6DL+{%Y6pKvQ0b2TRyuZ%XmlyesAx$NK7em z02ph=Y|k(&fTD2^A&aWwDh)ej%k8Ag%c31;5&D!%4FyU$egK8wajVcl!Z=>B*iX-u zT^S5y(YZ`QeeMf&z%bBnF}A%H$1i4?_Q%v)0TM>#8pFvdhGBnJQtdjqg@Q$! ze$x;EPX0|CC36{JP_Fo$q6}Pk+3w4COJ7>-Y9E@!66J+wuC@D};M{Hta~zC5)Lh;6 zHNj|@vs()7Qc+WvZbceFyB9m>R}b%#C*(nD`GZ-R5z1$Mx$G?w3Sbxj@fZl+QIf@~ zmW#He9dGChYmHn+h5JGu^2XTweDBqau*f@K@*|tJZq)5%syycGOF^6vHLcZ3*Jw8n z{-$&MZ|;xK`%^H&8r{e+CrcU+lTOkL*Sfy2R52>(?7Mvac_f`FdQF%AdJTi)SNMKW zn(k*#*utABe52nYP)HhvF#!zZ`OMJ9*0KlgHsRj;XZ=y&Nl&CLcz|v3z9(kO9lVR7 zI%Yap^JkO#n*LV4GsS6F8i-*>2!f6?vG$~Y-4axBGD9yF%}O72a(K=ppZ{!`7VF&1)l5At~9je zPbC|40?0-Un{vYVA)NSpo@11cQyHOG?%#boc-d^@{%E}_7~QmAD)(l0M-q<(ea)f% zFop#MwgM@yjfR8+c582cdp?kz8xK2RU+eR&M>Fz4k5=+ZyluJ0(+G~$hl#rjdm2Tw z)aFP4i?}e*+XOAd`ipb#)xwE3t!W`4H7@md zMgw=8!^}FpW(0g@*S?i(8?>%iZ=p=yUDxN(fASLs3VDWwRsq=Q`0n5lO-6R12flYw zWhV|kzn^HQK(bT%+2OLGCxy0wk;D^1Zs^Jj` z?euesGG$K}<{%Z!|L!x9bz|xf$uJu1Hl^< zxYf)y4ChimFG}tGf6upE$59ZuPP$qSc%q}nf2^9Mdzq%fw|&anX6LNE4$%dHkbe|N zww)H~ycS!h*^3?}HNdyl<1aii$u9Z9IvEpco%nTt5Z_cE<%SMaYyZqzc{#*Eb7*qj zFl}##Xcm=br!tnWCCQaTvX2eM`i70xdYU58+U{*sy9FsnjBiZ=ZM7vw=MVG(c9{d; zZo*UVZuMNSwz3M@eBI1`fjRawavXjC<6)#@E3LJL{z=)x^TigN18xkdh zW)dV37|Uz{ZO&E2TCjIF&U|JR*Q5p(;luM(t$3k_z0%)fp1kwIrx$NDR<2xW?yh>Pi=!sbM(W0Nh|`n6PPY+DU_ zK=1HbyPAd+8l$zFFW1by_@-B9cq*o_|pLk0#JM z9L)9aE?-enH5hXt7|WFm*;iSHz;iLO4KK4{D1K5^BxoL2bwx>OaNe!sN}9lcXx z-*+{64f}AH|1Jss6x3#x8@dm7mBf~^{f|a}Lb|Ez-w(L6aEJjn^M(Y~f<@mT zMyEZhu9Iwvv^iQ*M0?K>nWrhW`~bK}U5o4te|R{|uX8K`*xs4ABdvnEwC4 zJO8Wg|G$o`YWj?B&GX`7mOl$g8W(iXaZGYuAK~2Yuwqv{Y=*8K(bzuF{vy8TeQ(Ht zkKWXk6wt7@mh0&8h7A@M7kvVK&VwMPCKlj>&Lc2{xc2`3XA9GHe6Ua1Cqqra`~aze zswHhCE*cY}<08}XcOmab>}sTSbs&7LUL8?MG(5DB0xC;|a|^6HU|TqMzd}UT#Gh?^ynyXw>Ek6Wx6Et01f>$U#h-Tc9-B)nMrvpDEYq5TRw5j@0C z{PdXJq9aPN^S#^0JXJP23$&_7F~JbU$xj-!dqV~XY|xiv#a^`16^aM`Xl2%6fFa)= z6f;Pj!nmW(TQ*}%eXRAgZ)nlmLO*ash$kj`6)PHbM7xLIeerU^z_&x6g96n3eDGZ< zQbB{P-ENhQx>mU1RJmi#01bGrK7zKT$hz$45lb@3oqmG}m1%TnQglFb`Ch8&UIp3L z!>bMf9^uv;lNf*xUjg8e$VR2N+t@z^p0lB5bdrZYX>*`O0-yn!KeoC@K6?&dE*A)l zwoP;FBmn?gG0?*Zk(P&(0UU>wE&09mS=DgWhIaGwjj!}mOVjgny>be(0(dUv#u1TbX;uEVUfE|Kg#;M+3BC^EL!N{2u zTdifavze)I1>>)*kq;*aG}omV!8tkrDHOv|P5bbosLA70GAJ<&LRO$!I!Z(pFk!{NpILojqT2-5**L;Bivne_QsyoU}2OAPCmACmeG010LvDiO&~~hxSARt zav(RjOZr1dG%P-O;?4W-9S%4;La74<20lTJ%0^BMIie>_COFOw8N5FIT<5OR_81@~ zz}A|DAc2+<;tU1o^Tlns_#ViXn^L(SEat$M*g1kr!JV@264AnM=>j>wkvQ@yQf1w+ zoj-@N5_Wp^WSzsOhNe$aRWniN9JCH4p*2QUZiKHb)|e--JS_Ai4<}EpIUahwua6;O z-bxQ*v7OYi(ZMWPtzYSo-B(O_lfAmvZn1f8h13Bnq@mZxVg#!$_f%5yV}Fir6M~)Y zN0FzlW!t+JpFFqQOn?oej>C~pHq+Sbu7*l}pE|TH4U12mc;S&a{HXLWVRmShLP^fV zx19yi1+AwAiAAZ($bP=KY{NGi!xdL2VY$pn+HQHWcntYP20eUHb3dCjZ8)5a=@E1! z@F&nW47re;DqS2Scv7gN5KXSi68SI_XKSv|Z;RR?YVhZ5_K3(>{Z?YRYsW`k$+Na#k&!3QEW=FDZQ5Rl-IgXE9ybC7}lVAJhX%X5pAR2oV z=J4T-tVJ={V3*90v?E=aSQ(#OMwmO-(n&9u!thUAMMl4-PB}d_@YCPnmY>vJB;v!3 zNE6n7yr{JfpykNBM(4`t?gXvTMr2pYfG$Mk!qW`^WX%fyVVh=6D ztqgzN15rElwIn$4J&edyR%AhVz+{p2N15%^v=_j2!UIv2o;!ySu{Isg4v<6KEU5d{ z;-^J5GU!5DU!^N?njz47=SWP5ia8TpJ|ezf@k6Vt5PHc_g(7sxDQV8r=g{Y)D-+o6 zwQd>UG@Tfp7(5YuzE0QFC3luLf&38>@=HRU@M4*yn-LymhCl5IA~_XBrZZkhlx{@Y zk%7;=oJQXJ!NzsH)=_Vz7x5|yCwBb6(>Xg00lsd-XQ@ATp{$6)5gpChppee+eURZ> z1NHYq{JcwMb_1AJtV1t{t*30yg(aO%I?57? zpu~BKP;P9z3iHD{X&ecp5WOUqKj(}2(P2Fg{OLLSUPz9NQ%8#+#(|Kyuej@uTIM#Z z^;?kzIVd^iES6iaF@fpxa{W8z;;4ce5}3x|E3w6MXqmHK`POi>VM(bP9c%ixmFpkh6`CwMST?5ntPrxqH@<{q^aJYMr1tE(uZcu ze5dt*VY>}KMFd!D{q@zId~U9_KHWUQo$F}-;W8J0()T`|(l1GVaSkY(RyYaxsblgL z8$IefIUbt=saC)CVNzH8^)XiZ48mM znyR2gn>fTlv(_jaXk9~+vKnUMdpPRB6g9l}z<7VhShx!25IKUisM~*mfJdmj2%&nQ zCKc&nT|w)7Z>CDBnV{j3jFz-NeF$pKpQ>wOsHx6X2k^+El#kX>3pJG$_A#O8$((2O zT0=CXHT0T?P9OHCLD_9z%2IgU+m6Mk!N7f6OI4`>DBjJBq#;)=u$Z*FEf7TP*e zTZlGmR^!3=#fT3-iO~R-bm~L8Wpq-gC7u?2qi-KV*(lH5n=Fu-&o)-1oSd1P@H}I_mGljUFq(<{gaOlnkTfS3l%dgz$!OK7nr`C%agZZ=p~hqlJrLSPNe%1vq7#;d>87uR(1O8EQY5=IXkqruZNDt z)hAM}9oFFLUsBF|~0%S@t=o!7TJZ*zCTQ`zc2I(jIucys9UAE{< zs5ogd==9U`5bE-$2n@!$LHVQ061US=#nTvJ@*gZ-|FGTrED*Q7^i{x`N~c&Q`)%~N z`?Yt(g+B|w=k)31yH(|<-Hawy z$JBZDhhT?Q^9X(4(MKH{Jqt_jz&jJ?Jd&m|30A&8 zFfm`>N6{+%8a!moq?SNlZ~~|LX*wmws5t;0q|r$^u1be|(e`Eyr{1CKT8-QCm2t0M z&MuYi$s)V5iT9~*gD)vqd!P*IGNaAFXMsW4J~*iyO1~h@-`rzxoFD#m9A3Km7G3-*G|BJ zzV8;-`UQtqfD!w?yq>x%-kphu0>FXyDlfGHjV2N6n()lENdw=1Vx=$G98`5KsF)N?jCfEvG>|Pv_KcW zyo|VTPrng|32G;J3sM^}Hvx?ANEq&XlH4nx2x*o$T${&eRb3|G2>d9jaC7BN4NBZX z^^z^@EG=E_Za!L8lg36=qaV=B99%nAW9bXHy%4-(@MyOQ^dm<7kxUKZX|XlL)yg(xh&1IYmir-LTdA z(Wd+nuc6mz&Oml^yKj~4Q$p169}l(8<}^)l{o97k$EwpK-ov17Qg`Q^uIja<;4i^s z!7UZd$Yk(qbW*Ef0P<$TabmAN6q`x$R&+5pSrwwk>&Z%1c}eGoX;uFsOT?IuBO#qU zmxhsK{q+3A_jl^o^d3!|oBLI>?<@J-ET&|7kj=GhBGONK(gq?1opttq+v{-P%pp)p z7pBT0whLUGrgbGFCv!uMq)S(Ue8O~89^Y%==zV0r#WM@=f^d}7S@VP)=WHh`+?!A4 zyGznDzZE&+Stv!r1cGeZNNoXCH3QAyw=IW}9VXI7=)~`E@aRvhz8A888;6!ngK|oHKq=H5}pR?(v#WrO0%IR^wFH_Kfs|*(b^= z45urFfLayj*{42Gg7Z-Qrc{Z(WSu6~odfdW+@l%`xGr{7R8~Y2psyCkaI4Y?Qfk~uUR6$$@M=akMQbt8J*sLnxg9zfb0VH#1t|sM`k08y ze$JC)SOnR#MGZUq$X`ixc6WP)aQzk2Rnhs=4?{9`<_+fz*cK1n=Ojv&<^F0}JIxB? z#R$kN0$=j4X&kLDB;T(K)TY$o75)w6$ltzcT7t5sY5r#GA<1WT}6@%Kr&z z0$q=h11TO{6ePxYVuo}IU>B#Ao~ev(>N7_+Sm0SP#n61l@W(t~l4Uh-;?k;(p{(aC z!#XBO06ca%tS}v{WwmF}Qe79nBmIb978&vyj#gMM6uo!f7)eDZ$$45e{hJRY?PRPVz_02+>EVOd?ngBcb}^r z2R8IchVxmumH_yzc(U~epTQpea*rq5eP{4u#|y6wX-#c2)yZx(`jZnpZ4ucTS>CHe zEG<*sWbPhCg{skYiLm7J$FpIU23~lCIiYNSw&>NTEZx4b>6!xmw0Z{h|E}_TPaEa$Nw1nR~+oP;`Jof!IzNT zTusALL}4%4|YjfCO93{iwskG~gk$$diN@A52;=Db&#=#($l_B9V?Rox5C41rE-5CAgg*#k z@p&oZnre|BOkifdqx$E|FawNG&qGf?XMD7!sFS&-&XYN2=B+#f%JSja;ZwaXn&p|k zw|~O$@O5O|OS|7^AJ2$VOdr{n@soLA0Rfv)ySd$ zd6UF}X-GquDFst=*%6x|UZ)KK*2$=L`hX3FmdS05smpZNI|;Zx4_6VpJMWTRbiqZK zXZXsmup^JaTj*bP1HzolxlNA@@VF`)eb#HBmYqD1;exp8Msv$2Ci>j**@R~xm`UL0 zAk&2Hdkup`1bCK_{be%fz{TbB-U6QmFN9WStxP7;!UTLj3jcyEe~5KT%@6;5R#!` zTHD8X>)+Z<&3NcD|DN!XlA+P|>SzOn>hj<09nPfYocTg(=e|<8EKsXQZ$F+Vws9W& z(IM;Y4egfFd~|7u?Py@h2!2>i;R<*|V|RQ6)pkM@L*AotC2WGp<_s=<;unAJrp{J^A{F(@-sJO3_# zc1n1m<5XHA@4cqt%2Poxp2T{HQCqEG$5CAp|L>A@SKzCHrOh`j!K# z%X*4@zgT$hkZ+;+cG(^>@g!+Rq-KhKPJC2-Ixkd3g%+%$EElG+h-FWW5M;mwnoA?- z;OM+n`J++c`Jd1o&Nm4MF1%3%eVQ&5^ux$3J_0I&xlh2vZ`0}evNJo+v6Hb}!%%_dYjaS-+i*ED4=n=T965@ zqfwvi?uwG?VKy|c+peNv#){$`3)G(Mp~77?rVKeOdHBU5^uWyE)*SV97TOB@0)HAIWs=+Nel$mhigrJ0FlYw zfEUAbx?a}aagA2fW1IDTFTBiQiqV!|1XMZ?;-SldKKw6eL05L^gF@`lwH#drc-l~;DjvX&?&JxIFgpzg2rk1Si85)lW^=K#WJ41CwX&*xkc4jkU7Phw&8YmIwI&U8spwiq}{d0 zqzKy^QiR{kO9OAS$o>?uO6yN*oein9Tc_0qZP7u&+QV98bGw(F`I9e2=Dy}nuEbZd z`x<Vi7f&eq3z61|wmTM|d#3y&Atc+}46$ zY@xOAKm?~4QtM`nGk?dHxO>oHWKdz#c?W^6PrPDxxASy*My8Pvl88nzbE<{>$yrlJUlL)Fs#zxT^e0oyWZ%!*o=hCqMG&F-cg+|PTeatRxOV}Z z=*9x6FuOKTUVw}}zu_pgj1En>-2+l^^7@h3eKN~5a>_R>NRqOP=zZ0xxG%HGDq)+a zwEAW&c_Ccee4oyM0oEp&Q;4rCAYbO~=o5t2ae>V43vfWp?3Y4KGUPN_GcXQx$dk`S zE%DKuSgeL8D>&ecB|hvbA1)q>E*Pp2P3%in8>a5B2rH9srvy-mguO#1xQm&EJaH-C z`d3eTmHLFFJJ9ouhzV`lnlJ3nmjm%uYi*LYrtD`0S>KFG@0$eY$k&~M7!$Y*fclYvY})rpzN9p=f%ouv9S2Y58~X=lC#b5t|Ik!WGQG z>7)0yisaoR9(E)1p2D|6xqSTBmxozyb-29o)C^=wzn>qxl06FW$?%di zB%fS--=%Ojr9_#TQMh`L6k;?_CKRg-T_39d%dtNKZunG403Fb_mbz4r~B-@ zBs^z~pCnfzk#iX%`R@D|uHOnoP`@qKkBd19&IGduugr%mlg@~)-|}hkyW2;`)z%yY znKM+@lXvQgU7z72PeU4l$+U$(vsC)E&$Ks?r z?VCG3vd6;b&!;4oZzSE?;+`Y6=6$z-RPAcr>z%87=b`~ik1S57nL7*e1M79V!Bie@Ugik5>@wLr(bu zh!!ut4v7uDw}%cx4b=9i8-|wf7tX(F=yb$8;?*4dX$|OKJSxTeIDI$wKGEbNywN(P zV>AiQ9N-@`r@+FcI~r$P$%*cL=_74LiTHri->Q0&X?8up}19 zppD!Zio!MTd6ceTch`vpu1y5;cSRCmOI$k>Ydi01Nn805n6s`Oj9CIVbMbv zj%9Bky|U-ih;UYRY5nZotI$$AGhTb*n6Ub1lO;VitjF}{_YlbG7VRR90lZ<8gbTr$ zpbehyyeR_I;FSA1n3$V!Bt32bX!8tfEE?Jd@Id>eJ8)3=T(<6gwAni^4X7~ zi9YL_)j1q+UU%q)nF}L&S$S|}p&882^?P3yaLS{@QSL5o<&nakL?-1B?NulVXBEaj z<2bd?2i0L;j+MV2Ti-gK4j+vhH;4_wvouxLI}J`dx6+9=Ir!{s-cqjGEI|D25j`t9 zt03R)()PxRwe5kUevrj}4%7uQY35G}d391|K1V3-lA?`+8u3ES)*GNa5i!>=kJ zk1)*E#joxq7OxrcGxsIa6KkjX{Vd$>MitL|5#umy!PD&~+B9QeD160s=Nwsqd^6mL z<>GG&6~BY}oP6+PrG*c)oF?o0=KN|ksb zYnVE)l7>?WXn=+UqX4i91KFag5!Fcy`Vf^k=#*_E+dIPdQ$`UP6m@+m-mc%`$h(n#48u)42_K@>f&1XSti2*M zY{8WRKI4qxKfFpGpt1PnsUDc|7U(@iF~lvjFac%lOqHM4xl1vjtBw1jGA{bF=hm== z)LcU7dq?IkxHbS_Cr$%_QQISr>pgE(q~ngF>GQ2fJ}lr;U1}^$vPK$bkyIGUgukV3 zjPZ*R?C^|Sp*&V-jj9S>c)s^c3@UtCAi4-eDE z2~k}0QvkqBWXB8)A*u$9#IPJ*GzHDUFUKx@HN$oHoty|>j3G9z2}gnEOG8`84pEQZ zFQUJNlC)JY00pUU4S|+2f#F#I+P3LmaVLT#=)7)K#)~S^f&+PT2C{i+~2YA z@Ym1S7Aa?pO$GK*ug>W_8E|H{)u=-v< zzO?CS>Db*+yW+H*GS5^sLCw!?hF$ogyJ6IdH~+Ov1N7AXzv+kipD{R|NA$g9T;WTv U>;pC?G*7^5IW^fTs9DH=1BkI;0{{R3 diff --git a/src/assets/icon/u524.png b/src/assets/icon/u524.png deleted file mode 100644 index aa6e60891301ce4ca19058dbe2817672d961c07b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9527 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 XM;3C0;Wu1=e`QjVd%D<@HVgSb%9n1r diff --git a/src/assets/icon/u582.png b/src/assets/icon/u582.png deleted file mode 100644 index f1ac8ec518f526fa25fd8aad3aa1aa930b132f4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1635 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 diff --git a/src/assets/icon/whb.png b/src/assets/icon/whb.png deleted file mode 100644 index b99af1646eb318f621651e8446c923779cc52712..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6207 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 O&itmeag(7(;(q~Hq!xMr diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue index e5fdd52..ce9e841 100644 --- a/src/components/Breadcrumb/index.vue +++ b/src/components/Breadcrumb/index.vue @@ -1,5 +1,5 @@