From dfb7b774d9934f4f5b3edf1a39bf73be9c90c55d Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 13 十一月 2020 15:44:57 +0800
Subject: [PATCH] 移出数据表

---
 src/components/tabview/index.jsx          |    6 ------
 /dev/null                                 |   15 ---------------
 src/components/header/index.jsx           |   12 ++++--------
 src/components/sidemenu/index.jsx         |    3 ---
 src/tabviews/zshare/normalTable/index.jsx |    2 --
 5 files changed, 4 insertions(+), 34 deletions(-)

diff --git a/src/components/header/index.jsx b/src/components/header/index.jsx
index 44e3fab..de4333e 100644
--- a/src/components/header/index.jsx
+++ b/src/components/header/index.jsx
@@ -589,14 +589,10 @@
               _permMenus[menu.MenuID] = true
 
               let _type = ''
-              if (menu.LinkUrl) {
-                if (menu.LinkUrl === 'CommonTable') {
-                  _type = 'CommonTable'
-                } else if (menu.LinkUrl === 'DataManage') {
-                  _type = 'DataManage'
-                } else if (iframes.includes(menu.LinkUrl.split('?')[0])) {
-                  _type = 'iframe'
-                }
+              if (menu.LinkUrl === 'CommonTable') {
+                _type = 'CommonTable'
+              } else if (menu.LinkUrl && iframes.includes(menu.LinkUrl.split('?')[0])) {
+                _type = 'iframe'
               }
   
               if (_type !== 'iframe') {
diff --git a/src/components/sidemenu/index.jsx b/src/components/sidemenu/index.jsx
index cc6e57c..b65a490 100644
--- a/src/components/sidemenu/index.jsx
+++ b/src/components/sidemenu/index.jsx
@@ -123,9 +123,6 @@
 
             if (child.LinkUrl === 'CommonTable') {
               _tmenu.type = 'CommonTable'
-            } else if (child.LinkUrl === 'DataManage') {
-              _tmenu.type = 'DataManage'
-              _tmenu.forbidden = true
             } else if (iframes.includes(child.LinkUrl.split('?')[0])) {
               _tmenu.type = 'iframe'
               _tmenu.forbidden = true
diff --git a/src/components/tabview/index.jsx b/src/components/tabview/index.jsx
index 83ef4ff..386daec 100644
--- a/src/components/tabview/index.jsx
+++ b/src/components/tabview/index.jsx
@@ -24,9 +24,7 @@
 const ScriptTable = asyncComponent(() => import('@/tabviews/scriptmanage'))
 const TabManage = asyncComponent(() => import('@/tabviews/tabmanage'))
 const Iframe = asyncComponent(() => import('@/tabviews/iframe'))
-const DataManage = asyncComponent(() => import('@/tabviews/datamanage'))
 const RoleManage = asyncComponent(() => import('@/tabviews/rolemanage'))
-const TabForm = asyncComponent(() => import('@/tabviews/tabform'))
 const FormTab = asyncComponent(() => import('@/tabviews/formtab'))
 
 let service = ''
@@ -114,12 +112,8 @@
       return (<ScriptTable MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} key={view.MenuID}/>)
     } else if (view.type === 'TabManage') {
       return (<TabManage MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} key={view.MenuID}/>)
-    } else if (view.type === 'DataManage') {
-      return (<DataManage MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} key={view.MenuID}/>)
     } else if (view.type === 'RolePermission') {
       return (<RoleManage MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} key={view.MenuID}/>)
-    } else if (view.type === 'TabForm') {
-      return (<TabForm MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} key={view.MenuID} param={view.param}/>)
     } else if (view.type === 'FormTab') {
       return (<FormTab MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} key={view.MenuID} param={view.param}/>)
     } else if (view.type === 'iframe') {
diff --git a/src/tabviews/datamanage/action/index.jsx b/src/tabviews/datamanage/action/index.jsx
deleted file mode 100644
index f276410..0000000
--- a/src/tabviews/datamanage/action/index.jsx
+++ /dev/null
@@ -1,482 +0,0 @@
-import React, {Component} from 'react'
-import PropTypes from 'prop-types'
-import {connect} from 'react-redux'
-import { Button, Affix, Modal, notification } from 'antd'
-import MutilForm from '@/components/mutilform'
-import {modifyTabview} from '@/store/action'
-import Api from '@/api'
-import './index.scss'
-
-const { confirm } = Modal
-
-class MainAction extends Component {
-  static propTpyes = {
-    MenuNo: PropTypes.string, // 鑿滃崟鍙傛暟
-    columns: PropTypes.array, // 鏄剧ず鍒楃敤浜庤〃鍗曞垪
-    actions: PropTypes.array, // 鎼滅储鏉′欢鍒楄〃
-    dict: PropTypes.object, // 瀛楀吀椤�
-    mainKey: PropTypes.array
-  }
-
-  state = {
-    visible: false, // 寮圭獥鏄惁鏄剧ず
-    formdata: null, // 琛ㄥ崟鏄剧ず鍒楁暟鎹�
-    tabledata: null, // 鍒楄〃閫夋嫨鏁版嵁
-    confirmLoading: false, // 纭涓�
-    execAction: null, // 鎵ц鎸夐挳灞炴��
-    primarykey: null, // 涓婚敭
-    bidkey: null, // BID
-    defaultproc: { // 榛樿娣诲姞銆佷慨鏀广�佸垹闄ゅ瓨鍌ㄨ繃绋�
-      Add: 'sDataManageAdd',
-      Update: 'sDataManageUpt',
-      Delete: 'sDataManageDel'
-    }
-  }
-  
-  submitaction = (action, datalist, primarykey, bidkey) => {
-    if (action.Ot === 'requiredSgl' || action.Ot === 'requiredOnce') { // 閫夋嫨鍗曡鎴栧琛宨d鎷兼帴鎵ц
-      let ids = datalist.map(data => {
-        return data[primarykey]
-      })
-      let bids = null
-      if (bidkey) {
-        bids = datalist.map(data => {
-          return data[bidkey] || ''
-        })
-      }
-      return Api.submitInterface({
-        func: action.AuditProc || this.state.defaultproc[action.Action],
-        ID: ids.join(','), // 涓婚敭瀛楁
-        BID: bids ? bids.join(',') : '' // BID瀛楁
-      })
-    } else if (action.Ot === 'required') { // 鍙�夊琛岋紝寰幆鎵ц
-      let deffers = datalist.map(data => {
-        return new Promise((resolve, reject) => {
-          Api.submitInterface({
-            func: action.AuditProc || this.state.defaultproc[action.Action],
-            ID: data[primarykey], // 涓婚敭瀛楁
-            BID: data[bidkey] || '' // BID瀛楁
-          }).then(res => {
-            resolve(res)
-          })
-        })
-      })
-      return Promise.all(deffers)
-    } else { // 涓嶉�夎
-      return Api.submitInterface({
-        func: action.AuditProc || this.state.defaultproc[action.Action],
-        ID: '', // 涓婚敭瀛楁
-        BID: '' // BID瀛楁
-      })
-    }
-  }
-  actionTrigger = (item) => {
-    let _this = this
-    let datalist = this.props.gettableselected() || []
-
-    if (item.Action === 'ExportExcel') {
-      return
-      // this.submitaction(item, datalist, ID[0], (BID.length === 1 ? BID[0] : ''))
-      //   .then(res => {
-      //     if (Array.isArray(res)) {
-      //       let iserror = false
-      //       res.forEach(result => {
-      //         if (!result.status && !iserror) {
-      //           notification.error({
-      //             top: 92,
-      //             message: result.message,
-      //             duration: 15
-      //           })
-      //           iserror = true
-      //         }
-      //       })
-      //       if (!iserror) {
-      //         notification.success({
-      //           top: 92,
-      //           message: _this.props.dict['main.action.confirm.success']
-      //         })
-
-      //         _this.props.refreshdata(item.ReloadForm) // 鍒锋柊椤甸潰
-      //       }
-      //     } else {
-      //       if (res.status) {
-      //         notification.success({
-      //           top: 92,
-      //           message: _this.props.dict['main.action.confirm.success']
-      //         })
-              
-      //         _this.props.refreshdata(item.ReloadForm) // 鍒锋柊椤甸潰
-      //       } else {
-      //         notification.error({
-      //           top: 92,
-      //           message: res.message,
-      //           duration: 15
-      //         })
-      //       }
-      //     }
-      //   })
-    }
-
-    /************* 鏍¢獙鍒楄〃鏁版嵁閫夋嫨鏄惁姝g‘ **************/
-
-    if ((item.Ot === 'requiredSgl' || item.Ot === 'required' || item.Ot === 'requiredOnce') && datalist.length === 0) {
-      // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾暟鎹�
-      notification.warning({
-        top: 92,
-        message: this.props.dict['main.action.confirm.selectline'],
-        duration: 5
-      })
-      return
-    } else if (item.Ot === 'requiredSgl' && datalist.length > 1) {
-      // 闇�瑕侀�夋嫨鍗曡鏃讹紝鏍¢獙鏁版嵁
-      notification.warning({
-        top: 92,
-        message: this.props.dict['main.action.confirm.selectSingleLine'],
-        duration: 5
-      })
-      return
-    }
-
-    /************* 鏍¢獙涓婚敭涓嶣ID **************/
-    let ID = []
-    let BID = []
-    if (item.Ot === 'requiredSgl' || item.Ot === 'required' || item.Ot === 'requiredOnce') {
-      this.props.mainKey.forEach(key => {
-        if (key.IDField === '1') {
-          ID.push(key.FieldName)
-        } else {
-          BID.push(key.FieldName)
-        }
-      })
-  
-      if (ID.length === 0) { // 涓婚敭鏍¢獙
-        notification.warning({
-          top: 92,
-          message: this.props.dict['main.action.primarykey.required'],
-          duration: 5
-        })
-        return
-      } else if (ID.length > 1) {
-        notification.warning({
-          top: 92,
-          message: this.props.dict['main.action.primarykey.repetition'],
-          duration: 5
-        })
-        return
-      }
-  
-      if (BID.length > 1) { // BID鏍¢獙
-        notification.warning({
-          top: 92,
-          message: this.props.dict['main.action.primarykey.repetitionbid'],
-          duration: 5
-        })
-        return
-      }
-    }
-
-    /********************* 鎿嶄綔澶勭悊 **********************/
-
-    if (item.OpenType === 'prompt') { // 纭妗�
-      confirm({
-        title: this.props.dict['main.action.confirm.tip'],
-        onOk() {
-          return _this.submitaction(item, datalist, ID[0], (BID.length === 1 ? BID[0] : ''))
-            .then(res => {
-              if (Array.isArray(res)) {
-                let iserror = false
-                res.forEach(result => {
-                  if (!result.status && !iserror) {
-                    notification.error({
-                      top: 92,
-                      message: result.message,
-                      duration: 10
-                    })
-                    iserror = true
-                  }
-                })
-                if (!iserror) {
-                  notification.success({
-                    top: 92,
-                    message: _this.props.dict['main.action.confirm.success'],
-                    duration: 2
-                  })
-
-                  _this.props.refreshdata(item.ReloadForm) // 鍒锋柊椤甸潰
-                }
-              } else {
-                if (res.status) {
-                  notification.success({
-                    top: 92,
-                    message: _this.props.dict['main.action.confirm.success'],
-                    duration: 2
-                  })
-                  
-                  _this.props.refreshdata(item.ReloadForm) // 鍒锋柊椤甸潰
-                } else {
-                  notification.error({
-                    top: 92,
-                    message: res.message,
-                    duration: 10
-                  })
-                }
-              }
-            })
-        },
-        onCancel() {}
-      })
-    } else if (item.OpenType === 'execproc') { // 鐩存帴鎵ц
-      this.submitaction(item, datalist, ID[0], (BID.length === 1 ? BID[0] : ''))
-        .then(res => {
-          if (Array.isArray(res)) {
-            let iserror = false
-            res.forEach(result => {
-              if (!result.status && !iserror) {
-                notification.error({
-                  top: 92,
-                  message: result.message,
-                  duration: 10
-                })
-                iserror = true
-              }
-            })
-            if (!iserror) {
-              notification.success({
-                top: 92,
-                message: this.props.dict['main.action.confirm.success'],
-                duration: 2
-              })
-
-              this.props.refreshdata(item.ReloadForm) // 鍒锋柊椤甸潰
-            }
-          } else {
-            if (res.status) {
-              notification.success({
-                top: 92,
-                message: this.props.dict['main.action.confirm.success'],
-                duration: 2
-              })
-              
-              this.props.refreshdata(item.ReloadForm) // 鍒锋柊椤甸潰
-            } else {
-              notification.error({
-                top: 92,
-                message: res.message,
-                duration: 10
-              })
-            }
-          }
-        })
-    } else if (item.OpenType === 'newpage') { // 鎵撳紑鏂伴〉闈�
-      let src = '#/' + item.LinkUrl + '?param=' + window.btoa(JSON.stringify({UserId: sessionStorage.getItem('UserID'), ID: datalist[0][ID[0]], BID: BID.length === 1 ? datalist[0][BID[0]] : ''}))
-      window.open(src)
-    } else if (item.OpenType === 'pop') { // 妯℃�佹
-      this.setState({
-        formdata: this.props.columns.map(column => {
-          column.readonly = false
-          if (column.ReadOnly.includes(item.MenuID)) {
-            column.readonly = true
-          }
-          return column
-        }),
-        visible: true,
-        execAction: item,
-        primarykey: ID[0],
-        bidkey: BID.length === 1 ? BID[0] : '',
-        tabledata: datalist[0] || ''
-      })
-    } else if (item.OpenType === 'tab') { // 鎵撳紑鏂版爣绛鹃〉
-      let menu = {
-        MenuNo: this.props.MenuNo,
-        MenuID: item.MenuID,
-        MenuName: item.MenuName,
-        type: 'TabForm',
-        param: {
-          formdata: this.props.columns.map(column => {
-            column.readonly = false
-            if (column.ReadOnly.includes(item.MenuID)) {
-              column.readonly = true
-            }
-            return column
-          }),
-          execAction: item,
-          primarykey: ID[0],
-          bidkey: BID.length === 1 ? BID[0] : '',
-          tabledata: datalist[0] || '',
-          defaultproc: this.state.defaultproc,
-          dict: this.props.dict
-        }
-      }
-      let tabs = JSON.parse(JSON.stringify(this.props.tabviews))
-      let _index = null
-      let isexit = false
-      tabs = tabs.map((tab, index) => {
-        tab.selected = false
-        if (tab.MenuNo === this.props.MenuNo && tab.MenuID === item.MenuID) {
-          isexit = true
-          tab.selected = true
-          tab.param = menu.param
-        } else if (tab.MenuNo === this.props.MenuNo && tab.type !== 'TabForm') {
-          _index = index
-          menu.MenuName = tab.MenuName + '-' + menu.MenuName
-          menu.selected = true
-        }
-        return tab
-      })
-      if (!isexit) {
-        tabs.splice(_index + 1, 0, menu)
-      }
-      this.props.modifyTabview(tabs)
-    } else if (item.OpenType === 'blank') { // 褰撳墠椤甸潰璺宠浆
-      this.props.switchformview({
-        formdata: this.props.columns.map(column => {
-          column.readonly = false
-          if (column.ReadOnly.includes(item.MenuID)) {
-            column.readonly = true
-          }
-          return column
-        }),
-        execAction: item,
-        primarykey: ID[0],
-        bidkey: BID.length === 1 ? BID[0] : '',
-        tabledata: datalist[0] || '',
-        defaultproc: this.state.defaultproc
-      })
-    } else {
-      notification.warning({
-        top: 92,
-        message: this.props.dict['main.action.settingerror'],
-        duration: 5
-      })
-    }
-  }
-
-  getModels = () => {
-    // 鑾峰彇寮圭獥琛ㄥ崟淇℃伅
-    if (!this.state.execAction) return
-    let cols = +this.state.execAction.FormLineQty
-    if (![1, 2, 3].includes(cols)) {
-      cols = 2
-    }
-    return (
-      <Modal
-        wrapClassName='datamanage-action-modal'
-        title={this.state.execAction.MenuName || ''}
-        visible={this.state.visible}
-        width={document.body.clientWidth * this.state.execAction.PopWidth}
-        onOk={this.handleOk}
-        confirmLoading={this.state.confirmLoading}
-        onCancel={this.handleCancel}
-      >
-        {this.state.formdata &&
-          <MutilForm
-            dict={this.props.dict}
-            formlist={this.state.formdata}
-            data={this.state.tabledata}
-            cols={cols}
-            wrappedComponentRef={(inst) => this.formRef = inst}
-          />}
-      </Modal>
-    )
-  }
-
-  handleOk = () => {
-    this.formRef.handleConfirm().then(res => {
-      this.setState({
-        confirmLoading: true
-      })
-      let values = []
-      // 浠庤〃鍗曚腑鑾峰彇濉啓鏁版嵁
-      this.props.columns.forEach(column => {
-        let value = ''
-        if (res.hasOwnProperty(column.FieldName)) { // 渚濇閫夊彇琛ㄥ崟鍊笺�佸垵濮嬪��
-          value = res[column.FieldName]
-        } else if (column.InitVal) {
-          value = column.InitVal
-        }
-        values.push(value)
-      })
-
-      let queryparam = { // 璇锋眰鍙傛暟
-        func: this.state.execAction.AuditProc || this.state.defaultproc[this.state.execAction.Action],
-        ID: (this.state.tabledata && this.state.primarykey) ? this.state.tabledata[this.state.primarykey] : '', // 涓婚敭瀛楁
-        BID: (this.state.tabledata && this.state.bidkey) ? this.state.tabledata[this.state.bidkey] : '' // BID瀛楁
-      }
-      // 娣诲姞鍜屼慨鏀硅姹傚弬鏁板瓧娈典笉鍚�
-      if (this.state.execAction.Action === 'Add') {
-        queryparam.AddLongText = values.join(',')
-      } else if (this.state.execAction.Action === 'Update') {
-        queryparam.UptLongText = values.join(',')
-      }
-
-      // 鎻愪氦璇锋眰
-      Api.submitInterface(queryparam).then(result => {
-        if (result.status) {
-          notification.success({
-            top: 92,
-            message: this.props.dict['main.action.confirm.success'],
-            duration: 2
-          })
-          this.setState({
-            confirmLoading: false,
-            visible: false
-          })
-
-          this.props.refreshdata(this.state.execAction.ReloadForm) // 鍒锋柊椤甸潰
-        } else {
-          this.setState({
-            confirmLoading: false
-          })
-          notification.error({
-            top: 92,
-            message: result.message,
-            duration: 10
-          })
-        }
-      })
-    }, () => {})
-  }
-
-  handleCancel = () => {
-    // 鍙栨秷
-    this.setState({
-      confirmLoading: false,
-      visible: false
-    })
-    this.formRef.handleReset()
-  }
-
-  render() {
-    return (
-      <Affix offsetTop={48}>
-        <div className="datamanage-button-list" id={this.props.MenuNo + 'mainaction'}>
-          {this.props.actions.map((item, index) => {
-            return (
-              <Button
-                className={'mk-btn ' + item.CssClass + ' mk-' + item.CssClass}
-                icon={item.Icon}
-                key={'action' + index}
-                onClick={() => {this.actionTrigger(item)}}
-              >{item.MenuName}</Button>
-            )
-          })}
-          {this.getModels()}
-        </div>
-      </Affix>
-    )
-  }
-}
-
-const mapStateToProps = (state) => {
-  return {
-    tabviews: state.tabviews
-  }
-}
-
-const mapDispatchToProps = (dispatch) => {
-  return {
-    modifyTabview: (tabviews) => dispatch(modifyTabview(tabviews))
-  }
-}
-
-export default connect(mapStateToProps, mapDispatchToProps)(MainAction)
\ No newline at end of file
diff --git a/src/tabviews/datamanage/action/index.scss b/src/tabviews/datamanage/action/index.scss
deleted file mode 100644
index e57aa6f..0000000
--- a/src/tabviews/datamanage/action/index.scss
+++ /dev/null
@@ -1,43 +0,0 @@
-.datamanage-button-list {
-  padding: 10px 20px 5px;
-  background: #ffffff;
-  button {
-    margin-right: 15px;
-    margin-bottom: 10px;
-  }
-  .ant-btn > .anticon + span {
-    margin-left: 5px;
-  }
-}
-// 璁剧疆妯℃�佹鏍峰紡锛岃瀹氭渶澶ф渶灏忛珮搴︼紝閲嶇疆婊氬姩鏉�
-.datamanage-action-modal {
-  .ant-modal {
-    max-width: 95vw;
-  }
-  .ant-modal-body {
-    max-height: calc(100vh - 235px);
-    min-height: 150px;
-    overflow-y: auto;
-    padding-bottom: 35px;
-  }
-  .ant-modal-body::-webkit-scrollbar {
-    width: 10px;
-    height: 10px;
-  }
-  .ant-modal-body::-webkit-scrollbar-thumb {
-    border-radius: 5px;
-    box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.13);
-    background: rgba(0, 0, 0, 0.13);
-  }
-  .ant-modal-body::-webkit-scrollbar-track {
-    box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05);
-    border-radius: 3px;
-    border: 1px solid rgba(0, 0, 0, 0.07);
-    background: rgba(0, 0, 0, 0);
-  }
-  .ant-modal-footer {
-    .ant-btn {
-      margin-right: 25px;
-    }
-  }
-}
\ No newline at end of file
diff --git a/src/tabviews/datamanage/index.jsx b/src/tabviews/datamanage/index.jsx
deleted file mode 100644
index 7fe3090..0000000
--- a/src/tabviews/datamanage/index.jsx
+++ /dev/null
@@ -1,359 +0,0 @@
-import React, {Component} from 'react'
-import PropTypes from 'prop-types'
-import { is, fromJS } from 'immutable'
-import {connect} from 'react-redux'
-import { notification, Button } from 'antd'
-import MutilForm from '@/components/mutilform'
-import {refreshTabView} from '@/store/action'
-import Api from '@/api'
-import DataSearch from './search'
-import DataAction from './action'
-import DataTable from './table'
-import Loading from '@/components/loading'
-import zhCN from '@/locales/zh-CN/main.js'
-import enUS from '@/locales/en-US/main.js'
-import './index.scss'
-
-class DataManage extends Component {
-  static propTpyes = {
-    MenuNo: PropTypes.string, // 鑿滃崟鍙傛暟
-    MenuID: PropTypes.string // 鑿滃崟Id
-  }
-
-  state = {
-    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, // 鏁版嵁瀛楀吀
-    searchlist: null, // 鎼滅储鏉′欢
-    searchparam: null, // 鎼滅储鍙傛暟
-    actions: null, // 鎸夐挳
-    columns: null, // 鏄剧ず鍒�
-    mainKey: null, // 涓婚敭
-    selectable: false, // 琛ㄦ牸鏄惁鍙��
-    datafunc: null, // 鑾峰彇鏁版嵁鍙婃樉绀哄垪鐨勫瓨鍌ㄨ繃绋嬪悕绉�
-    data: null, // 鍒楄〃鏁版嵁
-    total: 0, // 鎬绘暟
-    loading: true, // 琛ㄦ牸鍔犺浇涓�
-    confirmloading: false, // 琛ㄥ崟鎻愪氦纭涓�
-    formparam: null, // 琛ㄥ崟鍙傛暟
-    showdetail: false // 鏄惁鏄剧ず璇︽儏鎴栬〃鍗曢〉闈�
-  }
-
-  async loadconfig () {
-    // 鍔犺浇鎼滅储鏉′欢鍙婃寜閽俊鎭�
-    let param = {
-      func: 's_Get_Page_wheproc',
-      MenuNo: this.props.MenuNo
-    }
-    let result = await Api.commonInterface(param)
-    if (result.status) {
-      let newconfig = {}
-      if (result.sWheredata && result.sWheredata.length > 0) {
-        newconfig.searchlist = result.sWheredata
-      }
-      if (result.sMenusdata && result.sMenusdata.length > 0) {
-        newconfig.actions = result.sMenusdata.map(action => {
-          let width = +action.PopWidth
-          if (width > 100 || !width) {
-            width = 62
-          }
-          action.PopWidth = width / 100
-          return action
-        })
-      }
-      newconfig.selectable = result.CheckBox !== 'true'
-      newconfig.datafunc = result.sWhereAction
-      this.setState(newconfig)
-    } else {
-      notification.warning({
-        top: 92,
-        message: result.message,
-        duration: 5
-      })
-    }
-  }
-
-  async loadDbdata (searches, pageIndex = 1, pageSize = 10, orderColumn = '', orderType = '') {
-    // 鍔犺浇鏄剧ず鍒楀強琛ㄦ牸鏁版嵁
-    let param = {
-      func: this.state.datafunc,
-      MenuNo: this.props.MenuNo,
-      PageSize: pageSize,
-      PageIndex: pageIndex,
-      SortName: orderColumn,
-      SortOrder: orderType,
-      ...searches
-    }
-    let result = await Api.commonInterface(param)
-    if (result.status) {
-      this.setState({
-        columns: result.sGriddata,
-        data: result.data.map((item, index) => {
-          item.key = index
-          return item
-        }),
-        mainKey: result.sGriddata.filter(grid => grid.IDField === '1' || grid.IDField === '2'),
-        total: result.Total,
-        searchparam: searches,
-        loading: false
-      })
-    } else {
-      notification.warning({
-        top: 92,
-        message: result.message,
-        duration: 5
-      })
-      this.setState({
-        searchparam: searches,
-        loading: false
-      })
-    }
-  }
-
-  refreshbysearch = (searches, type) => {
-    // 鎼滅储鏉′欢鍙樺寲
-    if (type === 'reset') {
-      this.setState({
-        columns: null,
-        data: null,
-        total: 0
-      })
-    } else {
-      this.loadDbdata(searches)
-      this.setState({
-        loading: true,
-        columns: null
-      })
-    }
-  }
-
-  refreshbytable = (pagination, filters, sorter) => {
-    // 琛ㄦ牸鏌ヨ鏉′欢淇敼
-    if (sorter.order) {
-      let _chg = {
-        ascend: 'asc',
-        descend: 'desc'
-      }
-      sorter.order = _chg[sorter.order]
-    }
-    this.loadDbdata(this.state.searchparam, pagination.current, pagination.pageSize, sorter.field, sorter.order)
-    this.setState({
-      loading: true
-    })
-  }
-
-  refreshbyaction = (type) => {
-    // 鎸夐挳鎿嶄綔鍚庡埛鏂拌〃鏍�,閲嶇疆椤电爜鍙婇�夋嫨椤�
-    if (type === 'grid') {
-      this.refs.dataTable.resetTable()
-      this.loadDbdata(this.state.searchparam)
-      this.setState({
-        loading: true
-      })
-    } else if (type === 'all') {
-      this.setState({
-        searchlist: null,
-        searchparam: null,
-        actions: null,
-        columns: null,
-        mainKey: null,
-        selectable: false,
-        datafunc: null,
-        data: null,
-        total: 0
-      })
-      this.loadconfig()
-    }
-  }
-
-  gettableselected = () => {
-    // 鑾峰彇琛ㄦ牸宸查�夋嫨椤�
-    let data = []
-    this.refs.dataTable.state.selectedRowKeys.forEach(item => {
-      data.push(this.refs.dataTable.props.data[item])
-    })
-    return data
-  }
-
-  switchview = (param) => {
-    // 鍒囨崲鑷宠鎯呮垨琛ㄥ崟椤甸潰
-    let cols = param.execAction.FormLineQty
-    if (![1, 2, 3].includes(cols)) {
-      cols = 2
-    }
-    param.cols = cols
-    this.setState({
-      formparam: param,
-      showdetail: true
-    })
-  }
-
-  handleOk = () => {
-    // 琛ㄥ崟鎻愪氦
-    let _param = this.state.formparam
-    // 浠庤〃鍗曚腑鑾峰彇濉啓鏁版嵁
-    this.formRef.handleConfirm().then(res => {
-      this.setState({
-        confirmloading: true
-      })
-      let values = []
-      _param.formdata.forEach(column => { // 渚濇閫夊彇琛ㄥ崟鍊笺�佸垵濮嬪��,鑾峰彇鎻愪氦淇℃伅
-        let value = ''
-        if (res.hasOwnProperty(column.FieldName)) {
-          value = res[column.FieldName]
-        } else if (column.InitVal) {
-          value = column.InitVal
-        }
-        values.push(column.FieldName + 'equal\'' + value + '\'')
-      })
-
-      let queryparam = { // 璇锋眰鍙傛暟
-        func: _param.execAction.AuditProc || _param.defaultproc[_param.execAction.Action],
-        ID: (_param.tabledata && _param.primarykey) ? _param.tabledata[_param.primarykey] : '', // 涓婚敭瀛楁
-        BID: (_param.tabledata && _param.bidkey) ? _param.tabledata[_param.bidkey] : '' // BID瀛楁
-      }
-      // 娣诲姞鍜屼慨鏀硅姹傚弬鏁板瓧娈典笉鍚�
-      if (_param.execAction.Action === 'Add') {
-        queryparam.AddLongText = values.join(',')
-      } else if (_param.execAction.Action === 'Update') {
-        queryparam.UptLongText = values.join(',')
-      }
-
-      // 鎻愪氦璇锋眰
-      Api.submitInterface(queryparam).then(result => {
-        if (result.status) {
-          notification.success({
-            top: 92,
-            message: this.state.dict['main.action.confirm.success'],
-            duration: 2
-          })
-          
-          this.refreshbyaction(_param.execAction.ReloadForm) // 鍒锋柊涓诲垪琛ㄩ〉闈�
-
-          if (_param.execAction.BackPre !== 'false') { // 椤甸潰杩斿洖
-            this.handleCancel()
-          }
-        } else {
-          // 閿欒鎻愮ず锛屽彇娑堟彁浜や腑鐘舵��
-          notification.error({
-            top: 92,
-            message: result.message,
-            duration: 10
-          })
-          this.setState({
-            confirmloading: false
-          })
-        }
-      })
-    }, () => {})
-  }
-
-  handleCancel = () => {
-    // 鍏抽棴褰撳墠绐楀彛锛岃繑鍥炲師鍒楄〃椤�
-    this.setState({
-      confirmloading: false,
-      formparam: null,
-      showdetail: false
-    })
-    // 鎻愪氦鎴愬姛鎴栬繑鍥炴椂锛屾粴鍔ㄨ嚦椤堕儴
-    document.body.scrollTop = 0
-    document.documentElement.scrollTop = 0
-  }
-
-  UNSAFE_componentWillMount () {
-    // 缁勪欢鍔犺浇鏃讹紝鑾峰彇鑿滃崟鏁版嵁
-    this.loadconfig()
-  }
-
-  shouldComponentUpdate (nextProps, nextState) {
-    if (!is(fromJS(this.props.refreshTab), fromJS(nextProps.refreshTab)) && nextProps.refreshTab && this.props.MenuNo === nextProps.refreshTab.MenuNo) {
-      // 鎺ユ敹鍒板埛鏂板懡浠わ紝涓斿埛鏂颁俊鎭腑鑿滃崟鍙傛暟涓庡綋鍓嶉〉闈㈢浉鍚�
-      this.props.refreshTabView(null)
-      this.refreshbyaction(nextProps.refreshTab.ReloadForm)
-      return false
-    } else if (!is(fromJS(this.props.refreshTab), fromJS(nextProps.refreshTab)) && !(nextProps.refreshTab && this.props.MenuNo === nextProps.refreshTab.MenuNo)) {
-      // 鏈帴鏀跺埌鍒锋柊鍛戒护锛屾垨鍒锋柊淇℃伅涓彍鍗曞弬鏁颁笌褰撳墠椤甸潰涓嶅悓
-      return false
-    } else {
-      return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
-    }
-  }
-
-  render() {
-    return (
-      <div className="datamanage">
-        {!this.state.searchlist && <Loading />}
-        <div className={this.state.showdetail ? 'hidden-table' : ''}>
-          {/* 鎼滅储鏉′欢 */}
-          {this.state.searchlist &&
-            <DataSearch
-              refreshdata={this.refreshbysearch}
-              searchlist={this.state.searchlist}
-              dict={this.state.dict}
-            />
-          }
-          {/* 鎸夐挳缁� */}
-          {this.state.actions && this.state.columns &&
-            <DataAction
-              MenuNo={this.props.MenuNo}
-              columns={this.state.columns}
-              mainKey={this.state.mainKey}
-              refreshdata={this.refreshbyaction}
-              switchformview={this.switchview}
-              gettableselected={this.gettableselected}
-              actions={this.state.actions}
-              dict={this.state.dict}
-            />
-          }
-          {/* 琛ㄦ牸 */}
-          {this.state.columns &&
-            <DataTable
-              ref="dataTable"
-              MenuNo={this.props.MenuNo}
-              refreshdata={this.refreshbytable}
-              columns={this.state.columns}
-              actions={this.state.actions}
-              data={this.state.data}
-              selectable={this.state.selectable}
-              total={this.state.total}
-              loading={this.state.loading}
-              dict={this.state.dict}
-            />
-          }
-        </div>
-        {/* 璇︽儏鎴栦慨鏀硅〃鍗� */}
-        {this.state.showdetail && (
-          <div className="tabform">
-            <MutilForm
-              dict={this.state.dict}
-              formlist={this.state.formparam.formdata}
-              data={this.state.formparam.tabledata}
-              cols={this.state.formparam.cols}
-              wrappedComponentRef={(inst) => this.formRef = inst}
-            />
-            <div className="operation">
-              <Button type="primary" htmlType="submit" onClick={() => {this.handleOk()}} loading={this.state.confirmloading}>
-                {this.state.dict['main.confirm']}
-              </Button>
-              <Button onClick={() => {this.handleCancel()}}>
-                {this.state.dict['main.return']}
-              </Button>
-            </div>
-          </div>)
-        }
-      </div>
-    )
-  }
-}
-
-const mapStateToProps = (state) => {
-  return {
-    refreshTab: state.refreshTab
-  }
-}
-
-const mapDispatchToProps = (dispatch) => {
-  return {
-    refreshTabView: (refreshTab) => dispatch(refreshTabView(refreshTab))
-  }
-}
-
-export default connect(mapStateToProps, mapDispatchToProps)(DataManage)
\ No newline at end of file
diff --git a/src/tabviews/datamanage/index.scss b/src/tabviews/datamanage/index.scss
deleted file mode 100644
index e4a05f2..0000000
--- a/src/tabviews/datamanage/index.scss
+++ /dev/null
@@ -1,27 +0,0 @@
-.datamanage {
-  min-height: calc(100vh - 94px);
-  padding-top: 16px;
-  .hidden-table {
-    position: absolute;
-    z-index: -1;
-    opacity: 0;
-  }
-  .tabform {
-    padding: 25px 25px 120px;
-    .operation {
-      text-align: center;
-      margin: 20px 0;
-      .ant-btn {
-        height: 40px;
-        padding: 0 30px;
-        font-size: 16px;
-      }
-      .ant-btn-primary {
-        margin-right: 40px;
-      }
-    }
-  }
-  .datamanage-search + .datamanage-table {
-    padding-top: 15px;
-  }
-}
diff --git a/src/tabviews/datamanage/search/index.jsx b/src/tabviews/datamanage/search/index.jsx
deleted file mode 100644
index 65ffeab..0000000
--- a/src/tabviews/datamanage/search/index.jsx
+++ /dev/null
@@ -1,201 +0,0 @@
-import React, {Component} from 'react'
-import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Button, Select, DatePicker, notification } from 'antd'
-import moment from 'moment'
-import './index.scss'
-
-// const {MonthPicker, WeekPicker} = DatePicker
-// const dateFormat = 'YYYY-MM-DD'
-// const weekFormat = 'YYYYMMDD'
-// const monthFormat = 'YYYY-MM'
-
-class MainSearch extends Component {
-  static propTpyes = {
-    searchlist: PropTypes.array, // 鎼滅储鏉′欢鍒楄〃
-    dict: PropTypes.object // 瀛楀吀椤�
-  }
-
-  state = {
-    formats: null, // 浜嬩欢鏍¢獙瑙勫垯
-    match: null // 鎼滅储鏉′欢鍖归厤瑙勫垯
-  }
-
-  UNSAFE_componentWillMount () {
-    let formats = {}
-    let match = {}
-    this.props.searchlist.forEach(item => {
-      match[item.FieldName] = item.Op
-    })
-    this.setState({
-      formats: formats,
-      match: match
-    })
-  }
-
-  getFields() {
-    const { getFieldDecorator } = this.props.form
-    const fields = []
-    this.props.searchlist.forEach((item, index) => {
-      if (item.Type === 'text' || item.Type === 'string') { // 鏂囨湰鎼滅储
-        fields.push(
-          <Col span={6} key={index}>
-            <Form.Item label={item.label}>
-              {getFieldDecorator(item.FieldName, {initialValue: item.InitVal })(<Input placeholder="" autoComplete="off" />)}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.Type === 'select') { // 涓嬫媺鎼滅储
-        let initval = item.FromField.filter(field => field.Selected === 'Selected')[0]
-        if (!initval) {
-          initval = item.FromField[0]
-        }
-        fields.push(
-          <Col span={6} key={index}>
-            <Form.Item label={item.label}>
-              {getFieldDecorator(item.FieldName, {initialValue: initval.IdField })(
-                <Select
-                  showSearch
-                  filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
-                >
-                  {item.FromField.map(option =>
-                    <Select.Option id={option.IdField} title={option.TextField} key={option.IdField} value={option.IdField}>{option.TextField}</Select.Option>
-                  )}
-                </Select>
-              )}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.Type === 'date') { // 鏃堕棿鎼滅储
-        let _initval = null
-        if (item.InitVal) {
-          _initval = moment().subtract(parseInt(item.InitVal), 'days')
-        }
-        fields.push(
-          <Col span={6} key={index}>
-            <Form.Item label={item.label}>
-              {getFieldDecorator(item.FieldName, {initialValue: _initval })(
-                <DatePicker />
-              )}
-            </Form.Item>
-          </Col>
-        )
-        // if (item.ID === 'WHE14002009024') {
-        //   fields.push(
-        //     <Col span={6} key={index}>
-        //       <Form.Item label={item.label}>
-        //         {getFieldDecorator(item.FieldName, {initialValue: moment('2019-09-14', dateFormat) })(
-        //           <DatePicker format={dateFormat} />
-        //         )}
-        //       </Form.Item>
-        //     </Col>
-        //   )
-        // } else if (item.ID === 'WHE1400200905') {
-        //   fields.push(
-        //     <Col span={6} key={index}>
-        //       <Form.Item label={item.label}>
-        //         {getFieldDecorator(item.FieldName, {initialValue: moment('2019-09', monthFormat) })(
-        //           <MonthPicker format={monthFormat} />
-        //         )}
-        //       </Form.Item>
-        //     </Col>
-        //   )
-        // } else if (item.ID === 'WHE1400200902') {
-        //   fields.push(
-        //     <Col span={6} key={index}>
-        //       <Form.Item label={item.label}>
-        //         {getFieldDecorator(item.FieldName, {initialValue: moment('20190906', weekFormat) })(
-        //           <WeekPicker />
-        //         )}
-        //       </Form.Item>
-        //     </Col>
-        //   )
-        // }
-      }
-    })
-
-    if (this.props.searchlist.length >= 4) { // 娣诲姞鎼滅储銆侀噸缃寜閽�
-      fields.push(
-        <Col span={this.props.searchlist.length % 4 ? 6 : 24} style={{ textAlign: 'right' }} key="actions">
-          <Button type="primary" htmlType="submit">
-            {this.props.dict['main.search']}
-          </Button>
-          <Button style={{ marginLeft: 8 }} onClick={this.handleReset}>
-            {this.props.dict['main.reset']}
-          </Button>
-        </Col>
-      )
-    } else {
-      fields.push(
-        <Col span={6} style={{ paddingTop: '4px' }} key="actions">
-          <Button type="primary" htmlType="submit">
-            {this.props.dict['main.search']}
-          </Button>
-          <Button style={{ marginLeft: 8 }} onClick={this.handleReset}>
-            {this.props.dict['main.reset']}
-          </Button>
-        </Col>
-      )
-    }
-    
-    return fields
-  }
-
-  handleSearch = (e) => {
-    // 鍥炶溅鎴栫偣鍑绘悳绱�
-    e.preventDefault()
-    this.props.form.validateFields((err, values) => {
-      this.getFieldsValues(values)
-    })
-  }
-
-  handleReset = () => {
-    // 閲嶇疆鎼滅储鏉′欢锛岄�氱煡椤甸潰鍒锋柊
-    this.props.form.resetFields()
-    this.props.refreshdata('', 'reset')
-  }
-
-  getFieldsValues = (searches) => {
-    // 鑾峰彇鎼滅储鏉′欢鍊�
-    let search = {}
-    Object.keys(searches).forEach(key => {
-      let val = searches[key] || ''
-      if (searches[key] && typeof(searches[key]) === 'object') {
-        val = moment(searches[key]).format('YYYY-MM-DD')
-      }
-      search[key] = val
-    })
-
-    let valid = true // 鏍¢獙蹇呭~椤�
-    this.props.searchlist.forEach(item => {
-      let required = false
-      if (item.Validate && item.Validate !== '{}') {
-        try {
-          required = !!JSON.parse(item.Validate).required
-        } catch (e) {
-          console.error('Validate Field parse error')
-        }
-      }
-      if (required && !search[item.FieldName]) {
-        valid = false
-        notification.warning({
-          top: 92,
-          message: this.props.dict['form.required.input'] + item.label,
-          duration: 5
-        })
-      }
-    })
-    if (valid) {
-      this.props.refreshdata(search)
-    }
-  }
-
-  render() {
-    return (
-      <Form className="ant-advanced-search-form datamanage-search" onSubmit={this.handleSearch}>
-        <Row gutter={24}>{this.getFields()}</Row>
-      </Form>
-    )
-  }
-}
-
-export default Form.create()(MainSearch)
\ No newline at end of file
diff --git a/src/tabviews/datamanage/search/index.scss b/src/tabviews/datamanage/search/index.scss
deleted file mode 100644
index 91cf85c..0000000
--- a/src/tabviews/datamanage/search/index.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-.ant-advanced-search-form.datamanage-search {
-  padding: 0px 24px 20px;
-  border-bottom: 1px solid #d9d9d9;
-  .ant-form-item {
-    display: flex;
-    margin-bottom: 10px;
-  }
-  .ant-form-item-control-wrapper {
-    flex: 1;
-  }
-  .ant-form-item-label {
-    width: 100px;
-    text-overflow: ellipsis;
-  }
-}
\ No newline at end of file
diff --git a/src/tabviews/datamanage/table/index.jsx b/src/tabviews/datamanage/table/index.jsx
deleted file mode 100644
index 823c18a..0000000
--- a/src/tabviews/datamanage/table/index.jsx
+++ /dev/null
@@ -1,154 +0,0 @@
-import React, {Component} from 'react'
-import PropTypes from 'prop-types'
-import { Table, message, Affix } from 'antd'
-import './index.scss'
-
-export default class MainTable extends Component {
-  static propTpyes = {
-    MenuNo: PropTypes.string, // 鑿滃崟鍙傛暟
-    loading: PropTypes.bool,
-    total: PropTypes.number,
-    selectable: PropTypes.bool,
-    dict: PropTypes.object, // 瀛楀吀椤�
-    columns: PropTypes.array, // 琛ㄦ牸鍒�
-    actions: PropTypes.any,
-    data: PropTypes.any
-  }
-
-  state = {
-    fixed: false, // 琛ㄦ牸澶撮儴鏄惁鍥哄畾浜庨〉闈笂鏂�
-    selectedRowKeys: [],
-    pageIndex: 1,
-    pageSize: 10,
-    columns: this.props.columns.map(item => {
-      let _width = parseInt(item.Width) || 50
-
-      return {
-        align: item.Align,
-        dataIndex: item.FieldName,
-        title: item.Label,
-        // fixed: index < 3,
-        sorter: item.IsSort === 'true',
-        width: _width,
-        render: (text) => (
-          <div style={{ wordWrap: 'break-word', wordBreak: 'break-word', minWidth: _width + 'px' }}>
-            {item.Type === 'Image' ? <img width={_width * 0.9} src={text} alt={text}/> : text}
-          </div>
-        )
-        // onHeaderCell: () => ({style:{textAlign: 'center'}})
-      }
-    })
-  }
-
-  copycontent = (e, content) => {
-    // 琛ㄦ牸涓唴瀹瑰鍒�
-    e.stopPropagation()
-    let oInput = document.createElement('input')
-    oInput.value = content
-    document.body.appendChild(oInput)
-    oInput.select()
-    document.execCommand('Copy')
-    oInput.className = 'oInput'
-    oInput.style.display='none'
-    message.success(this.props.dict['main.copy.success'])
-  }
-
-  onSelectChange = selectedRowKeys => {
-    this.setState({ selectedRowKeys })
-  }
-
-  changeRow = (record, index) => {
-    // 鐐瑰嚮鏁磋锛岃Е鍙戝垏鎹紝鍒ゆ柇鏄惁鍙�夛紝杩涜瀵瑰簲鎿嶄綔
-    if (!this.props.selectable) return
-
-    let newkeys = JSON.parse(JSON.stringify(this.state.selectedRowKeys))
-
-    if (newkeys.includes(index)) {
-      newkeys = newkeys.filter(item => item !== index)
-    } else {
-      newkeys.push(index)
-    }
-    this.setState({ selectedRowKeys: newkeys })
-  }
-
-  changeTable = (pagination, filters, sorter) => {
-    this.setState({
-      pageIndex: pagination.current,
-      pageSize: pagination.pageSize,
-      selectedRowKeys: []
-    })
-    this.props.refreshdata(pagination, filters, sorter)
-  }
-
-  resetTable = () => {
-    this.setState({
-      pageIndex: 1,
-      selectedRowKeys: []
-    })
-  }
-
-  componentDidMount () {
-    let boxwidth = document.body.clientWidth - 275
-    let columnsWidth = this.props.selectable ? 60 : 0
-    this.state.columns.forEach(column => {
-      columnsWidth += column.width
-    })
-    if (boxwidth > columnsWidth) {
-      this.setState({
-        fixed: true
-      })
-    }
-  }
-
-  render() {
-    let { selectedRowKeys } = this.state
-    let rowSelection = null
-    if (this.props.selectable) {
-      rowSelection = {
-        selectedRowKeys,
-        type: 'checkbox',
-        onChange: this.onSelectChange
-      }
-    }
-    let offset = 48
-    if (this.props.actions && this.props.actions.length > 0) {
-      offset = 105
-    }
-    return (
-      <div className="datamanage-table">
-        {this.state.fixed && <Affix offsetTop={offset} className="fix-header">
-          <Table
-            bordered={true}
-            rowSelection={rowSelection}
-            size="middle"
-            columns={this.state.columns}
-          />
-        </Affix>}
-        <Table
-          className={this.state.fixed ? 'fixed' : ''}
-          bordered={true}
-          rowSelection={rowSelection}
-          size="middle"
-          columns={this.state.columns}
-          dataSource={this.props.data ? this.props.data : []}
-          loading={this.props.loading}
-          scroll={{ x: '100%', y: false }}
-          onRow={(record, index) => {
-            return {
-              onClick: () => {this.changeRow(record, index)}
-            }
-          }}
-          onChange={this.changeTable}
-          pagination={{
-            current: this.state.pageIndex,
-            pageSize: this.state.pageSize,
-            pageSizeOptions: ['10', '25', '50', '100', '500', '1000'],
-            showSizeChanger: true,
-            total: this.props.total,
-            showTotal: (total, range) => `${range[0]}-${range[1]} ${this.props.dict['main.pagination.of']} ${total} ${this.props.dict['main.pagination.items']}`
-          }}
-        />
-      </div>
-    )
-  }
-}
diff --git a/src/tabviews/datamanage/table/index.scss b/src/tabviews/datamanage/table/index.scss
deleted file mode 100644
index 17d535f..0000000
--- a/src/tabviews/datamanage/table/index.scss
+++ /dev/null
@@ -1,86 +0,0 @@
-.datamanage-table {
-  padding: 0 20px 110px;
-  table {
-    max-width: 100%;
-    width: 100%;
-    .ant-table-column-title {
-      white-space: nowrap;
-    }
-    .ant-table-selection-column {
-      width: 60px;
-      min-width: 60px;
-      max-width: 60px;
-    }
-    .ant-table-tbody > tr.ant-table-row-selected td {
-      background-color: #c4ebfd;
-    }
-    .ant-table-tbody > tr:hover.ant-table-row-selected td {
-      background-color: #c4ebfd;
-    }
-  }
-  .ant-table-body {
-    overflow-x: auto!important;
-    min-height: 90px;
-    border: 1px solid #e8e8e8;
-    border-radius: 4px;
-    border-top: none;
-    border-bottom: none;
-    table {
-      border-left: 0;
-      .ant-table-thead > tr > th:last-child {
-        border-right: 0;
-      }
-      .ant-table-tbody > tr > td:last-child {
-        border-right: 0;
-      }
-      .ant-table-tbody > tr:nth-of-type(even) {
-        background-color: #fbfcfd;
-      }
-    }
-  }
-  .ant-table-body::-webkit-scrollbar {
-    width: 8px;
-    height: 10px;
-  }
-  ::-webkit-scrollbar-thumb {
-    border-radius: 5px;
-    box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.13);
-    background: rgba(0, 0, 0, 0.13);
-  }
-  ::-webkit-scrollbar-track {/*婊氬姩鏉¢噷闈㈣建閬�*/
-    box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05);
-    border-radius: 3px;
-    border: 1px solid rgba(0, 0, 0, 0.07);
-    background: rgba(0, 0, 0, 0);
-  }
-  .fix-header {
-    .ant-table-body {
-      min-height: unset
-    }
-    .ant-table-placeholder {
-      display: none;
-    }
-    .ant-table-wrapper {
-      display: none;
-    }
-    .ant-affix .ant-table-wrapper {
-      display: block;
-    }
-    .ant-table-column-sorter, .anticon-filter {
-      display: none;
-    }
-    .ant-table-middle > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th {
-      padding: 12px 9px;
-    }
-    .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters {
-      cursor: default;
-    }
-    .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover {
-      background: #fafafa;
-    }
-  }
-  // 琛ㄦ牸娌℃湁妯悜婊氬姩鏉℃椂
-  .ant-table-wrapper.fixed .ant-table-body {
-    min-height: unset;
-  }
-}
\ No newline at end of file
diff --git a/src/tabviews/tabform/index.jsx b/src/tabviews/tabform/index.jsx
deleted file mode 100644
index 9384e7b..0000000
--- a/src/tabviews/tabform/index.jsx
+++ /dev/null
@@ -1,150 +0,0 @@
-import React, {Component} from 'react'
-import PropTypes from 'prop-types'
-import {connect} from 'react-redux'
-import { is, fromJS } from 'immutable'
-import { Button, BackTop, notification } from 'antd'
-import {refreshTabView, modifyTabview} from '@/store/action'
-import MutilForm from '@/components/mutilform'
-import Api from '@/api'
-import './index.scss'
-
-class TabForm extends Component {
-  static propTpyes = {
-    MenuNo: PropTypes.string, // 鑿滃崟鍙傛暟
-    MenuID: PropTypes.string, // 鑿滃崟Id
-    param: PropTypes.object // 鑿滃崟鍙傛暟
-  }
-
-  state = {
-    loading: false
-  }
-
-  handleOk = () => {
-    
-    this.formRef.handleConfirm().then(res => {
-      this.setState({
-        loading: true
-      })
-      let values = []
-      this.props.param.formdata.forEach(column => {
-        let value = ''
-        if (res.hasOwnProperty(column.FieldName)) { // 渚濇閫夊彇琛ㄥ崟鍊笺�佸垵濮嬪��
-          value = res[column.FieldName]
-        } else if (column.InitVal) {
-          value = column.InitVal
-        }
-        values.push(column.FieldName + 'equal\'' + value + '\'')
-      })
-
-      let queryparam = { // 璇锋眰鍙傛暟
-        func: this.props.param.execAction.AuditProc || this.props.param.defaultproc[this.props.param.execAction.Action],
-        ID: (this.props.param.tabledata && this.props.param.primarykey) ? this.props.param.tabledata[this.props.param.primarykey] : '', // 涓婚敭瀛楁
-        BID: (this.props.param.tabledata && this.props.param.bidkey) ? this.props.param.tabledata[this.props.param.bidkey] : '' // BID瀛楁
-      }
-      // 娣诲姞鍜屼慨鏀硅姹傚弬鏁板瓧娈典笉鍚�
-      if (this.props.param.execAction.Action === 'Add') {
-        queryparam.AddLongText = values.join(',')
-      } else if (this.props.param.execAction.Action === 'Update') {
-        queryparam.UptLongText = values.join(',')
-      }
-
-      Api.submitInterface(queryparam).then(result => {
-        if (result.status) {
-          notification.success({
-            top: 92,
-            message: this.props.param.dict['main.action.confirm.success'],
-            duration: 2
-          })
-          
-          // 鍒锋柊涓诲垪琛ㄩ〉闈�
-          this.props.refreshTabView({
-            MenuNo: this.props.MenuNo,
-            ReloadForm: this.props.param.execAction.ReloadForm
-          })
-
-          if (this.props.param.execAction.BackPre !== 'false') { // 椤甸潰杩斿洖
-            this.handleCancel()
-          }
-        } else {
-          notification.error({
-            top: 92,
-            message: result.message,
-            duration: 10
-          })
-          this.setState({
-            loading: false
-          })
-        }
-      })
-    }, () => {})
-  }
-
-  handleCancel = () => {
-    // 鍏抽棴褰撳墠绐楀彛锛岃繑鍥炲師鍒楄〃椤�
-    let tabs = JSON.parse(JSON.stringify(this.props.tabviews))
-    tabs = tabs.filter(tab => {
-      if (tab.MenuNo === this.props.MenuNo && tab.type !== 'TabForm') {
-        tab.selected = true
-      } else {
-        tab.selected = false
-      }
-      return tab.MenuID !== this.props.MenuID
-    })
-    this.props.modifyTabview(tabs)
-    // 鎻愪氦鎴愬姛鎴栬繑鍥炴椂锛屾粴鍔ㄨ嚦椤堕儴
-    document.body.scrollTop = 0
-    document.documentElement.scrollTop = 0
-  }
-
-  shouldComponentUpdate (nextProps, nextState) {
-    return !is(fromJS(this.state), fromJS(nextState))
-  }
-
-  render() {
-    let cols = +this.props.param.execAction.FormLineQty
-    if (![1, 2, 3].includes(cols)) {
-      cols = 2
-    }
-    return (
-      <div className="tabform">
-        <MutilForm
-          dict={this.props.param.dict}
-          formlist={this.props.param.formdata}
-          data={this.props.param.tabledata}
-          cols={cols}
-          wrappedComponentRef={(inst) => this.formRef = inst}
-        />
-        <div className="operation">
-          <Button type="primary" htmlType="submit" onClick={() => {this.handleOk()}} loading={this.state.loading}>
-            {this.props.param.dict['main.confirm']}
-          </Button>
-          <Button onClick={() => {this.handleCancel()}}>
-            {this.props.param.dict['main.return']}
-          </Button>
-        </div>
-        <BackTop>
-          <div className="ant-back-top">
-            <div className="ant-back-top-content">
-              <div className="ant-back-top-icon"></div>
-            </div>
-          </div>
-        </BackTop>
-      </div>
-    )
-  }
-}
-
-const mapStateToProps = (state) => {
-  return {
-    tabviews: state.tabviews
-  }
-}
-
-const mapDispatchToProps = (dispatch) => {
-  return {
-    refreshTabView: (refreshTab) => dispatch(refreshTabView(refreshTab)),
-    modifyTabview: (tabviews) => dispatch(modifyTabview(tabviews))
-  }
-}
-
-export default connect(mapStateToProps, mapDispatchToProps)(TabForm)
\ No newline at end of file
diff --git a/src/tabviews/tabform/index.scss b/src/tabviews/tabform/index.scss
deleted file mode 100644
index ebdaef0..0000000
--- a/src/tabviews/tabform/index.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-.tabform {
-  padding: 25px 25px 120px;
-  .operation {
-    text-align: center;
-    margin: 20px 0;
-    .ant-btn {
-      height: 40px;
-      padding: 0 30px;
-      font-size: 16px;
-    }
-    .ant-btn-primary {
-      margin-right: 40px;
-    }
-  }
-}
\ No newline at end of file
diff --git a/src/tabviews/zshare/normalTable/index.jsx b/src/tabviews/zshare/normalTable/index.jsx
index a8e4994..bde034c 100644
--- a/src/tabviews/zshare/normalTable/index.jsx
+++ b/src/tabviews/zshare/normalTable/index.jsx
@@ -212,8 +212,6 @@
   
       if (tabmenu.LinkUrl === 'CommonTable') {
         tabmenu.type = 'CommonTable'
-      } else if (tabmenu.LinkUrl === 'DataManage') {
-        tabmenu.type = 'DataManage'
       } else if (tabmenu.LinkUrl && iframes.includes(tabmenu.LinkUrl.split('?')[0])) {
         tabmenu.type = 'iframe'
       }

--
Gitblit v1.8.0