import React, { useState, useEffect, useReducer } from 'react'; import { Button, Tree, message } from 'antd'; import { roleTree, adminDataqueryAll } from '@/services/system'; import { doFetch } from '@/utils/doFetch'; import { useRequest } from 'ahooks'; const TreeNode = Tree.TreeNode; const initState = { pcList: [], havepremIdList: [], haveParentIdList: [], appTree: [], appCheckedKeys: [], appHalfCheckedKeys: [], daauthTree: [], daauthCheckkedKeys: [], daauthHalfCheckedKeys: [], }; function reducer(state, action) { let { type } = action, newState = {}; switch (type) { case 'changePc': newState = { ...state, havepremIdList: [...action.checkedKeys], haveParentIdList: [...action.halfCheckedKeys], }; break; case 'changeApp': newState = { ...state, appCheckedKeys: [...action.checkedKeys], appHalfCheckedKeys: [...action.halfCheckedKeys], }; break; case 'changeDaauth': newState = { ...state, daauthCheckkedKeys: [...action.checkedKeys], daauthHalfCheckedKeys: [...action.halfCheckedKeys], }; break; case 'reset': newState = { ...state, pcList: [...action.pcList], havepremIdList: [...action.havepremIdList], haveParentIdList: [...action.haveParentIdList], // appTree: [...action.appTree], // appCheckedKeys: [...action.appCheckedKeys], // appHalfCheckedKeys: [...action.appHalfCheckedKeys] }; break; case 'daauth': newState = { ...state, daauthTree: action.nodeList ? [...action.nodeList] : [], daauthCheckkedKeys: action.havepremIdList ? [...action.havepremIdList] : [], daauthHalfCheckedKeys: action.haveParentIdList ? [...action.haveParentIdList] : [], }; break; } return newState; } const Permissiontree = (props) => { const { id, close, treeType } = props, [state, dispatch] = useReducer(reducer, initState), { pcList, havepremIdList, haveParentIdList, appTree, appCheckedKeys, appHalfCheckedKeys, daauthCheckkedKeys, daauthHalfCheckedKeys, daauthTree, } = state; useEffect(() => { resetData(); }, []); const loop = (data) => { return data.map((item) => { if (item.children) { return ( {loop(item.children)} ); } return ; }); }, pcCheck = (checkedKeys, info) => { dispatch({ type: 'changePc', checkedKeys, halfCheckedKeys: info.halfCheckedKeys }); }, appCheck = (checkedKeys, info) => { dispatch({ type: 'changeApp', checkedKeys, halfCheckedKeys: info.halfCheckedKeys }); }, daauthCheck = (checkedKeys, info) => { dispatch({ type: 'changeDaauth', checkedKeys, halfCheckedKeys: info.halfCheckedKeys }); }, { run, loading } = useRequest(doFetch, { manual: true, onSuccess: (result, params) => { if (result.code == '0000') { message.success('权限配置成功!'); close(); } }, }); function resetData() { if (!id) { return; } if (treeType == 'auth') { roleTree({ roleId: id }).then((res) => { if (res.code == '0000') { let data = res?.data || {}; const { pcList, havepremIdList, haveParentIdList } = data; dispatch({ type: 'reset', pcList, havepremIdList, haveParentIdList }); } }); } else { // adminDataqueryAll({ roleId: id }).then(res => { // if (res.code == "0000") { // let data = res?.data || {}; // const { nodeList, havepremIdList, haveParentIdList } = data; // dispatch({ type: "daauth", nodeList, havepremIdList, haveParentIdList }) // } // }) } } const saveData = () => { run({ url: '/auth/sysRolePermission/save', params: { roleId: id, permissionIds: [...havepremIdList, ...haveParentIdList], }, }); }; return (
{treeType == 'auth' ? ( <>

请配置角色权限:

{loop(pcList || [])}
{/*
app权限:
{loop(appTree || [])}
*/} ) : ( {loop(daauthTree || [])} )}
); }; export default Permissiontree;