king
2022-01-07 c1f9e05741e64087ebbfa5e1185bfd0beeb4eeb5
2022-01-07
35个文件已修改
298 ■■■■ 已修改文件
src/locales/en-US/model.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/locales/zh-CN/model.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcellcomponent/dragaction/action.jsx 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcellcomponent/elementform/index.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcellcomponent/formconfig.jsx 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcellcomponent/index.jsx 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcellcomponent/index.scss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/edit-table/index.jsx 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/normal-table/columns/editColumn/formconfig.jsx 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/table/normal-table/index.jsx 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/stylecombcontroller/index.jsx 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/stylecontroller/index.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/commontable/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/cardcellList/index.jsx 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/share/normalTable/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/table/edit-table/normalTable/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/table/normal-table/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/tree/antd-tree/index.jsx 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/index.jsx 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/subtable/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/subtabtable/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/changeuserbutton/index.jsx 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/excelInbutton/index.jsx 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/exceloutbutton/index.jsx 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/newpagebutton/index.jsx 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/normalbutton/index.jsx 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/popupbutton/index.jsx 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/printbutton/index.jsx 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/tabbutton/index.jsx 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/normalTable/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/zshare/formconfig.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/menudesign/index.jsx 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/pcdesign/index.jsx 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/locales/en-US/model.js
@@ -108,7 +108,6 @@
  'header.form.initval': 'Initial Value',
  'header.form.decimal': '小数位',
  'header.form.format': '格式化',
  'header.form.thdSeparator': '千分位',
  'header.form.prefix': '前缀',
  'header.form.postfix': '后缀',
  'header.form.isRequired': '行设置',
src/locales/zh-CN/model.js
@@ -108,7 +108,6 @@
  'header.form.initval': '初始值',
  'header.form.decimal': '小数位',
  'header.form.format': '格式化',
  'header.form.thdSeparator': '千分位',
  'header.form.prefix': '前缀',
  'header.form.postfix': '后缀',
  'header.form.isRequired': '行设置',
src/menu/components/card/cardcellcomponent/dragaction/action.jsx
@@ -40,6 +40,7 @@
  let btnElement = null
  let _style = resetStyle(card.style)
  if (card.OpenType === 'form') {
    if (card.formType === 'switch') {
      btnElement = (<Switch style={_style} size={card.size} checkedChildren={card.openText || ''} unCheckedChildren={card.closeText || ''}/>)
@@ -65,7 +66,7 @@
      </div>
    } trigger="hover">
      <div ref={node => drag(drop(node))} className={'ant-col card-button-cell ant-col-' + card.width} onDoubleClick={(e) => {e.stopPropagation(); doubleClickCard(id)}}>
        <div style={{opacity: isDragging ? 0 : 1}}>
        <div style={{opacity: isDragging ? 0 : 1, ...card.wrapStyle}}>
          {btnElement}
        </div>
      </div>
src/menu/components/card/cardcellcomponent/elementform/index.jsx
@@ -79,9 +79,9 @@
          item.label = '值'
        } else if (item.key === 'format') {
          if (card.eleType === 'text') {
            item.options = item.oriOptions.filter(op => op.value !== 'percent' && op.value !== 'thdSeparator')
            item.options = item.oriOptions.filter(op => !['percent', 'thdSeparator', 'abs'].includes(op.value))
          } else if (card.eleType === 'number') {
            item.options = item.oriOptions.filter(op => !op.value || op.value === 'percent' || op.value === 'thdSeparator')
            item.options = item.oriOptions.filter(op => !op.value || ['percent', 'thdSeparator', 'abs'].includes(op.value))
          }
        } else if (item.key === 'url') {
          item.required = card.eleType !== 'qrcode'
@@ -173,9 +173,9 @@
          }
        } else if (item.key === 'format') {
          if (value === 'text') {
            item.options = item.oriOptions.filter(op => op.value !== 'percent' && op.value !== 'thdSeparator')
            item.options = item.oriOptions.filter(op => !['percent', 'thdSeparator', 'abs'].includes(op.value))
          } else if (value === 'number') {
            item.options = item.oriOptions.filter(op => !op.value || op.value === 'percent' || op.value === 'thdSeparator')
            item.options = item.oriOptions.filter(op => !op.value || ['percent', 'thdSeparator', 'abs'].includes(op.value))
          }
        } else if (item.key === 'url') {
          item.required = value !== 'qrcode'
src/menu/components/card/cardcellcomponent/formconfig.jsx
@@ -136,6 +136,7 @@
        { value: '', text: '无' },
        { value: 'percent', text: '百分数' },
        { value: 'thdSeparator', text: '千分位' },
        { value: 'abs', text: '绝对值' },
        { value: 'YYYY-MM-DD', text: 'YYYY-MM-DD' },
        { value: 'MM月DD日', text: 'MM月DD日' },
        { value: 'YYYY年MM月DD日', text: 'YYYY年MM月DD日' },
src/menu/components/card/cardcellcomponent/index.jsx
@@ -150,6 +150,9 @@
      } else {
        options.push('width', 'float')
      }
      if (element.wrapStyle) {
        _style.float = element.wrapStyle.textAlign || 'left'
      }
    } else if (element.eleType === 'picture') {
      options = ['border', 'margin']
    } else if (element.eleType === 'slider') {
@@ -233,7 +236,12 @@
      _card.innerHeight = _card.barHeight + (_card.displayValue === 'true' ? fontSize + 2 : 0)
    } else if (_card.eleType === 'button') { // 拆分style
      _card.style = style
      _card.style = fromJS(style).toJS()
      if (style.float) {
        _card.wrapStyle = {textAlign: style.float}
        delete _card.style.float
      }
    } else {
      _card.style = style
    }
src/menu/components/card/cardcellcomponent/index.scss
@@ -25,6 +25,6 @@
    }
  }
  .card-cell:hover, .card-button-cell:hover {
    box-shadow: 0px 0px 1px #1890ff;
    box-shadow: 0px 0px 2px #1890ff;
  }
}
src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx
@@ -252,10 +252,13 @@
        text: Formdict['model.empty']
      }, {
        value: 'thdSeparator',
        text: Formdict['header.form.thdSeparator']
        text: '千分位'
      }, {
        value: 'percent',
        text: '百分比'
      }, {
        value: 'abs',
        text: '绝对值'
      }],
      required: false
    },
src/menu/components/table/edit-table/index.jsx
@@ -133,6 +133,7 @@
  componentDidMount () {
    MKEmitter.addListener('submitStyle', this.getStyle)
    MKEmitter.addListener('submitModal', this.handleSave)
    MKEmitter.addListener('completeSave', this.completeSave)
  }
  shouldComponentUpdate (nextProps, nextState) {
@@ -148,6 +149,20 @@
    }
    MKEmitter.removeListener('submitStyle', this.getStyle)
    MKEmitter.removeListener('submitModal', this.handleSave)
    MKEmitter.removeListener('completeSave', this.completeSave)
  }
  completeSave = () => {
    const { card } = this.state
    if (card.isNew) {
      let item = fromJS(card).toJS()
      item.cols = item.cols.filter(a => !a.origin)
      delete item.isNew
      this.setState({card: item})
    }
  }
  filterOrigin = (component) => {
src/menu/components/table/normal-table/columns/editColumn/formconfig.jsx
@@ -230,10 +230,13 @@
        text: Formdict['model.empty']
      }, {
        value: 'thdSeparator',
        text: Formdict['header.form.thdSeparator']
        text: '千分位'
      }, {
        value: 'percent',
        text: '百分比'
      }, {
        value: 'abs',
        text: '绝对值'
      }],
      required: false
    },
src/menu/components/table/normal-table/index.jsx
@@ -151,6 +151,7 @@
    MKEmitter.addListener('submitStyle', this.getStyle)
    MKEmitter.addListener('submitModal', this.handleSave)
    MKEmitter.addListener('logButton', this.logButton)
    MKEmitter.addListener('completeSave', this.completeSave)
  }
  shouldComponentUpdate (nextProps, nextState) {
@@ -167,6 +168,22 @@
    MKEmitter.removeListener('submitStyle', this.getStyle)
    MKEmitter.removeListener('submitModal', this.handleSave)
    MKEmitter.removeListener('logButton', this.logButton)
    MKEmitter.removeListener('completeSave', this.completeSave)
  }
  completeSave = () => {
    const { card } = this.state
    if (card.isNew) {
      let item = fromJS(card).toJS()
      item.search = item.search.filter(a => !a.origin)
      item.action = item.action.filter(a => !a.origin)
      item.cols = item.cols.filter(a => !a.origin)
      delete item.isNew
      this.setState({card: item}, () => { MKEmitter.emit('revert') })
    }
  }
  loopCol = (col) => {
@@ -387,9 +404,16 @@
  }
  getWrapForms = () => {
    const { wrap, action, columns } = this.state.card
    const { wrap, action, columns, cols } = this.state.card
    return getWrapForm(wrap, action, columns)
    let _actions = [...action]
    cols.forEach(col => {
      if (col.type !== 'action') return
      _actions.push(...col.elements)
    })
    return getWrapForm(wrap, _actions, columns)
  }
  updateWrap = (res) => {
src/menu/stylecombcontroller/index.jsx
@@ -27,7 +27,6 @@
  ArrowDownOutlined,
  ArrowLeftOutlined,
  ArrowRightOutlined,
  SwapOutlined,
} from '@ant-design/icons'
import MKEmitter from '@/utils/events.js'
@@ -558,21 +557,6 @@
                    labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={ {xs: { span: 24 }, sm: { span: 20 }} }
                  >
                    <StyleInput defaultValue={''} options={['px', 'vh', 'vw']} onChange={(val) => this.changeNormalStyle(val, 'paddingRight')}/>
                  </Form.Item>
                </Col>
              </Panel> : null}
              {options.includes('float') ? <Panel header="浮动" key="float">
                <Col span={24}>
                  <Form.Item
                    colon={false}
                    label={<SwapOutlined title="浮动"/>}
                    labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={ {xs: { span: 24 }, sm: { span: 20 }} }
                  >
                    <Radio.Group defaultValue={''} onChange={(e) => this.changeNormalStyle(e.target.value, 'float')}>
                      <Radio value="left">左浮动</Radio>
                      <Radio value="right">右浮动</Radio>
                      <Radio value="none">不浮动</Radio>
                    </Radio.Group>
                  </Form.Item>
                </Col>
              </Panel> : null}
src/menu/stylecontroller/index.jsx
@@ -780,17 +780,17 @@
                  </Form.Item>
                </Col>
              </Panel> : null}
              {options.includes('float') ? <Panel header="浮动" key="float">
              {options.includes('float') ? <Panel header="对齐方式" key="float">
                <Col span={24}>
                  <Form.Item
                    colon={false}
                    label={<SwapOutlined title="浮动"/>}
                    label={<SwapOutlined title="对齐"/>}
                    labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={ {xs: { span: 24 }, sm: { span: 20 }} }
                  >
                    <Radio.Group style={{whiteSpace: 'nowrap'}} defaultValue={card.float || 'left'} onChange={(e) => this.changeNormalStyle(e.target.value, 'float')}>
                      <Radio value="left">左浮动</Radio>
                      <Radio value="right">右浮动</Radio>
                      <Radio value="none">不浮动</Radio>
                      <Radio value="left">左</Radio>
                      <Radio value="center">居中</Radio>
                      <Radio value="right">右</Radio>
                    </Radio.Group>
                  </Form.Item>
                </Col>
src/tabviews/commontable/index.jsx
@@ -740,6 +740,7 @@
          item.key = index
          item.$$uuid = item[setting.primaryKey] || ''
          item.$$key = '' + item.key + item.$$uuid
          item.$$BID = BID || ''
          item.$Index = start + index + ''
@@ -813,6 +814,7 @@
          data = data.map(item => {
            if (item.$$uuid === _data.$$uuid) {
              _data.key = item.key
              _data.$$key = '' + item.key + item.$$uuid
              _data.$Index = item.$Index
              return _data
            } else {
src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -328,9 +328,11 @@
        val = data[card.field]
      }
      if (val !== '' && typeof(val) === 'number') {
      if (typeof(val) === 'number') {
        if (card.format === 'percent') {
          val = val * 100
        } else if (card.format === 'abs') {
          val = Math.abs(val)
        }
        if (card.col && card.col.type === 'number') {
@@ -667,11 +669,12 @@
      if (['exec', 'prompt', 'pop', 'form'].includes(card.OpenType)) {
        return (
          <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
          <Col key={card.uuid} className="mk-cell-btn" style={card.wrapStyle} span={card.width}>
            <NormalButton
              BID={data.$$BID}
              BData={data.$$BData || ''}
              disabled={data.$disabled}
              lineId={data.$$key || ''}
              btn={card}
              show={card.show}
              style={card.style}
@@ -683,11 +686,12 @@
        )
      } else if (card.OpenType === 'excelIn') {
        return (
          <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
          <Col key={card.uuid} className="mk-cell-btn" style={card.wrapStyle} span={card.width}>
            <ExcelInButton
              BID={data.$$BID}
              BData={data.$$BData || ''}
              disabled={data.$disabled}
              lineId={data.$$key || ''}
              btn={card}
              show={card.show}
              style={card.style}
@@ -698,10 +702,11 @@
        )
      } else if (card.OpenType === 'excelOut') {
        return (
          <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
          <Col key={card.uuid} className="mk-cell-btn" style={card.wrapStyle} span={card.width}>
            <ExcelOutButton
              BID={data.$$BID}
              BData={data.$$BData || ''}
              lineId={data.$$key || ''}
              disabled={data.$disabled}
              btn={card}
              show={card.show}
@@ -712,11 +717,12 @@
        )
      } else if (card.OpenType === 'popview') {
        return (
          <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
          <Col key={card.uuid} className="mk-cell-btn" style={card.wrapStyle} span={card.width}>
            <PopupButton
              BID={data.$$BID}
              BData={data.$$BData || ''}
              disabled={data.$disabled}
              lineId={data.$$key || ''}
              btn={card}
              show={card.show}
              style={card.style}
@@ -727,10 +733,11 @@
        )
      } else if (card.OpenType === 'tab') {
        return (
          <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
          <Col key={card.uuid} className="mk-cell-btn" style={card.wrapStyle} span={card.width}>
            <TabButton
              BData={data.$$BData || ''}
              disabled={data.$disabled}
              lineId={data.$$key || ''}
              btn={card}
              show={card.show}
              style={card.style}
@@ -741,10 +748,11 @@
        )
      } else if (card.OpenType === 'innerpage') {
        return (
          <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
          <Col key={card.uuid} className="mk-cell-btn" style={card.wrapStyle} span={card.width}>
            <NewPageButton
              BData={data.$$BData || ''}
              disabled={data.$disabled}
              lineId={data.$$key || ''}
              btn={card}
              show={card.show}
              style={card.style}
@@ -756,11 +764,12 @@
      } else if (card.OpenType === 'funcbutton') {
        if (card.funcType === 'changeuser' || card.funcType === 'closetab') {
          return (
            <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
            <Col key={card.uuid} className="mk-cell-btn" style={card.wrapStyle} span={card.width}>
              <ChangeUserButton
                BID={data.$$BID}
                BData={data.$$BData || ''}
                disabled={data.$disabled}
                lineId={data.$$key || ''}
                btn={card}
                show={card.show}
                style={card.style}
@@ -771,11 +780,12 @@
          )
        } else if (card.funcType === 'print') {
          return (
            <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
            <Col key={card.uuid} className="mk-cell-btn" style={card.wrapStyle} span={card.width}>
              <PrintButton
                BID={data.$$BID}
                BData={data.$$BData || ''}
                disabled={data.$disabled}
                lineId={data.$$key || ''}
                btn={card}
                show={card.show}
                style={card.style}
src/tabviews/custom/components/share/normalTable/index.jsx
@@ -175,6 +175,8 @@
        if (col.format === 'percent') {
          content = content * 100
          decimal = decimal > 2 ? decimal - 2 : 0
        } else if (col.format === 'abs') {
          content = Math.abs(content)
        }
  
        content = content.toFixed(decimal)
src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
@@ -267,6 +267,8 @@
        if (col.format === 'percent') {
          content = content * 100
          decimal = decimal > 2 ? decimal - 2 : 0
        } else if (col.format === 'abs') {
          content = Math.abs(content)
        }
  
        content = content.toFixed(decimal)
src/tabviews/custom/components/table/normal-table/index.jsx
@@ -85,6 +85,7 @@
      _data = _data.map((item, index) => {
        item.key = index
        item.$$uuid = item[_config.setting.primaryKey] || ''
        item.$$key = '' + item.key + item.$$uuid
        item.$$BID = BID || ''
        item.$$BData = BData || ''
        item.$Index = index + 1 + ''
@@ -234,6 +235,7 @@
        data: result.data.map((item, index) => {
          item.key = index
          item.$$uuid = item[setting.primaryKey] || ''
          item.$$key = '' + item.key + item.$$uuid
          item.$$BID = BID || ''
          item.$$BData = BData || ''
          item.$Index = start + index + ''
@@ -299,6 +301,7 @@
          data = data.map(item => {
            if (item.$$uuid === _data.$$uuid) {
              _data.key = item.key
              _data.$$key = '' + item.key + item.$$uuid
              _data.$Index = item.$Index
              return _data
            } else {
@@ -559,6 +562,7 @@
        _data = _data.map((item, index) => {
          item.key = index
          item.$$uuid = item[config.setting.primaryKey] || ''
          item.$$key = '' + item.key + item.$$uuid
          item.$$BID = BID || ''
          item.$$BData = BData || ''
          item.$Index = index + 1 + ''
src/tabviews/custom/components/tree/antd-tree/index.jsx
@@ -34,6 +34,7 @@
    treeNodes: null,           // 列表数据集
    expandedKeys: [],          // 展开的树节点
    selectedKeys: [],          // 选中的树节点
    selected: false            // 选中首行
  }
  UNSAFE_componentWillMount () {
@@ -53,6 +54,7 @@
    _config.wrap.contentHeight = config.wrap.title || config.wrap.searchable === 'true' ? 'calc(100% - 45px)' : '100%'
    this.setState({
      selected: _config.wrap.selected === 'true',
      config: _config,
      data: _data,
      BID: BID || '',
@@ -60,9 +62,9 @@
      sync: _sync
    }, () => {
      if (config.setting.sync !== 'true' && config.setting.onload === 'true') {
        this.loadData(null, 'init')
        this.loadData(null)
      } else if (config.setting.sync === 'true' && _data) {
        this.handleData('init')
        this.handleData()
      }
    })
  }
@@ -80,7 +82,7 @@
      }
      this.setState({sync: false, data: _data}, () => {
        this.handleData('init')
        this.handleData()
      })
    } else if (config.setting.syncRefresh && nextProps.mainSearch && !is(fromJS(this.props.mainSearch), fromJS(nextProps.mainSearch))) {
      this.setState({}, () => {
@@ -183,7 +185,7 @@
  /**
   * @description 数据加载
   */
  async loadData (hastimer, type) {
  async loadData (hastimer) {
    const { mainSearch, menuType } = this.props
    const { config, arr_field, BID } = this.state
@@ -218,7 +220,7 @@
        data: result.data,
        loading: false
      }, () => {
        this.handleData(type)
        this.handleData()
      })
    } else {
      this.setState({
@@ -233,24 +235,41 @@
    }
  }
  handleData = (type) => {
    const { data, searchkey, config } = this.state
  handleData = () => {
    const { data, searchkey, config, selectedKeys, selected } = this.state
    if (!data || data.length === 0) {
      this.setState({
        selectedKeys: [],
        expandedKeys: [],
        treedata: [],
        treeNodes: [],
      })
      MKEmitter.emit('resetSelectLine', config.uuid, '', '')
      return
    }
    let parentNodes = []
    let _options = []
    let logMap = new Map()
    let selectKey = selectedKeys[0] || ''
    let selectData = ''
    let hasSelectKey = false
    data.forEach(item => {
      let pval = item[config.wrap.parentField]
      let val = item[config.wrap.valueField]
      if (!val || logMap.has(val)) return
      if (selectKey && selectKey === val) {
        hasSelectKey = true
        selectData = {
          ...item,
          $title: item[config.wrap.labelField] || '',
          $key: val,
          $parentId: ''
        }
      }
      logMap.set(val, true)
      if (pval === config.wrap.mark) {
@@ -285,7 +304,7 @@
      treeNodes: _treeNodes,
    })
    if (type === 'init' && _treeNodes[0] && config.wrap.selected === 'true') {
    if (selected && !hasSelectKey && _treeNodes[0]) {
      this.setState({
        selectedKeys: [_treeNodes[0].$key]
      })
@@ -293,6 +312,14 @@
      setTimeout(() => {
        MKEmitter.emit('resetSelectLine', config.uuid, _treeNodes[0].$key, _treeNodes[0])
      }, 200)
    } else if (!hasSelectKey && selectKey) {
      this.setState({
        selectedKeys: []
      })
      MKEmitter.emit('resetSelectLine', config.uuid, '', '')
    } else if (hasSelectKey) {
      MKEmitter.emit('resetSelectLine', config.uuid, selectKey, selectData)
    }
  }
src/tabviews/custom/index.jsx
@@ -754,12 +754,12 @@
        }
      }
      if (item.wrap && item.wrap.doubleClick) {
        let index = item.action.findIndex((btn) => btn.uuid === item.wrap.doubleClick)
        if (index === -1) {
          item.wrap.doubleClick = ''
        }
      }
      // if (item.wrap && item.wrap.doubleClick) {
      //   let index = item.action.findIndex((btn) => btn.uuid === item.wrap.doubleClick)
      //   if (index === -1) {
      //     item.wrap.doubleClick = ''
      //   }
      // }
      
      return true
    })
src/tabviews/subtable/index.jsx
@@ -638,6 +638,7 @@
          }
          item.key = index
          item.$$uuid = item[setting.primaryKey] || ''
          item.$$key = '' + item.key + item.$$uuid
          item.$$BID = BID || ''
          item.$Index = start + index + ''
@@ -709,6 +710,7 @@
          data = data.map(item => {
            if (item.$$uuid === _data.$$uuid) {
              _data.key = item.key
              _data.$$key = '' + item.key + item.$$uuid
              _data.$Index = item.$Index
              return _data
            } else {
src/tabviews/subtabtable/index.jsx
@@ -578,6 +578,7 @@
          }
          item.key = index
          item.$$uuid = item[setting.primaryKey] || ''
          item.$$key = '' + item.key + item.$$uuid
          item.$$BID = BID || ''
          item.$Index = start + index + ''
@@ -688,6 +689,7 @@
          data = data.map(item => {
            if (item.$$uuid === _data.$$uuid) {
              _data.key = item.key
              _data.$$key = '' + item.key + item.$$uuid
              _data.$Index = item.$Index
              return _data
            } else {
src/tabviews/zshare/actionList/changeuserbutton/index.jsx
@@ -22,6 +22,7 @@
    selectedData: PropTypes.any,      // 子表中选择数据
    setting: PropTypes.any,           // 页面通用设置
    disabled: PropTypes.any,          // 行按钮禁用
    lineId: PropTypes.any,            // 行索引+主键值,用于行按钮双击
  }
  state = {
@@ -117,7 +118,13 @@
    const { setting, selectedData, btn, MenuID } = this.props
    const { loading, disabled } = this.state
    
    if ((triggerId && btn.uuid !== triggerId) || loading || disabled) return
    if (loading || disabled) return
    if (triggerId) {
      if (btn.uuid !== triggerId) return
      if (this.props.lineId && record && record[0] && this.props.lineId !== record[0].$$key) {
        return
      }
    }
    if (btn.funcType === 'closetab') {
      MKEmitter.emit('closeTabView', MenuID || btn.$MenuID)
src/tabviews/zshare/actionList/excelInbutton/index.jsx
@@ -25,6 +25,7 @@
    btn: PropTypes.object,            // 按钮
    setting: PropTypes.any,           // 页面通用设置
    disabled: PropTypes.any,          // 行按钮禁用
    lineId: PropTypes.any,            // 行索引+主键值,用于行按钮双击
  }
  state = {
@@ -122,7 +123,13 @@
    const { setting, Tab, BID, btn, selectedData } = this.props
    const { loading, disabled } = this.state
    if ((triggerId && btn.uuid !== triggerId) || loading || disabled) return
    if (loading || disabled) return
    if (triggerId) {
      if (btn.uuid !== triggerId) return
      if (this.props.lineId && record && record[0] && this.props.lineId !== record[0].$$key) {
        return
      }
    }
    if (((Tab && Tab.supMenu) || setting.supModule) && !BID) {
      notification.warning({
src/tabviews/zshare/actionList/exceloutbutton/index.jsx
@@ -25,6 +25,7 @@
    setting: PropTypes.any,           // 页面通用设置
    updateStatus: PropTypes.func,     // 按钮状态更新
    disabled: PropTypes.any,          // 行按钮禁用
    lineId: PropTypes.any,            // 行索引+主键值,用于行按钮双击
  }
  state = {
@@ -116,11 +117,17 @@
  /**
   * @description 触发按钮操作
   */
  actionTrigger = (triggerId) => {
  actionTrigger = (triggerId, record) => {
    const { setting, Tab, BID, btn } = this.props
    const { loading, disabled } = this.state
    if ((triggerId && btn.uuid !== triggerId) || loading || disabled) return
    if (loading || disabled) return
    if (triggerId) {
      if (btn.uuid !== triggerId) return
      if (this.props.lineId && record && record[0] && this.props.lineId !== record[0].$$key) {
        return
      }
    }
    if (((Tab && Tab.supMenu) || setting.supModule) && !BID) {
      notification.warning({
src/tabviews/zshare/actionList/newpagebutton/index.jsx
@@ -19,6 +19,7 @@
    selectedData: PropTypes.any,      // 子表中选择数据
    setting: PropTypes.any,           // 页面通用设置
    disabled: PropTypes.any,          // 行按钮禁用
    lineId: PropTypes.any,            // 行索引+主键值,用于行按钮双击
  }
  state = {
@@ -114,7 +115,13 @@
    const { setting, btn, selectedData } = this.props
    const { disabled } = this.state
    if ((triggerId && btn.uuid !== triggerId) || disabled) return
    if (disabled) return
    if (triggerId) {
      if (btn.uuid !== triggerId) return
      if (this.props.lineId && record && record[0] && this.props.lineId !== record[0].$$key) {
        return
      }
    }
    if (type === 'linkbtn' && selectedData && selectedData.length === 1) {
      if (record[0].$Index !== selectedData[0].$Index) {
src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -33,6 +33,7 @@
    setting: PropTypes.any,           // 页面通用设置
    ContainerId: PropTypes.any,       // tab页面ID,用于弹窗控制
    disabled: PropTypes.any,          // 行按钮禁用
    lineId: PropTypes.any,            // 行索引+主键值,用于行按钮双击
  }
  state = {
@@ -198,7 +199,13 @@
    const { Tab, BID, btn, selectedData, setting } = this.props
    const { loading, disabled } = this.state
    if ((triggerId && btn.uuid !== triggerId) || loading || disabled) return
    if (loading || disabled) return
    if (triggerId) {
      if (btn.uuid !== triggerId) return
      if (this.props.lineId && record && record[0] && this.props.lineId !== record[0].$$key) {
        return
      }
    }
    if (((Tab && Tab.supMenu) || setting.supModule) && !BID) {
      notification.warning({
src/tabviews/zshare/actionList/popupbutton/index.jsx
@@ -24,6 +24,7 @@
    btn: PropTypes.object,            // 按钮
    setting: PropTypes.any,           // 页面通用设置
    disabled: PropTypes.any,          // 行按钮禁用
    lineId: PropTypes.any,            // 行索引+主键值,用于行按钮双击
  }
  state = {
@@ -156,7 +157,13 @@
    const { setting, Tab, BID, btn, selectedData } = this.props
    const { loading, disabled } = this.state
    if ((triggerId && btn.uuid !== triggerId) || loading || disabled) return
    if (loading || disabled) return
    if (triggerId) {
      if (btn.uuid !== triggerId) return
      if (this.props.lineId && record && record[0] && this.props.lineId !== record[0].$$key) {
        return
      }
    }
    if (((Tab && Tab.supMenu) || setting.supModule) && !BID) {
      notification.warning({
src/tabviews/zshare/actionList/printbutton/index.jsx
@@ -32,6 +32,7 @@
    setting: PropTypes.any,           // 页面通用设置
    ContainerId: PropTypes.any,       // tab页面ID,用于弹窗控制
    disabled: PropTypes.any,          // 行按钮禁用
    lineId: PropTypes.any,            // 行索引+主键值,用于行按钮双击
  }
  state = {
@@ -148,7 +149,13 @@
    const { Tab, BID, btn, selectedData, setting } = this.props
    const { loading, disabled } = this.state
    if ((triggerId && btn.uuid !== triggerId) || loading || disabled) return
    if (loading || disabled) return
    if (triggerId) {
      if (btn.uuid !== triggerId) return
      if (this.props.lineId && record && record[0] && this.props.lineId !== record[0].$$key) {
        return
      }
    }
    if (((Tab && Tab.supMenu) || setting.supModule) && !BID) {
      notification.warning({
src/tabviews/zshare/actionList/tabbutton/index.jsx
@@ -19,6 +19,7 @@
    selectedData: PropTypes.any,      // 子表中选择数据
    setting: PropTypes.any,           // 页面通用设置
    disabled: PropTypes.any,          // 行按钮禁用
    lineId: PropTypes.any,            // 行索引+主键值,用于行按钮双击
  }
  state = {
@@ -114,7 +115,13 @@
    const { setting, btn, selectedData } = this.props
    const { disabled } = this.state
    if ((triggerId && btn.uuid !== triggerId) || disabled) return
    if (disabled) return
    if (triggerId) {
      if (btn.uuid !== triggerId) return
      if (this.props.lineId && record && record[0] && this.props.lineId !== record[0].$$key) {
        return
      }
    }
    if (type === 'linkbtn' && selectedData && selectedData.length === 1) {
      if (record[0].$Index !== selectedData[0].$Index) {
src/tabviews/zshare/normalTable/index.jsx
@@ -726,6 +726,7 @@
                  btn={btn}
                  BID={record.$$BID}
                  disabled={record.$disabled}
                  lineId={record.$$key || ''}
                  selectedData={[record]}
                  BData={this.props.BData}
                  setting={this.props.setting}
@@ -740,6 +741,7 @@
                  btn={btn}
                  BID={record.$$BID}
                  disabled={record.$disabled}
                  lineId={record.$$key || ''}
                  selectedData={[record]}
                  BData={this.props.BData}
                  setting={this.props.setting}
@@ -751,6 +753,7 @@
                  key={btn.uuid}
                  btn={btn}
                  disabled={record.$disabled}
                  lineId={record.$$key || ''}
                  selectedData={[record]}
                  BData={this.props.BData}
                  MenuID={this.props.MenuID}
@@ -763,6 +766,7 @@
                  key={btn.uuid}
                  btn={btn}
                  disabled={record.$disabled}
                  lineId={record.$$key || ''}
                  selectedData={[record]}
                  BData={this.props.BData}
                  setting={this.props.setting}
src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
@@ -246,6 +246,8 @@
    _columns = _columns.map(col => {
      col.required = col.required || 'true'
      col.type = col.type || 'Nvarchar(50)'
      col.import = col.import || 'true'
      col.required = col.required || 'true'
      
      if (/^Nvarchar/ig.test(col.type)) {
        col.limit = col.type.match(/\d+/)[0]
src/templates/zshare/formconfig.jsx
@@ -1624,7 +1624,7 @@
        text: Formdict['model.empty']
      }, {
        value: 'thdSeparator',
        text: Formdict['header.form.thdSeparator']
        text: '千分位'
      }, {
        value: 'percent',
        text: '百分比'
src/views/menudesign/index.jsx
@@ -957,7 +957,12 @@
        } else if (item.type === 'tree' && (!item.wrap.valueField || !item.wrap.labelField || !item.wrap.parentField)) {
          error = `组件《${item.name}》基本信息尚未设置!`
        } else if (item.type === 'table' && item.wrap.doubleClick) {
          if (item.action.findIndex((m) => m.uuid === item.wrap.doubleClick) === -1) {
          let _actions = [...item.action]
          item.cols.forEach(col => {
            if (col.type !== 'action') return
            _actions.push(...col.elements)
          })
          if (_actions.findIndex((m) => m.uuid === item.wrap.doubleClick) === -1) {
            error = `组件《${item.name}》绑定的双击按钮已删除!`
          }
        }
src/views/pcdesign/index.jsx
@@ -1502,7 +1502,12 @@
        } else if (item.type === 'tree' && (!item.wrap.valueField || !item.wrap.labelField || !item.wrap.parentField)) {
          error = `组件《${item.name}》基本信息尚未设置!`
        } else if (item.type === 'table' && item.wrap.doubleClick) {
          if (item.action.findIndex((m) => m.uuid === item.wrap.doubleClick) === -1) {
          let _actions = [...item.action]
          item.cols.forEach(col => {
            if (col.type !== 'action') return
            _actions.push(...col.elements)
          })
          if (_actions.findIndex((m) => m.uuid === item.wrap.doubleClick) === -1) {
            error = `组件《${item.name}》绑定的双击按钮已删除!`
          }
        }