|
|
@@ -88,7 +88,7 @@ class DashboardMenu extends React.Component {
|
|
|
let ftree = this.cloneTree(tree);
|
|
|
ftree = this.reduceTree(ftree, regLabel)
|
|
|
return ftree.filter(t => (onlyMenu ? t.type === 'menu' : true)).sort((a, b) => a.index - b.index).map(t => {
|
|
|
- let title = <div className='node-title'>
|
|
|
+ let title = <div className={`node-title node-${t.type}`}>
|
|
|
<span>{ (t.code !== editingKey) ?
|
|
|
( !!regLabel && (searchMenu || t.type === 'dashboard') ? (<div className='label'> <span title={t.name} style={{ fontWeight: t.type === 'dashboard' ? 'bold' : 'normal' }}>
|
|
|
{ t.type === 'dashboard' && <Icon style={{ marginRight: '8px' }} type="pushpin" /> }
|
|
|
@@ -99,7 +99,26 @@ class DashboardMenu extends React.Component {
|
|
|
fragment
|
|
|
)
|
|
|
}) }
|
|
|
- </span> </div> ) : <div className='label'>
|
|
|
+ </span> </div> ) : <div className='label' onDoubleClick={() => {
|
|
|
+ const { dashboard, model, onExpand: propsOnExpand } = this.props;
|
|
|
+ const { menuExpandedKeys } = model;
|
|
|
+ const { menuList } = dashboard;
|
|
|
+ let expandedMenus = [];
|
|
|
+ let menu = [{ code: '-1', name: '报表目录' }].concat(menuList).find(l => l.code === t.code);
|
|
|
+ let menus = this.getParens(menu);
|
|
|
+ // 去掉非目录节点(只有第一个会出现非目录节点)
|
|
|
+ if(menus[0].type !== 'menu') {
|
|
|
+ menus.shift();
|
|
|
+ }
|
|
|
+ // 已展开时关闭该目录
|
|
|
+ if(!!menuExpandedKeys.find(s => s === t.code)) {
|
|
|
+ menus.shift();
|
|
|
+ }
|
|
|
+ expandedMenus = expandedMenus.concat(menus);
|
|
|
+ if(typeof propsOnExpand === 'function') {
|
|
|
+ propsOnExpand(expandedMenus);
|
|
|
+ }
|
|
|
+ }}>
|
|
|
<span title={t.name} style={{ fontWeight: t.type === 'dashboard' ? 'bold' : 'normal' }}>
|
|
|
{ t.type === 'dashboard' && <Icon style={{ marginRight: '8px' }} type="pushpin" /> }
|
|
|
{ t.name }
|
|
|
@@ -146,7 +165,7 @@ class DashboardMenu extends React.Component {
|
|
|
</div>}
|
|
|
</div>
|
|
|
|
|
|
- return <TreeNode title={title} key={t.code}>
|
|
|
+ return <TreeNode title={title} key={t.code} >
|
|
|
{ t.children && t.children.length > 0 && this.generateMenu(t.children, regLabel) }
|
|
|
</TreeNode>
|
|
|
});
|
|
|
@@ -157,7 +176,7 @@ class DashboardMenu extends React.Component {
|
|
|
const { menuList } = dashboard;
|
|
|
let expandedMenus = [];
|
|
|
for(let i = 0; i < keys.length; i++) {
|
|
|
- let menu = [{ code: '-1', name: '全部目录' }].concat(menuList).find(l => l.code === keys[i]);
|
|
|
+ let menu = [{ code: '-1', name: '报表目录' }].concat(menuList).find(l => l.code === keys[i]);
|
|
|
expandedMenus.push(menu);
|
|
|
}
|
|
|
if(typeof propsOnExpand === 'function') {
|
|
|
@@ -168,7 +187,7 @@ class DashboardMenu extends React.Component {
|
|
|
onSelect = (selectedKeys, info) => {
|
|
|
const { dashboard, onSelect: propsOnSelect } = this.props;
|
|
|
const { menuList } = dashboard;
|
|
|
- let selectedMenu = [{ code: '-1', name: '全部目录' }].concat(menuList).find(l => l.code === selectedKeys[0]);
|
|
|
+ let selectedMenu = [{ code: '-1', name: '报表目录' }].concat(menuList).find(l => l.code === selectedKeys[0]);
|
|
|
|
|
|
if(typeof propsOnSelect === 'function') {
|
|
|
propsOnSelect(selectedMenu);
|
|
|
@@ -209,7 +228,7 @@ class DashboardMenu extends React.Component {
|
|
|
dispatch({ type: 'dashboard/remoteAddMenu', menu }).then(res => {
|
|
|
if(res && typeof onExpand === 'function') {
|
|
|
let expandedMenus = [];
|
|
|
- [{ code: '-1', name: '全部目录' }].concat(menuList).forEach(m => {
|
|
|
+ [{ code: '-1', name: '报表目录' }].concat(menuList).forEach(m => {
|
|
|
if(menuExpandedKeys.indexOf(m.code) > -1) {
|
|
|
expandedMenus.push(m);
|
|
|
}
|
|
|
@@ -223,32 +242,13 @@ class DashboardMenu extends React.Component {
|
|
|
getParens = (menu) => {
|
|
|
const { menuList } = this.props.dashboard;
|
|
|
let pmenus = [menu];
|
|
|
- let fmenu = menuList.find(l => l.code === menu.pcode);
|
|
|
+ let fmenu = [{ code: '-1', name: '报表目录' }].concat(menuList).find(l => l.code === menu.pcode);
|
|
|
if(fmenu) {
|
|
|
pmenus = pmenus.concat(this.getParens(fmenu));
|
|
|
}
|
|
|
return pmenus;
|
|
|
}
|
|
|
|
|
|
- onDragEnter = (info) => {
|
|
|
- // console.log(info);
|
|
|
- // expandedKeys 需要受控时设置
|
|
|
- // this.setState({
|
|
|
- // expandedKeys: info.expandedKeys,
|
|
|
- // });
|
|
|
- }
|
|
|
-
|
|
|
- onDrop = (info) => {
|
|
|
- const { dispatch } = this.props;
|
|
|
- const dropKey = info.node.props.eventKey;
|
|
|
- const dragKey = info.dragNode.props.eventKey;
|
|
|
- const dropPos = info.node.props.pos.split('-');
|
|
|
- const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);
|
|
|
-
|
|
|
- console.log(dropKey, dragKey, dropPos, dropPosition, info);
|
|
|
- dispatch({ type: 'dashboard/transferMenu', dropKey, dragKey });
|
|
|
- }
|
|
|
-
|
|
|
render() {
|
|
|
const { dashboard, dispatch, hideHeader, editable, model } = this.props;
|
|
|
const { visibleDeleteBox, selectedMenu } = this.state;
|
|
|
@@ -277,16 +277,26 @@ class DashboardMenu extends React.Component {
|
|
|
selectedKeys={menuSelectedKeys}
|
|
|
onSelect={this.onSelect}
|
|
|
autoExpandParent={menuAutoExpandParent}
|
|
|
- draggable
|
|
|
- onDragEnter={this.onDragEnter}
|
|
|
- onDrop={this.onDrop}
|
|
|
>
|
|
|
<TreeNode title={
|
|
|
- <div className='node-title'>
|
|
|
- <span><div className='label'><span>全部目录</span></div></span>
|
|
|
+ <div className='node-title node-menu'>
|
|
|
+ <span><div className='label' onDoubleClick={() => {
|
|
|
+ const { model, onExpand: propsOnExpand } = this.props;
|
|
|
+ const { menuExpandedKeys } = model;
|
|
|
+ let expandedMenus = [];
|
|
|
+ let menus = [{ code: '-1', name: '报表目录' }]
|
|
|
+ // 已展开时关闭该目录
|
|
|
+ if(!!menuExpandedKeys.find(s => s === '-1')) {
|
|
|
+ menus.shift();
|
|
|
+ }
|
|
|
+ expandedMenus = expandedMenus.concat(menus);
|
|
|
+ if(typeof propsOnExpand === 'function') {
|
|
|
+ propsOnExpand(expandedMenus);
|
|
|
+ }
|
|
|
+ }}><span>报表目录</span></div></span>
|
|
|
{editable && <div className='tools'>
|
|
|
<Icon type='plus' onClick={() => {
|
|
|
- this.onAddClick({ code: '-1', name: '全部目录', pcode: '-1', childrenCount: menuTree.length })
|
|
|
+ this.onAddClick({ code: '-1', name: '报表目录', pcode: '-1', childrenCount: menuTree.length })
|
|
|
}}/>
|
|
|
</div>}
|
|
|
</div>
|