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/home/index.vue                |  163 ++++++++++++++++++++++++++
 src/views/achievements/index.vue        |  116 +++++++++++++++---
 src/views/chronology/floatingWindow.vue |   28 ++--
 src/views/chronology/index.vue          |    1 
 4 files changed, 268 insertions(+), 40 deletions(-)

diff --git a/src/views/achievements/index.vue b/src/views/achievements/index.vue
index 8e4fe0e..93253d3 100644
--- a/src/views/achievements/index.vue
+++ b/src/views/achievements/index.vue
@@ -72,19 +72,19 @@
               <li class="left-title">
                 <div>
                   <span>{{ annual.title }}</span>
-                  <span>
+                  <span @click="timeSortChange()">
                     鏃堕棿
                     <img
                       class="sort-Icon"
-                      :src="[isDisplay ? sortTop : sortBottom]"
+                      :src="[resourceTypeSortInfo ? sortTop : sortBottom]"
                       alt=""
                     />
                   </span>
-                  <span
+                  <span @click="countSortChange()"
                     >鏂囩尞閲�
                     <img
                       class="sort-Icon"
-                      :src="[isDisplay ? sortBottom : sortTop]"
+                      :src="[particularYearSortInfo ? sortTop : sortBottom]"
                       alt=""
                     />
                   </span>
@@ -128,11 +128,11 @@
               <li class="left-title">
                 <div>
                   <span>{{ sources.title }}</span>
-                  <span>
+                  <span @click="sourcesSortChange()">
                     鏂囩尞閲�
                     <img
                       class="sort-Icon"
-                      :src="[isDisplay ? sortBottom : sortTop]"
+                      :src="[sourceFromSortInfo ? sortBottom : sortTop]"
                       alt=""
                     />
                   </span>
@@ -198,9 +198,9 @@
             <!-- title閮ㄥ垎 -->
             <ul class="right-header">
               <li v-for="(item, index) in associationList" :key="index">
-                <p>{{ item.type }} : {{ item.content }}</p>
+                <p>{{ item.type }} : {{ item.name }}</p>
                 <img
-                  @click="removeAssociationList(item.content)"
+                  @click="removeAssociationList(item)"
                   :src="errorIcon"
                   alt=""
                 />
@@ -451,6 +451,9 @@
       subjectCheckList: [],
 
       postedSortInfo: true,
+      resourceTypeSortInfo: true,
+      particularYearSortInfo: true,
+      sourceFromSortInfo: true,
       // 骞村害
       annual: {
         title: "骞村害",
@@ -525,7 +528,6 @@
     };
   },
   mounted() {
-    console.log(this.$route.query, "query");
     this.inputType = this.$route.query.type;
     this.inputValue = this.$route.query.value;
     this.getSelectData();
@@ -534,12 +536,15 @@
 
   methods: {
     categoryChange(typeName, val) {
+      console.log(val, "val");
+      console.log(typeName, "typeName");
       if (val.checked) {
         this.categoryChecList.push(val.value);
         this.associationList.push({
           type: typeName,
           content: val.name,
           value: val.value,
+          name: val.valueName || val.name,
         });
       } else {
         const index = this.categoryChecList.findIndex(
@@ -653,10 +658,36 @@
 
     // 鍒犻櫎
     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();
     },
@@ -737,8 +768,6 @@
     // 璇锋眰鏁版嵁
     getItemList() {
       this.loading = true;
-      console.log(this.inputValue, " inputValue");
-      console.log(this.inputType, " inputType");
 
       let searchData = {}; // 鍒濆鍖栦竴涓┖瀵硅薄鏉ュ瓨鍌ㄦ悳绱㈡暟鎹�
       if (this.inputValue) {
@@ -771,23 +800,31 @@
         }
       }
 
-      console.log(this.associationList, "searchData11111");
+      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) {
-              // searchData[item.value + "*"] = item.content;
-              const key =
-                item.value === "resourceType" ? "resourceType*" : item.value;
-              if (!searchData[key]) {
-                searchData[key] = []; // 濡傛灉灞炴�т笉瀛樺湪锛屽垵濮嬪寲涓烘暟缁�
+            } 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;
               }
-              searchData[key].push(item.content);
             } else {
               searchData["||" + item.value + "*"] = item.content;
             }
@@ -799,8 +836,11 @@
       //     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: "*",
@@ -815,8 +855,8 @@
           fields: {
             cmsType: ["cmsItem"],
             "resourceType*":
-              this.categoryChecList.length > 0
-                ? this.categoryChecList
+              isResourceTypeValueList.length > 0
+                ? isResourceTypeValueList
                 : this.resourceTypeValueList,
             source: [],
             isbn: [],
@@ -830,6 +870,7 @@
             AIReading: [],
             file: [],
             IssueNumber: [],
+            // "particularYear*": ["2009"],
             GroupBy: [["particularYear"], ["sourceFrom"], ["resourceType"]],
             "subjectAffiliation*": this.subjectCheckList,
             ...searchData,
@@ -893,6 +934,35 @@
       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":
diff --git a/src/views/chronology/floatingWindow.vue b/src/views/chronology/floatingWindow.vue
index c8665c9..a0c44d4 100644
--- a/src/views/chronology/floatingWindow.vue
+++ b/src/views/chronology/floatingWindow.vue
@@ -48,7 +48,8 @@
       <div>
         <div class="subtitle">
           <div class="source">{{ info.source }}</div>
-          <div class="journalInformation">2005 3鏈� 绗�40鍗� 绗�4鏈�</div>
+          <div :title="info.contributor">璐$尞鑰咃細{{ info.contributor + "" }}</div>
+          <div class="journalInformation">{{ info.endDate }}</div>
         </div>
         <div class="contentBox" style="text-align: left">
           <div class="contentBox" style="text-align: left">
@@ -59,16 +60,13 @@
     </div>
     <div class="audioBox" v-if="info.cmsItemType === 'audio'">
       <div style="text-align: center">
-        <audio
-          style="width: 90%"
-          :src="info.fileLink"
-          controls
-        ></audio>
+        <audio style="width: 90%" :src="info.fileLink" controls></audio>
       </div>
       <div>
         <div class="subtitle">
-          <div class="source">{{ info.source }}</div>
-          <div class="journalInformation">2005 3鏈� 绗�40鍗� 绗�4鏈�</div>
+          <div :title="info.contributor" class="source">{{ info.source }}</div>
+          <div :title="info.contributor">璐$尞鑰咃細{{ info.contributor + "" }}</div>
+          <div :title="info.contributor" class="journalInformation">{{ info.endDate }}</div>
         </div>
         <div class="contentBox" style="text-align: left">
           <div class="audioContent" v-html="info.abstract"></div>
@@ -129,6 +127,12 @@
 .subtitle {
   display: flex;
   justify-content: space-between;
+}
+.subtitle > div {
+  max-width: 32%;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
 }
 .subtitle {
   margin-top: 20px;
@@ -218,8 +222,8 @@
   margin-top: 20px;
 }
 video {
-      border-radius: 10px;
-      border: 1px solid #dcdcdc;
-      box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.1);
-    }
+  border-radius: 10px;
+  border: 1px solid #dcdcdc;
+  box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.1);
+}
 </style>
diff --git a/src/views/chronology/index.vue b/src/views/chronology/index.vue
index 9e8b18a..7f5f982 100644
--- a/src/views/chronology/index.vue
+++ b/src/views/chronology/index.vue
@@ -193,6 +193,7 @@
           abstract: [],
           keyWords: [],
           subjectAffiliation: [],
+          contributor: [],
           file: [],
         },
         SysType: "CmsItem",
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index 96480e9..c9a5c9a 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -10,8 +10,14 @@
           <SearchBox @search="handleSearch" />
         </div>
       </div>
-      <div class="menuBox">
-        <div class="menuList">
+      <div
+        class="menuBox"
+        v-loading="loading"
+        element-loading-text="鍔犺浇涓�"
+        element-loading-spinner="el-icon-loading"
+        element-loading-background="rgba(0, 0, 0, 0)"
+      >
+        <div class="menuList" v-show="!loading">
           <div
             class="menu"
             v-for="item in menuList"
@@ -22,7 +28,18 @@
               <img class="autoImg" :src="item.icon" alt="" />
             </div>
             <div class="menuTitle">{{ item.title }}</div>
-            <div class="menuSubTitle">{{ item.subTitle }}</div>
+            <div class="menuSubTitle" v-if="item.title == '骞磋氨'">
+              {{ startYear + "-" + endDate }}
+            </div>
+            <div class="menuSubTitle" v-else-if="item.title == '瀛︽湳鎴愭灉'">
+              {{ achievementsNum > 100 ? "100+" : achievementsNum }}
+            </div>
+            <div class="menuSubTitle" v-else-if="item.title == '鑽h獕濂栭」'">
+              {{ honorNum > 100 ? "100+" : honorNum }}
+            </div>
+            <div class="menuSubTitle" v-else-if="item.title == '瀛︾敓鐩綍'">
+              {{ studentNum > 100 ? "100+" : studentNum }}
+            </div>
             <div class="menuLine">
               <img class="autoImg" :src="arrow" alt="" />
             </div>
@@ -58,11 +75,20 @@
   data() {
     return {
       arrow,
+      loading: false,
+      resourceList: [
+        "journal",
+        "books",
+        "audio",
+        "video",
+        "newspaper",
+        "other",
+      ],
       menuList: [
         {
           icon: nianpu1,
           title: "骞磋氨",
-          subTitle: "1936-2024",
+          subTitle: "100+",
           path: "/chronology",
         },
         {
@@ -85,17 +111,132 @@
         },
       ],
       introduction: "",
+      startYear: "",
+      endDate: "",
+      achievementsNum: "",
+      honorNum: "",
+      studentNum: "",
     };
   },
 
   momunted() {},
   created() {
     this.getPersonInfo();
+    this.getListData();
+    this.getAchievementList();
+    this.getHonorList();
+    this.getStudentList();
   },
   methods: {
     goPage(row) {
       console.log(row);
       this.$router.push(row.path);
+    },
+
+    getStudentList() {
+      this.MG.resource
+        .getItem({
+          path: "WYY_student",
+          fields: {
+            // 鎬у埆
+            gender: "",
+            //瀛︿範鏃堕棿
+            studyTime: [],
+            // 鍗曚綅
+            unit: [],
+            // 鐜板伐浣滃崟浣嶏紙鍒颁簩绾у崟浣嶅叏绉帮級
+            currentEmployer_secondary: "",
+            //鑱屽姟
+            jobTitle: "",
+            professionalTitle: "",
+            //瀛︿綅
+            academicDegree: "",
+            // 瀛︾敓绠�浠�
+            studentProfile: "",
+          },
+          paging: {
+            size: 99999,
+          },
+        })
+        .then((res) => {
+          console.log(res, "res1111111");
+          this.studentNum = res.total;
+          this.loading = false;
+        });
+    },
+
+    getHonorList() {
+      this.MG.resource
+        .getItem({
+          path: "WYY_honor",
+          fields: {
+            honor: [],
+            year: [],
+          },
+          paging: {
+            start: 0,
+            size: 999,
+          },
+        })
+        .then((res) => {
+          this.honorNum = res.total;
+        });
+    },
+    getAchievementList() {
+      this.MG.resource
+        .getItem({
+          path: "*",
+          queryType: "*",
+          paging: {
+            start: (this.paginationPage - 1) * 10,
+            size: 10,
+          },
+          sort: {
+            year: this.postedSortInfo ? "Desc" : "Asc",
+          },
+          fields: {
+            cmsType: ["cmsItem"],
+            "resourceType*": this.resourceList,
+            source: [],
+            isbn: [],
+            year: [],
+            particularYear: [],
+            contributor: [],
+            abstract: [],
+            keyWords: [],
+            author: [],
+            DOI: [],
+            AIReading: [],
+            file: [],
+            IssueNumber: [],
+          },
+        })
+        .then((res) => {
+          console.log(res, "res");
+          this.achievementsNum = res.total;
+        });
+    },
+
+    getListData() {
+      this.loading = true;
+      this.MG.resource
+        .getItem({
+          path: "WYY_chronology",
+          fields: {
+            year: [],
+            age: [],
+            eventOverview: [],
+            eventPictures: [],
+          },
+          paging: {
+            start: 0,
+            size: 999,
+          },
+        })
+        .then((res) => {
+          this.startYear = res.datas[res.datas.length - 1].year.split("/")[0];
+          this.endDate = res.datas[0].year.split("/")[0];
+        });
     },
 
     handleSearch(type) {
@@ -128,7 +269,7 @@
 };
 </script>
 
-<style>
+<style lang="less" scoped>
 .home {
   width: 100%;
   height: 100vh;
@@ -260,6 +401,18 @@
   text-align: center;
 }
 
+::v-deep .el-loading-spinner {
+  .el-loading-text {
+    font-size: 14px;
+    color: #937950;
+  }
+
+  .el-icon-loading {
+    font-size: 14px;
+    color: #937950;
+  }
+}
+
 /* @media screen and (min-width: 1950px) {
   .textInfo {
     font-size: 20px;

--
Gitblit v1.9.1