refactor: role setting
This commit is contained in:
parent
62cb3704cf
commit
efa2335b8d
@ -38,7 +38,7 @@ const systemRouter = {
|
|||||||
new ComplexPermission(
|
new ComplexPermission(
|
||||||
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
|
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
|
||||||
[PermissionConst.ROLE_READ, PermissionConst.WORKSPACE_ROLE_READ],
|
[PermissionConst.ROLE_READ, PermissionConst.WORKSPACE_ROLE_READ],
|
||||||
[EditionConst.IS_EE],
|
[EditionConst.IS_EE, EditionConst.IS_PE],
|
||||||
'OR',
|
'OR',
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data'
|
import {PermissionConst, EditionConst, RoleConst} from '@/utils/permission/data'
|
||||||
import { hasPermission } from '@/utils/permission/index'
|
import {hasPermission} from '@/utils/permission/index'
|
||||||
import roleSystemApi from '@/api/system/role'
|
import roleSystemApi from '@/api/system/role'
|
||||||
import roleWorkspaceApi from '@/api/workspace/role'
|
import roleWorkspaceApi from '@/api/workspace/role'
|
||||||
import { ComplexPermission } from '../permission/type'
|
import {ComplexPermission} from '../permission/type'
|
||||||
|
|
||||||
// 系统管理员 API
|
// 系统管理员 API
|
||||||
const systemApiMap = {
|
const systemApiMap = {
|
||||||
@ -19,19 +19,20 @@ const workspaceApiMap = {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
export function loadPermissionApi(type: string) {
|
export function loadPermissionApi(type: string) {
|
||||||
if (hasPermission(EditionConst.IS_EE, 'OR')) {
|
if (hasPermission([EditionConst.IS_EE, EditionConst.IS_PE], 'OR')) {
|
||||||
if (hasPermission(new ComplexPermission (
|
if (hasPermission(new ComplexPermission(
|
||||||
[RoleConst.ADMIN],
|
[RoleConst.ADMIN],
|
||||||
[PermissionConst.ROLE_READ],
|
[PermissionConst.ROLE_READ],
|
||||||
[],
|
[],
|
||||||
'OR'),'OR')) {
|
'OR'), 'OR')) {
|
||||||
// 加载系统管理员 API
|
// 加载系统管理员 API
|
||||||
return systemApiMap[type]
|
return systemApiMap[type]
|
||||||
} if (hasPermission(new ComplexPermission (
|
}
|
||||||
|
if (hasPermission(new ComplexPermission(
|
||||||
[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
|
[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
|
||||||
[PermissionConst.WORKSPACE_ROLE_READ.getWorkspacePermissionWorkspaceManageRole],
|
[PermissionConst.WORKSPACE_ROLE_READ.getWorkspacePermissionWorkspaceManageRole],
|
||||||
[],
|
[],
|
||||||
'OR'),'OR' )) {
|
'OR'), 'OR')) {
|
||||||
// 加载企业版工作空间管理员 API
|
// 加载企业版工作空间管理员 API
|
||||||
return workspaceApiMap[type]
|
return workspaceApiMap[type]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,17 +21,19 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { onBeforeMount, ref } from 'vue'
|
import {onBeforeMount, ref} from 'vue'
|
||||||
import type { CreateMemberParamsItem, FormItemModel } from '@/api/type/role'
|
import type {CreateMemberParamsItem, FormItemModel} from '@/api/type/role'
|
||||||
import UserApi from '@/api/user/user'
|
import UserApi from '@/api/user/user'
|
||||||
import WorkspaceApi from '@/api/workspace/workspace'
|
import WorkspaceApi from '@/api/workspace/workspace'
|
||||||
import MemberFormContent from './MemberFormContent.vue'
|
import MemberFormContent from './MemberFormContent.vue'
|
||||||
import { t } from '@/locales'
|
import {t} from '@/locales'
|
||||||
import type { RoleItem } from '@/api/type/role'
|
import type {RoleItem} from '@/api/type/role'
|
||||||
import { MsgSuccess } from '@/utils/message'
|
import {MsgSuccess} from '@/utils/message'
|
||||||
import { RoleTypeEnum } from '@/enums/system'
|
import {RoleTypeEnum} from '@/enums/system'
|
||||||
import { loadPermissionApi } from '@/utils/dynamics-api/permission-api'
|
import {loadPermissionApi} from '@/utils/dynamics-api/permission-api'
|
||||||
|
import useStore from "@/stores";
|
||||||
|
|
||||||
|
const {user} = useStore()
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
currentRole?: RoleItem
|
currentRole?: RoleItem
|
||||||
}>()
|
}>()
|
||||||
@ -108,16 +110,18 @@ async function getWorkspaceFormItem() {
|
|||||||
function init() {
|
function init() {
|
||||||
if (props.currentRole?.type !== RoleTypeEnum.ADMIN) {
|
if (props.currentRole?.type !== RoleTypeEnum.ADMIN) {
|
||||||
formItemModel.value = [...userFormItem.value, ...workspaceFormItem.value]
|
formItemModel.value = [...userFormItem.value, ...workspaceFormItem.value]
|
||||||
list.value = [{ user_ids: [], workspace_ids: [] }]
|
list.value = [{user_ids: [], workspace_ids: []}]
|
||||||
} else {
|
} else {
|
||||||
formItemModel.value = [...userFormItem.value]
|
formItemModel.value = [...userFormItem.value]
|
||||||
list.value = [{ user_ids: [] }]
|
list.value = [{user_ids: []}]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onBeforeMount(async () => {
|
onBeforeMount(async () => {
|
||||||
await getUserFormItem()
|
await getUserFormItem()
|
||||||
await getWorkspaceFormItem()
|
if (user.isEE()) {
|
||||||
|
await getWorkspaceFormItem()
|
||||||
|
}
|
||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -131,16 +135,19 @@ function handleCancel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const memberFormContentRef = ref<InstanceType<typeof MemberFormContent>>()
|
const memberFormContentRef = ref<InstanceType<typeof MemberFormContent>>()
|
||||||
|
|
||||||
function handleAdd() {
|
function handleAdd() {
|
||||||
memberFormContentRef.value?.validate().then(async (valid: any) => {
|
memberFormContentRef.value?.validate().then(async (valid: any) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
let params
|
let params
|
||||||
if (props.currentRole?.type === RoleTypeEnum.ADMIN) {
|
if (props.currentRole?.type === RoleTypeEnum.ADMIN) {
|
||||||
params = list.value.map((item) => ({ user_ids: item.user_ids, workspace_ids: ['None'] }))
|
params = list.value.map((item) => ({user_ids: item.user_ids, workspace_ids: ['None']}))
|
||||||
|
} else if (user.isPE()) {
|
||||||
|
params = list.value.map((item) => ({user_ids: item.user_ids, workspace_ids: ['default']}))
|
||||||
}
|
}
|
||||||
await loadPermissionApi('role').CreateMember(
|
await loadPermissionApi('role').CreateMember(
|
||||||
props.currentRole?.id as string,
|
props.currentRole?.id as string,
|
||||||
{ members: params ?? list.value },
|
{members: params ?? list.value},
|
||||||
loading,
|
loading,
|
||||||
)
|
)
|
||||||
MsgSuccess(t('common.addSuccess'))
|
MsgSuccess(t('common.addSuccess'))
|
||||||
@ -150,5 +157,5 @@ function handleAdd() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ open })
|
defineExpose({open})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -53,11 +53,11 @@
|
|||||||
<span>{{ userForm.password }}</span>
|
<span>{{ userForm.password }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<h4 class="title-decoration-1 mb-16 mt-8" v-if="user.isEE()">
|
<h4 class="title-decoration-1 mb-16 mt-8" v-if="user.isEE() || user.isPE()">
|
||||||
{{ $t('views.userManage.roleSetting') }}</h4>
|
{{ $t('views.userManage.roleSetting') }}</h4>
|
||||||
<MemberFormContent ref="memberFormContentRef" :models="formItemModel" v-model:form="list"
|
<MemberFormContent ref="memberFormContentRef" :models="formItemModel" v-model:form="list"
|
||||||
v-loading="memberFormContentLoading"
|
v-loading="memberFormContentLoading"
|
||||||
:addText="$t('views.userManage.addRole')" v-if="user.isEE()"/>
|
:addText="$t('views.userManage.addRole')" v-if="user.isEE() || user.isPE()"/>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click.prevent="visible = false"> {{ $t('common.cancel') }}</el-button>
|
<el-button @click.prevent="visible = false"> {{ $t('common.cancel') }}</el-button>
|
||||||
<el-button type="primary" @click="submit(userFormRef)" :loading="loading">
|
<el-button type="primary" @click="submit(userFormRef)" :loading="loading">
|
||||||
@ -152,9 +152,11 @@ async function getWorkspaceFormItem() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onBeforeMount(async () => {
|
onBeforeMount(async () => {
|
||||||
if (user.isEE()) {
|
if (user.isEE() || user.isPE()) {
|
||||||
await getRoleFormItem();
|
await getRoleFormItem();
|
||||||
await getWorkspaceFormItem();
|
if (user.isEE()) {
|
||||||
|
await getWorkspaceFormItem();
|
||||||
|
}
|
||||||
formItemModel.value = [...roleFormItem.value, ...workspaceFormItem.value]
|
formItemModel.value = [...roleFormItem.value, ...workspaceFormItem.value]
|
||||||
}
|
}
|
||||||
list.value = [{role_id: '', workspace_ids: []}]
|
list.value = [{role_id: '', workspace_ids: []}]
|
||||||
@ -262,10 +264,17 @@ const submit = async (formEl: FormInstance | undefined) => {
|
|||||||
if (memberFormContentRef.value) {
|
if (memberFormContentRef.value) {
|
||||||
await memberFormContentRef.value?.validate()
|
await memberFormContentRef.value?.validate()
|
||||||
}
|
}
|
||||||
|
if (user.isPE()) {
|
||||||
|
list.value = list.value.map(item => ({
|
||||||
|
...item,
|
||||||
|
workspace_ids: adminRoleList.value.find(item1 => item1.id === item.role_id) ? ['None'] : ['default']
|
||||||
|
}))
|
||||||
|
}
|
||||||
const params = {
|
const params = {
|
||||||
...userForm.value,
|
...userForm.value,
|
||||||
role_setting: list.value
|
role_setting: list.value
|
||||||
}
|
}
|
||||||
|
console.log(list.value)
|
||||||
if (isEdit.value) {
|
if (isEdit.value) {
|
||||||
userManageApi.putUserManage(userForm.value.id, params, loading).then((res) => {
|
userManageApi.putUserManage(userForm.value.id, params, loading).then((res) => {
|
||||||
emit('refresh')
|
emit('refresh')
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
v-hasPermission="[
|
v-hasPermission="[
|
||||||
RoleConst.ADMIN,
|
RoleConst.ADMIN,
|
||||||
PermissionConst.USER_CREATE
|
PermissionConst.USER_CREATE
|
||||||
]"
|
]"
|
||||||
>{{
|
>{{
|
||||||
$t('views.userManage.createUser')
|
$t('views.userManage.createUser')
|
||||||
}}
|
}}
|
||||||
@ -92,7 +92,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="role" :label="$t('views.role.member.role')" min-width="100"
|
<el-table-column prop="role" :label="$t('views.role.member.role')" min-width="100"
|
||||||
v-if="user.isEE()">
|
v-if="user.isEE() || user.isPE()">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<TagGroup :tags="row.role"/>
|
<TagGroup :tags="row.role"/>
|
||||||
</template>
|
</template>
|
||||||
@ -129,7 +129,7 @@
|
|||||||
size="small"
|
size="small"
|
||||||
v-model="row.is_active"
|
v-model="row.is_active"
|
||||||
:before-change="() => changeState(row)"
|
:before-change="() => changeState(row)"
|
||||||
v-if="hasPermission([RoleConst.ADMIN,PermissionConst.USER_EDIT],'OR')"
|
v-if="hasPermission([RoleConst.ADMIN,PermissionConst.USER_EDIT],'OR')"
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
<el-divider direction="vertical"/>
|
<el-divider direction="vertical"/>
|
||||||
@ -146,7 +146,7 @@
|
|||||||
text
|
text
|
||||||
@click.stop="editPwdUser(row)"
|
@click.stop="editPwdUser(row)"
|
||||||
:title="$t('views.userManage.setting.updatePwd')"
|
:title="$t('views.userManage.setting.updatePwd')"
|
||||||
v-if="hasPermission([RoleConst.ADMIN,PermissionConst.USER_EDIT],'OR')"
|
v-if="hasPermission([RoleConst.ADMIN,PermissionConst.USER_EDIT],'OR')"
|
||||||
>
|
>
|
||||||
<el-icon><Lock/></el-icon>
|
<el-icon><Lock/></el-icon>
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -158,7 +158,7 @@
|
|||||||
text
|
text
|
||||||
@click.stop="deleteUserManage(row)"
|
@click.stop="deleteUserManage(row)"
|
||||||
:title="$t('common.delete')"
|
:title="$t('common.delete')"
|
||||||
v-if="hasPermission([RoleConst.ADMIN,PermissionConst.USER_DELETE],'OR')"
|
v-if="hasPermission([RoleConst.ADMIN,PermissionConst.USER_DELETE],'OR')"
|
||||||
>
|
>
|
||||||
<el-icon><Delete/></el-icon>
|
<el-icon><Delete/></el-icon>
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user