From 231de87426edb19d38e62a669034108e3a74069d Mon Sep 17 00:00:00 2001
From: 杨磊 <505174330@qq.com>
Date: 星期日, 27 四月 2025 18:10:48 +0800
Subject: [PATCH] Merge branch 'master' of http://182.92.203.7:2001/r/wyyDatabase

---
 src/views/achievements/index.vue |  640 ++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 426 insertions(+), 214 deletions(-)

diff --git a/src/views/achievements/index.vue b/src/views/achievements/index.vue
index 71406e4..0d9ce7f 100644
--- a/src/views/achievements/index.vue
+++ b/src/views/achievements/index.vue
@@ -10,7 +10,7 @@
         <!-- 鎼滅储妗� -->
         <ul class="page-input">
           <li class="input-main">
-            <SearchBox />
+            <SearchBox @search="handleSearch" :options="inputOptions" />
           </li>
           <li class="input-txt" @click="isDisplay = !isDisplay">
             楂樼骇妫�绱�
@@ -19,12 +19,17 @@
         </ul>
         <!-- 楂樼骇鎼滅储 -->
         <div v-if="isDisplay" class="page-search">
-          <MyForm class="myfrom" @submit="
-            (data) => {
-              CurrentPage = 1;
-              onSubmit(data);
-            }
-          " @reset="resetForm" :from="from" />
+          <MyForm
+            class="myfrom"
+            @submit="
+              (data) => {
+                CurrentPage = 1;
+                onSubmit(data);
+              }
+            "
+            @reset="resetForm"
+            :from="from"
+          />
         </div>
         <!-- 鎼滅储缁撴灉 -->
         <div class="page-content">
@@ -34,14 +39,31 @@
               <li class="left-title">
                 <span>{{ category.title }}</span>
                 <p @click="category.isDisplay = !category.isDisplay">
-                  <img :src="[category.isDisplay ? topIcon : bottomIcon]" alt="" />
+                  <img
+                    :src="[category.isDisplay ? topIcon : bottomIcon]"
+                    alt=""
+                  />
                 </p>
               </li>
               <li class="left-main" v-if="category.isDisplay">
-                <div class="category-main" v-for="(item, index) in category.list" :key="index">
-                  <el-checkbox class="el-checkbox" style="display: inline-block; vertical-align: middle;"
-                    v-model="item.checked" :title="item.name">{{ item.name }}</el-checkbox>
-                  <span class="" style="display: inline-block; vertical-align: middle;">{{ item.num }}</span>
+                <div
+                  class="category-main"
+                  v-for="(item, index) in category.list"
+                  :key="index"
+                >
+                  <el-checkbox
+                    class="el-checkbox"
+                    v-model="item.checked"
+                    :title="item.name"
+                    @change="categoryChange(item)"
+                    style="display: inline-block; vertical-align: middle"
+                    >{{ item.name }}</el-checkbox
+                  >
+                  <span
+                    class=""
+                    style="display: inline-block; vertical-align: middle"
+                    >{{ item.num }}</span
+                  >
                 </div>
               </li>
             </ul>
@@ -52,25 +74,50 @@
                   <span>{{ annual.title }}</span>
                   <span>
                     鏃堕棿
-                    <img class="sort-Icon" :src="[isDisplay ? sortTop : sortBottom]" alt="" />
+                    <img
+                      class="sort-Icon"
+                      :src="[isDisplay ? sortTop : sortBottom]"
+                      alt=""
+                    />
                   </span>
-                  <span>鏂囩尞閲�
-                    <img class="sort-Icon" :src="[isDisplay ? sortBottom : sortTop]" alt="" />
+                  <span
+                    >鏂囩尞閲�
+                    <img
+                      class="sort-Icon"
+                      :src="[isDisplay ? sortBottom : sortTop]"
+                      alt=""
+                    />
                   </span>
                 </div>
                 <p @click="annual.isDisplay = !annual.isDisplay">
-                  <img :src="[annual.isDisplay ? topIcon : bottomIcon]" alt="" />
+                  <img
+                    :src="[annual.isDisplay ? topIcon : bottomIcon]"
+                    alt=""
+                  />
                 </p>
               </li>
               <li class="left-main" v-if="annual.isDisplay">
-                <div class="annual-main" :style="{
-                  display: index + 1 > professionIndex ? 'none' : '',
-                }" v-for="(item, index) in annual.list" :key="index">
-                  <el-checkbox class="el-checkbox" v-model="item.checked" :title="item.years">{{ item.years
-                  }}</el-checkbox>
+                <div
+                  class="annual-main"
+                  :style="{
+                    display: index + 1 > professionIndex ? 'none' : '',
+                  }"
+                  v-for="(item, index) in annual.list"
+                  :key="index"
+                >
+                  <el-checkbox
+                    class="el-checkbox"
+                    v-model="item.checked"
+                    :title="item.years"
+                    >{{ item.years }}</el-checkbox
+                  >
                   <span class="">{{ item.num }}</span>
                 </div>
-                <p class="annual-footer" v-if="annual.list && annual.list.length > 5" @click="shrinkClick('a', '骞村害')">
+                <p
+                  class="annual-footer"
+                  v-if="annual.list && annual.list.length > 5"
+                  @click="shrinkClick('a', '骞村害')"
+                >
                   {{ activeBox !== "a" ? "鏇村 鈭�" : "鏀惰捣 鈭�" }}
                 </p>
               </li>
@@ -82,23 +129,42 @@
                   <span>{{ sources.title }}</span>
                   <span>
                     鏂囩尞閲�
-                    <img class="sort-Icon" :src="[isDisplay ? sortBottom : sortTop]" alt="" />
+                    <img
+                      class="sort-Icon"
+                      :src="[isDisplay ? sortBottom : sortTop]"
+                      alt=""
+                    />
                   </span>
                 </div>
                 <p @click="sources.isDisplay = !sources.isDisplay">
-                  <img :src="[sources.isDisplay ? topIcon : bottomIcon]" alt="" />
+                  <img
+                    :src="[sources.isDisplay ? topIcon : bottomIcon]"
+                    alt=""
+                  />
                 </p>
               </li>
               <li class="left-main" v-if="sources.isDisplay">
-                <div class="sources-main" v-for="(item, index) in sources.list" :key="index" :style="{
-                  display: index + 1 > dynastyIndex ? 'none' : '',
-                }">
-                  <el-checkbox class="el-checkbox" :title="item.name" v-model="item.checked">{{ item.name
-                  }}</el-checkbox>
+                <div
+                  class="sources-main"
+                  v-for="(item, index) in sources.list"
+                  :key="index"
+                  :style="{
+                    display: index + 1 > dynastyIndex ? 'none' : '',
+                  }"
+                >
+                  <el-checkbox
+                    class="el-checkbox"
+                    :title="item.name"
+                    v-model="item.checked"
+                    >{{ item.name }}</el-checkbox
+                  >
                   <span class="">{{ item.num }}</span>
                 </div>
-                <p class="sources-footer" v-if="sources.list && sources.list.length > 5"
-                  @click="shrinkClick('b', '鏂囩尞鏉ユ簮')">
+                <p
+                  class="sources-footer"
+                  v-if="sources.list && sources.list.length > 5"
+                  @click="shrinkClick('b', '鏂囩尞鏉ユ簮')"
+                >
                   {{ activeBox !== "b" ? "鏇村 鈭�" : "鏀惰捣 鈭�" }}
                 </p>
               </li>
@@ -108,70 +174,112 @@
               <li class="left-title">
                 <span>{{ subject.title }}</span>
                 <p @click="subject.isDisplay = !subject.isDisplay">
-                  <img :src="[subject.isDisplay ? topIcon : bottomIcon]" alt="" />
+                  <img
+                    :src="[subject.isDisplay ? topIcon : bottomIcon]"
+                    alt=""
+                  />
                 </p>
               </li>
               <li class="left-main" v-if="subject.isDisplay">
-                <div class="category-main" v-for="(item, index) in subject.list" :key="index">
-                  <el-checkbox class="el-checkbox" v-model="item.checked" :title="item.name">{{ item.name
-                  }}</el-checkbox>
+                <div
+                  class="category-main"
+                  v-for="(item, index) in subject.list"
+                  :key="index"
+                >
+                  <el-checkbox
+                    class="el-checkbox"
+                    v-model="item.checked"
+                    :title="item.name"
+                    @change="subjectChange(item)"
+                    >{{ item.name }}</el-checkbox
+                  >
                   <span class="">{{ item.num }}</span>
                 </div>
               </li>
             </ul>
           </div>
-          <div class="content-right">
+          <div
+            class="content-right"
+            v-loading="loading"
+            element-loading-text="妫�绱㈢粨鏋滃姞杞戒腑"
+            element-loading-spinner="el-icon-loading"
+            element-loading-background="rgba(0, 0, 0, 0)"
+          >
             <!-- title閮ㄥ垎 -->
             <ul class="right-header">
               <li v-for="(item, index) in associationList" :key="index">
                 <p>{{ item.type }} : {{ item.content }}</p>
-                <img :src="errorIcon" alt="" />
+                <img
+                  @click="removeAssociationList(item.content)"
+                  :src="errorIcon"
+                  alt=""
+                />
               </li>
             </ul>
             <!-- 鍏眡x鏉� -->
             <ul class="right-number">
               <ul class="number-number">
-                鍏辨壘鍒�<span>{{ resultList.length }}</span>鏉$粨鏋�
+                鍏辨壘鍒�<span>{{ this.total }}</span
+                >鏉$粨鏋�
               </ul>
               <ul class="number-time">
                 鍙戣〃鏃堕棿
-                <span><img :src="sortBottom" alt="" /></span>
+                <span @click="sortChange()"
+                  ><img :src="!postedSortInfo ? sortBottom : sortTop" alt=""
+                /></span>
               </ul>
             </ul>
             <!-- 缁撴灉灞曠ず -->
-            <ul class="right-main" v-for="(item, index) in resultList" :key="index">
+            <ul
+              class="right-main"
+              v-for="(item, index) in resultList"
+              :key="index"
+            >
               <li class="main-name">
                 <p>{{ item.name }}</p>
                 <p>
-                  <el-button @click="goPage(item)">璇︽儏</el-button>
+                  <el-button @click="goPage(item.id)">璇︽儏</el-button>
                   <el-button>AI鏅鸿兘闃呰</el-button>
                 </p>
               </li>
               <li class="main-sources">
-                <span>{{ item.type }}</span>
-                <span>{{ item.sources }}</span>
-                <span>{{ item.time }}</span>
+                <span>{{ item.resourceTypeName }}</span>
+                <span>{{ item.source }}</span>
+                <span>{{ item.year }}</span>
+                <span v-if="item.DOI">doi锛歿{ item.DOI }}</span>
               </li>
               <li class="main-author">
                 {{ item.author }}
               </li>
-              <li class="main-title" :title="item.title">
-                <span>鎽樿: </span>{{ item.title }}
+              <li class="main-title" :title="item.cleanAbstract" v-if="item.abstract">
+                <span>鎽樿: </span>
+                <span class="page-main-abstract" v-html="item.abstract"></span>
               </li>
-              <li class="main-keyword">
+              <li class="main-keyword" v-if="item.keyWords && item.keyWords.length > 0">
                 <span>鍏抽敭璇嶏細</span>
-                <span class="keyWord" v-for="(citem, cindex) in item.keyword" :key="cindex">
-                  {{ citem.name }}
+                <span
+                  class="keyWord"
+                  v-for="(citem, cindex) in item.keyWords"
+                  :key="cindex"
+                >
+                  {{ citem }}
                 </span>
               </li>
             </ul>
             <!-- 鍒嗛〉 -->
-            <div class="pagination">
-              <el-pagination class="msg-pagination-container" :background="isBackground" layout="prev, pager, next"
-                :total="200">
+            <div class="pagination" v-if="total > 6">
+              <el-pagination
+                @current-change="handleCurrentChange"
+                class="msg-pagination-container"
+                :background="isBackground"
+                layout="prev, pager, next"
+                :total="total"
+                :page-size="6"
+              >
               </el-pagination>
             </div>
           </div>
+
         </div>
       </div>
     </div>
@@ -181,6 +289,8 @@
 <script>
 import MyForm from "@/components/form/form.vue";
 import SearchBox from "@/views/home/components/searchBox.vue";
+import MG from "@/assets/js/middleGround/WebMiddleGroundApi.js";
+import moment from "moment";
 /* eslint-disable vue/no-unused-components */
 export default {
   name: "achievements",
@@ -190,6 +300,23 @@
   },
   data() {
     return {
+      relatedList: [],
+      // 杈撳叆妗嗙殑鍐呭
+      inputValue: "",
+      // 閫夋嫨鐨勭被鍨�
+      inputType: "",
+      //绫诲瀷閫夋嫨
+      inputOptions: [
+        { value: "all", label: "鍏ㄩ儴" },
+        { value: "Name", label: "鏍囬" },
+        { value: "author", label: "浣滆��" },
+        { value: "keyWords", label: "鍏抽敭璇�" },
+        { value: "abstract", label: "鎽樿" },
+        { value: "source", label: "鏉ユ簮" },
+      ],
+      subjectAffiliationRefCode: "subjectAffiliation",
+      resourceTypeRefCode: "resourceType",
+      resourceTypeValueList: [],
       errorIcon: require("@/assets/images/achievements/errorIcon.png"),
       topIcon: require("@/assets/images/achievements/top-Icon.png"),
       bottomIcon: require("@/assets/images/achievements/bottom-Icon.png"),
@@ -292,6 +419,10 @@
           },
         ],
       },
+      categoryChecList: [],
+      subjectCheckList: [],
+
+      postedSortInfo: true,
       // 骞村害
       annual: {
         title: "骞村害",
@@ -416,173 +547,73 @@
       // 鐜板湪澶氬皯鏉℃椂鏈熸暟鎹�
       dynastyIndex: 4,
       // 鎵�鍏宠仈鍐呭
-      associationList: [
-        {
-          type: "浣滆��",
-          content: "闄堣 鍝�",
-        },
-        {
-          type: "浣滆��",
-          content: "闄堣 鍝�",
-        },
-        {
-          type: "浣滆��",
-          content: "闄堣 鍝�",
-        },
-      ],
+      associationList: [],
       // 鏌ヨ缁撴灉
-      resultList: [
-        {
-          name: "涓嵂闂告煖鐨勫巻鍙蹭紶鎵夸笌鏂版椂浠e彂灞曟�濊��",
-          sources: "鍖椾含涓尰鑽ぇ瀛﹀鎶�",
-          type: "鏈熷垔",
-          author: "鏉ㄦ担鑿�  鍖椾含涓尰鑽ぇ瀛︿腑鑽闄紱璧靛ぉ鎴�  鍖椾含甯堣寖澶у",
-          time: "2025-02-24 09:21",
-          title:
-            "涓嵂闂告煖鏄紶缁熶腑鑽皟鍓傜殑楂樼骇绠$悊浜哄憳锛屽湪'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃��",
-          keyword: [
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-          ],
-        },
-        {
-          name: "涓嵂闂告煖鐨勫巻鍙蹭紶鎵夸笌鏂版椂浠e彂灞曟�濊��",
-          sources: "鍖椾含涓尰鑽ぇ瀛﹀鎶�",
-          type: "鏈熷垔",
-          author: "鏉ㄦ担鑿�  鍖椾含涓尰鑽ぇ瀛︿腑鑽闄紱璧靛ぉ鎴�  鍖椾含甯堣寖澶у",
-          time: "2025-02-24 09:21",
-          title:
-            "涓嵂闂告煖鏄紶缁熶腑鑽皟鍓傜殑楂樼骇绠$悊浜哄憳锛屽湪'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃�備腑鑽椄鏌滄槸浼犵粺涓嵂璋冨墏鐨勯珮绾х鐞嗕汉鍛橈紝鍦�'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃��",
-          keyword: [
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-          ],
-        },
-        {
-          name: "涓嵂闂告煖鐨勫巻鍙蹭紶鎵夸笌鏂版椂浠e彂灞曟�濊��",
-          sources: "鍖椾含涓尰鑽ぇ瀛﹀鎶�",
-          type: "鏈熷垔",
-          author: "鏉ㄦ担鑿�  鍖椾含涓尰鑽ぇ瀛︿腑鑽闄紱璧靛ぉ鎴�  鍖椾含甯堣寖澶у",
-          time: "2025-02-24 09:21",
-          title:
-            "涓嵂闂告煖鏄紶缁熶腑鑽皟鍓傜殑楂樼骇绠$悊浜哄憳锛屽湪'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃�備腑鑽椄鏌滄槸浼犵粺涓嵂璋冨墏鐨勯珮绾х鐞嗕汉鍛橈紝鍦�'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃��",
-          keyword: [
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-          ],
-        },
-        {
-          name: "涓嵂闂告煖鐨勫巻鍙蹭紶鎵夸笌鏂版椂浠e彂灞曟�濊��",
-          sources: "鍖椾含涓尰鑽ぇ瀛﹀鎶�",
-          type: "鏈熷垔",
-          author: "鏉ㄦ担鑿�  鍖椾含涓尰鑽ぇ瀛︿腑鑽闄紱璧靛ぉ鎴�  鍖椾含甯堣寖澶у",
-          time: "2025-02-24 09:21",
-          title:
-            "涓嵂闂告煖鏄紶缁熶腑鑽皟鍓傜殑楂樼骇绠$悊浜哄憳锛屽湪'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃�備腑鑽椄鏌滄槸浼犵粺涓嵂璋冨墏鐨勯珮绾х鐞嗕汉鍛橈紝鍦�'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃��",
-          keyword: [
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-          ],
-        },
-        {
-          name: "涓嵂闂告煖鐨勫巻鍙蹭紶鎵夸笌鏂版椂浠e彂灞曟�濊��",
-          sources: "鍖椾含涓尰鑽ぇ瀛﹀鎶�",
-          type: "鏈熷垔",
-          author: "鏉ㄦ担鑿�  鍖椾含涓尰鑽ぇ瀛︿腑鑽闄紱璧靛ぉ鎴�  鍖椾含甯堣寖澶у",
-          time: "2025-02-24 09:21",
-          title:
-            "涓嵂闂告煖鏄紶缁熶腑鑽皟鍓傜殑楂樼骇绠$悊浜哄憳锛屽湪'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃�備腑鑽椄鏌滄槸浼犵粺涓嵂璋冨墏鐨勯珮绾х鐞嗕汉鍛橈紝鍦�'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃��",
-          keyword: [
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-          ],
-        },
-        {
-          name: "涓嵂闂告煖鐨勫巻鍙蹭紶鎵夸笌鏂版椂浠e彂灞曟�濊��",
-          sources: "鍖椾含涓尰鑽ぇ瀛﹀鎶�",
-          type: "鏈熷垔",
-          author: "鏉ㄦ担鑿�  鍖椾含涓尰鑽ぇ瀛︿腑鑽闄紱璧靛ぉ鎴�  鍖椾含甯堣寖澶у",
-          time: "2025-02-24 09:21",
-          title:
-            "涓嵂闂告煖鏄紶缁熶腑鑽皟鍓傜殑楂樼骇绠$悊浜哄憳锛屽湪'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃�備腑鑽椄鏌滄槸浼犵粺涓嵂璋冨墏鐨勯珮绾х鐞嗕汉鍛橈紝鍦�'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃��",
-          keyword: [
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-            {
-              name: "涓嵂闂告煖",
-            },
-          ],
-        },
-      ],
+      resultList: [],
+      total: 0,
+      paginationPage: 1,
+      loading: false,
+      labelList: {
+        abstract: "鎽樿",
+        author: "浣滆��",
+        keyword: "鍏抽敭璇�",
+        source: "鏉ユ簮",
+        title: "鏍囬",
+        year: "骞翠唤",
+      },
     };
+  },
+  mounted() {
+    this.getSelectData();
   },
 
   methods: {
-    async onSubmit(val) { },
+    categoryChange(val) {
+      console.log(val, "val");
+      if (val.checked) {
+        this.categoryChecList.push(val.value);
+      } else {
+        const index = this.categoryChecList.findIndex(
+          (item) => item === val.value
+        );
+        this.categoryChecList.splice(index, 1);
+      }
+      this.getItemList();
+    },
+
+    subjectChange(val) {
+      console.log(val, "val");
+      if (val.checked) {
+        this.subjectCheckList.push(val.value);
+      } else {
+        const index = this.subjectCheckList.findIndex(
+          (item) => item === val.value
+        );
+        this.subjectCheckList.splice(index, 1);
+      }
+      this.getItemList();
+    },
+
+    async onSubmit(val) {
+      for (let key in val) {
+        if (val[key] != "") {
+          this.associationList.push({
+            type: this.labelList[key],
+            content: val[key],
+            value: key,
+          });
+        }
+      }
+      console.log(this.associationList, "this.associationList");
+      this.getItemList();
+    },
     //閲嶇疆鎼滅储缁撴灉
     resetForm() {
       // this.onSearch("");
     },
     // 椤甸潰璺宠浆
-    goPage(key) {
-      this.$router.push({ name: "details", params: { key: key } });
+    goPage(id) {
+      this.$router.push({ name: "details", query: { id } });
     },
     // 鏀惰捣鍜屽睍绀�
     shrinkClick(key, name) {
@@ -601,6 +632,162 @@
         this.professionIndex = 4;
         this.activeBox = this.activeBox === "b" ? null : "b";
       }
+    },
+
+    //鑾峰彇涓嬫媺閫夋嫨妗嗙殑鍐呭
+    async getSelectData() {
+      this.loading = true;
+      try {
+        // 鍚屾椂鍙戣捣涓や釜寮傛璇锋眰锛屽苟绛夊緟瀹冧滑鐨勭粨鏋�
+        const [subjectListResult, resourceListResult] = await Promise.all([
+          this.getSelectContent(this.subjectAffiliationRefCode),
+          this.getSelectContent(this.resourceTypeRefCode),
+        ]);
+        console.log(subjectListResult.option);
+        this.subject.list = subjectListResult.option;
+        this.category.list = resourceListResult.option;
+        if (this.category.list && this.category.list.length) {
+          this.category.list.forEach((item) => {
+            this.resourceTypeValueList.push(item.value);
+          });
+        }
+        this.getItemList();
+      } catch (error) {
+        console.error("鑾峰彇涓嬫媺妗嗘暟鎹け璐�:", error);
+      }
+    },
+
+    //鑾峰彇閫夋嫨鍐呭
+    getSelectContent(refCode) {
+      let requestData = { refCodes: [refCode] };
+      return MG.store
+        .getProductTypeField(requestData)
+        .then((res) => {
+          const selestList = JSON.parse(res[0].config);
+          return selestList;
+        })
+        .catch((error) => {
+          console.error("鑾峰彇閫夋嫨鍐呭澶辫触:", error);
+          return null;
+        });
+    },
+
+    // 鍒犻櫎
+    removeAssociationList(value) {
+      this.associationList = this.associationList.filter(
+        (item) => item.content !== value
+      );
+      this.inputValue = "";
+      // 閫氱煡鐖剁粍浠舵暟鎹凡鏀瑰彉
+      this.getItemList()
+    },
+
+    // 鎼滅储
+    handleSearch(isText) {
+      this.associationList = []
+      if (isText.text != "") {
+        this.inputValue = isText.text;
+        this.inputType = isText.type;
+        this.associationList.push({
+          type: isText.label,
+          content: isText.text,
+        });
+        this.getItemList();
+      }
+    },
+
+    // 璇锋眰鏁版嵁
+    getItemList() {
+      let searchData = {}; // 鍒濆鍖栦竴涓┖瀵硅薄鏉ュ瓨鍌ㄦ悳绱㈡暟鎹�
+      if (this.inputValue) { // 濡傛灉杈撳叆鍊煎瓨鍦�
+        if (this.inputType != "all") { // 濡傛灉杈撳叆绫诲瀷涓嶆槸"all"
+          // 灏嗚緭鍏ュ�间笌杈撳叆绫诲瀷鍏宠仈锛屽苟娣诲姞涓�涓槦鍙�(*)浣滀负鍚庣紑
+          searchData[this.inputType + "*"] = this.inputValue;
+        } else { // 濡傛灉杈撳叆绫诲瀷鏄�"all"
+          // 閬嶅巻杈撳叆閫夐」
+          for (let index = 0; index < this.inputOptions.length; index++) {
+            const item = this.inputOptions[index]; // 鑾峰彇褰撳墠閫夐」
+            if (item.value !== "all") { // 濡傛灉褰撳墠閫夐」鐨勫�间笉鏄�"all"
+              if (!Object.keys(searchData).length) { // 濡傛灉searchData鏄┖鐨�
+                // 灏嗙涓�涓�夐」鐨勫�间笌杈撳叆鍊煎叧鑱旓紝骞舵坊鍔犱竴涓槦鍙�(*)浣滀负鍚庣紑
+                searchData[item.value + "*"] = this.inputValue;
+              } else { // 濡傛灉searchData涓嶆槸绌虹殑
+                // 浣跨敤"||"浣滀负鍓嶇紑锛屽皢鍚庣画閫夐」鐨勫�间笌杈撳叆鍊煎叧鑱旓紝骞舵坊鍔犱竴涓槦鍙�(*)浣滀负鍚庣紑
+                // 杩欓�氬父鐢ㄤ簬鏋勫缓涓�涓�昏緫鎴栵紙OR锛夋煡璇�
+                searchData["||" + item.value + "*"] = this.inputValue;
+              }
+            }
+          }
+        }
+      }
+      MG.resource
+        .getItem({
+          path: "*",
+          queryType: "*",
+          paging: {
+            start: (this.paginationPage - 1) * 6,
+            size: 6,
+          },
+          sort: {
+            year: this.postedSortInfo ? "Desc" : "Asc",
+          },
+          fields: {
+            cmsType: ["cmsItem"],
+            "resourceType*":
+              this.categoryChecList.length > 0
+                ? this.categoryChecList
+                : this.resourceTypeValueList,
+            source: [],
+            year: [],
+            abstract: [],
+            keyWords: [],
+            author: [],
+            DOI: [],
+            AIReading: [],
+            file: [],
+            IssueNumber: [],
+            "subjectAffiliation*": this.subjectCheckList,
+            ...searchData,
+          },
+        })
+        .then((res) => {
+          console.log(res, "鍏ㄩ儴鍐呭");
+
+          res.datas.forEach((item) => {
+            item.year = moment(item.year).format("YYYY-MM-DD");
+            if (typeof item.keyWords === "string") {
+              item.keyWords = item.keyWords.split(";;");
+            } else {
+              // 璁剧疆涓�涓粯璁ゅ�兼垨鑰呰繘琛屽叾浠栭敊璇鐞�
+              item.keyWords = [];
+            }
+            // item.cleanAbstract = item.abstract.replace(/<[^>]+>/g, "");
+            const foundItem = this.category.list.find((citem) => citem.value == item.cmsItemType);
+            item.resourceTypeName = foundItem ? foundItem.name : '';
+          })
+          this.resultList = res.datas
+          this.total = res.total;
+          this.loading = false;
+        });
+    },
+    // 澶勭悊椤电爜鍙樺寲
+    handleCurrentChange(newPage) {
+      this.paginationPage = newPage;
+      this.getItemList(); // 閲嶆柊鑾峰彇鏁版嵁
+      // 婊氬姩鍒伴〉闈㈤《閮�
+      this.$nextTick(() => {
+        const pageMain = document.querySelector('.page-main-father');
+        if (pageMain) {
+          pageMain.scrollTo({
+            top: 0,
+            behavior: 'smooth'
+          });
+        }
+      });
+    },
+    sortChange() {
+      this.postedSortInfo = !this.postedSortInfo;
+      this.getItemList();
     },
   },
 };
@@ -644,6 +831,7 @@
   flex: 1;
   width: 100%;
   height: 100%;
+  min-width: 1250px;
   overflow: auto;
   padding-top: 1%;
   padding-bottom: 2%;
@@ -724,6 +912,7 @@
         background-color: transparent;
         color: #937950;
         border: 1px solid #6f5a3a;
+        cursor: pointer;
 
         &:hover {
           background-color: #6f5a3a;
@@ -850,12 +1039,15 @@
     border-color: #d1d1d1;
   }
 
-  ::v-deep .el-checkbox .el-checkbox__input.is-checked+.el-checkbox__label {
+  ::v-deep .el-checkbox .el-checkbox__input.is-checked + .el-checkbox__label {
     color: #2c2c2c;
   }
 
   ::v-deep .el-checkbox .el-checkbox__input.is-checked .el-checkbox__inner,
-  ::v-deep .el-checkbox .el-checkbox__input.is-indeterminate .el-checkbox__inner {
+  ::v-deep
+    .el-checkbox
+    .el-checkbox__input.is-indeterminate
+    .el-checkbox__inner {
     border-color: #8f7a5a;
     background-color: #8f7a5a;
   }
@@ -987,7 +1179,6 @@
           font-size: 12px;
           font-weight: 350;
           padding-right: 10px;
-          border-right: 1px solid #2c2c2c;
           color: #333;
         }
 
@@ -996,7 +1187,18 @@
           font-size: 12px;
           font-weight: 350;
           padding-left: 10px;
+          padding-right: 10px;
           color: #333;
+          border-left: 1px solid #2c2c2c;
+        }
+
+        span:nth-child(4) {
+          font-family: Source Han Sans;
+          font-size: 12px;
+          font-weight: 350;
+          padding-left: 10px;
+          color: #333;
+          border-left: 1px solid #2c2c2c;
         }
 
         margin-bottom: 10px;
@@ -1027,6 +1229,14 @@
           font-weight: 700;
           font-size: 14px;
         }
+      }
+
+      .page-main-abstract {
+        font-family: Source Han Sans !important;
+        font-size: 14px !important;
+        font-weight: 350 !important;
+        line-height: 26px !important;
+        color: #333333 !important;
       }
 
       .main-keyword {
@@ -1086,11 +1296,13 @@
   border: 1px solid #cccccc;
 }
 
-:deep.msg-pagination-container.is-background .el-pager li:not(.disabled).active {
+:deep.msg-pagination-container.is-background
+  .el-pager
+  li:not(.disabled).active {
   /*褰撳墠閫変腑椤垫暟鐨勬牱寮忚繘琛屼慨鏀�*/
   background-color: #937950;
   color: #fff;
   border-radius: 5px;
   border: 1px solid #cccccc;
 }
-</style>
+</style>
\ No newline at end of file

--
Gitblit v1.9.1