import {useEffect,useState,useContext} from 'react';
import { Form, Input, Checkbox, Button, Select, Tabs, InputNumber, Space, Switch, Breadcrumb, Modal } from 'antd';
import MenuTree from './MenuTree';
import './index.less';
import RoleContext from './role-context';
import apiObj from '@api/index';
import backIcon from "@images/back.png";
const {post,api,xPost} = apiObj;
const { TabPane } = Tabs;
const { Option } = Select;
function AddRole(props){
const [form] = Form.useForm();
const { back } = props;
const [isChange, setIsChange] = useState(false);
const [visible, setVisible] = useState(false);
const { detail } = useContext(RoleContext);
function handleOk() {
back()
}
function handleCancel() {
setVisible(false)
}
const goback = () => {
if (form.isFieldsTouched()) {
setVisible(true)
} else {
back()
}
};
return (
<>
角色管理
新增角色
您还有内容未保存,确定要退出?
>
)
}
function ContentForm(props){
const [treeDatas, setTreeDatas] = useState([]);
const [tabDatas, setTabDatas] = useState([]);
const [activeTab, setActiveTab] = useState('');
const { save,detail } = useContext(RoleContext);
const [sysCheckeds, setSysCheckeds] = useState();
const { back, form } = props;
const initialValues=detail||{
status:'1'
};
const vilidateRules = {
required: '${label}不能为空!',
types: {
email: '${label} is not a valid email!',
number: '${label} is not a valid number!',
},
};
//获取菜单数据,type:组织0角色1
function getTreeData(){
xPost(api.getUserMenuResourceTree,{type:1}).then((res)=>{
if(res.data.code===200){
const data = res.data.data;
const treeDatas = structureTreeData(data);
setTreeDatas(treeDatas);
//默认选中第一个tab
setTabDatas([treeDatas[0]]);
setActiveTab(treeDatas[0].key);
setSysCheckeds(treeDatas[0]?[treeDatas[0].key]:[]);
}
})
}
//数据转换为树形结构所需字段
function structureTreeData(data){
const arr = [];
let obj={};
data.relation ==1 || data.map((it,i)=>{
obj =JSON.stringify(it.children).replace(/softwareMenuId/g,"key").replace(/menuName/g,'title');
arr[i]={
title:it.softwareName,
key:it.softwareId,
children:JSON.parse(obj)
}
});
return arr;
}
//数据转换为树形结构所需字段
function structureTreeData2(data) {
const arr = [];
let obj = {};
data.map((it, i) => {
if (it.relation == 1){
obj = JSON.stringify(it.children).replace(/softwareMenuId/g, "key").replace(/menuName/g, 'title');
arr[i] = {
title: it.softwareName,
key: it.softwareId,
children: JSON.parse(obj)
}
}
});
return arr;
}
useEffect(()=>{
if(detail){
//编辑时权限树从详情中获取,tab数据也是
const treeDatas2 = structureTreeData2(detail.loginUserMenuResourceTree);
const treeDatas = structureTreeData(detail.loginUserMenuResourceTree);
setTreeDatas(treeDatas);
setSysCheckeds(detail.sids);
setTabDatas(treeDatas2);
console.log(detail);
console.log(form.getFieldsValue());
}else{
getTreeData();
}
},[]);
function handleSave(){
form.validateFields(['name']).then((res)=>{
save(form.getFieldsValue())
});
}
//树形结构选中事件
function checkTreeEvent(i,idsArr,sourceIds){
const formData=form.getFieldsValue();
let arr=formData.softwares;
arr[i]={
id:activeTab,
softwareMenuIds:idsArr,
softwareResourceIds:sourceIds
};
form.setFieldsValue({
softwares:arr
});
}
function onTabChange(activeTab){
setActiveTab(activeTab.split('-')[0])
}
//开放系统勾选事件
function softwareChange(checkedValue){
let arr = [],item;
setSysCheckeds(checkedValue);
for(let i=0;iit.key===checkedValue[i]);
if(item){
arr.push(item);
}
}
setTabDatas(arr);
}
return (
<>
({
validator(_, value) {
if(!value){
return Promise.reject(new Error('角色名称不能为空!'));
}else if (value.length<51) {
return Promise.resolve();
}
return Promise.reject(new Error('格式错误!'));
},
}),]}>
{
treeDatas.map((it, i) => {
return (
{it.title}
)
})
}
{
tabDatas.map((it,i)=>{
return (
{
return [];
}} noStyle>
checkTreeEvent(i,checkedKeys,sourceIds)}/>
)
})
}
{
return +checked;
}}
noStyle>
启用
>
)
}
export default AddRole;