fix: 修复实体搜索包含非连接符的and,由text转换到tag失败的问题
This commit is contained in:
@@ -456,7 +456,7 @@ export default {
|
|||||||
// 如果地址栏包含参数q,则匹配出metaList到搜索栏回显使用
|
// 如果地址栏包含参数q,则匹配出metaList到搜索栏回显使用
|
||||||
let { q } = this.$route.query
|
let { q } = this.$route.query
|
||||||
if (q) {
|
if (q) {
|
||||||
q = comparedEntityKey(q).key
|
q = comparedEntityKey(handleEntityTypeByStr(q)).key
|
||||||
const parser = new Parser(this.columnList)
|
const parser = new Parser(this.columnList)
|
||||||
this.metaList = parser.parseStr(q).metaList
|
this.metaList = parser.parseStr(q).metaList
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ export default {
|
|||||||
changeMode () {
|
changeMode () {
|
||||||
let str = this.codeMirror.getValue().trim()
|
let str = this.codeMirror.getValue().trim()
|
||||||
if (str) {
|
if (str) {
|
||||||
str = comparedEntityKey(str).key
|
str = comparedEntityKey(handleEntityTypeByStr(str)).key
|
||||||
const parser = new Parser(this.columnList)
|
const parser = new Parser(this.columnList)
|
||||||
const errorList = parser.validateStr(str)
|
const errorList = parser.validateStr(str)
|
||||||
if (_.isEmpty(errorList)) {
|
if (_.isEmpty(errorList)) {
|
||||||
|
|||||||
@@ -792,7 +792,7 @@ export function handleOperatorSpace (operator) {
|
|||||||
export function handleMetaListToStr (metaList) {
|
export function handleMetaListToStr (metaList) {
|
||||||
// 将模糊搜索的值,转换为对应类型,如1.1.1.1,则添加操作符,类型等,以便于后面的操作
|
// 将模糊搜索的值,转换为对应类型,如1.1.1.1,则添加操作符,类型等,以便于后面的操作
|
||||||
metaList.forEach(item => {
|
metaList.forEach(item => {
|
||||||
if (item.column.type === 'fullText') {
|
if (item.column && item.column.type === 'fullText') {
|
||||||
item.operator.value = '='
|
item.operator.value = '='
|
||||||
item.value.value = item.column.label
|
item.value.value = item.column.label
|
||||||
item.value.label = item.column.label
|
item.value.label = item.column.label
|
||||||
|
|||||||
@@ -1446,7 +1446,7 @@ export function comparedEntityKey (str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return returnObj
|
return returnObj
|
||||||
} else if (q.indexOf('LIKE') > -1) {
|
} else if (q.indexOf(' LIKE ') > -1 || q.indexOf(' like ') > -1) {
|
||||||
return {
|
return {
|
||||||
key: q,
|
key: q,
|
||||||
isKey: true
|
isKey: true
|
||||||
@@ -1461,7 +1461,7 @@ export function comparedEntityKey (str) {
|
|||||||
return { key: '[' + key + ']', isKey: false }
|
return { key: '[' + key + ']', isKey: false }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (q && (q.indexOf(' IN ') > -1 || q.indexOf(' LIKE ') > -1)) {
|
} else if (q && (q.indexOf(' IN ') > -1 || q.indexOf(' in ') > -1 || q.indexOf(' LIKE ') > -1 || q.indexOf(' like ') > -1)) {
|
||||||
return {
|
return {
|
||||||
key: q,
|
key: q,
|
||||||
isKey: true
|
isKey: true
|
||||||
@@ -1507,7 +1507,7 @@ export const handleEntityTypeByStr = (str) => {
|
|||||||
let match
|
let match
|
||||||
|
|
||||||
// 将单引号包裹的and内容集合起来
|
// 将单引号包裹的and内容集合起来
|
||||||
while ((match = regex.exec(str)) !== null) {
|
while ((match = regex.exec(newStr)) !== null) {
|
||||||
if (match[1].includes('and')) {
|
if (match[1].includes('and')) {
|
||||||
tempList.push(match[1])
|
tempList.push(match[1])
|
||||||
}
|
}
|
||||||
@@ -1516,10 +1516,10 @@ export const handleEntityTypeByStr = (str) => {
|
|||||||
// 将单引号包裹的and内容用特殊值代替
|
// 将单引号包裹的and内容用特殊值代替
|
||||||
tempList.forEach((item, index) => {
|
tempList.forEach((item, index) => {
|
||||||
const regex = new RegExp(item, 'g')
|
const regex = new RegExp(item, 'g')
|
||||||
str = str.replace(regex, `it is test keyword${index}`)
|
newStr = newStr.replace(regex, `it is test keyword${index}`)
|
||||||
})
|
})
|
||||||
|
|
||||||
const noAndList = str.split(' and ')
|
const noAndList = newStr.split(' and ')
|
||||||
noAndList.forEach((item, index) => {
|
noAndList.forEach((item, index) => {
|
||||||
// 发现插入的特殊值,获取键值,根据键值替换成原来内容,删除键值
|
// 发现插入的特殊值,获取键值,根据键值替换成原来内容,删除键值
|
||||||
if (item.indexOf('it is test keyword') > -1) {
|
if (item.indexOf('it is test keyword') > -1) {
|
||||||
@@ -1538,8 +1538,8 @@ export const handleEntityTypeByStr = (str) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
str = newArr.join(' and ')
|
newStr = newArr.join(' and ')
|
||||||
return str
|
return newStr
|
||||||
} else if (result) {
|
} else if (result) {
|
||||||
return str
|
return str
|
||||||
} else if (!result) {
|
} else if (!result) {
|
||||||
|
|||||||
Reference in New Issue
Block a user