|
@@ -22,7 +22,7 @@ function AddRole(props){
|
|
|
<Breadcrumb.Item>新增角色</Breadcrumb.Item>
|
|
|
</Breadcrumb>
|
|
|
<div className="add-container">
|
|
|
- <ContentForm></ContentForm>
|
|
|
+ <ContentForm back={back}></ContentForm>
|
|
|
</div>
|
|
|
</>
|
|
|
)
|
|
@@ -35,6 +35,7 @@ function ContentForm(props){
|
|
|
const [activeTab, setActiveTab] = useState('');
|
|
|
const { save,detail } = useContext(RoleContext);
|
|
|
const [sysCheckeds, setSysCheckeds] = useState();
|
|
|
+ const { back } = props;
|
|
|
const initialValues=detail||{
|
|
|
status:'1'
|
|
|
};
|
|
@@ -54,21 +55,21 @@ function ContentForm(props){
|
|
|
const data = res.data.data;
|
|
|
const treeDatas = structureTreeData(data);
|
|
|
setTreeDatas(treeDatas);
|
|
|
- console.log(43,detail)
|
|
|
//默认选中第一个tab
|
|
|
setTabDatas([treeDatas[0]]);
|
|
|
setActiveTab(treeDatas[0].key);
|
|
|
setSysCheckeds(treeDatas[0]?[treeDatas[0].key]:[]);
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
})
|
|
|
}
|
|
|
//数据转换为树形结构所需字段
|
|
|
function structureTreeData(data){
|
|
|
- console.log(data);
|
|
|
const arr = [];
|
|
|
let obj={};
|
|
|
- data.map((it,i)=>{
|
|
|
+ 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,
|
|
@@ -76,24 +77,40 @@ function ContentForm(props){
|
|
|
children:JSON.parse(obj)
|
|
|
}
|
|
|
});
|
|
|
- //form.setFieldsValue({softwares:[{id:arr[0]?[arr[0].key]:''}]}); //默认选中第一个
|
|
|
+ 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(treeDatas);
|
|
|
+ setTabDatas(treeDatas2);
|
|
|
+ console.log(detail);
|
|
|
+ console.log(form.getFieldsValue());
|
|
|
}else{
|
|
|
getTreeData();
|
|
|
}
|
|
|
|
|
|
},[]);
|
|
|
- function handleCancel(){
|
|
|
-
|
|
|
- }
|
|
|
function handleSave(){
|
|
|
form.validateFields(['name']).then((res)=>{
|
|
|
save(form.getFieldsValue())
|
|
@@ -113,8 +130,8 @@ function ContentForm(props){
|
|
|
softwares:arr
|
|
|
});
|
|
|
}
|
|
|
- function onTabChange(activeTab){
|
|
|
- setActiveTab(activeTab)
|
|
|
+ function onTabChange(activeTab){
|
|
|
+ setActiveTab(activeTab.split('-')[0])
|
|
|
}
|
|
|
//开放系统勾选事件
|
|
|
function softwareChange(checkedValue){
|
|
@@ -186,13 +203,12 @@ function ContentForm(props){
|
|
|
{
|
|
|
tabDatas.map((it,i)=>{
|
|
|
return (
|
|
|
- <TabPane tab={it.title} key={i}>
|
|
|
+ <TabPane tab={it.title} key={it.key + "-" + i} forceRender={detail ? true : false}>
|
|
|
<Form.Item
|
|
|
key={i}
|
|
|
name={['softwares', i, 'softwareMenuIds']}
|
|
|
valuePropName='checked'
|
|
|
getValueFromEvent={(checked)=>{
|
|
|
- console.log(321,checked)
|
|
|
return [];
|
|
|
}} noStyle>
|
|
|
<MenuTree data={it} checkeds={form.getFieldValue().softwares?form.getFieldValue().softwares[i]:[]} checkEv={(checkedKeys,sourceIds)=>checkTreeEvent(i,checkedKeys,sourceIds)}/>
|
|
@@ -226,7 +242,7 @@ function ContentForm(props){
|
|
|
</Form.Item>
|
|
|
</Form>
|
|
|
<div className="button-box">
|
|
|
- <Button onClick={handleCancel}>取消</Button>
|
|
|
+ <Button onClick={back}>取消</Button>
|
|
|
<Button onClick={handleSave} type='primary'>保存</Button>
|
|
|
</div>
|
|
|
</>
|