Skip to content

Commit 43f3c67

Browse files
author
wangding
committed
add router search
1 parent 6768cde commit 43f3c67

File tree

3 files changed

+51
-51
lines changed

3 files changed

+51
-51
lines changed

.vscode/settings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"source.fixAll.eslint": true
99
},
1010
"[vue]": {
11-
"editor.defaultFormatter": "esbenp.prettier-vscode"
11+
"editor.defaultFormatter": "Vue.volar"
1212
},
1313
"[javascript]": {
1414
"editor.defaultFormatter": "esbenp.prettier-vscode"

src/App.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import { isDark } from '@/utils/is'
33
import { useAppStore } from '@/store/modules/app'
44
import { useDesign } from '@/hooks/web/useDesign'
55
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
6-
import routerSearch from '@/components/RouterSearch'
7-
6+
import routerSearch from '@/components/RouterSearch/index.vue'
87
98
const { getPrefixCls } = useDesign()
109
const prefixCls = getPrefixCls('app')
@@ -26,11 +25,12 @@ setDefaultTheme()
2625
<template>
2726
<ConfigGlobal :size="currentSize">
2827
<RouterView :class="greyMode ? `${prefixCls}-grey-mode` : ''" />
29-
<routerSearch/>
28+
<routerSearch />
3029
</ConfigGlobal>
3130
</template>
3231
<style lang="scss">
3332
$prefix-cls: #{$namespace}-app;
33+
3434
.size {
3535
width: 100%;
3636
height: 100%;

src/components/RouterSearch/index.vue

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,76 @@
11
<template>
2-
<ElDialog v-model="showSearch" :show-close="false" title="菜单搜索">
3-
<el-select
4-
filterable
5-
:reserve-keyword="false"
6-
remote
7-
placeholder="请输入菜单内容"
8-
:remote-method="remoteMethod"
9-
style="width: 100%;"
10-
@change="handleChange"
11-
>
12-
<el-option
13-
v-for="item in options"
14-
:key="item.value"
15-
:label="item.label"
16-
:value="item.value"
17-
/>
18-
</el-select>
19-
</ElDialog>
2+
<ElDialog v-model="showSearch" :show-close="false" title="菜单搜索">
3+
<el-select
4+
filterable
5+
:reserve-keyword="false"
6+
remote
7+
placeholder="请输入菜单内容"
8+
:remote-method="remoteMethod"
9+
style="width: 100%"
10+
@change="handleChange"
11+
>
12+
<el-option
13+
v-for="item in options"
14+
:key="item.value"
15+
:label="item.label"
16+
:value="item.value"
17+
/>
18+
</el-select>
19+
</ElDialog>
2020
</template>
2121

2222
<script setup lang="ts">
2323
const router = useRouter() // 路由对象
2424
const showSearch = ref(false) // 是否显示弹框
25-
const value:Ref = ref('') // 用户输入的值
25+
const value: Ref = ref('') // 用户输入的值
2626
2727
const routers = router.getRoutes() // 路由对象
28-
const options = computed(() => { // 提示选项
29-
if(!value.value) {
30-
return []
28+
const options = computed(() => {
29+
// 提示选项
30+
if (!value.value) {
31+
return []
32+
}
33+
const list = routers.filter((item: any) => {
34+
if (item.meta.title?.indexOf(value.value) > -1 || item.path.indexOf(value.value) > -1) {
35+
return true
3136
}
32-
const list = routers.filter((item:any) => {
33-
if(item.meta.title?.indexOf(value.value) > -1 || item.path.indexOf(value.value) > -1) {
34-
return true
35-
}
36-
})
37-
return list.map((item) => {
38-
return {
39-
label: `${item.meta.title}${item.path}`,
40-
value: item.path
41-
}
42-
})
37+
})
38+
return list.map((item) => {
39+
return {
40+
label: `${item.meta.title}${item.path}`,
41+
value: item.path
42+
}
43+
})
4344
})
4445
45-
4646
function remoteMethod(data) {
47-
// 这里可以执行相应的操作(例如打开搜索框等)
48-
value.value = data
47+
// 这里可以执行相应的操作(例如打开搜索框等)
48+
value.value = data
4949
}
5050
5151
function handleChange(path) {
52-
router.push({path})
52+
router.push({ path })
5353
}
5454
5555
onMounted(() => {
56-
window.addEventListener('keydown', listenKey)
56+
window.addEventListener('keydown', listenKey)
5757
})
5858
5959
onUnmounted(() => {
60-
window.removeEventListener('keydown', listenKey)
60+
window.removeEventListener('keydown', listenKey)
6161
})
6262
6363
// 监听 ctrl + k
6464
function listenKey(event) {
65-
if ((event.ctrlKey || event.metaKey) && event.key === 'k') {
66-
showSearch.value = !showSearch.value
67-
// 这里可以执行相应的操作(例如打开搜索框等)
68-
}
65+
if ((event.ctrlKey || event.metaKey) && event.key === 'k') {
66+
showSearch.value = !showSearch.value
67+
// 这里可以执行相应的操作(例如打开搜索框等)
68+
}
6969
}
7070
7171
defineExpose({
72-
openSearch: () => {
73-
showSearch.value = true
74-
}
72+
openSearch: () => {
73+
showSearch.value = true
74+
}
7575
})
76-
</script>
76+
</script>

0 commit comments

Comments
 (0)