Browse Source

报表目录移动

zhuth 6 years ago
parent
commit
9f33d2fb55

+ 1 - 1
src/components/authority/index.jsx

@@ -65,7 +65,7 @@ class Authority extends React.Component {
     }
 
     render() {
-        const { authority, dispatch } = this.props;
+        // const { authority, dispatch } = this.props;
         const { fetching } = this.state;
         return <Layout className='layout-authority'>
             <Header

+ 22 - 0
src/components/dashboard/menu.jsx

@@ -230,6 +230,25 @@ class DashboardMenu extends React.Component {
         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;
@@ -258,6 +277,9 @@ 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'>

+ 6 - 4
src/components/dashboard/menu.less

@@ -33,10 +33,12 @@
             .node-title {
                 display: flex;
                 justify-content: space-between;
-                .label {
-                    width: 150px;
-                    overflow: hidden;
-                    text-overflow: ellipsis;
+                &>span {
+                    width: ~'calc(100% - 62px)';
+                    .label {
+                        overflow: hidden;
+                        text-overflow: ellipsis;
+                    }
                 }
                 .tools {
                     .anticon {

+ 3 - 3
src/models/authority.js

@@ -1,6 +1,6 @@
-import { message } from 'antd'
-import * as service from '../services/index'
-import URLS from '../constants/url'
+// import { message } from 'antd'
+// import * as service from '../services/index'
+// import URLS from '../constants/url'
 
 export default {
     namespace: 'authority',

+ 8 - 0
src/models/dashboard.js

@@ -384,6 +384,14 @@ export default {
                 return false;
             }
         },
+        *transferMenu(action, { put, call, select }) {
+            const { dropKey, dragKey } = action;
+            const dashboard = yield select(state => state.present.dashboard);
+            const { menuList } = dashboard;
+            let menu = menuList.find(l => l.code === dragKey);
+            menu.pcode = dropKey;
+            yield put({ type: 'remoteModifyMenu', menu });
+        },
         *remoteDeleteMenu(action, { put, call, select }) {
             const { menu } = action;
             const res = yield call(service.fetch, {