diff --git a/src/components/Search/Search.vue b/src/components/Search/Search.vue index 28fb5c9..dab53b8 100644 --- a/src/components/Search/Search.vue +++ b/src/components/Search/Search.vue @@ -72,7 +72,10 @@ async function getHistory() { getHistory() function goPath(item, id) { - router.push({ name: item.path, query: { id, searchContent: item.data[0].name } }) + const desiredObject = item.data.find(function (item) { + return item.id === id; + }); + router.push({ name: item.path, query: { id, searchContent: desiredObject.name } }) emit('close') } diff --git a/src/views/final/aside/Aside.vue b/src/views/final/aside/Aside.vue index 79c70cd..78a7df2 100644 --- a/src/views/final/aside/Aside.vue +++ b/src/views/final/aside/Aside.vue @@ -236,6 +236,7 @@ const handleOk = (item: any) => { @select="scrollHandler" @close="setShowSearch(false)" @inputChange="inputChange" + @showSearch="setShowSearch(true)" /> -import { ref } from 'vue' +import { nextTick, onMounted, ref } from 'vue' import { debounce } from 'lodash-es' import { asideMap } from '@/config/aside' import type { SearchEntity } from '/#/home' import { useConfig } from '@/store/modules/asideConfig' +import { useRoute } from 'vue-router' + +const route = useRoute() +const searchContent = route.query.searchContent as string; defineOptions({ name: 'Search' }) const emit = defineEmits<{ (e: 'close'): void (e: 'select', key: string): void (e: 'inputChange', value: string): void + (e: 'showSearch'): void }>() const data = ref([]) @@ -20,7 +25,7 @@ const searchKeyword = ref('') const inputHandler = debounce((keyword) => { searchKeyword.value = keyword; - emit('inputChange',keyword) + emit('inputChange', keyword) }, 300) configStore.$subscribe(() => { @@ -54,7 +59,7 @@ function selectHandler(item: SearchEntity) { // 模糊搜索 const searchName = () => { configStore.setSearchValue(searchKeyword.value); - emit('inputChange',searchKeyword.value); + emit('inputChange', searchKeyword.value); } const close = () => { @@ -63,16 +68,29 @@ const close = () => { emit('close'); } +const initSerach = () => { + if (searchContent) { + emit('showSearch') + const id_param = searchContent.match(/-\d+-/); + if (id_param) { + searchKeyword.value = id_param[0].slice(1, -1); + emit('inputChange', searchKeyword.value) + } + } +} +onMounted(() => { + initSerach() +}) +