king
2019-12-25 af0db2414ced6089cdb829304a4409ea4231d57a
2019-12-25
13个文件已修改
1个文件已添加
420 ■■■■ 已修改文件
src/assets/img/subtable.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/components/sidemenu/editthdmenu/index.jsx 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/commontable/index.jsx 117 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/commontable/index.scss 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/commontable/mainAction/index.jsx 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/commontable/mainTable/index.jsx 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/home/index.jsx 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/subtable/index.jsx 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/subtable/subAction/index.jsx 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/comtableconfig/index.jsx 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/comtableconfig/index.scss 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/comtableconfig/tabdragelement/index.jsx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/modalconfig/index.jsx 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/subtableconfig/index.jsx 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/subtable.jpg
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}
          />
        }
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">
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;
src/tabviews/commontable/mainAction/index.jsx
@@ -535,6 +535,12 @@
      })
    }
    
    if (btn.OpenType === 'excelOut') {
      this.setState({
        loadingUuid: ''
      })
    }
    this.refreshdata(btn, 'error')
  }
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,     // 表格全局设置:tableType(表格是否可选、单选、多选)、columnfixed(列固定)、actionfixed(按钮固定)
    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) => {
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>
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}
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')
  }
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
        })
      })
    })
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;
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>
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">
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> */}