From b6ccd63b80fc7017bfabc446787732a98c7cbab7 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 06 一月 2021 19:10:28 +0800
Subject: [PATCH] 2021-01-06

---
 src/tabviews/custom/components/card/cardcellList/index.jsx |   66 +++++++++++++++++++++++++++++++-
 1 files changed, 63 insertions(+), 3 deletions(-)

diff --git a/src/tabviews/custom/components/card/cardcellList/index.jsx b/src/tabviews/custom/components/card/cardcellList/index.jsx
index a65a2cf..ed89792 100644
--- a/src/tabviews/custom/components/card/cardcellList/index.jsx
+++ b/src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -180,7 +180,7 @@
         }
       }
 
-      if (result) {
+      if (result && mark.signType) {
         if (mark.signType[0] === 'font') {
           style.color = mark.color
         } else if (mark.signType[0] === 'background') {
@@ -207,6 +207,60 @@
     })
 
     return content
+  }
+
+  getColor = (marks) => {
+    const { data } = this.props
+    let color = ''
+
+    marks.some(mark => {
+      let originVal = data[mark.field[0]] + ''
+      let contrastVal = ''
+      let result = false
+
+      if (mark.field[1] === 'static') {
+        contrastVal = mark.contrastValue + ''
+      } else {
+        contrastVal = data[mark.field[2]] + ''
+      }
+
+      if (mark.match === '=') {
+        result = originVal === contrastVal
+      } else if (mark.match === '!=') {
+        result = originVal !== contrastVal
+      } else if (mark.match === 'like') {
+        result = originVal.indexOf(contrastVal) > -1
+      } else if (mark.match === '>') {
+        try {
+          originVal = parseFloat(originVal)
+          contrastVal = parseFloat(contrastVal)
+        } catch {
+          originVal = NaN
+        }
+
+        if (!isNaN(originVal) && !isNaN(contrastVal) && originVal > contrastVal) {
+          result = true
+        }
+      } else if (mark.match === '<') {
+        try {
+          originVal = parseFloat(originVal)
+          contrastVal = parseFloat(contrastVal)
+        } catch {
+          originVal = NaN
+        }
+
+        if (!isNaN(originVal) && !isNaN(contrastVal) && originVal < contrastVal) {
+          result = true
+        }
+      }
+
+      if (result) {
+        color = mark.color
+      }
+      return result
+    })
+
+    return color
   }
 
   getContent = (card) => {
@@ -327,6 +381,7 @@
       )
     } else if (card.eleType === 'slider') {
       let val = 0
+      let color = card.color
 
       if (card.datatype === 'static') {
         val = card.value
@@ -347,14 +402,19 @@
         _val = `${val}%`
       }
 
+      if (card.marks) {
+        let _color = this.getColor(card.marks)
+        color = _color ? _color : color
+      }
+
       return (
         <Col key={card.uuid} span={card.width}>
           <div style={card.style}>
             <div className="ant-mk-slider">
               <div className="ant-mk-slider-rail"></div>
-              <div className="ant-mk-slider-track" style={{width: _val, backgroundColor: card.color}}></div>
+              <div className="ant-mk-slider-track" style={{width: _val, backgroundColor: color}}></div>
               <Tooltip title={`${val}%`}>
-                <div className="ant-mk-slider-handle" style={{left: _val, borderColor: card.color}}></div>
+                <div className="ant-mk-slider-handle" style={{left: _val, borderColor: color}}></div>
               </Tooltip>
             </div>
           </div>

--
Gitblit v1.8.0