mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-07 08:46:40 +08:00
feat 搜索框记忆
This commit is contained in:
@@ -14,10 +14,13 @@ const searchWordInput = ref<HTMLElement | null>(null)
|
|||||||
// 当前的搜索类型 media/person
|
// 当前的搜索类型 media/person
|
||||||
const searchType = ref('media')
|
const searchType = ref('media')
|
||||||
|
|
||||||
|
// 搜索提示词列表
|
||||||
|
const searchHintList = ref<string[]>([])
|
||||||
|
|
||||||
// Search
|
// Search
|
||||||
function search() {
|
function search() {
|
||||||
if (!searchWord.value) return
|
if (!searchWord.value) return
|
||||||
|
if (!searchHintList.value.includes(searchWord.value)) searchHintList.value.push(searchWord.value)
|
||||||
searchDialog.value = false
|
searchDialog.value = false
|
||||||
router.push({
|
router.push({
|
||||||
path: '/browse/media/search',
|
path: '/browse/media/search',
|
||||||
@@ -51,13 +54,15 @@ function openSearchDialog() {
|
|||||||
<VCardText>
|
<VCardText>
|
||||||
<VRow>
|
<VRow>
|
||||||
<VCol cols="12">
|
<VCol cols="12">
|
||||||
<VTextField
|
<VCombobox
|
||||||
ref="searchWordInput"
|
ref="searchWordInput"
|
||||||
v-model="searchWord"
|
v-model="searchWord"
|
||||||
|
:items="searchHintList"
|
||||||
:prepend-inner-icon="searchType == 'person' ? 'mdi-account' : 'mdi-movie'"
|
:prepend-inner-icon="searchType == 'person' ? 'mdi-account' : 'mdi-movie'"
|
||||||
:label="searchType == 'person' ? '搜索演员' : '搜索电影、电视剧'"
|
:label="searchType == 'person' ? '搜索演员' : '搜索电影、电视剧'"
|
||||||
@keydown.enter="search"
|
@keydown.enter="search"
|
||||||
@click:prepend-inner="switchSearchType"
|
@click:prepend-inner="switchSearchType"
|
||||||
|
clearable
|
||||||
/>
|
/>
|
||||||
</VCol>
|
</VCol>
|
||||||
</VRow>
|
</VRow>
|
||||||
@@ -76,9 +81,10 @@ function openSearchDialog() {
|
|||||||
</IconBtn>
|
</IconBtn>
|
||||||
<!-- 👉 Search Textfield -->
|
<!-- 👉 Search Textfield -->
|
||||||
<span class="w-1/5">
|
<span class="w-1/5">
|
||||||
<VTextField
|
<VCombobox
|
||||||
key="search_navbar"
|
key="search_navbar"
|
||||||
v-model="searchWord"
|
v-model="searchWord"
|
||||||
|
:items="searchHintList"
|
||||||
class="d-none d-lg-block text-disabled search-box"
|
class="d-none d-lg-block text-disabled search-box"
|
||||||
density="compact"
|
density="compact"
|
||||||
variant="solo"
|
variant="solo"
|
||||||
|
|||||||
@@ -35,11 +35,10 @@ const tabs = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
// 当前排序字段
|
// 当前排序字段
|
||||||
const activeSort = ref('')
|
const activeSort = ref(null)
|
||||||
|
|
||||||
// 排序选项
|
// 排序选项
|
||||||
const sortOptions = [
|
const sortOptions = [
|
||||||
{ title: '默认', value: '' },
|
|
||||||
{ title: '热门', value: 'count' },
|
{ title: '热门', value: 'count' },
|
||||||
{ title: '插件名称', value: 'plugin_name' },
|
{ title: '插件名称', value: 'plugin_name' },
|
||||||
{ title: '作者', value: 'plugin_author' },
|
{ title: '作者', value: 'plugin_author' },
|
||||||
@@ -299,7 +298,7 @@ const sortedUninstalledList = computed(() => {
|
|||||||
})
|
})
|
||||||
} else if (activeSort.value) {
|
} else if (activeSort.value) {
|
||||||
return ret_list.sort((a: any, b: any) => {
|
return ret_list.sort((a: any, b: any) => {
|
||||||
return a[activeSort.value] > b[activeSort.value] ? 1 : -1
|
return a[activeSort.value ?? ''] > b[activeSort.value ?? ''] ? 1 : -1
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user