From 3cbe20c89e11b952c93e5e93ccbf06f3b5614c8a Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期三, 10 七月 2024 11:20:48 +0800
Subject: [PATCH] 新增计算功能

---
 static/js/worker.js |  121 +++++++++++++++++++++++++++++++++-------
 1 files changed, 99 insertions(+), 22 deletions(-)

diff --git a/static/js/worker.js b/static/js/worker.js
index df98533..146cb61 100644
--- a/static/js/worker.js
+++ b/static/js/worker.js
@@ -74,6 +74,7 @@
           if(res==''||res==null||res==undefined||res=='Infinity'){
             item.v.v = ''
           }else{
+            console.log(ask,res,item.v.f)
             if(ask){
               comp = ask.map((m, i) => {
                 if (m.includes('RTS')) {
@@ -82,38 +83,77 @@
                 if (m.includes('=')) {
                   let str = handleFraction(m.split('=')[1])
                   if(typeof res == 'string'&&typeof str == 'string'){
-                    return  res.trim() == str.trim()
+                    if(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){
+                      return handleMoreParam(res,m.split('=')[1],'=')
+                    }else{
+                      return  res.trim() == str.trim()
+                    }
                   }else{
                     return  eval(res) == eval(str)
                   }
                 } else if (m.includes('鈮�')) {
-                  let str = handleFraction(m.split('鈮�')[1])
-                  return eval(res) >= eval(str)
+                  if(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){
+                    return handleMoreParam(res,m.split('鈮�')[1],'鈮�')
+                  }else{
+                    let str = handleFraction(m.split('鈮�')[1])
+                    return eval(res) >= eval(str)
+                  }
                 }else if (m.includes('鈮�')) {
-                  let str = handleFraction(m.split('鈮�')[1])
-                  console.log(eval(res),eval(str))
-                  return eval(res) <= eval(str)
+                  if(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){
+                    return handleMoreParam(res,m.split('鈮�')[1],'鈮�')
+                  }else{
+                    let str = handleFraction(m.split('鈮�')[1])
+                    return eval(res) <= eval(str)
+                  }
                 }else if (m.includes('<')) {
-                  let str = handleFraction(m.split('<')[1])
-                  return  eval(res) < eval(str)
+                  if(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){
+                    return handleMoreParam(res,m.split('<')[1],'<')
+                  }else{
+                    let str = handleFraction(m.split('<')[1])
+                    return  eval(res) < eval(str)
+                  }
                 }else if (m.includes('>')) {
-                  let str = handleFraction(m.split('>')[1])
-                  return  eval(res) > eval(str)
+                  if(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){
+                    return handleMoreParam(res,m.split('>')[1],'>')
+                  }else{
+                    let str = handleFraction(m.split('>')[1])
+                    return  eval(res) > eval(str)
+                  }
                 }else if (m.includes('~')) {
-                  let k = m.split('~')
-                  return  eval(res) >= eval(handleFraction((k[0]))) && eval(res) <= eval(handleFraction(k[1]))
+                  if(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){
+                    return handleMoreParam(res,m,'~')
+                  }else{
+                    let k = m.split('~')
+                    return  eval(res) >= eval(handleFraction((k[0]))) && eval(res) <= eval(handleFraction(k[1]))
+                  }
                 }else if(m.includes('-')){
-                  let k = m.split('-')
-                  return  eval(res) >= eval(handleFraction(k[0])) && eval(res) <= eval(handleFraction(k[1]))
+                  if(res.includes('/')){
+                    return handleMoreParam(res,m,'-')
+                  }else{
+                    let k = m.split('-')
+                    return  eval(res) >= eval(handleFraction(k[0])) && eval(res) <= eval(handleFraction(k[1]))
+                  }
                 }else if(m.includes('卤')){
-                  let k = m.split('卤')
-                  return  eval(res) >= eval((handleFraction(k[0]) - handleFraction(k[1]))) && eval(res) <= eval((handleFraction(k[0]) + handleFraction(k[1])))
+                  if(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){
+                    return handleMoreParam(res,m,'卤')
+                  }else{
+                    let k = m.split('卤')
+                    return  eval(res) >= eval((handleFraction(k[0]) - handleFraction(k[1]))) && eval(res) <= eval((handleFraction(k[0]) + handleFraction(k[1])))
+                  }
                 }else if(m.includes('锛�')){
-                  let str = handleFraction(m.split('锛�')[1])
-                  return  eval(res) > eval(str)
+                  if(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){
+                    return handleMoreParam(res,m.split('锛�')[1],'>')
+                  }else{
+                    let str = handleFraction(m.split('锛�')[1])
+                    return  eval(res) > eval(str)
+                  }
                 }else if(m.includes('锛�')){
-                  let str = handleFraction(m.split('锛�')[1])
-                  return  eval(res) < eval(str)
+                  if(item.v.f&&typeof(item.v.f)=='string'&&item.v.f.includes('&"/"&')){
+                    return handleMoreParam(res,m.split('锛�')[1],'<')
+                  }else{
+                    let str = handleFraction(m.split('锛�')[1])
+                    return  eval(res) < eval(str)
+                  }
                 }
               })
             }
@@ -158,7 +198,6 @@
 
       } else {
         let comResult = ''
-        console.log('item.v.f',item.v.f)
         try {
           if(getInspectionValueType(item.i)==1){
             let ask = currentSample.insProduct.find(m => m.id == item.i).ask?currentSample.insProduct.find(m => m.id == item.i).ask.split('&'):null;
@@ -238,7 +277,12 @@
     }
   }
 }
-
+/**
+ * 澶勭悊鍒嗘暟鎴栧甫鏈変箻娉曞拰涔樻柟鐨勫瓧绗︿覆
+ *
+ * @param str 瀛楃涓茬被鍨嬶紝琛ㄧず瑕佸鐞嗙殑鍒嗘暟鎴栦箻鏂硅〃杈惧紡
+ * @returns 杩斿洖涓�涓暟瀛楁垨鍘熷瓧绗︿覆锛屽鏋滃瓧绗︿覆涓烘湁鏁堢殑鍒嗘暟鎴栦箻鏂硅〃杈惧紡锛屽垯杩斿洖璁$畻缁撴灉锛涘惁鍒欒繑鍥炲師瀛楃涓�
+ */
 function handleFraction(str){
   if(str&&typeof(str)=='string'&&str.includes('/')){
     return eval(str.split('/')[0]/str.split('/')[1])
@@ -254,6 +298,39 @@
   }
 }
 
+function handleMoreParam(res,str,comp){
+  let arr = res.split('/')
+  let arr0 = arr.every(item=>{
+    console.log(comp)
+    switch (comp){
+      case '>':
+        return item > handleFraction(str)
+      case '<':
+        return item < handleFraction(str)
+      case '=':
+        return item == handleFraction(str)
+      case '鈮�':
+        return item >= handleFraction(str)
+      case '鈮�':
+        return item <= handleFraction(str)
+      case '卤':
+        let k = str.split('卤')
+        return  item >= eval((handleFraction(k[0]) - handleFraction(k[1]))) && item <= eval((handleFraction(k[0]) + handleFraction(k[1])))
+      case '~':
+        let j = str.split('~')
+        return  item >= eval(handleFraction((j[0]))) && item <= eval(handleFraction(j[1]))
+        case '-':
+          let o = str.split('-')
+          return  item >= eval(handleFraction(o[0])) && item <= eval(handleFraction(o[1]))
+    }
+  })
+  if(arr0){
+    return true
+  }else{
+    return false
+  }
+}
+
 function getParam(){
   for (var b in param){
     param[b].insValue = []

--
Gitblit v1.9.3