From 1b60547cb25f5c0a4371e5be0517adf092f2dc62 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期六, 28 一月 2023 16:08:21 +0800
Subject: [PATCH] 2023-01-28

---
 src/tabviews/custom/components/module/voucher/voucherTable/index.jsx |  138 +++++++++++++++++++++++++++-------------------
 1 files changed, 81 insertions(+), 57 deletions(-)

diff --git a/src/tabviews/custom/components/module/voucher/voucherTable/index.jsx b/src/tabviews/custom/components/module/voucher/voucherTable/index.jsx
index b79fdd7..61a3be3 100644
--- a/src/tabviews/custom/components/module/voucher/voucherTable/index.jsx
+++ b/src/tabviews/custom/components/module/voucher/voucherTable/index.jsx
@@ -2,6 +2,7 @@
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
 import { Table, Modal, Input, InputNumber, notification, message, AutoComplete, Select } from 'antd'
+import { PlusOutlined, CloseOutlined } from '@ant-design/icons'
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
@@ -62,20 +63,30 @@
 
     this.setState({editing: false})
 
+    let line = {...record}
+
     if (value !== record[col.field]) {
-      let line = {...record, [col.field]: value}
+      line[col.field] = value
 
       if (col.field === 'debtor') {
         line.creditor = ''
+        if (isNaN(line.debtor)) {
+          line.debtor = ''
+        }
       } else {
         line.debtor = ''
+        if (isNaN(line.creditor)) {
+          line.creditor = ''
+        }
       }
 
       MKEmitter.emit('changeRecord', col.tableId, line)
     }
 
     setTimeout(() => {
-      if (col.field === 'creditor') {
+      if (col.field === 'debtor' && (line.debtor || line.debtor === 0)) {
+        MKEmitter.emit('nextLine', col, record)
+      } else if (col.field === 'creditor') {
         MKEmitter.emit('nextLine', col, record)
       } else {
         let cl = {remark: 'subjectscode', subjectscode: 'debtor', debtor: 'creditor'}
@@ -117,8 +128,14 @@
 
       if (col.field === 'debtor') {
         line.creditor = ''
+        if (isNaN(line.debtor)) {
+          line.debtor = ''
+        }
       } else {
         line.debtor = ''
+        if (isNaN(line.creditor)) {
+          line.creditor = ''
+        }
       }
 
       MKEmitter.emit('changeRecord', col.tableId, line)
@@ -133,6 +150,18 @@
     this.setState({value: val}, () => {
       this.onBlur()
     })
+  }
+
+  plusLine = () => {
+    const { col, record } = this.props
+
+    MKEmitter.emit('plusLine', col.tableId, record)
+  }
+
+  delRecord = () => {
+    const { col, record } = this.props
+
+    MKEmitter.emit('delRecord', col.tableId, record)
   }
 
   onSelectChange = (val, option) => {
@@ -155,6 +184,7 @@
 
     let children = null
     let colSpan = 1
+    let extra = null
 
     if (col.field === 'remark') {
       let val = record.remark || ''
@@ -163,6 +193,8 @@
         children = <div className="content-wrap" style={{lineHeight: '60px'}}>鍚堣: {val}</div>
         colSpan = 2
       } else {
+        extra = <PlusOutlined onClick={this.plusLine}/>
+
         if (editing) {
           let options = ['鐜伴噾', '鍙戠エ']
           children = <AutoComplete
@@ -206,40 +238,40 @@
         }
       }
     } else if (col.field === 'debtor') {
-      let val = record.debtor
-      let down = false
-      let vals = []
-      if (typeof(val) === 'number') {
-        if (val < 0) {
-          down = true
-          val = Math.abs(val)
-        }
-        vals = (val * 100).toFixed(0).split('').reverse()
-      }
-
       if (editing) {
-        children = <InputNumber id={col.uuid + record.uuid} defaultValue={val} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
+        children = <InputNumber id={col.uuid + record.uuid} defaultValue={record.debtor} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
       } else {
+        let val = record.debtor
+        let down = false
+        let vals = []
+        if (!isNaN(val) && val !== '') {
+          if (val < 0) {
+            down = true
+            val = Math.abs(val)
+          }
+          vals = (val * 100).toFixed(0).split('').reverse()
+        }
         children = <div className={'money-uint' + (down ? ' down' : '')} onClick={this.focus}>
           <span>{vals[10] || ''}</span> <span>{vals[9] || ''}</span> <span>{vals[8] || ''}</span> <span>{vals[7] || ''}</span> <span>{vals[6] || ''}</span> <span>{vals[5] || ''}</span>
           <span>{vals[4] || ''}</span> <span>{vals[3] || ''}</span> <span>{vals[2] || ''}</span> <span>{vals[1] || ''}</span> <span className="last">{vals[0] || ''}</span>
         </div>
       }
     } else if (col.field === 'creditor') {
-      let val = record.creditor
-      let down = false
-      let vals = []
-      if (typeof(val) === 'number') {
-        if (val < 0) {
-          down = true
-          val = Math.abs(val)
-        }
-        vals = (val * 100).toFixed(0).split('').reverse()
-      }
+      extra = <CloseOutlined onClick={this.delRecord}/>
 
       if (editing) {
-        children = <InputNumber id={col.uuid + record.uuid} defaultValue={val} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
+        children = <InputNumber id={col.uuid + record.uuid} defaultValue={record.creditor} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
       } else {
+        let val = record.creditor
+        let down = false
+        let vals = []
+        if (!isNaN(val) && val !== '') {
+          if (val < 0) {
+            down = true
+            val = Math.abs(val)
+          }
+          vals = (val * 100).toFixed(0).split('').reverse()
+        }
         children = <div className={'money-uint' + (down ? ' down' : '')} onClick={this.focus}>
         <span>{vals[10] || ''}</span> <span>{vals[9] || ''}</span> <span>{vals[8] || ''}</span> <span>{vals[7] || ''}</span> <span>{vals[6] || ''}</span> <span>{vals[5] || ''}</span>
         <span>{vals[4] || ''}</span> <span>{vals[3] || ''}</span> <span>{vals[2] || ''}</span> <span>{vals[1] || ''}</span> <span className="last">{vals[0] || ''}</span>
@@ -249,7 +281,7 @@
 
     if (!colSpan) return null
 
-    return (<td colSpan={colSpan} className={className}>{children}</td>)
+    return (<td colSpan={colSpan} className={className}>{children}{extra}</td>)
   }
 }
 
@@ -347,6 +379,7 @@
 
   componentDidMount () {
     MKEmitter.addListener('nextLine', this.nextLine)
+    MKEmitter.addListener('plusLine', this.plusLine)
     MKEmitter.addListener('delRecord', this.delRecord)
     MKEmitter.addListener('changeRecord', this.changeRecord)
   }
@@ -359,6 +392,7 @@
       return
     }
     MKEmitter.removeListener('nextLine', this.nextLine)
+    MKEmitter.removeListener('plusLine', this.plusLine)
     MKEmitter.removeListener('delRecord', this.delRecord)
     MKEmitter.removeListener('changeRecord', this.changeRecord)
   }
@@ -426,13 +460,13 @@
     let creditor = ''
 
     data.forEach(item => {
-      if (typeof(item.debtor) === 'number') {
+      if (!isNaN(item.debtor) && item.debtor !== '') {
         if (debtor === '') {
           debtor = 0
         }
 
         debtor += item.debtor
-      } else if (typeof(item.creditor) === 'number') {
+      } else if (!isNaN(item.creditor) && item.creditor !== '') {
         if (debtor === '') {
           debtor = 0
         }
@@ -553,17 +587,20 @@
     }
   }
 
-  plusLine = (initEditLine) => {
-    const { edData } = this.state
+  plusLine = (tid, record) => {
+    const { edData, tableId } = this.state
 
-    let item = {...edData[edData.length - 1]}
+    if (tid !== tableId) return
 
-    item.key = item.key + 1
-    item.$$uuid = '$new'
+    let _data = fromJS(edData).toJS()
+    let line = {uuid: Utils.getuuid(), index: 0, remark: '', subjectscode: '', subjectsname: '', debtor: '', creditor: ''}
 
-    this.setState({edData: [...edData, item]}, () => {
-      MKEmitter.emit('tdFocus', initEditLine.uuid + item.uuid)
-    })
+    _data.splice(record.index, 0, line)
+
+    this.setState({edData: _data.map((item, index) => {
+      item.index = index
+      return item
+    })})
   }
 
   delRecord = (id, record) => {
@@ -571,15 +608,20 @@
 
     if (id !== tableId) return
 
-    let _data = edData.filter(item => item.uuid !== record.uuid)
+    let _data = fromJS(edData).toJS().filter(item => item.uuid !== record.uuid)
 
     _data.pop()
 
     if (_data.length < 4) {
-      for (let i = _data.length - 1; i < 4; i++) {
-        _data.push({uuid: Utils.getuuid(), index: i + 1, remark: '', subjectscode: '', subjectsname: '', debtor: '', creditor: ''})
+      for (let i = _data.length; i < 4; i++) {
+        _data.push({uuid: Utils.getuuid(), index: 0, remark: '', subjectscode: '', subjectsname: '', debtor: '', creditor: ''})
       }
     }
+
+    _data = _data.map((item, index) => {
+      item.index = index
+      return item
+    })
 
     _data.push(this.getTotalLine(_data))
 
@@ -606,24 +648,6 @@
     _data.push(this.getTotalLine(_data))
 
     this.setState({edData: _data})
-  }
-
-  addLine = () => {
-    const { BID } = this.props
-    const { edData } = this.state
-
-    let item = {}
-    if (edData.length > 0) {
-      item = {...edData[edData.length - 1]}
-      item.key = item.key + 1
-      item.$$uuid = '$new'
-    } else {
-      item.key = 0
-      item.$$uuid = '$new'
-      item.$$BID = BID || ''
-    }
-
-    this.setState({edData: [...edData, item]})
   }
 
   checkData = () => {

--
Gitblit v1.8.0