king
2023-08-27 da64ab0923bf8817fc8599a6e37b953ce38f64c8
src/templates/zshare/modalform/modaleditable/index.jsx
@@ -4,7 +4,6 @@
import { Table, Input, Popconfirm, Form, message } from 'antd'
import { ArrowUpOutlined, ArrowDownOutlined, DeleteOutlined, PlusOutlined, SwapOutlined } from '@ant-design/icons'
import { formRule } from '@/utils/option.js'
import Utils from '@/utils/utils.js'
import './index.scss'
@@ -35,16 +34,8 @@
  }
  save = e => {
    const { record, handleSave, datatype } = this.props
    const { record, handleSave } = this.props
    this.form.validateFields((error, values) => {
      if (datatype === 'number') {
        Object.keys(values).forEach(key => {
          values[key] = parseFloat(values[key])
          if (isNaN(values[key])) {
            values[key] = 0
          }
        })
      }
      handleSave({ ...record, ...values })
      if (error && error[e.currentTarget.id]) {
        return
@@ -55,16 +46,8 @@
  renderCell = form => {
    this.form = form
    const { children, dataIndex, record, datatype } = this.props
    const { children, dataIndex, record } = this.props
    const { editing } = this.state
    let rules = []
    if (datatype === 'number') {
      rules.push({
        pattern: /^(-?\d+)(\.\d+)?$/,
        message: formRule.input.numbermsg
      })
    }
    return editing ? (
      <Form.Item style={{ margin: '0 -5px 0 -5px' }}>
@@ -73,8 +56,7 @@
            {
              required: dataIndex === 'Text',
              message: '不可为空.',
            },
            ...rules
            }
          ],
          initialValue: record[dataIndex]
        })(<Input ref={node => (this.input = node)} autoComplete="off" onPressEnter={this.save} onBlur={this.save} />)}
@@ -139,52 +121,6 @@
      count: data.length
    })
  }
  // changeDatatype = (column) => {
  //   const { columns, dataSource } = this.state
  //   let value = column.datatype !== 'number' ? 'number' : 'string'
  //   let _data = dataSource.map(item => {
  //     let val = item[column.dataIndex]
  //     if (value === 'number') {
  //       val = parseFloat(val)
  //       if (isNaN(val)) {
  //         val = 0
  //       }
  //     } else {
  //       val = '' + val
  //     }
  //     item[column.dataIndex] = val
  //     return item
  //   })
  //   this.setState({
  //     dataSource: _data,
  //     columns: columns.map(col => {
  //       if (col.dataIndex === column.dataIndex) {
  //         col.datatype = value
  //       }
  //       if (col.dataIndex !== 'operation') {
  //         col.title = <div>
  //           {col.$title}
  //           {/* <Popconfirm
  //             title={`确定切换为${col.datatype === 'number' ? '文本' : '数值'}吗?`}
  //             overlayClassName="popover-confirm"
  //             onConfirm={() => this.changeDatatype(col)
  //           }>
  //             <SwapOutlined style={{ color: col.datatype === 'number' ? '#1890ff' : ''}} />
  //           </Popconfirm> */}
  //         </div>
  //       }
  //       return col
  //     })
  //   }, () => {
  //     this.props.onChange(_data)
  //   })
  // }
  handleUpDown = (record, direction) => {
    const { dataSource } = this.state
@@ -292,7 +228,6 @@
    let _dataSource = fromJS(dataSource).toJS()
    let fields = []
    let dataItem = ''
    let subFields = linkSubFields.filter(m => m !== 'Value' && m !== 'Text')
    if (subFields.length > 0) {
@@ -304,19 +239,14 @@
        return data
      })
      dataItem = _dataSource ? _dataSource[0] : ''
      fields = subFields.map(field => {
        return {
          title: transfield[field] || field,
          $title: transfield[field] || field,
          dataIndex: field,
          editable: true,
          datatype: dataItem && typeof(dataItem[field]) === 'number' ? 'number' : 'string'
        }
      })
    } else {
      dataItem = _dataSource ? _dataSource[0] : ''
    }
    let columns = [
@@ -324,15 +254,13 @@
        title: 'Value',
        $title: 'Value',
        dataIndex: 'Value',
        editable: true,
        datatype: dataItem && typeof(dataItem.Value) === 'number' ? 'number' : 'string'
        editable: true
      },
      {
        title: 'Text',
        $title: 'Text',
        dataIndex: 'Text',
        editable: true,
        datatype: dataItem && typeof(dataItem.Text) === 'number' ? 'number' : 'string'
        editable: true
      },
      ...fields,
      {
@@ -363,8 +291,7 @@
        title: 'ParentID',
        $title: 'ParentID',
        dataIndex: 'ParentID',
        editable: true,
        datatype: dataItem && typeof(dataItem.ParentID) === 'number' ? 'number' : 'string'
        editable: true
      })
    }
@@ -373,13 +300,6 @@
        if (col.dataIndex !== 'operation') {
          col.title = <div>
            {col.$title}
            {/* <Popconfirm
              title={`确定切换为${col.datatype === 'number' ? '文本' : '数值'}吗?`}
              overlayClassName="popover-confirm"
              onConfirm={() => this.changeDatatype(col)
            }>
              <SwapOutlined style={{ color: col.datatype === 'number' ? '#1890ff' : ''}} />
            </Popconfirm> */}
          </div>
        }
        return col
@@ -460,8 +380,7 @@
          editable: col.editable,
          dataIndex: col.dataIndex,
          title: col.title,
          datatype: col.datatype,
          handleSave: this.handleSave,
          handleSave: this.handleSave
        })
      }
    })