From 023895591327d0c210eec054d2c1d7991cefd413 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 02 三月 2022 00:14:23 +0800
Subject: [PATCH] 2022-03-02

---
 src/menu/components/table/edit-table/columns/editColumn/index.jsx |   72 ++++++++++++++---------------------
 1 files changed, 29 insertions(+), 43 deletions(-)

diff --git a/src/menu/components/table/edit-table/columns/editColumn/index.jsx b/src/menu/components/table/edit-table/columns/editColumn/index.jsx
index d664236..8f7ea16 100644
--- a/src/menu/components/table/edit-table/columns/editColumn/index.jsx
+++ b/src/menu/components/table/edit-table/columns/editColumn/index.jsx
@@ -32,8 +32,10 @@
 
   state = {
     visible: false,
-    formlist: null
+    formlist: null,
   }
+
+  column = null
 
   UNSAFE_componentWillReceiveProps (nextProps) {
     if (nextProps.column && !is(fromJS(this.props.column), fromJS(nextProps.column))) {
@@ -41,22 +43,29 @@
     }
   }
 
-  editColumn = (column) => {
-    let formlist = getColumnForm(column, this.props.fields, this.props.columns)
-    let _options = fromJS(columnTypeOptions[column.type]).toJS()
+  getOptions = () => {
+    let _options = fromJS(columnTypeOptions[this.column.type]).toJS()
 
-    if (column.editable === 'true') {
-      if (column.type === 'text') {
-        _options.push('required', 'enter', 'footEnter')
-      } else if (column.type === 'number') {
+    if (this.column.editable === 'true') {
+      if (this.column.type === 'text') {
+        _options.push('editType', 'required', 'enter', 'footEnter')
+      } else if (this.column.type === 'number') {
         _options.push('max', 'min', 'enter', 'footEnter')
       }
     }
 
+    return _options
+  }
+
+  editColumn = (column) => {
+    let formlist = getColumnForm(column, this.props.fields, this.props.columns)
+
+    this.column = fromJS(column).toJS()
+    
+    let _options = this.getOptions()
+
     this.setState({
       visible: true,
-      editable: column.editable || 'false',
-      type: column.type,
       formlist: formlist.map(item => {
         item.hidden = !_options.includes(item.key)
 
@@ -76,23 +85,15 @@
   }
 
   typeChange = (key, value, option) => {
-    const { editable, type } = this.state
-    if (key === 'type') {
-      let _options = fromJS(columnTypeOptions[value]).toJS()
+    this.column[key] = value
 
-      if (editable === 'true') {
-        if (value === 'text') {
-          _options.push('required', 'enter', 'footEnter')
-        } else if (value === 'number') {
-          _options.push('max', 'min', 'enter', 'footEnter')
-        }
-      }
+    if (key === 'type') {
+      let _options = this.getOptions()
 
       this.setState({
-        type: value,
         formlist: this.state.formlist.map(item => {
           if (item.key === 'editable') {
-            item.initVal = editable
+            item.initVal = this.column.editable || 'false'
           }
           item.hidden = !_options.includes(item.key)
 
@@ -116,22 +117,16 @@
         values.type = 'text'
       }
 
-      if (values.type !== this.state.type) {
-        let _options = fromJS(columnTypeOptions[values.type]).toJS()
+      let _type = this.column.type
+      this.column.type = values.type
 
-        if (editable === 'true') {
-          if (values.type === 'text') {
-            _options.push('required', 'enter', 'footEnter')
-          } else if (values.type === 'number') {
-            _options.push('max', 'min', 'enter', 'footEnter')
-          }
-        }
+      if (values.type !== _type) {
+        let _options = this.getOptions()
 
         this.setState({
-          type: values.type,
           formlist: this.state.formlist.map(item => {
             if (item.key === 'editable') {
-              item.initVal = editable
+              item.initVal = this.column.editable || 'false'
             }
             item.hidden = !_options.includes(item.key)
 
@@ -146,18 +141,9 @@
     } else if (key === 'format' && value === 'percent') {
       this.props.form.setFieldsValue({postfix: '%'})
     } else if (key === 'editable') {
-      let _options = fromJS(columnTypeOptions[type]).toJS()
-
-      if (value === 'true') {
-        if (type === 'text') {
-          _options.push('required', 'enter', 'footEnter')
-        } else if (type === 'number') {
-          _options.push('max', 'min', 'enter', 'footEnter')
-        }
-      }
+      let _options = this.getOptions()
 
       this.setState({
-        editable: value,
         formlist: this.state.formlist.map(item => {
           item.hidden = !_options.includes(item.key)
 

--
Gitblit v1.8.0