king
2020-12-14 d5c3340757ae00a2ad617c4241dfd3792f36e036
2020-12-14
14 文件已重命名
33个文件已修改
21个文件已删除
3个文件已添加
5081 ■■■■■ 已修改文件
src/menu/actioncomponent/verifyexcelin/columnform/index.jsx 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyexcelin/columnform/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyexcelin/customscript/index.jsx 328 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyexcelin/customscript/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyexcelin/index.jsx 940 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyexcelin/index.scss 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyexcelin/uniqueform/index.jsx 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyexcelin/uniqueform/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyexcelout/columnform/index.jsx 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyexcelout/columnform/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyexcelout/index.jsx 599 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyexcelout/index.scss 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyprint/editable/index.jsx 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyprint/editable/index.scss 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyprint/index.jsx 449 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyprint/index.scss 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcellcomponent/index.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/data-card/index.jsx 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/data-card/index.scss 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/data-card/wrapsetting/settingform/index.jsx 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/prop-card/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/prop-card/index.scss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/table-card/index.jsx 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/table-card/index.scss 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/chart/antv-bar/index.jsx 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/chart/antv-bar/index.scss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/chart/antv-pie/index.jsx 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/chart/antv-pie/index.scss 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/search/main-search/dragsearch/card.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/search/main-search/index.scss 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/actioncomponent/actionform/index.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/actioncomponent/actionform/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/actioncomponent/dragaction/card.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/actioncomponent/dragaction/index.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/actioncomponent/dragaction/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/actioncomponent/formconfig.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/actioncomponent/index.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/actioncomponent/index.scss 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/normalheader/index.jsx 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/normalheader/index.scss 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/searchcomponent/dategroup/index.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/searchcomponent/dategroup/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/searchcomponent/dragsearch/card.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/searchcomponent/dragsearch/index.jsx 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/searchcomponent/dragsearch/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/searchcomponent/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/share/searchcomponent/index.scss 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/normal-table/index.jsx 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/normal-table/index.scss 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/normal-table/wrapsetting/settingform/index.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/modalconfig/index.scss 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/searchcomponent/index.scss 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/searchcomponent/searcheditable/index.jsx 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/searchcomponent/searcheditable/index.scss 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/searchcomponent/searchform/index.jsx 602 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/searchcomponent/searchform/index.scss 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/data-card/index.jsx 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/data-card/index.scss 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/share/normalTable/index.scss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/table/normal-table/index.jsx 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/table/normal-table/index.scss 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/mutilform/index.jsx 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/dragelement/card.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/formtabconfig/index.scss 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/modalconfig/dragelement/card.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/modalconfig/index.scss 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/sharecomponent/searchcomponent/index.scss 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/option.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/menudesign/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/menudesign/index.scss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/actioncomponent/verifyexcelin/columnform/index.jsx
File was deleted
src/menu/actioncomponent/verifyexcelin/columnform/index.scss
src/menu/actioncomponent/verifyexcelin/customscript/index.jsx
File was deleted
src/menu/actioncomponent/verifyexcelin/customscript/index.scss
src/menu/actioncomponent/verifyexcelin/index.jsx
File was deleted
src/menu/actioncomponent/verifyexcelin/index.scss
File was deleted
src/menu/actioncomponent/verifyexcelin/uniqueform/index.jsx
File was deleted
src/menu/actioncomponent/verifyexcelin/uniqueform/index.scss
src/menu/actioncomponent/verifyexcelout/columnform/index.jsx
File was deleted
src/menu/actioncomponent/verifyexcelout/columnform/index.scss
src/menu/actioncomponent/verifyexcelout/index.jsx
File was deleted
src/menu/actioncomponent/verifyexcelout/index.scss
File was deleted
src/menu/actioncomponent/verifyprint/editable/index.jsx
File was deleted
src/menu/actioncomponent/verifyprint/editable/index.scss
File was deleted
src/menu/actioncomponent/verifyprint/index.jsx
File was deleted
src/menu/actioncomponent/verifyprint/index.scss
File was deleted
src/menu/components/card/cardcellcomponent/index.jsx
@@ -8,7 +8,7 @@
import enUS from '@/locales/en-US/model.js'
import asyncComponent from '@/utils/asyncComponent'
import { getCardCellForm } from './formconfig'
import { getActionForm } from '@/menu/actioncomponent/formconfig'
import { getActionForm } from '@/menu/components/share/actioncomponent/formconfig'
import MKEmitter from '@/utils/events.js'
import ElementForm from './elementform'
@@ -17,12 +17,12 @@
const { confirm } = Modal
const ActionForm = asyncComponent(() => import('@/menu/actioncomponent/actionform'))
const ActionForm = asyncComponent(() => import('@/menu/components/share/actioncomponent/actionform'))
const CreateFunc = asyncComponent(() => import('@/templates/zshare/createfunc'))
const VerifyCard = asyncComponent(() => import('@/templates/zshare/verifycard'))
const VerifyPrint = asyncComponent(() => import('@/menu/actioncomponent/verifyprint'))
const VerifyExcelIn = asyncComponent(() => import('@/menu/actioncomponent/verifyexcelin'))
const VerifyExcelOut = asyncComponent(() => import('@/menu/actioncomponent/verifyexcelout'))
const VerifyPrint = asyncComponent(() => import('@/templates/sharecomponent/actioncomponent/verifyprint'))
const VerifyExcelIn = asyncComponent(() => import('@/templates/sharecomponent/actioncomponent/verifyexcelin'))
const VerifyExcelOut = asyncComponent(() => import('@/templates/sharecomponent/actioncomponent/verifyexcelout'))
class CardCellComponent extends Component {
  static propTpyes = {
src/menu/components/card/data-card/index.jsx
@@ -2,7 +2,7 @@
import PropTypes from 'prop-types'
import {connect} from 'react-redux'
import { is, fromJS } from 'immutable'
import { Icon, Popover, Modal } from 'antd'
import { Icon, Popover, Modal, Pagination } from 'antd'
import asyncComponent from '@/utils/asyncComponent'
import asyncIconComponent from '@/utils/asyncIconComponent'
@@ -16,6 +16,8 @@
const SettingComponent = asyncIconComponent(() => import('@/menu/datasource'))
const WrapComponent = asyncIconComponent(() => import('./wrapsetting'))
const CardComponent = asyncComponent(() => import('../cardcomponent'))
const NormalHeader = asyncComponent(() => import('@/menu/components/share/normalheader'))
const ActionComponent = asyncComponent(() => import('@/menu/components/share/actioncomponent'))
const { confirm } = Modal
@@ -81,10 +83,12 @@
        name: card.name,
        subtype: card.subtype,
        setting: { interType: 'system' },
        wrap: { name: card.name, width: 24, addable: 'false', switch: 'false' },
        wrap: { name: card.name, width: 24, pagestyle: 'page', switch: 'false' },
        style: { marginLeft: '0px', marginRight: '0px', marginTop: '8px', marginBottom: '8px' },
        headerStyle: { fontSize: '16px', borderBottomWidth: '1px', borderBottomColor: '#e8e8e8' },
        columns: [],
        scripts: [],
        action: [],
        subcards: subcards
      }
      this.setState({
@@ -92,6 +96,8 @@
      })
      this.props.updateConfig(_card)
    } else {
      card.action = card.action || [] // 兼容
      card.search = card.search || [] // 兼容
      this.setState({
        card: fromJS(card).toJS()
      })
@@ -185,14 +191,68 @@
    this.props.updateConfig(_card)
  }
  addSearch = () => {
    const { card } = this.state
    let newcard = {}
    newcard.uuid = Utils.getuuid()
    newcard.focus = true
    newcard.label = 'label'
    newcard.type = 'select'
    newcard.resourceType = '0'
    newcard.options = []
    newcard.setAll = 'false'
    newcard.orderType = 'asc'
    newcard.display = 'dropdown'
    newcard.match = '='
    // 注册事件-添加搜索
    MKEmitter.emit('addSearch', card.uuid, newcard)
  }
  addButton = () => {
    const { card } = this.state
    let newcard = {}
    newcard.uuid = Utils.getuuid()
    newcard.focus = true
    newcard.label = 'label'
    newcard.Ot = 'requiredSgl'
    newcard.OpenType = 'pop'
    newcard.icon = ''
    newcard.class = 'green'
    newcard.intertype = card.setting.interType || 'system'
    newcard.innerFunc = card.setting.innerFunc || ''
    newcard.sysInterface = card.setting.sysInterface || ''
    newcard.outerFunc = card.setting.outerFunc || ''
    newcard.interface = card.setting.interface || ''
    newcard.execSuccess = 'grid'
    newcard.execError = 'never'
    newcard.verify = null
    newcard.show = 'button'
    newcard.btnstyle = {marginRight: '15px'}
    // 注册事件-添加按钮
    MKEmitter.emit('addButton', card.uuid, newcard)
  }
  setSubConfig = () => {
  }
  render() {
    const { menu } = this.props
    const { card } = this.state
    return (
      <div className="menu-data-card-edit-box" style={{...card.style, minHeight: card.wrap.minHeight}}>
        <NormalHeader defaultshow="hidden" config={card} updateComponent={this.updateComponent}/>
        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
          <div className="mk-popover-control">
            {menu && menu.MenuType !== 'billPrint' ? <Icon className="plus" title="添加搜索" onClick={this.addSearch} type="plus-circle" /> : null}
            {menu && menu.MenuType !== 'billPrint' ? <Icon className="plus" title="添加按钮" onClick={this.addButton} type="plus-square" /> : null}
            {menu ? <WrapComponent MenuType={menu.MenuType} config={card} updateConfig={this.updateComponent} /> : null}
            <Icon className="style" title="调整样式" onClick={this.changeStyle} type="font-colors" />
            <Icon className="close" title="删除组件" type="delete" onClick={() => this.props.deletecomponent(card.uuid)} />
@@ -201,8 +261,10 @@
        } trigger="hover">
          <Icon type="tool" />
        </Popover>
        <ActionComponent config={card} setSubConfig={this.setSubConfig} updateaction={this.updateComponent}/>
        {card.subcards.map(subcard => (<CardComponent key={subcard.uuid} MenuType={menu ? menu.MenuType : ''} cards={card} card={subcard} updateElement={this.updateCard} deleteElement={this.deleteCard}/>))}
        {card.wrap.addable === 'true' ? <div className="card-add-button"><Icon type="plus" /></div> : null}
        <div style={{clear: 'both'}}></div>
        {card.wrap.pagestyle !== 'switch' && card.setting.laypage === 'true' ? <Pagination total={85} showTotal={total => `共 ${total} 条`} pageSize={20} defaultCurrent={1}/> : null}
      </div>
    )
  }
src/menu/components/card/data-card/index.scss
@@ -19,7 +19,7 @@
  }
  .anticon-tool {
    position: absolute;
    z-index: 1;
    z-index: 2;
    font-size: 16px;
    right: 1px;
    top: 1px;
@@ -65,6 +65,16 @@
      margin-right: 10px;
    }
  }
  .ant-pagination {
    float: right;
    margin: 10px;
  }
  .model-menu-action-list {
    .page-card {
      line-height: 55px;
    }
  }
}
.menu-data-card-edit-box::after {
  display: block;
src/menu/components/card/data-card/wrapsetting/settingform/index.jsx
@@ -73,13 +73,13 @@
      <div className="model-menu-setting-form">
        <Form {...formItemLayout}>
          <Row gutter={24}>
            {config.subtype === 'tablecard' ? <Col span={12}>
            <Col span={12}>
              <Form.Item label="标题">
                {getFieldDecorator('title', {
                  initialValue: wrap.title || ''
                })(<Input placeholder={''} autoComplete="off" onPressEnter={this.handleSubmit} />)}
              </Form.Item>
            </Col> : null}
            </Col>
            <Col span={12}>
              <Form.Item label={
                <Tooltip placement="topLeft" title="用于组件间的区分。">
@@ -135,34 +135,30 @@
            </Col> : null}
            {MenuType !== 'billPrint' && config.subtype === 'datacard' ? <Col span={12}>
              <Form.Item label={
                <Tooltip placement="topLeft" title="选择含有添加按钮时,请完善按钮配置信息。">
                <Tooltip placement="topLeft" title="数据源中选择分页时有效。">
                  <Icon type="question-circle" />
                  添加按钮
                  分页风格
                </Tooltip>
              }>
                {getFieldDecorator('addable', {
                  initialValue: wrap.addable || 'false'
                {getFieldDecorator('pagestyle', {
                  initialValue: wrap.pagestyle || 'page'
                })(
                  <Radio.Group>
                    <Radio value="true">有</Radio>
                    <Radio value="false">无</Radio>
                    <Radio value="page">页码</Radio>
                    <Radio value="switch">左右切换</Radio>
                  </Radio.Group>
                )}
              </Form.Item>
            </Col> : null}
            {MenuType !== 'billPrint' && config.subtype !== 'tablecard' ? <Col span={12}>
              <Form.Item label={
                <Tooltip placement="topLeft" title="卡片点击时,是否向其他组件传递主键值。">
                  <Icon type="question-circle" />
                  传递主键
                </Tooltip>
              }>
                {getFieldDecorator('switch', {
                  initialValue: wrap.switch || 'false'
              <Form.Item label="卡片属性">
                {getFieldDecorator('cardType', {
                  initialValue: wrap.cardType || ''
                })(
                  <Radio.Group>
                    <Radio value="true">是</Radio>
                    <Radio value="false">否</Radio>
                  <Radio.Group style={{whiteSpace: 'nowrap'}}>
                    <Radio key="" value=""> 不可选 </Radio>
                    <Radio key="radio" value={'radio'}> 单选 </Radio>
                    <Radio key="checkbox" value={'checkbox'}> 多选 </Radio>
                  </Radio.Group>
                )}
              </Form.Item>
src/menu/components/card/prop-card/index.jsx
@@ -16,6 +16,7 @@
const SettingComponent = asyncIconComponent(() => import('@/menu/datasource'))
const WrapComponent = asyncIconComponent(() => import('../data-card/wrapsetting'))
const CardComponent = asyncComponent(() => import('../cardcomponent'))
const NormalHeader = asyncComponent(() => import('@/menu/components/share/normalheader'))
const { confirm } = Modal
@@ -226,6 +227,7 @@
    return (
      <div className="menu-prop-card-edit-box" style={{...card.style, minHeight: card.wrap.minHeight}}>
        <NormalHeader defaultshow="hidden" config={card} updateComponent={this.updateComponent}/>
        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
          <div className="mk-popover-control">
            <Icon className="plus" title="添加卡片" onClick={this.addCard} type="plus" />
src/menu/components/card/prop-card/index.scss
@@ -19,7 +19,7 @@
  }
  .anticon-tool {
    position: absolute;
    z-index: 1;
    z-index: 2;
    font-size: 16px;
    right: 1px;
    top: 1px;
src/menu/components/card/table-card/index.jsx
@@ -2,7 +2,7 @@
import PropTypes from 'prop-types'
import {connect} from 'react-redux'
import { is, fromJS } from 'immutable'
import { Icon, Popover, Modal } from 'antd'
import { Icon, Popover, Modal, Pagination } from 'antd'
import asyncComponent from '@/utils/asyncComponent'
import asyncIconComponent from '@/utils/asyncIconComponent'
@@ -15,8 +15,8 @@
const SettingComponent = asyncIconComponent(() => import('@/menu/datasource'))
const WrapComponent = asyncIconComponent(() => import('../data-card/wrapsetting'))
const SearchComponent = asyncComponent(() => import('@/menu/searchcomponent'))
const CardComponent = asyncComponent(() => import('./cardcomponent'))
const NormalHeader = asyncComponent(() => import('@/menu/components/share/normalheader'))
const { confirm } = Modal
@@ -167,25 +167,12 @@
    MKEmitter.emit('changeStyle', [card.uuid], ['background', 'border', 'padding', 'margin'], card.style)
  }
  changeTitleStyle = () => {
    const { card } = this.state
    MKEmitter.emit('changeStyle', [card.uuid, 'header'], ['font', 'border'], card.headerStyle)
  }
  getStyle = (comIds, style) => {
    const { card } = this.state
    if (comIds[0] !== card.uuid) return
    if (comIds[0] !== card.uuid || comIds.length > 1) return
    let _card = {}
    if (comIds.length === 1) {
      _card = {...card, style}
    } else if (comIds.length === 2 && comIds[1] === 'header') {
      _card = {...card, headerStyle: style}
    } else {
      return
    }
    let _card = {...card, style}
    this.setState({
      card: _card
@@ -248,16 +235,7 @@
    return (
      <div className="menu-table-card-edit-box" style={{...card.style, height: card.wrap.height}}>
        <div className="table-header" style={card.headerStyle}>
          <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
            <div className="mk-popover-control">
              <Icon className="style" title="调整样式" onClick={this.changeTitleStyle} type="font-colors" />
            </div>
          } trigger="hover">
            <span className="table-title">{card.wrap.title || ''}</span>
          </Popover>
          <SearchComponent config={card} updatesearch={this.updateComponent}/>
        </div>
        <NormalHeader config={card} updateComponent={this.updateComponent}/>
        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
          <div className="mk-popover-control">
            <Icon className="plus" title="添加卡片" onClick={this.addCard} type="plus" />
@@ -270,7 +248,10 @@
        } trigger="hover">
          <Icon type="tool" />
        </Popover>
        {card.subcards.map(subcard => (<CardComponent key={subcard.uuid} MenuType={menu ? menu.MenuType : ''} cards={card} card={subcard} updateElement={this.updateCard} deleteElement={this.deleteCard}/>))}
        <div style={{minHeight: card.wrap.height - 90}}>
          {card.subcards.map(subcard => (<CardComponent key={subcard.uuid} MenuType={menu ? menu.MenuType : ''} cards={card} card={subcard} updateElement={this.updateCard} deleteElement={this.deleteCard}/>))}
        </div>
        {card.setting.laypage === 'true' ? <Pagination size="small" total={50} /> : null}
      </div>
    )
  }
src/menu/components/card/table-card/index.scss
@@ -36,7 +36,7 @@
  }
  .anticon-tool {
    position: absolute;
    z-index: 1;
    z-index: 2;
    font-size: 16px;
    right: 1px;
    top: 1px;
@@ -81,6 +81,9 @@
      margin-right: 10px;
    }
  }
  .ant-pagination {
    text-align: right;
  }
}
.menu-table-card-edit-box::after {
  display: block;
src/menu/components/chart/antv-bar/index.jsx
@@ -17,9 +17,9 @@
import './index.scss'
const SettingComponent = asyncIconComponent(() => import('@/menu/datasource'))
const SearchComponent = asyncComponent(() => import('@/menu/searchcomponent'))
const ActionComponent = asyncComponent(() => import('@/menu/actioncomponent'))
const ChartCompileForm = asyncIconComponent(() => import('./chartcompile'))
const NormalHeader = asyncComponent(() => import('@/menu/components/share/normalheader'))
const ActionComponent = asyncComponent(() => import('@/menu/components/share/actioncomponent'))
class antvBarLineChart extends Component {
  static propTpyes = {
@@ -79,7 +79,7 @@
          borderWidth: '1px', borderColor: 'rgb(217, 217, 217)',
          marginLeft: '8px', marginRight: '8px', marginTop: '8px', marginBottom: '8px'
        },
        headerStyle: { fontSize: '16px', borderBottomWidth: '1px', borderBottomColor: 'rgb(217, 217, 217)' },
        headerStyle: { fontSize: '16px', borderBottomWidth: '1px', borderBottomColor: '#e8e8e8' },
        columns: [],
        scripts: [],
        search: [],
@@ -802,12 +802,6 @@
    MKEmitter.emit('addButton', card.uuid, newcard)
  }
  changeTitleStyle = () => {
    const { card } = this.state
    MKEmitter.emit('changeStyle', [card.uuid, 'header'], ['font', 'border'], card.headerStyle)
  }
  changeStyle = () => {
    const { card } = this.state
@@ -817,16 +811,9 @@
  getStyle = (comIds, style) => {
    const { card } = this.state
    if (comIds[0] !== card.uuid) return
    if (comIds[0] !== card.uuid || comIds.length > 1) return
    let _card = {}
    if (comIds.length === 1) {
      _card = {...card, style}
    } else if (comIds.length === 2 && comIds[1] === 'header') {
      _card = {...card, headerStyle: style}
    } else {
      return
    }
    let _card = {...card, style}
    this.setState({
      card: _card
@@ -841,16 +828,7 @@
    return (
      <div className="menu-line-chart-edit-box" style={{...card.style, height: card.plot.height || 400}}>
        <div className="chart-header" style={card.headerStyle}>
          <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
            <div className="mk-popover-control">
              <Icon className="style" title="调整样式" onClick={this.changeTitleStyle} type="font-colors" />
            </div>
          } trigger="hover">
            <span className="chart-title">{card.plot.title || ''}</span>
          </Popover>
          <SearchComponent config={card} updatesearch={this.updateComponent}/>
        </div>
        <NormalHeader config={card} updateComponent={this.updateComponent}/>
        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
          <div className="mk-popover-control">
            {menu && menu.MenuType !== 'billPrint' ? <Icon className="plus" title="添加搜索" onClick={this.addSearch} type="plus-circle" /> : null}
src/menu/components/chart/antv-bar/index.scss
@@ -36,7 +36,7 @@
    position: absolute;
    right: 1px;
    top: 1px;
    z-index: 1;
    z-index: 2;
    font-size: 16px;
    padding: 5px;
    cursor: pointer;
src/menu/components/chart/antv-pie/index.jsx
@@ -16,8 +16,8 @@
import './index.scss'
const SettingComponent = asyncIconComponent(() => import('@/menu/datasource'))
const SearchComponent = asyncComponent(() => import('@/menu/searchcomponent'))
const ChartCompileForm = asyncIconComponent(() => import('./chartcompile'))
const NormalHeader = asyncComponent(() => import('@/menu/components/share/normalheader'))
class antvBarLineChart extends Component {
  static propTpyes = {
@@ -66,7 +66,7 @@
          borderWidth: '1px', borderColor: 'rgb(217, 217, 217)',
          marginLeft: '8px', marginRight: '8px', marginTop: '8px', marginBottom: '8px'
        },
        headerStyle: { fontSize: '16px', borderBottomWidth: '1px', borderBottomColor: 'rgb(217, 217, 217)' },
        headerStyle: { fontSize: '16px', borderBottomWidth: '1px', borderBottomColor: '#e8e8e8' },
        columns: [],
        scripts: [],
        search: [],
@@ -374,12 +374,6 @@
    MKEmitter.emit('addSearch', card.uuid, newcard)
  }
  changeTitleStyle = () => {
    const { card } = this.state
    MKEmitter.emit('changeStyle', [card.uuid, 'header'], ['font', 'border'], card.headerStyle)
  }
  changeStyle = () => {
    const { card } = this.state
@@ -389,16 +383,9 @@
  getStyle = (comIds, style) => {
    const { card } = this.state
    if (comIds[0] !== card.uuid) return
    if (comIds[0] !== card.uuid || comIds.length > 1) return
    let _card = {}
    if (comIds.length === 1) {
      _card = {...card, style}
    } else if (comIds.length === 2 && comIds[1] === 'header') {
      _card = {...card, headerStyle: style}
    } else {
      return
    }
    let _card = {...card, style}
    this.setState({
      card: _card
@@ -413,16 +400,7 @@
    return (
      <div className="menu-pie-chart-edit-box" style={{...card.style, height: card.plot.height || 400}}>
        <div className="chart-header" style={card.headerStyle}>
          <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
            <div className="mk-popover-control">
              <Icon className="style" title="调整样式" onClick={this.changeTitleStyle} type="font-colors" />
            </div>
          } trigger="hover">
            <span className="chart-title">{card.plot.title || ''}</span>
          </Popover>
          <SearchComponent config={card} updatesearch={this.updateComponent}/>
        </div>
        <NormalHeader config={card} updateComponent={this.updateComponent}/>
        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
          <div className="mk-popover-control">
            {menu && menu.MenuType !== 'billPrint' ? <Icon className="plus" title="添加搜索" onClick={this.addSearch} type="plus-circle" /> : null}
src/menu/components/chart/antv-pie/index.scss
@@ -12,30 +12,11 @@
    letter-spacing: 0px;
  }
  .chart-header {
    position: relative;
    height: 45px;
    border-bottom: 1px solid #e8e8e8;
    overflow: hidden;
    padding-right: 35px;
    .chart-title {
      text-decoration: inherit;
      font-weight: inherit;
      font-style: inherit;
      float: left;
      line-height: 45px;
      margin-left: 10px;
      position: relative;
      z-index: 1;
    }
  }
  >.anticon-tool {
    position: absolute;
    right: 1px;
    top: 1px;
    z-index: 1;
    z-index: 2;
    font-size: 16px;
    padding: 5px;
    cursor: pointer;
src/menu/components/search/main-search/dragsearch/card.jsx
@@ -93,7 +93,6 @@
                /> : null
              }
              {card.type === 'group' ? <DateGroup card={card} /> : null }
              <div className="input-mask"></div>
            </div>
          </div>
        </div>
src/menu/components/search/main-search/index.scss
@@ -42,6 +42,7 @@
        }
      }
      .ant-form-item-control-wrapper {
        position: relative;
        flex: 1 1;
        .ant-select {
          width: 100%;
@@ -50,20 +51,21 @@
        .ant-calendar-picker {
          margin-top: 4px;
        }
        .input-mask {
          position: absolute;
          top: 0;
          left: 0;
          right: 0;
          bottom: 0;
          opacity: 0;
          z-index: 2;
        }
        .data-range .ant-calendar-picker-input {
          padding: 4px 20px 4px 5px;
          font-size: 13px;
        }
      }
      .ant-form-item-control-wrapper::after {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        opacity: 0;
        z-index: 2;
      }
    }
  }
  .page-card.false {
src/menu/components/share/actioncomponent/actionform/index.jsx
src/menu/components/share/actioncomponent/actionform/index.scss
src/menu/components/share/actioncomponent/dragaction/card.jsx
src/menu/components/share/actioncomponent/dragaction/index.jsx
src/menu/components/share/actioncomponent/dragaction/index.scss
src/menu/components/share/actioncomponent/formconfig.jsx
File was renamed from src/menu/actioncomponent/formconfig.jsx
@@ -393,15 +393,7 @@
      initVal: card.syncComponent || [],
      required: false,
      options: modules
    },
    // {
    //   type: 'select',
    //   key: 'linkcomponents',
    //   label: '',
    //   initVal: card.Ot || 'requiredSgl',
    //   required: true,
    //   options: []
    // }
    }
  ]
  return forms
src/menu/components/share/actioncomponent/index.jsx
File was renamed from src/menu/actioncomponent/index.jsx
@@ -14,9 +14,9 @@
import ActionForm from './actionform'
import VerifyCard from '@/templates/zshare/verifycard'
import CreateFunc from '@/templates/zshare/createfunc'
import VerifyPrint from './verifyprint'
import VerifyExcelIn from './verifyexcelin'
import VerifyExcelOut from './verifyexcelout'
import VerifyPrint from '@/templates/sharecomponent/actioncomponent/verifyprint'
import VerifyExcelIn from '@/templates/sharecomponent/actioncomponent/verifyexcelin'
import VerifyExcelOut from '@/templates/sharecomponent/actioncomponent/verifyexcelout'
import DragElement from './dragaction'
import './index.scss'
@@ -83,7 +83,7 @@
    const { config } = this.props
    const { card, actionlist } = this.state
    if (comIds.length !== 2 || comIds[0] !== config.uuid) return
    if (comIds.length !== 2 || comIds[0] !== config.uuid || comIds[1] === 'header') return
    let _card = fromJS(card).toJS()
    _card.btnstyle = style
@@ -104,7 +104,7 @@
    const { config } = this.props
    let _style = element.btnstyle ? fromJS(element.btnstyle).toJS() : {}
    let options = ['font', 'border', 'background']
    let options = ['font', 'border', 'background', 'margin']
    this.setState({
      card: element
src/menu/components/share/actioncomponent/index.scss
File was renamed from src/menu/actioncomponent/index.scss
@@ -15,7 +15,6 @@
  .page-card {
    display: inline-block;
    margin: 0px;
    padding: 0px 5px;
    position: relative;
    div {
@@ -23,7 +22,6 @@
      cursor: move;
    }
    button {
      // min-width: 65px;
      cursor: move;
      .anticon-table {
        font-size: 10px;
src/menu/components/share/normalheader/index.jsx
New file
@@ -0,0 +1,79 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Popover, Icon } from 'antd'
import asyncComponent from '@/utils/asyncComponent'
import MKEmitter from '@/utils/events.js'
import './index.scss'
const SearchComponent = asyncComponent(() => import('@/menu/components/share/searchcomponent'))
class NormalHeader extends Component {
  static propTpyes = {
    defaultshow: PropTypes.any,      // 标题与搜索条件不存在时隐藏
    config: PropTypes.object,        // 配置信息
    updateComponent: PropTypes.func  // 配置更新
  }
  componentDidMount () {
    MKEmitter.addListener('submitStyle', this.getStyle)
  }
  shouldComponentUpdate (nextProps, nextState) {
    return !is(fromJS(this.props.config), fromJS(nextProps.config))
  }
  /**
   * @description 组件销毁,清除state更新,清除快捷键设置
   */
  componentWillUnmount () {
    this.setState = () => {
      return
    }
    MKEmitter.removeListener('submitStyle', this.getStyle)
  }
  getStyle = (comIds, style) => {
    const { config } = this.props
    if (comIds[0] !== config.uuid || comIds[1] !== 'header') return
    let _config = {...config, headerStyle: style}
    this.props.updateComponent(_config)
  }
  changeStyle = () => {
    const { config } = this.props
    MKEmitter.emit('changeStyle', [config.uuid, 'header'], ['font', 'border'], config.headerStyle)
  }
  render() {
    const { config, defaultshow } = this.props
    let title = config.plot ? config.plot.title : config.wrap.title
    let show = true
    if (defaultshow === 'hidden') {
      if (!title && (!config.search || config.search.length === 0)) {
        show = false
      }
    }
    return (
      <div className={'normal-header' + (!show ? ' hidden' : '')} style={config.headerStyle}>
        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
          <div className="mk-popover-control">
            <Icon className="style" title="调整样式" onClick={this.changeStyle} type="font-colors" />
          </div>
        } trigger="hover">
          <span className="title">{title}</span>
        </Popover>
        {config.search ? <SearchComponent config={config} updatesearch={this.props.updateComponent}/> : null}
      </div>
    )
  }
}
export default NormalHeader
src/menu/components/share/normalheader/index.scss
New file
@@ -0,0 +1,20 @@
.normal-header {
  position: relative;
  height: 45px;
  border-bottom: 1px solid #e8e8e8;
  overflow: hidden;
  .title {
    text-decoration: inherit;
    font-weight: inherit;
    font-style: inherit;
    float: left;
    line-height: 45px;
    margin-left: 10px;
    position: relative;
    z-index: 1;
  }
}
.normal-header.hidden {
  display: none;
}
src/menu/components/share/searchcomponent/dategroup/index.jsx
src/menu/components/share/searchcomponent/dategroup/index.scss
src/menu/components/share/searchcomponent/dragsearch/card.jsx
File was renamed from src/menu/searchcomponent/dragsearch/card.jsx
@@ -93,7 +93,6 @@
              /> : null
            }
            {card.type === 'group' ? <DateGroup card={card} /> : null }
            <div className="input-mask"></div>
          </div>
        </div>
      </div>
src/menu/components/share/searchcomponent/dragsearch/index.jsx
src/menu/components/share/searchcomponent/dragsearch/index.scss
src/menu/components/share/searchcomponent/index.jsx
File was renamed from src/menu/searchcomponent/index.jsx
@@ -12,7 +12,7 @@
import enUS from '@/locales/en-US/model.js'
import { getSearchForm } from '@/templates/zshare/formconfig'
import SearchForm from './searchform'
import SearchForm from '@/templates/sharecomponent/searchcomponent/searchform'
import DragElement from './dragsearch'
import './index.scss'
@@ -288,7 +288,7 @@
    const { dict, searchlist, visible, sqlVerifing } = this.state
    return (
      <div className="model-custom-search-list">
      <div className="model-custom-header-search-list">
        <DragElement
          list={searchlist}
          handleList={this.handleList}
src/menu/components/share/searchcomponent/index.scss
New file
@@ -0,0 +1,54 @@
.model-custom-header-search-list {
  padding: 0px;
  .ant-row .ant-col {
    float: right;
    padding: 0 6px;
  }
  .page-card {
    position: relative;
    border-radius: 2px;
    height: 45px;
    padding-top: 8px;
    .ant-form-item {
      position: relative;
      cursor: move;
      display: flex;
      margin-bottom: 0px;
      .ant-select {
        width: 100%;
      }
      .ant-select-selection--single {
        height: 28px;
      }
      .ant-input {
        height: 28px;
      }
      .data-range .ant-calendar-picker-input {
        padding: 4px 20px 4px 5px;
        font-size: 13px;
      }
      .model-date-group {
        line-height: 28px;
        text-align: right;
        width: 100%;
      }
    }
    .ant-form-item::after {
      content: ' ';
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      opacity: 0;
      z-index: 2;
    }
  }
  .ant-calendar-picker {
    min-width: 100px!important;
    width: 100%;
  }
}
src/menu/components/table/normal-table/index.jsx
@@ -16,7 +16,7 @@
const SettingComponent = asyncIconComponent(() => import('@/menu/datasource'))
const SearchComponent = asyncComponent(() => import('@/templates/sharecomponent/searchcomponent'))
const ActionComponent = asyncComponent(() => import('@/menu/actioncomponent'))
const ActionComponent = asyncComponent(() => import('@/menu/components/share/actioncomponent'))
const ColumnComponent = asyncComponent(() => import('./columns'))
const WrapComponent = asyncIconComponent(() => import('./wrapsetting'))
@@ -199,6 +199,7 @@
    newcard.errorTime = 10
    newcard.verify = null
    newcard.show = 'button'
    newcard.btnstyle = {marginRight: '15px'}
    // 注册事件-添加按钮
    MKEmitter.emit('addButton', card.uuid, newcard)
@@ -238,12 +239,7 @@
          <Icon type="tool" />
        </Popover>
        <SearchComponent config={card} updatesearch={this.updateconfig}/>
        <ActionComponent
          type="normaltable"
          config={card}
          setSubConfig={this.setSubConfig}
          updateaction={this.updateComponent}
        />
        <ActionComponent config={card} setSubConfig={this.setSubConfig} updateaction={this.updateComponent}/>
        <ColumnComponent config={card} updatecolumn={this.updateconfig}/>
      </div>
    )
src/menu/components/table/normal-table/index.scss
@@ -23,7 +23,7 @@
  }
  .anticon-tool {
    position: absolute;
    z-index: 1;
    z-index: 2;
    font-size: 16px;
    right: 1px;
    top: 1px;
@@ -31,13 +31,10 @@
    padding: 5px;
    background: rgba(255, 255, 255, 0.55);
  }
  .model-table-search-list.length0 + .model-menu-action-list {
    min-height: 60px;
  }
  .model-menu-action-list {
    line-height: 40px;
    padding: 10px 0px;
    min-height: 50px;
    line-height: 55px;
    padding: 0px;
    min-height: 55px;
    >.ant-row {
      min-height: 30px;
    }
src/menu/components/table/normal-table/wrapsetting/settingform/index.jsx
@@ -74,6 +74,13 @@
        <Form {...formItemLayout}>
          <Row gutter={24}>
            <Col span={12}>
              <Form.Item label="标题">
                {getFieldDecorator('title', {
                  initialValue: wrap.title || ''
                })(<Input placeholder={''} autoComplete="off" onPressEnter={this.handleSubmit} />)}
              </Form.Item>
            </Col>
            <Col span={12}>
              <Form.Item label={
                <Tooltip placement="topLeft" title="用于组件间的区分。">
                  <Icon type="question-circle" />
src/menu/modalconfig/index.scss
@@ -200,6 +200,7 @@
              }
            }
            .ant-form-item-control-wrapper {
              position: relative;
              .ant-select {
                width: 100%;
                margin-top: 4px;
@@ -212,14 +213,16 @@
                width: 100%;
                margin-top: 4px;
              }
              .input-mask {
                position: absolute;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                opacity: 0;
              }
            }
            .ant-form-item-control-wrapper::after {
              content: '';
              position: absolute;
              top: 0;
              left: 0;
              right: 0;
              bottom: 0;
              opacity: 0;
              z-index: 1;
            }
            .ant-col-cuslabel {
              width: 10.5%;
src/menu/searchcomponent/index.scss
File was deleted
src/menu/searchcomponent/searcheditable/index.jsx
File was deleted
src/menu/searchcomponent/searcheditable/index.scss
File was deleted
src/menu/searchcomponent/searchform/index.jsx
File was deleted
src/menu/searchcomponent/searchform/index.scss
File was deleted
src/tabviews/custom/components/card/data-card/index.jsx
@@ -1,7 +1,7 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Spin, Empty, notification, Col } from 'antd'
import { Spin, Empty, notification, Col, Pagination } from 'antd'
import Api from '@/api'
import UtilsDM from '@/utils/utils-datamanage.js'
@@ -12,6 +12,7 @@
import './index.scss'
const CardItem = asyncComponent(() => import('../cardItem'))
const MainAction = asyncComponent(() => import('@/tabviews/zshare/actionList'))
class DataCard extends Component {
  static propTpyes = {
@@ -24,6 +25,7 @@
  state = {
    BID: '',                   // 上级ID
    BData: '',                 // 上级行数据
    config: null,              // 图表配置信息
    pageIndex: 1,              // 页码
    activeKey: '',             // 选中卡
@@ -146,12 +148,12 @@
    })
  }
  resetParentParam = (MenuID, id) => {
  resetParentParam = (MenuID, id, data) => {
    const { config } = this.state
    if (!config.setting.supModule || config.setting.supModule !== MenuID) return
    if (id !== this.state.BID) {
      this.setState({ BID: id }, () => {
      this.setState({ BID: id, BData: data }, () => {
        this.loadData()
      })
    }
@@ -252,6 +254,14 @@
      this.loadData()
    })
  }
  changePageIndex = (page) => {
    this.setState({
      pageIndex: page
    }, () => {
      this.loadData()
    })
  }
  
  changeCard = (index, item) => {
    const { config } = this.state
@@ -264,12 +274,12 @@
  }
  render() {
    const { config, loading, data, pageIndex, total, card, activeKey } = this.state
    const { config, loading, data, pageIndex, total, card, activeKey, BID, BData, selectedData } = this.state
    let _total = config.setting.pageSize * pageIndex
    let pageable = config.pageable && config.setting.laypage
    if ((pageIndex === 1 && total <= _total) || !data) {
      pageable = false
    let switchable = false
    if (config.wrap.pagestyle === 'switch' && config.pageable && config.setting.laypage && total > config.setting.pageSize && data) {
      switchable = true
    }
    return (
@@ -280,16 +290,31 @@
            <Spin />
          </div> : null
        }
        {pageable ? <div className={'prev-page ' + (pageIndex === 1 ? 'disabled' : '')} onClick={this.prevPage}><div><div><img src={preImg} alt=""/></div></div></div> : null}
        {data && data.length > 0 ? <div className="card-row-list">
          {data.map((item, index) => (
            <Col className={activeKey === index ? 'active' : ''} key={index} span={card.setting.width || 6} onClick={() => {this.changeCard(index, item)}}>
              <CardItem card={card} cards={config} data={item} updateStatus={this.updateStatus}/>
            </Col>
          ))}
        </div> : null}
        {pageable ? <div className={'prev-page ' + (total <= _total ? 'disabled' : '')} onClick={this.nextPage}><div><div><img src={nextImg} alt=""/></div></div></div> : null}
        {data && data.length === 0 ? <Empty description={false}/> : null}
        {config.action && config.action.length > 0 ?
          <MainAction
            BID={BID}
            BData={BData}
            setting={config.setting}
            actions={config.action}
            columns={config.columns}
            selectedData={selectedData}
            refreshdata={this.refreshbyaction}
            getexceloutparam={this.getexceloutparam}
          /> : null
        }
        <div className="data-zoom">
          {switchable ? <div className={'prev-page ' + (pageIndex === 1 ? 'disabled' : '')} onClick={this.prevPage}><div><div><img src={preImg} alt=""/></div></div></div> : null}
          {data && data.length > 0 ? <div className="card-row-list">
            {data.map((item, index) => (
              <Col className={activeKey === index ? 'active' : ''} key={index} span={card.setting.width || 6} onClick={() => {this.changeCard(index, item)}}>
                <CardItem card={card} cards={config} data={item} updateStatus={this.updateStatus}/>
              </Col>
            ))}
          </div> : null}
          {switchable ? <div className={'prev-page ' + (total <= _total ? 'disabled' : '')} onClick={this.nextPage}><div><div><img src={nextImg} alt=""/></div></div></div> : null}
          {data && data.length === 0 ? <Empty description={false}/> : null}
        </div>
        {config.wrap.pagestyle !== 'switch' && config.setting.laypage && data ? <Pagination total={total} showTotal={t => `共 ${t} 条`} pageSize={config.setting.pageSize} onChange={this.changePageIndex} current={pageIndex}/> : null}
      </div>
    )
  }
src/tabviews/custom/components/card/data-card/index.scss
@@ -4,9 +4,20 @@
  background-repeat: no-repeat;
  background-size: cover;
  min-height: 100px;
  display: flex;
  position: relative;
  >.button-list.toolbar-button {
    padding: 0;
    line-height: 55px;
    button {
      margin-right: 0px;
      margin-bottom: 0px;
    }
  }
  .data-zoom {
    display: flex;
    position: relative;
  }
  .prev-page {
    width: 20px;
    div {
@@ -64,9 +75,9 @@
  }
  .loading-mask {
    position: absolute;
    left: 40px;
    left: 0px;
    top: 0;
    right: 40px;
    right: 0px;
    bottom: 0px;
    display: flex;
    align-items: center;
@@ -82,6 +93,10 @@
      background: #ffffff;
    }
  }
  .ant-pagination {
    margin: 10px;
    text-align: right;
  }
}
.custom-card-box::after {
src/tabviews/custom/components/share/normalTable/index.scss
@@ -1,6 +1,6 @@
.normal-custom-table {
  position: relative;
  padding: 0 0px 30px;
  padding: 0px;
  .normal-table-footer {
    padding: 10px 0px;
src/tabviews/custom/components/table/normal-table/index.jsx
@@ -9,15 +9,15 @@
import zhCN from '@/locales/zh-CN/main.js'
import enUS from '@/locales/en-US/main.js'
import UtilsDM from '@/utils/utils-datamanage.js'
import asyncSpinComponent from '@/utils/asyncSpinComponent'
import asyncComponent from '@/utils/asyncComponent'
import MKEmitter from '@/utils/events.js'
import MainSearch from '@/tabviews/zshare/topSearch'
import './index.scss'
// 通用组件
const MainAction = asyncSpinComponent(() => import('@/tabviews/zshare/actionList'))
const MainTable = asyncSpinComponent(() => import('@/tabviews/custom/components/share/normalTable'))
const MainAction = asyncComponent(() => import('@/tabviews/zshare/actionList'))
const MainTable = asyncComponent(() => import('@/tabviews/custom/components/share/normalTable'))
class NormalTable extends Component {
  static propTpyes = {
@@ -481,19 +481,16 @@
            refreshdata={this.refreshbysearch}
          /> : null
        }
        <div className="commontable-main-action">
          <MainAction
            BID={BID}
            setting={setting}
            actions={actions}
            dict={this.state.dict}
            BData={this.state.BData}
            columns={config.columns}
            selectedData={selectedData}
            refreshdata={this.refreshbyaction}
            getexceloutparam={this.getexceloutparam}
          />
        </div>
        <MainAction
          BID={BID}
          setting={setting}
          actions={actions}
          BData={this.state.BData}
          columns={config.columns}
          selectedData={selectedData}
          refreshdata={this.refreshbyaction}
          getexceloutparam={this.getexceloutparam}
        />
        <div className="main-table-box">
          <MainTable
            setting={setting}
src/tabviews/custom/components/table/normal-table/index.scss
@@ -4,10 +4,13 @@
  .top-search {
    padding: 0;
  }
  .commontable-main-action {
    min-height: 25px;
    .button-list {
      padding-right: 110px;
  >.button-list.toolbar-button {
    padding: 0;
    line-height: 55px;
    padding-right: 110px;
    button {
      margin-right: 0px;
      margin-bottom: 0px;
    }
  }
  .ant-modal-mask {
@@ -25,6 +28,7 @@
  }
  .main-table-box {
    position: relative;
    min-height: 50px;
    .main-pickup {
      position: absolute;
      right: 5px;
src/tabviews/zshare/mutilform/index.jsx
@@ -737,7 +737,10 @@
        )
      } else if (item.type === 'text') {
        let _max = item.fieldlength || 50
        let _rules = []
        let _rules = [{
          pattern: /^[^']*$/ig,
          message: formRule.input.quotemsg
        }]
        if (item.regular) {
          if (item.regular === 'number') {
            _rules = [{
@@ -1140,6 +1143,13 @@
        // 函数变量字段,默认不显示
      } else if (item.type === 'textarea') {
        let _max = item.fieldlength || 512
        let _rules = []
        if (item.encryption !== 'true') {
          _rules = [{
            pattern: /^[^']*$/ig,
            message: formRule.input.quotemsg
          }]
        }
        fields.push(
          <Col span={24} key={index}>
            <Form.Item label={item.tooltip ?
@@ -1158,7 +1168,8 @@
                  {
                    max: _max,
                    message: formRule.input.formMessage.replace('@max', _max)
                  }
                  },
                  ..._rules
                ]
              })(<TextArea autoSize={{ minRows: 2, maxRows: item.maxRows || 6 }} disabled={item.readonly === 'true'} />)}
            </Form.Item>
src/templates/formtabconfig/dragelement/card.jsx
@@ -136,7 +136,6 @@
                    <Icon type="upload" /> 点击上传
                  </Button> : null
                }
                <div className="input-mask"></div>
              </div>
            </div> : null
          }
src/templates/formtabconfig/index.scss
@@ -224,6 +224,7 @@
                  width: 89%;
                }
                .ant-form-item-control-wrapper {
                  position: relative;
                  .ant-input-number {
                    width: 100%;
                    margin-top: 4px;
@@ -238,20 +239,21 @@
                  .ant-btn {
                    margin-top: 4px;
                  }
                  .input-mask {
                    position: absolute;
                    top: 0;
                    left: 0;
                    right: 0;
                    bottom: 0;
                    opacity: 0;
                    z-index: 2;
                  }
                  .data-range .ant-calendar-picker-input {
                    padding: 4px 20px 4px 5px;
                    font-size: 13px;
                  }
                }
                .ant-form-item-control-wrapper::after {
                  content: '';
                  position: absolute;
                  top: 0;
                  left: 0;
                  right: 0;
                  bottom: 0;
                  opacity: 0;
                  z-index: 1;
                }
              }
            }
            .ant-calendar-picker {
src/templates/modalconfig/dragelement/card.jsx
@@ -146,7 +146,6 @@
            <div className={'ant-col ant-form-item-control-wrapper ant-col-xs-24 ' + wrapCol}>
              {formItem}
              {showField ? card.field : ''}
              <div className="input-mask"></div>
            </div>
          </div>}
        </div>
src/templates/modalconfig/index.scss
@@ -217,6 +217,7 @@
              }
            }
            .ant-form-item-control-wrapper {
              position: relative;
              .ant-select {
                width: 100%;
                margin-top: 4px;
@@ -241,15 +242,16 @@
                width: 100%;
                margin-top: 4px;
              }
              .input-mask {
                position: absolute;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                opacity: 0;
                z-index: 1;
              }
            }
            .ant-form-item-control-wrapper::after {
              content: '';
              position: absolute;
              top: 0;
              left: 0;
              right: 0;
              bottom: 0;
              opacity: 0;
              z-index: 1;
            }
            .ant-col-cuslabel {
              width: 10.5%;
src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx
@@ -96,7 +96,6 @@
                /> : null
              }
              {card.type === 'group' ? <DateGroup card={card} /> : null }
              <div className="input-mask"></div>
            </div>
          </div>
        </div>
src/templates/sharecomponent/searchcomponent/index.scss
@@ -47,20 +47,22 @@
        .ant-calendar-picker {
          margin-top: 4px;
        }
        .input-mask {
          position: absolute;
          top: 0;
          left: 0;
          right: 0;
          bottom: 0;
          opacity: 0;
          z-index: 2;
        }
        .data-range .ant-calendar-picker-input {
          padding: 4px 20px 4px 5px;
          font-size: 13px;
        }
      }
      .ant-form-item-control-wrapper::after {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        opacity: 0;
        z-index: 2;
      }
    }
    .edit {
      position: absolute;
src/utils/option.js
@@ -18,6 +18,7 @@
    numbermsg: '请输入数字!',
    lettermsg: '请输入字母!',
    letternummsg: '请输入数字或字母!',
    quotemsg: '不可使用英文状态的单引号!',
    funcname: '请输入数字、字母、汉字以及_'
  },
  field: { // 字段名
src/views/menudesign/index.jsx
@@ -202,6 +202,10 @@
            traversal(tab.components)
          })
        } else if (item.type === 'card' || (item.type === 'table' && item.subtype === 'tablecard')) {
          item.action && item.action.forEach(btn => {
            buttons.push(`select '${btn.uuid}' as menuid, '${item.name + '-' + btn.label}' as menuname, '${_sort * 10}' as Sort`)
            _sort++
          })
          item.subcards.forEach(card => {
            card.elements && card.elements.forEach(cell => {
              if (cell.eleType !== 'button') return
src/views/menudesign/index.scss
@@ -22,6 +22,7 @@
      overflow-y: auto;
      > .ant-collapse {
        background-color: #ffffff;
        .ant-collapse-item.ant-collapse-item-active {
          border-bottom: 1px solid #d9d9d9;
        }