Skip to content

Commit 06a10d0

Browse files
committedFeb 16, 2024·
fix: search item and not load data in server
1 parent b2e2dfe commit 06a10d0

File tree

1 file changed

+143
-124
lines changed

1 file changed

+143
-124
lines changed
 

‎pages/index.vue

+143-124
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,29 @@
11
<script setup lang="ts">
22
import type { Detail } from 'get-bonus';
33
import type { SubjectInformation, SubjectPersons, PersonInformation } from 'bgmc';
4-
import { Loader, Loader2, Search, Moon, Sun, Trash2, XCircle, Sparkles, History, AlertCircle } from 'lucide-vue-next';
5-
import { ref, watchEffect } from 'vue';
6-
import { Card, CardContent} from '..//components/ui/card';
4+
import {
5+
Loader,
6+
Loader2,
7+
Search,
8+
Moon,
9+
Sun,
10+
Trash2,
11+
XCircle,
12+
Sparkles,
13+
History,
14+
AlertCircle
15+
} from 'lucide-vue-next';
16+
import { ref, watchEffect } from 'vue';
17+
import { Card, CardContent } from '..//components/ui/card';
718
819
const route = useRoute();
920
const router = useRouter();
1021
11-
const { data } = await useAsyncData('search_results', async () =>
12-
route.query.q
13-
? Promise.all([$fetch(`/api/search/${route.query.q}`), $fetch(`/api/bgm/${route.query.q}`, {})])
14-
: undefined
15-
);
22+
// const { data } = await useAsyncData('search_results', async () =>
23+
// route.query.q
24+
// ? Promise.all([$fetch(`/api/search/${route.query.q}`), $fetch(`/api/bgm/${route.query.q}`, {})])
25+
// : undefined
26+
// );
1627
1728
type FullDetail = {
1829
details: Record<string, Detail[]> | null;
@@ -21,18 +32,22 @@ type FullDetail = {
2132
};
2233
2334
const details = ref<FullDetail | null>(
24-
data.value
25-
? {
26-
details: data.value[0].details,
27-
subject: data.value[1]?.subject,
28-
persons: data.value[1]?.persons
29-
}
30-
: null
35+
null
36+
// data.value
37+
// ? {
38+
// details: data.value[0].details,
39+
// subject: data.value[1]?.subject,
40+
// persons: data.value[1]?.persons
41+
// }
42+
// : null
3143
);
3244
3345
let abort: AbortController | null = null;
34-
const searchInput = ref((route.query.q as string | null) || '');
46+
// const searchInput = ref((route.query.q as string | null) || '');
47+
const searchInput = ref('');
3548
const isSearching = ref(false);
49+
const searchHistory = ref<string[]>([]);
50+
3651
const resetSearch = () => {
3752
if (!abort && !searchInput.value && !details.value) return;
3853
abort?.abort();
@@ -52,8 +67,8 @@ const search = async (input: string) => {
5267
path: route.path,
5368
query: { q: input }
5469
});
55-
const updatedHistory = [input, ...searchHistory.value.filter(item => item !== input)];
56-
searchHistory.value = updatedHistory.slice(0, 5);
70+
const updatedHistory = [input, ...searchHistory.value.filter((item) => item !== input)];
71+
searchHistory.value = updatedHistory.slice(0, 5);
5772
try {
5873
abort = new AbortController();
5974
isSearching.value = true;
@@ -83,7 +98,8 @@ watch(
8398
search(searchInput.value);
8499
}
85100
}
86-
}
101+
},
102+
{ immediate: true }
87103
);
88104
89105
const foundNums = computed(() => {
@@ -118,34 +134,32 @@ const random = (arr: string[]) => {
118134
119135
const colorMode = useColorMode();
120136
121-
const searchHistory = ref<string[]>([]);
122-
123-
// 初始化时从localStorage加载搜索历史
124-
const initHistory = () => {
125-
const savedHistory = localStorage.getItem('searchHistory');
126-
if (savedHistory) {
127-
searchHistory.value = JSON.parse(savedHistory) as string[];
128-
}
129-
};
130-
131-
// 移除历史记录中的某个条目
132-
const removeHistoryItem = (index: number) => {
133-
searchHistory.value.splice(index, 1);
134-
};
135-
136-
// 清空搜索历史
137-
const clearHistory = () => {
138-
searchHistory.value = [];
139-
};
137+
// 初始化时从localStorage加载搜索历史
138+
const initHistory = () => {
139+
const savedHistory = localStorage.getItem('searchHistory');
140+
if (savedHistory) {
141+
searchHistory.value = JSON.parse(savedHistory) as string[];
142+
}
143+
};
144+
145+
// 移除历史记录中的某个条目
146+
const removeHistoryItem = (index: number) => {
147+
searchHistory.value.splice(index, 1);
148+
};
149+
150+
// 清空搜索历史
151+
const clearHistory = () => {
152+
searchHistory.value = [];
153+
};
140154
141-
onMounted(() => {
142-
initHistory();
155+
onMounted(() => {
156+
initHistory();
143157
144-
// 监听searchHistory的变化并保存到localStorage
145-
watchEffect(() => {
146-
localStorage.setItem('searchHistory', JSON.stringify(searchHistory.value));
147-
});
148-
});
158+
// 监听searchHistory的变化并保存到localStorage
159+
watchEffect(() => {
160+
localStorage.setItem('searchHistory', JSON.stringify(searchHistory.value));
161+
});
162+
});
149163
</script>
150164

151165
<template>
@@ -201,21 +215,21 @@ onMounted(() => {
201215
<button class="mr-1.5">
202216
<History class="w-3 h-3"></History>
203217
</button>
204-
搜索历史
218+
搜索历史
205219
</Badge>
206220
<Badge variant="outline" class="select-none mr-4">
207-
<button @click="clearHistory" >
221+
<button @click="clearHistory">
208222
<Trash2 class="w-3 h-3"></Trash2>
209-
</button>
223+
</button>
210224
</Badge>
211-
<Item v-for="(item, index) in searchHistory" :key="index" class="mr-4">
212-
<button @click="search(item)" class="mr-3">
213-
{{ item }}
214-
</button>
215-
<button @click="removeHistoryItem(index)">
216-
<XCircle class="w-3 h-3 mr-4"></XCircle>
217-
</button>
218-
</Item>
225+
<span v-for="(item, index) in searchHistory" :key="index" class="mr-4">
226+
<button @click="search(item)" class="mr-3">
227+
{{ item }}
228+
</button>
229+
<button @click="removeHistoryItem(index)">
230+
<XCircle class="w-3 h-3 mr-4"></XCircle>
231+
</button>
232+
</span>
219233
</div>
220234
<div class="mt-4 flex gap-4">
221235
<ClientOnly>
@@ -224,8 +238,8 @@ onMounted(() => {
224238
<button class="mr-1.5">
225239
<Sparkles class="w-3 h-3"></Sparkles>
226240
</button>
227-
试一试吧
228-
</Badge>&nbsp;
241+
试一试吧 </Badge
242+
>&nbsp;
229243
<span v-for="(title, idx) in random(examples)" :key="title"
230244
>{{ idx > 0 ? '&nbsp;|&nbsp; ' : ''
231245
}}<span
@@ -248,16 +262,16 @@ onMounted(() => {
248262
></BangumiResult>
249263
<div v-else class="flex">
250264
<Card class="w-full mb-6">
251-
<CardContent class="p-6">
252-
<span class="text-2xl font-bold">貌似在 Bangumi 番组计划 没有找到作品详情。</span>
253-
<br />如果你搜索的并不是一部具体的「作品」,或者下方的商家搜索结果已按预期输出,请忽略本提示。
254-
<br />如果你搜索的作品在 Bangumi 番组计划存在,但仍然弹出这个提示,您可以<a
255-
href="https://github.com/YurierDept/get-bonus/issues"
256-
target="_blank"
257-
class="color-blue"
258-
>提交 Issue</a
259-
>。
260-
</CardContent>
265+
<CardContent class="p-6">
266+
<span class="text-2xl font-bold">貌似在 Bangumi 番组计划 没有找到作品详情。</span>
267+
<br />如果你搜索的并不是一部具体的「作品」,或者下方的商家搜索结果已按预期输出,请忽略本提示。
268+
<br />如果你搜索的作品在 Bangumi 番组计划存在,但仍然弹出这个提示,您可以<a
269+
href="https://github.com/YurierDept/get-bonus/issues"
270+
target="_blank"
271+
class="color-blue"
272+
>提交 Issue</a
273+
>。
274+
</CardContent>
261275
</Card>
262276
</div>
263277
<SearchResult
@@ -266,67 +280,72 @@ onMounted(() => {
266280
></SearchResult>
267281
<div v-else>
268282
<Card class="w-full mb-6">
269-
<CardContent class="p-6">
270-
<span class="text-2xl font-bold"
271-
><AlertCircle />
272-
已在目前支持的所有商家都搜索了一次,但貌似找不到商品。</span
273-
>
274-
<br />
275-
1. 请先确认您在搜索框输入的是商品(书籍等)的<span class="font-bold"
276-
>原文(例如:日文)标题</span
277-
>,且输入准确无误、不是简称。 <br />如果您输入的是中文译名,您应该可以在此段文字上方的
278-
Bangumi 番组计划 信息卡片,一键复制原文标题,重新进行搜索。如果上方来自 Bangumi 番组计划
279-
的结果有误,请自行找到正确的原文标题。
280-
<br />
281-
2. 尝试调整搜索设置。
282-
<br />
283-
3. 尝试只输入作品名称,或是商品名称当中较为关键的词语;搜索书籍可删去 第X卷 / X 巻
284-
等卷数表述,改用半角数字(如:0 1 ……),或不带卷数搜索。
285-
<br />
286-
4. 如果您访问本站的网络连接欠佳,可能也无法正常进行搜索并弹出本提示。请自行解决此类问题。
287-
<br />
288-
5. 如果您已阅读上述提示并都尝试过,但仍然无法解决问题,请
289-
<a
290-
href="https://github.com/YurierDept/get-bonus/issues"
291-
target="_blank"
292-
class="color-blue"
293-
>提交 Issue</a
294-
>
295-
给开发者,开发者会协助解决。
296-
</CardContent>
283+
<CardContent class="p-6">
284+
<span class="text-2xl font-bold"
285+
><AlertCircle /> 已在目前支持的所有商家都搜索了一次,但貌似找不到商品。</span
286+
>
287+
<br />
288+
1. 请先确认您在搜索框输入的是商品(书籍等)的<span class="font-bold"
289+
>原文(例如:日文)标题</span
290+
>,且输入准确无误、不是简称。 <br />如果您输入的是中文译名,您应该可以在此段文字上方的
291+
Bangumi 番组计划 信息卡片,一键复制原文标题,重新进行搜索。如果上方来自 Bangumi
292+
番组计划 的结果有误,请自行找到正确的原文标题。
293+
<br />
294+
2. 尝试调整搜索设置。
295+
<br />
296+
3. 尝试只输入作品名称,或是商品名称当中较为关键的词语;搜索书籍可删去 第X卷 / X 巻
297+
等卷数表述,改用半角数字(如:0 1 ……),或不带卷数搜索。
298+
<br />
299+
4.
300+
如果您访问本站的网络连接欠佳,可能也无法正常进行搜索并弹出本提示。请自行解决此类问题。
301+
<br />
302+
5. 如果您已阅读上述提示并都尝试过,但仍然无法解决问题,请
303+
<a
304+
href="https://github.com/YurierDept/get-bonus/issues"
305+
target="_blank"
306+
class="color-blue"
307+
>提交 Issue</a
308+
>
309+
给开发者,开发者会协助解决。
310+
</CardContent>
297311
</Card>
298312
</div>
299313
</div>
300314
<div v-else-if="details && foundNums === 0">
301315
<Card class="w-full mb-6">
302-
<CardContent class="p-6">
303-
<span class="text-2xl font-bold">
304-
<AlertCircle />
305-
没有搜索结果。</span><br />
306-
无法在 Bangumi 番组计划 与所有支持的商家找到任何符合搜索关键词的作品与商品。
307-
<br />
308-
1. 请先确认您在搜索框输入的是商品(书籍等)的<span class="font-bold"
309-
>原文(例如:日文)标题</span
310-
>,且输入准确无误、不是简称。<br />
311-
如果您输入的是中文译名,想用中文译名来查原文(例如:日文)标题,请注意您输入的中文译名需要完整、输入准确无误,<span
312-
class="font-bold"
313-
>同样不能是简称</span
314-
>。
315-
<br />
316-
2. 尝试调整搜索设置。
317-
<br />
318-
3. 尝试只输入作品名称,或是商品名称当中较为关键的词语;搜索书籍可删去 第X卷 / X 巻
319-
等卷数表述,改用半角数字(如:0 1 ……),或不带卷数搜索。
320-
<br />
321-
4. 如果您访问本站的网络连接欠佳,可能也无法正常进行搜索并弹出本提示。请自行解决此类问题。
322-
<br />
323-
5. 如果您已阅读上述提示并都尝试过,但仍然无法解决问题(例如:使用相同关键词在 Bangumi
324-
番组计划 或支持的商家可以搜到商品,但这里无法搜到),请
325-
<a href="https://github.com/YurierDept/get-bonus/issues" target="_blank" class="color-blue"
326-
>提交 Issue</a
327-
>
328-
给开发者,开发者会协助解决。
329-
</CardContent>
316+
<CardContent class="p-6">
317+
<span class="text-2xl font-bold">
318+
<AlertCircle />
319+
没有搜索结果。</span
320+
><br />
321+
无法在 Bangumi 番组计划 与所有支持的商家找到任何符合搜索关键词的作品与商品。
322+
<br />
323+
1. 请先确认您在搜索框输入的是商品(书籍等)的<span class="font-bold"
324+
>原文(例如:日文)标题</span
325+
>,且输入准确无误、不是简称。<br />
326+
如果您输入的是中文译名,想用中文译名来查原文(例如:日文)标题,请注意您输入的中文译名需要完整、输入准确无误,<span
327+
class="font-bold"
328+
>同样不能是简称</span
329+
>。
330+
<br />
331+
2. 尝试调整搜索设置。
332+
<br />
333+
3. 尝试只输入作品名称,或是商品名称当中较为关键的词语;搜索书籍可删去 第X卷 / X 巻
334+
等卷数表述,改用半角数字(如:0 1 ……),或不带卷数搜索。
335+
<br />
336+
4.
337+
如果您访问本站的网络连接欠佳,可能也无法正常进行搜索并弹出本提示。请自行解决此类问题。
338+
<br />
339+
5. 如果您已阅读上述提示并都尝试过,但仍然无法解决问题(例如:使用相同关键词在 Bangumi
340+
番组计划 或支持的商家可以搜到商品,但这里无法搜到),请
341+
<a
342+
href="https://github.com/YurierDept/get-bonus/issues"
343+
target="_blank"
344+
class="color-blue"
345+
>提交 Issue</a
346+
>
347+
给开发者,开发者会协助解决。
348+
</CardContent>
330349
</Card>
331350
</div>
332351
<div v-else>

0 commit comments

Comments
 (0)