From 5ba94ec7b5ad34098ff9c5d21b4139b1b91c2865 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 29 五月 2020 18:24:11 +0800
Subject: [PATCH] 2020-05-29

---
 src/tabviews/formtab/formgroup/index.jsx |   72 +++++++++++++++++++++++++++++++++---
 1 files changed, 66 insertions(+), 6 deletions(-)

diff --git a/src/tabviews/formtab/formgroup/index.jsx b/src/tabviews/formtab/formgroup/index.jsx
index 5153f62..726eeee 100644
--- a/src/tabviews/formtab/formgroup/index.jsx
+++ b/src/tabviews/formtab/formgroup/index.jsx
@@ -29,11 +29,13 @@
     fieldlen: null,
     groups: null,
     formlist: [],
+    encrypts: [],    // 鍔犲瘑瀛楁
+    intercepts: [],  // 鎴彇瀛楁
     record: {}
   }
 
   UNSAFE_componentWillReceiveProps (nextProps) {
-    const { datatype } = this.state
+    const { datatype, encrypts } = this.state
     if (nextProps.data && !is(fromJS(this.props.data), fromJS(nextProps.data))) {
 
       let _fieldsvalue = {}
@@ -89,11 +91,31 @@
             }
 
             _fieldsvalue[key] = _val
+          } else if (datatype[key] === 'text' || datatype[key] === 'textarea') {
+            let _value = nextProps.data[key]
+            if (encrypts.includes(key)) { // 鍔犲瘑瀛楁
+              try {
+                _value = window.btoa(window.encodeURIComponent(_value))
+              } catch (e) {
+                console.warn(e)
+              }
+            }
+
+            _fieldsvalue[key] = _value
           } else {
             _fieldsvalue[key] = nextProps.data[key]
           }
         } else {
-          _record[key] = nextProps.data[key]
+          let _value = nextProps.data[key]
+          if (encrypts.includes(key)) { // 鍔犲瘑瀛楁
+            try {
+              _value = window.btoa(window.encodeURIComponent(_value))
+            } catch (e) {
+              console.warn(e)
+            }
+          }
+
+          _record[key] = _value
         }
       })
 
@@ -115,6 +137,8 @@
     let readin = {}
     let fieldlen = {}
     let _formlist = []
+    let encrypts = []
+    let intercepts = []
 
     let _groups = groups.map(group => {
       group.sublist = group.sublist.map(item => {
@@ -122,6 +146,13 @@
         if (item.type === 'funcvar') {
           _readin = false
           item.initval = '' // 鍒濆鍖栦负绌�
+        }
+
+        if (item.type === 'textarea' && item.encryption === 'true') {
+          encrypts.push(item.field)
+        }
+        if (item.interception === 'true') {
+          intercepts.push(item.field)
         }
 
         item.initVal = item.initval ? JSON.parse(JSON.stringify(item.initval)) : ''
@@ -139,7 +170,17 @@
         fieldlen[item.field] = _fieldlen
 
         if (_readin && !/^date/.test(item.type) && data && data.hasOwnProperty(item.field)) {
-          item.initval = data[item.field]
+          let newval = data[item.field]
+
+          if (encrypts.includes(item.field) && newval) {
+            try {
+              newval = window.decodeURIComponent(window.atob(newval))
+            } catch (e) {
+              console.warn(e)
+            }
+          }
+
+          item.initval = newval
         }
 
         if (item.supvalue) {
@@ -559,7 +600,7 @@
   }
 
   handleConfirm = () => {
-    const { record } = this.state
+    const { record, encrypts, intercepts } = this.state
     // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
     return new Promise((resolve, reject) => {
       this.props.form.validateFieldsAndScroll((err, values) => {
@@ -646,9 +687,12 @@
               }
 
               _value = vals.join(',')
-            } else if (this.state.datatype[key] === 'text') {
-              _value = values[key].replace(/(^\s*|\s*$) | \t* | \v*/ig, '')
+            } else if (this.state.datatype[key] === 'text' || this.state.datatype[key] === 'textarea') {
+              _value = values[key].replace(/\t*|\v*/g, '') // 鍘婚櫎鍒惰〃绗�
 
+              if (intercepts.includes(key)) {              // 鍘婚櫎棣栧熬绌烘牸
+                _value = _value.replace(/(^\s*|\s*$)/g, '')
+              }
             } else {
               _value = values[key]
 
@@ -663,6 +707,22 @@
               value: _value
             })
           })
+
+          if (encrypts && encrypts.length > 0) {
+            search = search.map(item => {
+              let _value = item.value
+              if (encrypts.includes(item.key)) {
+                try {
+                  _value = window.btoa(window.encodeURIComponent(_value))
+                } catch (e) {
+                  console.warn(e)
+                }
+              }
+              item.value = _value
+
+              return item
+            })
+          }
           resolve(search)
         } else {
           reject(err)

--
Gitblit v1.8.0