king
2023-05-29 cf903a5b0095d11609864e470723aaa11c4dc17f
2023-05-29
17个文件已修改
591 ■■■■ 已修改文件
src/api/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/base-table/columns/index.jsx 138 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/edit-table/columns/index.jsx 144 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/edit-table/columns/tableIn/index.jsx 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/normal-table/columns/index.jsx 138 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/basetable/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/table/edit-table/normalTable/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/index.jsx 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/popview/index.jsx 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/mutilform/index.jsx 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/sharecomponent/actioncomponent/verifyexcelout/customscript/index.jsx 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/menudesign/index.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mobdesign/index.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/pcdesign/index.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tabledesign/index.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/index.js
@@ -48,7 +48,7 @@
axios.interceptors.response.use((response) => {
  if (response.data.ErrCode === 'LoginError') {
    if (window.debugger === true) {
    if (window.debugger === true || window.GLOB.saving) {
      response.data.ErrCode = 'E'
      return Promise.resolve(response.data)
    } else if (!sessionStorage.getItem('loginError')) {
src/menu/components/table/base-table/columns/index.jsx
@@ -51,68 +51,40 @@
  }
  render() {
    const { connectDragSource, connectDropTarget, moveCol, addElement, dropCol, updateCol, editColumn, pasteCell, changeStyle, deleteCol, index, column, align, fields, children, ...restProps } = this.props
    const { connectDragSource, connectDropTarget, moveCol, componentId, addElement, dropCol, updateCol, editColumn, pasteCell, changeStyle, deleteCol, index, column, align, fields, children, ...restProps } = this.props
    if (index !== undefined && column) {
      let style = {cursor: 'move', textAlign: align}
      if (column.Width) {
        style.width = column.Width
        style.minWidth = column.Width
      }
    if (!column) return (
      <th {...restProps}>{children}</th>
    )
      if (window.GLOB.columnId === column.uuid) {
        style.color = '#1890ff'
      }
      return connectDragSource(
        connectDropTarget(<th {...restProps} index={index} style={style} onDoubleClick={() => this.props.editColumn(column)}>
          <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
            <div className="mk-popover-control" onDoubleClick={(e) => e.stopPropagation()}>
              {column.type === 'colspan' ? <PlusOutlined className="plus" title="添加列" onClick={() => this.props.addElement(column)} /> : null}
              {column.type === 'custom' ? <PlusOutlined className="plus" title="添加元素" onClick={() => this.props.addElement(column)} /> : null}
              {column.type === 'custom' ? <PlusSquareOutlined className="plus" title="添加按钮" onClick={() => this.props.addElement(column, 'button')} /> : null}
              <EditOutlined className="edit" title="编辑" onClick={() => this.props.editColumn(column)} />
              {column.type === 'custom' ? <PasteComponent options={['customCardElement', 'action']} updateConfig={(res, resolve) => this.props.pasteCell(column, res, resolve)} /> : null}
              {column.type === 'custom' ? <FontColorsOutlined className="style" title="调整样式" onClick={() => this.props.changeStyle(column)}/> : null}
              <DeleteOutlined className="close" title="删除" onClick={this.deleteCol} />
              {['text', 'number', 'formula'].includes(column.type) ? <MarkColumn field={column.field || ''} columns={fields} marks={column.marks} onSubmit={this.updateMarks} /> : null }
            </div>
          } trigger="hover">
            {children}
          </Popover>
        </th>),
      )
    } else if (column) {
      let style = {textAlign: align}
      if (column.Width) {
        style.width = column.Width
        style.minWidth = column.Width
      }
      if (window.GLOB.columnId === column.uuid) {
        style.color = '#1890ff'
      }
      return (
        <th {...restProps} style={style} key={column.uuid} onDoubleClick={() => this.props.editColumn(column)}>
          <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
            <div className="mk-popover-control" onDoubleClick={(e) => e.stopPropagation()}>
              {column.type === 'colspan' ? <PlusOutlined className="plus" title="添加列" onClick={() => this.props.addElement(column)} /> : null}
              {column.type === 'custom' ? <PlusOutlined className="plus" title="添加元素" onClick={() => this.props.addElement(column)} /> : null}
              {column.type === 'custom' ? <PlusSquareOutlined className="plus" title="添加按钮" onClick={() => this.props.addElement(column, 'button')} /> : null}
              <EditOutlined className="edit" title="编辑" onClick={() => this.props.editColumn(column)} />
              {column.type === 'custom' ? <PasteComponent options={['customCardElement', 'action']} updateConfig={(res, resolve) => this.props.pasteCell(column, res, resolve)} /> : null}
              <DeleteOutlined className="close" title="删除" onClick={this.deleteCol} />
              {['text', 'number', 'formula'].includes(column.type) ? <MarkColumn field={column.field || ''} columns={fields} marks={column.marks} onSubmit={this.updateMarks} /> : null }
            </div>
          } trigger="hover">
            {children}
          </Popover>
        </th>
      )
    } else {
      return (<th {...restProps}>{children}</th>)
    let style = {cursor: 'move', textAlign: align}
    if (column.Width) {
      style.width = column.Width
      style.minWidth = column.Width
    }
    if (window.GLOB.columnId === column.uuid) {
      style.color = '#1890ff'
    }
    return connectDragSource(
      connectDropTarget(<th {...restProps} index={index} style={style} onDoubleClick={() => this.props.editColumn(column)}>
        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
          <div className="mk-popover-control" onDoubleClick={(e) => e.stopPropagation()}>
            {column.type === 'colspan' ? <PlusOutlined className="plus" title="添加列" onClick={() => this.props.addElement(column)} /> : null}
            {column.type === 'custom' ? <PlusOutlined className="plus" title="添加元素" onClick={() => this.props.addElement(column)} /> : null}
            {column.type === 'custom' ? <PlusSquareOutlined className="plus" title="添加按钮" onClick={() => this.props.addElement(column, 'button')} /> : null}
            <EditOutlined className="edit" title="编辑" onClick={() => this.props.editColumn(column)} />
            {column.type === 'custom' ? <PasteComponent options={['customCardElement', 'action']} updateConfig={(res, resolve) => this.props.pasteCell(column, res, resolve)} /> : null}
            {column.type === 'custom' ? <FontColorsOutlined className="style" title="调整样式" onClick={() => this.props.changeStyle(column)}/> : null}
            <DeleteOutlined className="close" title="删除" onClick={this.deleteCol} />
            {['text', 'number', 'formula'].includes(column.type) ? <MarkColumn field={column.field || ''} columns={fields} marks={column.marks} onSubmit={this.updateMarks} /> : null }
          </div>
        } trigger="hover">
          {children}
        </Popover>
      </th>),
    )
  }
}
@@ -127,17 +99,28 @@
const ColTarget = {
  drop(props, monitor) {
    const item = monitor.getItem()
    const dragIndex = item.index
    const hoverIndex = props.index
    let dragIndex = item.index
    let hoverIndex = props.index
    if (item.$init) {
      props.dropCol(item, hoverIndex)
      if (/sub_/.test(hoverIndex)) {
        message.warning('合并列子元素暂不支持拖拽添加。')
      } else {
        props.dropCol(item, hoverIndex.replace(new RegExp(props.componentId + '@', 'ig'), ''))
      }
      return
    } else if (dragIndex === undefined || hoverIndex === undefined || dragIndex === hoverIndex) {
      return
    } else {
      let reg = new RegExp(props.componentId + '@', 'ig')
      if (reg.test(dragIndex)) {
        props.moveCol(dragIndex.replace(reg, ''), hoverIndex.replace(reg, ''))
      } else {
        message.warning('拖动元素不在当前组件中。')
        return
      }
    }
    props.moveCol(dragIndex, hoverIndex)
    monitor.getItem().index = hoverIndex
  },
}
@@ -304,12 +287,32 @@
  moveCol = (dragIndex, hoverIndex) => {
    let _columns = fromJS(this.state.columns).toJS()
    _columns.splice(hoverIndex, 0, ..._columns.splice(dragIndex, 1))
    if (/^sub_/.test(dragIndex) || /^sub_/.test(hoverIndex)) {
      let sign1 = dragIndex.split('_')
      let sign2 = hoverIndex.split('_')
      if (sign1[1] !== sign2[1]) {
        message.warning('拖动元素不在同一个合并列中。')
        return
      }
      this.loopMoveCol(_columns, sign1[1], sign1[2], sign2[2])
    } else {
      _columns.splice(hoverIndex, 0, ..._columns.splice(dragIndex, 1))
    }
    this.setState({
      columns: _columns
    }, () => {
      this.props.updatecolumn({...this.props.config, cols: _columns})
    })
  }
  loopMoveCol = (columns, colId, dragIndex, hoverIndex) => {
    columns.forEach(column => {
      if (column.type === 'colspan' && column.uuid === colId) {
        column.subcols.splice(hoverIndex, 0, ...column.subcols.splice(dragIndex, 1))
      } else if (column.type === 'colspan') {
        this.loopMoveCol(column.subcols, colId, dragIndex, hoverIndex)
      }
    })
  }
@@ -554,7 +557,7 @@
    document.body.removeChild(oInput)
  }
  handlecolumns = (columns, fields, config, isSub) => {
  handlecolumns = (columns, fields, config, pId) => {
    return columns.map((col, index) => {
      return {
        title: col.label,
@@ -568,8 +571,9 @@
          upComponent: this.updateCol
        }),
        onHeaderCell: () => ({
          index: isSub ? undefined : index,
          index: pId ? config.uuid + '@sub_' + pId + '_' + index : config.uuid + '@' + index,
          column: col,
          componentId: config.uuid,
          fields: fields,
          align: col.Align,
          moveCol: this.moveCol,
@@ -581,7 +585,7 @@
          changeStyle: this.changeStyle,
          deleteCol: this.deleteCol,
        }),
        children: col.subcols && col.subcols.length ? this.handlecolumns(col.subcols, fields, config, true) : null,
        children: col.subcols && col.subcols.length ? this.handlecolumns(col.subcols, fields, config, col.uuid) : null,
      }
    })
  }
src/menu/components/table/edit-table/columns/index.jsx
@@ -52,71 +52,40 @@
  }
  render() {
    const { connectDragSource, connectDropTarget, moveCol, dropCol, addElement, updateCol, editColumn, pasteCell, changeStyle, deleteCol, index, column, align, fields, children, ...restProps } = this.props
    const { connectDragSource, connectDropTarget, moveCol, componentId, dropCol, addElement, updateCol, editColumn, pasteCell, changeStyle, deleteCol, index, column, align, fields, children, ...restProps } = this.props
    if (!column) return (
      <th {...restProps} index={index}>
        {children}
      </th>
      <th {...restProps}>{children}</th>
    )
    if (index !== undefined) {
      let style = {cursor: 'move', textAlign: align}
      if (column.Width) {
        style.width = column.Width
        style.minWidth = column.Width
      }
      if (window.GLOB.columnId === column.uuid) {
        style.color = '#1890ff'
      }
      return connectDragSource(
        connectDropTarget(<th {...restProps} index={index} style={style} onDoubleClick={() => this.props.editColumn(column)}>
          <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
            <div className="mk-popover-control" onDoubleClick={(e) => e.stopPropagation()}>
              {column.type === 'colspan' ? <PlusOutlined className="plus" title="添加列" onClick={() => this.props.addElement(column)} /> : null}
              {column.type === 'custom' ? <PlusOutlined className="plus" title="添加元素" onClick={() => this.props.addElement(column)} /> : null}
              {column.type === 'custom' ? <PlusSquareOutlined className="plus" title="添加按钮" onClick={() => this.props.addElement(column, 'button')} /> : null}
              <EditOutlined className="edit" title="编辑" onClick={() => this.props.editColumn(column)} />
              {column.type === 'custom' ? <PasteComponent options={['customCardElement', 'action']} updateConfig={(res, resolve) => this.props.pasteCell(column, res, resolve)} /> : null}
              {column.type === 'custom' ? <FontColorsOutlined className="style" title="调整样式" onClick={() => this.props.changeStyle(column)}/> : null}
              <DeleteOutlined className="close" title="删除" onClick={this.deleteCol} />
              {['text', 'number', 'formula'].includes(column.type) ? <MarkColumn field={column.field || ''} columns={fields} marks={column.marks} onSubmit={this.updateMarks} /> : null }
            </div>
          } trigger="hover">
            {children}
          </Popover>
        </th>),
      )
    } else if (column) {
      let style = {textAlign: align}
      if (column.Width) {
        style.width = column.Width
        style.minWidth = column.Width
      }
      if (window.GLOB.columnId === column.uuid) {
        style.color = '#1890ff'
      }
      return (
        <th {...restProps} style={style} key={column.uuid} onDoubleClick={() => this.props.editColumn(column)}>
          <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
            <div className="mk-popover-control" onDoubleClick={(e) => e.stopPropagation()}>
              {column.type === 'colspan' ? <PlusOutlined className="plus" title="添加列" onClick={() => this.props.addElement(column)} /> : null}
              {column.type === 'custom' ? <PlusOutlined className="plus" title="添加元素" onClick={() => this.props.addElement(column)} /> : null}
              {column.type === 'custom' ? <PlusSquareOutlined className="plus" title="添加按钮" onClick={() => this.props.addElement(column, 'button')} /> : null}
              <EditOutlined className="edit" title="编辑" onClick={() => this.props.editColumn(column)} />
              {column.type === 'custom' ? <PasteComponent options={['customCardElement', 'action']} updateConfig={(res, resolve) => this.props.pasteCell(column, res, resolve)} /> : null}
              <DeleteOutlined className="close" title="删除" onClick={this.deleteCol} />
              {['text', 'number', 'formula'].includes(column.type) ? <MarkColumn field={column.field || ''} columns={fields} marks={column.marks} onSubmit={this.updateMarks} /> : null }
            </div>
          } trigger="hover">
            {children}
          </Popover>
        </th>
      )
    let style = {cursor: 'move', textAlign: align}
    if (column.Width) {
      style.width = column.Width
      style.minWidth = column.Width
    }
    if (window.GLOB.columnId === column.uuid) {
      style.color = '#1890ff'
    }
    return connectDragSource(
      connectDropTarget(<th {...restProps} index={index} style={style} onDoubleClick={() => this.props.editColumn(column)}>
        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
          <div className="mk-popover-control" onDoubleClick={(e) => e.stopPropagation()}>
            {column.type === 'colspan' ? <PlusOutlined className="plus" title="添加列" onClick={() => this.props.addElement(column)} /> : null}
            {column.type === 'custom' ? <PlusOutlined className="plus" title="添加元素" onClick={() => this.props.addElement(column)} /> : null}
            {column.type === 'custom' ? <PlusSquareOutlined className="plus" title="添加按钮" onClick={() => this.props.addElement(column, 'button')} /> : null}
            <EditOutlined className="edit" title="编辑" onClick={() => this.props.editColumn(column)} />
            {column.type === 'custom' ? <PasteComponent options={['customCardElement', 'action']} updateConfig={(res, resolve) => this.props.pasteCell(column, res, resolve)} /> : null}
            {column.type === 'custom' ? <FontColorsOutlined className="style" title="调整样式" onClick={() => this.props.changeStyle(column)}/> : null}
            <DeleteOutlined className="close" title="删除" onClick={this.deleteCol} />
            {['text', 'number', 'formula'].includes(column.type) ? <MarkColumn field={column.field || ''} columns={fields} marks={column.marks} onSubmit={this.updateMarks} /> : null }
          </div>
        } trigger="hover">
          {children}
        </Popover>
      </th>),
    )
  }
}
@@ -131,17 +100,28 @@
const ColTarget = {
  drop(props, monitor) {
    const item = monitor.getItem()
    const dragIndex = item.index
    const hoverIndex = props.index
    let dragIndex = item.index
    let hoverIndex = props.index
    if (item.$init) {
      props.dropCol(item, hoverIndex)
      if (/sub_/.test(hoverIndex)) {
        message.warning('合并列子元素暂不支持拖拽添加。')
      } else {
        props.dropCol(item, hoverIndex.replace(new RegExp(props.componentId + '@', 'ig'), ''))
      }
      return
    } else if (dragIndex === undefined || hoverIndex === undefined || dragIndex === hoverIndex) {
      return
    } else {
      let reg = new RegExp(props.componentId + '@', 'ig')
      if (reg.test(dragIndex)) {
        props.moveCol(dragIndex.replace(reg, ''), hoverIndex.replace(reg, ''))
      } else {
        message.warning('拖动元素不在当前组件中。')
        return
      }
    }
    props.moveCol(dragIndex, hoverIndex)
    monitor.getItem().index = hoverIndex
  },
}
@@ -281,12 +261,32 @@
  moveCol = (dragIndex, hoverIndex) => {
    let _columns = fromJS(this.state.columns).toJS()
    _columns.splice(hoverIndex, 0, ..._columns.splice(dragIndex, 1))
    if (/^sub_/.test(dragIndex) || /^sub_/.test(hoverIndex)) {
      let sign1 = dragIndex.split('_')
      let sign2 = hoverIndex.split('_')
      if (sign1[1] !== sign2[1]) {
        message.warning('拖动元素不在同一个合并列中。')
        return
      }
      this.loopMoveCol(_columns, sign1[1], sign1[2], sign2[2])
    } else {
      _columns.splice(hoverIndex, 0, ..._columns.splice(dragIndex, 1))
    }
    this.setState({
      columns: _columns
    }, () => {
      this.props.updatecolumn({...this.props.config, cols: _columns})
    })
  }
  loopMoveCol = (columns, colId, dragIndex, hoverIndex) => {
    columns.forEach(column => {
      if (column.type === 'colspan' && column.uuid === colId) {
        column.subcols.splice(hoverIndex, 0, ...column.subcols.splice(dragIndex, 1))
      } else if (column.type === 'colspan') {
        this.loopMoveCol(column.subcols, colId, dragIndex, hoverIndex)
      }
    })
  }
@@ -624,7 +624,7 @@
    MKEmitter.removeListener('submitStyle', this.getStyle)
  }
  handlecolumns = (columns, fields, config, isSub) => {
  handlecolumns = (columns, fields, config, pId) => {
    return columns.map((col, index) => {
      let title = col.label
      if (col.editable === 'true') {
@@ -643,8 +643,9 @@
          upComponent: this.updateCol
        }),
        onHeaderCell: () => ({
          index: isSub ? undefined : index,
          index: pId ? config.uuid + '@sub_' + pId + '_' + index : config.uuid + '@' + index,
          column: col,
          componentId: config.uuid,
          fields: fields,
          align: col.Align,
          moveCol: this.moveCol,
@@ -656,7 +657,7 @@
          changeStyle: this.changeStyle,
          deleteCol: this.deleteCol,
        }),
        children: col.subcols && col.subcols.length ? this.handlecolumns(col.subcols, fields, config, true) : null,
        children: col.subcols && col.subcols.length ? this.handlecolumns(col.subcols, fields, config, col.uuid) : null,
      }
    })
  }
@@ -728,10 +729,7 @@
          destroyOnClose
        >
          <TableVerify
            card={config.submit}
            setting={config.setting}
            cols={config.cols}
            columns={config.columns}
            config={config}
            wrappedComponentRef={(inst) => this.verifyRef = inst}
          />
        </Modal>
src/menu/components/table/edit-table/columns/tableIn/index.jsx
@@ -1,13 +1,14 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { fromJS } from 'immutable'
import { Form, Tabs, Row, Col, Input, Button, Popconfirm, notification, Modal, message, InputNumber, Radio, Typography } from 'antd'
import { StopTwoTone, CheckCircleTwoTone, EditOutlined, SwapOutlined, DeleteOutlined } from '@ant-design/icons'
import { Form, Tabs, Row, Col, Input, Button, Popconfirm, notification, Modal, message, Cascader, Tooltip, InputNumber, Radio, Typography } from 'antd'
import { StopTwoTone, CheckCircleTwoTone, EditOutlined, SwapOutlined, DeleteOutlined, QuestionCircleOutlined } from '@ant-design/icons'
import moment from 'moment'
import Api from '@/api'
import Utils from '@/utils/utils.js'
import MKEmitter from '@/utils/events.js'
import MenuUtils from '@/utils/utils-custom.js'
import UniqueForm from './uniqueform'
import CustomScript from './customscript'
import asyncComponent from '@/utils/asyncComponent'
@@ -28,6 +29,7 @@
  state = {
    verify: {},
    fields: [],
    modules: [],
    fieldLabel: {},
    systemScripts: [],
    activeKey: 'basemsg',
@@ -175,27 +177,32 @@
  }
  UNSAFE_componentWillMount() {
    const { columns, card, setting } = this.props
    let _verify = fromJS(card).toJS()
    const { columns, submit, setting, uuid } = this.props.config
    let _verify = fromJS(submit).toJS()
    _verify.sheet = _verify.sheet || setting.tableName
    let fieldLabel = {}
    // let _columns = []
    // let _fields = {}
    columns.forEach(col => {
      fieldLabel[col.field] = col.label
      // _fields[col.field] = col
    })
    // cols.forEach(col => {
    //   if (!col.field || col.type === 'index' || !_fields[col.field]) return
    //   _columns.push(_fields[col.field])
    // })
    let supId = ''
    if (setting && setting.supModule) {
      let pid = setting.supModule[setting.supModule.length - 1]
      if (pid && pid !== 'empty') {
        supId = pid
      } else {
        supId = ''
      }
    }
    let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, uuid, supId)
    this.setState({
      fields: fromJS(columns).toJS().filter(item => item.field !== setting.primaryKey),
      fieldLabel,
      modules: modules,
      verify: _verify
    }, () => {
      this.resetUniqueColumns()
@@ -491,7 +498,7 @@
  }
  render() {
    const { verify, scriptsColumns, uniqueColumns, activeKey, fields } = this.state
    const { verify, scriptsColumns, uniqueColumns, activeKey, fields, modules } = this.state
    const formItemLayout = {
      labelCol: {
        xs: { span: 24 },
@@ -562,6 +569,16 @@
                    </Radio.Group>
                  </Form.Item>
                </Col> : null}
                <Col span={8}>
                  <Form.Item label={
                    <Tooltip placement="topLeft" title="执行成功后(或弹窗标签关闭时),需要同步刷新的组件。注:选择当前组件的上级组件无效,刷新上级组件请选择成功后“上级(行)”。">
                      <QuestionCircleOutlined className="mk-form-tip" />
                      刷新组件
                    </Tooltip>
                  }>
                    <Cascader options={modules} value={verify.syncComponent || []} expandTrigger="hover" allowClear placeholder="" onChange={(val) => this.onOptionChange(val, 'syncComponent')}/>
                  </Form.Item>
                </Col>
              </Row>
            </Form>
          </TabPane>
src/menu/components/table/normal-table/columns/index.jsx
@@ -52,68 +52,40 @@
  }
  render() {
    const { connectDragSource, connectDropTarget, moveCol, dropCol, addElement, updateCol, editColumn, pasteCell, changeStyle, deleteCol, index, column, align, fields, children, ...restProps } = this.props
    const { connectDragSource, connectDropTarget, moveCol, componentId, dropCol, addElement, updateCol, editColumn, pasteCell, changeStyle, deleteCol, index, column, align, fields, children, ...restProps } = this.props
    if (index !== undefined && column) {
      let style = {cursor: 'move', textAlign: align}
      if (column.Width) {
        style.width = column.Width
        style.minWidth = column.Width
      }
    if (!column) return (
      <th {...restProps}>{children}</th>
    )
      if (window.GLOB.columnId === column.uuid) {
        style.color = '#1890ff'
      }
      return connectDragSource(
        connectDropTarget(<th {...restProps} index={index} style={style} onDoubleClick={() => this.props.editColumn(column)}>
          <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
            <div className="mk-popover-control" onDoubleClick={(e) => e.stopPropagation()}>
              {column.type === 'colspan' ? <PlusOutlined className="plus" title="添加列" onClick={() => this.props.addElement(column)} /> : null}
              {column.type === 'custom' ? <PlusOutlined className="plus" title="添加元素" onClick={() => this.props.addElement(column)} /> : null}
              {column.type === 'custom' ? <PlusSquareOutlined className="plus" title="添加按钮" onClick={() => this.props.addElement(column, 'button')} /> : null}
              <EditOutlined className="edit" title="编辑" onClick={() => this.props.editColumn(column)} />
              {column.type === 'custom' ? <PasteComponent options={['customCardElement', 'action']} updateConfig={(res, resolve) => this.props.pasteCell(column, res, resolve)} /> : null}
              {column.type === 'custom' ? <FontColorsOutlined className="style" title="调整样式" onClick={() => this.props.changeStyle(column)}/> : null}
              <DeleteOutlined className="close" title="删除" onClick={this.deleteCol} />
              {['text', 'number', 'formula'].includes(column.type) ? <MarkColumn field={column.field || ''} columns={fields} marks={column.marks} onSubmit={this.updateMarks} /> : null }
            </div>
          } trigger="hover">
            {children}
          </Popover>
        </th>),
      )
    } else if (column) {
      let style = {textAlign: align}
      if (column.Width) {
        style.width = column.Width
        style.minWidth = column.Width
      }
      if (window.GLOB.columnId === column.uuid) {
        style.color = '#1890ff'
      }
      return (
        <th {...restProps} style={style} key={column.uuid} onDoubleClick={() => this.props.editColumn(column)}>
          <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
            <div className="mk-popover-control" onDoubleClick={(e) => e.stopPropagation()}>
              {column.type === 'colspan' ? <PlusOutlined className="plus" title="添加列" onClick={() => this.props.addElement(column)} /> : null}
              {column.type === 'custom' ? <PlusOutlined className="plus" title="添加元素" onClick={() => this.props.addElement(column)} /> : null}
              {column.type === 'custom' ? <PlusSquareOutlined className="plus" title="添加按钮" onClick={() => this.props.addElement(column, 'button')} /> : null}
              <EditOutlined className="edit" title="编辑" onClick={() => this.props.editColumn(column)} />
              {column.type === 'custom' ? <PasteComponent options={['customCardElement', 'action']} updateConfig={(res, resolve) => this.props.pasteCell(column, res, resolve)} /> : null}
              <DeleteOutlined className="close" title="删除" onClick={this.deleteCol} />
              {['text', 'number', 'formula'].includes(column.type) ? <MarkColumn field={column.field || ''} columns={fields} marks={column.marks} onSubmit={this.updateMarks} /> : null }
            </div>
          } trigger="hover">
            {children}
          </Popover>
        </th>
      )
    } else {
      return (<th {...restProps}>{children}</th>)
    let style = {cursor: 'move', textAlign: align}
    if (column.Width) {
      style.width = column.Width
      style.minWidth = column.Width
    }
    if (window.GLOB.columnId === column.uuid) {
      style.color = '#1890ff'
    }
    return connectDragSource(
      connectDropTarget(<th {...restProps} index={index} style={style} onDoubleClick={() => this.props.editColumn(column)}>
        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
          <div className="mk-popover-control" onDoubleClick={(e) => e.stopPropagation()}>
            {column.type === 'colspan' ? <PlusOutlined className="plus" title="添加列" onClick={() => this.props.addElement(column)} /> : null}
            {column.type === 'custom' ? <PlusOutlined className="plus" title="添加元素" onClick={() => this.props.addElement(column)} /> : null}
            {column.type === 'custom' ? <PlusSquareOutlined className="plus" title="添加按钮" onClick={() => this.props.addElement(column, 'button')} /> : null}
            <EditOutlined className="edit" title="编辑" onClick={() => this.props.editColumn(column)} />
            {column.type === 'custom' ? <PasteComponent options={['customCardElement', 'action']} updateConfig={(res, resolve) => this.props.pasteCell(column, res, resolve)} /> : null}
            {column.type === 'custom' ? <FontColorsOutlined className="style" title="调整样式" onClick={() => this.props.changeStyle(column)}/> : null}
            <DeleteOutlined className="close" title="删除" onClick={this.deleteCol} />
            {['text', 'number', 'formula'].includes(column.type) ? <MarkColumn field={column.field || ''} columns={fields} marks={column.marks} onSubmit={this.updateMarks} /> : null }
          </div>
        } trigger="hover">
          {children}
        </Popover>
      </th>),
    )
  }
}
@@ -128,17 +100,28 @@
const ColTarget = {
  drop(props, monitor) {
    const item = monitor.getItem()
    const dragIndex = item.index
    const hoverIndex = props.index
    let dragIndex = item.index
    let hoverIndex = props.index
    if (item.$init) {
      props.dropCol(item, hoverIndex)
      if (/sub_/.test(hoverIndex)) {
        message.warning('合并列子元素暂不支持拖拽添加。')
      } else {
        props.dropCol(item, hoverIndex.replace(new RegExp(props.componentId + '@', 'ig'), ''))
      }
      return
    } else if (dragIndex === undefined || hoverIndex === undefined || dragIndex === hoverIndex) {
      return
    } else {
      let reg = new RegExp(props.componentId + '@', 'ig')
      if (reg.test(dragIndex)) {
        props.moveCol(dragIndex.replace(reg, ''), hoverIndex.replace(reg, ''))
      } else {
        message.warning('拖动元素不在当前组件中。')
        return
      }
    }
    props.moveCol(dragIndex, hoverIndex)
    monitor.getItem().index = hoverIndex
  },
}
@@ -278,12 +261,32 @@
  moveCol = (dragIndex, hoverIndex) => {
    let _columns = fromJS(this.state.columns).toJS()
    _columns.splice(hoverIndex, 0, ..._columns.splice(dragIndex, 1))
    if (/^sub_/.test(dragIndex) || /^sub_/.test(hoverIndex)) {
      let sign1 = dragIndex.split('_')
      let sign2 = hoverIndex.split('_')
      if (sign1[1] !== sign2[1]) {
        message.warning('拖动元素不在同一个合并列中。')
        return
      }
      this.loopMoveCol(_columns, sign1[1], sign1[2], sign2[2])
    } else {
      _columns.splice(hoverIndex, 0, ..._columns.splice(dragIndex, 1))
    }
    this.setState({
      columns: _columns
    }, () => {
      this.props.updatecolumn({...this.props.config, cols: _columns})
    })
  }
  loopMoveCol = (columns, colId, dragIndex, hoverIndex) => {
    columns.forEach(column => {
      if (column.type === 'colspan' && column.uuid === colId) {
        column.subcols.splice(hoverIndex, 0, ...column.subcols.splice(dragIndex, 1))
      } else if (column.type === 'colspan') {
        this.loopMoveCol(column.subcols, colId, dragIndex, hoverIndex)
      }
    })
  }
@@ -507,7 +510,7 @@
    document.body.removeChild(oInput)
  }
  handlecolumns = (columns, fields, config, isSub) => {
  handlecolumns = (columns, fields, config, pId) => {
    return columns.map((col, index) => {
      return {
        title: col.label,
@@ -521,8 +524,9 @@
          upComponent: this.updateCol
        }),
        onHeaderCell: () => ({
          index: isSub ? undefined : index,
          index: pId ? config.uuid + '@sub_' + pId + '_' + index : config.uuid + '@' + index,
          column: col,
          componentId: config.uuid,
          fields: fields,
          align: col.Align,
          moveCol: this.moveCol,
@@ -534,7 +538,7 @@
          changeStyle: this.changeStyle,
          deleteCol: this.deleteCol,
        }),
        children: col.subcols && col.subcols.length ? this.handlecolumns(col.subcols, fields, config, true) : null,
        children: col.subcols && col.subcols.length ? this.handlecolumns(col.subcols, fields, config, col.uuid) : null,
      }
    })
  }
src/tabviews/basetable/index.jsx
@@ -348,7 +348,7 @@
                cell.$MenuID = this.props.MenuID
                cell.$view = 'popview'
                if (cell.syncComponentId === item.setting.supModule) {
                if (cell.syncComponentId && cell.syncComponentId === item.setting.supModule) {
                  cell.syncComponentId = ''
                  if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') {
                    cell.execSuccess = 'mainline'
@@ -414,7 +414,7 @@
          cell.$view = 'popview'
          cell.$toolbtn = true
          if (cell.syncComponentId === item.setting.supModule) {
          if (cell.syncComponentId && cell.syncComponentId === item.setting.supModule) {
            cell.syncComponentId = ''
            if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') {
              cell.execSuccess = 'mainline'
src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
@@ -1717,6 +1717,8 @@
    if (submit.execSuccess !== 'never') {
      MKEmitter.emit('refreshByButtonResult', submit.$menuId, submit.execSuccess, submit)
    }
    submit.syncComponentId && MKEmitter.emit('reloadData', submit.syncComponentId)
  }
  execError = (res) => {
src/tabviews/custom/index.jsx
@@ -501,7 +501,7 @@
          cell.$toolbtn = true
          if (!mutil && cell.syncComponentId === item.setting.supModule) {
          if (!mutil && cell.syncComponentId && cell.syncComponentId === item.setting.supModule) {
            cell.syncComponentId = ''
            if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') {
              cell.execSuccess = 'mainline'
@@ -554,7 +554,7 @@
                  cell = this.resetButton(item, cell, popview)
                  if (cell.syncComponentId === item.setting.supModule) {
                  if (cell.syncComponentId && cell.syncComponentId === item.setting.supModule) {
                    cell.syncComponentId = ''
                    if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') {
                      cell.execSuccess = 'mainline'
@@ -594,6 +594,14 @@
        if (item.subtype === 'editable') {
          item.submit.logLabel = item.$menuname + '-提交'
          item.submit.$menuId = item.uuid
          item.submit.syncComponentId = item.submit.syncComponent ? (item.submit.syncComponent.pop() || '') : ''
          if (item.submit.syncComponentId && item.submit.syncComponentId === item.setting.supModule) {
            item.submit.syncComponentId = ''
            if (item.submit.execSuccess === 'grid') {
              item.submit.execSuccess = 'mainline'
            }
          }
        }
      } else if (item.type === 'card' || item.type === 'carousel' || item.type === 'timeline') {
        item.subcards && item.subcards.forEach(card => {
@@ -610,7 +618,7 @@
              cell = this.resetButton(item, cell, popview)
              if (!mutil && cell.syncComponentId === item.setting.supModule) {
              if (!mutil && cell.syncComponentId && cell.syncComponentId === item.setting.supModule) {
                cell.syncComponentId = ''
                if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') {
                  cell.execSuccess = 'mainline'
@@ -635,7 +643,7 @@
              cell = this.resetButton(item, cell, popview)
              if (!mutil && cell.syncComponentId === item.setting.supModule) {
              if (!mutil && cell.syncComponentId && cell.syncComponentId === item.setting.supModule) {
                cell.syncComponentId = ''
                if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') {
                  cell.execSuccess = 'mainline'
@@ -666,7 +674,7 @@
            cell = this.resetButton(item, cell, popview)
            if (cell.syncComponentId === item.wrap.supModule) {
            if (cell.syncComponentId && cell.syncComponentId === item.wrap.supModule) {
              cell.syncComponentId = ''
              if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') {
                cell.execSuccess = 'mainline'
@@ -696,9 +704,9 @@
            group.subButton.Ot = item.wrap.datatype === 'static' ? 'notRequired' : 'requiredSgl'
          }
          group.subButton.syncComponentId = group.subButton.syncComponent ? group.subButton.syncComponent.pop() : ''
          group.subButton.syncComponentId = group.subButton.syncComponent ? (group.subButton.syncComponent.pop() || '') : ''
          if (group.subButton.syncComponentId === item.setting.supModule) {
          if (group.subButton.syncComponentId && group.subButton.syncComponentId === item.setting.supModule) {
            group.subButton.syncComponentId = ''
            if (group.subButton.execSuccess === 'grid') {
              group.subButton.execSuccess = 'mainline'
src/tabviews/custom/popview/index.jsx
@@ -323,7 +323,7 @@
          cell = this.resetButton(item, cell, Tab)
          cell.$toolbtn = true
          if (!mutil && cell.syncComponentId === item.setting.supModule) {
          if (!mutil && cell.syncComponentId && cell.syncComponentId === item.setting.supModule) {
            cell.syncComponentId = ''
            if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') {
              cell.execSuccess = 'mainline'
@@ -372,7 +372,7 @@
            
                  cell = this.resetButton(item, cell, Tab)
                  if (cell.syncComponentId === item.setting.supModule) {
                  if (cell.syncComponentId && cell.syncComponentId === item.setting.supModule) {
                    cell.syncComponentId = ''
                    if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') {
                      cell.execSuccess = 'mainline'
@@ -407,6 +407,14 @@
        if (item.subtype === 'editable') {
          item.submit.logLabel = item.$menuname + '-提交'
          item.submit.$menuId = item.uuid
          item.submit.syncComponentId = item.submit.syncComponent ? (item.submit.syncComponent.pop() || '') : ''
          if (item.submit.syncComponentId && item.submit.syncComponentId === item.setting.supModule) {
            item.submit.syncComponentId = ''
            if (item.submit.execSuccess === 'grid') {
              item.submit.execSuccess = 'mainline'
            }
          }
        }
      } else if (item.type === 'card' || item.type === 'carousel' || item.type === 'timeline') {
        item.subcards && item.subcards.forEach(card => {
@@ -423,7 +431,7 @@
              cell = this.resetButton(item, cell, Tab)
              if (!mutil && cell.syncComponentId === item.setting.supModule) {
              if (!mutil && cell.syncComponentId && cell.syncComponentId === item.setting.supModule) {
                cell.syncComponentId = ''
                if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') {
                  cell.execSuccess = 'mainline'
@@ -444,7 +452,7 @@
              cell = this.resetButton(item, cell, Tab)
              if (!mutil && cell.syncComponentId === item.setting.supModule) {
              if (!mutil && cell.syncComponentId && cell.syncComponentId === item.setting.supModule) {
                cell.syncComponentId = ''
                if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') {
                  cell.execSuccess = 'mainline'
@@ -471,7 +479,7 @@
            cell = this.resetButton(item, cell, Tab)
            if (cell.syncComponentId === item.wrap.supModule) {
            if (cell.syncComponentId && cell.syncComponentId === item.wrap.supModule) {
              cell.syncComponentId = ''
              if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') {
                cell.execSuccess = 'mainline'
@@ -496,9 +504,9 @@
            group.subButton.Ot = item.wrap.datatype === 'static' ? 'notRequired' : 'requiredSgl'
          }
          group.subButton.syncComponentId = group.subButton.syncComponent ? group.subButton.syncComponent.pop() : ''
          group.subButton.syncComponentId = group.subButton.syncComponent ? (group.subButton.syncComponent.pop() || '') : ''
          if (group.subButton.syncComponentId === item.setting.supModule) {
          if (group.subButton.syncComponentId && group.subButton.syncComponentId === item.setting.supModule) {
            group.subButton.syncComponentId = ''
            if (group.subButton.execSuccess === 'grid') {
              group.subButton.execSuccess = 'mainline'
src/tabviews/zshare/mutilform/index.jsx
@@ -546,9 +546,17 @@
      if (unload) return
      
      if (action.setting && action.setting.focus && fieldMap.has(action.setting.focus)) {
        setTimeout(() => {
          MKEmitter.emit('mkFC', 'focus', fieldMap.get(action.setting.focus).uuid)
        }, 500)
        let focusItem = fieldMap.get(action.setting.focus)
        if (focusItem.type === 'text' || focusItem.type === 'number') {
          setTimeout(() => {
            MKEmitter.emit('mkFC', 'focus', focusItem.uuid)
          }, 50)
        } else {
          setTimeout(() => {
            MKEmitter.emit('mkFC', 'focus', focusItem.uuid)
          }, 500)
        }
      }
      if (deForms.length > 0) {
src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx
@@ -105,6 +105,7 @@
        }
        
        values.uuid = editItem ? editItem.uuid : ''
        values.position = values.position || (editItem ? editItem.position : 'front')
        if (type === 'fullscreen' && editItem) {
          values.status = editItem.status || 'true'
src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
@@ -498,7 +498,7 @@
    })
    if (reset) {
      message.warn('数值类型均为必填。')
      message.warning('数值类型均为必填。')
    }
    this.setState({verify: {...verify, columns}}, () => {
src/templates/sharecomponent/actioncomponent/verifyexcelout/customscript/index.jsx
@@ -114,8 +114,7 @@
    })
    this.props.form.setFieldsValue({
      sql: record.sql,
      // position: record.position || 'back'
      sql: record.sql
    })
  }
@@ -271,43 +270,25 @@
      <Form {...formItemLayout} className="verify-form" id="verify-excelin-custom-scripts">
        <Row gutter={24}>
          <Col span={8}>
            <Form.Item label={'表名'} style={{whiteSpace: 'nowrap', margin: 0}}>
            <Form.Item label="表名" style={{whiteSpace: 'nowrap', margin: 0}}>
              {sheet}
            </Form.Item>
          </Col>
          <Col span={10}>
            <Form.Item label={'报错字段'} style={{margin: 0, whiteSpace: 'nowrap'}}>
            <Form.Item label="报错字段" style={{margin: 0, whiteSpace: 'nowrap'}}>
              ErrorCode(增加后缀NT表示数据不回滚,如ENT、NNT、FNT、NMNT), retmsg
            </Form.Item>
          </Col>
          <Col span={24} className="sqlfield">
            <Form.Item label={'可用字段'}>
            <Form.Item label="可用字段">
              <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'公共值,请按照@xxx@格式使用。'}><span style={{color: '#1890ff'}}>BID, ID, LoginUID, SessionUid, UserID, Appkey, time_id, typename</span></Tooltip>,&nbsp;
              <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'系统变量,系统会定义变量并赋值。'}><span style={{color: '#fa8c16'}}>UserName, FullName, RoleID, mk_departmentcode, mk_organization, mk_user_type, mk_nation, mk_province, mk_city, mk_district, mk_address</span></Tooltip>
              {usefulfields ? <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'搜索条件,请按照@xxx@格式使用。'}>,&nbsp;{usefulfields}</Tooltip> : null}
              {linefields ? <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'表单及行变量,系统会定义变量并赋值。'}>,&nbsp;{linefields}</Tooltip> : null}
            </Form.Item>
          </Col>
          {/* <Col span={8} style={{whiteSpace: 'nowrap'}}>
            <Form.Item style={{marginBottom: 0}} label={
              <Tooltip placement="bottomLeft" title={'自定义脚本与默认sql位置关系。'}>
                <QuestionCircleOutlined className="mk-form-tip" />
                执行位置
              </Tooltip>
            }>
              {getFieldDecorator('position', {
                initialValue: 'front'
              })(
                <Radio.Group>
                  <Radio value="init">初始化</Radio>
                  <Radio value="front">sql前</Radio>
                  <Radio value="back">sql后</Radio>
                </Radio.Group>
              )}
            </Form.Item>
          </Col> */}
          <Col span={8}>
            <Form.Item style={{marginBottom: 0}} label={'快捷添加'}>
            <Form.Item style={{marginBottom: 0}} label="快捷添加">
              <Select
                showSearch
                filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
@@ -337,7 +318,7 @@
            </Button>
          </Col>
          <Col span={24} className="sql">
            <Form.Item label={'sql'}>
            <Form.Item label="sql">
              {getFieldDecorator('sql', {
                initialValue: '',
                rules: [
src/views/menudesign/index.jsx
@@ -854,6 +854,8 @@
      menuloading: true
    })
    window.GLOB.saving = true
    setTimeout(() => {
      let _pass = this.verifyConfig(config)
@@ -1017,6 +1019,8 @@
          menuloading: false
        })
        window.GLOB.saving = false
        if (!res) return
        if (res.status) {
@@ -1041,6 +1045,9 @@
    this.setState({
      menuloading: false
    })
    window.GLOB.saving = false
    if (!error) {
      notification.warning({
        top: 92,
src/views/mobdesign/index.jsx
@@ -1430,6 +1430,8 @@
      menuloading: true
    })
    window.GLOB.saving = true
    setTimeout(() => {
      let _pass = this.verifyConfig(config)
@@ -1687,6 +1689,8 @@
          menuloading: false
        })
        window.GLOB.saving = false
        if (!res) return
        if (res.status) {
@@ -1721,6 +1725,9 @@
    this.setState({
      menuloading: false
    })
    window.GLOB.saving = false
    if (!error) {
      notification.warning({
        top: 92,
src/views/pcdesign/index.jsx
@@ -1169,6 +1169,8 @@
      menuloading: true
    })
    window.GLOB.saving = true
    setTimeout(() => {
      let _pass = this.verifyConfig(config)
@@ -1408,6 +1410,8 @@
          menuloading: false
        })
        window.GLOB.saving = false
        if (!res) return
        if (res.status) {
@@ -1442,6 +1446,9 @@
    this.setState({
      menuloading: false
    })
    window.GLOB.saving = false
    if (!error) {
      notification.warning({
        top: 92,
src/views/tabledesign/index.jsx
@@ -566,6 +566,8 @@
      menuloading: true
    })
    window.GLOB.saving = true
    setTimeout(() => {
      let _pass = this.verifyConfig(config)
@@ -668,6 +670,8 @@
          menuloading: false
        })
        window.GLOB.saving = false
        if (!res) return
        if (res.status) {
@@ -692,6 +696,9 @@
    this.setState({
      menuloading: false
    })
    window.GLOB.saving = false
    if (!error) {
      notification.warning({
        top: 92,