CN-1071: entity explorer在列表页点击后退时,没有返回首页

This commit is contained in:
刘洪洪
2023-06-16 16:33:58 +08:00
parent cfa742a95c
commit f8456e57a3
6 changed files with 340 additions and 185 deletions

View File

@@ -115,11 +115,11 @@ export default {
},
setup (props) {
// 默认为文本模式
let searchMode = ref('text')
const searchMode = ref('text')
if (props.defaultMode) {
switch (props.defaultMode) {
case 'tag': {
searchMode = 'tag'
searchMode.value = 'tag'
break
}
}

View File

@@ -93,6 +93,7 @@ import Meta, { connection, condition, columnType } from './meta/meta'
import _ from 'lodash'
import { handleErrorTip } from '@/components/advancedSearch/meta/error'
import Parser, { stringInQuot } from '@/components/advancedSearch/meta/parser'
import { overwriteUrl, urlParamsHandler } from '@/utils/tools'
export default {
name: 'TagMode',
props: {
@@ -320,8 +321,10 @@ export default {
const parser = new Parser(this.columnList)
const errorList = parser.validateMeta(this.metaList)
if (_.isEmpty(errorList)) {
this.reloadUrl({ mode: 'text' })
this.$emit('changeMode', 'text', parser.parseMeta(this.metaList))
} else {
this.reloadUrl({ mode: 'text' })
this.$emit('changeMode', 'text', { metaList: [], str: '' })
}
},
@@ -397,10 +400,28 @@ export default {
this.metaList.splice(metaIndex, 2)
}
})
},
/**
* 向地址栏添加/删除参数
*/
reloadUrl (newParam, clean) {
const { query } = this.$route
let newUrl = urlParamsHandler(window.location.href, query, newParam)
if (clean) {
newUrl = urlParamsHandler(window.location.href, query, newParam, clean)
}
overwriteUrl(newUrl)
}
},
mounted () {
const vm = this
// 如果地址栏包含参数q则匹配出metaList到搜索栏回显使用
const { q } = this.$route.query
if (q) {
const parser = new Parser(this.columnList)
this.metaList = parser.parseStr(q).metaList
}
this.emitter.on('advanced-search', function () {
vm.search()
})

View File

@@ -28,6 +28,7 @@ import { toRaw } from 'vue'
import _ from 'lodash'
import { columnType } from '@/components/advancedSearch/meta/meta'
import { handleErrorTip } from '@/components/advancedSearch/meta/error'
import { overwriteUrl, urlParamsHandler } from '@/utils/tools'
export default {
name: 'TextMode',
@@ -81,11 +82,14 @@ export default {
const errorList = parser.validateStr(str)
if (_.isEmpty(errorList)) {
const metaList = parser.parseStr(str)
this.reloadUrl({ mode: 'tag' })
this.$emit('changeMode', 'tag', metaList)
} else {
this.reloadUrl({ mode: 'tag' })
this.$emit('changeMode', 'tag', { metaList: [], str: '' })
}
} else {
this.reloadUrl({ mode: 'tag' })
this.$emit('changeMode', 'tag', { str: '', metaList: [] })
}
},
@@ -135,6 +139,17 @@ export default {
current = current.replace(oldSqlPiece, newSqlPiece)
})
toRaw(this.codeMirror).setValue(current.trim())
},
/**
* 向地址栏添加/删除参数
*/
reloadUrl (newParam, clean) {
const { query } = this.$route
let newUrl = urlParamsHandler(window.location.href, query, newParam)
if (clean) {
newUrl = urlParamsHandler(window.location.href, query, newParam, clean)
}
overwriteUrl(newUrl)
}
},
watch: {
@@ -150,7 +165,13 @@ export default {
}
},
mounted () {
// 如果地址栏包含参数q则将参数q回显到搜索栏内
const { q } = this.$route.query
this.initCodeMirror()
if (q) {
toRaw(this.codeMirror).setValue(q)
}
const vm = this
this.emitter.on('advanced-search', function () {
vm.search()