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