Browse Source

feature 1001582

搜索结果页面按被引量排序实现
Kevin Jiang 2 years ago
parent
commit
f8abbefbaa

+ 4 - 1
src/types/search.types.ts

@@ -5,6 +5,9 @@ export interface SearchResultDoc {
   unit: string;
   keywords: string[];
   abstract: string;
+  unit_scholar: {scholar_name: string, unit_name: string}[];
+  cited?: number;
+  year:? number;
 }
 
 export interface SearchResult {
@@ -27,7 +30,7 @@ export interface Pagination {
   size: number;
 }
 
-export type Sort = 'Relevance' | 'DateDesc' | 'DateAsc';
+export type Sort = 'Relevance' | 'DateDesc' | 'DateAsc' | 'CitedDesc';
 
 export type ResultMode = 'brief' | 'detail';
 

+ 2 - 0
src/views/search/SearchResultView.vue

@@ -70,6 +70,8 @@ function performSearch(searchParams: SearchParams) {
       sortParam = { "year": "DESC" }
     } else if (sort === 'DateAsc') {
       sortParam = { "year": "ASC" }
+    } else if (sort === 'CitedDesc') {
+      sortParam = { "cited": "DESC" }
     }
   }
 

+ 27 - 3
src/views/search/components/SearchResultItem.vue

@@ -13,6 +13,14 @@ defineProps({
     default() { return 'detail' },
   }
 });
+
+function getAuthorAndUnit(scholar_name: string, unit_name: string) {
+  let str = scholar_name
+  if (unit_name) {
+    str += ' ' + unit_name
+  }
+  return str
+}
 </script>
 
 <template>
@@ -23,9 +31,17 @@ defineProps({
       </RouterLink>
     </h1>
     <div class="metadata">
-      <div>作者:{{ data.authors.join(",") }}</div>
-      <div v-if="data.unit">机构:{{ data.unit }}</div>
-      <div>关键词:{{ data.keywords.join(",") }}</div>
+      <div>
+        <span>作者:</span>
+        <span v-for="(item, index) in data.unit_scholar" :key="index" class="author-item">
+          {{ getAuthorAndUnit(item.scholar_name, item.unit_name) }}
+        </span>
+      </div>
+      <div v-if="data.keywords.length > 0">关键词:{{ data.keywords.join(",") }}</div>
+      <div>
+        <span>时间:{{ data.year }}</span>
+        <span>,被引量:{{ data.cited }}</span>
+      </div>
     </div>
     <p v-if="mode != 'brief'">摘要:<span v-html="data.abstract.replace('摘要:', '')"></span></p>
   </div>
@@ -37,6 +53,14 @@ defineProps({
 
   .metadata {
     padding-bottom: 5px;
+
+    .author-item {
+      margin-left: 1em;
+
+      &:nth-child(2) {
+        margin-left: 0;
+      }
+    }
   }
 }
 </style>