瀏覽代碼

检索时有空格的添加引号

zhuliu 1 年之前
父節點
當前提交
e779d33ea1
共有 2 個文件被更改,包括 70 次插入6 次删除
  1. 42 2
      src/utils/common.js
  2. 28 4
      src/views/report/components/patentList/components/searchPatent.vue

+ 42 - 2
src/utils/common.js

@@ -104,6 +104,34 @@ export default {
     return uuid.join('');
   },
 
+  /**
+   * 有空格添加引号
+   * @param {String} val 
+   * @returns 
+   */
+  AddQuotationMarks(val){
+    var sign = ['and','AND','OR','or','NOT','not']
+    var arr = val.split(/(\s+and|AND|OR|or|NOT|not\s+)/g)
+    var regex = /\s/
+    var regex1 = /^["].*["]$|^['].*[']$|^[“].*[”]$|^[‘].*[’]$/
+    var values = []
+    for(var i = 0;i<arr.length;i++){
+      if(sign.includes(arr[i].trim())){
+        values.push(arr[i])
+        continue;
+      }
+      if(regex.test(arr[i])){
+        if(!regex1.test(arr[i])){
+          var str = `"${arr[i]}"`
+          values.push(str)
+        }
+        continue;
+      }
+      values.push(arr[i])
+    }
+    return values
+  },
+
   //object转字符串
   objectToString(val) {
     var data = []
@@ -134,10 +162,22 @@ export default {
     data.forEach(item => {
       var value = ''
       if (Array.isArray(item.value)) {
-        value = '(' + item.value.join(' OR ') + ')'
+        value = '('
+        item.value.forEach((i,index)=>{
+          if(/\s/.test(i)){
+            value += `"${i}"`
+          }else{
+            value += i
+          }
+          if(index!= item.value.length- 1){
+            value += ' OR '
+          }
+        })
+        value += ')'
       } else {
         if (item.value) {
-          value = item.value
+          var values = this.AddQuotationMarks(item.value)
+          value = values.join('')
         } else {
           return
         }

+ 28 - 4
src/views/report/components/patentList/components/searchPatent.vue

@@ -295,17 +295,41 @@ export default {
           if (count == 0) {
             count++
             if (Array.isArray(item.inputValue)) {
-              this.searchStr = `${item.value} = (${item.inputValue.join(' OR ')})`
+              var value = ''
+              item.inputValue.forEach((i,index)=>{
+                if(/\s/.test(i)){
+                  value += `"${i}"`
+                }else{
+                  value += i
+                }
+                if(index!= item.inputValue.length- 1){
+                  value += ' OR '
+                }
+              })
+              this.searchStr = `${item.value} = (${value})`
             } else {
-              this.searchStr = `${item.value} = (${item.inputValue})`
+              var values = this.$commonJS.AddQuotationMarks(item.inputValue)
+              this.searchStr = `${item.value} = (${values.join('')})`
             }
 
           } else {
             count++
             if (Array.isArray(item.inputValue)) {
-              this.searchStr += ` AND ${item.value} = (${item.inputValue.join(' OR ')})`
+              var value = ''
+              item.inputValue.forEach((i,index)=>{
+                if(/\s/.test(i)){
+                  value += `"${i}"`
+                }else{
+                  value += i
+                }
+                if(index!= item.inputValue.length - 1){
+                  value += ' OR '
+                }
+              })
+              this.searchStr += ` AND ${item.value} = (${value})`
             } else {
-              this.searchStr += ` AND ${item.value} = (${item.inputValue})`
+              var values = this.$commonJS.AddQuotationMarks(item.inputValue)
+              this.searchStr += ` AND ${item.value} = (${values.join('')})`
             }
           }
         } else {