king
2023-06-20 71841e36f60db340ff2abe1d100b4960514a9cc5
Merge branch 'master' into positec
9个文件已修改
325 ■■■■ 已修改文件
src/menu/components/card/cardcellcomponent/dragaction/card.jsx 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcellcomponent/elementform/index.jsx 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcellcomponent/formconfig.jsx 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcellcomponent/index.jsx 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/form/formaction/actionform/index.jsx 248 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pc/components/navbar/normal-navbar/menusetting/menutable/index.scss 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/card/cardcellList/index.jsx 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/tabs/antv-tabs/index.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/components/tree/antd-tree/index.jsx 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/card/cardcellcomponent/dragaction/card.jsx
@@ -92,6 +92,9 @@
        <div className={'ant-mk-text line' + (card.height || '')} style={{height: card.innerHeight || 'auto'}}>{val}</div>
      )
    } else if (card.eleType === 'icon') {
      if (card.tipType === 'text') {
        return <div className={'ant-mk-text line' + (card.height || '')} style={{height: card.innerHeight || 'auto'}}>{card.value || card.field || ''}</div>
      }
      return (<MkIcon style={{height: card.innerHeight || 'auto'}} className="ant-mk-icon" type={card.icon || 'bell'}/>)
    } else if (card.eleType === 'slider') {
      let val = card.value ? (card.value / card.maxValue) * 100 : 30
src/menu/components/card/cardcellcomponent/elementform/index.jsx
@@ -19,7 +19,7 @@
  number: ['eleType', 'datatype', 'width', 'height', 'prefix', 'postfix', 'noValue', 'fixStyle', 'alignItems'],
  picture: ['eleType', 'datatype', 'width', 'lenWidRadio', 'maxWidth', 'link', 'noValue'],
  video: ['eleType', 'datatype', 'width', 'aspectRatio', 'autoPlay', 'loop', 'startTime', 'noValue', 'posterType'],
  icon: ['eleType', 'datatype', 'width', 'tooltip'],
  icon: ['eleType', 'datatype', 'tipType', 'width', 'tooltip'],
  slider: ['eleType', 'datatype', 'width', 'color', 'maxValue', 'showInfo', 'showType', 'strokeWidth', 'strokeLinecap', 'trailColor'],
  splitline: ['eleType', 'color', 'width', 'borderWidth'],
  barcode: ['eleType', 'datatype', 'width', 'barHeight', 'displayValue', 'interval', 'noValue'],
@@ -199,6 +199,8 @@
    } else if (this.record.eleType === 'icon') {
      if (this.record.datatype === 'dynamic') {
        _options.push('field', 'noValue')
      } else if (this.record.tipType === 'text') {
        _options.push('value', 'height')
      } else {
        _options.push('icon')
      }
@@ -336,7 +338,7 @@
          return item
        })
      })
    } else if (['datatype', 'showInfo', 'showType', 'fixStyle', 'posterType', 'eval', 'linkType'].includes(key)) {
    } else if (['datatype', 'showInfo', 'showType', 'fixStyle', 'posterType', 'eval', 'linkType', 'tipType'].includes(key)) {
      let _options = this.getOptions()
      this.setState({
src/menu/components/card/cardcellcomponent/formconfig.jsx
@@ -6,12 +6,14 @@
 * @param {*} type
 */
export function getCardCellForm (card, cards, cardCell) {
  let appType = sessionStorage.getItem('appType')
  let _options = [
    { value: 'text', text: '文本'},
    { value: 'number', text: '数值'},
    { value: 'picture', text: '图片'},
    { value: 'video', text: '视频'},
    { value: 'icon', text: '图标'},
    { value: 'icon', text: '提示(图标)'},
    { value: 'slider', text: '进度条'},
    { value: 'splitline', text: '分割线'},
    { value: 'barcode', text: '条形码'},
@@ -36,7 +38,6 @@
  if (card.eleType === 'icon' && card.datatype === 'dynamic' && !card.field) { // 拖拽添加类型转换
    card.datatype = 'static'
  }
  let appType = sessionStorage.getItem('appType')
  let tooltip = ''
  if (cardCell.$cardType === 'extendCard') {
@@ -130,6 +131,17 @@
      ]
    },
    {
      type: 'radio',
      key: 'tipType',
      label: '提示内容',
      initVal: card.tipType || 'icon',
      required: false,
      options: [
        { value: 'icon', text: '图标' },
        { value: 'text', text: '文本' }
      ]
    },
    {
      type: 'select',
      key: 'field',
      label: '字段',
src/menu/components/card/cardcellcomponent/index.jsx
@@ -160,6 +160,8 @@
      options = ['background', 'border', 'margin']
    } else if (element.eleType === 'color') {
      options = ['border', 'margin', 'padding']
    } else if (element.eleType === 'number' || element.eleType === 'icon') {
      options.push('display')
    } else if (element.eleType === 'text') {
      options[0] = 'font2'
      options.push('display')
@@ -202,7 +204,7 @@
      _card.style = style
      let line = _card.height || null
      if (['currentDate', 'sequence', 'icon'].includes(_card.eleType)) {
      if (['currentDate', 'sequence'].includes(_card.eleType) || (_card.eleType === 'icon' && _card.tipType !== 'text')) {
        line = 1
      }
@@ -367,7 +369,7 @@
        if (cell.uuid === res.uuid) {
          res.style = cell.style || {}
          if (res.eleType !== 'text') {
          if (!['text', 'number', 'icon'].includes(res.eleType)) {
            delete res.style.display
          }
          
@@ -377,7 +379,7 @@
          } else if (['text', 'number', 'formula', 'currentDate', 'sequence', 'icon'].includes(res.eleType)) {
            let line = res.height || null
            if (['currentDate', 'sequence', 'icon'].includes(res.eleType)) {
            if (['currentDate', 'sequence'].includes(res.eleType) || (res.eleType === 'icon' && res.tipType !== 'text')) {
              line = 1
            }
src/menu/components/form/formaction/actionform/index.jsx
@@ -1,7 +1,6 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
// import { fromJS } from 'immutable'
import { Form, Row, Col, Input, Select, Radio, Tooltip, InputNumber, Cascader, notification } from 'antd'
import { Form, Row, Col, Input, Select, Radio, Tooltip, InputNumber, Cascader } from 'antd'
import { QuestionCircleOutlined } from '@ant-design/icons'
import { formRule } from '@/utils/option.js'
@@ -17,89 +16,102 @@
  }
  state = {
    formlist: null,  // 表单信息
    interType: null, // 接口类型:内部、外部
    procMode: null,  // 参数方式
    linkmenu: null,
    callbackType: null
    formlist: null
  }
  record = {}
  
  UNSAFE_componentWillMount () {
    const { card } = this.props
    this.props.formlist.forEach(item => {
      this.record[item.key] = item.initVal
    })
    let _intertype = card.intertype || 'system'  // 接口类型
    let _procMode = card.procMode || 'system'    // 参数请求方式
    let _callbackType = card.callbackType || 'script'
    let _options = this.getOptions(_intertype, _procMode, card.linkmenu, _callbackType)
    let { shows, reRequired, reReadonly } = this.getMutilOptions()
    this.setState({
      interType: _intertype,
      procMode: _procMode,
      callbackType: _callbackType,
      linkmenu: card.linkmenu,
      formlist: this.props.formlist.map(item => {
        if (item.key === 'innerFunc' && _procMode === 'inner') {
          item.required = true
        item.hidden = !shows.includes(item.key)
        item.initVal = this.record[item.key]
        if (reRequired[item.key] !== undefined) {
          item.required = reRequired[item.key]
        }
        if (reReadonly[item.key] !== undefined) {
          item.readonly = reReadonly[item.key]
        }
        item.hidden = !_options.includes(item.key)
        return item
      })
    })
  }
  getOptions = (_intertype, _procMode, linkmenu, _callbackType) => {
    const { card } = this.props
  getMutilOptions = () => {
    let shows = []
    let reRequired = {}
    let reReadonly = {}
    if (card.type === 'prev') {
      return ['type', 'label', 'enable', 'actionType']
    } else if (card.type === 'next') {
      return ['type', 'label', 'enable', 'actionType']
    } else if (card.type === 'close') {
      return ['type', 'label', 'enable']
    }
    let _options = ['type', 'label', 'intertype', 'Ot', 'execSuccess', 'syncComponent', 'anchors', 'linkmenu', 'enable', 'output', 'reload'] // 选项列表
    if (_intertype === 'custom') {
      _options.pop()
      _options.push('procMode', 'interface', 'callbackType', 'proInterface', 'method', 'cross', 'stringify')
      if (_procMode === 'system') {
        _options.push('sql', 'sqlType')
      } else {
        _options.push('innerFunc')
      }
      if (_callbackType === 'func') {
        _options.push('callbackFunc')
      } else if (_callbackType !== 'none') {
        _options.push('cbTable')
      }
    } else if (_intertype === 'outer') {
      _options.push('procMode', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackType')
      if (_procMode === 'system') {
        _options.push('sql', 'sqlType')
      } else if (_procMode === 'inner') {
        _options.push('innerFunc')
      }
      if (_callbackType === 'func') {
        _options.push('callbackFunc')
      } else if (_callbackType !== 'none') {
        _options.push('cbTable')
      }
    } else if (_intertype === 'inner') {
      _options.push('innerFunc')
    if (this.record.type === 'prev') {
      shows = ['type', 'label', 'enable', 'actionType']
    } else if (this.record.type === 'next') {
      shows = ['type', 'label', 'enable', 'actionType']
    } else if (this.record.type === 'close') {
      shows = ['type', 'label', 'enable']
    } else {
      _options.push('sql', 'sqlType')
    }
    if (linkmenu && linkmenu !== 'goback') {
      _options.push('open')
      shows = ['type', 'label', 'intertype', 'Ot', 'execSuccess', 'syncComponent', 'anchors', 'linkmenu', 'enable', 'output', 'reload'] // 选项列表
      if (this.record.intertype === 'custom') {
        shows.pop()
        shows.push('procMode', 'interface', 'callbackType', 'proInterface', 'method', 'cross', 'stringify')
        if (this.record.procMode === 'system') {
          shows.push('sql', 'sqlType')
        } else if (this.record.procMode === 'inner') {
          shows.push('innerFunc')
        }
        if (this.record.callbackType === 'func') {
          shows.push('callbackFunc')
        } else if (this.record.callbackType !== 'none') {
          shows.push('cbTable')
        }
      } else if (this.record.intertype === 'outer') {
        shows.push('procMode', 'sysInterface', 'interface', 'outerFunc', 'callbackType')
        if (this.record.procMode === 'system') {
          shows.push('sql', 'sqlType')
        } else if (this.record.procMode === 'inner') {
          shows.push('innerFunc')
        }
        if (this.record.callbackType === 'func') {
          shows.push('callbackFunc')
        } else if (this.record.callbackType !== 'none') {
          shows.push('cbTable')
        }
        reRequired.outerFunc = false
        if (this.record.sysInterface === 'false') {
          reReadonly.interface = false
          reRequired.interface = true
          shows.push('proInterface')
        } else if (this.record.sysInterface === 'true') {
          reReadonly.interface = true
          reRequired.interface = false
          reRequired.outerFunc = true
        }
      } else if (this.record.intertype === 'inner') {
        shows.push('innerFunc')
      } else {
        shows.push('sql', 'sqlType')
      }
      if (this.record.linkmenu && this.record.linkmenu !== 'goback') {
        shows.push('open')
      }
    }
    return _options
    return {
      shows,
      reRequired,
      reReadonly
    }
  }
  /**
@@ -109,79 +121,35 @@
   * 3、切换标签类型,重置可选标签
   */
  optionChange = (key, value) => {
    const { procMode, linkmenu, callbackType } = this.state
    this.record[key] = value
    let _fieldval = {}
    if (key === 'intertype') {
      let _options = this.getOptions(value, procMode, linkmenu, callbackType)
      this.setState({
        interType: value,
        formlist: this.state.formlist.map(item => {
          item.hidden = !_options.includes(item.key)
          if (item.key === 'interface') {
            item.readonly = false
          } else if (item.key === 'sysInterface') {
            item.initVal = 'false'
          }
          return item
        })
      })
    } else if (key === 'procMode') {
      let _options = this.getOptions(this.state.interType, value, linkmenu, callbackType)
      this.setState({
        procMode: value,
        formlist: this.state.formlist.map(item => {
          item.hidden = !_options.includes(item.key)
          if (item.key === 'procMode') {
            item.initVal = value
          }
          return item
        })
      })
    } else if (key === 'linkmenu') {
      let _options = this.getOptions(this.state.interType, procMode, value, callbackType)
      this.setState({
        linkmenu: value,
        formlist: this.state.formlist.map(item => {
          item.hidden = !_options.includes(item.key)
          return item
        })
      })
    } else if (key === 'callbackType') {
      let _options = this.getOptions(this.state.interType, procMode, linkmenu, value)
      this.setState({
        callbackType: value,
        formlist: this.state.formlist.map(item => {
          if (item.key === 'callbackType') {
            item.initVal = value
          }
          item.hidden = !_options.includes(item.key)
          return item
        })
      })
    } else if (key === 'sysInterface') {
    if (key === 'sysInterface') {
      if (value === 'true') {
        this.props.form.setFieldsValue({
          interface: window.GLOB.mainSystemApi || ''
        })
        _fieldval.interface = window.GLOB.mainSystemApi || ''
        this.record.interface = window.GLOB.mainSystemApi || ''
      }
      this.setState({
        formlist: this.state.formlist.map(item => {
          if (item.key === 'interface' && value === 'true') {
            item.readonly = true
          } else if (item.key === 'interface') {
            item.readonly = false
          }
          return item
        })
      })
    }
    let { shows, reRequired, reReadonly } = this.getMutilOptions()
    this.setState({
      formlist: this.state.formlist.map(item => {
        item.hidden = !shows.includes(item.key)
        item.initVal = this.record[item.key]
        if (reRequired[item.key] !== undefined) {
          item.required = reRequired[item.key]
        }
        if (reReadonly[item.key] !== undefined) {
          item.readonly = reReadonly[item.key]
        }
        return item
      })
    }, () => {
      this.props.form.setFieldsValue(_fieldval)
    })
  }
  handleSubmit = (e) => {
@@ -394,7 +362,7 @@
                  }
                ]
              })(
                <Cascader options={item.options || []} expandTrigger="hover" placeholder=""/>
                <Cascader onChange={(value) => {this.optionChange(item.key, value)}} options={item.options || []} expandTrigger="hover" placeholder=""/>
              )}
            </Form.Item>
          </Col>
@@ -409,14 +377,6 @@
    return new Promise((resolve, reject) => {
      this.props.form.validateFieldsAndScroll((err, values) => {
        if (!err) {
          if (values.intertype === 'outer' && values.sysInterface === 'true' && !values.outerFunc) {
            notification.warning({
              top: 92,
              message: '使用单点系统请填写外部函数!',
              duration: 10
            })
            return
          }
          resolve(values)
        } else {
          reject(err)
src/pc/components/navbar/normal-navbar/menusetting/menutable/index.scss
@@ -31,8 +31,8 @@
  tr:not(.classify) + .ant-table-expanded-row {
    display: none;
  }
  td[colspan="6"] {
    padding: 5px 0px 5px 5px!important;
  td[colspan="5"] {
    padding: 5px 0px 5px 0px!important;
  }
  .ant-table-body {
    margin: 0!important;
src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -524,6 +524,8 @@
        if (card.datatype === 'dynamic') {
          icon = data[card.field] || ''
        } else if (card.tipType === 'text') {
          icon = card.value
        } else {
          icon = card.icon
        }
@@ -537,16 +539,28 @@
        } else {
          val = card.tooltip
        }
        contents.push(
          <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
            <div style={card.style}>
              {val ? <Tooltip title={val}>
                <MkIcon className="ant-mk-icon" style={{height: card.innerHeight}} type={icon}/>
              </Tooltip> : <MkIcon className="ant-mk-icon" style={{height: card.innerHeight}} type={icon}/>}
        if (card.tipType === 'text') {
          contents.push(
            <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
              <div style={card.style}>
                {val ? <Tooltip title={val}>
                  <div className={'ant-mk-text line' + (card.height || '')} style={{height: card.innerHeight}}>{icon}</div>
                </Tooltip> : <div className={'ant-mk-text line' + (card.height || '')} style={{height: card.innerHeight}}>{icon}</div>}
              </div>
            </div>
          </div>
        )
          )
        } else {
          contents.push(
            <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
              <div style={card.style}>
                {val ? <Tooltip title={val}>
                  <MkIcon className="ant-mk-icon" style={{height: card.innerHeight}} type={icon}/>
                </Tooltip> : <MkIcon className="ant-mk-icon" style={{height: card.innerHeight}} type={icon}/>}
              </div>
            </div>
          )
        }
      } else if (card.eleType === 'slider') {
        let val = 0
        let color = card.color
src/tabviews/custom/components/tabs/antv-tabs/index.jsx
@@ -36,7 +36,7 @@
        let val = ''
        Object.keys(data).forEach(key => {
          if (key.toLowerCase() === _tabs.setting.controlField) {
            val = data[key]
            val = data[key] + ''
          }
        })
        _tabs.subtabs = config.subtabs.filter(tab => {
@@ -96,7 +96,7 @@
        let val = ''
        Object.keys(data).forEach(key => {
          if (key.toLowerCase() === tabs.setting.controlField) {
            val = data[key]
            val = data[key] + ''
          }
        })
        this.setState({
src/tabviews/custom/components/tree/antd-tree/index.jsx
@@ -339,6 +339,7 @@
      if (pval === config.wrap.mark) {
        parentNodes.push({
          ...item,
          mk_floor: 1,
          $$uuid: uuid,
          $title: item[config.wrap.labelField] || '',
          $key: val,
@@ -355,7 +356,7 @@
      }
    })
    let _treedata = this.getTree(parentNodes, _options)
    let _treeNodes = []
    if (!searchkey) {
@@ -437,6 +438,7 @@
      // 添加菜单的子元素
      options = options.filter(option => {
        if (option.$parentId === parent.$key) {
          option.mk_floor = parent.mk_floor + 1
          parent.children.push(option)
          return false
        }