From 2b3090b44c0fca3bc477ddc51cad9aa406780bd9 Mon Sep 17 00:00:00 2001 From: jiangweidong Date: Wed, 13 Apr 2022 11:02:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E8=B5=84=E4=BA=A7?= =?UTF-8?q?=E6=8E=88=E6=9D=83=E5=92=8C=E5=BA=94=E7=94=A8=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E7=9A=84=E6=89=B9=E9=87=8F=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApplicationPermissionList.vue | 49 +++++-- .../AssetPermission/AssetPermissionList.vue | 38 +++++- .../perms/components/PermBulkUpdateDialog.vue | 87 +++++++++++++ src/views/perms/fields.js | 120 ++++++++++++++++++ 4 files changed, 283 insertions(+), 11 deletions(-) create mode 100644 src/views/perms/components/PermBulkUpdateDialog.vue create mode 100644 src/views/perms/fields.js diff --git a/src/views/perms/ApplicationPermission/ApplicationPermissionList.vue b/src/views/perms/ApplicationPermission/ApplicationPermissionList.vue index e4897a0ed..b034c3a39 100644 --- a/src/views/perms/ApplicationPermission/ApplicationPermissionList.vue +++ b/src/views/perms/ApplicationPermission/ApplicationPermissionList.vue @@ -1,10 +1,17 @@ diff --git a/src/views/perms/AssetPermission/AssetPermissionList.vue b/src/views/perms/AssetPermission/AssetPermissionList.vue index 142df45cd..454aab0e2 100644 --- a/src/views/perms/AssetPermission/AssetPermissionList.vue +++ b/src/views/perms/AssetPermission/AssetPermissionList.vue @@ -1,16 +1,26 @@ + + diff --git a/src/views/perms/fields.js b/src/views/perms/fields.js new file mode 100644 index 000000000..2b0d8135d --- /dev/null +++ b/src/views/perms/fields.js @@ -0,0 +1,120 @@ +import AssetSelect from '@/components/AssetSelect' +import PermissionFormActionField from '@/views/perms/components/PermissionFormActionField' + +function getFields() { + const users = { + label: this.$t('users.Users'), + hidden: () => false, + el: { + value: [], + ajax: { + url: '/api/v1/users/users/?fields_size=mini', + transformOption: (item) => { + return { label: item.name + '(' + item.username + ')', value: item.id } + } + } + } + } + + const user_groups = { + label: this.$t('users.UserGroups'), + hidden: () => false, + el: { + value: [], + url: '/api/v1/users/groups/' + } + } + + const assets = { + type: 'assetSelect', + hidden: () => false, + component: AssetSelect, + label: this.$t('perms.Asset'), + rules: [{ + required: false + }], + el: { + value: [] + } + } + + const nodes = { + label: this.$t('perms.Node'), + hidden: () => false, + el: { + value: [], + ajax: { + url: '/api/v1/assets/nodes/', + transformOption: (item) => { + return { label: item.full_value, value: item.id } + } + } + } + } + + const system_users = { + label: this.$t('perms.SystemUser'), + hidden: () => false, + el: { + value: [], + ajax: { + url: '/api/v1/assets/system-users/?protocol__in=rdp,ssh,vnc,telnet', + transformOption: (item) => { + const username = item.username || '*' + return { label: item.name + '(' + username + ')', value: item.id } + } + } + } + } + + const actions = { + label: this.$t('perms.Actions'), + hidden: () => false, + component: PermissionFormActionField, + helpText: this.$t('common.actionsTips') + } + + const date_start = { + label: this.$t('common.dateStart'), + hidden: () => false + } + + const date_expired = { + label: this.$t('common.dateExpired'), + hidden: () => false + } + + const is_active = { + label: this.$t('assets.IsActive'), + type: 'checkbox' + } + + const applications = { + label: this.$t('assets.Applications'), + hidden: () => false, + el: { + value: [], + ajax: { + url: `/api/v1/applications/applications/`, + transformOption: (item) => { + return { label: item.name + ' (' + item.type_display + ')', value: item.id } + } + } + } + } + + return { + users: users, + user_groups: user_groups, + assets: assets, + applications: applications, + nodes: nodes, + system_users: system_users, + actions: actions, + is_active: is_active, + date_start: date_start, + date_expired: date_expired + } +} + +export default getFields