king
2020-07-23 71fce3cc19f80a6e0eba36cfc5e67995ee9712ff
2020-07-23
16个文件已修改
258 ■■■■ 已修改文件
src/mob/components/login/mob-login-2/index.jsx 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/components/login/mob-login-2/index.scss 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/setupProxy.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/formtab/formgroup/index.jsx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/formtab/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/subtable/index.scss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/normalbutton/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/cardcomponent/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/cardcomponent/index.scss 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/mutilform/index.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/topSearch/index.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/sharecomponent/cardcomponent/index.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/sharecomponent/cardcomponent/index.scss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/sharecomponent/chartgroupcomponent/index.jsx 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/zshare/formconfig.jsx 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/components/login/mob-login-2/index.jsx
@@ -31,17 +31,25 @@
      password: { uuid: Utils.getuuid(), eleType: 'input', content: '密码', style: {}},
      login: { uuid: Utils.getuuid(), eleType: 'button', content: '登录', style: {fontSize: '16px', color: '#ffffff', textAlign: 'center', lineHeight: 2.4, backgroundColor: '#44a8f2'}},
      phone: { uuid: Utils.getuuid(), eleType: 'button', content: '手机短信登录', style: {fontSize: '16px', color: '#44a8f2', textAlign: 'center', lineHeight: 2.4, border: '1px solid #44a8f2'}},
      register: { uuid: Utils.getuuid(), eleType: 'text', content: '注册', style: {fontSize: '12px', color: '#44a8f2', textAlign: 'left'}},
      register: { uuid: Utils.getuuid(), eleType: 'text', content: '注册', style: {fontSize: '14px', color: '#44a8f2', textAlign: 'left'}},
      lose: { uuid: Utils.getuuid(), eleType: 'text', content: '忘记密码?', style: {fontSize: '12px', color: '#44a8f2', textAlign: 'right', textDecoration: 'underline'}},
      auth: { uuid: Utils.getuuid(), eleType: 'text', subItems: [
        {type: 'qq', icon: 'qq', label: 'QQ'},
        {type: 'wechat', icon: 'wechat', label: '微信'},
      ], content: '其他登录方式', style: {fontSize: '14px', color: '#bcbcbc', textAlign: 'center', marginTop: '30px', marginBottom: '20px'}},
      auth: {
        uuid: Utils.getuuid(), eleType: 'text',
        subItems: [
          {type: 'qq', icon: 'qq', label: 'QQ'},
          {type: 'wechat', icon: 'wechat', label: '微信'},
        ],
        content: '其他登录方式', style: {fontSize: '14px', color: '#bcbcbc', textAlign: 'center', marginTop: '30px', marginBottom: '20px'}
      },
      copyright: { uuid: Utils.getuuid(), eleType: 'textarea', content: 'Copyright©2017  所有相关版权归  北京明科普华信息技术有限公司', style: {fontSize: '12px', textAlign: 'center'} },
      links: { uuid: Utils.getuuid(), eleType: 'link', substyle: false, subItems: [
        {eleType: 'link', content: '隐私政策', url: '', uuid: Utils.getuuid()},
        {eleType: 'link', content: '使用条款', url: '', uuid: Utils.getuuid()},
      ], style: {fontSize: '12px', textAlign: 'center', color: '#44a8f2', textDecoration: 'underline'} }
      links: {
        uuid: Utils.getuuid(), eleType: 'link', substyle: false,
        subItems: [
          {eleType: 'link', content: '隐私政策', url: '', uuid: Utils.getuuid()},
          {eleType: 'link', content: '使用条款', url: '', uuid: Utils.getuuid()},
        ],
        style: {fontSize: '12px', textAlign: 'center', color: '#44a8f2', textDecoration: 'underline'}
      }
    }
  }
@@ -220,62 +228,60 @@
    if (view === 'account') return (
      <div className="mob-login-2" onClick={this.editBox} style={card.box.style}>
        <div className="mob-login-body">
          {card.title ? <div className={'plat-name ' + (editId === card.title.uuid ? 'editing' : '')} style={titleStyle} onClick={this.editTitle}>
            <ContentUpdate element={card.title} updateContent={(ele) => this.updateContent({...card, title: ele})}/>
            {card.title.content}
          </div> : null}
          <div className={`mk-login-input ${editId === card.user.uuid ? 'editing' : ''}`} onClick={(e) => this.editPlaceholder(e, 'user')}>
            <ContentUpdate element={card.user} deletable={false} updateContent={(ele) => this.updateContent({...card, user: ele})}/>
            <InputItem placeholder={card.user.content}></InputItem>
          </div>
          <div className={`mk-login-input ${editId === card.password.uuid ? 'editing' : ''}`} onClick={(e) => this.editPlaceholder(e, 'password')}>
            <ContentUpdate element={card.password} deletable={false} updateContent={(ele) => this.updateContent({...card, password: ele})}/>
            <InputItem placeholder={card.password.content}></InputItem>
          </div>
          <Button
            className={'login ' + (editId === card.login.uuid ? 'editing' : '')}
            onDoubleClick={() => this.props.doubleClickCard(card.login)}
            style={card.login.style}
            onClick={(e) => this.editLogin(e, 'login')}
          >
            <ContentUpdate element={card.login} deletable={false} updateContent={(ele) => this.updateContent({...card, login: ele})}/>
            {card.login.content}
          </Button>
          <Button
            className={'login ' + (editId === card.phone.uuid ? 'editing' : '')}
            onDoubleClick={() => this.props.doubleClickCard(card.phone)}
            style={card.phone.style}
            onClick={(e) => this.editLogin(e, 'phone')}
          >
            <ContentUpdate element={card.phone} updateContent={(ele) => this.updateContent({...card, phone: ele})}/>
            {card.phone.content}
          </Button>
          <div className="row-box">
            {card.register ? <div className={'col-item ' + (editId === card.register.uuid ? 'editing' : '')} style={card.register.style} onClick={this.editRegister}>
              <ContentUpdate element={card.register} updateContent={(ele) => this.updateContent({...card, register: ele})}/>
              {card.register.content}
            </div> : null}
            {card.lose ? <div className={'col-item right ' + (editId === card.lose.uuid ? 'editing' : '')} style={card.lose.style} onClick={this.editLose}>
              <ContentUpdate element={card.lose} updateContent={(ele) => this.updateContent({...card, lose: ele})}/>
              {card.lose.content}
            </div> : null}
            <div style={{clear: 'both'}}></div>
          </div>
          {card.auth ? <div className={'plat-name ' + (editId === card.auth.uuid ? 'editing' : '')} style={card.auth.style} onClick={this.editAuth}>
            <ContentUpdate element={card.auth} updateContent={(ele) => this.updateContent({...card, auth: ele})}/>
            {card.auth.content}
          </div> : null}
          {card.auth ? <div className="other-auth">
            {card.auth.subItems.map(cell => (
              <span key={cell.type}>
                <Icon type={cell.icon} />
                <p>{cell.label}</p>
              </span>
            ))}
          </div> : null}
        {card.title ? <div className={'plat-name ' + (editId === card.title.uuid ? 'editing' : '')} style={titleStyle} onClick={this.editTitle}>
          <ContentUpdate element={card.title} updateContent={(ele) => this.updateContent({...card, title: ele})}/>
          {card.title.content}
        </div> : null}
        <div className={`mk-login-input ${editId === card.user.uuid ? 'editing' : ''}`} onClick={(e) => this.editPlaceholder(e, 'user')}>
          <ContentUpdate element={card.user} deletable={false} updateContent={(ele) => this.updateContent({...card, user: ele})}/>
          <InputItem placeholder={card.user.content}></InputItem>
        </div>
        <div className={`mk-login-input ${editId === card.password.uuid ? 'editing' : ''}`} onClick={(e) => this.editPlaceholder(e, 'password')}>
          <ContentUpdate element={card.password} deletable={false} updateContent={(ele) => this.updateContent({...card, password: ele})}/>
          <InputItem placeholder={card.password.content}></InputItem>
        </div>
        <Button
          className={'login ' + (editId === card.login.uuid ? 'editing' : '')}
          onDoubleClick={() => this.props.doubleClickCard(card.login)}
          style={card.login.style}
          onClick={(e) => this.editLogin(e, 'login')}
        >
          <ContentUpdate element={card.login} deletable={false} updateContent={(ele) => this.updateContent({...card, login: ele})}/>
          {card.login.content}
        </Button>
        <Button
          className={'login ' + (editId === card.phone.uuid ? 'editing' : '')}
          onDoubleClick={() => this.props.doubleClickCard(card.phone)}
          style={card.phone.style}
          onClick={(e) => this.editLogin(e, 'phone')}
        >
          <ContentUpdate element={card.phone} updateContent={(ele) => this.updateContent({...card, phone: ele})}/>
          {card.phone.content}
        </Button>
        <div className="row-box">
          {card.register ? <div className={'col-item ' + (editId === card.register.uuid ? 'editing' : '')} style={card.register.style} onClick={this.editRegister}>
            <ContentUpdate element={card.register} updateContent={(ele) => this.updateContent({...card, register: ele})}/>
            {card.register.content}
          </div> : null}
          {card.lose ? <div className={'col-item right ' + (editId === card.lose.uuid ? 'editing' : '')} style={card.lose.style} onClick={this.editLose}>
            <ContentUpdate element={card.lose} updateContent={(ele) => this.updateContent({...card, lose: ele})}/>
            {card.lose.content}
          </div> : null}
          <div style={{clear: 'both'}}></div>
        </div>
        {card.auth ? <div className={'plat-name ' + (editId === card.auth.uuid ? 'editing' : '')} style={card.auth.style} onClick={this.editAuth}>
          <ContentUpdate element={card.auth} updateContent={(ele) => this.updateContent({...card, auth: ele})}/>
          {card.auth.content}
        </div> : null}
        {card.auth ? <div className="other-auth">
          {card.auth.subItems.map(cell => (
            <span key={cell.type}>
              <Icon type={cell.icon} />
              <p>{cell.label}</p>
            </span>
          ))}
        </div> : null}
        {card.copyright ? <div className={'company-msg ' + (editId === card.copyright.uuid ? 'editing' : '')} style={card.copyright.style} onClick={this.editMsg}>
          <ContentUpdate element={card.copyright} updateContent={(ele) => this.updateContent({...card, copyright: ele})}/>
          {card.copyright.content}
src/mob/components/login/mob-login-2/index.scss
@@ -7,13 +7,6 @@
  background-size: cover;
  background-position: center center;
  .mob-login-body {
    min-height: calc((80 / 100) * 615px);
    border-top: 1px solid transparent;
    border-bottom: 1px solid transparent;
    margin-bottom: 10px;
  }
  .plat-name {
    position: relative;
    max-width: 280px;
src/setupProxy.js
@@ -1,8 +1,6 @@
const proxy = require('http-proxy-middleware')
const host = 'http://qingqiumarket.cn'
const service = 'mkwms/'
// const host = 'http://cloud.mk9h.cn'
// const service = ''
module.exports = function(app) {
  app.use(proxy('/webapi', { 
src/tabviews/formtab/formgroup/index.jsx
@@ -212,7 +212,7 @@
              duration: 5
            })
          } else {
            item.options = item.oriOptions.filter(option => option.parentId === supItem.initval)
            item.options = item.oriOptions.filter(option => option.ParentID === supItem.initval)
          }
        }
        return item
@@ -239,7 +239,7 @@
      groups = groups.map(group => {
        group.sublist = group.sublist.map(item => {
          if (item.type === 'link' && item.linkField === supfield.field) {
            item.options = item.oriOptions.filter(option => option.parentId === supfield.initval)
            item.options = item.oriOptions.filter(option => option.ParentID === supfield.initval)
            item.initval = item.options[0] ? item.options[0].Value : ''
            fieldsvalue[item.field] = item.initval
@@ -270,7 +270,7 @@
    groups = groups.map(group => {
      group.sublist = group.sublist.map(item => {
        if (item.type === 'link' && item.linkField === _field.field) {
          item.options = item.oriOptions.filter(option => option.parentId === value)
          item.options = item.oriOptions.filter(option => option.ParentID === value)
          item.initval = item.options[0] ? item.options[0].Value : ''
  
          fieldsvalue[item.field] = item.initval
src/tabviews/formtab/index.jsx
@@ -259,7 +259,7 @@
            }
            if (res.search.type === 'link') {
              _item.parentId = cell[res.search.linkField]
              _item.ParentID = cell[res.search.linkField]
            } else if (res.search.type === 'select' && res.search.linkSubField && res.search.linkSubField.length > 0) {
              res.search.linkSubField.forEach(_field => {
                _item[_field] = (cell[_field] || cell[_field] === 0) ? cell[_field] : ''
src/tabviews/subtable/index.scss
@@ -17,7 +17,7 @@
      .ant-tabs-bar {
        position: relative;
        z-index: 1;
        top: -10px;
        top: 0px;
        margin: 0;
        border: 0;
        .ant-tabs-nav-scroll {
src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -141,7 +141,7 @@
      }
    } else if (btn.intertype === 'outer') {
      // 接口地址不存在时报错
      if (!btn.interface) {
      if (!btn.interface && btn.sysInterface !== 'true') {
        this.actionSettingError()
        return
      }
@@ -1069,7 +1069,7 @@
        {show === 'icon' ? <Button className="action-cell" icon={btn.icon || 'dash'} loading={loading} onClick={() => {this.actionTrigger()}}></Button> : null}
        {show === 'text' ? <Button className="action-cell" loading={loading} onClick={() => {this.actionTrigger()}}>{btn.label}</Button> : null}
        {show === 'all' ? <Button className="action-cell" icon={btn.icon || ''} loading={loading} onClick={() => {this.actionTrigger()}}>{btn.label}</Button> : null}
        {show && show.indexOf('plus') > -1 ? <Button className="action-cell" style={{fontSize: show.substring(4) + 'px'}} icon="plus" loading={loading} onClick={() => {this.actionTrigger()}}></Button> : null}
        {show && show.indexOf('plus') > -1 ? <Button className="action-cell" style={{fontSize: show.substring(4) + 'px'}} icon={btn.icon || 'plus'} loading={loading} onClick={() => {this.actionTrigger()}}></Button> : null}
        {this.getModels()}
      </div>
    )
src/tabviews/zshare/cardcomponent/index.jsx
@@ -567,7 +567,7 @@
    actions.forEach(item => {
      if ((item.Ot && item.Ot !== 'notRequired' && !['excelIn', 'excelOut'].includes(item.OpenType)) || item.funcType === 'changeuser') {
        actionMap.set(item.uuid, item)
      } else if (plot.insert === 'true' && !insertAction && item.OpenType === 'pop' && item.sqlType === 'insert' && item.Ot === 'notRequired') {
      } else if (plot.extraAction && plot.extraAction === item.uuid && ['pop', 'prompt', 'exec'].includes(item.OpenType) && item.Ot === 'notRequired') {
        insertAction = item
      } else if (plot.actions && plot.actions.length > 0 && plot.actions.includes(item.uuid) && (item.OpenType === 'excelOut' || (item.OpenType === 'excelIn' && item.Ot === 'notRequired'))) {
        actionList.push(item)
src/tabviews/zshare/cardcomponent/index.scss
@@ -105,7 +105,15 @@
          border: 0;
          width: 100%;
          height: 100%;
          color: rgb(38, 194, 129);
          color: #d9d9d9;
          transition: color 0.3s linear;
        }
      }
    }
    .mk-card-insert:hover {
      .mk-btn-wrap {
        .ant-btn {
          color: #1890ff;
        }
      }
    }
src/tabviews/zshare/mutilform/index.jsx
@@ -227,7 +227,7 @@
          item.supInitVal = ''
        } else {
          item.supInitVal = supItem.initval
          item.options = item.oriOptions.filter(option => option.parentId === supItem.initval)
          item.options = item.oriOptions.filter(option => option.ParentID === supItem.initval)
        }
      }
@@ -321,7 +321,7 @@
            }
            if (res.$search.type === 'link') {
              item.parentId = cell[res.$search.linkField]
              item.ParentID = cell[res.$search.linkField]
            } else if (res.$search.type === 'select' && res.$search.linkSubField && res.$search.linkSubField.length > 0) {
              res.$search.linkSubField.forEach(_field => {
                item[_field] = (cell[_field] || cell[_field] === 0) ? cell[_field] : ''
@@ -357,7 +357,7 @@
      _formlist = _formlist.map(item => {
        if (item.type === 'link') {
          if (item.supInitVal) {
            item.options = item.oriOptions.filter(option => option.parentId === item.supInitVal)
            item.options = item.oriOptions.filter(option => option.ParentID === item.supInitVal)
          } else {
            item.options = item.oriOptions
          }
@@ -381,7 +381,7 @@
      formlist = formlist.map(item => {
        if (item.type === 'link' && item.linkField === supfield.field) {
          
          item.options = item.oriOptions.filter(option => option.parentId === supfield.initval)
          item.options = item.oriOptions.filter(option => option.ParentID === supfield.initval)
          item.initval = item.options[0] ? item.options[0].Value : ''
          if (this.props.form.getFieldValue(item.field) !== undefined) {
@@ -410,7 +410,7 @@
    let _record = {}
    formlist = formlist.map(item => {
      if (item.type === 'link' && item.linkField === _field.field) {
        item.options = item.oriOptions.filter(option => option.parentId === value)
        item.options = item.oriOptions.filter(option => option.ParentID === value)
        item.initval = item.options[0] ? item.options[0].Value : ''
        if (this.props.form.getFieldValue(item.field) !== undefined) {
src/tabviews/zshare/topSearch/index.jsx
@@ -76,7 +76,7 @@
            duration: 5
          })
        } else {
          item.options = item.oriOptions.filter(option => option.parentId === supItem.initval)
          item.options = item.oriOptions.filter(option => option.ParentID === supItem.initval)
        }
      } else if (item.type === 'group' && item.Hide !== 'true') {
        _groups.push(fromJS(item).toJS())
@@ -174,7 +174,7 @@
                }
                if (res.search.type === 'link') {
                  _item.parentId = cell[res.search.linkField]
                  _item.ParentID = cell[res.search.linkField]
                }
                item.options.push(_item)
@@ -212,7 +212,7 @@
          let supItem = _list.filter(form => form.field === item.linkField)[0]
          
          if (supItem) {
            item.options = item.oriOptions.filter(option => option.parentId === supItem.initval)
            item.options = item.oriOptions.filter(option => option.ParentID === supItem.initval)
          }
        }
@@ -230,7 +230,7 @@
    supfields.forEach(supfield => {
      formlist = formlist.map(item => {
        if (item.type === 'link' && item.linkField === supfield.field) {
          item.options = item.oriOptions.filter(option => option.parentId === supfield.initval)
          item.options = item.oriOptions.filter(option => option.ParentID === supfield.initval)
          item.initval = item.options[0] ? item.options[0].Value : ''
          
          if (this.props.form.getFieldValue(item.field) !== undefined) {
@@ -257,7 +257,7 @@
    let fieldsvalue = {}
    formlist = formlist.map(item => {
      if (item.type === 'link' && item.linkField === _field.field) {
        item.options = item.oriOptions.filter(option => option.parentId === value)
        item.options = item.oriOptions.filter(option => option.ParentID === value)
        item.initval = item.options[0] ? item.options[0].Value : ''
        if (this.props.form.getFieldValue(item.field) !== undefined) {
src/templates/sharecomponent/cardcomponent/index.jsx
@@ -38,7 +38,7 @@
  UNSAFE_componentWillReceiveProps (nextProps) {
    if (!is(fromJS(this.props.card), fromJS(nextProps.card))) {
      setTimeout(() => {
        if (nextProps.card.insert === 'true' && this.cardRef) {
        if (nextProps.card.extraAction && this.cardRef) {
          if (this.cardRef.offsetWidth !== this.state.cardwidth || this.cardRef.offsetHeight !== this.state.cardheight) {
            this.setState({
              cardwidth: this.cardRef.offsetWidth,
@@ -311,7 +311,7 @@
  componentDidMount() {
    const { card } = this.props
    if (card.insert === 'true' && this.cardRef) {
    if (card.extraAction && this.cardRef) {
      this.setState({
        cardwidth: this.cardRef.offsetWidth,
        cardheight: this.cardRef.offsetHeight
@@ -322,7 +322,7 @@
  componentDidUpdate() {
    const { card } = this.props
    if (card.insert === 'true' && this.cardRef) {
    if (card.extraAction && this.cardRef) {
      if (this.cardRef.offsetWidth !== this.state.cardwidth || this.cardRef.offsetHeight !== this.state.cardheight) {
        this.setState({
          cardwidth: this.cardRef.offsetWidth,
@@ -437,7 +437,7 @@
            </ul> : null
          }
        </div>
        {card.insert === 'true' ?
        {card.extraAction ?
          <div className={'ant-card chart-card chart-card-insert' + outclass} style={{ width: cardwidth, height: cardheight }} >
            <Icon type="plus" style={cardwidth > cardheight ? {fontSize: cardheight / 2 + 'px', lineHeight: cardheight + 'px'} : {fontSize: cardwidth / 2 + 'px', lineHeight: cardheight + 'px'}} />
          </div> : null
src/templates/sharecomponent/cardcomponent/index.scss
@@ -30,7 +30,7 @@
  .chart-card-insert {
    text-align: center;
    i {
      color: #26C281;
      color: #1890ff;
    }
  }
src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx
@@ -224,7 +224,7 @@
          item.hidden = false
        } else if (item.key === 'switch' && _type === 'card') {
          item.hidden = false
        } else if (item.key === 'insert') {
        } else if (item.key === 'extraAction') {
          item.hidden = _type !== 'card'
        } else if (item.key === 'bgfield') {
          item.hidden = _type !== 'card'
@@ -280,7 +280,7 @@
            item.hidden = false
          } else if (item.key === 'switch' && value === 'card') {
            item.hidden = false
          } else if (item.key === 'insert') {
          } else if (item.key === 'extraAction') {
            item.hidden = value !== 'card'
          } else if (item.key === 'bgfield') {
            item.hidden = value !== 'card'
@@ -401,7 +401,12 @@
      } else if (item.type === 'select') { // 下拉搜索
        fields.push(
          <Col span={12} key={index}>
            <Form.Item label={item.label}>
            <Form.Item label={item.tooltip ?
              <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
                <Icon type="question-circle" />
                {item.label}
              </Tooltip> : item.label
            }>
              {getFieldDecorator(item.key, {
                initialValue: item.initVal || '',
                rules: [
@@ -462,7 +467,12 @@
      } else if (item.type === 'multiselect') { // 多选
        fields.push(
          <Col span={12} key={index}>
            <Form.Item label={item.label}>
            <Form.Item label={item.tooltip ?
              <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
                <Icon type="question-circle" />
                {item.label}
              </Tooltip> : item.label
            }>
              {getFieldDecorator(item.key, {
                initialValue: item.initVal || []
              })(
src/templates/sharecomponent/chartgroupcomponent/index.jsx
@@ -138,10 +138,17 @@
      item.actions = item.actions.filter(cell => keys.includes(cell))
    }
    let extraActions = config.action.filter(item => ['pop', 'prompt', 'exec'].includes(item.OpenType) && item.Ot === 'notRequired')
    extraActions = extraActions.map(cell => ({value: cell.uuid, text: cell.label}))
    if (item.extraAction && extraActions.filter(cell => cell.uuid === item.extraAction).length === 0) {
      item.extraAction = ''
    }
    this.setState({
      card: item,
      modaltype: _type,
      formlist: getChartViewForm(item, this.props.sysRoles, _columns, actions)
      formlist: getChartViewForm(item, this.props.sysRoles, _columns, actions, extraActions)
    })
  }
src/templates/zshare/formconfig.jsx
@@ -1576,12 +1576,13 @@
/**
 * @description 获取图表视图外部配置表单
 * @param {object} card       // 搜索条件对象
 * @param {Array}  roleList   // 角色列表-黑名单
 * @param {Array}  columns    // 显示列
 * @param {Array}  actions    // 按钮组
 * @param {object} card         // 搜索条件对象
 * @param {Array}  roleList     // 角色列表-黑名单
 * @param {Array}  columns      // 显示列
 * @param {Array}  actions      // 按钮组excel
 * @param {Array}  extraActions // 常规按钮
 */
export function getChartViewForm (card, roleList = [], _columns, actions) {
export function getChartViewForm (card, roleList = [], _columns, actions, extraActions) {
  let _charts = [{
    value: 'line',
    text: '折线图'
@@ -1739,19 +1740,13 @@
      }]
    },
    {
      type: 'radio',
      key: 'insert',
      label: '添加卡片',
      initVal: card.insert || 'false',
      tooltip: '选择显示添加卡片,且存在操作类型为添加的按钮时,卡片尾部会增加添加功能卡片(只显示第一个添加按钮)',
      type: 'select',
      key: 'extraAction',
      label: '扩展卡片',
      initVal: card.extraAction || '',
      tooltip: '绑定不选行的按钮,卡片尾部会增加功能卡片',
      required: false,
      options: [{
        value: 'true',
        text: '显示'
      }, {
        value: 'false',
        text: '隐藏'
      }]
      options: extraActions
    },
    {
      type: 'multiselect',
@@ -1764,8 +1759,9 @@
    {
      type: 'multiselect',
      key: 'actions',
      label: '按钮组',
      label: '扩展按钮',
      initVal: card.actions || [],
      tooltip: '可绑定已有的excel导入、导出按钮',
      required: false,
      options: actions
    }