From a5f41b5d98f23d618dc7519c605ce943b114dfd5 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 13 十一月 2023 18:07:51 +0800
Subject: [PATCH] 2023-11-13

---
 src/tabviews/zshare/mutilform/mkNumberInput/index.jsx |   50 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 41 insertions(+), 9 deletions(-)

diff --git a/src/tabviews/zshare/mutilform/mkNumberInput/index.jsx b/src/tabviews/zshare/mutilform/mkNumberInput/index.jsx
index 7dde469..c517566 100644
--- a/src/tabviews/zshare/mutilform/mkNumberInput/index.jsx
+++ b/src/tabviews/zshare/mutilform/mkNumberInput/index.jsx
@@ -4,7 +4,7 @@
 
 import MKEmitter from '@/utils/events.js'
 
-import './index.scss'
+// import './index.scss'
 
 class MKNumberInput extends Component {
   constructor(props) {
@@ -19,8 +19,6 @@
       value: config.initval
     }
   }
-
-  inputNumberRef = React.createRef()
 
   shouldComponentUpdate (nextProps, nextState) {
     return !is(fromJS(this.state), fromJS(nextState))
@@ -39,27 +37,61 @@
 
   mkFormHandle = (type, uuid, value) => {
     if (uuid !== this.props.config.uuid) return
+
     if (type === 'focus') {
-      this.inputNumberRef.current.focus()
+      let node = document.getElementById(uuid)
+      node && node.select()
     } else if (type === 'input') {
       this.setState({value})
+      this.props.onChange(value, true)
+    } else if (type === 'reset') {
+      let _val = this.props.config.initval
+
+      this.setState({value: _val}, () => {
+        let node = document.getElementById(this.props.config.uuid)
+        node && node.select()
+      })
+
+      this.props.onChange(_val)
     }
   }
 
   handleChange = (val) => {
-
-    this.props.onChange(val)
     this.setState({value: val})
+
+    let _val = val
+
+    if (typeof(_val) !== 'number') {
+      _val = parseFloat(_val)
+
+      if (isNaN(_val)) {
+        _val = ''
+      }
+    }
+    
+    this.props.onChange(_val)
+  }
+
+  handleSubmit = () => {
+    const { config } = this.props
+
+    if (config.enter === 'false') return
+    if (config.enter === 'tab') {
+      MKEmitter.emit('mkFC', 'focus', config.tabUuid)
+    } else {
+      MKEmitter.emit('mkFC', 'focus', config.tabUuid)
+      this.props.onSubmit()
+    }
   }
 
   render() {
-    const { config, onSubmit } = this.props
+    const { config } = this.props
     const { value, precision } = this.state
 
     if (precision === null) {
-      return (<InputNumber ref={this.inputNumberRef} value={value} disabled={config.readonly} onChange={this.handleChange} onPressEnter={onSubmit}/>)
+      return (<InputNumber id={config.uuid} value={value} disabled={config.readonly} onChange={this.handleChange} onPressEnter={this.handleSubmit}/>)
     } else {
-      return (<InputNumber ref={this.inputNumberRef} value={value} precision={precision} disabled={config.readonly} onChange={this.handleChange} onPressEnter={onSubmit} />)
+      return (<InputNumber id={config.uuid} value={value} precision={precision} disabled={config.readonly} onChange={this.handleChange} onPressEnter={this.handleSubmit} />)
     }
   }
 }

--
Gitblit v1.8.0