|
|
@@ -2,7 +2,7 @@ |
|
|
|
import { useRef, useState, useEffect } from 'react'; |
|
|
|
import { connect } from '@umijs/max'; |
|
|
|
import { ConfigProvider, Space, Collapse, Tag, Modal, Row, Col, message} from 'antd'; |
|
|
|
import { PostRoleAddpermission,PostRoleDelpermission, getPermissionListWithchilds, getRoleGetpermissions } from '@/apis/api'; |
|
|
|
import { PostRoleAddpermission,PostRoleDelpermission, getPermissionListWithchilds, getRoleGetpermissions, getRoleGetpermissionids } from '@/apis/api'; |
|
|
|
|
|
|
|
const PagesMainPermissionRoleDispense: React.FC = ({ dispatch, dictModel, openModel, id }: any) => { |
|
|
|
const [openPreview, setOpenPreview] = useState(false); |
|
|
@@ -35,18 +35,8 @@ const PagesMainPermissionRoleDispense: React.FC = ({ dispatch, dictModel, openMo |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
// 递归函数用于收集所有权限ID |
|
|
|
function collectAllPermissionIds(permission) { |
|
|
|
let ids = [permission.id]; |
|
|
|
if (permission.childs && Array.isArray(permission.childs)) { |
|
|
|
permission.childs.forEach(child => { |
|
|
|
ids = ids.concat(collectAllPermissionIds(child)); |
|
|
|
}); |
|
|
|
} |
|
|
|
return ids; |
|
|
|
} |
|
|
|
// 检查给定的 id 是否存在于 res.data 中,并返回对应的下标加 1 |
|
|
|
function checkIdInData(ids : number, data :number) { |
|
|
|
function checkIdInData(ids : number[], data :number) { |
|
|
|
const result: any = []; |
|
|
|
if(ids && ids.length > 0) { |
|
|
|
ids.forEach(id => { |
|
|
@@ -72,9 +62,10 @@ const PagesMainPermissionRoleDispense: React.FC = ({ dispatch, dictModel, openMo |
|
|
|
title={'分配权限'} |
|
|
|
open={openPreview} |
|
|
|
centered |
|
|
|
maskClosable={false} |
|
|
|
maskClosable={true} |
|
|
|
destroyOnClose |
|
|
|
width={1000} |
|
|
|
width={1200} |
|
|
|
footer={null} |
|
|
|
onCancel={() => { |
|
|
|
dispatch({ type: 'openModel/getOpenDispenseModal', payload: false }) |
|
|
|
}} |
|
|
@@ -85,10 +76,10 @@ const PagesMainPermissionRoleDispense: React.FC = ({ dispatch, dictModel, openMo |
|
|
|
setCollapseKey([]) |
|
|
|
let res = await getPermissionListWithchilds() |
|
|
|
setDetail(res.data) |
|
|
|
let resrole = await getRoleGetpermissions({ ids: id }) |
|
|
|
const nextSelectedTags = resrole.data.permissions.length > 0 ? resrole.data.permissions.flatMap(permission => |
|
|
|
collectAllPermissionIds(permission) |
|
|
|
) : [] |
|
|
|
let resrole = await getRoleGetpermissionids({ id: id }) |
|
|
|
const nextSelectedTags = resrole.data.permissionIds.map(item => { |
|
|
|
return Number(item) |
|
|
|
}) |
|
|
|
setSelectedIds(nextSelectedTags); |
|
|
|
const uniqueIndexes = checkIdInData(nextSelectedTags, res.data.permissions); |
|
|
|
console.log(uniqueIndexes); // 输出去重后的结果 |
|
|
@@ -97,7 +88,6 @@ const PagesMainPermissionRoleDispense: React.FC = ({ dispatch, dictModel, openMo |
|
|
|
setCollapseKey(uniqueIndexes); |
|
|
|
} else { |
|
|
|
setCollapseKey(["1"]); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
}} |