Commit 2c89cb28 authored by 卢均锐's avatar 卢均锐

Merge branch 'dev-srm' of http://10.0.0.22:3000/lingxi/lingxi-business-system into dev-srm

* 'dev-srm' of http://10.0.0.22:3000/lingxi/lingxi-business-system: chore: 添加父子不关联属性
parents 193a2661 e21752c4
import React, { useState, useRef } from 'react'; import React, { useState, useRef } from 'react';
import { Row, Col, Modal } from 'antd'; import { Row, Col, Modal } from 'antd';
import { useTreeTabs, FormState } from '@/hooks/useTreeTabs'; import { useTreeTabs, FormState } from '@/hooks/useTreeTabs';
import MellowCard from '@/components/MellowCard'; import MellowCard from '@/components/MellowCard';
import TabTree, { createTreeActions } from '@/components/TabTree'; import TabTree, { createTreeActions } from '@/components/TabTree';
import CheckboxTree from '@/components/CheckBoxTree'; import CheckboxTree from '@/components/CheckBoxTree';
import styles from './index.less'; import styles from './index.less';
const treeActions = createTreeActions(); const treeActions = createTreeActions();
const PowerInfo: React.FC<{}> = () => { const PowerInfo: React.FC<{}> = () => {
const [powerLoading, setPowerLoading] = useState(false); const [powerLoading, setPowerLoading] = useState(false);
const [buttonInfos, setButtonInfos] = useState<any>([]); const [buttonInfos, setButtonInfos] = useState<any>([]);
const actionRef = useRef<any>({}); const actionRef = useRef<any>({});
// 获取左侧已选择的项 // 获取左侧已选择的项
const getMenuSelectData = async () => { const getMenuSelectData = async () => {
setPowerLoading(true); setPowerLoading(true);
const res = await PublicApi.getMemberValidateTreeCheckids({ const res = await PublicApi.getMemberValidateTreeCheckids({
memberId: id, memberId: id,
validateId: validateId, validateId: validateId,
}); });
setPowerLoading(false); setPowerLoading(false);
if (res.code === 1000) { if (res.code === 1000) {
const { checkIds } = res.data; const { checkIds } = res.data;
return { data: { ids: checkIds } }; return { data: { ids: checkIds } };
} }
return { return {
data: { data: {
ids: [], ids: [],
}, },
}; };
}; };
// 获取左边菜单 // 获取左边菜单
const fetchMenuData = async () => { const fetchMenuData = async () => {
const res = await PublicApi.getMemberValidateTree({ const res = await PublicApi.getMemberValidateTree({
memberId: id, memberId: id,
validateId: validateId, validateId: validateId,
}); });
return res; return res;
}; };
// 点击左侧菜单获取右侧按钮菜单、及已勾选的信息 // 点击左侧菜单获取右侧按钮菜单、及已勾选的信息
const handleFindDetail = menuId => { const handleFindDetail = menuId => {
PublicApi.getMemberValidateCommitGetbutton({ PublicApi.getMemberValidateCommitGetbutton({
menuId: menuId, menuId: menuId,
memberId: id, memberId: id,
validateId: validateId, validateId: validateId,
}).then(res => { }).then(res => {
const { data } = res; const { data } = res;
let buttons = data.buttons.map(v => ({ id: v.id, buttonName: v.name })); let buttons = data.buttons.map(v => ({ id: v.id, buttonName: v.name }));
setButtonInfos(buttons || []); setButtonInfos(buttons || []);
if (actionRef.current.setSelected) { if (actionRef.current.setSelected) {
actionRef.current.setSelected(data.checkIds); actionRef.current.setSelected(data.checkIds);
} }
}); });
}; };
const customSelect = (selectKey?, node?) => { const customSelect = (selectKey?, node?) => {
// 首次新增菜单的时候没有节点信息 // 首次新增菜单的时候没有节点信息
if (!node) { if (!node) {
setNodeRecord(null); setNodeRecord(null);
setTreeStatus(FormState.ADD); setTreeStatus(FormState.ADD);
return; return;
} }
// key相等时 不刷新右侧表单 // key相等时 不刷新右侧表单
if (nodeRecord && nodeRecord.key === selectKey) { if (nodeRecord && nodeRecord.key === selectKey) {
setNodeRecord(node); setNodeRecord(node);
setTreeStatus(FormState.EDIT); setTreeStatus(FormState.EDIT);
} else { } else {
if (isEditForm) { if (isEditForm) {
// 有填写过表单 // 有填写过表单
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
Modal.confirm({ Modal.confirm({
content: '确认要离开当前页面吗,您提交的数据尚未保存', content: '确认要离开当前页面吗,您提交的数据尚未保存',
onOk() { onOk() {
// 确认离开当前页, 需改变node state // 确认离开当前页, 需改变node state
setNodeRecord(node); setNodeRecord(node);
setTreeStatus(FormState.EDIT); setTreeStatus(FormState.EDIT);
// 点击菜单,请求数据重置 // 点击菜单,请求数据重置
handleFindDetail(selectKey); handleFindDetail(selectKey);
setIsEditForm(false); setIsEditForm(false);
resolve(); resolve();
}, },
onCancel() { onCancel() {
reject(); reject();
}, },
}); });
}); });
} else { } else {
// 编辑页, 需回显 // 编辑页, 需回显
handleFindDetail(selectKey); handleFindDetail(selectKey);
setNodeRecord(node); setNodeRecord(node);
setTreeStatus(FormState.EDIT); setTreeStatus(FormState.EDIT);
} }
} }
}; };
const { const {
treeData, treeData,
handleSelect, handleSelect,
nodeRecord, nodeRecord,
setNodeRecord, setNodeRecord,
setTreeStatus, setTreeStatus,
setIsEditForm, setIsEditForm,
isEditForm, isEditForm,
} = useTreeTabs({ } = useTreeTabs({
fetchMenuData, fetchMenuData,
selectCallback: customSelect, selectCallback: customSelect,
}); });
// 更新右侧按钮 // 更新右侧按钮
const handleSubmitAuth = async () => { const handleSubmitAuth = async () => {
const buttonIds = [...actionRef.current.selected]; const buttonIds = [...actionRef.current.selected];
if (!nodeRecord) { if (!nodeRecord) {
return; return;
} }
if (isEditForm) { if (isEditForm) {
// 更新右侧按钮 // 更新右侧按钮
await PublicApi.postMemberValidateCommitUpdatebutton({ await PublicApi.postMemberValidateCommitUpdatebutton({
memberId: id, memberId: id,
validateId, validateId,
menuId: nodeRecord.id, menuId: nodeRecord.id,
buttonIds: buttonIds, buttonIds: buttonIds,
}); });
} }
setIsEditForm(false); setIsEditForm(false);
}; };
return ( return (
<Row> <Row>
<Col span={15}> <Col span={15}>
<MellowCard> <MellowCard>
<TabTree <TabTree
title="菜单列表" title="菜单列表"
getMenuSelectData={getMenuSelectData} getMenuSelectData={getMenuSelectData}
customKey="id" customKey="id"
actions={treeActions} actions={treeActions}
treeData={treeData} treeData={treeData}
handleSelect={handleSelect} handleSelect={handleSelect}
disabled={true} disabled={true}
checkable checkStrictly
/> checkable
</MellowCard> />
</Col> </MellowCard>
<Col span={8} offset={1}> </Col>
<MellowCard> <Col span={8} offset={1}>
<CheckboxTree <MellowCard>
actions={actionRef} <CheckboxTree
disabled={true} actions={actionRef}
handleChange={e => setIsEditForm(true)} disabled={true}
checkedNodes={buttonInfos} handleChange={e => setIsEditForm(true)}
title="菜单按钮访问权限" checkedNodes={buttonInfos}
handleSubmit={handleSubmitAuth} title="菜单按钮访问权限"
showSave handleSubmit={handleSubmitAuth}
/> showSave
</MellowCard> />
</Col> </MellowCard>
</Row> </Col>
); </Row>
}; );
};
export default PowerInfo export default PowerInfo
\ No newline at end of file
This diff is collapsed.
...@@ -363,6 +363,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({ ...@@ -363,6 +363,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
treeData={treeData} treeData={treeData}
handleSelect={handleSelect} handleSelect={handleSelect}
disabled={true} disabled={true}
checkStrictly
checkable checkable
/> />
</MellowCard> </MellowCard>
......
...@@ -364,6 +364,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({ ...@@ -364,6 +364,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
treeData={treeData} treeData={treeData}
handleSelect={handleSelect} handleSelect={handleSelect}
disabled={true} disabled={true}
checkStrictly
checkable checkable
/> />
</MellowCard> </MellowCard>
......
...@@ -368,6 +368,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({ ...@@ -368,6 +368,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
treeData={treeData} treeData={treeData}
handleSelect={handleSelect} handleSelect={handleSelect}
disabled={true} disabled={true}
checkStrictly
checkable checkable
/> />
</MellowCard> </MellowCard>
......
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