From 0c439ced2c97905cb2b02f5f689a37b19369fb8a Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 22 七月 2022 15:00:58 +0800
Subject: [PATCH] 2022-07-22

---
 src/tabviews/formtab/index.jsx |  273 +++++++++++++++++++-----------------------------------
 1 files changed, 98 insertions(+), 175 deletions(-)

diff --git a/src/tabviews/formtab/index.jsx b/src/tabviews/formtab/index.jsx
index bafa7fd..9c15dfd 100644
--- a/src/tabviews/formtab/index.jsx
+++ b/src/tabviews/formtab/index.jsx
@@ -2,7 +2,7 @@
 import PropTypes from 'prop-types'
 import {connect} from 'react-redux'
 import { is, fromJS } from 'immutable'
-import { notification, Spin, Tabs, Icon} from 'antd'
+import { notification, Spin, Tabs} from 'antd'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -11,21 +11,21 @@
 import Utils from '@/utils/utils.js'
 import options from '@/store/options.js'
 import asyncComponent from '@/utils/asyncLoadComponent'
-
+import MKEmitter from '@/utils/events.js'
+import MkIcon from '@/components/mk-icon'
 import FormGroup from './formgroup'
 import FormAction from './actionList'
 import NotFount from '@/components/404'
-import {refreshTabView, modifyTabview} from '@/store/action'
 import './index.scss'
 
 const { TabPane } = Tabs
 const SubTable = asyncComponent(() => import('@/tabviews/subtable'))
+const PagemsgComponent = asyncComponent(() => import('@/tabviews/zshare/pageMessage'))
 
 class NormalTable extends Component {
   static propTpyes = {
     MenuID: PropTypes.string,       // 鑿滃崟Id
     param: PropTypes.any,           // 涓昏〃浼犻�掑弬鏁�
-    refresh: PropTypes.any          // 鍒锋柊涓昏〃椤甸潰
   }
 
   state = {
@@ -40,25 +40,19 @@
     arr_field: '',        // 浣跨敤 sPC_Get_TableData 鏃剁殑鏌ヨ瀛楁闆�
     setting: null,        // 椤甸潰鍏ㄥ眬璁剧疆锛氭暟鎹簮銆佹寜閽強鏄剧ず鍒楀浐瀹氥�佷富閿瓑
     data: null,           // 鍒楄〃鏁版嵁闆�
-    configMap: {},        // 椤甸潰閰嶇疆淇℃伅锛氫笅鎷夈�佹寜閽瓑
     BIDs: {},             // 涓婄骇琛╥d
-    setsingle: false,     // 涓昏〃鍗曢�夊閫夊垏鎹�
-    pickup: false,        // 涓昏〃鏁版嵁闅愯棌鏄剧ず鍒囨崲
-    popData: false,       // 寮规椤甸潰锛屾墍閫夌殑琛ㄦ牸鏁版嵁
-    visible: false,       // 寮规鏄剧ず闅愯棌鎺у埗
     primaryId: null,
-    refreshtabs: null
   }
 
   /**
    * @description 鑾峰彇椤甸潰閰嶇疆淇℃伅
    */
   async loadconfig () {
-    const { permAction } = this.props
+    const { permAction, MenuID } = this.props
 
     let param = {
       func: 'sPC_Get_LongParam',
-      MenuID: this.props.MenuID
+      MenuID: MenuID
     }
     let result = await Api.getCacheConfig(param)
     if (result.status) {
@@ -109,33 +103,45 @@
         config.tabgroups = _tabgroups
       }
 
-      // 鏉冮檺杩囨护
-      if (this.props.menuType !== 'HS') {
+      if (!window.GLOB.mkHS) {
         config.action = config.action.filter(item => permAction[item.uuid])
         config.tabgroups.forEach(group => {
-          group.sublist = group.sublist.filter(tab => permAction[tab.linkTab])
+          group.sublist = group.sublist.filter(tab => {
+            if (tab.supMenu === 'mainTable') {
+              tab.supMenu = MenuID
+            }
+            return permAction[tab.linkTab]
+          })
+        })
+      } else {
+        config.tabgroups.forEach(group => {
+          group.sublist = group.sublist.filter(tab => {
+            if (tab.supMenu === 'mainTable') {
+              tab.supMenu = MenuID
+            }
+            return true
+          })
         })
       }
 
+      // 鎸夐挳绫诲瀷鍏煎
+      config.action = config.action.map(item => {
+        if (item.intertype === 'inner' && !item.innerFunc) {
+          item.intertype = 'system'
+        }
+        return item
+      })
+
       let _arrField = [config.setting.primaryKey]     // 瀛楁闆� , 榛樿娣诲姞涓婚敭
+      let roleId = sessionStorage.getItem('role_id') || '' // 瑙掕壊ID
 
       config.groups.forEach(group => {
         group.sublist = group.sublist.filter(item => {
+          item.field && _arrField.push(item.field)
           if (!item.blacklist || item.blacklist.length === 0) {
-            _arrField.push(item.field)
             return true
           }
-
-          let _black = item.blacklist.filter(v => {
-            return this.props.permRoles.indexOf(v) !== -1
-          })
-
-          if (_black.length > 0) {
-            return false
-          } else {
-            _arrField.push(item.field)
-            return true
-          }
+          return item.blacklist.filter(v => roleId.indexOf(v) > -1).length === 0
         })
       })
       _arrField = _arrField.join(',')
@@ -148,8 +154,8 @@
         primaryId: this.props.param.primaryId || '',
         data: this.props.param.data || null,
         BIDs: {
-          mainTable: config.setting.onload !== 'false' ? (this.props.param.primaryId || '') : '',
-          mainTabledata: config.setting.onload !== 'false' ? (config.setting.datatype === 'query' ? '' : this.props.param.data) : ''
+          [MenuID]: config.setting.onload !== 'false' ? (this.props.param.primaryId || '') : '',
+          [MenuID + 'data']: config.setting.onload !== 'false' ? (config.setting.datatype === 'query' ? '' : this.props.param.data) : ''
         }
       }, () => {
         this.improveSelectOption(config.groups)
@@ -190,7 +196,7 @@
           item.options.unshift({
             key: Utils.getuuid(),
             Value: '',
-            Text: this.state.dict['main.all']
+            Text: '鍏ㄩ儴'
           })
         }
   
@@ -204,18 +210,11 @@
             obj_name: 'data',
             arr_field: _option.field
           }
-
-          if (this.props.dataManager) { // 鏁版嵁鏉冮檺
-            param.LText = param.LText.replace(/\$@/ig, '/*')
-            param.LText = param.LText.replace(/@\$/ig, '*/')
-          } else {
-            param.LText = param.LText.replace(/@\$|\$@/ig, '')
-          }
   
           param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
           param.secretkey = Utils.encrypt(param.LText, param.timestamp)
 
-          if (this.props.menuType === 'HS') { // 浜戠鏁版嵁楠岃瘉
+          if (window.GLOB.mkHS) { // 浜戠鏁版嵁楠岃瘉
             param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
 
             if (item.database === 'sso' && options.cloudServiceApi) { // 瀛樺湪浜戠鍦板潃鏃讹紝浣跨敤浜戠绯荤粺鍙傛暟
@@ -332,7 +331,7 @@
     if (!param) return // 鏈幏鍙栧弬鏁版椂锛屼笉鍙戣姹�
 
     // 鏁版嵁绠$悊鏉冮檺
-    if (this.props.dataManager) {
+    if (sessionStorage.getItem('dataM') === 'true') {
       param.dataM = 'Y'
     }
 
@@ -354,11 +353,7 @@
       this.setState({
         data: _data,
         primaryId: _primaryId,
-        BIDs: {
-          ...BIDs,
-          mainTable: _primaryId,
-          mainTabledata: _data
-        }
+        BIDs: { ...BIDs, [this.props.MenuID]: _primaryId, [this.props.MenuID + 'data']: _data }
       })
 
       if (_data && (setting.interType !== 'inner' || (setting.interType === 'inner' && setting.innerFunc))) {
@@ -422,7 +417,7 @@
       _dataresource = '(' + _dataresource + ') tb'
     }
 
-    if (this.props.dataManager) { // 鏁版嵁鏉冮檺
+    if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
       _dataresource = _dataresource.replace(/\$@/ig, '/*')
       _dataresource = _dataresource.replace(/@\$/ig, '*/')
       // param.custom_script = param.custom_script.replace(/\$@/ig, '/*')
@@ -443,7 +438,7 @@
     param.secretkey = Utils.encrypt(param.LText, param.timestamp)
     param.DateCount = ''
 
-    if (this.props.menuType !== 'HS') { // 浜戠鏁版嵁楠岃瘉
+    if (!window.GLOB.mkHS) { // 浜戠鏁版嵁楠岃瘉
       param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
     }
 
@@ -461,7 +456,7 @@
     if (setting.interType === 'inner') {
       param.func = setting.innerFunc
     } else {
-      if (this.props.menuType === 'HS') {
+      if (window.GLOB.mkHS) {
         if (setting.sysInterface === 'true' && options.cloudServiceApi) {
           param.rduri = options.cloudServiceApi
         } else if (setting.sysInterface !== 'true') {
@@ -495,7 +490,7 @@
       this.setState({
         primaryId: primaryId
       }, () => {
-        if (btn.execSuccess === 'refresh') {
+        if (btn.execSuccess === 'refresh' || btn.execSuccess === 'grid') {
           this.loadmaindata()
         } else {
           let data = {}
@@ -507,104 +502,25 @@
           }
 
           this.setState({
-            BIDs: {
-              ...BIDs,
-              mainTable: primaryId,
-              mainTabledata: data
-            }
+            BIDs: { ...BIDs, [this.props.MenuID]: primaryId, [this.props.MenuID + 'data']: data }
           })
         }
       })
     } else if (type === 'success' && btn.afterExecSuccess === 'close') {
-      if (this.props.refresh) {
-        this.props.refresh(btn.execSuccess)
-      } else {
-        if (btn.execSuccess !== 'never') {
-          let PMenu = {
-            MenuID: this.props.param.parentId || '',
-            position: btn.execSuccess
-          }
-          this.props.refreshTabView(PMenu)
-        }
-
-        let tabs = this.props.tabviews.filter(tab => {
-          tab.selected = false
-          if (tab.MenuID === this.props.param.parentId) {
-            tab.selected = true
-          }
-
-          return tab.MenuID !== this.props.MenuID
-        })
-
-        this.props.modifyTabview(tabs)
+      if (btn.execSuccess !== 'never') {
+        MKEmitter.emit('reloadData', this.props.param.parentId, 'formtab', btn)
       }
+
+      MKEmitter.emit('closeTabView', this.props.MenuID)
     } else if (type === 'error' && btn.afterExecError === 'notclose') {
       if (btn.execError === 'refresh') {
         this.loadmaindata()
       }
     } else if (type === 'error' && btn.afterExecError === 'close') {
-      if (this.props.refresh) {
-        this.props.refresh(btn.execError)
-      } else {
-        if (btn.execError !== 'never') {
-          let PMenu = {
-            MenuID: this.props.param.parentId || '',
-            position: btn.execError
-          }
-          this.props.refreshTabView(PMenu)
-        }
-
-        let tabs = this.props.tabviews.filter(tab => {
-          tab.selected = false
-          if (tab.MenuID === this.props.param.parentId) {
-            tab.selected = true
-          }
-
-          return tab.MenuID !== this.props.MenuID
-        })
-
-        this.props.modifyTabview(tabs)
+      if (btn.execError !== 'never') {
+        MKEmitter.emit('reloadData', this.props.param.parentId, 'formtab', btn)
       }
-    }
-  }
-
-  /**
-   * @description 琛ㄦ牸Id鍙樺寲
-   */
-  handleTableId = (type, id, data) => {
-    const { BIDs } = this.state
-
-    this.setState({
-      BIDs: {
-        ...BIDs,
-        [type]: id,
-        [type + 'data']: data
-      }
-    })
-  }
-
-  /**
-   * @description 瀛愯〃鎿嶄綔瀹屾垚鍚庡埛鏂颁富琛�
-   */
-  handleMainTable = (type, tab) => {
-    if ((type === 'maingrid' || type === 'mainline') && tab.supMenu === 'mainTable') {
-      this.loadmaindata()
-    } else if ((type === 'maingrid' || type === 'mainline') && tab.supMenu) {
-      this.setState({
-        refreshtabs: [type, tab.supMenu]
-      }, () => {
-        this.setState({
-          refreshtabs: null
-        })
-      })
-    } else if (type === 'equaltab' && tab.equalTab && tab.equalTab.length > 0) {
-      this.setState({
-        refreshtabs: tab.equalTab
-      }, () => {
-        this.setState({
-          refreshtabs: null
-        })
-      })
+      MKEmitter.emit('closeTabView', this.props.MenuID)
     }
   }
 
@@ -623,19 +539,36 @@
       config: {},
       groups: null,
       actions: null,
-      arr_field: '',
       setting: null,
       data: null,
-      configMap: {},
       BIDs: {},
-      setsingle: false,
-      pickup: false,
-      popData: false,
-      visible: false,
       primaryId: null,
-      refreshtabs: null
     }, () => {
       this.loadconfig()
+    })
+  }
+
+  reloadMenuView = (menuId) => {
+    const { MenuID } = this.props
+
+    if (MenuID !== menuId) return
+
+    this.reloadview()
+  }
+
+  reloadData = (menuId) => {
+    const { MenuID } = this.props
+
+    if (MenuID !== menuId) return
+    
+    this.loadmaindata()
+  }
+
+  changeTableLine = (ContainerId, tableId, id, data) => {
+    if (this.state.ContainerId !== ContainerId) return
+
+    this.setState({
+      BIDs: {...this.state.BIDs, [tableId]: id, [tableId + 'data']: data}
     })
   }
 
@@ -644,15 +577,14 @@
     this.loadconfig()
   }
 
-  UNSAFE_componentWillReceiveProps(nextProps) {
-    if (nextProps.refreshTab && nextProps.refreshTab.MenuID === this.props.MenuID) {
-      this.reloadview()
-      this.props.refreshTabView('')
-    }
-  }
-
   shouldComponentUpdate (nextProps, nextState) {
     return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
+  }
+
+  componentDidMount () {
+    MKEmitter.addListener('reloadData', this.reloadData)
+    MKEmitter.addListener('reloadMenuView', this.reloadMenuView)
+    MKEmitter.addListener('changeTableLine', this.changeTableLine)
   }
 
   /**
@@ -662,6 +594,10 @@
     this.setState = () => {
       return
     }
+
+    MKEmitter.removeListener('reloadData', this.reloadData)
+    MKEmitter.removeListener('reloadMenuView', this.reloadMenuView)
+    MKEmitter.removeListener('changeTableLine', this.changeTableLine)
   }
 
   render() {
@@ -686,8 +622,6 @@
         }
         {hasform ?
           <FormAction
-            menuType={this.props.menuType}
-            logcolumns={[]}
             setting={setting}
             actions={actions}
             dict={this.state.dict}
@@ -707,22 +641,18 @@
                   return (
                     <TabPane tab={
                       <span>
-                        {_tab.icon ? <Icon type={_tab.icon} /> : null}
+                        {_tab.icon ? <MkIcon type={_tab.icon} /> : null}
                         {_tab.label}
                       </span>
                     } key={`${index}`}>
-                      {_tab.type === 'SubTable' ?
-                        <SubTable
-                          Tab={_tab}
-                          MenuID={_tab.linkTab}
-                          SupMenuID={this.props.MenuID}
-                          refreshtabs={this.state.refreshtabs}
-                          ContainerId={this.state.ContainerId}
-                          BID={this.state.BIDs[_tab.supMenu] || ''}
-                          BData={this.state.BIDs[_tab.supMenu + 'data'] || ''}
-                          handleTableId={this.handleTableId}
-                          handleMainTable={(type) => this.handleMainTable(type, _tab)}
-                        /> : null}
+                      <SubTable
+                        Tab={_tab}
+                        MenuID={_tab.linkTab}
+                        SupMenuID={this.props.MenuID}
+                        ContainerId={this.state.ContainerId}
+                        BID={this.state.BIDs[_tab.supMenu] || ''}
+                        BData={this.state.BIDs[_tab.supMenu + 'data'] || ''}
+                      />
                     </TabPane>
                   )
                 })}
@@ -730,6 +660,7 @@
             )
           })
         }
+        {!window.GLOB.mkHS && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null}
         {viewlost ? <NotFount msg={this.state.lostmsg} /> : null}
       </div>
     )
@@ -738,20 +669,12 @@
 
 const mapStateToProps = (state) => {
   return {
-    menuType: state.editLevel,
-    tabviews: state.tabviews,
-    refreshTab: state.refreshTab,
-    permAction: state.permAction,
-    dataManager: state.dataManager,
-    permRoles: state.permRoles
+    permAction: state.permAction
   }
 }
 
-const mapDispatchToProps = (dispatch) => {
-  return {
-    refreshTabView: (refreshTab) => dispatch(refreshTabView(refreshTab)),
-    modifyTabview: (tabviews) => dispatch(modifyTabview(tabviews))
-  }
+const mapDispatchToProps = () => {
+  return {}
 }
 
 export default connect(mapStateToProps, mapDispatchToProps)(NormalTable)
\ No newline at end of file

--
Gitblit v1.8.0