From 5c4837cdef21239ab1f192aade5e08b2cb75fcc0 Mon Sep 17 00:00:00 2001
From: zhongshujie <2862698242@qq.com>
Date: 星期三, 14 五月 2025 17:56:40 +0800
Subject: [PATCH] Merge branch 'master' of http://182.92.203.7:2001/r/wyyDatabase

---
 src/views/achievements/index.vue |  697 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 492 insertions(+), 205 deletions(-)

diff --git a/src/views/achievements/index.vue b/src/views/achievements/index.vue
index 37c181e..93253d3 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">
@@ -32,17 +37,33 @@
             <!-- 绫诲瀷 -->
             <ul>
               <li class="left-title">
-                <span>{{ category.title }}</span>
-                <p @click="category.isDisplay = !category.isDisplay">
-                  <img :src="[category.isDisplay ? topIcon : bottomIcon]" alt="" />
+                <span>{{ categoryOBJ.title }}</span>
+                <p @click="categoryOBJ.isDisplay = !categoryOBJ.isDisplay">
+                  <img
+                    :src="[categoryOBJ.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>
+              <li class="left-main" v-if="categoryOBJ.isDisplay">
+                <div
+                  class="category-main"
+                  v-for="(item, index) in categoryOBJ.list"
+                  :key="index"
+                >
+                  <el-checkbox
+                    class="el-checkbox"
+                    v-model="item.checked"
+                    :title="item.name"
+                    @change="categoryChange(categoryOBJ.title, item)"
+                    style="display: inline-block; vertical-align: middle"
+                    >{{ item.valueName }}</el-checkbox
+                  >
+                  <span
+                    class=""
+                    style="display: inline-block; vertical-align: middle"
+                    >{{ item.num }}</span
+                  >
                 </div>
               </li>
             </ul>
@@ -51,27 +72,53 @@
               <li class="left-title">
                 <div>
                   <span>{{ annual.title }}</span>
-                  <span>
+                  <span @click="timeSortChange()">
                     鏃堕棿
-                    <img class="sort-Icon" :src="[isDisplay ? sortTop : sortBottom]" alt="" />
+                    <img
+                      class="sort-Icon"
+                      :src="[resourceTypeSortInfo ? sortTop : sortBottom]"
+                      alt=""
+                    />
                   </span>
-                  <span>鏂囩尞閲�
-                    <img class="sort-Icon" :src="[isDisplay ? sortBottom : sortTop]" alt="" />
+                  <span @click="countSortChange()"
+                    >鏂囩尞閲�
+                    <img
+                      class="sort-Icon"
+                      :src="[particularYearSortInfo ? sortTop : sortBottom]"
+                      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"
+                    @change="categoryChange(annual.title, item)"
+                    >{{ item.name }}
+                  </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>
@@ -81,31 +128,51 @@
               <li class="left-title">
                 <div>
                   <span>{{ sources.title }}</span>
-                  <span>
+                  <span @click="sourcesSortChange()">
                     鏂囩尞閲�
-                    <img class="sort-Icon" :src="[isDisplay ? sortBottom : sortTop]" alt="" />
+                    <img
+                      class="sort-Icon"
+                      :src="[sourceFromSortInfo ? 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"
+                    @change="categoryChange(sources.title, item)"
+                    >{{ 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">
@@ -119,38 +186,59 @@
                   <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="" />
+                <p>{{ item.type }} : {{ item.name }}</p>
+                <img
+                  @click="removeAssociationList(item)"
+                  :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"
+              @click ="goPage(item.id)"
+            >
               <li class="main-name">
                 <p>{{ item.name }}</p>
                 <p>
-                  <el-button @click="goPage(item.id)">璇︽儏</el-button>
-                  <el-button>AI鏅鸿兘闃呰</el-button>
+                  <!-- <el-button >璇︽儏</el-button> -->
+                  <el-button @click.stop="openAiReading(item.AIReading, item.name)"
+                    >AI鏅鸿兘闃呰</el-button
+                  >
                 </p>
               </li>
               <li class="main-sources">
-                <span :class="getResourceTypeClass(item.cmsItemType)">{{ item.resourceTypeName }}</span>
+                <span :class="getResourceTypeClass(item.cmsItemType)">{{
+                  item.resourceTypeName
+                }}</span>
                 <span>{{ item.source }}</span>
                 <span>{{ item.year }}</span>
                 <span v-if="item.DOI">doi锛歿{ item.DOI }}</span>
@@ -158,30 +246,75 @@
               <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.stop="
+                    () =>
+                      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="10">
+              <el-pagination
+                @current-change="handleCurrentChange"
+                class="msg-pagination-container"
+                :background="isBackground"
+                layout="prev, pager, next"
+                :total="total"
+                :page-size="10"
+              >
               </el-pagination>
             </div>
+            <el-dialog
+              v-model="dialogVisible"
+              :title="aIName"
+              width="60vw"
+              top="3vh"
+              bottom="2vh"
+              :visible.sync="dialogVisible"
+              class="custom-dialog"
+            >
+              <div
+                class="AIReadingBox"
+                element-loading-spinner="el-icon-loading"
+                element-loading-background="rgba(0, 0, 0, 0)"
+              >
+                <div
+                  class="richTextInitBox"
+                  v-if="AIReading"
+                  v-html="AIReading"
+                ></div>
+                <div class="richTextInitError" v-else>
+                  缃戠粶绻佸繖锛岃绋嶅悗鍐嶈瘯銆�
+                </div>
+              </div>
+            </el-dialog>
             <el-empty v-if="!loading && !resultList.length"></el-empty>
           </div>
         </div>
@@ -204,6 +337,9 @@
   },
   data() {
     return {
+      dialogVisible: false,
+      aIName: "",
+      AIReading: "",
       relatedList: [],
       // 杈撳叆妗嗙殑鍐呭
       inputValue: "",
@@ -259,7 +395,7 @@
           {
             type: "input",
             label: "鏍囥��棰�",
-            name: "title",
+            name: "Name",
             value: "",
           },
           {
@@ -277,7 +413,7 @@
           {
             type: "input",
             label: "鍏抽敭璇�",
-            name: "keyword",
+            name: "keyWords",
             value: "",
           },
           {
@@ -300,76 +436,31 @@
         isDisplay: true,
         id: "",
         index: "",
-        list: [
-          {
-            name: "鏈熷垔",
-            num: 190,
-            check: false,
-          },
-          {
-            name: "鍥句功",
-            num: 190,
-            check: false,
-          },
-          {
-            name: "瑙嗛",
-            num: 190,
-            check: false,
-          },
-          {
-            name: "闊抽",
-            num: 190,
-            check: false,
-          },
-        ],
+        list: [],
+      },
+
+      // 绫诲瀷
+      categoryOBJ: {
+        title: "绫诲瀷",
+        isDisplay: true,
+        id: "",
+        index: "",
+        list: [],
       },
       categoryChecList: [],
       subjectCheckList: [],
 
       postedSortInfo: true,
+      resourceTypeSortInfo: true,
+      particularYearSortInfo: true,
+      sourceFromSortInfo: true,
       // 骞村害
       annual: {
         title: "骞村害",
         isDisplay: true,
         id: "",
         index: "",
-        list: [
-          {
-            years: "2025",
-            num: 20,
-            check: false,
-          },
-          {
-            years: "2025",
-            num: 20,
-            check: false,
-          },
-          {
-            years: "2025",
-            num: 20,
-            check: false,
-          },
-          {
-            years: "2025",
-            num: 20,
-            check: false,
-          },
-          {
-            years: "2025",
-            num: 20,
-            check: false,
-          },
-          {
-            years: "2025",
-            num: 20,
-            check: false,
-          },
-          {
-            years: "2025",
-            num: 20,
-            check: false,
-          },
-        ],
+        list: [],
       },
       // 鏂囩尞鏉ユ簮
       sources: {
@@ -377,38 +468,7 @@
         isDisplay: true,
         id: "",
         index: "",
-        list: [
-          {
-            name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�",
-            num: 190,
-            check: false,
-          },
-          {
-            name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�",
-            num: 190,
-            check: false,
-          },
-          {
-            name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�",
-            num: 190,
-            check: false,
-          },
-          {
-            name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�",
-            num: 190,
-            check: false,
-          },
-          {
-            name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�",
-            num: 190,
-            check: false,
-          },
-          {
-            name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�",
-            num: 190,
-            check: false,
-          },
-        ],
+        list: [],
       },
       // 瀛︾
       subject: {
@@ -460,24 +520,31 @@
       labelList: {
         abstract: "鎽樿",
         author: "浣滆��",
-        keyword: "鍏抽敭璇�",
+        keyWords: "鍏抽敭璇�",
         source: "鏉ユ簮",
-        title: "鏍囬",
+        Name: "鏍囬",
         year: "骞翠唤",
       },
     };
   },
   mounted() {
+    this.inputType = this.$route.query.type;
+    this.inputValue = this.$route.query.value;
     this.getSelectData();
+    this.getSidebarData();
   },
 
   methods: {
-    categoryChange(val) {
+    categoryChange(typeName, val) {
+      console.log(val, "val");
+      console.log(typeName, "typeName");
       if (val.checked) {
         this.categoryChecList.push(val.value);
         this.associationList.push({
-          type: "绫诲瀷",
+          type: typeName,
           content: val.name,
+          value: val.value,
+          name: val.valueName || val.name,
         });
       } else {
         const index = this.categoryChecList.findIndex(
@@ -506,16 +573,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();
     },
     //閲嶇疆鎼滅储缁撴灉
@@ -584,16 +658,43 @@
 
     // 鍒犻櫎
     removeAssociationList(value) {
+      console.log(value, "value");
       this.associationList = this.associationList.filter(
-        (item) => item.content !== value
+        (item) => item.content !== value.content
       );
       this.inputValue = "";
+
+      switch (value.value) {
+        case "resourceType":
+          this.categoryOBJ.list.forEach((item) => {
+            if (item.name == value.content) {
+              item.checked = false;
+            }
+          });
+          break;
+
+        case "particularYear":
+          this.annual.list.forEach((item) => {
+            if (item.name == value.content) {
+              item.checked = false;
+            }
+          });
+          break;
+        case "sourceFrom":
+          this.sources.list.forEach((item) => {
+            if (item.name == value.content) {
+              item.checked = false;
+            }
+          });
+          break;
+      }
       // 閫氱煡鐖剁粍浠舵暟鎹凡鏀瑰彉
       this.getItemList();
     },
 
     // 鎼滅储
     handleSearch(isText) {
+      console.log(isText, "isText");
       this.associationList = [];
       console.log(isText, "isText");
       if (isText.text != "") {
@@ -607,10 +708,67 @@
         this.getItemList();
       }
     },
+    //鑾峰彇渚ц竟鏍忔暟鎹�
+    getSidebarData() {
+      MG.resource
+        .getItem({
+          path: "*",
+          queryType: "*",
+          fields: {
+            GroupBy: [["particularYear"], ["sourceFrom"], ["resourceType"]],
+            "subjectAffiliation*": this.subjectCheckList,
+          },
+        })
+        .then((res) => {
+          // 澶勭悊group鐨勬暟鎹�
+          console.log(res, "res009");
+
+          res.groups.forEach((item) => {
+            if (
+              item.key == "particularYear" &&
+              item.datas &&
+              item.datas.length
+            ) {
+              item.datas.forEach((citem) => {
+                this.annual.list.push({
+                  name: citem.groupKey,
+                  num: citem.count,
+                  value: item.key,
+                  check: false,
+                });
+              });
+            }
+
+            if (item.key == "sourceFrom" && item.datas && item.datas.length) {
+              item.datas.forEach((citem) => {
+                this.sources.list.push({
+                  name: citem.groupKey,
+                  num: citem.count,
+                  value: item.key,
+                  check: false,
+                });
+              });
+            }
+
+            if (item.key == "resourceType" && item.datas && item.datas.length) {
+              item.datas.forEach((citem) => {
+                this.categoryOBJ.list.push({
+                  name: citem.groupKey,
+                  valueName: this.getGroupKey(citem.groupKey),
+                  value: item.key,
+                  num: citem.count,
+                  check: false,
+                });
+              });
+            }
+          });
+        });
+    },
 
     // 璇锋眰鏁版嵁
     getItemList() {
       this.loading = true;
+
       let searchData = {}; // 鍒濆鍖栦竴涓┖瀵硅薄鏉ュ瓨鍌ㄦ悳绱㈡暟鎹�
       if (this.inputValue) {
         // 濡傛灉杈撳叆鍊煎瓨鍦�
@@ -623,6 +781,8 @@
           // 閬嶅巻杈撳叆閫夐」
           for (let index = 0; index < this.inputOptions.length; index++) {
             const item = this.inputOptions[index]; // 鑾峰彇褰撳墠閫夐」
+
+            debugger;
             if (item.value !== "all") {
               // 濡傛灉褰撳墠閫夐」鐨勫�间笉鏄�"all"
               if (!Object.keys(searchData).length) {
@@ -639,19 +799,48 @@
           }
         }
       }
-      // 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 {
-      //       searchData["||" + item.value + "*"] = item.content;
-      //     }
-      //   });
+
+      console.log(this.associationList, "this.associationList");
+      if (this.associationList && this.associationList.length) {
+        let resourceTypeValueList = [];
+        let particularYearValueList = [];
+        let sourceFromValueList = [];
+
+        this.associationList.forEach((item) => {
+          debugger;
+          if (item.value !== "all") {
+            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 != "year") {
+              if (item.value == "resourceType") {
+                resourceTypeValueList.push(item.content);
+                searchData[item.value + "*"] = resourceTypeValueList;
+              } else if (item.value == "particularYear") {
+                particularYearValueList.push(item.content);
+                searchData[item.value + "*"] = particularYearValueList;
+              } else if (item.value == "sourceFrom") {
+                sourceFromValueList.push(item.content);
+                searchData[item.value + "*"] = sourceFromValueList;
+              }
+            } else {
+              searchData["||" + item.value + "*"] = item.content;
+            }
+          }
+        });
+      }
+      // for (let key in searchData) {
+      //   if (searchData[key].length === 1) {
+      //     searchData[key] = searchData[key][0];
+      //   }
       // }
       console.log(searchData, "searchData");
+      console.log(this.resourceTypeValueList, "resourceTypeValueList");
+      const isResourceTypeValueList = this.categoryChecList.filter(
+        (item) => this.resourceTypeValueList.indexOf(item) !== -1
+      );
       MG.resource
         .getItem({
           path: "*",
@@ -666,12 +855,14 @@
           fields: {
             cmsType: ["cmsItem"],
             "resourceType*":
-              this.categoryChecList.length > 0
-                ? this.categoryChecList
+              isResourceTypeValueList.length > 0
+                ? isResourceTypeValueList
                 : this.resourceTypeValueList,
             source: [],
             isbn: [],
             year: [],
+            particularYear: [],
+            contributor: [],
             abstract: [],
             keyWords: [],
             author: [],
@@ -679,13 +870,14 @@
             AIReading: [],
             file: [],
             IssueNumber: [],
+            // "particularYear*": ["2009"],
+            GroupBy: [["particularYear"], ["sourceFrom"], ["resourceType"]],
             "subjectAffiliation*": this.subjectCheckList,
             ...searchData,
           },
         })
         .then((res) => {
-          console.log(res, "鍏ㄩ儴鍐呭");
-
+          console.log(res, "res");
           res.datas.forEach((item) => {
             item.year = moment(item.year).format("YYYY-MM-DD");
             if (typeof item.keyWords === "string") {
@@ -706,18 +898,19 @@
           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",
           });
         }
       });
@@ -741,22 +934,74 @@
       this.postedSortInfo = !this.postedSortInfo;
       this.getItemList();
     },
+    timeSortChange() {
+      this.resourceTypeSortInfo = !this.resourceTypeSortInfo;
+      this.annual.list.sort((a, b) => {
+        a.name - b.name;
+      });
+      if (this.resourceTypeSortInfo) {
+        this.annual.list.sort((a, b) => a.name - b.name);
+      } else {
+        this.annual.list.sort((a, b) => b.name - a.name);
+      }
+    },
+    countSortChange() {
+      this.particularYearSortInfo = !this.particularYearSortInfo;
+
+      if (!this.particularYearSortInfo) {
+        this.annual.list.sort((a, b) => a.num - b.num);
+      } else {
+        this.annual.list.sort((a, b) => b.num - a.num);
+      }
+      console.log(this.annual.list, "this.annual.list");
+    },
+    sourcesSortChange() {
+      this.sourceFromSortInfo = !this.sourceFromSortInfo;
+      if (this.sourceFromSortInfo) {
+        this.sources.list.sort((a, b) => a.num - b.num);
+      } else {
+        this.sources.list.sort((a, b) => b.num - a.num);
+      }
+    },
     getResourceTypeClass(typeName) {
       switch (typeName) {
-        case 'journal':
-          return 'journal-color';
-        case 'books':
-          return 'books-color';
-        case 'video':
-          return 'video-color';
-        case 'audio':
-          return 'audio-color';
-        case 'newspaper':
-          return 'newspaper-color';
+        case "journal":
+          return "journal-color";
+        case "books":
+          return "books-color";
+        case "video":
+          return "video-color";
+        case "audio":
+          return "audio-color";
+        case "newspaper":
+          return "newspaper-color";
         default:
-          return 'other-color';
+          return "other-color";
       }
-    }
+    },
+
+    getGroupKey(typeName) {
+      switch (typeName) {
+        case "journal":
+          return "鏈熷垔";
+        case "books":
+          return "鍥句功";
+        case "video":
+          return "瑙嗛";
+        case "audio":
+          return "闊抽";
+        case "newspaper":
+          return "newspaper-color";
+        default:
+          return "other-color";
+      }
+    },
+
+    openAiReading(text, name) {
+      this.AIReading = text;
+      this.aIName = name;
+      this.dialogVisible = true;
+    },
   },
 };
 </script>
@@ -1044,12 +1289,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;
   }
@@ -1148,6 +1396,11 @@
       padding: 19px 30px 15px 30px;
       border: 1px solid #decaac;
 
+      &:hover {
+        cursor: pointer;
+        border: 1px solid #937950;
+      }
+
       .main-name {
         display: flex;
         align-items: center;
@@ -1179,23 +1432,26 @@
       .journal-color {
         background-color: #87a8b9;
       }
+
       .books-color {
-        background-color: #C48787;
+        background-color: #c48787;
       }
+
       .video-color {
-        background-color: #6F8F5A;
+        background-color: #6f8f5a;
       }
+
       .audio-color {
         background-color: #937950;
       }
+
       .newspaper-color {
-        background-color: #8D77B3;
+        background-color: #8d77b3;
       }
+
       .other-color {
-        background-color: #009F9F;
+        background-color: #009f9f;
       }
-
-
 
       .main-sources {
         span:nth-child(1) {
@@ -1293,6 +1549,23 @@
   }
 }
 
+.AIReadingBox {
+  height: 85vh;
+  min-height: 600px;
+  padding: 20px 10px;
+}
+
+.richTextInitBox {
+  height: 100%;
+  overflow: auto;
+}
+.richTextInitError {
+  height: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
 .pagination {
   display: flex;
   justify-content: center;
@@ -1327,7 +1600,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;
@@ -1336,7 +1611,19 @@
 }
 
 :deep.el-pagination.is-background .el-pager li:not(.disabled):hover {
-  color: #937950
+  color: #937950;
+}
+
+:deep.el-button--primary {
+  background-color: #937950;
+  color: #937950;
+  border: 1px solid #937950;
+  cursor: pointer;
+
+  &:hover {
+    background-color: #937950;
+    color: #fffdf8;
+  }
 }
 </style>
 

--
Gitblit v1.9.1