From a06655e10f4242c350a3450c6c21e77f33302e2e Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 27 十一月 2020 22:09:04 +0800
Subject: [PATCH] 2020-11-27

---
 src/tabviews/zshare/normalTable/index.jsx |  154 ++++++++++++++++++++++-----------------------------
 1 files changed, 67 insertions(+), 87 deletions(-)

diff --git a/src/tabviews/zshare/normalTable/index.jsx b/src/tabviews/zshare/normalTable/index.jsx
index bfe9cc6..73ab9d6 100644
--- a/src/tabviews/zshare/normalTable/index.jsx
+++ b/src/tabviews/zshare/normalTable/index.jsx
@@ -56,7 +56,6 @@
     imgShow: false,       // 鍥剧墖鏀惧ぇ妯℃�佹
     imgSrc: '',           // 鍥剧墖璺緞
     lineMarks: null,      // 琛屾爣璁�
-    colMap: null,         // 鍒椾俊鎭紙鍏ㄩ儴锛�
     activeIndex: null,    // 鏍囪褰撳墠閫変腑琛�
     rowspan: null         // 琛屽悎骞跺瓧娈典俊鎭�
   }
@@ -66,7 +65,6 @@
     let columns = JSON.parse(JSON.stringify(this.props.columns))
     let lineMarks = []
     let _columns = []
-    let colMap = new Map() // 鐢ㄤ簬鑾峰彇瀛楁淇℃伅
     let radio = 5          // 铏氬寲姣斾緥
     let _format = false    // 鏄惁铏氬寲澶勭悊
     let rowspan = null
@@ -81,10 +79,15 @@
       }
     }
 
+    // 鑾峰彇琛屾爣璁�
     config.columns.forEach(col => {
       if (!col.field) return
 
-      colMap.set(col.field, col)
+      col.marks && col.marks.forEach(mark => {
+        if (mark.signType === 'line') {
+          lineMarks.push(mark)
+        }
+      })
     })
 
     columns.forEach((item, index) => {
@@ -94,31 +97,8 @@
         item.blur = true
       }
 
-      if (item.marks) {
-        item.marks = item.marks.filter(mark => {
-          let originField = colMap.get(mark.field)
-          let contrastField = mark.contrastType === 'dynamic' ? colMap.get(mark.contrastField) : ''
-
-          if (!originField || (mark.contrastType === 'dynamic' && !contrastField)) return false
-          if (contrastField && originField.type !== contrastField.type) return false
-          if (mark.contrastType === 'static') {
-            if (originField.type === 'text' && typeof(mark.contrastValue) === 'number') {
-              return false
-            } else if (originField.type === 'number' && typeof(mark.contrastValue) === 'string') {
-              return false
-            } else if (!['number', 'text'].includes(originField.type)) {
-              return false
-            }
-          }
-
-          if (mark.signType === 'line') {
-            lineMarks.push(mark)
-            return false
-          } else if (mark.signType === 'card') {
-            return false
-          }
-          return true
-        })
+      if (item.marks) { // 杩囨护琛屽拰鍗$墖鏍囪
+        item.marks = item.marks.filter(mark => mark.signType !== 'line' && mark.signType !== 'card')
 
         if (item.marks.length === 0) {
           item.marks = ''
@@ -134,6 +114,14 @@
 
           if (col.rowspan === 'true') {
             rowspan = col
+          }
+
+          if (col.marks) { // 杩囨护琛屽拰鍗$墖鏍囪
+            col.marks = col.marks.filter(mark => mark.signType !== 'line' && mark.signType !== 'card')
+    
+            if (col.marks.length === 0) {
+              col.marks = ''
+            }
           }
 
           cell.children.push({
@@ -179,7 +167,6 @@
       columns: _columns,
       pageSize: pageSize ? pageSize : 10,
       lineMarks: lineMarks,
-      colMap: colMap,
       rowspan: rowspan
     })
   }
@@ -271,54 +258,48 @@
   }
 
   getMark = (record, marks) => {
-    const { colMap } = this.state
     let className = ''
     let isIcon = false
     let position = 'back'
     let icon = ''
 
     marks.some(mark => {
-      let originField = colMap.get(mark.field)
-
-      if (!originField) return false
-
-      let originType = originField.type || 'text'
-
-      let originVal = record.hasOwnProperty(mark.field) ? record[mark.field] : ''
+      let originVal = record[mark.field] + ''
       let contrastVal = ''
       if (mark.contrastType === 'static') {
-        contrastVal = mark.contrastValue
+        contrastVal = mark.contrastValue + ''
       } else {
-        contrastVal = record.hasOwnProperty(mark.contrastField) ? record[mark.contrastField] : ''
+        contrastVal = record[mark.contrastField] + ''
       }
 
-      if (originType === 'text') {
-        originVal = '' + originVal
-        contrastVal = '' + contrastVal
-      } else if (originType === 'number' && originVal !== '' && contrastVal !== '') {
+      if (mark.match === '=') {
+        className = originVal === contrastVal ? mark.color[1] : ''
+      } else if (mark.match === '!=') {
+        className = originVal !== contrastVal ? mark.color[1] : ''
+      } else if (mark.match === 'like') {
+        className = originVal.indexOf(contrastVal) > -1 ? mark.color[1] : ''
+      } else if (mark.match === '>') {
         try {
           originVal = parseFloat(originVal)
           contrastVal = parseFloat(contrastVal)
-          if (isNaN(originVal) || isNaN(contrastVal)) {
-            originVal = ''
-          }
         } catch {
-          originVal = ''
+          originVal = NaN
         }
-      }
 
-      if (originVal === '' || contrastVal === '') return false
+        if (!isNaN(originVal) && !isNaN(contrastVal) && originVal > contrastVal) {
+          className = mark.color[1]
+        }
+      } else if (mark.match === '<') {
+        try {
+          originVal = parseFloat(originVal)
+          contrastVal = parseFloat(contrastVal)
+        } catch {
+          originVal = NaN
+        }
 
-      if (mark.match === '=' && originVal === contrastVal) {
-        className = mark.color[1]
-      } else if (mark.match === '!=' && originVal !== contrastVal) {
-        className = mark.color[1]
-      } else if (mark.match === 'like' && originVal.indexOf(contrastVal) > -1) {
-        className = mark.color[1]
-      } else if (mark.match === '>' && originVal > contrastVal) {
-        className = mark.color[1]
-      } else if (mark.match === '<' && originVal < contrastVal) {
-        className = mark.color[1]
+        if (!isNaN(originVal) && !isNaN(contrastVal) && originVal < contrastVal) {
+          className = mark.color[1]
+        }
       }
 
       if (!className) return false
@@ -999,7 +980,7 @@
 
   render() {
     const { setting, pickup, statFValue } = this.props
-    const { selectedRowKeys, lineMarks, colMap, activeIndex, rowspan } = this.state
+    const { selectedRowKeys, lineMarks, activeIndex, rowspan } = this.state
 
     // 璁剧疆琛ㄦ牸閫夋嫨灞炴�э細鍗曢�夈�佸閫夈�佷笉鍙��
     let rowSelection = null
@@ -1112,43 +1093,42 @@
             if (lineMarks.length === 0) return className
 
             lineMarks.some(mark => {
-              let originType = colMap.get(mark.field).type
-
-              let originVal = record.hasOwnProperty(mark.field) ? record[mark.field] : ''
+              let originVal = record[mark.field] + ''
               let contrastVal = ''
               if (mark.contrastType === 'static') {
-                contrastVal = mark.contrastValue
+                contrastVal = mark.contrastValue + ''
               } else {
-                contrastVal = record.hasOwnProperty(mark.contrastField) ? record[mark.contrastField] : ''
+                contrastVal = record[mark.contrastField] + ''
               }
 
-              if (originType === 'text') {
-                originVal = '' + originVal
-                contrastVal = '' + contrastVal
-              } else if (originType === 'number' && originVal !== '' && contrastVal !== '') {
+              if (mark.match === '=') {
+                className = originVal === contrastVal ? 'background ' + mark.color[1] : ''
+              } else if (mark.match === '!=') {
+                className = originVal !== contrastVal ? 'background ' + mark.color[1] : ''
+              } else if (mark.match === 'like') {
+                className = originVal.indexOf(contrastVal) > -1 ? 'background ' + mark.color[1] : ''
+              } else if (mark.match === '>') {
                 try {
                   originVal = parseFloat(originVal)
                   contrastVal = parseFloat(contrastVal)
-                  if (isNaN(originVal) || isNaN(contrastVal)) {
-                    originVal = ''
-                  }
                 } catch {
-                  originVal = ''
+                  originVal = NaN
                 }
-              }
-
-              if (originVal === '' || contrastVal === '') return false
-
-              if (mark.match === '=' && originVal === contrastVal) {
-                className = 'background ' + mark.color[1]
-              } else if (mark.match === '!=' && originVal !== contrastVal) {
-                className = 'background ' + mark.color[1]
-              } else if (mark.match === 'like' && originVal.indexOf(contrastVal) > -1) {
-                className = 'background ' + mark.color[1]
-              } else if (mark.match === '>' && originVal > contrastVal) {
-                className = 'background ' + mark.color[1]
-              } else if (mark.match === '<' && originVal < contrastVal) {
-                className = 'background ' + mark.color[1]
+        
+                if (!isNaN(originVal) && !isNaN(contrastVal) && originVal > contrastVal) {
+                  className = 'background ' + mark.color[1]
+                }
+              } else if (mark.match === '<') {
+                try {
+                  originVal = parseFloat(originVal)
+                  contrastVal = parseFloat(contrastVal)
+                } catch {
+                  originVal = NaN
+                }
+        
+                if (!isNaN(originVal) && !isNaN(contrastVal) && originVal < contrastVal) {
+                  className = 'background ' + mark.color[1]
+                }
               }
 
               if (!className) return false

--
Gitblit v1.8.0