From e429ad59fff4bf7c231d9e4e70bb184089c01e53 Mon Sep 17 00:00:00 2001
From: wang-liang0615 <53748875+wang-liang0615@users.noreply.github.com>
Date: Tue, 2 Jan 2024 17:53:07 +0800
Subject: [PATCH] feat(ui):i18n (#347)
* feat(acl-ui):i18n
* feat(base-ui):i18n
* feat(cmdb-ui):i18n
---
cmdb-ui/src/App.vue | 20 +-
.../components/CMDBFilterComp/constants.js | 56 +-
.../components/CMDBFilterComp/expression.vue | 625 ++--
.../src/components/CMDBFilterComp/index.vue | 586 ++--
.../components/CustomIconSelect/constants.js | 10 +-
.../src/components/CustomIconSelect/index.vue | 37 +-
.../src/components/EmployeeTransfer/index.vue | 39 +-
cmdb-ui/src/components/Menu/menu.js | 7 +-
cmdb-ui/src/components/OpsTable/index.vue | 6 +-
cmdb-ui/src/components/RoleTransfer/index.vue | 6 +-
cmdb-ui/src/components/tools/UserMenu.vue | 39 +-
cmdb-ui/src/core/use.js | 8 +-
cmdb-ui/src/guard.js | 3 +-
cmdb-ui/src/lang/en.js | 140 +
cmdb-ui/src/lang/index.js | 18 +
cmdb-ui/src/lang/zh.js | 140 +
cmdb-ui/src/main.js | 2 +
cmdb-ui/src/modules/acl/lang/en.js | 125 +
cmdb-ui/src/modules/acl/lang/zh.js | 125 +
cmdb-ui/src/modules/acl/router/index.js | 20 +-
cmdb-ui/src/modules/acl/views/apps.vue | 8 +-
cmdb-ui/src/modules/acl/views/history.vue | 10 +-
.../src/modules/acl/views/module/appForm.vue | 27 +-
.../src/modules/acl/views/module/pager.vue | 4 +-
.../acl/views/module/permCollectForm.vue | 88 +-
.../acl/views/module/permissionForm.vue | 37 +-
.../views/module/permissionHistoryTable.vue | 114 +-
.../acl/views/module/resourceBatchPerm.vue | 44 +-
.../modules/acl/views/module/resourceForm.vue | 35 +-
.../acl/views/module/resourceGroupMember.vue | 2 +-
.../acl/views/module/resourceGroupModal.vue | 6 +-
.../acl/views/module/resourceHistoryTable.vue | 100 +-
.../acl/views/module/resourcePermForm.vue | 84 +-
.../views/module/resourcePermManageForm.vue | 52 +-
.../acl/views/module/resourceTypeForm.vue | 31 +-
.../views/module/resourceTypeHistoryTable.vue | 98 +-
.../acl/views/module/resourceUserForm.vue | 112 +-
.../src/modules/acl/views/module/roleForm.vue | 46 +-
.../acl/views/module/roleHistoryTable.vue | 82 +-
.../modules/acl/views/module/searchForm.vue | 13 +-
.../modules/acl/views/module/triggerForm.vue | 36 +-
.../acl/views/module/triggerHistoryTable.vue | 122 +-
.../acl/views/module/triggerPattern.vue | 10 +-
.../src/modules/acl/views/module/userForm.vue | 56 +-
.../acl/views/module/usersUnderRoleForm.vue | 26 +-
.../acl/views/operation_history/index.vue | 10 +-
.../modules/permissionTable.vue | 46 +-
.../modules/resourceHistoryTable.vue | 118 +-
.../modules/resourceTypeHistoryTable.vue | 130 +-
.../modules/roleHistoryTable.vue | 84 +-
.../modules/triggerHistoryTable.vue | 145 +-
.../src/modules/acl/views/resource_types.vue | 53 +-
cmdb-ui/src/modules/acl/views/resources.vue | 73 +-
cmdb-ui/src/modules/acl/views/roles.vue | 92 +-
cmdb-ui/src/modules/acl/views/secretKey.vue | 12 +-
cmdb-ui/src/modules/acl/views/trigger.vue | 77 +-
cmdb-ui/src/modules/acl/views/users.vue | 400 +--
.../modules/cmdb/assets/dashboard_empty.png | Bin 87434 -> 30278 bytes
.../modules/cmdb/assets/preference_card.png | Bin 9258 -> 146181 bytes
.../cmdb/components/JsonEditor/jsonEditor.vue | 2 +-
.../components/attributesTransfer/index.vue | 27 +-
.../batchDownload/batchDownload.vue | 76 +-
.../cmdb/components/cmdbGrant/ciTypeGrant.vue | 18 +-
.../cmdb/components/cmdbGrant/constants.js | 24 +-
.../cmdb/components/cmdbGrant/grantComp.vue | 14 +-
.../cmdb/components/cmdbGrant/grantModal.vue | 4 +-
.../components/cmdbGrant/readGrantModal.vue | 20 +-
.../cmdbGrant/relationViewGrant.vue | 8 +-
.../cmdbGrant/typeRelationGrant.vue | 8 +-
.../cmdb/components/colorPicker/index.vue | 2 +-
.../cmdb/components/httpSnmpAD/index.vue | 40 +-
.../cmdb/components/noticeContent/index.vue | 398 +--
.../preferenceSearch/preferenceSearch.vue | 8 +-
.../cmdb/components/searchForm/SearchForm.vue | 20 +-
.../subscribeSetting/subscribeSetting.vue | 26 +-
.../cmdb/components/webhook/authorization.vue | 288 +-
.../cmdb/components/webhook/header.vue | 202 +-
.../modules/cmdb/components/webhook/index.vue | 294 +-
.../cmdb/components/webhook/paramaters.vue | 200 +-
cmdb-ui/src/modules/cmdb/lang/en.js | 483 +++
cmdb-ui/src/modules/cmdb/lang/zh.js | 482 +++
cmdb-ui/src/modules/cmdb/router/index.js | 42 +-
cmdb-ui/src/modules/cmdb/utils/const.js | 60 +-
.../src/modules/cmdb/views/batch/index.vue | 12 +-
.../cmdb/views/batch/modules/CiTypeChoice.vue | 14 +-
.../views/batch/modules/UploadFileForm.vue | 4 +-
.../cmdb/views/batch/modules/UploadResult.vue | 12 +-
cmdb-ui/src/modules/cmdb/views/ci/index.vue | 1981 +++++------
.../views/ci/modules/BatchUpdateRelation.vue | 2 +-
.../cmdb/views/ci/modules/CiDetail.vue | 686 ++--
.../views/ci/modules/CreateInstanceForm.vue | 774 ++---
.../cmdb/views/ci/modules/MetadataDrawer.vue | 453 +--
.../views/ci/modules/ciDetailAttrContent.vue | 636 ++--
.../views/ci/modules/ciDetailRelation.vue | 16 +-
.../ci/modules/ciDetailRelationTopo/index.vue | 336 +-
.../ci/modules/ciDetailRelationTopo/node.js | 113 +-
.../ci/modules/createInstanceFormByGroup.vue | 16 +-
.../cmdb/views/ci/modules/editAttrsDrawer.vue | 15 +-
.../views/ci/modules/editAttrsPopover.vue | 4 +-
.../modules/cmdb/views/ci_types/adModal.vue | 8 +-
.../modules/cmdb/views/ci_types/attrAD.vue | 12 +-
.../cmdb/views/ci_types/attrADTabpane.vue | 794 ++---
.../cmdb/views/ci_types/attributeCard.vue | 560 +--
.../cmdb/views/ci_types/attributeEditForm.vue | 1432 ++++----
.../cmdb/views/ci_types/attributeStore.vue | 10 +-
.../cmdb/views/ci_types/attributesTable.vue | 1138 +++----
.../cmdb/views/ci_types/ceateNewAttribute.vue | 1116 +++---
.../cmdb/views/ci_types/ciTypedetail.vue | 12 +-
.../cmdb/views/ci_types/computedArea.vue | 180 +-
.../src/modules/cmdb/views/ci_types/index.vue | 1892 ++++++-----
.../views/ci_types/newCiTypeAttrModal.vue | 16 +-
.../cmdb/views/ci_types/preValueArea.vue | 844 ++---
.../cmdb/views/ci_types/preValueTag.vue | 17 +-
.../cmdb/views/ci_types/relationAD.vue | 20 +-
.../cmdb/views/ci_types/relationTable.vue | 69 +-
.../cmdb/views/ci_types/triggerForm.vue | 1327 ++++----
.../cmdb/views/ci_types/triggerTable.vue | 298 +-
.../cmdb/views/ci_types/uniqueConstraint.vue | 24 +-
.../cmdb/views/custom_dashboard/chart.vue | 2 +-
.../cmdb/views/custom_dashboard/chartForm.vue | 1564 ++++-----
.../views/custom_dashboard/chartOptions.js | 12 +-
.../cmdb/views/custom_dashboard/constant.js | 10 +-
.../views/custom_dashboard/customLayout.vue | 8 +-
.../cmdb/views/discovery/discoveryCard.vue | 4 +-
.../cmdb/views/discovery/editDrawer.vue | 642 ++--
.../modules/cmdb/views/discovery/index.vue | 35 +-
.../modules/cmdb/views/discoveryCI/index.vue | 48 +-
.../cmdb/views/model_relation/index.vue | 100 +-
.../modules/modelRelationTable.vue | 34 +-
.../cmdb/views/operation_history/index.vue | 86 +-
.../operation_history/modules/ciTable.vue | 828 +++--
.../views/operation_history/modules/pager.vue | 232 +-
.../operation_history/modules/relation.vue | 799 +++--
.../operation_history/modules/searchForm.vue | 386 +--
.../modules/triggerTable.vue | 246 +-
.../operation_history/modules/typeTable.vue | 962 +++---
.../modules/cmdb/views/preference/index.vue | 60 +-
.../cmdb/views/preference_relation/index.vue | 24 +-
.../modules/RelationViewForm.vue | 13 +-
.../cmdb/views/relation_type/index.vue | 19 +-
.../cmdb/views/relation_views/index.vue | 3027 +++++++++--------
.../relation_views/modules/AddTableModal.vue | 30 +-
.../relation_views/modules/ContextMenu.vue | 4 +-
.../cmdb/views/resource_search/index.vue | 1071 +++---
.../modules/cmdb/views/tree_views/index.vue | 2672 ++++++++-------
cmdb-ui/src/router/config.js | 19 +-
cmdb-ui/src/store/index.js | 5 +
cmdb-ui/src/views/setting/auth/cas.vue | 44 +-
cmdb-ui/src/views/setting/auth/common.vue | 6 +-
cmdb-ui/src/views/setting/auth/index.vue | 39 +-
cmdb-ui/src/views/setting/auth/ldap.vue | 34 +-
cmdb-ui/src/views/setting/auth/loginModal.vue | 60 +-
cmdb-ui/src/views/setting/auth/oauth2.vue | 44 +-
.../src/views/setting/companyInfo/index.vue | 763 ++---
.../setting/companyStructure/BatchModal.vue | 44 +-
.../setting/companyStructure/BatchUpload.vue | 95 +-
.../companyStructure/DepartmentModal.vue | 26 +-
.../companyStructure/EmployeeModal.vue | 589 ++--
.../views/setting/companyStructure/index.vue | 443 +--
.../views/setting/components/EditImage.vue | 21 +-
.../views/setting/components/SearchForm.vue | 2 +-
.../components/departmentTreeSelect.vue | 22 +-
.../setting/components/employeeTable.vue | 395 ++-
.../setting/components/employeeTreeSelect.vue | 43 +-
.../setting/components/relateEmployee.vue | 2 +-
.../components/settingFilterComp/constants.js | 20 +-
.../components/settingFilterComp/index.vue | 16 +-
cmdb-ui/src/views/setting/lang/en.js | 443 +++
cmdb-ui/src/views/setting/lang/zh.js | 442 +++
cmdb-ui/src/views/setting/notice/bot.vue | 228 +-
cmdb-ui/src/views/setting/notice/dingding.vue | 302 +-
.../src/views/setting/notice/email/index.less | 34 +-
.../src/views/setting/notice/email/index.vue | 66 +-
.../views/setting/notice/email/receive.vue | 392 +--
.../src/views/setting/notice/email/send.vue | 340 +-
cmdb-ui/src/views/setting/notice/feishu.vue | 262 +-
cmdb-ui/src/views/setting/notice/wx.vue | 287 +-
cmdb-ui/src/views/setting/person/index.vue | 830 ++---
178 files changed, 21927 insertions(+), 19433 deletions(-)
create mode 100644 cmdb-ui/src/lang/en.js
create mode 100644 cmdb-ui/src/lang/index.js
create mode 100644 cmdb-ui/src/lang/zh.js
create mode 100644 cmdb-ui/src/modules/acl/lang/en.js
create mode 100644 cmdb-ui/src/modules/acl/lang/zh.js
create mode 100644 cmdb-ui/src/modules/cmdb/lang/en.js
create mode 100644 cmdb-ui/src/modules/cmdb/lang/zh.js
create mode 100644 cmdb-ui/src/views/setting/lang/en.js
create mode 100644 cmdb-ui/src/views/setting/lang/zh.js
diff --git a/cmdb-ui/src/App.vue b/cmdb-ui/src/App.vue
index 21a0c08..2ee1de5 100644
--- a/cmdb-ui/src/App.vue
+++ b/cmdb-ui/src/App.vue
@@ -1,5 +1,5 @@
-
+
@@ -7,8 +7,9 @@
-
-
+
+
+
+
+
+
+
+
+
+
+ {{ node.label }}
+
+
+ {{ node.label }}
+
+
+ handleChangeExp(value, item, index)"
+ appendToBody
+ :zIndex="1050"
+ >
+
+
+
+ {{ node.label }}
+
+
+
+
+ ~
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cmdb-ui/src/components/CMDBFilterComp/index.vue b/cmdb-ui/src/components/CMDBFilterComp/index.vue
index 05f171f..acd28a9 100644
--- a/cmdb-ui/src/components/CMDBFilterComp/index.vue
+++ b/cmdb-ui/src/components/CMDBFilterComp/index.vue
@@ -1,290 +1,296 @@
-
-
-
-
- 条件过滤
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ {{ $t('cmdbFilterComp.conditionFilter') }}
+
+
+
+
+
+
+ {{ $t('confirm') }}
+ {{ $t('clear') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cmdb-ui/src/components/CustomIconSelect/constants.js b/cmdb-ui/src/components/CustomIconSelect/constants.js
index 587436f..cb49c52 100644
--- a/cmdb-ui/src/components/CustomIconSelect/constants.js
+++ b/cmdb-ui/src/components/CustomIconSelect/constants.js
@@ -1,8 +1,10 @@
-export const iconTypeList = [
+import i18n from '@/lang'
+
+export const iconTypeList = () => [
// { value: '0', label: '常用' },
- { value: '1', label: '线性' },
- { value: '2', label: '实底' },
- { value: '3', label: '多色' }
+ { value: '1', label: i18n.t('customIconSelect.outlined') },
+ { value: '2', label: i18n.t('customIconSelect.filled') },
+ { value: '3', label: i18n.t('customIconSelect.multicolor') }
]
export const commonIconList = ['changyong-ubuntu',
diff --git a/cmdb-ui/src/components/CustomIconSelect/index.vue b/cmdb-ui/src/components/CustomIconSelect/index.vue
index dceaa8f..b056614 100644
--- a/cmdb-ui/src/components/CustomIconSelect/index.vue
+++ b/cmdb-ui/src/components/CustomIconSelect/index.vue
@@ -16,7 +16,7 @@
{{ item.label }}
- 自定义
+ {{ this.$t('customIconSelect.custom') }}
- 添加
+ {{ $t('add') }}
@@ -55,11 +55,11 @@
@click="clickCustomIcon(icon)"
>
-
![]()
+
deleteIcon(e, icon)"
@cancel="
(e) => {
@@ -102,27 +102,27 @@
-
+
- 取消
- 确定
+ {{ $t('cancel') }}
+ {{ $t('confirm') }}
-
+
+
diff --git a/cmdb-ui/src/core/use.js b/cmdb-ui/src/core/use.js
index e91306e..283889a 100644
--- a/cmdb-ui/src/core/use.js
+++ b/cmdb-ui/src/core/use.js
@@ -38,11 +38,18 @@ import CardTitle from '@/components/CardTitle'
import ElementUI from 'element-ui'
import Treeselect from '@riophae/vue-treeselect'
import OpsTable from '@/components/OpsTable'
+import VueI18n from 'vue-i18n'
+import i18n from '@/lang'
Vue.config.productionTip = false
Vue.prototype.$bus = EventBus
+
+VXETable.setup({
+ i18n: (key, args) => i18n.t(key, args)
+})
Vue.use(VXETable)
VXETable.use(VXETablePluginExportXLSX)
+Vue.use(VueI18n)
Vue.config.productionTip = false
@@ -75,4 +82,3 @@ Vue.component('CustomRadio', CustomRadio)
Vue.component('CardTitle', CardTitle)
Vue.component('Treeselect', Treeselect)
Vue.component('OpsTable', OpsTable)
-
diff --git a/cmdb-ui/src/guard.js b/cmdb-ui/src/guard.js
index 4627b92..5a70c30 100644
--- a/cmdb-ui/src/guard.js
+++ b/cmdb-ui/src/guard.js
@@ -7,6 +7,7 @@ import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { setDocumentTitle, domTitle } from '@/utils/domUtil'
import { ACCESS_TOKEN } from './store/global/mutation-types'
+import i18n from '@/lang'
NProgress.configure({ showSpinner: false })
@@ -17,7 +18,7 @@ const whitePath = ['/user/login', '/user/logout', '/user/register', '/api/sso/lo
// 登录页面处理处理 是否使用单点登录
router.beforeEach(async (to, from, next) => {
NProgress.start() // start progress bar
- to.meta && (!!to.meta.title && setDocumentTitle(`${to.meta.title} - ${domTitle}`))
+ to.meta && (!!to.meta.title && setDocumentTitle(`${i18n.t(to.meta.title)} - ${domTitle}`))
const authed = store.state.authed
const auth_type = localStorage.getItem('ops_auth_type')
diff --git a/cmdb-ui/src/lang/en.js b/cmdb-ui/src/lang/en.js
new file mode 100644
index 0000000..41a9dc7
--- /dev/null
+++ b/cmdb-ui/src/lang/en.js
@@ -0,0 +1,140 @@
+import cmdb_en from '@/modules/cmdb/lang/en.js'
+import cs_en from '../views/setting/lang/en.js'
+import acl_en from '@/modules/acl/lang/en.js'
+
+export default {
+ screen: 'Big Screen',
+ dashboard: 'Dashboard',
+ admin: 'Admin',
+ user: 'User',
+ role: 'Role',
+ operation: 'Operation',
+ login: 'Login',
+ refresh: 'Refresh',
+ cancel: 'Cancel',
+ confirm: 'Confirm',
+ create: 'Create',
+ edit: 'Edit',
+ deleting: 'Deleting',
+ deletingTip: 'Deleting, total of {total}, {successNum} succeeded, {errorNum} failed',
+ grant: 'Grant',
+ login_at: 'Login At',
+ logout_at: 'Logout At',
+ createSuccess: 'Create Success',
+ editSuccess: 'edit Success',
+ warning: 'Warning',
+ export: 'Export',
+ placeholderSearch: 'Please Search',
+ success: 'Success',
+ fail: 'Fail',
+ browser: 'Browser',
+ status: 'Status',
+ type: 'Type',
+ description: 'Description',
+ new: 'New',
+ add: 'Add',
+ define: 'Define',
+ update: 'Update',
+ clear: 'Clear',
+ delete: 'Delete',
+ copy: 'Copy',
+ created_at: 'Created At',
+ updated_at: 'Updated At',
+ placeholder1: 'Please Input',
+ placeholder2: 'Please Select',
+ confirmDelete: 'Confirm delete?',
+ confirmDelete2: 'Confirm delete [{name}]?',
+ query: 'Query',
+ search: 'Search',
+ hide: 'Hide',
+ expand: 'Expand',
+ save: 'Save',
+ submit: 'Submit',
+ upload: 'Import',
+ download: 'Export',
+ name: 'Name',
+ alias: 'Alias',
+ desc: 'Description',
+ other: 'Other',
+ icon: 'Icon',
+ addSuccess: 'Added successfully',
+ uploadSuccess: 'Import successfully',
+ saveSuccess: 'Save successfully',
+ copySuccess: 'Copy successfully',
+ updateSuccess: 'Updated successfully',
+ deleteSuccess: 'Deleted successfully',
+ operateSuccess: 'The operation was successful',
+ noPermission: 'No Permission',
+ noData: 'No Data',
+ seconds: 'Seconds',
+ createdAt: 'Created At',
+ updatedAt: 'Updated At',
+ deletedAt: 'Deleted At',
+ required: 'required',
+ email: 'Email',
+ wechat: 'Wechat',
+ dingding: 'DingTalk',
+ feishu: 'Feishu',
+ bot: 'Robot',
+ checkAll: 'Select All',
+ loading: 'Loading...',
+ view: 'View',
+ reset: 'Reset',
+ yes: 'Yes',
+ no: 'No',
+ all: 'All',
+ selectRows: 'Selected: {rows} items',
+ itemsPerPage: '/page',
+ '星期一': 'Monday',
+ '星期二': 'Tuesday',
+ '星期三': 'Wednesday',
+ '星期四': 'Thursday',
+ '星期五': 'Friday',
+ '星期六': 'Saturday',
+ '星期日': 'Sunday',
+ hour: 'hour',
+ 'items/page': '{items} items/page',
+ max: 'Max',
+ min: 'Min',
+ visual: 'Visual',
+ pagination: {
+ total: '{range0}-{range1} of {total} items'
+ },
+ topMenu: {
+ personalCenter: 'Personal Center',
+ logout: 'logout',
+ },
+ cmdbFilterComp: {
+ conditionFilter: 'Conditional filtering',
+ and: 'and',
+ or: 'or',
+ is: 'equal',
+ '~is': 'not equal',
+ contain: 'contain',
+ '~contain': 'not contain',
+ start_with: 'start_with',
+ '~start_with': 'not start_with',
+ end_with: 'end_with',
+ '~end_with': 'not end_with',
+ '~value': 'null',
+ value: 'not null',
+ in: 'in',
+ '~in': 'not in',
+ range: 'range',
+ '~range': 'out of range',
+ compare: 'compare',
+ addHere: 'Add Here',
+ split: 'split by {separator}'
+ },
+ customIconSelect: {
+ outlined: 'Outlined',
+ filled: 'Filled',
+ multicolor: 'Multicolor',
+ custom: 'Custom',
+ preview: 'Preview',
+ sizeLimit: 'The image size cannot exceed 2MB!'
+ },
+ cmdb: cmdb_en,
+ cs: cs_en,
+ acl: acl_en,
+}
diff --git a/cmdb-ui/src/lang/index.js b/cmdb-ui/src/lang/index.js
new file mode 100644
index 0000000..d8ece0e
--- /dev/null
+++ b/cmdb-ui/src/lang/index.js
@@ -0,0 +1,18 @@
+import VueI18n from 'vue-i18n'
+import zh from './zh'
+import en from './en'
+import Vue from 'vue'
+import zhCN from 'vxe-table/lib/locale/lang/zh-CN'
+import enUS from 'vxe-table/lib/locale/lang/en-US'
+
+Vue.use(VueI18n)
+const i18n = new VueI18n({
+ locale: 'zh', // 初始化中文
+ messages: {
+ 'zh': { ...zh, ...zhCN },
+ 'en': { ...en, ...enUS },
+ },
+ silentTranslationWarn: true
+})
+
+export default i18n
diff --git a/cmdb-ui/src/lang/zh.js b/cmdb-ui/src/lang/zh.js
new file mode 100644
index 0000000..a474d03
--- /dev/null
+++ b/cmdb-ui/src/lang/zh.js
@@ -0,0 +1,140 @@
+import cmdb_zh from '@/modules/cmdb/lang/zh.js'
+import cs_zh from '../views/setting/lang/zh.js'
+import acl_zh from '@/modules/acl/lang/zh.js'
+
+export default {
+ screen: '大屏',
+ dashboard: '仪表盘',
+ admin: '管理员',
+ user: '用户',
+ role: '角色',
+ operation: '操作',
+ login: '登录',
+ refresh: '刷新',
+ cancel: '取消',
+ confirm: '确定',
+ create: '创建',
+ edit: '编辑',
+ deleting: '正在删除',
+ deletingTip: '正在删除,共{total}个,成功{successNum}个,失败{errorNum}个',
+ grant: '授权',
+ login_at: '登录时间',
+ logout_at: '登出时间',
+ createSuccess: '创建成功',
+ editSuccess: '修改成功',
+ warning: '警告',
+ export: '导出',
+ placeholderSearch: '请查找',
+ success: '成功',
+ fail: '失败',
+ browser: '浏览器',
+ status: '状态',
+ type: '类型',
+ description: '描述',
+ new: '新增',
+ add: '添加',
+ define: '定义',
+ update: '修改',
+ clear: '清空',
+ delete: '删除',
+ copy: '复制',
+ created_at: '创建日期',
+ updated_at: '更新日期',
+ placeholder1: '请输入',
+ placeholder2: '请选择',
+ confirmDelete: '确认删除?',
+ confirmDelete2: '确认删除【{name}】?',
+ query: '查询',
+ search: '搜索',
+ hide: '隐藏',
+ expand: '展开',
+ save: '保存',
+ submit: '提交',
+ upload: '导入',
+ download: '导出',
+ name: '名称',
+ alias: '别名',
+ desc: '描述',
+ other: '其他',
+ icon: '图标',
+ addSuccess: '新增成功',
+ uploadSuccess: '导入成功',
+ saveSuccess: '保存成功',
+ copySuccess: '复制成功',
+ updateSuccess: '更新成功',
+ deleteSuccess: '删除成功',
+ operateSuccess: '操作成功',
+ noPermission: '权限不足',
+ noData: '暂无数据',
+ seconds: '秒',
+ createdAt: '创建时间',
+ updatedAt: '更新时间',
+ deletedAt: '删除时间',
+ required: '必须',
+ email: '邮件',
+ wechat: '企业微信',
+ dingding: '钉钉',
+ feishu: '飞书',
+ bot: '机器人',
+ checkAll: '全选',
+ loading: '加载中...',
+ view: '查看',
+ reset: '重置',
+ yes: '是',
+ no: '否',
+ all: '全部',
+ selectRows: '选取:{rows} 项',
+ itemsPerPage: '/页',
+ '星期一': '星期一',
+ '星期二': '星期二',
+ '星期三': '星期三',
+ '星期四': '星期四',
+ '星期五': '星期五',
+ '星期六': '星期六',
+ '星期日': '星期日',
+ hour: '小时',
+ 'items/page': '{items} 条/页',
+ max: '最大值',
+ min: '最小值',
+ visual: '虚拟',
+ pagination: {
+ total: '当前展示 {range0}-{range1} 条数据, 共 {total} 条'
+ },
+ topMenu: {
+ personalCenter: '个人中心',
+ logout: '退出登录',
+ },
+ cmdbFilterComp: {
+ conditionFilter: '条件过滤',
+ and: '与',
+ or: '或',
+ is: '等于',
+ '~is': '不等于',
+ contain: '包含',
+ '~contain': '不包含',
+ start_with: '以...开始',
+ '~start_with': '不以...开始',
+ end_with: '以...结束',
+ '~end_with': '不以...结束',
+ '~value': '为空',
+ value: '不为空',
+ in: 'in查询',
+ '~in': '非in查询',
+ range: '范围',
+ '~range': '范围外',
+ compare: '比较',
+ addHere: '在此处添加',
+ split: '以 {separator} 分隔'
+ },
+ customIconSelect: {
+ outlined: '线框',
+ filled: '实底',
+ multicolor: '多色',
+ custom: '自定义',
+ preview: '预览',
+ sizeLimit: '图片大小不可超过2MB!'
+ },
+ cmdb: cmdb_zh,
+ cs: cs_zh,
+ acl: acl_zh,
+}
diff --git a/cmdb-ui/src/main.js b/cmdb-ui/src/main.js
index 0413916..aa7bc8a 100644
--- a/cmdb-ui/src/main.js
+++ b/cmdb-ui/src/main.js
@@ -10,6 +10,7 @@ import './guard' // guard permission control
import './utils/filter' // global filter
import Setting from './config/setting'
import { Icon } from 'ant-design-vue'
+import i18n from './lang'
import iconFont from '../public/iconfont/iconfont'
@@ -22,6 +23,7 @@ async function start() {
const _vue = new Vue({
router,
store,
+ i18n,
created: bootstrap,
render: h => h(App)
}).$mount('#app')
diff --git a/cmdb-ui/src/modules/acl/lang/en.js b/cmdb-ui/src/modules/acl/lang/en.js
new file mode 100644
index 0000000..ddde5a8
--- /dev/null
+++ b/cmdb-ui/src/modules/acl/lang/en.js
@@ -0,0 +1,125 @@
+const acl_en = {
+ date: 'Date',
+ operator: 'Operator',
+ resource: 'Resource',
+ resourceType: 'Resource Type',
+ addResourceType: 'Add Resource Type',
+ app: 'App',
+ operateTime: 'Operate Time',
+ permission: 'Permission',
+ permission_placeholder: 'please select permission',
+ permissionList: 'Permission List',
+ summaryPermissions: 'Summary of permissions',
+ source: 'Source',
+ username: 'Username',
+ username_placeholder: 'please input username',
+ userList: 'User List',
+ groupUser: 'Group User',
+ addUser: 'Add User',
+ subordinateUsers: 'Subordinate Users',
+ nickname: 'Nickname',
+ nickname_placeholder: 'please input nickname',
+ password: 'Password',
+ password_placeholder: 'please input password',
+ department: 'Department',
+ group: 'Group',
+ email: 'Email',
+ email_placeholder: 'please input email',
+ mobile: 'Mobile',
+ isBlock: 'Is Block',
+ block: 'Block',
+ joined_at: 'Joined At',
+ role: 'Role',
+ role_placeholder1: 'please input role',
+ role_placeholder2: 'please select role',
+ role_placeholder3: 'please select a role name, multiple choices are allowed',
+ allRole: 'All Roles',
+ visualRole: 'Virtual Role',
+ addVisualRole: 'Add Virtual Role',
+ inheritedFrom: 'Inherited from',
+ heir: 'Inherit Roles',
+ permissionChange: 'Permissions',
+ roleChange: 'Roles',
+ resourceChange: 'Resources',
+ resourceTypeChange: 'Resource Type',
+ trigger: 'Triggers',
+ triggerNameInput: 'Please enter trigger name',
+ triggerChange: 'Triggers',
+ roleManage: 'Roles',
+ userManage: 'Users',
+ appManage: 'Applications',
+ resourceManage: 'Resources',
+ history: 'Audits',
+ userSecret: 'Secrets',
+ none: 'none',
+ danger: 'Dangerous',
+ confirmDeleteApp: 'Are you sure you want to delete this app?',
+ revoke: 'Revoke',
+ convenient: 'Quick Grant',
+ group2: 'Group',
+ groupName: 'Group Name',
+ resourceName: 'Resource Name',
+ creator: 'Creator',
+ member: 'Members',
+ viewAuth: 'view Auth',
+ addTypeTips: 'There is no type information yet, please add the resource type first!',
+ addResource: 'Add Resource',
+ resourceList: 'Resource List',
+ confirmResetSecret: 'Are you sure you want to reset the user secrets?',
+ addTrigger: 'Add Trigger',
+ deleteTrigger: 'Delete Trigger',
+ applyTrigger: 'Apply Trigger',
+ cancelTrigger: 'Cancel Trigger',
+ enable: 'Enable',
+ disable: 'Disable',
+ viewMatchResult: 'View regular matching results',
+ confirmDeleteTrigger: 'Are you sure you want to delete this trigger?',
+ ruleApply: 'Apply',
+ triggerTip1: 'Are you sure you want to apply this trigger?',
+ triggerTip2: 'Cancel applying this trigger?',
+ appNameInput: 'Please enter an application name',
+ descInput: 'Please enter a description',
+ addApp: 'Add',
+ updateApp: 'Update',
+ cancel: 'Cancel',
+ typeName: 'Name',
+ typeNameInput: 'Please enter a type name',
+ resourceNameInput: 'Please enter resource name',
+ pressEnter: 'Press Enter to confirm filtering',
+ groupMember: 'Group Members:',
+ isGroup: 'Group?',
+ errorTips: 'Error message',
+ roleList: 'Role List',
+ virtual: 'Virtual',
+ resourceBatchTips: 'Please enter the resource name, separated by newlines',
+ memberManage: 'Members: ',
+ newResource: 'New Resource: ',
+ deleteResource: 'Delete Resource: ',
+ deleteResourceType: 'Delete Resource Type: ',
+ noChange: 'No change',
+ batchOperate: 'Batch Operations',
+ batchGrant: 'Batch Grant',
+ batchRevoke: 'Batch Revoke',
+ editPerm: 'Add authorization: ',
+ permInput: 'Please enter permission name',
+ resourceTypeName: 'Resource Type Name',
+ selectedParents: 'Optionally inherit roles',
+ isAppAdmin: 'is app admin',
+ addRole: 'Add Role',
+ roleRelation: 'Role Relation',
+ roleRelationAdd: 'Add Role Relation',
+ roleRelationDelete: 'Delete Role Relation',
+ role2: 'Role',
+ admin: 'Admin',
+ involvingRP: 'Involving resources and permissions',
+ startAt: 'Start Time',
+ endAt: 'End Time',
+ triggerTips1: 'Priority regular pattern (secondary wildcard)',
+ pleaseSelectType: 'Please select resource type',
+ apply: 'Apply',
+ mobileTips: 'Please enter the correct phone number',
+ remove: 'Remove',
+ deleteUserConfirm: 'Are you sure you want to remove this user?',
+ copyResource: 'Copy resource name'
+}
+export default acl_en
diff --git a/cmdb-ui/src/modules/acl/lang/zh.js b/cmdb-ui/src/modules/acl/lang/zh.js
new file mode 100644
index 0000000..626911f
--- /dev/null
+++ b/cmdb-ui/src/modules/acl/lang/zh.js
@@ -0,0 +1,125 @@
+const acl_zh = {
+ date: '日期',
+ operator: '操作员',
+ resource: '资源',
+ resourceType: '资源类型',
+ addResourceType: '新增资源类型',
+ app: '应用',
+ operateTime: '操作时间',
+ permission: '权限',
+ permission_placeholder: '请选择权限',
+ permissionList: '权限列表',
+ summaryPermissions: '权限汇总',
+ source: '来源',
+ username: '用户名',
+ username_placeholder: '请输入用户名',
+ userList: '用户列表',
+ groupUser: '组用户',
+ addUser: '新增用户',
+ subordinateUsers: '下属用户',
+ nickname: '中文名',
+ nickname_placeholder: '请输入中文名',
+ password: '密码',
+ password_placeholder: '请输入密码',
+ department: '部门',
+ group: '小组',
+ email: '邮箱',
+ email_placeholder: '请输入邮箱',
+ mobile: '手机号',
+ isBlock: '是否锁定',
+ block: '锁定',
+ joined_at: '加入时间',
+ role: '角色名',
+ role_placeholder1: '请输入角色名',
+ role_placeholder2: '请选择角色名称',
+ role_placeholder3: '请选择角色名称,可多选',
+ allRole: '所有角色',
+ visualRole: '虚拟角色',
+ addVisualRole: '新增虚拟角色',
+ inheritedFrom: '继承自',
+ heir: '继承者',
+ permissionChange: '权限变更',
+ roleChange: '角色变更',
+ resourceChange: '资源变更',
+ resourceTypeChange: '资源类型变更',
+ trigger: '触发器',
+ triggerNameInput: '请输入触发器名',
+ triggerChange: '触发器变更',
+ roleManage: '角色管理',
+ userManage: '用户管理',
+ appManage: '应用管理',
+ resourceManage: '资源管理',
+ history: '操作审计',
+ userSecret: '用户密钥',
+ none: '无',
+ danger: '危险操作',
+ confirmDeleteApp: '确定要删除该App吗?',
+ revoke: '权限回收',
+ convenient: '便捷授权',
+ group2: '组',
+ groupName: '资源组名',
+ resourceName: '资源名',
+ creator: '创建者',
+ member: '成员',
+ viewAuth: '查看授权',
+ addTypeTips: '暂无类型信息,请先添加资源类型!',
+ addResource: '新增资源',
+ resourceList: '资源列表',
+ confirmResetSecret: '确定重置用户密钥?',
+ addTrigger: '新增触发器',
+ deleteTrigger: '删除触发器',
+ applyTrigger: '应用触发器',
+ cancelTrigger: '取消触发器',
+ enable: '启用',
+ disable: '禁用',
+ viewMatchResult: '查看正则匹配结果',
+ confirmDeleteTrigger: '确认删除该触发器吗?',
+ ruleApply: '规则应用',
+ triggerTip1: '是否确定应用该触发器?',
+ triggerTip2: '是否取消应用该触发器?',
+ appNameInput: '请输入应用名称',
+ descInput: '请输入描述',
+ addApp: '创建应用',
+ updateApp: '更新应用',
+ cancel: '撤销',
+ typeName: '类型名',
+ typeNameInput: '请输入类型名',
+ resourceNameInput: '请输入资源名',
+ pressEnter: '按回车确认筛选',
+ groupMember: '组成员:',
+ isGroup: '是否组',
+ errorTips: '错误提示',
+ roleList: '角色列表',
+ virtual: '虚拟',
+ resourceBatchTips: '请输入资源名,换行分隔',
+ memberManage: '成员管理:',
+ newResource: '新建资源:',
+ deleteResource: '删除资源:',
+ deleteResourceType: '删除资源类型:',
+ noChange: '没有修改',
+ batchOperate: '批量操作',
+ batchGrant: '批量授权',
+ batchRevoke: '批量权限回收',
+ editPerm: '添加授权:',
+ permInput: '请输入权限名',
+ resourceTypeName: '资源类型名',
+ selectedParents: '可选择继承角色',
+ isAppAdmin: '是否应用管理员',
+ addRole: '新增角色',
+ roleRelation: '角色关系',
+ roleRelationAdd: '添加角色关系',
+ roleRelationDelete: '删除角色关系',
+ role2: '角色',
+ admin: '管理员',
+ involvingRP: '涉及资源及权限',
+ startAt: '开始时间',
+ endAt: '结束时间',
+ triggerTips1: '优先正则模式(次通配符)',
+ pleaseSelectType: '请选择资源类型',
+ apply: '应用',
+ mobileTips: '请输入正确的手机号码',
+ remove: '移除',
+ deleteUserConfirm: '是否确定要移除该用户',
+ copyResource: '复制资源名'
+}
+export default acl_zh
diff --git a/cmdb-ui/src/modules/acl/router/index.js b/cmdb-ui/src/modules/acl/router/index.js
index c047a16..7e125ce 100644
--- a/cmdb-ui/src/modules/acl/router/index.js
+++ b/cmdb-ui/src/modules/acl/router/index.js
@@ -12,35 +12,35 @@ const genAppRoute = ({ name }) => {
name: `${name}_roles_acl`,
hideChildrenInMenu: true,
component: () => import('../views/roles'),
- meta: { title: '角色管理', icon: 'team', keepAlive: true }
+ meta: { title: 'acl.roleManage', icon: 'team', keepAlive: true }
},
{
path: `/acl/${name}/resources`,
name: `${name}_resources_acl`,
hideChildrenInMenu: true,
component: () => import('../views/resources'),
- meta: { title: '资源管理', icon: 'credit-card', keepAlive: false }
+ meta: { title: 'acl.resourceManage', icon: 'credit-card', keepAlive: false }
},
{
path: `/acl/${name}/resource_types`,
name: `${name}_resource_types_acl`,
hideChildrenInMenu: true,
component: () => import('../views/resource_types'),
- meta: { title: '资源类型', icon: 'file-text', keepAlive: true }
+ meta: { title: 'acl.resourceType', icon: 'file-text', keepAlive: true }
},
{
path: `/acl/${name}/trigger`,
name: `${name}_trigger_acl`,
hideChildrenInMenu: true,
component: () => import('../views/trigger'),
- meta: { title: '触发器', icon: 'clock-circle', keepAlive: true }
+ meta: { title: 'acl.trigger', icon: 'clock-circle', keepAlive: true }
},
{
path: `/acl/${name}/history`,
name: `${name}_history_acl`,
hideChildrenInMenu: true,
component: () => import('../views/history'),
- meta: { title: '操作审计', icon: 'search', keepAlive: false }
+ meta: { title: 'acl.history', icon: 'search', keepAlive: false }
}
]
}
@@ -59,31 +59,31 @@ const genAclRoutes = async () => {
path: `/acl/secret_key`,
name: 'acl_secret_key',
component: () => import('../views/secretKey'),
- meta: { title: '用户密钥', icon: 'key' }
+ meta: { title: 'acl.userSecret', icon: 'key' }
},
{
path: `/acl/operate_history`,
name: 'acl_operate_history',
component: () => import('../views/operation_history/index.vue'),
- meta: { title: '操作审计', icon: 'search', permission: ['acl_admin'] },
+ meta: { title: 'acl.history', icon: 'search', permission: ['acl_admin'] }
},
{
path: `/acl/user`,
name: 'acl_user',
component: () => import('../views/users'),
- meta: { title: '用户管理', icon: 'user', permission: ['acl_admin'] }
+ meta: { title: 'acl.userManage', icon: 'user', permission: ['acl_admin'] }
},
{
path: `/acl/roles`,
name: `acl_roles`,
component: () => import('../views/roles'),
- meta: { title: '角色管理', icon: 'team', keepAlive: true, permission: ['acl_admin'] }
+ meta: { title: 'acl.roleManage', icon: 'team', keepAlive: true, permission: ['acl_admin'] }
},
{
path: `/acl/apps`,
name: 'acl_apps',
component: () => import('../views/apps'),
- meta: { title: '应用管理', icon: 'appstore', permission: ['acl_admin'] }
+ meta: { title: 'acl.appManage', icon: 'appstore', permission: ['acl_admin'] }
}
]
}
diff --git a/cmdb-ui/src/modules/acl/views/apps.vue b/cmdb-ui/src/modules/acl/views/apps.vue
index b6f7b34..ff7cf89 100644
--- a/cmdb-ui/src/modules/acl/views/apps.vue
+++ b/cmdb-ui/src/modules/acl/views/apps.vue
@@ -11,7 +11,7 @@
:xs="24">
- {{ app.description || '无' }}
+ {{ app.description || $t('none') }}
{{ app.name[0].toUpperCase() }}
@@ -65,11 +65,11 @@ export default {
handleDeleteApp(app) {
const that = this
this.$confirm({
- title: '危险操作',
- content: '确定要删除该App吗?',
+ title: that.$t('danger'),
+ content: that.$t('confirmDeleteApp'),
onOk() {
deleteApp(app.id).then((res) => {
- that.$message.success(`删除成功:${app.name}`)
+ that.$message.success(that.$t('deleteSuccess'))
that.loadApps()
})
},
diff --git a/cmdb-ui/src/modules/acl/views/history.vue b/cmdb-ui/src/modules/acl/views/history.vue
index 5c047a9..be77b2e 100644
--- a/cmdb-ui/src/modules/acl/views/history.vue
+++ b/cmdb-ui/src/modules/acl/views/history.vue
@@ -1,7 +1,7 @@
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
+
@@ -19,8 +20,8 @@
-
取消
-
提交
+
{{ $t('cancel') }}
+
{{ $t('submit') }}
@@ -32,10 +33,14 @@ export default {
data() {
return {
visible: false,
- title: '创建应用',
mode: 'create',
}
},
+ computed: {
+ title() {
+ return this.$t('acl.addApp')
+ },
+ },
beforeCreate() {
this.form = this.$form.createForm(this)
},
@@ -43,7 +48,7 @@ export default {
handleEdit(ele) {
this.visible = true
if (ele) {
- this.title = '修改应用'
+ this.title = this.$t('updateApp')
this.mode = 'update'
console.log(ele)
const { name, description } = ele
@@ -55,7 +60,7 @@ export default {
})
} else {
this.mode = 'create'
- this.title = '创建应用'
+ this.title = this.$t('acl.addApp')
}
},
handleClose() {
@@ -69,11 +74,11 @@ export default {
}
if (values.id) {
await updateApp(values.id, values).then((res) => {
- this.$message.success('修改成功!')
+ this.$message.success(this.$t('updateSuccess'))
})
} else {
await addApp(values).then((res) => {
- this.$message.success('创建成功!')
+ this.$message.success(this.$t('addSuccess'))
})
}
this.handleClose()
diff --git a/cmdb-ui/src/modules/acl/views/module/pager.vue b/cmdb-ui/src/modules/acl/views/module/pager.vue
index 7f03b3a..e1d83d6 100644
--- a/cmdb-ui/src/modules/acl/views/module/pager.vue
+++ b/cmdb-ui/src/modules/acl/views/module/pager.vue
@@ -9,10 +9,10 @@
- {{ size }}条/页
+ {{ size }}{{ $t('itemsPerPage') }}
- {{ pageSize }}条/页
+ {{ pageSize }}{{ $t('itemsPerPage') }}
diff --git a/cmdb-ui/src/modules/acl/views/module/permCollectForm.vue b/cmdb-ui/src/modules/acl/views/module/permCollectForm.vue
index a7005e9..2bbaa64 100644
--- a/cmdb-ui/src/modules/acl/views/module/permCollectForm.vue
+++ b/cmdb-ui/src/modules/acl/views/module/permCollectForm.vue
@@ -1,6 +1,6 @@
-
+
{{ r }}
-
@@ -122,33 +77,6 @@ export default {
resourceTypes: [],
resourceTypePerms: [],
resources: [],
- // tableColumns: [
- // {
- // title: '资源名',
- // dataIndex: 'name',
- // sorter: false,
- // width: 150,
- // // scopedSlots: {
- // // customRender: 'nameSearchRender',
- // // filterDropdown: 'filterDropdown',
- // // filterIcon: 'filterIcon'
- // // },
- // // onFilter: (value, record) => record.name && record.name.toLowerCase().includes(value.toLowerCase()),
- // // onFilterDropdownVisibleChange: (visible) => {
- // // if (visible) {
- // // setTimeout(() => {
- // // this.searchInput.focus()
- // // }, 0)
- // // }
- // // }
- // },
- // {
- // title: '权限列表',
- // dataIndex: 'permissions',
- // width: 300,
- // scopedSlots: { customRender: 'permissions' },
- // },
- // ],
columnSearchText: {
name: '',
},
@@ -156,14 +84,14 @@ export default {
},
computed: {
...mapState({
- windowHeight: state => state.windowHeight,
+ windowHeight: (state) => state.windowHeight,
}),
displayApps() {
const roles = this.$store.state.user.roles.permissions
if (roles.includes('acl_admin')) {
return this.apps
}
- return this.apps.filter(item => {
+ return this.apps.filter((item) => {
if (roles.includes(`${item.name}_admin`)) {
return true
}
@@ -192,7 +120,7 @@ export default {
},
async loadRoles(_appId) {
const res = await searchRole({ app_id: _appId, page_size: 9999, is_all: true })
- this.roles = res.roles.filter(item => item.uid)
+ this.roles = res.roles.filter((item) => item.uid)
},
async handleSwitchApp(appId) {
this.currentAppId = appId
@@ -218,7 +146,7 @@ export default {
},
async loadResource() {
this.spinning = true
- const fil = this.roles.filter(role => role.uid === this.user.uid)
+ const fil = this.roles.filter((role) => role.uid === this.user.uid)
if (!fil[0]) {
return
}
diff --git a/cmdb-ui/src/modules/acl/views/module/permissionForm.vue b/cmdb-ui/src/modules/acl/views/module/permissionForm.vue
index 59eb25a..8768117 100644
--- a/cmdb-ui/src/modules/acl/views/module/permissionForm.vue
+++ b/cmdb-ui/src/modules/acl/views/module/permissionForm.vue
@@ -1,29 +1,33 @@
-
+
-
-
+
+
-
+
- 全选
+ {{ $t('checkAll') }}
@@ -35,8 +39,8 @@
-
取消
-
确定
+
{{ $t('cancel') }}
+
{{ $t('confirm') }}
@@ -49,7 +53,6 @@ export default {
name: 'ResourceForm',
data() {
return {
- drawerTitle: '新增资源类型',
drawerVisible: false,
formLayout: 'vertical',
perms: ['1'],
@@ -142,8 +145,8 @@ export default {
})
},
updateResourceType(id, data) {
- updateResourceTypeById(id, data).then(res => {
- this.$message.success(`更新成功`)
+ updateResourceTypeById(id, data).then((res) => {
+ this.$message.success(this.$t('updateSuccess'))
this.handleOk()
this.onClose()
})
@@ -151,18 +154,12 @@ export default {
},
createResourceType(data) {
- addResourceType(data).then(res => {
- this.$message.success(`添加成功`)
+ addResourceType(data).then((res) => {
+ this.$message.success(this.$t('addSuccess'))
this.handleOk()
this.onClose()
})
- // .catch(err => this.requestFailed(err))
},
-
- // requestFailed (err) {
- // const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试'
- // this.$message.error(`${msg}`)
- // }
},
watch: {},
props: {
diff --git a/cmdb-ui/src/modules/acl/views/module/permissionHistoryTable.vue b/cmdb-ui/src/modules/acl/views/module/permissionHistoryTable.vue
index 2e4e561..2828ece 100644
--- a/cmdb-ui/src/modules/acl/views/module/permissionHistoryTable.vue
+++ b/cmdb-ui/src/modules/acl/views/module/permissionHistoryTable.vue
@@ -21,22 +21,22 @@
:height="`${windowHeight - windowHeightMinus}px`"
:scroll-y="{ enabled: false }"
>
-
+
{{ row.deleted_at || row.updated_at || row.created_at }}
-
-
+
+
{{
operateTypeMap.get(row.operate_type)
}}
-
-
-
+
+
+
@@ -55,14 +55,14 @@
-
+
{{ perm }}
-
+
-
角色列表
+
{{ $t('acl.roleList') }}
@@ -23,37 +23,37 @@
-
+
-
+
-
权限回收
-
授权
+
{{ $t('acl.revoke') }}
+
{{ $t('grant') }}
@@ -98,12 +98,12 @@ export default {
this.loadRoles(Number(target))
},
loadRoles(isUserRole) {
- searchRole({ page_size: 9999, app_id: this.$route.name.split('_')[0], user_role: isUserRole }).then(res => {
+ searchRole({ page_size: 9999, app_id: this.$route.name.split('_')[0], user_role: isUserRole }).then((res) => {
this.allRoles = res.roles
})
},
loadPerm(resourceTypeId) {
- getResourceTypePerms(resourceTypeId).then(res => {
+ getResourceTypePerms(resourceTypeId).then((res) => {
this.allPerms = res
})
},
@@ -111,13 +111,13 @@ export default {
this.form.validateFields((err, values) => {
if (!err) {
console.log(values)
- values.roleIdList.forEach(roleId => {
+ values.roleIdList.forEach((roleId) => {
setBatchRoleResourceByResourceName(roleId, {
resource_names: values.resource_names.split('\n'),
perms: values.permName,
resource_type_id: this.resource_type_id,
- }).then(res => {
- this.$message.success('授权成功')
+ }).then((res) => {
+ this.$message.success(this.$t('operateSuccess'))
this.form.resetFields()
})
})
@@ -128,13 +128,13 @@ export default {
this.form.validateFields((err, values) => {
if (!err) {
console.log(values)
- values.roleIdList.forEach(roleId => {
+ values.roleIdList.forEach((roleId) => {
setBatchRoleResourceRevokeByResourceName(roleId, {
resource_names: values.resource_names.split('\n'),
perms: values.permName,
resource_type_id: this.resource_type_id,
- }).then(res => {
- this.$message.success('权限回收成功')
+ }).then((res) => {
+ this.$message.success(this.$t('operateSuccess'))
this.form.resetFields()
})
})
diff --git a/cmdb-ui/src/modules/acl/views/module/resourceForm.vue b/cmdb-ui/src/modules/acl/views/module/resourceForm.vue
index cb53d2e..f9a9e71 100644
--- a/cmdb-ui/src/modules/acl/views/module/resourceForm.vue
+++ b/cmdb-ui/src/modules/acl/views/module/resourceForm.vue
@@ -8,27 +8,27 @@
width="30%"
>
-
+
-
+
{{ type.name }}
-
+
- 是
+ {{ $t('yes') }}
- 否
+ {{ $t('no') }}
@@ -36,8 +36,8 @@
-
取消
-
确定
+
{{ $t('cancel') }}
+
{{ $t('confirm') }}
@@ -52,7 +52,6 @@ export default {
name: 'ResourceForm',
data() {
return {
- drawerTitle: '新增资源',
drawerVisible: false,
allTypes: [],
isGroup: false,
@@ -68,7 +67,11 @@ export default {
this.getAllResourceTypes()
},
- computed: {},
+ computed: {
+ drawerTitle() {
+ return this.$t('acl.addResource')
+ },
+ },
mounted() {},
methods: {
getAllResourceTypes() {
@@ -95,7 +98,7 @@ export default {
values.type_id = this.selectedTypeId
values.app_id = this.$route.name.split('_')[0]
if (values.id) {
- this.$message.error('错误提示')
+ this.$message.error(this.$t('acl.errorTips'))
} else {
this.createResource(values)
}
@@ -105,23 +108,17 @@ export default {
createResource(data) {
if (!this.isGroup) {
addResource(data).then((res) => {
- this.$message.success(`添加成功`)
+ this.$message.success(this.$t('addSuccess'))
this.onClose()
})
// .catch(err => this.requestFailed(err))
} else {
addResourceGroup(data).then((res) => {
- this.$message.success(`添加成功`)
+ this.$message.success(this.$t('addSuccess'))
this.onClose()
})
- // .catch(err => this.requestFailed(err))
}
},
-
- // requestFailed(err) {
- // const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试'
- // this.$message.error(`${msg}`)
- // },
},
watch: {
'$route.name': function(newValue, oldValue) {
diff --git a/cmdb-ui/src/modules/acl/views/module/resourceGroupMember.vue b/cmdb-ui/src/modules/acl/views/module/resourceGroupMember.vue
index 0cca1c3..5660a30 100644
--- a/cmdb-ui/src/modules/acl/views/module/resourceGroupMember.vue
+++ b/cmdb-ui/src/modules/acl/views/module/resourceGroupMember.vue
@@ -1,5 +1,5 @@
-
+