king
2023-06-10 f155ee9b2db0f4eee687b53fd2f09bd3ebb02677
src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
@@ -8,15 +8,13 @@
import Api from '@/api'
import asyncComponent from '@/utils/asyncComponent'
import Utils, { getEditTableSql, getMark } from '@/utils/utils.js'
import MkIcon from '@/components/mk-icon'
import MKEmitter from '@/utils/events.js'
import zhCN from '@/locales/zh-CN/main.js'
import enUS from '@/locales/en-US/main.js'
import CusSwitch from './cusSwitch'
import Encrypts from '@/components/encrypts'
import './index.scss'
const { Paragraph } = Typography
const MkIcon = asyncComponent(() => import('@/components/mk-icon'))
const CardCellComponent = asyncComponent(() => import('@/tabviews/custom/components/card/cardcellList'))
class BodyRow extends React.Component {
@@ -121,7 +119,7 @@
    this.setState({editing: false})
    setTimeout(() => {
      if (col.enter === '$next') {
      if (/\$next/.test(col.enter)) {
        MKEmitter.emit('nextLine', col, record.$$uuid)
      } else if (col.enter === '$sub') {
        MKEmitter.emit('subLine', col, record)
@@ -210,7 +208,7 @@
    this.setState({editing: false})
    setTimeout(() => {
      if (col.enter === '$next') {
      if (/\$next/.test(col.enter)) {
        MKEmitter.emit('nextLine', col, record.$$uuid)
      } else if (col.enter === '$sub') {
        MKEmitter.emit('subLine', col, record)
@@ -220,15 +218,7 @@
      }
    }, 50)
    let values = {}
    // if (col.editField) {
    //   values[col.field] = label
    //   values[col.editField] = val
    // } else {
      values[col.field] = val
    // }
    MKEmitter.emit('changeRecord', col.tableId, {...record, ...values})
    MKEmitter.emit('changeRecord', col.tableId, {...record, [col.field]: val})
  }
  onSelectChange = (val, option) => {
@@ -244,18 +234,13 @@
        })
      }
      // if (col.editField) {
      //   values[col.field] = _option.label
      //   values[col.editField] = val
      // } else {
        values[col.field] = val
      // }
      values[col.field] = val
    }
    this.setState({editing: false})
    setTimeout(() => {
      if (col.enter === '$next') {
      if (/\$next/.test(col.enter)) {
        MKEmitter.emit('nextLine', col, record.$$uuid)
      } else if (col.enter === '$sub') {
        MKEmitter.emit('subLine', col, record)
@@ -333,22 +318,14 @@
              <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 === 'switch') {
            let _value = ''
            // if (col.editField) {
            //   _value = record[col.editField] !== undefined ? record[col.editField] : ''
            // } else {
              _value = record[col.field] !== undefined ? record[col.field] : ''
            // }
            let _value = record[col.field] !== undefined ? record[col.field] : ''
            return (<td className="editing_table_cell">
              <CusSwitch config={col} defaultValue={_value} autoFocus={true} onChange={this.onSwitchChange} onBlur={this.switchBlur}/>
            </td>)
          } else {
            let _value = ''
            // if (col.editField) {
            //   _value = record[col.editField] !== undefined ? record[col.editField] : ''
            // } else {
              _value = record[col.field] !== undefined ? record[col.field] : ''
            // }
            let _value = record[col.field] !== undefined ? record[col.field] : ''
            return (<td className="editing_table_cell">
              <Select
                showSearch
@@ -429,7 +406,7 @@
            val = ''
          }
          return (<td className="editing_table_cell">
            <InputNumber className={err ? 'has-error' : ''} title={err} id={col.uuid + record.$$uuid} defaultValue={val} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
            <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}>
@@ -466,6 +443,10 @@
          // eslint-disable-next-line
          content = eval(content)
        } catch (e) {
          if (window.debugger) {
            console.info(content)
            console.warn(e)
          }
          content = ''
        }
      }
@@ -474,6 +455,11 @@
      if (col.noValue === 'hide' && content === 0) {
        content = ''
      }
      if (col.round && typeof(content) === 'number') {
        content = Math.round(content * col.round) / col.round
        content = content.toFixed(col.decimal)
      }
      if (content !== '') {
@@ -505,14 +491,6 @@
        style = {...style, ...col.style}
      }
      children = (
        <CardCellComponent data={record} cards={config} elements={col.elements}/>
      )
    } else if (col.type === 'action') {
      style.padding = '0px'
      if (col.style) {
        style = {...style, ...col.style}
      }
      children = (
        <CardCellComponent data={record} cards={config} elements={col.elements}/>
      )
@@ -564,7 +542,7 @@
    this.onBlur()
    setTimeout(() => {
      if (col.enter === '$next') {
      if (/\$next/.test(col.enter)) {
        MKEmitter.emit('nextLine', col, record.$$uuid)
      } else if (col.enter === '$sub') {
        MKEmitter.emit('subLine', col, record)
@@ -624,7 +602,7 @@
    const { col, record } = this.props
    setTimeout(() => {
      if (col.enter === '$next') {
      if (/\$next/.test(col.enter)) {
        MKEmitter.emit('nextLine', col, record.$$uuid)
      } else if (col.enter === '$sub') {
        MKEmitter.emit('subLine', col, record)
@@ -640,15 +618,7 @@
      }
    }, 50)
    let values = {}
    // if (col.editField) {
    //   values[col.field] = label
    //   values[col.editField] = val
    // } else {
      values[col.field] = val
    // }
    MKEmitter.emit('changeRecord', col.tableId, {...record, ...values})
    MKEmitter.emit('changeRecord', col.tableId, {...record, [col.field]: val})
  }
  onSelectChange = (val, option) => {
@@ -664,16 +634,11 @@
        })
      }
      // if (col.editField) {
      //   values[col.field] = _option.label
      //   values[col.editField] = val
      // } else {
        values[col.field] = val
      // }
      values[col.field] = val
    }
    setTimeout(() => {
      if (col.enter === '$next') {
      if (/\$next/.test(col.enter)) {
        MKEmitter.emit('nextLine', col, record.$$uuid)
      } else if (col.enter === '$sub') {
        MKEmitter.emit('subLine', col, record)
@@ -706,12 +671,7 @@
    let children = null
    if (col.type === 'text') {
      if (col.editable === 'true' && !disabled) {
        let _value = ''
        // if (col.editField) {
        //   _value = record[col.editField] !== undefined ? record[col.editField] : ''
        // } else {
          _value = record[col.field] !== undefined ? record[col.field] : ''
        // }
        let _value = record[col.field] !== undefined ? record[col.field] : ''
        
        if (!col.editType || col.editType === 'text') {
          children = (<>
@@ -775,6 +735,11 @@
            content = <span style={mark.innerStyle}>{content}</span>
          }
        }
        if (col.editable === 'true' && disabled) {
          content = <span style={{display: 'inline-block', padding: '0 6px'}}>{content}</span>
        }
        children = content
      }
    } else if (col.type === 'number') {
@@ -786,7 +751,7 @@
        }
        children = (<>
          <InputNumber className={err ? 'has-error' : ''} title={err} id={col.uuid + record.$$uuid} defaultValue={_value} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
          <InputNumber className={err ? 'has-error' : ''} title={err} precision={col.decimal || 0} id={col.uuid + record.$$uuid} defaultValue={_value} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
        </>)
      } else {
        let content = ''
@@ -837,6 +802,11 @@
            content = <span style={mark.innerStyle}>{content}</span>
          }
        }
        if (col.editable === 'true' && disabled) {
          content = <span style={{display: 'inline-block', padding: '0 6px'}}>{content}</span>
        }
        children = content
      }
    } else if (col.type === 'textarea') {
@@ -866,6 +836,10 @@
          // eslint-disable-next-line
          content = eval(content)
        } catch (e) {
          if (window.debugger) {
            console.info(content)
            console.warn(e)
          }
          content = ''
        }
      }
@@ -874,6 +848,11 @@
      if (col.noValue === 'hide' && content === 0) {
        content = ''
      }
      if (col.round && typeof(content) === 'number') {
        content = Math.round(content * col.round) / col.round
        content = content.toFixed(col.decimal)
      }
      if (content !== '') {
@@ -908,14 +887,6 @@
      children = (
        <CardCellComponent data={record} cards={config} elements={col.elements}/>
      )
    } else if (col.type === 'action') {
      style.padding = '0px'
      if (col.style) {
        style = {...style, ...col.style}
      }
      children = (
        <CardCellComponent data={record} cards={config} elements={col.elements}/>
      )
    }
    return (<td className={'editing_all_table_cell ' + className} style={style}>{children}</td>)
@@ -937,7 +908,6 @@
  }
  state = {
    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
    edData: [],
    selectedRowKeys: [],  // 表格中选中行
    tableId: '',          // 表格ID
@@ -1010,7 +980,7 @@
            onCell: record => ({
              record,
              col: item,
              config: item.type === 'custom' || item.type === 'action' ? {setting, columns: fields} : null,
              config: item.type === 'custom' ? {setting, columns: fields} : null,
            })
          }
        }
@@ -1109,7 +1079,13 @@
    if (menuid !== MenuID) return
    if (type !== 'line') {
      this.setState({edData: data})
      if (setting.editType === 'multi' && data.length > 0) {
        this.setState({edData: []}, () => {
          this.setState({edData: data})
        })
      } else {
        this.setState({edData: data})
      }
      if (setting.addable && data.length === 0) {
        setTimeout(() => {
@@ -1321,7 +1297,12 @@
    let next = edData[index + 1] || null
    
    if (next) {
      let node = document.getElementById(setting.initId + next.$$uuid)
      let nextId = setting.initId + next.$$uuid
      if (/^\$next_/.test(col.enter)) {
        nextId = col.enter.split('_')[1] + next.$$uuid
      }
      let node = document.getElementById(nextId)
      if (node) {
        if (setting.editType === 'multi') {
          if (setting.triType === 'click') {
@@ -1707,7 +1688,7 @@
      this.setState({edData: _data})
    }
    MKEmitter.emit('reloadData', this.props.MenuID, item.$$uuid, item)
    MKEmitter.emit('reloadData', this.props.MenuID, item.$$uuid)
  }
  execSuccess = (res) => {
@@ -1716,12 +1697,12 @@
    if (res && res.ErrCode === 'S') { // 执行成功
      notification.success({
        top: 92,
        message: res.ErrMesg || this.state.dict['main.action.confirm.success'],
        message: res.ErrMesg || '执行成功',
        duration: submit.stime ? submit.stime : 2
      })
    } else if (res && res.ErrCode === 'Y') { // 执行成功
      Modal.success({
        title: res.ErrMesg || this.state.dict['main.action.confirm.success']
        title: res.ErrMesg || '执行成功'
      })
    } else if (res && res.ErrCode === '-1') { // 完成后不提示
@@ -1738,6 +1719,8 @@
    if (submit.execSuccess !== 'never') {
      MKEmitter.emit('refreshByButtonResult', submit.$menuId, submit.execSuccess, submit)
    }
    submit.syncComponentId && MKEmitter.emit('reloadData', submit.syncComponentId)
  }
  execError = (res) => {
@@ -1909,8 +1892,6 @@
      }
    }
    let _footer = ''
    let height = setting.height || false
    if (height && height <= 100) {
      height = height + 'vh'
@@ -1918,9 +1899,9 @@
    return (
      <>
        <div className="edit-custom-table-btn-wrap" style={submit.wrapStyle}>
        {setting.hasSubmit ? <div className="edit-custom-table-btn-wrap" style={submit.wrapStyle}>
          <Button style={submit.style} onClick={() => setTimeout(() => {this.submit()}, 10)} loading={loading} className="submit-table" type="link">提交</Button>
        </div>
        </div> : null}
        <div className={`edit-custom-table ${setting.tableHeader || ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''} table-vertical-${setting.vertical || ''} mk-edit-${setting.editType || 'simple'}`} id={tableId}>
          <Table
            rowKey="$$uuid"
@@ -1943,8 +1924,7 @@
            onChange={this.changeTable}
            pagination={_pagination}
          />
          {_footer ? <div className={'normal-table-footer ' + (_pagination ? 'pagination' : '')}>{_footer}</div> : null}
          {_data.length > 10 ? <Button style={submit.style} onClick={() => setTimeout(() => {this.submit()}, 10)} loading={loading} className="submit-footer-table" type="link">提交</Button> : null}
          {setting.hasSubmit && _data.length > 10 ? <Button style={submit.style} onClick={() => setTimeout(() => {this.submit()}, 10)} loading={loading} className="submit-footer-table" type="link">提交</Button> : null}
        </div>
      </>
    )