diff --git a/cmdb-ui/src/api/cmdb/CITypeAttr.js b/cmdb-ui/src/api/cmdb/CITypeAttr.js index f68cc88..596e47b 100644 --- a/cmdb-ui/src/api/cmdb/CITypeAttr.js +++ b/cmdb-ui/src/api/cmdb/CITypeAttr.js @@ -1,7 +1,7 @@ import { axios } from '@/utils/request' /** - * 获取 ci_type 的属性 + * Get CI Type attributes * @param CITypeName * @param parameter * @returns {AxiosPromise} @@ -16,7 +16,7 @@ export function getCITypeAttributesByName (CITypeName, parameter) { } /** - * 获取 ci_type 的属性 + * Get CI Type attributes * @param CITypeId * @param parameter * @returns {AxiosPromise} @@ -30,7 +30,7 @@ export function getCITypeAttributesById (CITypeId, parameter) { } /** - * 更新属性 + * update attribute * @param attrId * @param data * @returns {AxiosPromise} @@ -44,7 +44,7 @@ export function updateAttributeById (attrId, data) { } /** - * 添加属性 + * add attribute * @param data * @returns {AxiosPromise} */ @@ -57,7 +57,7 @@ export function createAttribute (data) { } /** - * 搜索属性/ 获取所有的属性 + * search attributes or get all attributes * @param data * @returns {AxiosPromise} */ @@ -70,7 +70,7 @@ export function searchAttributes (params) { } /** - * 删除属性 + * delete attribute * @param attrId * @returns {AxiosPromise} */ @@ -82,7 +82,7 @@ export function deleteAttributesById (attrId) { } /** - * 绑定ci_type 属性 + * bind attribute * @param CITypeId * @param data * @returns {AxiosPromise} @@ -96,7 +96,7 @@ export function createCITypeAttributes (CITypeId, data) { } /** - * 更新ci_type 属性 + * update CI Type attribute * @param CITypeId * @param data * @returns {AxiosPromise} @@ -110,7 +110,7 @@ export function updateCITypeAttributesById (CITypeId, data) { } /** - * 删除ci_type 属性 + * delete CI Type attribute * @param CITypeId * @param data * @returns {AxiosPromise} diff --git a/cmdb-ui/src/components/tools/LangSelect.vue b/cmdb-ui/src/components/tools/LangSelect.vue index 0d74231..54f9ee4 100644 --- a/cmdb-ui/src/components/tools/LangSelect.vue +++ b/cmdb-ui/src/components/tools/LangSelect.vue @@ -27,9 +27,11 @@ export default { data () { return {} }, + inject: ['reload'], methods: { SwitchLang (row) { this.setLang(row.key) + this.reload() } } } diff --git a/cmdb-ui/src/components/tools/UserMenu.vue b/cmdb-ui/src/components/tools/UserMenu.vue index 4e410ef..8d51cfd 100644 --- a/cmdb-ui/src/components/tools/UserMenu.vue +++ b/cmdb-ui/src/components/tools/UserMenu.vue @@ -34,7 +34,7 @@ <a-menu-item key="3"> <a href="javascript:;" @click="handleLogout"> <a-icon type="logout"/> - <span>退出登录</span> + <span>{{ $t('login.logout') }}</span> </a> </a-menu-item> </a-menu> @@ -67,8 +67,8 @@ export default { const that = this this.$confirm({ - title: '提示', - content: '真的要注销登录吗 ?', + title: this.$t('tip.warning'), + content: this.$t('login.confirmLogout'), onOk () { return that.Logout() }, diff --git a/cmdb-ui/src/layouts/UserLayout.vue b/cmdb-ui/src/layouts/UserLayout.vue index 66dc239..6108f08 100644 --- a/cmdb-ui/src/layouts/UserLayout.vue +++ b/cmdb-ui/src/layouts/UserLayout.vue @@ -8,7 +8,7 @@ </a> </div> <div class="desc"> - 运维资产数据管理 + {{ $t('login.subTitle') }} </div> </div> diff --git a/cmdb-ui/src/locales/lang/en-US.js b/cmdb-ui/src/locales/lang/en-US.js index 686bc05..ed6300c 100644 --- a/cmdb-ui/src/locales/lang/en-US.js +++ b/cmdb-ui/src/locales/lang/en-US.js @@ -25,6 +25,7 @@ export default { add: 'Add', new: 'New', update: 'Edit', + save: 'Save', delete: 'Delete', yes: 'Yes', no: 'No', @@ -33,6 +34,7 @@ export default { downloadTemplate: 'Download', upload: 'Upload', download: 'Download', + batchUpdate: 'Batch update', displayFields: 'Display Fields' }, tip: { @@ -45,6 +47,7 @@ export default { delete: 'Delete', edit: 'Edit', operate: 'Operation', + close: 'Close', create: 'Create', clear: 'Clear', modify: 'Modify', @@ -53,20 +56,23 @@ export default { noData: 'No Data', addSuccess: 'Add successfully', updateSuccess: 'Update successfully', + saveSuccess: 'Save successfully', deleteSuccess: 'Delete successfully', cancelSuccess: 'Cancel successfully', downloading: 'Downloading ...', deleting: 'Deleting ...', confirmDelete: 'Confirm deleting ?', warning: 'Warning', + error: 'Error', other: 'Other', requestFailed: 'Request error, please try again later', - pleaseSelect: 'please select' + pleaseSelect: 'please select', + selectAll: 'Select all' }, ci: { batchOperate: 'Batch Operation', confirmBatchUpdate: 'Confirm batch modification?', - batchUpdate: 'Batch update ...', + batchUpdate: 'Batch update', batchUpdateSuccess: 'Batch update successfully', confirmDelete: 'Confirm deleting ?', attribute: 'Attributes', @@ -105,6 +111,9 @@ export default { ciType: { add: 'Add', addAttribute: 'Add Attribute', + addAttribute1: 'Add Attribute', + moreAttribute: 'More Attributes', + bindAttribute: 'Bind Attribute', editModel: 'Edit Model', modelName: 'Model Name', name: 'Name', @@ -116,6 +125,7 @@ export default { link: 'Link', password: 'Password', list: 'List', + required: 'Required', integer: 'Integer', float: 'Float', text: 'Text', @@ -124,6 +134,95 @@ export default { isIt: 'Is it ', predefinedValue: 'Predefined values', predefinedValueTip: 'Multiple values are separated by line breaks', + defaultShow: 'Default show', + typeAttribute: 'Attribute', + typeRelation: 'Relation', + requiredCheck: 'Required check', + defaultShowAttribute: 'Default display attributes', + attributeGroup: 'Attribute grouping & sorting', + addGroup: 'Add Group', + deleteGroup: 'Delete Group', + up: 'Up', + down: 'Down', + moveSuccess: 'Move successfully', + moveFailed: 'Move Failed', + groupNameExisted: 'The group name already exists', + moreAttributeCannotSort: 'More attributes cannot be sorted. If you need to sort, add them to other groups!', + newCIType: 'New CI Type', + editCIType: 'Edit CI Type', + newRelation: 'New Relation', + sourceCIType: 'Source CI Type', + targetCIType: 'Target CI Type', + relationType: 'Relation Type', + relationViewDefinePanel: 'Relationship view definition panel', + relationViewDefinePanelTip1: 'Method 1. Right-click tree node (recommended)', + relationViewDefinePanelTip2: 'Method 2. Open the switch in the upper right corner and select the node of the tree', + newRealtionView: 'New relational view', + RealtionViewName: 'Relational view name', + RealtionViewNameRequired: 'Please enter a relational view name', + newRelationType: 'New Relation Type', + relationTypeNameRequired: 'Please enter a type name', uniqueFlag: 'unique flag' + }, + acl: { + roleList: 'Roles', + permList: 'Permissions', + selectOtherRole: 'Please select another role', + associatedParentRole: 'Associated parent role', + associatedChildRole: 'Associated child role', + associatedSuccess: 'Associated with success', + name: 'Name', + roleName: 'Role Name', + description: 'Desciption', + resourceNameRequired: 'Please enter the resource name', + descriptionTip: 'Please enter description...', + permission: 'Permission', + resourceType: 'Resource Type', + newResource: 'New Resource', + newRole: 'New Role', + newResourceType: 'New Resource Type', + addPermTip: 'Add authorization: ', + add: 'Add', + selectRoleTip: 'Please select the role name. Multiple choices are available!', + selectPermTip: 'Please select permissions. Multiple options are available!', + resourceTypeNameRequired: 'Please enter a type name', + permissionNameRequired: 'Please enter a permission name', + roleNameRequired: 'Please enter a role name', + usernameRequired: 'Please enter a user name', + inheritedFrom: 'Inherited from ', + selectInheritedRoles: 'Select inherited roles', + isAppAdmin: 'Is Application Admin', + username: 'Username', + nickname: 'NickName', + password: 'Password', + department: 'Department', + catalog: 'Team', + email: 'Email', + emailValidate: 'Please enter the correct email address!', + emailRequired: 'Please enter email address', + mobile: 'Mobile phone number', + mobileValidate: 'Please enter the correct mobile phone number', + block: 'Is lock', + newUser: 'New User', + typeName: 'Type name', + viewAuthorization: 'View Authorization', + authorization: 'Authorization', + resourceName: 'Resource Name', + createdAt: 'Creation time', + updatedAt: 'Last modified time', + joinedAt: 'Join time' + }, + login: { + subTitle: 'Operation and maintenance resource data management', + loginHeader: 'Account password login', + loginName: 'User name or email address', + loginNameRequired: 'Please enter your account name or email address', + password: 'Password', + passwordRequired: 'Please enter your password', + autoLogin: 'Automatic login', + welcome: 'Welocom', + welcomeBack: 'Welcome back', + confirmLogout: 'Do you really want to logout?', + logout: 'Logout', } } diff --git a/cmdb-ui/src/locales/lang/zh-CN.js b/cmdb-ui/src/locales/lang/zh-CN.js index ee743ef..95952dc 100644 --- a/cmdb-ui/src/locales/lang/zh-CN.js +++ b/cmdb-ui/src/locales/lang/zh-CN.js @@ -25,6 +25,7 @@ export default { add: '新增', new: '新建', update: '修改', + save: '保存', delete: '删除', yes: '是', no: '否', @@ -33,6 +34,7 @@ export default { downloadTemplate: '下载模板', upload: '上传', download: '下载', + batchUpdate: '批量修改', displayFields: '显示字段' }, tip: { @@ -45,23 +47,27 @@ export default { delete: '删除', edit: '编辑', operate: '操作', + close: '关闭', create: '创建', clear: '清空', modify: '修改', - unselectedAttribute: '未选属性', - selectedAttribute: '已选属性', + unselectedAttribute: '当前项', + selectedAttribute: '已选项', noData: '没数据', addSuccess: '新增成功', updateSuccess: '修改成功', + saveSuccess: '保存成功', deleteSuccess: '删除成功', cancelSuccess: '取消成功', downloading: '正在下载 ...', deleting: '正在删除 ...', confirmDelete: '真的要删除吗 ?', warning: '警告', + error: '错误', other: '其他', requestFailed: '请求出现错误,请稍后再试', - pleaseSelect: '请选择' + pleaseSelect: '请选择', + selectAll: '全选' }, ci: { batchOperate: '批量操作', @@ -105,6 +111,9 @@ export default { ciType: { add: '新增', addAttribute: '新增属性', + bindAttribute: '绑定属性', + addAttribute1: '添加属性', + moreAttribute: '更多属性', editModel: '编辑模型', modelName: '模型名(英文)', name: '名称', @@ -116,6 +125,7 @@ export default { link: '链接', password: '密码', list: '列表', + required: '必须', integer: '整数', float: '浮点数', text: '文本', @@ -124,6 +134,95 @@ export default { isIt: '是否', predefinedValue: '预定义值', predefinedValueTip: '多个值使用换行分隔', + defaultShow: '默认显示', + typeAttribute: '模型属性', + typeRelation: '模型关联', + requiredCheck: '必须校验', + defaultShowAttribute: '默认显示属性', + attributeGroup: '属性分组 & 排序', + addGroup: '添加分组', + deleteGroup: '删除分组', + up: '上移', + down: '下移', + moveSuccess: '移动成功', + moveFailed: '移动出错', + groupNameExisted: '分组名称已存在', + moreAttributeCannotSort: '更多属性不能进行排序, 如需排序需添加入其他分组中!', + newCIType: '新增模型', + editCIType: '编辑模型', + newRelation: '新增关系', + sourceCIType: '源模型', + targetCIType: '目标模型', + relationType: '关联关系', + relationViewDefinePanel: '关系视图定义面板', + relationViewDefinePanelTip1: '方法1. 右键选择树节点(推荐)', + relationViewDefinePanelTip2: '方法2. 先打开右上角的开关,再选择树的节点', + newRealtionView: '新增关系视图', + RealtionViewName: '关系视图名', + RealtionViewNameRequired: '请输入 关系视图名', + newRelationType: '新增关系类型', + relationTypeNameRequired: '请输入类型名', uniqueFlag: '唯一标识' + }, + acl: { + roleList: '角色列表', + permList: '权限列表', + selectOtherRole: '请选择另一个角色', + associatedParentRole: '关联父角色', + associatedChildRole: '关联子角色', + associatedSuccess: '关联成功', + name: '名称', + roleName: '角色名称', + description: '描述', + resourceNameRequired: '请输入资源名', + descriptionTip: '请输入描述信息...', + permission: '权限', + resourceType: '资源类型', + newResource: '新增资源', + newRole: '新增角色', + newResourceType: '新增资源类型', + addPermTip: '添加授权:', + add: '添加', + selectRoleTip: '请选择角色名称,可多选!', + selectPermTip: '请选择权限,可多选!', + resourceTypeNameRequired: '请输入类型名', + permissionNameRequired: '请输入权限名', + roleNameRequired: '请输入角色名', + usernameRequired: '请输入用户名', + inheritedFrom: '继承自', + selectInheritedRoles: '选择继承角色', + isAppAdmin: '是否应用管理员', + username: '用户名', + nickname: '昵称', + password: '密码', + department: '部门', + catalog: '小组', + email: '邮箱', + emailValidate: '请输入正确的邮箱!', + emailRequired: '请输入邮箱', + mobile: '手机号码', + mobileValidate: '请输入正确的手机号码', + block: '是否锁定', + newUser: '新增用户', + typeName: '类型名', + viewAuthorization: '查看授权', + authorization: '授权', + resourceName: '资源名', + createdAt: '创建时间', + updatedAt: '最后修改时间', + joinedAt: '加入时间' + }, + login: { + subTitle: '运维资源数据管理', + loginHeader: '账号密码登录', + loginName: '用户名或者邮箱', + loginNameRequired: '请输入帐户名或邮箱地址', + password: '密码', + passwordRequired: '请输入密码', + autoLogin: '自动登录', + welcome: '欢迎', + welcomeBack: '欢迎回来', + confirmLogout: '真的要注销登录吗 ?', + logout: '退出登录', } } diff --git a/cmdb-ui/src/views/acl/module/addRoleRelationForm.vue b/cmdb-ui/src/views/acl/module/addRoleRelationForm.vue index b107a8d..8d61e09 100644 --- a/cmdb-ui/src/views/acl/module/addRoleRelationForm.vue +++ b/cmdb-ui/src/views/acl/module/addRoleRelationForm.vue @@ -13,9 +13,9 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="角色列表" + :label="$t('acl.roleList')" > - <a-select name="otherID" :filterOption="filterOption" v-decorator="['otherID', {rules: [{ required: true, message: '请选择另一个角色'}]} ]"> + <a-select name="otherID" :filterOption="filterOption" v-decorator="['otherID', {rules: [{ required: true, message: $t('acl.selectOtherRole')}]} ]"> <template v-for="role in allRoles"> <a-select-option v-if="role.id != current_record.id" :key="role.id">{{ role.name }}</a-select-option> </template> @@ -42,8 +42,8 @@ }" > - <a-button @click="handleAddParent" type="primary" style="margin-right: 1rem">关联父角色</a-button> - <a-button @click="handleAddChild" type="primary" style="margin-right: 1rem">关联子角色</a-button> + <a-button @click="handleAddParent" type="primary" style="margin-right: 1rem">{{ $t('acl.associatedParentRole') }}</a-button> + <a-button @click="handleAddChild" type="primary" style="margin-right: 1rem">{{ $t('acl.associatedChildRole') }}</a-button> <a-button @click="onClose">{{ $t('button.cancel') }}</a-button> </div> @@ -64,7 +64,7 @@ export default { }, data () { return { - drawerTitle: '角色关联', + drawerTitle: this.$t('acl.associatedRole'), drawerVisible: false, formLayout: 'vertical', allRoles: [], @@ -144,7 +144,7 @@ export default { addParent (id, otherID) { addParentRole(id, otherID) .then(res => { - this.$message.success(`关联父角色成功`) + this.$message.success(this.$t('acl.associatedSuccess')) this.handleOk() this.onClose() }).catch(err => this.requestFailed(err)) @@ -153,7 +153,7 @@ export default { addChild (id, otherID) { addChildRole(id, otherID) .then(res => { - this.$message.success(`关联子角色成功`) + this.$message.success(this.$t('acl.associatedSuccess')) this.handleOk() this.onClose() }) @@ -161,7 +161,7 @@ export default { }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/acl/module/permissionForm.vue b/cmdb-ui/src/views/acl/module/permissionForm.vue index 437c1bb..eadd758 100644 --- a/cmdb-ui/src/views/acl/module/permissionForm.vue +++ b/cmdb-ui/src/views/acl/module/permissionForm.vue @@ -13,31 +13,31 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="类型名" + :label="$t('acl.name')" > <a-input name="name" placeholder="" - v-decorator="['name', {rules: [{ required: true, message: '请输入资源名'}]} ]" + v-decorator="['name', {rules: [{ required: true, message: $t('acl.resourceNameRequired') }]} ]" /> </a-form-item> <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="描述" + :label="$t('acl.description')" > - <a-textarea placeholder="请输入描述信息..." name="description" :rows="4" /> + <a-textarea :placeholder="$t('acl.descriptionTip')" name="description" :rows="4" /> </a-form-item> <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="权限" + :label="$t('acl.permission')" > <div :style="{ borderBottom: '1px solid #E9E9E9' }"> <a-checkbox :indeterminate="indeterminate" @change="onCheckAllChange" :checked="checkAll"> - 全选 + {{ $t('tip.selectAll') }} </a-checkbox> </div> <br /> @@ -86,7 +86,7 @@ export default { }, data () { return { - drawerTitle: '新增资源类型', + drawerTitle: this.$t('acl.newResourceType'), drawerVisible: false, formLayout: 'vertical', perms: ['1'], @@ -177,7 +177,7 @@ export default { updateResourceType (id, data) { updateResourceTypeById(id, data) .then(res => { - this.$message.success(`更新成功`) + this.$message.success(this.$t('tip.updateSuccess')) this.handleOk() this.onClose() }).catch(err => this.requestFailed(err)) @@ -186,7 +186,7 @@ export default { createResourceType (data) { addResourceType(data) .then(res => { - this.$message.success(`添加成功`) + this.$message.success(this.$t('tip.addSuccess')) this.handleOk() this.onClose() }) @@ -194,7 +194,7 @@ export default { }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/acl/module/resourceForm.vue b/cmdb-ui/src/views/acl/module/resourceForm.vue index cf1991a..bd475bc 100644 --- a/cmdb-ui/src/views/acl/module/resourceForm.vue +++ b/cmdb-ui/src/views/acl/module/resourceForm.vue @@ -13,19 +13,19 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="资源名" + :label="$t('acl.name')" > <a-input name="name" placeholder="" - v-decorator="['name', {rules: [{ required: true, message: '请输入资源名'}]} ]" + v-decorator="['name', {rules: [{ required: true, message: $t('acl.resourceNameRequired')}]} ]" /> </a-form-item> <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="资源类型" + :label="$t('acl.resourceType')" > <a-select name="type_id" v-decorator="['type_id', {rules: []} ]"> <a-select-option v-for="type in allTypes" :key="type.id">{{ type.name }}</a-select-option> @@ -73,7 +73,7 @@ export default { }, data () { return { - drawerTitle: '新增资源', + drawerTitle: this.$t('acl.newResource'), drawerVisible: false, formLayout: 'vertical', allTypes: [] @@ -150,14 +150,14 @@ export default { createResource (data) { addResource(data) .then(res => { - this.$message.success(`添加成功`) + this.$message.success(this.$t('tip.addSuccess')) this.onClose() }) .catch(err => this.requestFailed(err)) }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/acl/module/resourcePermForm.vue b/cmdb-ui/src/views/acl/module/resourcePermForm.vue index 8741c82..8305595 100644 --- a/cmdb-ui/src/views/acl/module/resourcePermForm.vue +++ b/cmdb-ui/src/views/acl/module/resourcePermForm.vue @@ -5,7 +5,7 @@ width="50%" > <template slot="footer"> - <a-button key="back" @click="handleCancel">关闭</a-button> + <a-button key="back" @click="handleCancel">{{ $t('tip.close') }}</a-button> </template> <template> @@ -40,7 +40,7 @@ export default { }, data () { return { - drawerTitle: '权限列表', + drawerTitle: this.$t('acl.permList'), drawerVisible: false, record: null, allPerms: [], @@ -80,7 +80,7 @@ export default { }, deletePerm (roleID, permName) { deleteRoleResourcePerm(roleID, this.record.id, { perms: [permName] }).then(res => { - this.$message.success(`删除成功`) + this.$message.success(this.$t('tip.deleteSuccess')) }).catch(err => this.requestFailed(err)) }, handleCancel (e) { @@ -88,7 +88,7 @@ export default { }, requestFailed (err) { console.log(err) - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/acl/module/resourcePermManageForm.vue b/cmdb-ui/src/views/acl/module/resourcePermManageForm.vue index f398380..f8ce0a0 100644 --- a/cmdb-ui/src/views/acl/module/resourcePermManageForm.vue +++ b/cmdb-ui/src/views/acl/module/resourcePermManageForm.vue @@ -1,6 +1,6 @@ <template> <a-drawer - :title="'添加授权:'+instance.name" + :title="$t('acl.addPermTip')+instance.name" width="30%" :closable="true" :visible="visible" @@ -8,28 +8,28 @@ > <a-form :form="form"> <a-form-item - label="角色列表" + :label="$t('acl.roleList')" > <a-select showSearch name="roleIdList" v-decorator="['roleIdList', {rules: []} ]" mode="multiple" - placeholder="请选择角色名称,可多选!" + :placeholder="$t('acl.selectRoleTip')" :filterOption="filterOption"> <a-select-option v-for="role in allRoles" :key="role.id">{{ role.name }}</a-select-option> </a-select> </a-form-item> <a-form-item - label="权限列表" + :label="$t('acl.permList')" > - <a-select name="permName" v-decorator="['permName', {rules: []} ]" mode="multiple" placeholder="请选择权限,可多选!"> + <a-select name="permName" v-decorator="['permName', {rules: []} ]" mode="multiple" :placeholder="$t('acl.selectPermTip')"> <a-select-option v-for="perm in allPerms" :key="perm.name">{{ perm.name }}</a-select-option> </a-select> </a-form-item> <div class="btn-group"> - <a-button @click="handleSubmit" type="primary" style="margin-right: 1rem">添加</a-button> + <a-button @click="handleSubmit" type="primary" style="margin-right: 1rem">{{ $t('acl.add') }}</a-button> <a-button @click="closeForm">{{ $t('button.cancel') }}</a-button> </div> @@ -47,7 +47,7 @@ export default { allRoles: [], allPerms: [], visible: false, - instance: {} // 当前对象 + instance: {} } }, props: { @@ -84,7 +84,7 @@ export default { this.loadPerm(record['resource_type_id']) }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) }, filterOption (input, option) { @@ -98,7 +98,7 @@ export default { if (!err) { values.roleIdList.forEach(roleId => { setRoleResourcePerm(roleId, this.instance.id, { perms: values.permName }).then( - res => { this.$message.info('添加授权成功') }).catch( + res => { this.$message.info(this.$t('tip.addSuccess')) }).catch( err => this.requestFailed(err)) }) } diff --git a/cmdb-ui/src/views/acl/module/resourceTypeForm.vue b/cmdb-ui/src/views/acl/module/resourceTypeForm.vue index e9a4017..afb9833 100644 --- a/cmdb-ui/src/views/acl/module/resourceTypeForm.vue +++ b/cmdb-ui/src/views/acl/module/resourceTypeForm.vue @@ -13,29 +13,29 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="类型名" + :label="$t('acl.name')" > <a-input name="name" - placeholder="类型名称" - v-decorator="['name', {rules: [{ required: true, message: '请输入类型名'}]} ]" + :placeholder="$t('acl.name')" + v-decorator="['name', {rules: [{ required: true, message: $t('acl.resourceTypeNameRequired')}]} ]" /> </a-form-item> <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="描述" + :label="$t('acl.description')" > - <a-textarea placeholder="请输入描述信息..." name="description" :rows="4" v-decorator="['description', {rules: []} ]"/> + <a-textarea :placeholder="$t('acl.descriptionTip')" name="description" :rows="4" v-decorator="['description', {rules: []} ]"/> </a-form-item> <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="权限" + :label="$t('acl.permission')" > - <a-select mode="tags" v-model="perms" style="width: 100%" placeholder="请输入权限名..."> + <a-select mode="tags" v-model="perms" style="width: 100%" :placeholder="$t('acl.permissionNameRequired')"> </a-select> </a-form-item> @@ -81,7 +81,7 @@ export default { }, data () { return { - drawerTitle: '新增资源类型', + drawerTitle: this.$t('acl.newResourceType'), drawerVisible: false, formLayout: 'vertical', perms: [] @@ -159,7 +159,7 @@ export default { updateResourceType (id, data) { updateResourceTypeById(id, data) .then(res => { - this.$message.success(`更新成功`) + this.$message.success(this.$t('tip.updateSuccess')) this.handleOk() this.onClose() }).catch(err => this.requestFailed(err)) @@ -168,7 +168,7 @@ export default { createResourceType (data) { addResourceType(data) .then(res => { - this.$message.success(`添加成功`) + this.$message.success(this.$t('tip.addSuccess')) this.handleOk() this.onClose() }) @@ -176,7 +176,7 @@ export default { }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/acl/module/roleForm.vue b/cmdb-ui/src/views/acl/module/roleForm.vue index 57460ef..8f542d6 100644 --- a/cmdb-ui/src/views/acl/module/roleForm.vue +++ b/cmdb-ui/src/views/acl/module/roleForm.vue @@ -13,22 +13,22 @@ <a-form-item :label-col="{span:6}" :wrapper-col="{span:12}" - label="角色名" + :label="$t('acl.roleName')" > <a-input name="name" placeholder="" - v-decorator="['name', {rules: [{ required: true, message: '请输入角色名'}]} ]" + v-decorator="['name', {rules: [{ required: true, message: $t('acl.roleNameRequired')}]} ]" /> </a-form-item> <a-form-item :label-col="{span:6}" :wrapper-col="{span:12}" - label="继承自" + :label="$t('acl.inheritedFrom')" > <a-select v-model="selectedParents" - placeholder="可选择继承角色" + :placeholder="$t('acl.selectInheritedRoles')" mode="multiple" :filterOption="filterOption"> <template v-for="role in allRoles"> @@ -39,7 +39,7 @@ <a-form-item :label-col="{span:8}" :wrapper-col="{span:10}" - label="是否应用管理员" + :label="$t('acl.isAppAdmin')" > <a-switch @change="onChange" @@ -86,7 +86,7 @@ export default { }, data () { return { - drawerTitle: '新增角色', + drawerTitle: this.$t('acl.newRole'), current_id: 0, drawerVisible: false, formLayout: 'vertical', @@ -130,7 +130,7 @@ export default { ) }, handleCreate () { - this.drawerTitle = '新增' + this.drawerTitle = this.$t('button.add') this.drawerVisible = true }, onClose () { @@ -144,7 +144,7 @@ export default { }, handleEdit (record) { - this.drawerTitle = '编辑' + this.drawerTitle = this.$t('button.update') this.drawerVisible = true this.current_id = record.id const _parents = this.id2parents[record.id] @@ -180,7 +180,7 @@ export default { this.updateParents(id) updateRoleById(id, data) .then(res => { - this.$message.success(`更新成功`) + this.$message.success(this.$t('tip.updateSuccess')) this.handleOk() this.onClose() }).catch(err => this.requestFailed(err)) @@ -189,7 +189,7 @@ export default { createRole (data) { addRole(data) .then(res => { - this.$message.success(`添加成功`) + this.$message.success(this.$t('tip.addSuccess')) this.updateParents(res.id) this.handleOk() this.onClose() @@ -209,7 +209,7 @@ export default { }) }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/acl/module/userForm.vue b/cmdb-ui/src/views/acl/module/userForm.vue index de2bef5..b6be567 100644 --- a/cmdb-ui/src/views/acl/module/userForm.vue +++ b/cmdb-ui/src/views/acl/module/userForm.vue @@ -13,18 +13,18 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="用户名(英文)" + :label="$t('acl.username')" > <a-input name="username" - placeholder="英文名" - v-decorator="['username', {rules: [{ required: true, message: '请输入用户名'}]} ]" + :placeholder="$t('acl.username')" + v-decorator="['username', {rules: [{ required: true, message: $t('acl.usernameRequired')}]} ]" /> </a-form-item> <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="中文名" + :label="$t('acl.nickname')" > <a-input name="nickname" @@ -34,7 +34,7 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="密码" + :label="$t('acl.password')" > <a-input type="password" @@ -46,7 +46,7 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="部门" + :label="$t('acl.department')" > <a-input name="department" @@ -57,7 +57,7 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="小组" + :label="$t('acl.catalog')" > <a-input name="catalog" @@ -68,7 +68,7 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="邮箱" + :label="$t('acl.email')" > <a-input name="email" @@ -78,11 +78,11 @@ rules: [ { type: 'email', - message: '请输入正确的邮箱!', + message: $t('acl.emailValidate'), }, { required: true, - message: '请输入邮箱', + message: $t('acl.emailRequired'), }, ], }, @@ -93,18 +93,18 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="手机号码" + :label="$t('acl.mobile')" > <a-input name="mobile" - v-decorator="['mobile', {rules: [{message: '请输入正确的手机号码', pattern: /^1\d{10}$/ }]} ]" + v-decorator="['mobile', {rules: [{message: $t('acl.mobileValidate'), pattern: /^1\d{10}$/ }]} ]" /> </a-form-item> <a-form-item :label-col="horizontalFormItemLayout.labelCol" :wrapper-col="horizontalFormItemLayout.wrapperCol" - label="是否锁定" + :label="$t('acl.block')" > <a-switch @change="onChange" @@ -154,7 +154,7 @@ export default { }, data () { return { - drawerTitle: '新增用户', + drawerTitle: this.$t('acl.newUser'), drawerVisible: false, formLayout: 'vertical' } @@ -235,7 +235,7 @@ export default { updateUser (attrId, data) { updateUserById(attrId, data) .then(res => { - this.$message.success(`更新成功`) + this.$message.success(this.$t('tip.updateSuccess')) this.handleOk() this.onClose() }).catch(err => this.requestFailed(err)) @@ -244,7 +244,7 @@ export default { createUser (data) { addUser(data) .then(res => { - this.$message.success(`添加成功`) + this.$message.success(this.$t('tip.addSuccess')) this.handleOk() this.onClose() }) @@ -252,7 +252,7 @@ export default { }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/acl/permissions.vue b/cmdb-ui/src/views/acl/permissions.vue index d4fe72c..db88044 100644 --- a/cmdb-ui/src/views/acl/permissions.vue +++ b/cmdb-ui/src/views/acl/permissions.vue @@ -2,7 +2,7 @@ <a-card :bordered="false"> <div class="action-btn"> - <a-button @click="handleCreate" type="primary" style="margin-right: 0.3rem;">{{ btnName }}</a-button> + <a-button @click="handleCreate" type="primary" style="margin-right: 0.3rem;">{{ $t('acl.newResourceType') }}</a-button> </div> <s-table @@ -34,7 +34,7 @@ icon="search" size="small" style="width: 90px; margin-right: 8px" - >搜索</a-button> + >{{ $t('button.query') }}</a-button> <a-button @click="() => handleReset(clearFilters, column)" size="small" @@ -65,11 +65,11 @@ <a-divider type="vertical"/> <a-popconfirm - title="确认删除?" + :title="$t('tip.confirmDelete')" @confirm="handleDelete(record)" @cancel="cancel" - okText="是" - cancelText="否" + :okText="$t('button.yes')" + :cancelText="$t('button.no')" > <a>{{ $t('tip.delete') }}</a> </a-popconfirm> @@ -97,7 +97,6 @@ export default { return { id2perms: {}, scroll: { x: 1000, y: 500 }, - btnName: '新增资源类型', formLayout: 'vertical', @@ -109,7 +108,7 @@ export default { }, columns: [ { - title: '类型名', + title: this.$t('acl.typeName'), dataIndex: 'name', sorter: false, width: 50, @@ -128,20 +127,20 @@ export default { } }, { - title: '描述', + title: this.$t('acl.description'), dataIndex: 'description', width: 250, sorter: false, scopedSlots: { customRender: 'description' } }, { - title: '权限', + title: this.$t('acl.permission'), dataIndex: 'id', sorter: false, scopedSlots: { customRender: 'id' } }, { - title: '操作', + title: this.$t('tip.operate'), dataIndex: 'action', width: 150, fixed: 'right', @@ -169,11 +168,8 @@ export default { }, mdl: {}, - // 高级搜索 展开/关闭 advanced: false, - // 查询参数 queryParam: {}, - // 表头 selectedRowKeys: [], selectedRows: [], @@ -255,13 +251,13 @@ export default { deleteResourceType (id) { deleteResourceTypeById(id) .then(res => { - this.$message.success(`删除成功`) + this.$message.success(this.$t('tip.deleteSuccess')) this.handleOk() }) .catch(err => this.requestFailed(err)) }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) }, cancel () { diff --git a/cmdb-ui/src/views/acl/resource_types.vue b/cmdb-ui/src/views/acl/resource_types.vue index cd42424..18cc49e 100644 --- a/cmdb-ui/src/views/acl/resource_types.vue +++ b/cmdb-ui/src/views/acl/resource_types.vue @@ -2,7 +2,7 @@ <a-card :bordered="false"> <div class="action-btn"> - <a-button @click="handleCreate" type="primary" style="margin-right: 0.3rem;">{{ btnName }}</a-button> + <a-button @click="handleCreate" type="primary" style="margin-right: 0.3rem;">{{ $t('acl.newResourceType') }}</a-button> </div> <s-table @@ -12,7 +12,7 @@ :rowKey="record=>record.id" :rowSelection="options.rowSelection" :scroll="scroll" - :pagination="{ showTotal: (total, range) => `${range[0]}-${range[1]} 共 ${total} 条记录`, pageSizeOptions: pageSizeOptions}" + :pagination="{ showTotal: (total, range) => `${range[0]}-${range[1]} ${total} records in total`, pageSizeOptions: pageSizeOptions}" showPagination="auto" :pageSize="25" ref="table" @@ -34,7 +34,7 @@ icon="search" size="small" style="width: 90px; margin-right: 8px" - >搜索</a-button> + >{{ $t('button.query') }}</a-button> <a-button @click="() => handleReset(clearFilters, column)" size="small" @@ -65,11 +65,11 @@ <a-divider type="vertical"/> <a-popconfirm - title="确认删除?" + :title="$t('tip.confirmDelete')" @confirm="handleDelete(record)" @cancel="cancel" - okText="是" - cancelText="否" + :okText="$t('button.yes')" + :cancelText="$t('button.no')" > <a>{{ $t('tip.delete') }}</a> </a-popconfirm> @@ -97,7 +97,6 @@ export default { return { id2perms: {}, scroll: { x: 1000, y: 500 }, - btnName: '新增资源类型', formLayout: 'vertical', @@ -109,7 +108,7 @@ export default { }, columns: [ { - title: '类型名', + title: this.$t('acl.typeName'), dataIndex: 'name', sorter: false, width: 150, @@ -128,21 +127,21 @@ export default { } }, { - title: '描述', + title: this.$t('acl.description'), dataIndex: 'description', width: 200, sorter: false, scopedSlots: { customRender: 'description' } }, { - title: '权限', + title: this.$t('acl.permission'), dataIndex: 'id', width: 300, sorter: false, scopedSlots: { customRender: 'id' } }, { - title: '操作', + title: this.$t('tip.operate'), dataIndex: 'action', width: 150, scopedSlots: { customRender: 'action' } @@ -169,11 +168,8 @@ export default { }, mdl: {}, - // 高级搜索 展开/关闭 advanced: false, - // 查询参数 queryParam: {}, - // 表头 selectedRowKeys: [], selectedRows: [], @@ -263,13 +259,13 @@ export default { deleteResourceType (id) { deleteResourceTypeById(id) .then(res => { - this.$message.success(`删除成功`) + this.$message.success(this.$t('tip.deleteSuccess')) this.handleOk() }) .catch(err => this.requestFailed(err)) }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) }, cancel () { diff --git a/cmdb-ui/src/views/acl/resources.vue b/cmdb-ui/src/views/acl/resources.vue index 8fe9e07..d0c53ac 100644 --- a/cmdb-ui/src/views/acl/resources.vue +++ b/cmdb-ui/src/views/acl/resources.vue @@ -18,7 +18,7 @@ </div> <a-divider style="margin-top: -16px" /> <div class="action-btn"> - <a-button @click="handleCreate" type="primary" style="margin-right: 0.3rem;">{{ btnName }}</a-button> + <a-button @click="handleCreate" type="primary" style="margin-right: 0.3rem;">{{ $t('acl.newResource') }}</a-button> </div> <s-table @@ -28,7 +28,7 @@ :rowKey="record=>record.id" :rowSelection="options.rowSelection" :scroll="scroll" - :pagination="{ showTotal: (total, range) => `${range[0]}-${range[1]} 共 ${total} 条记录`, pageSizeOptions: pageSizeOptions}" + :pagination="{ showTotal: (total, range) => `${range[0]}-${range[1]} ${total} records in total`, pageSizeOptions: pageSizeOptions}" showPagination="auto" :pageSize="25" ref="table" @@ -50,7 +50,7 @@ icon="search" size="small" style="width: 90px; margin-right: 8px" - >搜索</a-button> + >{{ $t('button.query') }}</a-button> <a-button @click="() => handleReset(clearFilters, column)" size="small" @@ -70,16 +70,16 @@ </template> <span slot="action" slot-scope="text, record"> <template> - <a @click="handlePerm(record)">查看授权</a> + <a @click="handlePerm(record)">{{ $t('acl.viewAuthorization') }}</a> <a-divider type="vertical"/> - <a @click="handlePermManage(record)">授权</a> + <a @click="handlePermManage(record)">{{ $t('acl.authorization') }}</a> <a-divider type="vertical"/> <a-popconfirm - title="确认删除?" + :title="$t('tip.confirmDelete')" @confirm="handleDelete(record)" @cancel="cancel" - okText="是" - cancelText="否" + :okText="$t('button.yes')" + :cancelText="$t('button.no')" > <a>{{ $t('tip.delete') }}</a> </a-popconfirm> @@ -111,7 +111,6 @@ export default { data () { return { scroll: { x: 1000, y: 500 }, - btnName: '新增资源', allResourceTypes: [], currentType: { id: 0 }, formLayout: 'vertical', @@ -125,7 +124,7 @@ export default { }, columns: [ { - title: '资源名', + title: this.$t('acl.resourceName'), dataIndex: 'name', sorter: false, width: 250, @@ -144,17 +143,17 @@ export default { } }, { - title: '创建时间', + title: this.$t('acl.createdAt'), width: 200, dataIndex: 'created_at' }, { - title: '最后修改时间', + title: this.$t('acl.updatedAt'), width: 200, dataIndex: 'updated_at' }, { - title: '操作', + title: this.$t('tip.operate'), dataIndex: 'action', width: 150, scopedSlots: { customRender: 'action' } @@ -181,11 +180,8 @@ export default { }, mdl: {}, - // 高级搜索 展开/关闭 advanced: false, - // 查询参数 queryParam: {}, - // 表头 selectedRowKeys: [], selectedRows: [], @@ -281,13 +277,13 @@ export default { deleteResource (id) { deleteResourceById(id) .then(res => { - this.$message.success(`删除成功`) + this.$message.success(this.$t('tip.deleteSuccess')) this.handleOk() }) .catch(err => this.requestFailed(err)) }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) }, cancel () { diff --git a/cmdb-ui/src/views/acl/roles.vue b/cmdb-ui/src/views/acl/roles.vue index 2d4fc6c..889cd9e 100644 --- a/cmdb-ui/src/views/acl/roles.vue +++ b/cmdb-ui/src/views/acl/roles.vue @@ -2,7 +2,7 @@ <a-card :bordered="false"> <div class="action-btn"> - <a-button @click="handleCreate" type="primary" style="margin-right: 0.3rem;">{{ btnName }}</a-button> + <a-button @click="handleCreate" type="primary" style="margin-right: 0.3rem;">{{ $t('acl.newRole') }}</a-button> </div> <s-table @@ -11,7 +11,7 @@ :data="loadData" :rowKey="record=>record.id" :rowSelection="options.rowSelection" - :pagination="{ showTotal: (total, range) => `${range[0]}-${range[1]} 共 ${total} 条记录`, pageSizeOptions: pageSizeOptions}" + :pagination="{ showTotal: (total, range) => `${range[0]}-${range[1]} ${total} records in total`, pageSizeOptions: pageSizeOptions}" showPagination="auto" :pageSize="25" ref="table" @@ -32,7 +32,7 @@ icon="search" size="small" style="width: 90px; margin-right: 8px" - >搜索</a-button> + >{{ $t('button.query') }}</a-button> <a-button @click="() => handleReset(clearFilters, column)" size="small" @@ -61,14 +61,14 @@ <span slot="action" slot-scope="text, record"> <template> - <a @click="handleEdit(record)">修改</a> + <a @click="handleEdit(record)">{{ $t('button.update') }}</a> <a-divider type="vertical"/> <a-popconfirm - title="确认删除?" + :title="$t('tip.confirmDelete')" @confirm="handleDelete(record)" @cancel="cancel" - okText="是" - cancelText="否" + :okText="$t('button.yes')" + :cancelText="$t('button.no')" > <a>{{ $t('tip.delete') }}</a> </a-popconfirm> @@ -93,7 +93,6 @@ export default { data () { return { scroll: { x: 1000, y: 500 }, - btnName: '新增角色', formLayout: 'vertical', @@ -107,7 +106,7 @@ export default { }, columns: [ { - title: '角色名', + title: this.$t('acl.roleName'), dataIndex: 'name', sorter: false, width: 150, @@ -126,7 +125,7 @@ export default { } }, { - title: '是否管理员', + title: this.$t('acl.isAppAdmin'), dataIndex: 'is_app_admin', width: 100, sorter: false, @@ -134,7 +133,7 @@ export default { }, { - title: '继承自', + title: this.$t('acl.inheritedFrom'), dataIndex: 'id', sorter: false, width: 250, @@ -142,7 +141,7 @@ export default { }, { - title: '操作', + title: this.$t('tip.operate'), dataIndex: 'action', width: 150, scopedSlots: { customRender: 'action' } @@ -171,11 +170,8 @@ export default { }, mdl: {}, - // 高级搜索 展开/关闭 advanced: false, - // 查询参数 queryParam: {}, - // 表头 selectedRowKeys: [], selectedRows: [], @@ -256,13 +252,13 @@ export default { deleteRole (id) { deleteRoleById(id) .then(res => { - this.$message.success(`删除成功`) + this.$message.success(this.$t('tip.deleteSuccess')) this.handleOk() }) .catch(err => this.requestFailed(err)) }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) }, cancel (e) { diff --git a/cmdb-ui/src/views/acl/users.vue b/cmdb-ui/src/views/acl/users.vue index 640a907..b13fc48 100644 --- a/cmdb-ui/src/views/acl/users.vue +++ b/cmdb-ui/src/views/acl/users.vue @@ -2,7 +2,7 @@ <a-card :bordered="false"> <div class="action-btn"> - <a-button @click="handleCreate" type="primary" style="margin-right: 0.3rem;">{{ btnName }}</a-button> + <a-button @click="handleCreate" type="primary" style="margin-right: 0.3rem;">{{ $t('acl.newUser') }}</a-button> </div> <s-table @@ -12,7 +12,7 @@ :rowKey="record=>record.uid" :rowSelection="options.rowSelection" :scroll="scroll" - :pagination="{ showTotal: (total, range) => `${range[0]}-${range[1]} 共 ${total} 条记录`, pageSizeOptions: pageSizeOptions}" + :pagination="{ showTotal: (total, range) => `${range[0]}-${range[1]} ${total} records in total`, pageSizeOptions: pageSizeOptions}" showPagination="auto" :pageSize="25" ref="table" @@ -33,7 +33,7 @@ icon="search" size="small" style="width: 90px; margin-right: 8px" - >搜索</a-button> + >{{ $t('button.query') }}</a-button> <a-button @click="() => handleReset(clearFilters, column)" size="small" @@ -75,11 +75,11 @@ <a-divider type="vertical"/> <a-popconfirm - title="确认删除?" + :title="$t('tip.confirmDelete')" @confirm="handleDelete(record)" @cancel="cancel" - okText="是" - cancelText="否" + :okText="$t('button.yes')" + :cancelText="$t('button.no')" > <a>{{ $t('tip.delete') }}</a> </a-popconfirm> @@ -106,7 +106,6 @@ export default { data () { return { scroll: { x: 1300, y: 500 }, - btnName: '新增用户', CITypeName: this.$route.params.CITypeName, CITypeId: this.$route.params.CITypeId, @@ -122,7 +121,7 @@ export default { }, columns: [ { - title: '用户名', + title: this.$t('acl.username'), dataIndex: 'username', sorter: false, width: 150, @@ -141,7 +140,7 @@ export default { } }, { - title: '中文名', + title: this.$t('acl.nickname'), dataIndex: 'nickname', sorter: false, width: 150, @@ -160,7 +159,7 @@ export default { } }, { - title: '部门', + title: this.$t('acl.department'), dataIndex: 'department', width: 100, sorter: false, @@ -168,7 +167,7 @@ export default { }, { - title: '小组', + title: this.$t('acl.catalog'), dataIndex: 'catalog', sorter: false, width: 100, @@ -176,7 +175,7 @@ export default { }, { - title: '邮箱', + title: this.$t('acl.email'), dataIndex: 'email', sorter: false, width: 200, @@ -184,7 +183,7 @@ export default { }, { - title: '手机', + title: this.$t('acl.mobile'), dataIndex: 'mobile', sorter: false, width: 150, @@ -192,7 +191,7 @@ export default { }, { - title: '加入时间', + title: this.$t('acl.joinedAt'), dataIndex: 'date_joined', sorter: false, width: 200, @@ -200,13 +199,13 @@ export default { }, { - title: '锁定', + title: this.$t('acl.block'), dataIndex: 'block', width: 100, scopedSlots: { customRender: 'block' } }, { - title: '操作', + title: this.$t('tip.operate'), dataIndex: 'action', width: 150, scopedSlots: { customRender: 'action' } @@ -232,11 +231,8 @@ export default { }) }, mdl: {}, - // 高级搜索 展开/关闭 advanced: false, - // 查询参数 queryParam: {}, - // 表头 selectedRowKeys: [], selectedRows: [], // custom table alert & rowSelection @@ -316,13 +312,13 @@ export default { deleteUser (attrId) { deleteUserById(attrId) .then(res => { - this.$message.success(`删除成功`) + this.$message.success(this.$t('tip.deleteSuccess')) this.handleOk() }) .catch(err => this.requestFailed(err)) }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/cmdb/modeling/ci_type/attributesTable.vue b/cmdb-ui/src/views/cmdb/modeling/ci_type/attributesTable.vue index 5609f4e..11298be 100644 --- a/cmdb-ui/src/views/cmdb/modeling/ci_type/attributesTable.vue +++ b/cmdb-ui/src/views/cmdb/modeling/ci_type/attributesTable.vue @@ -72,10 +72,10 @@ <a-divider type="vertical"/> <a-popconfirm - title="确认删除?" + :title="$t('tip.confirmDelete')" @confirm="handleDelete(record)" - okText="是" - cancelText="否" + :okText="$t('button.yes')" + :cancelText="$t('button.no')" > <a>{{ $t('tip.delete') }}</a> </a-popconfirm> @@ -100,7 +100,7 @@ :render="item=>item.title" :selectedKeys="transferSelectedKeys" :targetKeys="transferTargetKeys" - :titles="['当前项', '已选项']" + :titles="[$t('tip.unselectedAttribute'), $t('tip.selectedAttribute')]" :listStyle="{ height: '600px', width: '40%', @@ -163,8 +163,8 @@ export default { drawerVisible: false }, batchBindAttrAction: { - btnName: '绑定属性', - drawerTitle: '绑定属性', + btnName: this.$t('ciType.bindAttribute'), + drawerTitle: this.$t('ciType.bindAttribute'), drawerVisible: false }, @@ -191,7 +191,7 @@ export default { }, columns: [ { - title: '名称', + title: this.$t('ciType.alias'), dataIndex: 'alias', sorter: false, width: 200, @@ -210,7 +210,7 @@ export default { } }, { - title: '英文名', + title: this.$t('ciType.name'), dataIndex: 'name', sorter: false, width: 200, @@ -229,7 +229,7 @@ export default { } }, { - title: '类型', + title: this.$t('ciType.type'), dataIndex: 'value_type', sorter: false, width: 100, @@ -238,7 +238,7 @@ export default { }, { - title: '唯一', + title: this.$t('ciType.unique'), dataIndex: 'is_unique', width: 50, sorter: false, @@ -246,7 +246,7 @@ export default { }, { - title: '索引', + title: this.$t('ciType.index'), dataIndex: 'is_index', sorter: false, width: 50, @@ -254,7 +254,7 @@ export default { }, { - title: '排序', + title: this.$t('ciType.sort'), dataIndex: 'is_sortable', sorter: false, width: 50, @@ -262,7 +262,7 @@ export default { }, { - title: '链接', + title: this.$t('ciType.link'), dataIndex: 'is_link', sorter: false, width: 50, @@ -270,7 +270,7 @@ export default { }, { - title: '密码', + title: this.$t('ciType.password'), dataIndex: 'is_password', sorter: false, width: 50, @@ -278,7 +278,7 @@ export default { }, { - title: '列表', + title: this.$t('ciType.list'), dataIndex: 'is_list', sorter: false, width: 50, @@ -286,7 +286,7 @@ export default { }, { - title: '必须', + title: this.$t('ciType.required'), dataIndex: 'is_required', sorter: false, width: 50, @@ -294,14 +294,14 @@ export default { }, { - title: '默认显示', + title: this.$t('ciType.defaultShow'), dataIndex: 'default_show', sorter: false, scopedSlots: { customRender: 'is_check' } }, { - title: '操作', + title: this.$t('tip.operate'), dataIndex: 'action', width: 100, fixed: 'right', @@ -323,11 +323,8 @@ export default { }, mdl: {}, - // 高级搜索 展开/关闭 advanced: false, - // 查询参数 queryParam: {}, - // 表头 selectedRowKeys: [], selectedRows: [], @@ -448,7 +445,7 @@ export default { handleDelete (record) { this.unbindAttribute([record.id]) .then(res => { - this.$message.success(`删除成功`) + this.$message.success(this.$t('tip.deleteSuccess')) this.handleOk() }).catch(err => this.requestFailed(err)) }, @@ -486,7 +483,7 @@ export default { const that = this Promise.all(p).then(function (values) { console.log(values) - that.$message.success(`修改成功`) + that.$message.success(that.$t('tip.updateSuccess')) that.handleOk() that.onBatchBindAttrActionClose() }).catch(err => that.requestFailed(err)) @@ -500,7 +497,7 @@ export default { }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/cmdb/modeling/ci_type/checkTable.vue b/cmdb-ui/src/views/cmdb/modeling/ci_type/checkTable.vue index bba7b58..9dcc012 100644 --- a/cmdb-ui/src/views/cmdb/modeling/ci_type/checkTable.vue +++ b/cmdb-ui/src/views/cmdb/modeling/ci_type/checkTable.vue @@ -1,6 +1,6 @@ <template> <div> - <a-button class="action-btn" @click="handleCreate" type="primary">批量修改</a-button> + <a-button class="action-btn" @click="handleCreate" type="primary">{{ $t('button.batchUpdate') }}</a-button> <s-table v-once :alert="options.alert" @@ -41,7 +41,7 @@ :render="item=>item.title" :selectedKeys="transferSelectedKeys" :targetKeys="transferTargetKeys" - :titles="['当前项', '已选项']" + :titles="[$t('tip.unselectedAttribute'), $t('tip.selectedAttribute')]" :listStyle="{ height: '600px', width: '40%', @@ -113,21 +113,21 @@ export default { showPagination: false, columns: [ { - title: '属性名', + title: this.$t('ciType.alias'), dataIndex: 'alias', sorter: false, width: 200, scopedSlots: { customRender: 'alias' } }, { - title: '属性英文名', + title: this.$t('ciType.name'), dataIndex: 'name', sorter: false, width: 200, scopedSlots: { customRender: 'name' } }, { - title: '必须', + title: this.$t('ciType.required'), dataIndex: 'is_required', sorter: false, scopedSlots: { customRender: 'is_check' } @@ -135,7 +135,7 @@ export default { }, { - title: '操作', + title: this.$t('tip.operate'), dataIndex: 'action', width: 100, fixed: 'right', @@ -156,9 +156,7 @@ export default { }, mdl: {}, - // 高级搜索 展开/关闭 advanced: false, - // 查询参数 queryParam: {}, // custom table alert & rowSelection @@ -259,7 +257,7 @@ export default { updateCITypeAttributesById(this.CITypeId, { attributes: [{ attr_id: record.id, is_required: false }] }) .then(res => { - this.$message.success(`删除成功`) + this.$message.success(this.$t('tip.deleteSuccess')) this.handleOk() }) .catch(err => this.requestFailed(err)) @@ -269,7 +267,7 @@ export default { }, handleCreate () { - this.drawerTitle = '批量修改' + this.drawerTitle = this.$t('button.batchUpdate') this.visible = true }, @@ -300,7 +298,7 @@ export default { updateCITypeAttributesById(CITypeId, { attributes: requestData }).then( res => { - this.$message.success(`更新成功`) + this.$message.success(this.$t('tip.updateSuccess')) this.visible = false this.handleOk() } @@ -311,7 +309,7 @@ export default { }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/cmdb/modeling/ci_type/defaultShowTable.vue b/cmdb-ui/src/views/cmdb/modeling/ci_type/defaultShowTable.vue index a86f2ba..8bce049 100644 --- a/cmdb-ui/src/views/cmdb/modeling/ci_type/defaultShowTable.vue +++ b/cmdb-ui/src/views/cmdb/modeling/ci_type/defaultShowTable.vue @@ -1,6 +1,6 @@ <template> <div> - <a-button class="action-btn" @click="handleCreate" type="primary">批量修改</a-button> + <a-button class="action-btn" @click="handleCreate" type="primary">{{ $t('button.batchUpdate') }}</a-button> <s-table :alert="options.alert" :columns="columns" @@ -40,7 +40,7 @@ :render="item=>item.title" :selectedKeys="transferSelectedKeys" :targetKeys="transferTargetKeys" - :titles="['当前项', '已选项']" + :titles="[$t('tip.unselectedAttribute'), $t('tip.selectedAttribute')]" :listStyle="{ height: '600px', width: '42%' @@ -113,28 +113,28 @@ export default { showPagination: false, columns: [ { - title: '属性名', + title: this.$t('ciType.alias'), dataIndex: 'alias', sorter: false, width: 200, scopedSlots: { customRender: 'alias' } }, { - title: '属性英文名', + title: this.$t('ciType.name'), dataIndex: 'name', sorter: false, width: 200, scopedSlots: { customRender: 'name' } }, { - title: '默认显示', + title: this.$t('ciType.defaultShow'), dataIndex: 'default_show', sorter: false, scopedSlots: { customRender: 'is_check' } }, { - title: '操作', + title: this.$t('tip.operate'), dataIndex: 'action', width: 100, fixed: 'right', @@ -155,11 +155,8 @@ export default { }, mdl: {}, - // 高级搜索 展开/关闭 advanced: false, - // 查询参数 queryParam: {}, - // 表头 selectedRowKeys: [], selectedRows: [], @@ -261,7 +258,7 @@ export default { updateCITypeAttributesById(this.CITypeId, { attributes: [{ attr_id: record.id, default_show: false }] }) .then(res => { - this.$message.success(`删除成功`) + this.$message.success(this.$t('tip.deleteSuccess')) this.handleOk() }) .catch(err => this.requestFailed(err)) @@ -275,7 +272,7 @@ export default { }, handleCreate () { - this.drawerTitle = '批量修改' + this.drawerTitle = this.$t('button.batchUpdate') this.visible = true }, @@ -306,7 +303,7 @@ export default { updateCITypeAttributesById(CITypeId, { attributes: requestData }).then( res => { - this.$message.success(`更新成功`) + this.$message.success(this.$t('tip.updateSuccess')) this.visible = false this.handleOk() } @@ -317,7 +314,7 @@ export default { }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/cmdb/modeling/ci_type/detail.vue b/cmdb-ui/src/views/cmdb/modeling/ci_type/detail.vue index 6ba6f21..009449e 100644 --- a/cmdb-ui/src/views/cmdb/modeling/ci_type/detail.vue +++ b/cmdb-ui/src/views/cmdb/modeling/ci_type/detail.vue @@ -2,27 +2,27 @@ <a-card :bordered="false"> <a-tabs defaultActiveKey="1"> - <a-tab-pane key="1" tab="模型属性"> + <a-tab-pane key="1" :tab="$t('ciType.typeAttribute')"> <AttributesTable></AttributesTable> </a-tab-pane> - <a-tab-pane forceRender key="2" tab="模型关联"> + <a-tab-pane forceRender key="2" :tab="$t('ciType.typeRelation')"> <RelationTable :CITypeId="CITypeId" :CITypeName="CITypeName"></RelationTable> </a-tab-pane> - <a-tab-pane forceRender key="3" tab="必须校验"> + <a-tab-pane forceRender key="3" :tab="$t('ciType.requiredCheck')"> <CheckTable></CheckTable> </a-tab-pane> - <a-tab-pane forceRender key="4" tab="默认显示属性"> + <a-tab-pane forceRender key="4" :tab="$t('ciType.defaultShowAttribute')"> <DefaultShowTable></DefaultShowTable> </a-tab-pane> - <a-tab-pane forceRender key="5" tab="属性分组 & 排序"> + <a-tab-pane forceRender key="5" :tab="$t('ciType.attributeGroup')"> <Group></Group> </a-tab-pane> diff --git a/cmdb-ui/src/views/cmdb/modeling/ci_type/group.vue b/cmdb-ui/src/views/cmdb/modeling/ci_type/group.vue index 1329763..1868494 100644 --- a/cmdb-ui/src/views/cmdb/modeling/ci_type/group.vue +++ b/cmdb-ui/src/views/cmdb/modeling/ci_type/group.vue @@ -1,7 +1,7 @@ <template> <div> <div style="margin-bottom: 2rem"> - <a-button type="primary" v-if="addGroupBtnVisible" @click="handleAddGroup">添加分组</a-button> + <a-button type="primary" v-if="addGroupBtnVisible" @click="handleAddGroup">{{ $t('ciType.addGroup') }}</a-button> <template v-else> <span> @@ -11,7 +11,7 @@ style="width: 10rem;margin-right: 0.5rem" ref="addGroupInput" v-model.trim="newGroupName" /> - <a @click="handleCreateGroup" style="margin-right: 0.5rem">保存</a> + <a @click="handleCreateGroup" style="margin-right: 0.5rem">{{ $t('button.save') }}</a> <a @click="handleCancelCreateGroup">{{ $t('button.cancel') }}</a> </span> </template> @@ -36,7 +36,7 @@ style="width: 15%;margin-right: 0.5rem" ref="editGroupInput" v-model.trim="CITypeGroup.name" /> - <a @click="handleSaveGroupName(index, CITypeGroup)" style="margin-right: 0.5rem">保存</a> + <a @click="handleSaveGroupName(index, CITypeGroup)" style="margin-right: 0.5rem">{{ $t('button.save') }}</a> <a @click="handleCancelGroupName(index, CITypeGroup)">{{ $t('button.cancel') }}</a> </span> </template> @@ -46,27 +46,27 @@ <a-button-group size="small"> <a-tooltip> <template slot="title"> - 上移 + {{ $t('ciType.up') }} </template> <a-button icon="arrow-up" size="small" @click="handleMoveGroup(index, index-1)" :disabled="index===0"/> </a-tooltip> <a-tooltip> <template slot="title"> - 下移 + {{ $t('ciType.down') }} </template> <a-button icon="arrow-down" size="small" @click="handleMoveGroup(index, index+1)" :disabled="index===CITypeGroups.length-1" /> </a-tooltip> <a-tooltip> <template slot="title"> - 添加属性 + {{ $t('ciType.addAttribute1') }} </template> <a-button icon="plus" size="small" @click="handleAddExistGroupAttr(index)"/> </a-tooltip> <a-tooltip> <template slot="title"> - 删除分组 + {{ $t('ciType.deleteGroup') }} </template> <a-button icon="delete" size="small" @click="handleDeleteGroup(CITypeGroup.id)" :disabled="CITypeGroup.attributes.length!==0" /> @@ -108,7 +108,7 @@ <li class="property-item-empty" @click="handleAddExistGroupAttr(index)" - style="">添加属性</li> + style="">{{ $t('ciType.addAttribute1') }}</li> </template> @@ -121,34 +121,34 @@ <template> - <span style="margin-right: 0.2rem">更多属性</span> + <span style="margin-right: 0.2rem">{{ $t('ciType.moreAttribute') }}</span> <span style="color: #c3cdd7; margin-right: 0.5rem">({{ otherGroupAttributes.length }})</span> </template> <div style="float: right"> <a-button-group size="small"> <a-tooltip> <template slot="title"> - 上移 + {{ $t('ciType.up') }} </template> <a-button icon="arrow-up" size="small" disabled/> </a-tooltip> <a-tooltip> <template slot="title"> - 下移 + {{ $t('ciType.down') }} </template> <a-button icon="arrow-down" size="small" disabled /> </a-tooltip> <a-tooltip> <template slot="title"> - 添加属性 + {{ $t('ciType.addAttribute1') }} </template> <a-button icon="plus" size="small" @click="handleAddOtherGroupAttr"/> </a-tooltip> <a-tooltip> <template slot="title"> - 删除分组 + {{ $t('ciType.deleteGroup') }} </template> <a-button icon="delete" size="small" disabled /> @@ -182,14 +182,14 @@ <li class="property-item-empty" @click="handleAddOtherGroupAttr" - style="">添加属性</li> + style="">{{ $t('ciType.addAttribute1') }}</li> </template> </draggable> </div> <a-modal - title="添加字段" + :title="$t('ciType.addAttribute1')" :width="'80%'" v-model="modalVisible" @ok="handleSubmit" @@ -344,13 +344,13 @@ export default { if (CITypeGroup.name === CITypeGroup.originName) { this.handleCancelGroupName(index, CITypeGroup) } else if (this.CITypeGroups.map(x => x.originName).includes(CITypeGroup.name)) { - this.$message.error('分组名称已存在') + this.$message.error(this.$t('ciType.groupNameExisted')) } else { updateCITypeGroupById(CITypeGroup.id, { name: CITypeGroup.name, attributes: CITypeGroup.attributes.map(x => x.id), order: CITypeGroup.order }) .then(res => { CITypeGroup.editable = false this.$set(this.CITypeGroups, index, CITypeGroup) - this.$message.success('修改成功') + this.$message.success(this.$t('tip.updateSuccess')) }) .catch(err => this.requestFailed(err)) } @@ -389,14 +389,14 @@ export default { const fromGroupId = this.CITypeGroups[beforeIndex].id const toGroupId = this.CITypeGroups[afterIndex].id transferCITypeGroupIndex(this.CITypeId, { from: fromGroupId, to: toGroupId }).then(res => { - this.$message.success('操作成功') + this.$message.success(this.$t('ciType.moveSuccess')) const beforeGroup = this.CITypeGroups[beforeIndex] this.CITypeGroups[beforeIndex] = this.CITypeGroups[afterIndex] this.$set(this.CITypeGroups, beforeIndex, this.CITypeGroups[afterIndex]) this.$set(this.CITypeGroups, afterIndex, beforeGroup) }).catch(err => { - this.$httpError(err, '移动出错') + this.$httpError(err, this.$t('ciType.moveFailed')) }) }, handleAddExistGroupAttr (index) { @@ -463,13 +463,13 @@ export default { handleChange (e, group) { if (e.hasOwnProperty('moved') && e.moved.oldIndex !== e.moved.newIndex) { if (group === -1) { - this.$message.error('更多属性不能进行排序, 如需排序需添加入其他分组中!') + this.$message.error(this.$t('ciType.moreAttributeCannotSort')) } else { transferCITypeAttrIndex(this.CITypeId, { from: { attr_id: e.moved.element.id, group_id: group > -1 ? group : null }, to: { order: e.moved.newIndex, group_id: group > -1 ? group : null } - }).then(res => this.$message.success('保存成功')).catch(err => { + }).then(res => this.$message.success(this.$t('tip.saveSuccess'))).catch(err => { this.$httpError(err) this.abortDraggable() }) @@ -486,7 +486,7 @@ export default { { from: { attr_id: e.removed.element.id, group_id: group > -1 ? group : null }, to: { group_id: this.addRemoveGroupFlag.to.group_id, order: this.addRemoveGroupFlag.to.order } - }).then(res => this.$message.success('保存成功')).catch(err => { + }).then(res => this.$message.success(this.$t('tip.saveSuccess'))).catch(err => { this.$httpError(err) this.abortDraggable() }).finally(() => { @@ -501,9 +501,9 @@ export default { }) }, updatePropertyIndex () { - const attributes = [] // 全部属性 - let attributeOrder = 0 // 属性组 - let groupOrder = 0 // 组排序 + const attributes = [] // all attributes + let attributeOrder = 0 // attribute group + let groupOrder = 0 // sort by group const promises = [ ] @@ -548,14 +548,14 @@ export default { const that = this Promise.all(promises) .then(values => { - that.$message.success(`修改成功`) + that.$message.success(this.$t('tip.updateSuccess')) that.getCITypeGroupData() that.modalVisible = false }) .catch(err => that.requestFailed(err)) }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } }, diff --git a/cmdb-ui/src/views/cmdb/modeling/ci_type/list.vue b/cmdb-ui/src/views/cmdb/modeling/ci_type/list.vue index da7fe22..f9ae9f3 100644 --- a/cmdb-ui/src/views/cmdb/modeling/ci_type/list.vue +++ b/cmdb-ui/src/views/cmdb/modeling/ci_type/list.vue @@ -13,7 +13,7 @@ <template v-if="Object.keys(item).length === 0"> <a-button class="new-btn" type="dashed" @click="handleCreate"> <a-icon type="plus"/> - 新增 + {{ $t('ciType.add') }} </a-button> </template> <template v-else> @@ -28,7 +28,7 @@ <a-icon type="setting" /> </router-link> <a-icon type="edit" @click="handleEdit(item)"/> - <a-popconfirm title="确认删除" @confirm="handleDelete(item)" okText="是" cancelText="否"> + <a-popconfirm :title="$t('tip.confirmDelete')" @confirm="handleDelete(item)" :okText="$t('button.yes')" :cancelText="$t('button.no')"> <a-icon type="delete"/> </a-popconfirm> </template> @@ -66,18 +66,17 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="模型名(英文)" + :label="$t('ciType.name')" > <a-input name="name" - placeholder="英文" - v-decorator="['name', {rules: [{ required: true, message: '请输入属性名'},{message: '不能以数字开头,可以是英文 数字以及下划线 (_)', pattern: RegExp('^(?!\\d)[a-zA-Z_0-9]+$')}]} ]" + v-decorator="['name', {rules: [{ required: true, message: $t('ciType.nameRequired')},{message: $t('ciType.nameValidate'), pattern: RegExp('^(?!\\d)[a-zA-Z_0-9]+$')}]} ]" /> </a-form-item> <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="别名" + :label="$t('ciType.alias')" > <a-input name="alias" @@ -88,7 +87,7 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="唯一标识*" + :label="$t('ciType.unique') + '*'" > <a-select @@ -203,7 +202,7 @@ export default { }) }, handleCreate () { - this.drawerTitle = '新增模型' + this.drawerTitle = this.$t('ciType.newCIType') this.drawerVisible = true }, onClose () { @@ -211,7 +210,7 @@ export default { this.drawerVisible = false }, handleEdit (record) { - this.drawerTitle = '编辑模型' + this.drawerTitle = this.$t('ciType.editCIType') this.drawerVisible = true this.$nextTick(() => { @@ -228,7 +227,7 @@ export default { handleDelete (record) { deleteCIType(record.id) .then(res => { - this.$message.success(`删除成功`) + this.$message.success(this.$t('tip.deleteSuccess')) this.getCITypes() }) .catch(err => this.requestFailed(err)) @@ -252,7 +251,7 @@ export default { createCIType (data) { createCIType(data) .then(res => { - this.$message.success(`添加成功`) + this.$message.success(this.$t('tip.addSuccess')) this.drawerVisible = false this.getCITypes() }) @@ -262,14 +261,14 @@ export default { updateCIType (CITypeId, data) { updateCIType(CITypeId, data) .then(res => { - this.$message.success(`修改成功`) + this.$message.success(this.$t('tip.updateSuccess')) this.drawerVisible = false this.getCITypes() }) .catch(err => this.requestFailed(err)) }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/cmdb/modeling/ci_type/relationTable.vue b/cmdb-ui/src/views/cmdb/modeling/ci_type/relationTable.vue index 5c076f5..e64dc00 100644 --- a/cmdb-ui/src/views/cmdb/modeling/ci_type/relationTable.vue +++ b/cmdb-ui/src/views/cmdb/modeling/ci_type/relationTable.vue @@ -1,6 +1,6 @@ <template> <div> - <a-button class="action-btn" @click="handleCreate" type="primary">新增关系</a-button> + <a-button class="action-btn" @click="handleCreate" type="primary">{{ $t('ciType.newRelation') }}</a-button> <s-table :alert="options.alert" :columns="columns" @@ -38,21 +38,23 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="源模型" + :label="$t('ciType.sourceCIType')" > <a-select name="source_ci_type_id" style="width: 120px" v-decorator="['source_ci_type_id', {rules: [], } ]" > - <a-select-option :value="CIType.id" :key="CIType.id" v-for="CIType in CITypes" v-if="CITypeId === CIType.id">{{ CIType.alias }}</a-select-option> + <template v-for="CIType in CITypes"> + <a-select-option :value="CIType.id" :key="CIType.id" v-if="CITypeId == CIType.id">{{ CIType.alias }}</a-select-option> + </template> </a-select> </a-form-item> <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="目标模型" + :label="$t('ciType.targetCIType')" > <a-select name="ci_type_id" @@ -66,7 +68,7 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="关联关系" + :label="$t('ciType.relationType')" > <a-select name="relation_type_id" @@ -138,27 +140,27 @@ export default { showPagination: false, columns: [ { - title: '源模型英文名', + title: this.$t('ciType.sourceCIType') + this.$t('ciType.name'), dataIndex: 'source_ci_type_name', sorter: false, width: 200, scopedSlots: { customRender: 'source_ci_type_name' } }, { - title: '关联类型', + title: this.$t('ciType.relationType'), dataIndex: 'relation_type', sorter: false, width: 100, scopedSlots: { customRender: 'name' } }, { - title: '目标模型名', + title: this.$t('ciType.targetCIType') + this.$t('ciType.alias'), dataIndex: 'alias', sorter: false, scopedSlots: { customRender: 'alias' } }, { - title: '操作', + title: this.$t('tip.operate'), dataIndex: 'action', width: 100, fixed: 'right', @@ -189,9 +191,7 @@ export default { }, mdl: {}, - // 高级搜索 展开/关闭 advanced: false, - // 查询参数 queryParam: {}, // custom table alert & rowSelection options: { @@ -254,7 +254,7 @@ export default { deleteRelation(record.source_ci_type_id, record.id) .then(res => { - this.$message.success(`删除成功`) + this.$message.success(this.$t('tip.deleteSuccess')) this.handleOk() }).catch(err => this.requestFailed(err)) @@ -264,7 +264,7 @@ export default { }, handleCreate () { - this.drawerTitle = '新增关系' + this.drawerTitle = this.$t('ciType.newRelation') this.visible = true this.$nextTick(() => { this.form.setFieldsValue({ @@ -292,7 +292,7 @@ export default { createRelation(values.source_ci_type_id, values.ci_type_id, values.relation_type_id) .then(res => { - this.$message.success(`添加成功`) + this.$message.success(this.$t('tip.addSuccess')) this.onClose() this.handleOk() }).catch(err => this.requestFailed(err)) @@ -301,7 +301,7 @@ export default { }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/cmdb/modeling/preference_relation/index.vue b/cmdb-ui/src/views/cmdb/modeling/preference_relation/index.vue index fcc333f..fe12b77 100644 --- a/cmdb-ui/src/views/cmdb/modeling/preference_relation/index.vue +++ b/cmdb-ui/src/views/cmdb/modeling/preference_relation/index.vue @@ -1,8 +1,8 @@ <template> <div> - <a-card :bordered="true" title="关系视图定义面板"> - <a-card-meta description="方法1. 右键选择树节点(推荐)"></a-card-meta> - <a-card-meta description="方法2. 先打开右上角的开关,再选择树的节点"></a-card-meta> + <a-card :bordered="true" :title="$t('ciType.relationViewDefinePanel')"> + <a-card-meta :description="$t('ciType.relationViewDefinePanelTip1')"></a-card-meta> + <a-card-meta :description="$t('ciType.relationViewDefinePanelTip2')"></a-card-meta> <a-switch slot="extra" @change="toggleSelect" @@ -330,8 +330,8 @@ export default { deleteView (viewName) { const that = this this.$confirm({ - title: '警告', - content: '确认要删除吗 ?', + title: that.$t('tip.warning'), + content: that.$t('tip.confirmDelete'), onOk () { deleteRelationView(viewName).then(res => { that.create() diff --git a/cmdb-ui/src/views/cmdb/modeling/preference_relation/modules/RelationViewForm.vue b/cmdb-ui/src/views/cmdb/modeling/preference_relation/modules/RelationViewForm.vue index 7607b97..a17bf40 100644 --- a/cmdb-ui/src/views/cmdb/modeling/preference_relation/modules/RelationViewForm.vue +++ b/cmdb-ui/src/views/cmdb/modeling/preference_relation/modules/RelationViewForm.vue @@ -13,12 +13,12 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="关系视图名" + :label="$t('ciType.RealtionViewName')" > <a-input name="name" placeholder="" - v-decorator="['name', {rules: [{ required: true, message: '请输入 关系视图名'}]} ]" + v-decorator="['name', {rules: [{ required: true, message: $t('ciType.RealtionViewNameRequired')}]} ]" /> </a-form-item> @@ -59,7 +59,7 @@ export default { name: 'RelationViewForm', data () { return { - drawerTitle: '新增关系视图', + drawerTitle: this.$t('ciType.newRealtionView'), drawerVisible: false, formLayout: 'vertical', crIds: [] @@ -117,7 +117,7 @@ export default { data.cr_ids = this.crIds subscribeRelationView(data) .then(res => { - this.$message.success(`添加成功`) + this.$message.success(this.$t('tip.addSuccess')) this.onClose() this.$emit('refresh') }) @@ -126,7 +126,7 @@ export default { requestFailed (err) { console.log(err, 'error') - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/cmdb/modeling/relation_type/index.vue b/cmdb-ui/src/views/cmdb/modeling/relation_type/index.vue index 570ed1d..1affd40 100644 --- a/cmdb-ui/src/views/cmdb/modeling/relation_type/index.vue +++ b/cmdb-ui/src/views/cmdb/modeling/relation_type/index.vue @@ -2,14 +2,14 @@ <a-card :bordered="false"> <div class="action-btn"> - <a-button @click="handleCreate" type="primary" style="margin-right: 0.3rem;">{{ btnName }}</a-button> + <a-button @click="handleCreate" type="primary" style="margin-right: 0.3rem;">{{ $t('ciType.newRelationType') }}</a-button> </div> <s-table :alert="options.alert" :columns="columns" :data="loadData" - :pagination="{ showTotal: (total, range) => `${range[0]}-${range[1]} 共 ${total} 条记录`, pageSizeOptions: pageSizeOptions}" + :pagination="{ showTotal: (total, range) => `${range[0]}-${range[1]} ${total} records in total`, pageSizeOptions: pageSizeOptions}" :showPagination="false" :pageSize="25" :rowKey="record=>record.id" @@ -34,7 +34,7 @@ icon="search" size="small" style="width: 90px; margin-right: 8px" - >搜索</a-button> + >{{ $t('button.query') }}</a-button> <a-button @click="() => handleReset(clearFilters, column)" size="small" @@ -61,11 +61,11 @@ <a-divider type="vertical"/> <a-popconfirm - title="确认删除?" + :title="$t('tip.confirmDelete')" @confirm="handleDelete(record)" @cancel="cancel" - okText="是" - cancelText="否" + :okText="$t('button.yes')" + :cancelText="$t('button.no')" > <a>{{ $t('tip.delete') }}</a> </a-popconfirm> @@ -92,7 +92,6 @@ export default { data () { return { scroll: { x: 1000, y: 500 }, - btnName: '新增关系类型', formLayout: 'vertical', @@ -104,7 +103,7 @@ export default { columns: [ { width: 150, - title: '类型名', + title: this.$t('ciType.name'), dataIndex: 'name', sorter: false, scopedSlots: { @@ -123,7 +122,7 @@ export default { }, { width: 150, - title: '操作', + title: this.$t('tip.operate'), key: 'operation', scopedSlots: { customRender: 'action' } } @@ -139,11 +138,8 @@ export default { }, mdl: {}, - // 高级搜索 展开/关闭 advanced: false, - // 查询参数 queryParam: {}, - // 表头 selectedRowKeys: [], selectedRows: [], @@ -226,13 +222,13 @@ export default { deleteRelationType (id) { deleteRelationType(id) .then(res => { - this.$message.success(`删除成功`) + this.$message.success(this.$t('tip.deleteSuccess')) this.handleOk() }) .catch(err => this.requestFailed(err)) }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requestFailed') this.$message.error(`${msg}`) }, cancel () { diff --git a/cmdb-ui/src/views/cmdb/modeling/relation_type/modules/relationTypeForm.vue b/cmdb-ui/src/views/cmdb/modeling/relation_type/modules/relationTypeForm.vue index 03021c5..4ea219b 100644 --- a/cmdb-ui/src/views/cmdb/modeling/relation_type/modules/relationTypeForm.vue +++ b/cmdb-ui/src/views/cmdb/modeling/relation_type/modules/relationTypeForm.vue @@ -13,12 +13,12 @@ <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" - label="类型名" + :label="$t('ciType.name')" > <a-input name="name" placeholder="" - v-decorator="['name', {rules: [{ required: true, message: '请输入类型名'}]} ]" + v-decorator="['name', {rules: [{ required: true, message: $t('ciType.relationTypeNameRequired')}]} ]" /> </a-form-item> @@ -59,7 +59,7 @@ export default { name: 'RelationTypeForm', data () { return { - drawerTitle: '新增关系类型', + drawerTitle: this.$t('ciType.newRelationType'), drawerVisible: false, formLayout: 'vertical' } @@ -134,7 +134,7 @@ export default { updateRelationType (id, data) { updateRelationType(id, data) .then(res => { - this.$message.success(`更新成功`) + this.$message.success(this.$t('tip.updateSuccess')) this.handleOk() this.onClose() }).catch(err => this.requestFailed(err)) @@ -143,7 +143,7 @@ export default { createRelationType (data) { addRelationType(data) .then(res => { - this.$message.success(`添加成功`) + this.$message.success(this.$t('tip.addSuccess')) this.handleOk() this.onClose() }) @@ -151,7 +151,7 @@ export default { }, requestFailed (err) { - const msg = ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试' + const msg = ((err.response || {}).data || {}).message || this.$t('tip.requsetFailed') this.$message.error(`${msg}`) } diff --git a/cmdb-ui/src/views/user/Login.vue b/cmdb-ui/src/views/user/Login.vue index ed02c44..3bd13c4 100644 --- a/cmdb-ui/src/views/user/Login.vue +++ b/cmdb-ui/src/views/user/Login.vue @@ -12,15 +12,15 @@ :tabBarStyle="{ textAlign: 'center', borderBottom: 'unset' }" @change="handleTabClick" > - <a-tab-pane key="tab1" tab="账号密码登录"> + <a-tab-pane key="tab1" :tab="$t('login.loginHeader')"> <a-form-item> <a-input size="large" type="text" - placeholder="用户名或者邮箱" + :placeholder="$t('login.loginName')" v-decorator="[ 'username', - {rules: [{ required: true, message: '请输入帐户名或邮箱地址' }, { validator: handleUsernameOrEmail }], validateTrigger: 'change'} + {rules: [{ required: true, message: $t('login.loginNameRequired') }, { validator: handleUsernameOrEmail }], validateTrigger: 'change'} ]" > <a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }"/> @@ -32,10 +32,10 @@ size="large" type="password" autocomplete="false" - placeholder="密码" + :placeholder="$t('login.password')" v-decorator="[ 'password', - {rules: [{ required: true, message: '请输入密码' }], validateTrigger: 'blur'} + {rules: [{ required: true, message: $t('login.passwordRequired') }], validateTrigger: 'blur'} ]" > <a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }"/> @@ -45,7 +45,7 @@ </a-tabs> <a-form-item> - <a-checkbox v-decorator="['rememberMe']">自动登录</a-checkbox> + <a-checkbox v-decorator="['rememberMe']">{{ $t('login.autoLogin') }}</a-checkbox> </a-form-item> <a-form-item style="margin-top:24px"> @@ -142,18 +142,17 @@ export default { loginSuccess (res) { this.$router.push({ path: this.$route.query.redirect }) - // 延迟 1 秒显示欢迎信息 setTimeout(() => { this.$notification.success({ - message: '欢迎', - description: `${timeFix()},欢迎回来` + message: this.$t('login.welcome'), + description: `${timeFix()},` + this.$t('login.welcomeBack') }) }, 1000) }, requestFailed (err) { this.$notification['error']({ - message: '错误', - description: ((err.response || {}).data || {}).message || '请求出现错误,请稍后再试', + message: this.$t('tip.error'), + description: ((err.response || {}).data || {}).message || this.$t('tip.requestFailed'), duration: 4 }) }