@@ -1029,13 +1029,34 @@ export default defineComponent({
10291029 displayedCount: displayedCount .value ,
10301030 scrollPosition: scrollPosition .value ,
10311031 scrollAreaHeight: scrollAreaHeight .value ,
1032- loadingMore: loadingMore .value
1032+ loadingMore: loadingMore .value ,
1033+ timestamp: Date .now () // 添加时间戳用于判断状态新鲜度
10331034 };
10341035 pageStateStore .savePageState (' searchAggregation' , state);
10351036 console .log (' 🔄 [状态保存] 保存聚合搜索页面状态:' , state);
10361037 }
10371038 };
10381039
1040+ // 清除页面状态
1041+ const clearPageState = () => {
1042+ pageStateStore .clearPageState (' searchAggregation' );
1043+ console .log (' 🔄 [状态清理] 已清除聚合搜索页面状态' );
1044+
1045+ // 重置所有状态到初始值
1046+ searchKeyword .value = ' ' ;
1047+ hasSearched .value = false ;
1048+ searchResults .value = {};
1049+ loadingStates .value = {};
1050+ errorStates .value = {};
1051+ activeSource .value = ' ' ;
1052+ currentPages .value = {};
1053+ hasMorePages .value = {};
1054+ searchCompletedTimes .value = {};
1055+ displayedCount .value = pageSize .value ;
1056+ scrollPosition .value = 0 ;
1057+ loadingMore .value = false ;
1058+ };
1059+
10391060 const restorePageState = () => {
10401061 const savedState = pageStateStore .getPageState (' searchAggregation' );
10411062 if (savedState && ! pageStateStore .isStateExpired (' searchAggregation' )) {
@@ -1097,23 +1118,36 @@ export default defineComponent({
10971118 const isReturnFromDetail = route .query ._returnFromDetail === ' true' ;
10981119 console .log (' 🔄 [状态恢复] 是否从详情页返回:' , isReturnFromDetail);
10991120
1121+ // 检查URL中是否有关键词参数
1122+ const urlKeyword = route .query .keyword ;
1123+
11001124 // 尝试恢复页面状态
11011125 const restored = restorePageState ();
11021126 if (restored) {
11031127 console .log (' 🔄 [状态恢复] 成功恢复聚合搜索页面状态' );
11041128
1105- // 如果是从详情页返回,优先使用恢复的状态,不执行新搜索
1129+ // 检查恢复的状态是否与URL参数匹配
1130+ const stateKeyword = searchKeyword .value ;
1131+
11061132 if (isReturnFromDetail) {
1133+ // 如果是从详情页返回,优先使用恢复的状态,不执行新搜索
11071134 console .log (' 🔄 [状态恢复] 从详情页返回,使用恢复的状态,不执行新搜索' );
1108- } else if (route .query .keyword && route .query .keyword !== searchKeyword .value ) {
1109- // 如果不是从详情页返回,且URL中有不同的关键词,则执行新的搜索
1110- console .log (' 🔄 [状态恢复] URL关键词与恢复状态不同,执行新搜索:' , route .query .keyword );
1111- performSearch (route .query .keyword );
1135+ } else if (urlKeyword && urlKeyword === stateKeyword) {
1136+ // URL关键词与恢复状态匹配,使用恢复的状态
1137+ console .log (' 🔄 [状态恢复] URL关键词与恢复状态匹配,使用恢复的状态' );
1138+ } else if (urlKeyword && urlKeyword !== stateKeyword) {
1139+ // URL关键词与恢复状态不匹配,执行新搜索
1140+ console .log (' 🔄 [状态恢复] URL关键词与恢复状态不匹配,执行新搜索:' , urlKeyword);
1141+ performSearch (urlKeyword);
1142+ } else if (! urlKeyword && stateKeyword) {
1143+ // URL中没有关键词但有恢复状态,说明用户可能点击了关闭按钮,清除状态
1144+ console .log (' 🔄 [状态恢复] URL中没有关键词但有恢复状态,清除状态回到初始页面' );
1145+ clearPageState ();
11121146 }
1113- } else if (route . query . keyword ) {
1147+ } else if (urlKeyword ) {
11141148 // 如果没有恢复状态但URL中有关键词,则执行搜索
1115- console .log (' 🔄 [状态恢复] 没有保存状态,根据URL关键词执行搜索:' , route . query . keyword );
1116- performSearch (route . query . keyword );
1149+ console .log (' 🔄 [状态恢复] 没有保存状态,根据URL关键词执行搜索:' , urlKeyword );
1150+ performSearch (urlKeyword );
11171151 }
11181152
11191153 // 清理URL中的返回标识
@@ -1167,6 +1201,7 @@ export default defineComponent({
11671201 handleScroll,
11681202 handleActionClose,
11691203 randomizeHotSearchTags,
1204+ clearPageState,
11701205 // 最近搜索
11711206 recentSearches,
11721207 clearRecentSearches,
0 commit comments