From c6189f35d8744bf9c90bc15fd132ceb2a51d902c Mon Sep 17 00:00:00 2001
From: 杨磊 <505174330@qq.com>
Date: 星期一, 28 四月 2025 19:29:52 +0800
Subject: [PATCH] bug修改

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

diff --git a/src/views/achievements/index.vue b/src/views/achievements/index.vue
index 4faf930..42bb078 100644
--- a/src/views/achievements/index.vue
+++ b/src/views/achievements/index.vue
@@ -170,7 +170,7 @@
               </li>
             </ul>
             <!-- 瀛︾ -->
-            <ul>
+            <!-- <ul>
               <li class="left-title">
                 <span>{{ subject.title }}</span>
                 <p @click="subject.isDisplay = !subject.isDisplay">
@@ -196,7 +196,7 @@
                   <span class="">{{ item.num }}</span>
                 </div>
               </li>
-            </ul>
+            </ul> -->
           </div>
           <div
             class="content-right"
@@ -238,7 +238,7 @@
               <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>
@@ -251,16 +251,34 @@
               <li class="main-author">
                 {{ item.author }}
               </li>
-              <li class="main-title" :title="item.abstract">
+              <li
+                class="main-title"
+                :title="item.cleanAbstract"
+                v-if="item.abstract"
+              >
                 <span>鎽樿: </span>
-                <span class="page-main-abstract" v-html="item.abstract"></span>
+                <span
+                  class="page-main-abstract"
+                  v-html="item.cleanAbstract"
+                ></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.keyWords"
                   :key="cindex"
+                  @click="
+                    () =>
+                      handleSearch({
+                        text: citem,
+                        type: 'keyWords',
+                        label: '鍏抽敭璇�',
+                      })
+                  "
                 >
                   {{ citem }}
                 </span>
@@ -278,6 +296,7 @@
               >
               </el-pagination>
             </div>
+            <el-empty v-if="!loading && !resultList.length"></el-empty>
           </div>
         </div>
       </div>
@@ -299,6 +318,7 @@
   },
   data() {
     return {
+      relatedList: [],
       // 杈撳叆妗嗙殑鍐呭
       inputValue: "",
       // 閫夋嫨鐨勭被鍨�
@@ -353,7 +373,7 @@
           {
             type: "input",
             label: "鏍囥��棰�",
-            name: "title",
+            name: "Name",
             value: "",
           },
           {
@@ -430,39 +450,35 @@
         list: [
           {
             years: "2025",
-            num: 20,
+            num: 10,
             check: false,
           },
           {
-            years: "2025",
-            num: 20,
+            years: "2024",
+            num: 18,
             check: false,
           },
           {
-            years: "2025",
-            num: 20,
+            years: "2023",
+            num: 21,
             check: false,
           },
           {
-            years: "2025",
-            num: 20,
+            years: "2022",
+            num: 19,
             check: false,
           },
           {
-            years: "2025",
-            num: 20,
+            years: "2021",
+            num: 22,
             check: false,
           },
           {
-            years: "2025",
-            num: 20,
+            years: "2020",
+            num: 24,
             check: false,
           },
-          {
-            years: "2025",
-            num: 20,
-            check: false,
-          },
+     
         ],
       },
       // 鏂囩尞鏉ユ簮
@@ -478,30 +494,26 @@
             check: false,
           },
           {
-            name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�",
-            num: 190,
+            name: "鍖椾含甯堣寖澶у",
+            num: 19,
+            check: false,
+          },
+          {
+            name: "涓浗涓尰绉戝闄�",
+            num: 22,
             check: false,
           },
           {
             name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�",
-            num: 190,
+            num: 31,
             check: false,
           },
           {
-            name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�",
-            num: 190,
+            name: "骞垮窞涓尰鑽ぇ瀛�",
+            num: 25,
             check: false,
           },
-          {
-            name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�",
-            num: 190,
-            check: false,
-          },
-          {
-            name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�",
-            num: 190,
-            check: false,
-          },
+  
         ],
       },
       // 瀛︾
@@ -556,27 +568,32 @@
         author: "浣滆��",
         keyword: "鍏抽敭璇�",
         source: "鏉ユ簮",
-        title: "鏍囬",
+        Name: "鏍囬",
         year: "骞翠唤",
       },
     };
   },
   mounted() {
-    this.getSelectContent();
-    this.getLeftCheckbox();
     this.getSelectData();
   },
 
   methods: {
     categoryChange(val) {
-      console.log(val, "val");
       if (val.checked) {
         this.categoryChecList.push(val.value);
+        this.associationList.push({
+          type: "绫诲瀷",
+          content: val.name,
+        });
       } else {
         const index = this.categoryChecList.findIndex(
           (item) => item === val.value
         );
+        const index2 = this.associationList.findIndex(
+          (item) => item.name === val.name
+        );
         this.categoryChecList.splice(index, 1);
+        this.associationList.splice(index2, 1);
       }
       this.getItemList();
     },
@@ -595,16 +612,23 @@
     },
 
     async onSubmit(val) {
+      console.log(val, "val");
+      console.log(this.associationList, "associationList");
+
       for (let key in val) {
         if (val[key] != "") {
-          this.associationList.push({
-            type: this.labelList[key],
-            content: val[key],
-            value: key,
-          });
+          const hasKey = this.associationList.find((item) => item.value == key);
+          if (!hasKey) {
+            this.associationList.push({
+              type: this.labelList[key],
+              content: val[key],
+              value: key,
+            });
+          }else {
+            hasKey.content = val[key]
+          }
         }
       }
-      console.log(this.associationList, "this.associationList");
       this.getItemList();
     },
     //閲嶇疆鎼滅储缁撴灉
@@ -612,9 +636,8 @@
       // this.onSearch("");
     },
     // 椤甸潰璺宠浆
-    goPage(key) {
-      console.log(key, "key");
-      this.$router.push({ name: "details", params: { key: key } });
+    goPage(id) {
+      this.$router.push({ name: "details", query: { id } });
     },
     // 鏀惰捣鍜屽睍绀�
     shrinkClick(key, name) {
@@ -634,12 +657,9 @@
         this.activeBox = this.activeBox === "b" ? null : "b";
       }
     },
-    // 鑾峰彇宸︿晶checkbox鏁版嵁
-    getLeftCheckbox() {},
 
     //鑾峰彇涓嬫媺閫夋嫨妗嗙殑鍐呭
     async getSelectData() {
-      this.loading = true;
       try {
         // 鍚屾椂鍙戣捣涓や釜寮傛璇锋眰锛屽苟绛夊緟瀹冧滑鐨勭粨鏋�
         const [subjectListResult, resourceListResult] = await Promise.all([
@@ -667,7 +687,6 @@
         .getProductTypeField(requestData)
         .then((res) => {
           const selestList = JSON.parse(res[0].config);
-          console.log(selestList, "涓嬫媺妗嗘暟鎹�");
           return selestList;
         })
         .catch((error) => {
@@ -682,47 +701,71 @@
         (item) => item.content !== value
       );
       this.inputValue = "";
+      // 閫氱煡鐖剁粍浠舵暟鎹凡鏀瑰彉
       this.getItemList();
     },
 
     // 鎼滅储
     handleSearch(isText) {
-      console.log(1234);
-      console.log(isText, "鎼滅储123");
+      console.log(isText, "isText");
+      this.associationList = [];
+      console.log(isText, "isText");
+      
       if (isText.text != "") {
         this.inputValue = isText.text;
         this.inputType = isText.type;
         this.associationList.push({
           type: isText.label,
           content: isText.text,
+          value: isText.type,
         });
         this.getItemList();
       }
     },
 
-    // getTtem
+    // 璇锋眰鏁版嵁
     getItemList() {
-      let searchData = {};
+      this.loading = true;
+      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];
+            const item = this.inputOptions[index]; // 鑾峰彇褰撳墠閫夐」
             if (item.value !== "all") {
-              console.log(item.value, "987");
+              // 濡傛灉褰撳墠閫夐」鐨勫�间笉鏄�"all"
               if (!Object.keys(searchData).length) {
+                // 濡傛灉searchData鏄┖鐨�
+                // 灏嗙涓�涓�夐」鐨勫�间笌杈撳叆鍊煎叧鑱旓紝骞舵坊鍔犱竴涓槦鍙�(*)浣滀负鍚庣紑
                 searchData[item.value + "*"] = this.inputValue;
               } else {
+                // 濡傛灉searchData涓嶆槸绌虹殑
+                // 浣跨敤"||"浣滀负鍓嶇紑锛屽皢鍚庣画閫夐」鐨勫�间笌杈撳叆鍊煎叧鑱旓紝骞舵坊鍔犱竴涓槦鍙�(*)浣滀负鍚庣紑
+                // 杩欓�氬父鐢ㄤ簬鏋勫缓涓�涓�昏緫鎴栵紙OR锛夋煡璇�
                 searchData["||" + item.value + "*"] = this.inputValue;
               }
             }
           }
         }
       }
+      console.log(searchData, "searchData1");
+
       if (this.associationList && this.associationList.length) {
         this.associationList.forEach((item) => {
-          searchData[item.value + "*"] = item.content;
+          if (item.value == "year") {
+            const endDate = item.content.split("/")[0] + "/12/31 23:59:59";
+            const startDate = item.content.split("/")[0] + "/01/01 00:00:00";
+            searchData[item.value + ">="] = startDate;
+            searchData[item.value + "<="] = endDate;
+          } else if (item.value) {
+            searchData[item.value + "*"] = item.content;
+          }
         });
       }
       console.log(searchData, "searchData");
@@ -757,7 +800,8 @@
           },
         })
         .then((res) => {
-          console.log(res, "鍏ㄩ儴鏁版嵁");
+          console.log(res, "鍏ㄩ儴鍐呭");
+
           res.datas.forEach((item) => {
             item.year = moment(item.year).format("YYYY-MM-DD");
             if (typeof item.keyWords === "string") {
@@ -766,20 +810,49 @@
               // 璁剧疆涓�涓粯璁ゅ�兼垨鑰呰繘琛屽叾浠栭敊璇鐞�
               item.keyWords = [];
             }
-            item.resourceTypeName = this.category.list.find(
+            if (item.abstract) {
+              item.cleanAbstract = item.abstract.replace(/<[^>]+>/g, "");
+            }
+
+            const foundItem = this.category.list.find(
               (citem) => citem.value == item.cmsItemType
-            ).name;
+            );
+            item.resourceTypeName = foundItem ? foundItem.name : "";
           });
           this.resultList = res.datas;
           this.total = res.total;
           this.loading = false;
+        })
+        .catch((error) => {
+          // 鎵撳嵃閿欒淇℃伅
+          console.error("鑾峰彇鏁版嵁澶辫触:", error);
         });
-    },
 
+      // 婊氬姩鍒伴〉闈㈤《閮�
+      this.$nextTick(() => {
+        const pageMain = document.querySelector(".page-main-father");
+        if (pageMain) {
+          pageMain.scrollTo({
+            top: 0,
+            behavior: "smooth",
+          });
+        }
+      });
+    },
     // 澶勭悊椤电爜鍙樺寲
     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;
@@ -823,11 +896,23 @@
   }
 }
 
+::v-deep .el-loading-spinner {
+  .el-loading-text {
+    font-size: 14px;
+    color: #937950;
+  }
+
+  .el-icon-loading {
+    font-size: 14px;
+    color: #937950;
+  }
+}
+
 .page-main-father {
   flex: 1;
   width: 100%;
   height: 100%;
-  min-width: 1292px;
+  min-width: 1200px;
   overflow: auto;
   padding-top: 1%;
   padding-bottom: 2%;
@@ -846,15 +931,40 @@
   background-color: #fefbf5;
   border: 1px solid #e4dace;
 
-  .input-main {
+  ::v-deep(.input-main) {
     padding: 15px 0;
     display: flex;
     justify-content: center;
     width: 90%;
     border-right: 2px solid #e4dace;
+    font-weight: bold;
 
     .input-with-select {
       width: 50%;
+      font-weight: bold;
+    }
+
+    .el-select .el-input.is-focus .el-input__inner {
+      color: #937950 !important;
+      border-color: #937950 !important;
+      font-weight: bold;
+    }
+
+    .el-select-dropdown__item.selected {
+      color: #937950 !important;
+      font-weight: bold;
+    }
+
+    .el-select .el-input__inner:focus {
+      border-color: #937950;
+      font-weight: bold;
+    }
+
+    .el-select .el-input__inner {
+      font-family: Source Han Sans;
+      font-size: 14px;
+      font-weight: bold;
+      color: #2c2c2c;
     }
   }
 
@@ -907,10 +1017,11 @@
         font-size: 14px;
         background-color: transparent;
         color: #937950;
-        border: 1px solid #6f5a3a;
+        border: 1px solid #937950;
+        cursor: pointer;
 
         &:hover {
-          background-color: #6f5a3a;
+          background-color: #937950;
           color: #fffdf8;
         }
       }
@@ -1076,6 +1187,7 @@
 
     .right-header {
       display: flex;
+      flex-wrap: wrap;
 
       li {
         background: #ffffff;
@@ -1087,6 +1199,8 @@
         font-family: Poppins;
         font-size: 13px;
         color: #937950;
+        line-height: 20px;
+        margin-bottom: 10px;
 
         img {
           cursor: pointer;
@@ -1146,16 +1260,21 @@
         font-size: 16px;
         font-weight: bold;
         color: #937950;
+        margin-bottom: 5px;
+
+        p {
+          overflow: hidden;
+        }
 
         ::v-deep .el-button {
           font-size: 14px;
           background-color: transparent;
           color: #937950;
-          border: 1px solid #6f5a3a;
+          border: 1px solid #937950;
           border-radius: 0;
 
           &:hover {
-            background-color: #6f5a3a;
+            background-color: #937950;
             color: #fffdf8;
           }
         }
@@ -1196,7 +1315,7 @@
           border-left: 1px solid #2c2c2c;
         }
 
-        margin-bottom: 10px;
+        margin-bottom: 15px;
       }
 
       .main-author {
@@ -1217,7 +1336,7 @@
         overflow: hidden;
         display: -webkit-box;
         -webkit-box-orient: vertical;
-        -webkit-line-clamp: 4;
+        -webkit-line-clamp: 3;
 
         span {
           font-family: Source Han Sans;
@@ -1300,4 +1419,25 @@
   border-radius: 5px;
   border: 1px solid #cccccc;
 }
+:deep.el-pagination.is-background .el-pager li:not(.disabled):hover{
+  color: #937950
+}
+</style>
+
+<style>
+.el-input.is-focus .el-input__inner {
+  color: #937950 !important;
+  border-color: #937950 !important;
+  font-weight: bold;
+}
+
+.el-select-dropdown__item.selected {
+  color: #937950 !important;
+  font-weight: bold;
+}
+
+.el-select .el-input__inner:focus {
+  border-color: #937950;
+  font-weight: bold;
+}
 </style>

--
Gitblit v1.9.1