File tree Expand file tree Collapse file tree 3 files changed +38
-1
lines changed Expand file tree Collapse file tree 3 files changed +38
-1
lines changed Original file line number Diff line number Diff line change 1
1
<template >
2
- <ElDialog v-model =" showSearch" :show-close =" false" title =" 菜单搜索" >
2
+ <ElDialog v-if = " isModal " v- model =" showSearch" :show-close =" false" title =" 菜单搜索" >
3
3
<el-select
4
4
filterable
5
5
:reserve-keyword =" false"
17
17
/>
18
18
</el-select >
19
19
</ElDialog >
20
+ <div v-else class =" custom-hover" @click.stop =" showTopSearch = !showTopSearch" >
21
+ <Icon icon =" ep:search" />
22
+ <el-select
23
+ filterable
24
+ :reserve-keyword =" false"
25
+ remote
26
+ placeholder =" 请输入菜单内容"
27
+ :remote-method =" remoteMethod"
28
+ class =" overflow-hidden transition-all-600"
29
+ :class =" showTopSearch ? 'w-220px ml2' : 'w-0'"
30
+ @change =" handleChange"
31
+ >
32
+ <el-option v-for =" item in options" :key =" item.value" :label =" item.label" :value =" item.value" />
33
+ </el-select >
34
+ </div >
20
35
</template >
21
36
22
37
<script lang="ts" setup>
38
+ defineProps ({
39
+ isModal: {
40
+ type: Boolean ,
41
+ default: true
42
+ }
43
+ })
44
+
23
45
const router = useRouter () // 路由对象
24
46
const showSearch = ref (false ) // 是否显示弹框
47
+ const showTopSearch = ref (false ) // 是否显示顶部搜索框
25
48
const value: Ref = ref (' ' ) // 用户输入的值
26
49
27
50
const routers = router .getRoutes () // 路由对象
@@ -50,14 +73,21 @@ function remoteMethod(data) {
50
73
51
74
function handleChange(path ) {
52
75
router .push ({ path })
76
+ hiddenTopSearch ();
77
+ }
78
+
79
+ function hiddenTopSearch() {
80
+ showTopSearch .value = false
53
81
}
54
82
55
83
onMounted (() => {
56
84
window .addEventListener (' keydown' , listenKey )
85
+ window .addEventListener (' click' , hiddenTopSearch )
57
86
})
58
87
59
88
onUnmounted (() => {
60
89
window .removeEventListener (' keydown' , listenKey )
90
+ window .removeEventListener (' click' , hiddenTopSearch )
61
91
})
62
92
63
93
// 监听 ctrl + k
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ import { Screenfull } from '@/layout/components/Screenfull'
7
7
import { Breadcrumb } from ' @/layout/components/Breadcrumb'
8
8
import { SizeDropdown } from ' @/layout/components/SizeDropdown'
9
9
import { LocaleDropdown } from ' @/layout/components/LocaleDropdown'
10
+ import RouterSearch from ' @/components/RouterSearch/index.vue'
10
11
import { useAppStore } from ' @/store/modules/app'
11
12
import { useDesign } from ' @/hooks/web/useDesign'
12
13
@@ -25,6 +26,9 @@ const hamburger = computed(() => appStore.getHamburger)
25
26
// 全屏图标
26
27
const screenfull = computed (() => appStore .getScreenfull )
27
28
29
+ // 搜索图片
30
+ const search = computed (() => appStore .search )
31
+
28
32
// 尺寸图标
29
33
const size = computed (() => appStore .getSize )
30
34
@@ -61,6 +65,7 @@ export default defineComponent({
61
65
{ screenfull .value ? (
62
66
<Screenfull class = " custom-hover" color = " var(--top-header-text-color)" ></Screenfull >
63
67
) : undefined }
68
+ { search .value ? (<RouterSearch isModal = { false } />) : undefined }
64
69
{ size .value ? (
65
70
<SizeDropdown class = " custom-hover" color = " var(--top-header-text-color)" ></SizeDropdown >
66
71
) : undefined }
Original file line number Diff line number Diff line change @@ -16,6 +16,7 @@ interface AppState {
16
16
uniqueOpened : boolean
17
17
hamburger : boolean
18
18
screenfull : boolean
19
+ search : boolean
19
20
size : boolean
20
21
locale : boolean
21
22
message : boolean
@@ -52,6 +53,7 @@ export const useAppStore = defineStore('app', {
52
53
uniqueOpened : true , // 是否只保持一个子菜单的展开
53
54
hamburger : true , // 折叠图标
54
55
screenfull : true , // 全屏图标
56
+ search : true , // 搜索图标
55
57
size : true , // 尺寸图标
56
58
locale : true , // 多语言图标
57
59
message : true , // 消息图标
You can’t perform that action at this time.
0 commit comments