licp
2024-07-10 3cbe20c89e11b952c93e5e93ccbf06f3b5614c8a
新增计算功能
已修改1个文件
121 ■■■■ 文件已修改
static/js/worker.js 121 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 = []