king
2023-10-24 c81296b147b3b6e578a241e21bae7bded4b5f6c6
src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
@@ -407,9 +407,9 @@
      }
      if (col.marks) {
        let mark = getMark(col.marks, record, style)
        style = style ? {...style} : {}
        style = mark.style
        let mark = getMark(col.marks, record, style)
        if (mark.icon) {
          if (mark.position === 'front') {
@@ -433,23 +433,23 @@
      if (col.editable === 'true' && !disabled) {
        if (editing) {
          if (!col.editType || col.editType === 'text') {
            return (<td className="editing_table_cell">
            return (<td onClick={(e) => e.stopPropagation()} className="editing_table_cell">
              <Input className={err ? 'has-error' : ''} title={err} id={col.uuid + record.$$uuid} defaultValue={value} onChange={(e) => this.onChange(e.target.value)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
            </td>)
          } else if (col.editType === 'date') {
            return (<td className="editing_table_cell">
            return (<td onClick={(e) => e.stopPropagation()} className="editing_table_cell">
              <CusDatePicker config={col} value={record[col.field] || null} open={true} onChange={this.onDateChange} blur={() => this.setState({editing: false})}/>
            </td>)
          } else if (col.editType === 'switch') {
            let _value = record[col.field] !== undefined ? record[col.field] : ''
            return (<td className="editing_table_cell">
            return (<td onClick={(e) => e.stopPropagation()} className="editing_table_cell">
              <CusSwitch config={col} defaultValue={_value} autoFocus={true} onChange={this.onSwitchChange} onBlur={this.switchBlur}/>
            </td>)
          } else {
            let _value = record[col.field] !== undefined ? record[col.field] : ''
            return (<td className="editing_table_cell">
            return (<td onClick={(e) => e.stopPropagation()} className="editing_table_cell">
              <Select
                showSearch
                defaultValue={_value}
@@ -465,7 +465,7 @@
            </td>)
          }
        } else {
          return (<td className={className + ' pointer'} style={style}>
          return (<td onClick={(e) => e.stopPropagation()} className={className + ' pointer'} style={style}>
            <div className="mk-mask" id={col.uuid + record.$$uuid} onClick={this.focus}></div>{content}
          </td>)
        }
@@ -507,9 +507,9 @@
      }
      if (col.marks) {
        let mark = getMark(col.marks, record, style)
        style = style ? {...style} : {}
        style = mark.style
        let mark = getMark(col.marks, record, style)
        if (mark.icon) {
          if (mark.position === 'front') {
@@ -536,11 +536,11 @@
          if (col.noValue === 'hide' && value === 0) {
            val = ''
          }
          return (<td className="editing_table_cell">
          return (<td onClick={(e) => e.stopPropagation()} className="editing_table_cell">
            <InputNumber className={err ? 'has-error' : ''} precision={col.decimal || 0} title={err} id={col.uuid + record.$$uuid} defaultValue={val} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
          </td>)
        } else {
          return (<td className={className + ' pointer'} style={style}>
          return (<td onClick={(e) => e.stopPropagation()} className={className + ' pointer'} style={style}>
            <div className="mk-mask" id={col.uuid + record.$$uuid} onClick={this.focus}></div>{content}
          </td>)
        }
@@ -612,9 +612,9 @@
      }
      if (col.marks) {
        let mark = getMark(col.marks, record, style)
        style = style ? {...style} : {}
        style = mark.style
        let mark = getMark(col.marks, record, style)
        if (mark.icon) {
          if (mark.position === 'front') {
@@ -840,6 +840,7 @@
    if (!col) return (<td {...resProps} className={className} style={style}/>)
    let disabled = false
    let editable = false
    if (col.ctrlField) {
      disabled = col.ctrlValue.includes(record[col.ctrlField])
    }
@@ -847,6 +848,7 @@
    let children = null
    if (col.type === 'text') {
      if (col.editable === 'true' && !disabled) {
        editable = true
        let _value = record[col.field] !== undefined ? record[col.field] : ''
        
        if (!col.editType || col.editType === 'text') {
@@ -901,9 +903,9 @@
        }
        if (col.marks) {
          let mark = getMark(col.marks, record, style)
          style = style ? {...style} : {}
          style = mark.style
          let mark = getMark(col.marks, record, style)
          if (mark.icon) {
            if (mark.position === 'front') {
@@ -932,6 +934,7 @@
      }
    } else if (col.type === 'number') {
      if (col.editable === 'true' && !disabled) {
        editable = true
        let _value = record[col.field] !== undefined ? record[col.field] : ''
        if (col.noValue === 'hide' && _value === 0) {
@@ -976,9 +979,9 @@
        }
        if (col.marks) {
          let mark = getMark(col.marks, record, style)
          style = style ? {...style} : {}
          style = mark.style
          let mark = getMark(col.marks, record, style)
          if (mark.icon) {
            if (mark.position === 'front') {
@@ -1070,9 +1073,9 @@
      }
      if (col.marks) {
        let mark = getMark(col.marks, record, style)
        style = style ? {...style} : {}
        style = mark.style
        let mark = getMark(col.marks, record, style)
        if (mark.icon) {
          if (mark.position === 'front') {
@@ -1105,6 +1108,10 @@
      )
    }
    if (editable) {
      return (<td onClick={(e) => e.stopPropagation()} className={'editing_all_table_cell ' + className} style={style}>{children}</td>)
    }
    return (<td className={'editing_all_table_cell ' + className} style={style}>{children}</td>)
  }
}
@@ -1121,6 +1128,8 @@
    loading: PropTypes.bool,         // 表格加载中
    refreshdata: PropTypes.func,     // 表格中排序列、页码的变化时刷新
    chgSelectData: PropTypes.func,
    allSearch: PropTypes.any,
    colsCtrls: PropTypes.any
  }
  state = {
@@ -1137,11 +1146,13 @@
    pageOptions: [],
    deForms: null,
    visible: false,
    midData: null
    midData: null,
    allColumns: null,
    reseting: false
  }
  UNSAFE_componentWillMount () {
    const { setting, fields, columns, BID } = this.props
    const { setting, fields, columns, BID, colsCtrls } = this.props
    let orderfields = {}
    let _columns = []
@@ -1155,7 +1166,7 @@
        let cell = null
  
        if (item.type === 'colspan') {
          cell = { title: item.label, align: item.Align }
          cell = { title: item.label, align: item.Align, $key: item.uuid }
          cell.children = getColumns(item.subcols)
        } else {
          if (item.editable === 'true') {
@@ -1210,7 +1221,8 @@
            title: item.editable === 'true' ? <span>{item.label}<EditOutlined className="system-color mk-edit-sign"/></span> : item.label,
            sorter: (item.field || item.sortField) && item.IsSort === 'true',
            width: item.Width || 120,
            $type: item.type,
            // $type: item.type,
            $key: item.uuid,
            onCell: record => ({
              record,
              col: item,
@@ -1250,9 +1262,16 @@
      pageOptions = pageOptions.sort((a, b) => a - b)
    }
    let allColumns = null
    if (colsCtrls) {
      allColumns = [..._columns]
      _columns = this.getCurColumns(_columns, this.props.allSearch)
    }
    this.setState({
      forms,
      signForms,
      allColumns,
      pageSize: setting.pageSize || 10,
      pageOptions,
      columns: _columns,
@@ -1314,6 +1333,47 @@
    MKEmitter.removeListener('changeRecord', this.changeRecord)
  }
  getCurColumns = (columns, allSearch) => {
    const { colsCtrls } = this.props
    let values = {}
    allSearch.forEach(item => {
      values[item.key] = item.value
    })
    let cols = null
    colsCtrls.some(item => {
      let originVal = item.field.map(f => values[f] || '').join('')
      let contrastVal = item.contrastValue
      let result = false
      if (item.match === '=') {
        result = originVal === contrastVal
      } else if (item.match === '!=') {
        result = originVal !== contrastVal
      } else {
        originVal = isNaN(originVal) ? originVal : +originVal
        contrastVal = isNaN(contrastVal) ? contrastVal : +contrastVal
        if (item.match === '>') {
          result = originVal > contrastVal
        } else if (item.match === '<') {
          result = originVal < contrastVal
        }
      }
      if (!result) return false
      cols = item.cols
      return true
    })
    if (cols) {
      return columns.filter(col => cols.includes(col.$key))
    }
    return columns
  }
  transferData = (menuid, data, type) => {
    const { MenuID, setting } = this.props
    const { edData, signForms } = this.state
@@ -1360,7 +1420,24 @@
  }
  updateMutil = (data) => {
    const { setting } = this.props
    const { setting, colsCtrls, allSearch } = this.props
    const { allColumns } = this.state
    if (colsCtrls) {
      this.setState({
        columns: this.getCurColumns(allColumns, allSearch),
        reseting: true,
        edData: data,
        visible: false,
        midData: null
      }, () => {
        this.setState({
          reseting: false
        })
      })
      return
    }
    if (setting.editType === 'multi' && data.length > 0) {
      this.setState({edData: []}, () => {
@@ -1554,7 +1631,21 @@
      return item
    })
    this.setState({columns: [], edData: []}, () => {
    let _cols = this.state.allColumns
    if (_cols) {
      _cols = _cols.map(item => {
        if (reCols[item.dataIndex]) {
          item.onCell = record => ({
            record,
            col: reCols[item.dataIndex]
          })
        }
        return item
      })
    }
    this.setState({columns: [], edData: [], allColumns: _cols}, () => {
      this.setState({columns: _edColumns, edData: edData})
    })
  }
@@ -2137,7 +2228,9 @@
  render() {
    const { setting, lineMarks, submit } = this.props
    const { tableId, edData, columns, loading, pageOptions, selectedRowKeys, visible, midData } = this.state
    const { tableId, edData, columns, loading, pageOptions, selectedRowKeys, visible, midData, reseting } = this.state
    if (reseting) return null
    const components = {
      body: {