Browse Source

首页tabs右键关闭非选中tab报错bug

zhuth 6 years ago
parent
commit
dd8e9c44b9
4 changed files with 19 additions and 19 deletions
  1. 12 5
      src/components/homePage/index.jsx
  2. 1 1
      src/models/dashboard.js
  3. 5 7
      src/models/dashboardDesigner.js
  4. 1 6
      src/models/home.js

+ 12 - 5
src/components/homePage/index.jsx

@@ -34,13 +34,19 @@ class Home extends React.Component {
 
     generateMenu = (tabKey) => (
         <Menu>
-            <Menu.Item key="1" onClick={() => {
+            <Menu.Item key="1" onClick={e => {
+                // 点击菜单项后触发tab的切换事件,这里将其事件阻断
+                e.domEvent.stopPropagation();
                 this.remove(tabKey);
-            }}>关闭</Menu.Item>
-            <Menu.Item key="2"onClick={() => {
+            }}>关闭当前</Menu.Item>
+            <Menu.Item key="2"onClick={e => {
+                // 点击菜单项后触发tab的切换事件,这里将其事件阻断
+                e.domEvent.stopPropagation();
                 this.removeOther(tabKey);
             }}>关闭其他</Menu.Item>
-            <Menu.Item key="3" onClick={() => {
+            <Menu.Item key="3" onClick={e => {
+                // 点击菜单项后触发tab的切换事件,这里将其事件阻断
+                e.domEvent.stopPropagation();
                 this.removeAll();
             }}>关闭所有</Menu.Item>
         </Menu>
@@ -70,7 +76,8 @@ class Home extends React.Component {
         const { tabs: allTabs } = home;
         let tabs = allTabs.filter(t => t.code !== targetKey);
         let tab = allTabs.find(t => t.code === targetKey);
-        dispatch({ type: 'home/closeTabs', tabs, tab });
+        dispatch({ type: 'home/closeTabs', tabs });
+        dispatch({ type: 'home/changeTab', tab });
     }
 
     removeAll = () => {

+ 1 - 1
src/models/dashboard.js

@@ -155,7 +155,7 @@ export default {
                     const allDataSources = items.map(item => {
                         if(item.viewType === 'chart') {
                             return {
-                                code: item.dataSourceCode,
+                                code: item.dataSourceCode + '',
                                 name: item.dataSourceName
                             }
                         }else {

+ 5 - 7
src/models/dashboardDesigner.js

@@ -302,10 +302,10 @@ export default {
             return { ...state, items };
         },
         setItemFields(state, action) {
-            try {
-                const { code, fields } = action;
-                const { items } = state;
-                let index = items.findIndex(item => item.code === code);
+            const { code, fields } = action;
+            const { items } = state;
+            let index = items.findIndex(item => item.code === code);
+            if(index !== -1) {
                 const targetItem = items[index];
                 fields.forEach(field => {
                     targetItem[field.name] = field.value;
@@ -313,10 +313,8 @@ export default {
                 items[index] = {
                     ...targetItem
                 };
-                return { ...state, items };
-            }catch(e) {
-                message.error(e.message);
             }
+            return { ...state, items };
         },
     },
 

+ 1 - 6
src/models/home.js

@@ -107,14 +107,9 @@ export default {
             }
         },
         *closeTabs(action, { select, call, put }) {
-            const { tabs, tab } = action;
+            const { tabs } = action;
 
             yield put({ type: 'removeTabs', tabs });
-            const home = yield select(state => state.present.home);
-            const { tabs: allTabs } = home;
-            if(allTabs.length > 0) {
-                yield put({ type: 'changeTab', tab });
-            }
         },
         *closeAllTabs(action, { select, call, put }) {
             yield put({ type: 'removeAllTabs' });