From 6938616d7e67a8822569420f6bddd8754a63d574 Mon Sep 17 00:00:00 2001
From: 杨磊 <505174330@qq.com>
Date: 星期一, 28 四月 2025 16:36:23 +0800
Subject: [PATCH] Merge branch 'master' of http://182.92.203.7:2001/r/wyyDatabase

---
 src/views/achievements/index.vue |  339 +++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 249 insertions(+), 90 deletions(-)

diff --git a/src/views/achievements/index.vue b/src/views/achievements/index.vue
index c1ab2ea..a69ae53 100644
--- a/src/views/achievements/index.vue
+++ b/src/views/achievements/index.vue
@@ -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,15 +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" 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
+                  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>
@@ -53,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>
@@ -83,65 +129,112 @@
                   <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>
             </ul>
             <!-- 瀛︾ -->
-            <ul>
+            <!-- <ul>
               <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"
-                    @change="subjectChange(item)">{{ 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>
+            </ul> -->
           </div>
-          <div class="content-right" v-loading="loading" element-loading-text="妫�绱㈢粨鏋滃姞杞戒腑"
-            element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0)">
+          <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 @click="removeAssociationList(item.content)" :src="errorIcon" alt="" />
+                <img
+                  @click="removeAssociationList(item.content)"
+                  :src="errorIcon"
+                  alt=""
+                />
               </li>
             </ul>
             <!-- 鍏眡x鏉� -->
             <ul class="right-number">
               <ul class="number-number">
-                鍏辨壘鍒�<span>{{ this.total }}</span>鏉$粨鏋�
+                鍏辨壘鍒�<span>{{ this.total }}</span
+                >鏉$粨鏋�
               </ul>
               <ul class="number-time">
                 鍙戣〃鏃堕棿
-                <span @click="sortChange()"><img :src="!postedSortInfo ? sortBottom : sortTop" 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>
@@ -158,22 +251,49 @@
               <li class="main-author">
                 {{ item.author }}
               </li>
-              <li class="main-title" :title="item.cleanAbstract" v-if="item.abstract">
+              <li
+                class="main-title"
+                :title="item.cleanAbstract"
+                v-if="item.abstract"
+              >
                 <span>鎽樿: </span>
-                <span class="page-main-abstract" v-html="item.cleanAbstract"></span>
+                <span
+                  class="page-main-abstract"
+                  v-html="item.cleanAbstract"
+                ></span>
               </li>
-              <li class="main-keyword" v-if="item.keyWords && item.keyWords.length > 0">
+              <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: '鍏抽敭璇�' })">
+                <span
+                  class="keyWord"
+                  v-for="(citem, cindex) in item.keyWords"
+                  :key="cindex"
+                  @click="
+                    () =>
+                      handleSearch({
+                        text: citem,
+                        type: 'keyWords',
+                        label: '鍏抽敭璇�',
+                      })
+                  "
+                >
                   {{ citem }}
                 </span>
               </li>
             </ul>
             <!-- 鍒嗛〉 -->
             <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
+                @current-change="handleCurrentChange"
+                class="msg-pagination-container"
+                :background="isBackground"
+                layout="prev, pager, next"
+                :total="total"
+                :page-size="6"
+              >
               </el-pagination>
             </div>
             <el-empty v-if="!loading && !resultList.length"></el-empty>
@@ -208,7 +328,6 @@
         { value: "all", label: "鍏ㄩ儴" },
         { value: "Name", label: "鏍囬" },
         { value: "author", label: "浣滆��" },
-        // { value: "year", label: "骞翠唤" },
         { value: "keyWords", label: "鍏抽敭璇�" },
         { value: "abstract", label: "鎽樿" },
         { value: "source", label: "鏉ユ簮" },
@@ -254,7 +373,7 @@
           {
             type: "input",
             label: "鏍囥��棰�",
-            name: "title",
+            name: "Name",
             value: "",
           },
           {
@@ -457,7 +576,7 @@
         author: "浣滆��",
         keyword: "鍏抽敭璇�",
         source: "鏉ユ簮",
-        title: "鏍囬",
+        Name: "鏍囬",
         year: "骞翠唤",
       },
     };
@@ -468,14 +587,21 @@
 
   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();
     },
@@ -494,16 +620,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();
     },
     //閲嶇疆鎼滅储缁撴灉
@@ -535,7 +668,6 @@
 
     //鑾峰彇涓嬫媺閫夋嫨妗嗙殑鍐呭
     async getSelectData() {
-      this.loading = true;
       try {
         // 鍚屾椂鍙戣捣涓や釜寮傛璇锋眰锛屽苟绛夊緟瀹冧滑鐨勭粨鏋�
         const [subjectListResult, resourceListResult] = await Promise.all([
@@ -578,18 +710,22 @@
       );
       this.inputValue = "";
       // 閫氱煡鐖剁粍浠舵暟鎹凡鏀瑰彉
-      this.getItemList()
+      this.getItemList();
     },
 
     // 鎼滅储
     handleSearch(isText) {
-      this.associationList = []
+      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();
       }
@@ -597,20 +733,27 @@
 
     // 璇锋眰鏁版嵁
     getItemList() {
+      this.loading = true;
       let searchData = {}; // 鍒濆鍖栦竴涓┖瀵硅薄鏉ュ瓨鍌ㄦ悳绱㈡暟鎹�
-      if (this.inputValue) { // 濡傛灉杈撳叆鍊煎瓨鍦�
-        if (this.inputType != "all") { // 濡傛灉杈撳叆绫诲瀷涓嶆槸"all"
+      if (this.inputValue) {
+        // 濡傛灉杈撳叆鍊煎瓨鍦�
+        if (this.inputType != "all") {
+          // 濡傛灉杈撳叆绫诲瀷涓嶆槸"all"
           // 灏嗚緭鍏ュ�间笌杈撳叆绫诲瀷鍏宠仈锛屽苟娣诲姞涓�涓槦鍙�(*)浣滀负鍚庣紑
           searchData[this.inputType + "*"] = this.inputValue;
-        } else { // 濡傛灉杈撳叆绫诲瀷鏄�"all"
+        } 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鏄┖鐨�
+            if (item.value !== "all") {
+              // 濡傛灉褰撳墠閫夐」鐨勫�间笉鏄�"all"
+              if (!Object.keys(searchData).length) {
+                // 濡傛灉searchData鏄┖鐨�
                 // 灏嗙涓�涓�夐」鐨勫�间笌杈撳叆鍊煎叧鑱旓紝骞舵坊鍔犱竴涓槦鍙�(*)浣滀负鍚庣紑
                 searchData[item.value + "*"] = this.inputValue;
-              } else { // 濡傛灉searchData涓嶆槸绌虹殑
+              } else {
+                // 濡傛灉searchData涓嶆槸绌虹殑
                 // 浣跨敤"||"浣滀负鍓嶇紑锛屽皢鍚庣画閫夐」鐨勫�间笌杈撳叆鍊煎叧鑱旓紝骞舵坊鍔犱竴涓槦鍙�(*)浣滀负鍚庣紑
                 // 杩欓�氬父鐢ㄤ簬鏋勫缓涓�涓�昏緫鎴栵紙OR锛夋煡璇�
                 searchData["||" + item.value + "*"] = this.inputValue;
@@ -619,6 +762,21 @@
           }
         }
       }
+      console.log(searchData, "searchData1");
+
+      if (this.associationList && this.associationList.length) {
+        this.associationList.forEach((item) => {
+          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");
       MG.resource
         .getItem({
           path: "*",
@@ -664,24 +822,27 @@
               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
+            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;
-        }).catch((error) => {
+        })
+        .catch((error) => {
           // 鎵撳嵃閿欒淇℃伅
           console.error("鑾峰彇鏁版嵁澶辫触:", error);
         });
 
       // 婊氬姩鍒伴〉闈㈤《閮�
       this.$nextTick(() => {
-        const pageMain = document.querySelector('.page-main-father');
+        const pageMain = document.querySelector(".page-main-father");
         if (pageMain) {
           pageMain.scrollTo({
             top: 0,
-            behavior: 'smooth'
+            behavior: "smooth",
           });
         }
       });
@@ -692,11 +853,11 @@
       this.getItemList(); // 閲嶆柊鑾峰彇鏁版嵁
       // 婊氬姩鍒伴〉闈㈤《閮�
       this.$nextTick(() => {
-        const pageMain = document.querySelector('.page-main-father');
+        const pageMain = document.querySelector(".page-main-father");
         if (pageMain) {
           pageMain.scrollTo({
             top: 0,
-            behavior: 'smooth'
+            behavior: "smooth",
           });
         }
       });
@@ -745,7 +906,6 @@
 
 ::v-deep .el-loading-spinner {
   .el-loading-text {
-
     font-size: 14px;
     color: #937950;
   }
@@ -755,7 +915,6 @@
     color: #937950;
   }
 }
-
 
 .page-main-father {
   flex: 1;
@@ -813,10 +972,8 @@
       font-family: Source Han Sans;
       font-size: 14px;
       font-weight: bold;
-      color: #2C2C2C;
-
+      color: #2c2c2c;
     }
-
   }
 
   .input-txt {
@@ -869,7 +1026,6 @@
         background-color: transparent;
         color: #937950;
         border: 1px solid #937950;
-        ;
         cursor: pointer;
 
         &:hover {
@@ -997,12 +1153,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;
   }
@@ -1259,7 +1418,9 @@
   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;
@@ -1276,9 +1437,7 @@
   color: #937950 !important;
   border-color: #937950 !important;
   font-weight: bold;
-
 }
-
 
 .el-select-dropdown__item.selected {
   color: #937950 !important;
@@ -1289,4 +1448,4 @@
   border-color: #937950;
   font-weight: bold;
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.1