From af0db2414ced6089cdb829304a4409ea4231d57a Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 25 十二月 2019 17:56:36 +0800
Subject: [PATCH] 2019-12-25

---
 src/tabviews/commontable/mainAction/index.jsx         |    6 
 src/tabviews/subtable/subAction/index.jsx             |    6 
 src/assets/img/subtable.jpg                           |    0 
 src/components/sidemenu/editthdmenu/index.jsx         |   30 ++-
 src/templates/comtableconfig/index.jsx                |   30 +++
 src/templates/subtableconfig/index.jsx                |   13 +
 src/tabviews/commontable/index.scss                   |   33 ++++
 src/templates/comtableconfig/index.scss               |    5 
 src/templates/modalconfig/index.jsx                   |   50 ++++--
 src/tabviews/home/index.jsx                           |   56 ++++----
 src/templates/comtableconfig/tabdragelement/index.jsx |    6 
 src/tabviews/subtable/index.jsx                       |   11 +
 src/tabviews/commontable/index.jsx                    |  117 ++++++++++++----
 src/tabviews/commontable/mainTable/index.jsx          |   57 ++++++--
 14 files changed, 312 insertions(+), 108 deletions(-)

diff --git a/src/assets/img/subtable.jpg b/src/assets/img/subtable.jpg
new file mode 100644
index 0000000..a15c245
--- /dev/null
+++ b/src/assets/img/subtable.jpg
Binary files differ
diff --git a/src/components/sidemenu/editthdmenu/index.jsx b/src/components/sidemenu/editthdmenu/index.jsx
index 3fd0852..cfc8668 100644
--- a/src/components/sidemenu/editthdmenu/index.jsx
+++ b/src/components/sidemenu/editthdmenu/index.jsx
@@ -57,6 +57,7 @@
     loading: false,        // 缂栬緫鑿滃崟鎴栦娇鐢ㄥ凡浣跨敤妯℃澘鏃讹紝鑾峰彇閰嶇疆淇℃伅
     preview: null,         // 鍥剧墖棰勮url
     pretemplate: null,     // 棰勮妯℃澘
+    btnParam: null,        // 缂栬緫鎸夐挳鐨勯厤缃俊鎭�
     sysTemplates: sysTemps // 绯荤粺妯℃澘
   }
 
@@ -439,14 +440,16 @@
   handleSubConfig = (item, originMenu, config, type) => {
     if (type === 'button') {
       if (item.OpenType === 'pop') {
-        item.pageParam = ''
+        let pageParam = ''
         if (config && config.type === 'Modal') {
-          item.pageParam = config
+          pageParam = config
         }
   
         this.setState({
           editMenu: originMenu,
+          editTab: '',
           editAction: item,
+          btnParam: pageParam,
           tabview: 'Modal'
         })
       }
@@ -455,20 +458,23 @@
         this.setState({
           editMenu: originMenu,
           editTab: config,
+          editAction: '',
           tabview: 'SubTable'
         })
       }
     } else if (type === 'tabButton') {
-      // item.pageParam = ''
-      // if (config && config.type === 'Modal') {
-      //   item.pageParam = config
-      // }
+      let pageParam = ''
+      console.log(config)
+      if (config && config.type === 'Modal') {
+        pageParam = config
+      }
 
-      // this.setState({
-      //   editMenu: originMenu,
-      //   editAction: item,
-      //   tabview: 'Modal'
-      // })
+      this.setState({
+        editTab: originMenu,
+        editAction: item,
+        btnParam: pageParam,
+        tabview: 'Modal'
+      })
     }
   }
 
@@ -595,7 +601,9 @@
         {this.state.tabview === 'Modal' &&
           <ModalConfig
             menu={this.state.editMenu}
+            editTab={this.state.editTab}
             editAction={this.state.editAction}
+            btnParam={this.state.btnParam}
             handleConfig={this.handleConfig}
           />
         }
diff --git a/src/tabviews/commontable/index.jsx b/src/tabviews/commontable/index.jsx
index 94ed0e5..305452c 100644
--- a/src/tabviews/commontable/index.jsx
+++ b/src/tabviews/commontable/index.jsx
@@ -1,7 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { BackTop, notification, Spin, Tabs, Icon} from 'antd'
+import { BackTop, notification, Spin, Tabs, Icon, Card, Switch} from 'antd'
 import moment from 'moment'
 import Api from '@/api'
 import MainSearch from './mainSearch'
@@ -44,7 +44,10 @@
     orderType: 'asc',
     search: '',
     configMap: {},
-    BIDs: ''
+    BIDs: {},
+    setsingle: false,
+    pickup: false,
+    isLinkMain: false
   }
 
   /**
@@ -132,6 +135,7 @@
 
       // 杩囨护宸ュ叿鏍忔寜閽紙鏈粡杩囨潈闄愯繃婊わ級
       let _actions = config.action.filter(item => item.position === 'toolbar')
+      let _tab = config.tabs.filter(tab => tab.supMenu === 'mainTable')
 
       this.setState({
         loadingview: false,
@@ -141,12 +145,13 @@
         actions: _actions,
         columns: _columns,
         tabviews: config.tabs,
+        isLinkMain: _tab.length > 0,
         arr_field: _arrField.join(','),
         search: Utils.initMainSearch(config.search), // 鎼滅储鏉′欢鍒濆鍖栵紙鍚湁鏃堕棿鏍煎紡锛岄渶瑕佽浆鍖栵級
         loading: true
       }, () => {
         this.improveSearch()
-        console.log(this.state.tabviews)
+
         if (config.setting.onload !== 'false') {
           this.loadmaindata()
         }
@@ -241,7 +246,7 @@
 
 
   async loadmaindata () {
-    const { setting } = this.state
+    const { setting, BIDs } = this.state
     let param = ''
 
     if (setting.interType !== 'inner' || (setting.interType === 'inner' && setting.innerFunc)) {
@@ -258,7 +263,11 @@
           return item
         }),
         total: result.total,
-        loading: false
+        loading: false,
+        BIDs: {
+          ...BIDs,
+          mainTable: ''
+        }
       })
     } else {
       this.setState({
@@ -398,7 +407,11 @@
       orderColumn: '',
       orderType: 'asc',
       search: '',
-      configMap: {}
+      configMap: {},
+      BIDs: {},
+      setsingle: false,
+      pickup: false,
+      isLinkMain: false
     }, () => {
       this.loadconfig()
     })
@@ -489,6 +502,26 @@
     })
   }
 
+  checkChange = () => {
+    const { setsingle, BIDs } = this.state
+
+    let _BIDs = JSON.parse(JSON.stringify(BIDs))
+    _BIDs.mainTable = ''
+
+    this.setState({
+      setsingle: !setsingle,
+      pickup: false,
+      BIDs: _BIDs
+    })
+  }
+  
+  pickupChange = () => {
+    const { pickup } = this.state
+    this.setState({
+      pickup: !pickup
+    })
+  }
+
   UNSAFE_componentWillMount () {
     // 缁勪欢鍔犺浇鏃讹紝鑾峰彇鑿滃崟鏁版嵁
     this.loadconfig()
@@ -498,44 +531,59 @@
     return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
   }
 
+  /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊
+   */
+  componentWillUnmount () {
+    this.setState = (state, callback) => {
+      return
+    }
+  }
+
   render() {
-    const { setting, searchlist, actions, columns, loadingview, viewlost, tabviews } = this.state
+    const { setting, searchlist, actions, columns, loadingview, viewlost, tabviews, setsingle, pickup, isLinkMain } = this.state
 
     return (
       <div className="commontable" id={'commontable' + this.props.MenuID}>
         {loadingview && <Spin size="large" />}
         {searchlist && searchlist.length > 0 ?
           <MainSearch
-            refreshdata={this.refreshbysearch}
-            searchlist={searchlist}
             dict={this.state.dict}
+            searchlist={searchlist}
+            refreshdata={this.refreshbysearch}
           /> : null
         }
-        {actions && setting.onload !== 'false' &&
+        {actions && setting.onload !== 'false' ?
           <MainAction
             ref="mainButton"
-            MenuID={this.props.MenuID}
             setting={setting}
-            refreshdata={this.refreshbyaction}
-            gettableselected={this.gettableselected}
             actions={actions}
             dict={this.state.dict}
-          />
-        }
-        {columns && setting.onload !== 'false' &&
-          <MainTable
-            ref="mainTable"
-            dict={this.state.dict}
             MenuID={this.props.MenuID}
-            setting={setting}
-            columns={columns}
-            data={this.state.data}
-            total={this.state.total}
-            loading={this.state.loading}
-            refreshdata={this.refreshbytable}
-            buttonTrigger={this.buttonTrigger}
-            handleTableId={this.handleTableId}
-          />
+            refreshdata={this.refreshbyaction}
+            gettableselected={this.gettableselected}
+          /> : null
+        }
+        {columns && setting.onload !== 'false' ?
+          <div className="main-table-box">
+            {isLinkMain && setting.tableType === 'checkbox' ? <Switch title="鍗曢�夊垏鎹�" checkedChildren="澶�" unCheckedChildren="鍗�" defaultChecked={setsingle} onChange={this.checkChange} /> : null}
+            {isLinkMain && this.state.BIDs.mainTable && (setting.tableType === 'radio' || setsingle) ? <Switch title="鏀惰捣" checkedChildren="鍏�" unCheckedChildren="寮�" defaultChecked={pickup} onChange={this.pickupChange} /> : null}
+            <MainTable
+              ref="mainTable"
+              pickup={pickup}
+              setting={setting}
+              columns={columns}
+              setsingle={setsingle}
+              dict={this.state.dict}
+              data={this.state.data}
+              total={this.state.total}
+              MenuID={this.props.MenuID}
+              loading={this.state.loading}
+              refreshdata={this.refreshbytable}
+              buttonTrigger={this.buttonTrigger}
+              handleTableId={this.handleTableId}
+            />
+          </div> : null
         }
         {setting && setting.onload !== 'false' && setting.tabshow !== 'vertical' && tabviews && tabviews.length > 0 && 
           <Tabs defaultActiveKey="0" tabPosition="top">
@@ -552,6 +600,19 @@
             })}
           </Tabs>
         }
+        {setting && setting.onload !== 'false' && setting.tabshow === 'vertical' && tabviews && tabviews.length > 0 && 
+          tabviews.map((_tab, index) => {
+            return !_tab.supMenu || (_tab.supMenu && this.state.BIDs[_tab.supMenu]) ?
+              <Card bordered={false} title={
+                <span>
+                  {_tab.icon ? <Icon type={_tab.icon} /> : null}
+                  {_tab.label}
+                </span>
+              } key={`${index}`}>
+                {_tab.type === 'SubTable' ? <SubTable SupMenuID={this.props.MenuID} MenuID={_tab.linkTab} Tab={_tab} BID={this.state.BIDs[_tab.supMenu] || ''} /> : null}
+              </Card> : null
+          })
+        }
         <BackTop>
           <div className="ant-back-top">
             <div className="ant-back-top-content">
diff --git a/src/tabviews/commontable/index.scss b/src/tabviews/commontable/index.scss
index 0f94b69..ba6db0a 100644
--- a/src/tabviews/commontable/index.scss
+++ b/src/tabviews/commontable/index.scss
@@ -30,6 +30,39 @@
       cursor: pointer;
     }
   }
+  > .ant-card {
+    margin: 0 20px 20px;
+    > .ant-card-head {
+      border: 0;
+      padding: 0;
+      min-height: 30px;
+      .ant-card-head-title {
+        padding: 10px 0 0;
+        span {
+          color: #1890ff;
+          display: inline-block;
+          padding: 0 10px;
+          font-size: 15px;
+          border-bottom: 1px solid #1890ff;
+          i {
+            margin-right: 10px;
+          }
+        }
+      }
+    }
+    > .ant-card-body {
+      padding: 0;
+    }
+  }
+  .main-table-box {
+    position: relative;
+    .ant-switch {
+      z-index: 1;
+      float: right;
+      margin-right: 20px;
+      margin-bottom: 5px;
+    }
+  }
 }
 .ant-back-top {
   bottom: 30px;
diff --git a/src/tabviews/commontable/mainAction/index.jsx b/src/tabviews/commontable/mainAction/index.jsx
index 144b880..ed6be69 100644
--- a/src/tabviews/commontable/mainAction/index.jsx
+++ b/src/tabviews/commontable/mainAction/index.jsx
@@ -535,6 +535,12 @@
       })
     }
     
+    if (btn.OpenType === 'excelOut') {
+      this.setState({
+        loadingUuid: ''
+      })
+    }
+    
     this.refreshdata(btn, 'error')
   }
 
diff --git a/src/tabviews/commontable/mainTable/index.jsx b/src/tabviews/commontable/mainTable/index.jsx
index c89224b..f9ac39b 100644
--- a/src/tabviews/commontable/mainTable/index.jsx
+++ b/src/tabviews/commontable/mainTable/index.jsx
@@ -1,6 +1,6 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-// import { is, fromJS } from 'immutable'
+import { is, fromJS } from 'immutable'
 import { Table, message, Affix, Button } from 'antd'
 import './index.scss'
 
@@ -9,6 +9,8 @@
     dict: PropTypes.object,        // 瀛楀吀椤�
     MenuID: PropTypes.string,      // 鑿滃崟Id
     setting: PropTypes.object,     // 琛ㄦ牸鍏ㄥ眬璁剧疆锛歵ableType锛堣〃鏍兼槸鍚﹀彲閫夈�佸崟閫夈�佸閫夛級銆乧olumnfixed锛堝垪鍥哄畾锛夈�乤ctionfixed锛堟寜閽浐瀹氾級
+    pickup: PropTypes.any,         // 鏁版嵁鏀惰捣
+    setsingle: PropTypes.any,      // 璁剧疆鍗曢�夊閫�
     columns: PropTypes.array,      // 琛ㄦ牸鍒�
     data: PropTypes.any,           // 琛ㄦ牸鏁版嵁
     total: PropTypes.number,       // 鎬绘暟
@@ -19,10 +21,12 @@
   }
 
   state = {
-    selectedRowKeys: [], // 琛ㄦ牸涓�変腑琛�
-    pageIndex: 1,        // 鍒濆椤甸潰绱㈠紩
-    pageSize: 10,        // 姣忛〉鏁版嵁鏉℃暟
-    columns: null        // 鏄剧ず鍒�
+    selectedRowKeys: [],  // 琛ㄦ牸涓�変腑琛�
+    pageIndex: 1,         // 鍒濆椤甸潰绱㈠紩
+    pageSize: 10,         // 姣忛〉鏁版嵁鏉℃暟
+    columns: null,        // 鏄剧ず鍒�
+    selectId: '',
+    isSingleSelect: false
   }
 
   UNSAFE_componentWillMount () {
@@ -42,9 +46,18 @@
       }
       _columns.push(cell)
     })
-    // {item.FieldName === 'MenuNo' ? <Icon onClick={(e) => {this.copycontent(e, record[item.FieldName])}} type="copy"/> : ''}
 
     this.setState({columns: _columns})
+  }
+
+  UNSAFE_componentWillReceiveProps(nextProps) {
+    if (!is(fromJS(this.props.setsingle), fromJS(nextProps.setsingle))) {
+      this.setState({
+        isSingleSelect: nextProps.setsingle,
+        selectedRowKeys: [],
+        selectId: ''
+      })
+    }
   }
 
   getContent = (item, record) => {
@@ -194,6 +207,8 @@
   }
 
   onSelectChange = selectedRowKeys => {
+    if (this.props.pickup) return
+
     let index = ''
     if (selectedRowKeys.length > 0) {
       index = selectedRowKeys[selectedRowKeys.length - 1]
@@ -206,12 +221,13 @@
 
   changeRow = (record, index) => {
     // 鐐瑰嚮鏁磋锛岃Е鍙戝垏鎹紝鍒ゆ柇鏄惁鍙�夛紝鍗曢�夋垨澶氶�夛紝杩涜瀵瑰簲鎿嶄綔
-    if (!this.props.setting.tableType) return
+    if (!this.props.setting.tableType || this.props.pickup) return
     
     let newkeys = JSON.parse(JSON.stringify(this.state.selectedRowKeys))
     let _re = newkeys.includes(index)
 
-    if (this.props.setting.tableType === 'radio') {
+    if (this.props.setting.tableType === 'radio' || this.state.isSingleSelect) {
+      this.changedata(index)
       this.setState({ selectedRowKeys: [index] })
     } else {
       if (_re) {
@@ -243,31 +259,37 @@
       _id = data[index][setting.primaryKey]
     }
 
+    this.setState({
+      selectId: _id
+    })
+
     this.props.handleTableId('mainTable', _id)
   }
 
   resetTable = () => {
     this.setState({
       pageIndex: 1,
+      selectId: '',
       selectedRowKeys: []
     })
   }
 
   render() {
-    let { selectedRowKeys } = this.state
+    const { setting, pickup } = this.props
+    let { selectedRowKeys, isSingleSelect, selectId } = this.state
 
     let rowSelection = null
-    if (this.props.setting.tableType) {
+    if (setting.tableType) {
       rowSelection = {
         selectedRowKeys,
-        type: this.props.setting.tableType === 'radio' ? 'radio' : 'checkbox',
+        type: (setting.tableType === 'radio' || isSingleSelect) ? 'radio' : 'checkbox',
         onChange: this.onSelectChange
       }
     }
     let offset = null
-    if (this.props.setting.columnfixed) {
+    if (setting.columnfixed) {
       // 琛ㄦ牸澶撮儴鍥哄畾浜庨《閮ㄦ椂锛屽垽鏂窛椤堕儴楂樺害
-      if (!this.props.setting.actionfixed) {
+      if (!setting.actionfixed) {
         offset = 48
       } else {
         let box = document.getElementById(this.props.MenuID + 'mainaction')
@@ -279,9 +301,14 @@
       }
     }
 
+    let _data = this.props.data ? this.props.data : []
+    if (selectId && pickup && isSingleSelect) {
+      _data = _data.filter(item => item[setting.primaryKey] === selectId)
+    }
+
     return (
       <div className="main-table">
-        {this.props.setting.columnfixed && <Affix offsetTop={offset} className="fix-header">
+        {setting.columnfixed && <Affix offsetTop={offset} className="fix-header">
           <Table
             size="middle"
             bordered={true}
@@ -301,7 +328,7 @@
           bordered={true}
           rowSelection={rowSelection}
           columns={this.state.columns}
-          dataSource={this.props.data ? this.props.data : []}
+          dataSource={_data}
           loading={this.props.loading}
           scroll={{ x: '100%', y: false }}
           onRow={(record, index) => {
diff --git a/src/tabviews/home/index.jsx b/src/tabviews/home/index.jsx
index f02d215..cb704df 100644
--- a/src/tabviews/home/index.jsx
+++ b/src/tabviews/home/index.jsx
@@ -68,7 +68,7 @@
       ],
       series : [
         {
-          name:'閿�鍞',
+          name:'鏈堢淮淇暟',
           type:'bar',
           barWidth: '30',
           data:[30, 52, 200, 334, 390, 330, 220, 170, 220, 290, 350, 410, 440, 530]
@@ -89,14 +89,14 @@
                     <div className="antd-meta-wrap">
                       <div className="antd-meta">
                         <span>
-                          <span>鎬婚攢鍞</span>
+                          <span>缁翠慨鎬绘暟</span>
                         </span>
                         <span className="antd-action">
                           <Icon type="info-circle-o" />
                         </span>
                       </div>
                       <div className="antd-total">
-                        <span>楼 126,560</span>
+                        <span>100</span>
                       </div>
                     </div>
                   </div>
@@ -105,7 +105,7 @@
                       <div className="antd-trend-item" style={{marginRight: '16px'}}>
                         <span>
                           <span>鍛ㄥ悓姣�</span>
-                          <span className="antd-trend-text">12%</span>
+                          <span className="antd-trend-text">10%</span>
                         </span>
                         <span className="antd-trend-up">
                           <Icon type="caret-up" />
@@ -114,7 +114,7 @@
                       <div className="antd-trend-item">
                         <span>
                           <span>鏃ュ悓姣�</span>
-                          <span className="antd-trend-text">11%</span>
+                          <span className="antd-trend-text">10%</span>
                         </span>
                         <span className="antd-trend-down">
                           <Icon type="caret-down" />
@@ -125,9 +125,9 @@
                   <div className="antd-chart-footer">
                     <div className="antd-field">
                       <span className="antd-label">
-                        <span>鏃ラ攢鍞</span>
+                        <span>缁翠慨鎬绘暟</span>
                       </span>
-                      <span className="antd-number">锟�12,423</span>
+                      <span className="antd-number">100</span>
                     </div>
                   </div>
                 </div>
@@ -142,14 +142,14 @@
                     <div className="antd-meta-wrap">
                       <div className="antd-meta">
                         <span>
-                          <span>浜ч噺</span>
+                          <span>瓒呮椂宸ュ崟</span>
                         </span>
                         <span className="antd-action">
                           <Icon type="info-circle-o" />
                         </span>
                       </div>
                       <div className="antd-total">
-                        <span>8,560</span>
+                        <span>100</span>
                       </div>
                     </div>
                   </div>
@@ -162,9 +162,9 @@
                   <div className="antd-chart-footer">
                     <div className="antd-field">
                       <span className="antd-label">
-                        <span>鏃ヤ骇閲�</span>
+                        <span>瓒呮椂宸ュ崟</span>
                       </span>
-                      <span className="antd-number">1,423</span>
+                      <span className="antd-number">100</span>
                     </div>
                   </div>
                 </div>
@@ -179,14 +179,14 @@
                     <div className="antd-meta-wrap">
                       <div className="antd-meta">
                         <span>
-                          <span>宸ュ崟鏁�</span>
+                          <span>鍏冲崟</span>
                         </span>
                         <span className="antd-action">
                           <Icon type="info-circle-o" />
                         </span>
                       </div>
                       <div className="antd-total">
-                        <span>6,560</span>
+                        <span>100</span>
                       </div>
                     </div>
                   </div>
@@ -199,9 +199,9 @@
                   <div className="antd-chart-footer">
                     <div className="antd-field">
                       <span className="antd-label">
-                        <span>鏃ュ伐鍗曟暟</span>
+                        <span>鍏冲崟</span>
                       </span>
-                      <span className="antd-number">120</span>
+                      <span className="antd-number">100</span>
                     </div>
                   </div>
                 </div>
@@ -216,14 +216,14 @@
                     <div className="antd-meta-wrap">
                       <div className="antd-meta">
                         <span>
-                          <span>鍛ㄨ浆鐜�</span>
+                          <span>鍘熶欢閭瘎</span>
                         </span>
                         <span className="antd-action">
                           <Icon type="info-circle-o" />
                         </span>
                       </div>
                       <div className="antd-total">
-                        <span>87%</span>
+                        <span>100</span>
                       </div>
                     </div>
                   </div>
@@ -237,7 +237,7 @@
                     <div className="antd-trend-item" style={{marginRight: '16px'}}>
                       <span>
                         <span>鍛ㄥ悓姣�</span>
-                        <span className="antd-trend-text">17%</span>
+                        <span className="antd-trend-text">10%</span>
                       </span>
                       <span className="antd-trend-up">
                         <Icon type="caret-up" />
@@ -259,50 +259,50 @@
           </div>
         </div>
         <Tabs defaultActiveKey="1">
-          <TabPane tab="閿�鍞" key="1">
+          <TabPane tab="缁翠慨鎬绘暟" key="1">
             <div id="home" className="sale-trend ant-col ant-col-xs-16"></div>
             <div className="ant-col ant-col-xs-8">
               <div className="antd-sales-rank">
-                <h4 className="antd-ranking-title">閿�閲忔帓鍚�</h4>
+                <h4 className="antd-ranking-title">浜у搧鎺掑悕</h4>
                 <ul className="antd-ranking-list">
                   <li>
                     <span className="antd-ranking-active">1</span>
-                    <span className="antd-ranking-title">浜у搧1</span>
+                    <span className="antd-ranking-title">KU699</span>
                     <span>723,234</span>
                   </li>
                   <li>
                     <span className="antd-ranking-active">2</span>
-                    <span className="antd-ranking-title">浜у搧2</span>
+                    <span className="antd-ranking-title">KU110</span>
                     <span>683,434</span>
                   </li>
                   <li>
                     <span className="antd-ranking-active">3</span>
-                    <span className="antd-ranking-title">浜у搧3</span>
+                    <span className="antd-ranking-title">KU110K</span>
                     <span>527,264</span>
                   </li>
                   <li>
                     <span className="antd-ranking-number">4</span>
-                    <span className="antd-ranking-title">浜у搧4</span>
+                    <span className="antd-ranking-title">KU066.9</span>
                     <span>493,233</span>
                   </li>
                   <li>
                     <span className="antd-ranking-number">5</span>
-                    <span className="antd-ranking-title">浜у搧5</span>
+                    <span className="antd-ranking-title">KU079</span>
                     <span>323,734</span>
                   </li>
                   <li>
                     <span className="antd-ranking-number">6</span>
-                    <span className="antd-ranking-title">浜у搧6</span>
+                    <span className="antd-ranking-title">KU153</span>
                     <span>303,934</span>
                   </li>
                   <li>
                     <span className="antd-ranking-number">7</span>
-                    <span className="antd-ranking-title">浜у搧7</span>
+                    <span className="antd-ranking-title">KU151</span>
                     <span>227,244</span>
                   </li>
                   <li>
                     <span className="antd-ranking-number">8</span>
-                    <span className="antd-ranking-title">浜у搧8</span>
+                    <span className="antd-ranking-title">KU720</span>
                     <span>223,734</span>
                   </li>
                 </ul>
diff --git a/src/tabviews/subtable/index.jsx b/src/tabviews/subtable/index.jsx
index 585ac35..323a868 100644
--- a/src/tabviews/subtable/index.jsx
+++ b/src/tabviews/subtable/index.jsx
@@ -473,6 +473,15 @@
     return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
   }
 
+  /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊
+   */
+  componentWillUnmount () {
+    this.setState = (state, callback) => {
+      return
+    }
+  }
+
   render() {
     const { setting, searchlist, actions, columns, loadingview, viewlost } = this.state
 
@@ -489,7 +498,7 @@
         {actions &&
           <SubAction
             ref="subButton"
-            MenuID={this.props.MenuID}
+            MenuID={this.props.SupMenuID}
             BID={this.props.BID}
             setting={setting}
             refreshdata={this.refreshbyaction}
diff --git a/src/tabviews/subtable/subAction/index.jsx b/src/tabviews/subtable/subAction/index.jsx
index be1c35b..d19b11a 100644
--- a/src/tabviews/subtable/subAction/index.jsx
+++ b/src/tabviews/subtable/subAction/index.jsx
@@ -529,6 +529,12 @@
         title: res.message || res.ErrMesg
       })
     }
+
+    if (btn.OpenType === 'excelOut') {
+      this.setState({
+        loadingUuid: ''
+      })
+    }
     
     this.refreshdata(btn, 'error')
   }
diff --git a/src/templates/comtableconfig/index.jsx b/src/templates/comtableconfig/index.jsx
index 447b25a..3c01a52 100644
--- a/src/templates/comtableconfig/index.jsx
+++ b/src/templates/comtableconfig/index.jsx
@@ -278,6 +278,15 @@
     })
   }
 
+  /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊
+   */
+  componentWillUnmount () {
+    this.setState = (state, callback) => {
+      return
+    }
+  }
+
   handleList = (type, list, card) => {
     const { config } = this.state
 
@@ -1789,10 +1798,9 @@
       let tabParam = { // 娣诲姞鑿滃崟tab椤�
         func: 'sPC_sMenusTab_AddUpt',
         LText: config.tabs.map((item, index) => {
-          return `select '${menu.MenuID}' as MenuID ,'${item.uuid}' as Tabid,'${item.label}' as TabName ,'${(index + 1) * 10}' as Sort`
+          return `select '${menu.MenuID}' as MenuID ,'${item.linkTab}' as Tabid,'${item.label}' as TabName ,'${(index + 1) * 10}' as Sort`
         })
       }
-
       tabParam.LText = tabParam.LText.join(' union all ')
       tabParam.LText = Utils.formatOptions(tabParam.LText)
       tabParam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
@@ -1871,7 +1879,6 @@
    * @description 淇濆瓨鎴栦慨鏀硅彍鍗曟寜閽�
    */
   submitAction = (btnParam, tabParam) => {
-    console.log(tabParam)
     const { config } = this.state
     new Promise(resolve => {
       // 鍐呴儴璇锋眰
@@ -1915,6 +1922,17 @@
     }).then(res => {
       if (res === false) return res
 
+      if (tabParam.LText) {
+        Api.getSystemConfig(tabParam).then(result => {
+          if (!result.status) {
+            notification.warning({
+              top: 92,
+              message: result.message,
+              duration: 10
+            })
+          }
+        })
+      }
       if (btnParam.LText) {
         return Api.getSystemConfig(btnParam)
       } else {
@@ -2358,10 +2376,12 @@
       this.setState({
         config: {...config, setting: res},
         settingVisible: false,
-        columnsloading: true
+        columnsloading: true,
+        tabloading: true
       }, () => {
         this.setState({
-          columnsloading: false
+          columnsloading: false,
+          tabloading: false
         })
       })
     })
diff --git a/src/templates/comtableconfig/index.scss b/src/templates/comtableconfig/index.scss
index 840a370..d6730ff 100644
--- a/src/templates/comtableconfig/index.scss
+++ b/src/templates/comtableconfig/index.scss
@@ -403,6 +403,11 @@
               display: inline-block;
             }
           }
+          .ant-tabs-content {
+            .ant-tabs-tabpane img {
+              width: 100%;
+            }
+          }
         }
         > .anticon-setting {
           position: absolute;
diff --git a/src/templates/comtableconfig/tabdragelement/index.jsx b/src/templates/comtableconfig/tabdragelement/index.jsx
index cb04567..f8c6c37 100644
--- a/src/templates/comtableconfig/tabdragelement/index.jsx
+++ b/src/templates/comtableconfig/tabdragelement/index.jsx
@@ -4,9 +4,13 @@
 import { Tabs, Icon } from 'antd'
 import Utils from '@/utils/utils.js'
 import Card from './card'
+import subtable from '@/assets/img/subtable.jpg'
 import './index.scss'
 
 const { TabPane } = Tabs
+const photo = {
+  SubTable: subtable
+}
 
 const Container = ({list, type, setting, placeholder, handleList, handleMenu, deleteMenu }) => {
   let target = null
@@ -94,7 +98,7 @@
               <Icon className="edit close" type="close" onClick={() => del(card)} />
             </div>
           } key={`${index}`}>
-            {card.description}
+            <img src={photo[card.type]} alt=""/>
           </TabPane>
         ))}
       </Tabs>
diff --git a/src/templates/modalconfig/index.jsx b/src/templates/modalconfig/index.jsx
index 2184437..8bf9967 100644
--- a/src/templates/modalconfig/index.jsx
+++ b/src/templates/modalconfig/index.jsx
@@ -27,11 +27,14 @@
 class ComTableConfig extends Component {
   static propTpyes = {
     menu: PropTypes.any,
+    editTab: PropTypes.any,
+    btnParam: PropTypes.object,
     editAction: PropTypes.object,
     handleConfig: PropTypes.func
   }
 
   state = {
+    menu: null,            // 涓婄骇鑿滃崟锛屼笁绾ц彍鍗曟垨鏍囩
     dict: CommonDict,      // 瀛楀吀
     config: null,          // 椤甸潰閰嶇疆锛屽寘鎷ā鏉跨被鍨嬨�佹ā鎬佹璁剧疆銆佹坊鍔犺〃鍚嶃�佽〃鍗曞垪琛�
     visible: false,        // 琛ㄥ崟缂栬緫妯℃�佹锛屾樉绀烘帶鍒�
@@ -48,7 +51,7 @@
     closeVisible: false,   // 鍏抽棴妯℃�佹
     tables: [],            // 鍙敤琛ㄥ悕
     selectedTables: [],    // 宸查�夎〃鍚�
-    originConfig: null,      // 鍘熷鑿滃崟
+    originConfig: null,    // 鍘熷鑿滃崟
     groupVisible: false,   // 鍏ㄥ眬閰嶇疆妯℃�佹
     curgroup: null         // 褰撳墠缁勶紝鏂板缓鎴栫紪杈�
   }
@@ -61,12 +64,19 @@
    * 4銆佽缃寜閽熀鏈俊鎭�
    */
   UNSAFE_componentWillMount () {
-    const {menu, editAction} = this.props
-    console.log(menu)
-    let _config = ''
+    const {menu, editAction, editTab, btnParam} = this.props
 
-    if (editAction.pageParam) {
-      _config = editAction.pageParam
+    let _config = ''
+    let _menu = {
+      type: editTab ? editTab.Template : menu.type,
+      tables: editTab ? editTab.tables : menu.LongParam.tables,
+      MenuID: editTab ? editTab.uuid : menu.MenuID,
+      MenuNo: editTab ? editTab.tabNo : menu.MenuNo,
+      MenuName: editTab ? editTab.tabName : menu.MenuName
+    }
+
+    if (btnParam) {
+      _config = btnParam
     } else {
       _config = JSON.parse(JSON.stringify((Source.baseConfig)))
     }
@@ -75,12 +85,11 @@
       _config.setting.title = editAction.label
     }
 
-    if (menu.LongParam.tables && menu.LongParam.tables.length > 0 && _config.tables.length === 0) {
-      // 涓昏彍鍗曞凡鏈夐�夋嫨鐨勮〃鍚嶏紝妯℃�佹娌℃湁琛ㄥ悕鏃讹紝澶嶅埗涓昏彍鍗曡〃鍚�
-      _config.tables = menu.LongParam.tables
-    }
+    // 涓昏彍鍗曞凡鏈夐�夋嫨鐨勮〃鍚嶏紝妯℃�佹娌℃湁琛ㄥ悕鏃讹紝澶嶅埗涓昏彍鍗曡〃鍚�
+    _config.tables = _config.tables.length === 0 ? _menu.tables : _config.tables
 
     this.setState({
+      menu: _menu,
       config: _config,
       selectedTables: _config.tables || [],
       originConfig: JSON.parse(JSON.stringify(_config)),
@@ -89,7 +98,7 @@
           type: 'text',
           key: 'supMenu',
           label: this.state.dict['header.menu.supMenu'],
-          initVal: menu.MenuName,
+          initVal: _menu.MenuName,
           required: true,
           readonly: true
         },
@@ -193,6 +202,15 @@
         tableColumns: _columns
       })
     })
+  }
+
+  /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊
+   */
+  componentWillUnmount () {
+    this.setState = (state, callback) => {
+      return
+    }
   }
 
   /**
@@ -568,8 +586,8 @@
   }
 
   submitConfig = () => {
-    const { menu, editAction } = this.props
-    const { config } = this.state
+    const { editAction } = this.props
+    const { config, menu } = this.state
       
     if ((!config.groups[0] && !config.fields[0]) || (config.fields[0] && config.fields[0].origin)) {
       notification.warning({
@@ -643,8 +661,7 @@
   }
 
   cancelConfig = () => {
-    const { menu } = this.props
-    const { config, originConfig } = this.state
+    const { menu, config, originConfig } = this.state
     let _this = this
 
     let isOrigin = config.fields.filter(item => item.origin).length > 0
@@ -1046,8 +1063,7 @@
   }
 
   render () {
-    const { menu } = this.props
-    const { config } = this.state
+    const { menu, config } = this.state
 
     return (
       <div className="modal-form-board">
diff --git a/src/templates/subtableconfig/index.jsx b/src/templates/subtableconfig/index.jsx
index c67c199..692102b 100644
--- a/src/templates/subtableconfig/index.jsx
+++ b/src/templates/subtableconfig/index.jsx
@@ -239,6 +239,15 @@
     })
   }
 
+  /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊
+   */
+  componentWillUnmount () {
+    this.setState = (state, callback) => {
+      return
+    }
+  }
+
   handleList = (type, list, card) => {
     const { config } = this.state
 
@@ -2264,7 +2273,7 @@
           <div className="tools">
             <Collapse accordion defaultActiveKey="0" bordered={false}>
               {/* 鍩烘湰淇℃伅 */}
-              <Panel header={this.state.dict['header.menu.basedata']} key="0" id="common-basedata">
+              <Panel header={'鏍囩鍩烘湰淇℃伅'} key="0" id="common-basedata">
                 {/* 鑿滃崟淇℃伅 */}
                 <MenuForm
                   dict={this.state.dict}
@@ -2358,7 +2367,7 @@
             </Collapse>
           </div>
           <div className="setting">
-            <Card title={this.state.dict['header.menu.page.configurable']} bordered={false} extra={
+            <Card title={'鏍囩锛堝瓙琛級椤甸潰閰嶇疆'} bordered={false} extra={
               <div>
                 <Switch className="big" checkedChildren="鍚�" unCheckedChildren="鍋�" defaultChecked={this.state.config.enabled} onChange={this.onEnabledChange} />
                 {/* <Button type="primary" onClick={this.changeTemplate}>{this.state.dict['header.menu.template.change']}</Button> */}

--
Gitblit v1.8.0