Commit facc758f authored by 田翔's avatar 田翔

fix: 角色管理bug修复

parent 001d0902
Pipeline #85556 passed with stages
......@@ -266,7 +266,6 @@ const SelectUser = props => {
),
},
];
console.log(allList, 'allList');
return (
<>
<Modal
......
......@@ -63,7 +63,7 @@ const cards = [
[
{
title: '江西水务集团GIS项目',
count: 1,
count: 6,
children: [
{ name: '运营总览', widget: 'OPERATIONSOVERVIEW', type: '运营' },
{ name: '管网资产', widget: 'PIPELINEASSETS', type: '运营' },
......@@ -75,7 +75,7 @@ const cards = [
},
{
title: '新乐智慧水务项目',
count: 1,
count: 3,
children: [
{ name: '生产概览', widget: 'PRODUCT_OVERVIEW', type: '运营' },
{ name: '三水厂送水泵房监控', widget: 'WATER_SUPPLY_MONITORING3', type: '运营' },
......
......@@ -10,7 +10,7 @@ const AddModal = props => {
const [formLayout, setFormLayout] = useState('horizontal');
const [groupList, setGroupList] = useState([]);
const [loading, setLoading] = useState(false);
const { confirmModal = () => {}, itemObj, editVisible, onCancel } = props;
const { confirmModal = () => { }, itemObj, editVisible, onCancel } = props;
const [value, setValue] = useState('');
console.log(itemObj, 'itemObj');
......@@ -113,7 +113,7 @@ const AddModal = props => {
const onChangeRadio = e => {
setValue(e);
};
const onFinish = value => {};
const onFinish = value => { };
return (
<SiteModal
{...props}
......@@ -154,7 +154,6 @@ const AddModal = props => {
}
name="BuiltInRole"
>
{console.log(value, 'nalie')}
<Switch
checkedChildren="是"
unCheckedChildren="否"
......
......@@ -54,7 +54,6 @@ import iconStyles from '@/assets/font/omsfont/iconfont.css';
import SelectUser from './SelectUser/SelectUser';
import NewSelectUser from './SelectUser/NewSelectUser';
import OpePermissions from './SelectUser/OpePermissions';
import { data } from '@/pages/platformCenter/messageManage/projectManage/components/Mock';
const { Search } = Input;
const placeholder = '请输入功能名称';
......@@ -116,7 +115,6 @@ const SiteManage = () => {
setRoleID(id);
setFlagSearch(1);
setValueList([...valueList]);
console.log([...valueList]);
} else {
if (node.visibleValue === 'view') {
setOperation(true);
......@@ -147,6 +145,7 @@ const SiteManage = () => {
setSpinLoading(false);
if (res.code === 0) {
const { roleList } = res.data;
console.log('roleList', roleList)
let list = [...roleList];
list.map((i, j) => {
if (i.visibleTitle.indexOf('手持') !== -1 && i.type !== 'mobile') {
......@@ -155,21 +154,22 @@ const SiteManage = () => {
}
});
setKeepTreeData([...list]);
console.log('list', list, JSON.parse(JSON.stringify(list)))
let arr = transTree(JSON.parse(JSON.stringify(list)), '');
console.log(333, arr)
setTreeData(arr);
let aa = [];
arr.forEach(i => {
aa.push(i.visibleValue);
});
console.log(1, arr, aa)
setKeepTree(aa);
}
});
};
useEffect(() => {
console.log('进入');
if (!roleID) return;
console.log('选择后');
setLoading(true);
const defaultConfig = {
optionsList: [],
......@@ -188,7 +188,6 @@ const SiteManage = () => {
res.data.root.forEach(item => {
list.push({ ...defaultConfig, ...item });
});
console.log(list);
setdataList(list);
setValueList(
list
......@@ -203,7 +202,6 @@ const SiteManage = () => {
.flat(Infinity)
.filter(Boolean),
);
console.log(valueList);
setLoading(false);
})
.catch(err => {
......@@ -229,22 +227,13 @@ const SiteManage = () => {
// 树形数据转换;
const transTree = (val, search) => {
let arr = val;
console.log(arr);
let newArr = [];
// 提取child里面的数组
let arr2 = arr.filter(item => {
if (item.child && item.child.length > 0) {
item.child.forEach(itemC => {
item.roleList.unshift(itemC);
});
item.roleList = [...item.child, ...item.roleList]
}
// if (item.visibleTitle === '手持系统') {
// item.icon = <span className="iconfont iconanzhuo1" />;
// newArr[0] = item;
// }
if (item.type === 'mobile') {
item.icon = <MobileOutlined />;
// newArr[0] = item;
} else if (item.visibleValue == 'CS') {
item.icon = <WindowsOutlined />;
} else {
......@@ -260,7 +249,6 @@ const SiteManage = () => {
item.visibleTitle !== '小程序'
);
});
arr2 = arr2.concat(newArr);
let arr3 = arr2.map(item => {
if (item.visibleTitle === '小程序') {
item.visibleTitle = '移动应用';
......@@ -351,7 +339,6 @@ const SiteManage = () => {
i.key = i.roleID;
i.subSystemValue = item.visibleValue;
i.group = itemRole.visibleTitle;
console.log(i.BuiltInRole);
if (i.BuiltInRole === true) {
i.icon = <UserOutlined style={{ color: '#dfb14b' }} />;
} else {
......@@ -504,7 +491,6 @@ const SiteManage = () => {
};
// 编辑角色
const editorUser = (e, record) => {
console.log(e);
e.stopPropagation();
setItemObj(record);
setEditVisible(true);
......@@ -632,19 +618,18 @@ const SiteManage = () => {
setUserVisible(true);
};
// 返回拖拽完毕后的信息
const loop = (datas, key, parentID, callback) => {
for (let i = 0; i < datas.length; i++) {
if (datas[i].key === key) {
return callback(datas[i], i, datas, parentID);
const loop = (data, key, callback) => {
for (let i = 0; i < data.length; i++) {
if (data[i].key === key) {
return callback(data[i], i, data);
}
if (datas[i].children) {
loop(datas[i].children, key, datas[i].key, callback);
if (data[i].children) {
loop(data[i].children, key, callback);
}
}
};
// 树的拖拽
const handleDrop = infos => {
console.log(infos);
const dropKey = infos.node.key;
const dragKey = infos.dragNode.key;
const dropPos = infos.node.pos.split('-');
......@@ -653,128 +638,108 @@ const SiteManage = () => {
const datas = JSON.parse(JSON.stringify(treeData));
// 找到拖拽的元素
let dragObj;
let dropObj;
let id;
let dragList;
let canDrop = false;
// 保存拖拽到的节点信息
loop(datas, dropKey, -1, (item, index, arr) => {
// 拖拽节点的下一个节点是否是菜单组
if (arr[index + 1] && !arr[index + 1].groupflag) {
canDrop = true;
}
if (index + 1 === arr.length) {
canDrop = true;
}
dropObj = item;
});
let id = '';
let dragList = [];
let params = {}
// 保存节点信息并删除节点
loop(datas, dragKey, -1, (item, index, arr) => {
loop(datas, dragKey, (item, index, arr) => {
arr.splice(index, 1);
dragObj = item;
});
console.log(dragObj, 'dragObj');
console.log(dropObj, 'dropObj');
// 最外层菜单组不允许拖拽
if (!dragObj.groupflag && !dragObj.subSystemValue) {
return;
}
// 不允许拖拽到子菜单下
if (dropObj.subSystemValue && !infos.dropToGap) {
console.log('不允许拖拽到子菜单下');
return;
}
// 子菜单不能跨站点拖拽
if (
dragObj.subSystemValue &&
dropObj.subSystemValue &&
dropObj.subSystemValue !== dragObj.subSystemValue
) {
console.log('子菜单不能跨站点拖拽');
return;
}
if (
dragObj.subSystemValue &&
dropObj.visibleValue &&
dropObj.visibleValue !== dragObj.subSystemValue
) {
console.log('子菜单不能跨站点拖拽');
return;
}
// 二级单组不能拖拽
if (dragObj.groupflag) {
console.log('二级单组不能拖拽');
return;
}
// 将节点插入到正确的位置
if (!infos.dropToGap) {
// 插入到第一个子节点
// 子菜单不能拖拽到二级菜单组上方
if (dropObj.roleList[0] && dropObj.roleList[0].groupflag) {
return;
}
dropObj.children = dropObj.children || [];
// 在哪里插入,示例添加到头部,可以是随意位置
dropObj.children.unshift(dragObj);
if (dropObj.groupflag) {
id = dropObj.visibleTitle;
} else {
id = '';
}
dragList = dropObj.children.map(val => {
if (!val.groupflag) {
return val.key;
}
// Drop on the content
loop(datas, dropKey, (item) => {
item.children = item.children || [];
// where to insert 示例添加到头部,可以是随意位置
item.children.unshift(dragObj);
});
} else if (
(infos.node.props.children || []).length > 0 &&
// Has children
infos.node.props.expanded &&
// Is expanded
dropPosition === 1 // On the bottom gap
) {
loop(datas, dropKey, (item) => {
item.children = item.children || [];
item.children.unshift(dragObj);
});
} else {
if (!canDrop) {
return;
}
// 子菜单组不能拖拽到子菜单组下
if (dragObj.groupflag && dropObj.subSystemValue) {
return;
}
let ar;
let ar = [];
let i;
loop(datas, dropKey, -1, (item, index, arr, parentID) => {
loop(datas, dropKey, (_item, index, arr) => {
ar = arr;
i = index;
if (item.group) {
id = item.group;
} else {
id = '';
}
});
if (dropPosition === -1) {
ar.splice(i, 0, dragObj);
} else {
ar.splice(i + 1, 0, dragObj);
}
dragList = ar.filter(val => !val.groupflag).map(ele => ele.key);
}
DragGroup({
dragGroupType: 1,
groupId: dragKey,
groupList: dragList,
MiniAppGroupName: id,
}).then(res => {
if (res.code === 0) {
getRoleGroup();
if (infos.dragNode.roleID == itemObj.roleID) {
if (id == '系统分组') {
setRoleID('');
setDescrip('系统分组下的角色不可配置菜单权限');
setFlagSearch(0);
} else {
setRoleID(infos.dragNode.roleID);
setFlagSearch(1);
//拖拽最上层
if (datas.includes(s => s.key === dragKey)) {
return
}
//拖拽的是分组
if (dragObj.groupflag) {
datas.forEach(v => {
if (v?.children?.length) {
if (v.children.some(s => s.key === dragKey)) {
dragList = v.children.filter(k => k.visibleValue).map(k => k.visibleTitle)
}
}
})
params = {
dragGroupType: 4,
groupList: dragList
}
});
} else {
//如果拖拽的是角色,有可能是角色互相拖拽有可能是角色拖入分组
datas.forEach(v => {
if (v?.children?.length) {
v.children.forEach(k => {
if (k.key === dragKey) {
dragList = v.children.filter(s => s.roleID).map(s => s.roleID)
}
if (k.children?.length) {
k.children.forEach(j => {
if (j.key === dragKey) {
id = k.visibleTitle
dragList = k.children.map(s => s.roleID)
}
})
}
})
}
})
params = {
MiniAppGroupName: id,
dragGroupType: 1,
groupId: dragKey,
groupList: dragList
}
}
console.log('datas', datas, params)
if (dragList.length) {
DragGroup(params).then(res => {
if (res.code === 0) {
getRoleGroup();
if (infos.dragNode.roleID == itemObj.roleID) {
if (id == '系统分组') {
setRoleID('');
setDescrip('系统分组下的角色不可配置菜单权限');
setFlagSearch(0);
} else {
setRoleID(infos.dragNode.roleID);
setFlagSearch(1);
}
}
}
});
}
};
const handleParChange = key => {
......@@ -824,6 +789,8 @@ const SiteManage = () => {
return treedata;
};
console.log('treeData', treeData)
return (
<PageContainer>
<div
......@@ -834,7 +801,7 @@ const SiteManage = () => {
<Spin
tip="loading...."
spinning={spinLoading}
// style={{ margin: '20px auto ', display: 'block' }}
// style={{ margin: '20px auto ', display: 'block' }}
>
<Card
className={classnames({
......@@ -876,7 +843,7 @@ const SiteManage = () => {
draggable
onDrop={handleDrop}
keepTree={keepTree}
// setExpendKey={expendKey}
// setExpendKey={expendKey}
/>
</div>
)}
......@@ -895,7 +862,7 @@ const SiteManage = () => {
draggable
onDrop={handleDrop}
keepTree={keepTree}
// setExpendKey={expendKey}
// setExpendKey={expendKey}
/>
</div>
)}
......
......@@ -237,7 +237,6 @@ const SelectUser = props => {
),
},
];
console.log(allList, 'allList');
return (
<>
<Modal
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment