@ -15,92 +15,113 @@
< el-option v-for = "dict in sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" / >
< el-option v-for = "dict in sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" / >
< / el-select >
< / el-select >
< / el-form-item >
< / el-form-item >
< el-form-item label = "创建时间" style = "width: 308px" >
< el-date-picker
v-model = "dateRange"
value -format = " YYYY -MM -DD HH : mm : ss "
type = "daterange"
range -separator = " - "
start -placeholder = " 开始日期 "
end -placeholder = " 结束日期 "
: default -time = " [ new Date ( 2000 , 1 , 1 , 0 , 0 , 0 ) , new Date ( 2000 , 1 , 1 , 23 , 59 , 59 ) ] "
> < / el-date-picker >
< / el-form-item >
< el-form-item >
< el-form-item >
< el-button type = "primary" icon = "Search" @click ="handleQuery" > 搜索 < / el -button >
< el-button type = "primary" icon = "Search" @click ="handleQuery" v-hasPermi = "['system:role:query']" >搜索 < / el -button >
< el-button icon = "Refresh" @click ="resetQuery" > 重置 < / el -button >
< el-button icon = "Refresh" @click ="resetQuery" > 重置 < / el -button >
< / el-form-item >
< / el-form-item >
< / el-form >
< / el-form >
< / el-card >
< / el-card >
< / div >
< / div >
< / transition >
< / transition >
< el-row :gutter = "20" >
< el-card shadow = "hover" >
<!-- 部门树 -- >
< template # header >
< el-col :lg = "4" :xs = "24" style = "" >
< el-row :gutter = "10 " >
< el-card shadow = "hover " >
< el-col :span = "1.5" >
< el-input v-model = "deptName" placeholder="请输入部门名称" prefix-icon="Search" clearable / >
< el-button v-hasPermi = "['system:role:add']" type="primary" plain icon="Plus" @click="handleAdd()" > 新增 < / el -button >
< el-tree
< / el-col >
ref = "deptTreeRef"
< el-col :span = "1.5" >
class = "mt-2"
< el-button v-hasPermi = "['system:role:edit']" type="success" plain :disabled="single" icon="Edit" @click="handleUpdate()" > 修改 < / el -button >
node -key = " id "
< / el-col >
:data = "deptOptions"
< el-col :span = "1.5" >
: props = "{ label: 'label', children: 'children' }"
< el-button v-hasPermi = "['system:role:delete']" type="danger" plain :disabled="ids.length === 0" @click="handleDelete()" > 删除 < / el -button >
:expand-on-click-node = "false"
< / el-col >
:filter-node-method = "filterNode"
< el-col :span = "1.5" >
highlight -current
< el-button v-hasPermi = "['system:role:export']" type="warning" plain icon="Download" @click="handleExport" > 导出 < / el -button >
default -expand -all
< / el-col >
@ node -click = " handleNodeClick "
< right-toolbar v -model :show-search = "showSearch" @ query -table = " getList " > < / right-toolbar >
/ >
< / el-row >
< / el-card >
< / template >
< / el-col >
< el-col :lg = "20" :xs = "24" >
< el-table ref = "roleTableRef" border v-loading = "loading" :data="roleList" @selection-change="handleSelectionChange" >
< el-card shadow = "hover" >
< el -table -column type = "selection" width = "55" align = "center" / >
< template # header >
< el-table-column v-if = "false" label="角色编号" prop="roleId" width="120" / >
< el-row :gutter = "10" >
< el-table-column label = "角色名称" prop = "roleName" :show-overflow-tooltip = "true" width = "150" / >
< el-col :span = "1.5" >
< el-table-column label = "权限字符" prop = "roleKey" :show-overflow-tooltip = "true" width = "200" / >
< el-button v-hasPermi = "['system:role:add']" type="primary" plain icon="Plus" @click="handleAdd()" > 新增 < / el -button >
< el-table-column label = "显示顺序" prop = "roleSort" width = "100" / >
< / el-col >
< el-table-column label = "状态" align = "center" width = "100 " >
< el-col :span = "1.5 " >
< template # default = "scope" >
< el-button v-hasPermi = "['system:role:edit']" type="success" plain :disabled="single" icon="Edit" @click="handleUpdate()"
< el-switch v-model = "scope.row.status" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)" > < / el -switch >
> 修改 < / e l - b u t t o n
>
< / el-col >
< el-col :span = "1.5" >
< el-button v-hasPermi = "['system:role:delete']" type="danger" plain :disabled="ids.length === 0" @click="handleDelete()"
> 删除 < / e l - b u t t o n
>
< / el-col >
< right-toolbar v -model :show-search = "showSearch" @ query -table = " getList " > < / right-toolbar >
< / el-row >
< / template >
< / template >
</ el-table-column >
< el-table ref = "roleTableRef" v-loading = "loading" :data="roleList" @selection-change="handleSelectionChange" >
< el-table-column label = "创建时间" align = "center" prop = "createTime" >
< el -table -column type = "selection" width = "55" align = "center" / >
< template # default = "scope" >
< el-table-column v-if = "false" label="角色编号" prop="roleId" width="120" / >
< span > { { proxy . parseTime ( scope . row . createTime ) } } < / span >
< el-table-column label = "角色名称" prop = "roleName" :show-overflow-tooltip = "true" width = "150" / >
< / template >
< el-table-column label = "权限字符" prop = "roleKey" :show-overflow-tooltip = "true" width = "200" / >
</ el-table-column >
< el-table-column label = "显示顺序" prop = "roleSort" width = "100" / >
< el-table-column label = "状态" align = "center" width = "100" >
< template # default = "scope" >
< el-switch v-model = "scope.row.status" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)" > < / el -switch >
< / template >
< / el-table-column >
< el-table-column label = "创建时间" align = "center" prop = "createTime" >
< template # default = "scope" >
< span > { { proxy . parseTime ( scope . row . createTime ) } } < / span >
< / template >
< / el-table-column >
< el-table-column fixed = "right" label = "操作" width = "180" >
< el-table-column fixed = "right" label = "操作" width = "180" >
< template # default = "scope" >
< template # default = "scope" >
< el-tooltip v-if = "scope.row.roleId !== 1" content="修改" placement="top" >
< el-tooltip v-if = "scope.row.roleId !== 1" content="修改" placement="top" >
< el -button v-hasPermi = "['system:role:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)" > < / el -button >
< el -button v-hasPermi = "['system:role:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)" > < / el -button >
< / el-tooltip >
< / el-tooltip >
< el-tooltip v-if = "scope.row.roleId !== 1" content="删除" placement="top" >
< el-tooltip v-if = "scope.row.roleId !== 1" content="删除" placement="top" >
< el -button v-hasPermi = "['system:role:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)" > < / el -button >
< el -button v-hasPermi = "['system:role:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)" > < / el -button >
< / el-tooltip >
< / el-tooltip >
< el-tooltip v-if = "scope.row.roleId !== 1" content="数据权限" placement="top" >
< el-tooltip v-if = "scope.row.roleId !== 1" content="数据权限" placement="top" >
< el -button v-hasPermi = "['system:role:edit']" link type="primary" icon="CircleCheck" @click="handleDataScope(scope.row)" > < / el -button >
< el -button v-hasPermi = "['system:role:edit']" link type="primary" icon="CircleCheck" @click="handleDataScope(scope.row)" > < / el -button >
< / el-tooltip >
< / el-tooltip >
< el-tooltip v-if = "scope.row.roleId !== 1" content="分配用户" placement="top" >
< el-tooltip v-if = "scope.row.roleId !== 1" content="分配用户" placement="top" >
< el -button v-hasPermi = "['system:role:edit']" link type="primary" icon="User" @click="handleAuthUser(scope.row)" > < / el -button >
< el -button v-hasPermi = "['system:role:edit']" link type="primary" icon="User" @click="handleAuthUser(scope.row)" > < / el -button >
< / el-tooltip >
< / el-tooltip >
< / template >
< / template >
< / el-table-column >
< / el-table-column >
< / el-table >
< / el-table >
< pagination
< pagination
v-if = "total > 0"
v-if = "total > 0"
v -model :total = "total"
v -model :total = "total"
v -model :page = "queryParams.pageNum"
v -model :page = "queryParams.pageNum"
v -model :limit = "queryParams.pageSize"
v -model :limit = "queryParams.pageSize"
@pagination ="getList"
@pagination ="getList"
/ >
/ >
< / el-card >
< / el-card >
< / el-col >
< / el-row >
< el-dialog v-model = "dialog.visible" :title="dialog.title" width="500px" append -to -body >
< el-dialog v-model = "dialog.visible" :title="dialog.title" width="500px" append -to -body >
< el-form ref = "roleFormRef" :model = "form" :rules = "rules" label -width = " 10 0px " >
< el-form ref = "roleFormRef" :model = "form" :rules = "rules" label -width = " 11 0px " >
< el-form-item label = "所属部门" prop = "deptId" >
< el-cascader
:options = "deptOptions"
v-model = "form.deptId"
placeholder = "请选择所属部门"
clearable
filterable
:show-all-levels = "false"
: props = "{ value: 'id', emitPath: false, checkStrictly: true }"
>
< / el-cascader >
< / el-form-item >
< el-form-item label = "角色名称" prop = "roleName" >
< el-form-item label = "角色名称" prop = "roleName" >
< el-input v-model = "form.roleName" placeholder="请输入角色名称" / >
< el-input v-model = "form.roleName" placeholder="请输入角色名称" / >
< / el-form-item >
< / el-form-item >
@ -124,7 +145,7 @@
< / el-radio-group >
< / el-radio-group >
< / el-form-item >
< / el-form-item >
< el-form-item label = "菜单权限" >
< el-form-item label = "菜单权限" >
< el-checkbox v-model = "menuExpand" @change="handleCheckedTreeExpand($event, 'menu')" > 展开 / 折叠 < / el -checkbox >
< el-checkbox v-model = "menuExpand" @change="handleCheckedTreeExpand(Boolean( $event) , 'menu')" > 展开 / 折叠 < / el -checkbox >
< el-checkbox v-model = "menuNodeAll" @change="handleCheckedTreeNodeAll($event, 'menu')" > 全选 / 全不选 < / el -checkbox >
< el-checkbox v-model = "menuNodeAll" @change="handleCheckedTreeNodeAll($event, 'menu')" > 全选 / 全不选 < / el -checkbox >
< el-checkbox v-model = "form.menuCheckStrictly" @change="handleCheckedTreeConnect($event, 'menu')" > 父子联动 < / el -checkbox >
< el-checkbox v-model = "form.menuCheckStrictly" @change="handleCheckedTreeConnect($event, 'menu')" > 父子联动 < / el -checkbox >
< el-tree
< el-tree
@ -135,9 +156,12 @@
node -key = " id "
node -key = " id "
:check-strictly = "!form.menuCheckStrictly"
:check-strictly = "!form.menuCheckStrictly"
empty -text = " 加载中 , 请稍候 "
empty -text = " 加载中 , 请稍候 "
: props = "{ label: 'label', children: 'children' } as any "
: props = "{ label: 'label', children: 'children' }"
> < / el-tree >
> < / el-tree >
< / el-form-item >
< / el-form-item >
< el-form-item label = "是否为特殊角色" >
< el-switch v-model = "form.isSpecial" active-value="1" inactive-value="0" active-text="是" inactive-text="否" > < / el -switch >
< / el-form-item >
< el-form-item label = "备注" >
< el-form-item label = "备注" >
< el-input v-model = "form.remark" type="textarea" placeholder="请输入内容" > < / el -input >
< el-input v-model = "form.remark" type="textarea" placeholder="请输入内容" > < / el -input >
< / el-form-item >
< / el-form-item >
@ -165,7 +189,7 @@
< / el-select >
< / el-select >
< / el-form-item >
< / el-form-item >
< el-form-item v-show = "form.dataScope === '2'" label="数据权限" >
< el-form-item v-show = "form.dataScope === '2'" label="数据权限" >
< el -checkbox v-model = "deptExpand" @change="handleCheckedTreeExpand($event, 'dept')" > 展开 / 折叠 < / el -checkbox >
< el -checkbox v-model = "deptExpand" @change="handleCheckedTreeExpand(Boolean( $event) , 'dept')" > 展开 / 折叠 < / el -checkbox >
< el-checkbox v-model = "deptNodeAll" @change="handleCheckedTreeNodeAll($event, 'dept')" > 全选 / 全不选 < / el -checkbox >
< el-checkbox v-model = "deptNodeAll" @change="handleCheckedTreeNodeAll($event, 'dept')" > 全选 / 全不选 < / el -checkbox >
< el-checkbox v-model = "form.deptCheckStrictly" @change="handleCheckedTreeConnect($event, 'dept')" > 父子联动 < / el -checkbox >
< el-checkbox v-model = "form.deptCheckStrictly" @change="handleCheckedTreeConnect($event, 'dept')" > 父子联动 < / el -checkbox >
< el-tree
< el-tree
@ -177,7 +201,7 @@
node -key = " id "
node -key = " id "
:check-strictly = "!form.deptCheckStrictly"
:check-strictly = "!form.deptCheckStrictly"
empty -text = " 加载中 , 请稍候 "
empty -text = " 加载中 , 请稍候 "
: props = "{ label: 'label', children: 'children' } as any "
: props = "{ label: 'label', children: 'children' }"
> < / el-tree >
> < / el-tree >
< / el-form-item >
< / el-form-item >
< / el-form >
< / el-form >
@ -196,6 +220,8 @@ import { addRole, changeRoleStatus, dataScope, delRole, getRole, listRole, updat
import { roleMenuTreeselect , treeselect as menuTreeselect } from '@/api/system/menu/index' ;
import { roleMenuTreeselect , treeselect as menuTreeselect } from '@/api/system/menu/index' ;
import { RoleVO , RoleForm , RoleQuery , DeptTreeOption } from '@/api/system/role/types' ;
import { RoleVO , RoleForm , RoleQuery , DeptTreeOption } from '@/api/system/role/types' ;
import { MenuTreeOption , RoleMenuTree } from '@/api/system/menu/types' ;
import { MenuTreeOption , RoleMenuTree } from '@/api/system/menu/types' ;
import api from '@/api/system/user' ;
import { DeptTreeVO , DeptVO } from '@/api/system/dept/types' ;
const router = useRouter ( ) ;
const router = useRouter ( ) ;
const { proxy } = getCurrentInstance ( ) as ComponentInternalInstance ;
const { proxy } = getCurrentInstance ( ) as ComponentInternalInstance ;
@ -214,8 +240,11 @@ const menuExpand = ref(false);
const menuNodeAll = ref ( false ) ;
const menuNodeAll = ref ( false ) ;
const deptExpand = ref ( true ) ;
const deptExpand = ref ( true ) ;
const deptNodeAll = ref ( false ) ;
const deptNodeAll = ref ( false ) ;
const deptOptions = ref < DeptTreeOption [ ] > ( [ ] ) ;
const deptOptions = ref < DeptTreeV O [ ] > ( [ ] ) ;
const enabledDeptOptions = ref < DeptTreeVO [ ] > ( [ ] ) ;
const openDataScope = ref ( false ) ;
const openDataScope = ref ( false ) ;
const deptName = ref ( '' ) ;
/** 数据范围选项*/
/** 数据范围选项*/
const dataScopeOptions = ref ( [
const dataScopeOptions = ref ( [
@ -232,8 +261,9 @@ const roleFormRef = ref<ElFormInstance>();
const dataScopeRef = ref < ElFormInstance > ( ) ;
const dataScopeRef = ref < ElFormInstance > ( ) ;
const menuRef = ref < ElTreeInstance > ( ) ;
const menuRef = ref < ElTreeInstance > ( ) ;
const deptRef = ref < ElTreeInstance > ( ) ;
const deptRef = ref < ElTreeInstance > ( ) ;
const deptTreeRef = ref < ElTreeInstance > ( ) ;
const initForm : RoleForm = {
const initForm = {
roleId : undefined ,
roleId : undefined ,
roleSort : 1 ,
roleSort : 1 ,
status : '0' ,
status : '0' ,
@ -244,17 +274,22 @@ const initForm: RoleForm = {
remark : '' ,
remark : '' ,
dataScope : '1' ,
dataScope : '1' ,
menuIds : [ ] ,
menuIds : [ ] ,
deptIds : [ ]
deptId : '' ,
isSpecial : null ,
deptIds : [ ] ,
roleSource : '1'
} ;
} ;
const data = reactive < PageData < RoleForm , RoleQuery > > ({
const data = reactive ( {
form : { ... initForm } ,
form : { ... initForm } ,
queryParams : {
queryParams : {
pageNum : 1 ,
pageNum : 1 ,
pageSize : 10 ,
pageSize : 10 ,
roleName : '' ,
roleName : '' ,
roleKey : '' ,
roleKey : '' ,
status : ''
deptId : '' ,
status : '' ,
roleSource : '1'
} ,
} ,
rules : {
rules : {
roleName : [ { required : true , message : '角色名称不能为空' , trigger : 'blur' } ] ,
roleName : [ { required : true , message : '角色名称不能为空' , trigger : 'blur' } ] ,
@ -269,6 +304,18 @@ const dialog = reactive<DialogOption>({
title : ''
title : ''
} ) ;
} ) ;
/** 通过条件过滤节点 */
const filterNode = ( value : string , data : any ) => {
if ( ! value ) return true ;
return data . label . indexOf ( value ) !== - 1 ;
} ;
/** 节点单击事件 */
const handleNodeClick = ( data : DeptVO ) => {
queryParams . value . deptId = data . id as string ;
handleQuery ( ) ;
} ;
/**
/**
* 查询角色列表
* 查询角色列表
*/
*/
@ -293,6 +340,9 @@ const handleQuery = () => {
const resetQuery = ( ) => {
const resetQuery = ( ) => {
dateRange . value = [ '' , '' ] ;
dateRange . value = [ '' , '' ] ;
queryFormRef . value ? . resetFields ( ) ;
queryFormRef . value ? . resetFields ( ) ;
queryParams . value . pageNum = 1 ;
queryParams . value . deptId = undefined ;
deptTreeRef . value ? . setCurrentKey ( undefined ) ;
handleQuery ( ) ;
handleQuery ( ) ;
} ;
} ;
/**删除按钮操作 */
/**删除按钮操作 */
@ -323,7 +373,7 @@ const handleSelectionChange = (selection: RoleVO[]) => {
/** 角色状态修改 */
/** 角色状态修改 */
const handleStatusChange = async ( row : RoleVO ) => {
const handleStatusChange = async ( row : RoleVO ) => {
cons t text = row . status === '0' ? '启用' : '停用' ;
le t text = row . status === '0' ? '启用' : '停用' ;
try {
try {
await proxy ? . $modal . confirm ( '确认要"' + text + '""' + row . roleName + '"角色吗?' ) ;
await proxy ? . $modal . confirm ( '确认要"' + text + '""' + row . roleName + '"角色吗?' ) ;
await changeRoleStatus ( row . roleId , row . status ) ;
await changeRoleStatus ( row . roleId , row . status ) ;
@ -340,17 +390,17 @@ const handleAuthUser = (row: RoleVO) => {
/** 查询菜单树结构 */
/** 查询菜单树结构 */
const getMenuTreeselect = async ( ) => {
const getMenuTreeselect = async ( ) => {
const res = await menuTreeselect ( ) ;
const res = await menuTreeselect ( { menuSource : '1' } );
menuOptions . value = res . data ;
menuOptions . value = res . data ;
} ;
} ;
/** 所有部门节点数据 */
/** 所有部门节点数据 */
const getDeptAllCheckedKeys = ( ) : any => {
const getDeptAllCheckedKeys = ( ) : any => {
// 目前被选中的部门节点
// 目前被选中的部门节点
cons t checkedKeys = deptRef . value ? . getCheckedKeys ( ) ;
le t checkedKeys = deptRef . value ? . getCheckedKeys ( ) ;
// 半选中的部门节点
// 半选中的部门节点
cons t halfCheckedKeys = deptRef . value ? . getHalfCheckedKeys ( ) ;
le t halfCheckedKeys = deptRef . value ? . getHalfCheckedKeys ( ) ;
if ( halfCheckedKeys ) {
if ( halfCheckedKeys ) {
checkedKeys ? . unshift ( .. .halfCheckedKeys ) ;
checkedKeys ? . unshift . apply ( checkedKeys , halfCheckedKeys ) ;
}
}
return checkedKeys ;
return checkedKeys ;
} ;
} ;
@ -390,28 +440,28 @@ const handleUpdate = async (row?: RoleVO) => {
} ;
} ;
/** 根据角色ID查询菜单树结构 */
/** 根据角色ID查询菜单树结构 */
const getRoleMenuTreeselect = ( roleId : string | number ) => {
const getRoleMenuTreeselect = ( roleId : string | number ) => {
return roleMenuTreeselect ( roleId ) . then ( ( res ) : RoleMenuTree => {
return roleMenuTreeselect ( roleId , { menuSource : '1' } ). then ( ( res ) : RoleMenuTree => {
menuOptions . value = res . data . menus ;
menuOptions . value = res . data . menus ;
return res . data ;
return res . data ;
} ) ;
} ) ;
} ;
} ;
/** 根据角色ID查询部门树结构 */
/** 根据角色ID查询部门树结构 */
const getRoleDeptTreeSelect = async ( roleId : string | number ) => {
const getRoleDeptTreeSelect = async ( roleId : string | number ) => {
const res = await deptTreeSelect ( roleId ) ;
const res = await deptTreeSelect ( roleId , { roleSource : '1' } );
deptOptions . value = res . data . depts ;
deptOptions . value = res . data . depts ;
return res . data ;
return res . data ;
} ;
} ;
/** 树权限(展开/折叠)*/
/** 树权限(展开/折叠)*/
const handleCheckedTreeExpand = ( value : boolean , type : string ) => {
const handleCheckedTreeExpand = ( value : boolean , type : string ) => {
if ( type == 'menu' ) {
if ( type == 'menu' ) {
cons t treeList = menuOptions . value ;
le t treeList = menuOptions . value ;
for ( let i = 0 ; i < treeList . length ; i ++ ) {
for ( let i = 0 ; i < treeList . length ; i ++ ) {
if ( menuRef . value ) {
if ( menuRef . value ) {
menuRef . value . store . nodesMap [ treeList [ i ] . id ] . expanded = value ;
menuRef . value . store . nodesMap [ treeList [ i ] . id ] . expanded = value ;
}
}
}
}
} else if ( type == 'dept' ) {
} else if ( type == 'dept' ) {
cons t treeList = deptOptions . value ;
le t treeList = deptOptions . value ;
for ( let i = 0 ; i < treeList . length ; i ++ ) {
for ( let i = 0 ; i < treeList . length ; i ++ ) {
if ( deptRef . value ) {
if ( deptRef . value ) {
deptRef . value . store . nodesMap [ treeList [ i ] . id ] . expanded = value ;
deptRef . value . store . nodesMap [ treeList [ i ] . id ] . expanded = value ;
@ -438,11 +488,11 @@ const handleCheckedTreeConnect = (value: any, type: string) => {
/** 所有菜单节点数据 */
/** 所有菜单节点数据 */
const getMenuAllCheckedKeys = ( ) : any => {
const getMenuAllCheckedKeys = ( ) : any => {
// 目前被选中的菜单节点
// 目前被选中的菜单节点
cons t checkedKeys = menuRef . value ? . getCheckedKeys ( ) ;
le t checkedKeys = menuRef . value ? . getCheckedKeys ( ) ;
// 半选中的菜单节点
// 半选中的菜单节点
cons t halfCheckedKeys = menuRef . value ? . getHalfCheckedKeys ( ) ;
le t halfCheckedKeys = menuRef . value ? . getHalfCheckedKeys ( ) ;
if ( halfCheckedKeys ) {
if ( halfCheckedKeys ) {
checkedKeys ? . unshift ( .. .halfCheckedKeys ) ;
checkedKeys ? . unshift . apply ( checkedKeys , halfCheckedKeys ) ;
}
}
return checkedKeys ;
return checkedKeys ;
} ;
} ;
@ -496,8 +546,28 @@ const cancelDataScope = () => {
form . value = { ... initForm } ;
form . value = { ... initForm } ;
openDataScope . value = false ;
openDataScope . value = false ;
} ;
} ;
/** 查询部门下拉树结构 */
const getDeptTree = async ( ) => {
const res = await api . deptTreeSelect ( { isShow : '1' } ) ;
deptOptions . value = res . data ;
enabledDeptOptions . value = filterDisabledDept ( res . data ) ;
} ;
/** 过滤禁用的部门 */
const filterDisabledDept = ( deptList : DeptTreeVO [ ] ) => {
return deptList . filter ( ( dept ) => {
if ( dept . disabled ) {
return false ;
}
if ( dept . children && dept . children . length ) {
dept . children = filterDisabledDept ( dept . children ) ;
}
return true ;
} ) ;
} ;
onMounted ( ( ) => {
onMounted ( ( ) => {
getDeptTree ( ) ; // 初始化部门数据
getList ( ) ;
getList ( ) ;
} ) ;
} ) ;
< / script >
< / script >