From 231de87426edb19d38e62a669034108e3a74069d Mon Sep 17 00:00:00 2001 From: 杨磊 <505174330@qq.com> Date: 星期日, 27 四月 2025 18:10:48 +0800 Subject: [PATCH] Merge branch 'master' of http://182.92.203.7:2001/r/wyyDatabase --- src/views/achievements/index.vue | 1003 ++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 582 insertions(+), 421 deletions(-) diff --git a/src/views/achievements/index.vue b/src/views/achievements/index.vue index 65119c5..0d9ce7f 100644 --- a/src/views/achievements/index.vue +++ b/src/views/achievements/index.vue @@ -1,248 +1,285 @@ <template> <div class="page"> <div class="page-header"> - <p>鐜嬫案鐐庨櫌澹鏈垚鏋�</p> + <p> + <span>鐜嬫案鐐庨櫌澹鏈垚鏋�</span> + </p> </div> - <div class="page-main"> - <!-- 鎼滅储妗� --> - <ul class="page-input"> - <li class="input-main"> - <SearchBox /> - </li> - <li class="input-txt" @click="isDisplay = !isDisplay"> - 楂樼骇妫�绱� - <img :src="[isDisplay ? topIcon : bottomIcon]" alt="" /> - </li> - </ul> - <!-- 楂樼骇鎼滅储 --> - <div v-if="isDisplay" class="page-search"> - <MyForm - class="myfrom" - @submit=" - (data) => { - CurrentPage = 1; - onSubmit(data); - } - " - @reset="resetForm" - :from="from" - /> - </div> - <!-- 鎼滅储缁撴灉 --> - <div class="page-content"> - <div class="content-left"> - <!-- 绫诲瀷 --> - <ul> - <li class="left-title"> - <span>{{ category.title }}</span> - <p @click="category.isDisplay = !category.isDisplay"> + <div class="page-main-father"> + <div class="page-main"> + <!-- 鎼滅储妗� --> + <ul class="page-input"> + <li class="input-main"> + <SearchBox @search="handleSearch" :options="inputOptions" /> + </li> + <li class="input-txt" @click="isDisplay = !isDisplay"> + 楂樼骇妫�绱� + <img :src="[isDisplay ? topIcon : bottomIcon]" alt="" /> + </li> + </ul> + <!-- 楂樼骇鎼滅储 --> + <div v-if="isDisplay" class="page-search"> + <MyForm + class="myfrom" + @submit=" + (data) => { + CurrentPage = 1; + onSubmit(data); + } + " + @reset="resetForm" + :from="from" + /> + </div> + <!-- 鎼滅储缁撴灉 --> + <div class="page-content"> + <div class="content-left"> + <!-- 绫诲瀷 --> + <ul> + <li class="left-title"> + <span>{{ category.title }}</span> + <p @click="category.isDisplay = !category.isDisplay"> + <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> + </li> + </ul> + <!-- 骞村害 --> + <ul> + <li class="left-title"> + <div> + <span>{{ annual.title }}</span> + <span> + 鏃堕棿 + <img + class="sort-Icon" + :src="[isDisplay ? sortTop : sortBottom]" + alt="" + /> + </span> + <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="" + /> + </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 + > + <span class="">{{ item.num }}</span> + </div> + <p + class="annual-footer" + v-if="annual.list && annual.list.length > 5" + @click="shrinkClick('a', '骞村害')" + > + {{ activeBox !== "a" ? "鏇村 鈭�" : "鏀惰捣 鈭�" }} + </p> + </li> + </ul> + <!-- 鏂囩尞鏉ユ簮 --> + <ul> + <li class="left-title"> + <div> + <span>{{ sources.title }}</span> + <span> + 鏂囩尞閲� + <img + class="sort-Icon" + :src="[isDisplay ? sortBottom : sortTop]" + alt="" + /> + </span> + </div> + <p @click="sources.isDisplay = !sources.isDisplay"> + <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 + > + <span class="">{{ item.num }}</span> + </div> + <p + class="sources-footer" + v-if="sources.list && sources.list.length > 5" + @click="shrinkClick('b', '鏂囩尞鏉ユ簮')" + > + {{ activeBox !== "b" ? "鏇村 鈭�" : "鏀惰捣 鈭�" }} + </p> + </li> + </ul> + <!-- 瀛︾ --> + <ul> + <li class="left-title"> + <span>{{ subject.title }}</span> + <p @click="subject.isDisplay = !subject.isDisplay"> + <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 + > + <span class="">{{ item.num }}</span> + </div> + </li> + </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)" + > + <!-- title閮ㄥ垎 --> + <ul class="right-header"> + <li v-for="(item, index) in associationList" :key="index"> + <p>{{ item.type }} : {{ item.content }}</p> <img - :src="[category.isDisplay ? topIcon : bottomIcon]" + @click="removeAssociationList(item.content)" + :src="errorIcon" 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" - >{{ item.name }}</el-checkbox - > - <span class="">{{ item.num }}</span> - </div> - </li> - </ul> - <!-- 骞村害 --> - <ul> - <li class="left-title"> - <div> - <span>{{ annual.title }}</span> - <span> - 鏃堕棿 - <img - class="sort-Icon" - :src="[isDisplay ? sortTop : sortBottom]" - alt="" - /> - </span> - <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="" /> - </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 - > - <span class="">{{ item.num }}</span> - </div> - <p - class="annual-footer" - v-if="annual.list && annual.list.length > 5" - @click="shrinkClick('a', '骞村害')" - > - {{ activeBox !== "a" ? "鏇村 鈭�" : "鏀惰捣 鈭�" }} - </p> - </li> - </ul> - <!-- 鏂囩尞鏉ユ簮 --> - <ul> - <li class="left-title"> - <div> - <span>{{ sources.title }}</span> - <span> - 鏂囩尞閲� - <img - class="sort-Icon" - :src="[isDisplay ? sortBottom : sortTop]" - alt="" - /> - </span> - </div> - <p @click="sources.isDisplay = !sources.isDisplay"> - <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 - > - <span class="">{{ item.num }}</span> - </div> - <p - class="sources-footer" - v-if="sources.list && sources.list.length > 5" - @click="shrinkClick('b', '鏂囩尞鏉ユ簮')" - > - {{ activeBox !== "b" ? "鏇村 鈭�" : "鏀惰捣 鈭�" }} - </p> - </li> - </ul> - <!-- 瀛︾ --> - <ul> - <li class="left-title"> - <span>{{ subject.title }}</span> - <p @click="subject.isDisplay = !subject.isDisplay"> - <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" - >{{ item.name }}</el-checkbox - > - <span class="">{{ item.num }}</span> - </div> - </li> - </ul> - </div> - <div class="content-right"> - <!-- title閮ㄥ垎 --> - <ul class="right-header"> - <li v-for="(item, index) in associationList" :key="index"> - <p>{{ item.type }} : {{ item.content }}</p> - <img :src="errorIcon" alt="" /> - </li> - </ul> - <!-- 鍏眡x鏉� --> - <ul class="right-number"> - <ul class="number-number"> - 鍏辨壘鍒�<span>{{ resultList.length }}</span - >鏉$粨鏋� + </li> </ul> - <ul class="number-time"> - 鍙戣〃鏃堕棿 - <span><img :src="sortBottom" alt="" /></span> + <!-- 鍏眡x鏉� --> + <ul class="right-number"> + <ul class="number-number"> + 鍏辨壘鍒�<span>{{ this.total }}</span + >鏉$粨鏋� + </ul> + <ul class="number-time"> + 鍙戣〃鏃堕棿 + <span @click="sortChange()" + ><img :src="!postedSortInfo ? sortBottom : sortTop" alt="" + /></span> + </ul> </ul> - </ul> - <!-- 缁撴灉灞曠ず --> - <ul - class="right-main" - v-for="(item, index) in resultList" - :key="index" - > - <li class="main-name"> - <p>{{ item.name }}</p> - <p> - <el-button @click="goPage(item)">璇︽儏</el-button> - <el-button>AI鏅鸿兘闃呰</el-button> - </p> - </li> - <li class="main-sources"> - <span>{{ item.type }}</span> - <span>{{ item.sources }}</span> - <span>{{ item.time }}</span> - </li> - <li class="main-author"> - {{ item.author }} - </li> - <li class="main-title" :title="item.title"> - <span>鎽樿: </span>{{ item.title }} - </li> - <li class="main-keyword"> - <span>鍏抽敭璇嶏細</span> - <span - class="keyWord" - v-for="(citem, cindex) in item.keyword" - :key="cindex" - > - {{ citem.name }} - </span> - </li> - </ul> - <!-- 鍒嗛〉 --> - <div class="pagination"> - <el-pagination - class="msg-pagination-container" - :background="isBackground" - layout="prev, pager, next" - :total="200" + <!-- 缁撴灉灞曠ず --> + <ul + class="right-main" + v-for="(item, index) in resultList" + :key="index" > - </el-pagination> + <li class="main-name"> + <p>{{ item.name }}</p> + <p> + <el-button @click="goPage(item.id)">璇︽儏</el-button> + <el-button>AI鏅鸿兘闃呰</el-button> + </p> + </li> + <li class="main-sources"> + <span>{{ item.resourceTypeName }}</span> + <span>{{ item.source }}</span> + <span>{{ item.year }}</span> + <span v-if="item.DOI">doi锛歿{ item.DOI }}</span> + </li> + <li class="main-author"> + {{ item.author }} + </li> + <li class="main-title" :title="item.cleanAbstract" v-if="item.abstract"> + <span>鎽樿: </span> + <span class="page-main-abstract" v-html="item.abstract"></span> + </li> + <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" + > + {{ 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> + </div> </div> + </div> </div> </div> @@ -252,6 +289,8 @@ <script> import MyForm from "@/components/form/form.vue"; import SearchBox from "@/views/home/components/searchBox.vue"; +import MG from "@/assets/js/middleGround/WebMiddleGroundApi.js"; +import moment from "moment"; /* eslint-disable vue/no-unused-components */ export default { name: "achievements", @@ -261,6 +300,23 @@ }, data() { return { + relatedList: [], + // 杈撳叆妗嗙殑鍐呭 + inputValue: "", + // 閫夋嫨鐨勭被鍨� + inputType: "", + //绫诲瀷閫夋嫨 + inputOptions: [ + { value: "all", label: "鍏ㄩ儴" }, + { value: "Name", label: "鏍囬" }, + { value: "author", label: "浣滆��" }, + { value: "keyWords", label: "鍏抽敭璇�" }, + { value: "abstract", label: "鎽樿" }, + { value: "source", label: "鏉ユ簮" }, + ], + subjectAffiliationRefCode: "subjectAffiliation", + resourceTypeRefCode: "resourceType", + resourceTypeValueList: [], errorIcon: require("@/assets/images/achievements/errorIcon.png"), topIcon: require("@/assets/images/achievements/top-Icon.png"), bottomIcon: require("@/assets/images/achievements/bottom-Icon.png"), @@ -363,6 +419,10 @@ }, ], }, + categoryChecList: [], + subjectCheckList: [], + + postedSortInfo: true, // 骞村害 annual: { title: "骞村害", @@ -487,173 +547,73 @@ // 鐜板湪澶氬皯鏉℃椂鏈熸暟鎹� dynastyIndex: 4, // 鎵�鍏宠仈鍐呭 - associationList: [ - { - type: "浣滆��", - content: "闄堣 鍝�", - }, - { - type: "浣滆��", - content: "闄堣 鍝�", - }, - { - type: "浣滆��", - content: "闄堣 鍝�", - }, - ], + associationList: [], // 鏌ヨ缁撴灉 - resultList: [ - { - name: "涓嵂闂告煖鐨勫巻鍙蹭紶鎵夸笌鏂版椂浠e彂灞曟�濊��", - sources: "鍖椾含涓尰鑽ぇ瀛﹀鎶�", - type: "鏈熷垔", - author: "鏉ㄦ担鑿� 鍖椾含涓尰鑽ぇ瀛︿腑鑽闄紱璧靛ぉ鎴� 鍖椾含甯堣寖澶у", - time: "2025-02-24 09:21", - title: - "涓嵂闂告煖鏄紶缁熶腑鑽皟鍓傜殑楂樼骇绠$悊浜哄憳锛屽湪'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃��", - keyword: [ - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - ], - }, - { - name: "涓嵂闂告煖鐨勫巻鍙蹭紶鎵夸笌鏂版椂浠e彂灞曟�濊��", - sources: "鍖椾含涓尰鑽ぇ瀛﹀鎶�", - type: "鏈熷垔", - author: "鏉ㄦ担鑿� 鍖椾含涓尰鑽ぇ瀛︿腑鑽闄紱璧靛ぉ鎴� 鍖椾含甯堣寖澶у", - time: "2025-02-24 09:21", - title: - "涓嵂闂告煖鏄紶缁熶腑鑽皟鍓傜殑楂樼骇绠$悊浜哄憳锛屽湪'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃�備腑鑽椄鏌滄槸浼犵粺涓嵂璋冨墏鐨勯珮绾х鐞嗕汉鍛橈紝鍦�'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃��", - keyword: [ - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - ], - }, - { - name: "涓嵂闂告煖鐨勫巻鍙蹭紶鎵夸笌鏂版椂浠e彂灞曟�濊��", - sources: "鍖椾含涓尰鑽ぇ瀛﹀鎶�", - type: "鏈熷垔", - author: "鏉ㄦ担鑿� 鍖椾含涓尰鑽ぇ瀛︿腑鑽闄紱璧靛ぉ鎴� 鍖椾含甯堣寖澶у", - time: "2025-02-24 09:21", - title: - "涓嵂闂告煖鏄紶缁熶腑鑽皟鍓傜殑楂樼骇绠$悊浜哄憳锛屽湪'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃�備腑鑽椄鏌滄槸浼犵粺涓嵂璋冨墏鐨勯珮绾х鐞嗕汉鍛橈紝鍦�'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃��", - keyword: [ - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - ], - }, - { - name: "涓嵂闂告煖鐨勫巻鍙蹭紶鎵夸笌鏂版椂浠e彂灞曟�濊��", - sources: "鍖椾含涓尰鑽ぇ瀛﹀鎶�", - type: "鏈熷垔", - author: "鏉ㄦ担鑿� 鍖椾含涓尰鑽ぇ瀛︿腑鑽闄紱璧靛ぉ鎴� 鍖椾含甯堣寖澶у", - time: "2025-02-24 09:21", - title: - "涓嵂闂告煖鏄紶缁熶腑鑽皟鍓傜殑楂樼骇绠$悊浜哄憳锛屽湪'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃�備腑鑽椄鏌滄槸浼犵粺涓嵂璋冨墏鐨勯珮绾х鐞嗕汉鍛橈紝鍦�'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃��", - keyword: [ - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - ], - }, - { - name: "涓嵂闂告煖鐨勫巻鍙蹭紶鎵夸笌鏂版椂浠e彂灞曟�濊��", - sources: "鍖椾含涓尰鑽ぇ瀛﹀鎶�", - type: "鏈熷垔", - author: "鏉ㄦ担鑿� 鍖椾含涓尰鑽ぇ瀛︿腑鑽闄紱璧靛ぉ鎴� 鍖椾含甯堣寖澶у", - time: "2025-02-24 09:21", - title: - "涓嵂闂告煖鏄紶缁熶腑鑽皟鍓傜殑楂樼骇绠$悊浜哄憳锛屽湪'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃�備腑鑽椄鏌滄槸浼犵粺涓嵂璋冨墏鐨勯珮绾х鐞嗕汉鍛橈紝鍦�'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃��", - keyword: [ - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - ], - }, - { - name: "涓嵂闂告煖鐨勫巻鍙蹭紶鎵夸笌鏂版椂浠e彂灞曟�濊��", - sources: "鍖椾含涓尰鑽ぇ瀛﹀鎶�", - type: "鏈熷垔", - author: "鏉ㄦ担鑿� 鍖椾含涓尰鑽ぇ瀛︿腑鑽闄紱璧靛ぉ鎴� 鍖椾含甯堣寖澶у", - time: "2025-02-24 09:21", - title: - "涓嵂闂告煖鏄紶缁熶腑鑽皟鍓傜殑楂樼骇绠$悊浜哄憳锛屽湪'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃�備腑鑽椄鏌滄槸浼犵粺涓嵂璋冨墏鐨勯珮绾х鐞嗕汉鍛橈紝鍦�'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃��", - keyword: [ - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - ], - }, - ], + resultList: [], + total: 0, + paginationPage: 1, + loading: false, + labelList: { + abstract: "鎽樿", + author: "浣滆��", + keyword: "鍏抽敭璇�", + source: "鏉ユ簮", + title: "鏍囬", + year: "骞翠唤", + }, }; + }, + mounted() { + this.getSelectData(); }, methods: { - async onSubmit(val) {}, + categoryChange(val) { + console.log(val, "val"); + if (val.checked) { + this.categoryChecList.push(val.value); + } else { + const index = this.categoryChecList.findIndex( + (item) => item === val.value + ); + this.categoryChecList.splice(index, 1); + } + this.getItemList(); + }, + + subjectChange(val) { + console.log(val, "val"); + if (val.checked) { + this.subjectCheckList.push(val.value); + } else { + const index = this.subjectCheckList.findIndex( + (item) => item === val.value + ); + this.subjectCheckList.splice(index, 1); + } + this.getItemList(); + }, + + async onSubmit(val) { + for (let key in val) { + if (val[key] != "") { + this.associationList.push({ + type: this.labelList[key], + content: val[key], + value: key, + }); + } + } + console.log(this.associationList, "this.associationList"); + this.getItemList(); + }, //閲嶇疆鎼滅储缁撴灉 resetForm() { // this.onSearch(""); }, // 椤甸潰璺宠浆 - goPage(key) { - this.$router.push({ name: "details", params: { key: key } }); + goPage(id) { + this.$router.push({ name: "details", query: { id } }); }, // 鏀惰捣鍜屽睍绀� shrinkClick(key, name) { @@ -673,6 +633,162 @@ this.activeBox = this.activeBox === "b" ? null : "b"; } }, + + //鑾峰彇涓嬫媺閫夋嫨妗嗙殑鍐呭 + async getSelectData() { + this.loading = true; + try { + // 鍚屾椂鍙戣捣涓や釜寮傛璇锋眰锛屽苟绛夊緟瀹冧滑鐨勭粨鏋� + const [subjectListResult, resourceListResult] = await Promise.all([ + this.getSelectContent(this.subjectAffiliationRefCode), + this.getSelectContent(this.resourceTypeRefCode), + ]); + console.log(subjectListResult.option); + this.subject.list = subjectListResult.option; + this.category.list = resourceListResult.option; + if (this.category.list && this.category.list.length) { + this.category.list.forEach((item) => { + this.resourceTypeValueList.push(item.value); + }); + } + this.getItemList(); + } catch (error) { + console.error("鑾峰彇涓嬫媺妗嗘暟鎹け璐�:", error); + } + }, + + //鑾峰彇閫夋嫨鍐呭 + getSelectContent(refCode) { + let requestData = { refCodes: [refCode] }; + return MG.store + .getProductTypeField(requestData) + .then((res) => { + const selestList = JSON.parse(res[0].config); + return selestList; + }) + .catch((error) => { + console.error("鑾峰彇閫夋嫨鍐呭澶辫触:", error); + return null; + }); + }, + + // 鍒犻櫎 + removeAssociationList(value) { + this.associationList = this.associationList.filter( + (item) => item.content !== value + ); + this.inputValue = ""; + // 閫氱煡鐖剁粍浠舵暟鎹凡鏀瑰彉 + this.getItemList() + }, + + // 鎼滅储 + handleSearch(isText) { + this.associationList = [] + if (isText.text != "") { + this.inputValue = isText.text; + this.inputType = isText.type; + this.associationList.push({ + type: isText.label, + content: isText.text, + }); + this.getItemList(); + } + }, + + // 璇锋眰鏁版嵁 + getItemList() { + 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]; // 鑾峰彇褰撳墠閫夐」 + if (item.value !== "all") { // 濡傛灉褰撳墠閫夐」鐨勫�间笉鏄�"all" + if (!Object.keys(searchData).length) { // 濡傛灉searchData鏄┖鐨� + // 灏嗙涓�涓�夐」鐨勫�间笌杈撳叆鍊煎叧鑱旓紝骞舵坊鍔犱竴涓槦鍙�(*)浣滀负鍚庣紑 + searchData[item.value + "*"] = this.inputValue; + } else { // 濡傛灉searchData涓嶆槸绌虹殑 + // 浣跨敤"||"浣滀负鍓嶇紑锛屽皢鍚庣画閫夐」鐨勫�间笌杈撳叆鍊煎叧鑱旓紝骞舵坊鍔犱竴涓槦鍙�(*)浣滀负鍚庣紑 + // 杩欓�氬父鐢ㄤ簬鏋勫缓涓�涓�昏緫鎴栵紙OR锛夋煡璇� + searchData["||" + item.value + "*"] = this.inputValue; + } + } + } + } + } + MG.resource + .getItem({ + path: "*", + queryType: "*", + paging: { + start: (this.paginationPage - 1) * 6, + size: 6, + }, + sort: { + year: this.postedSortInfo ? "Desc" : "Asc", + }, + fields: { + cmsType: ["cmsItem"], + "resourceType*": + this.categoryChecList.length > 0 + ? this.categoryChecList + : this.resourceTypeValueList, + source: [], + year: [], + abstract: [], + keyWords: [], + author: [], + DOI: [], + AIReading: [], + file: [], + IssueNumber: [], + "subjectAffiliation*": this.subjectCheckList, + ...searchData, + }, + }) + .then((res) => { + console.log(res, "鍏ㄩ儴鍐呭"); + + res.datas.forEach((item) => { + item.year = moment(item.year).format("YYYY-MM-DD"); + if (typeof item.keyWords === "string") { + item.keyWords = item.keyWords.split(";;"); + } else { + // 璁剧疆涓�涓粯璁ゅ�兼垨鑰呰繘琛屽叾浠栭敊璇鐞� + item.keyWords = []; + } + // 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 + this.total = res.total; + this.loading = false; + }); + }, + // 澶勭悊椤电爜鍙樺寲 + 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; + this.getItemList(); + }, }, }; </script> @@ -683,28 +799,49 @@ height: 100%; box-sizing: border-box; background-color: #e9e1d4; - overflow: auto; + position: relative; + overflow: hidden; + display: flex; + flex-direction: column; } .page-header { - height: 102px; + padding: 8px 0; + height: 9.4%; width: 100%; text-align: left; - margin-bottom: 8px; border-bottom: 2px solid #937950; + background-color: #e9e1d4; + position: sticky; + top: 0; + z-index: 100; p { - padding: 35px 0 34px 0; + height: 100%; font-family: Alimama DongFangDaKai; font-size: 30px; text-indent: 1em; border-bottom: 1px solid #937950; + display: flex; + align-items: center; } } +.page-main-father { + flex: 1; + width: 100%; + height: 100%; + min-width: 1250px; + overflow: auto; + padding-top: 1%; + padding-bottom: 2%; +} + .page-main { - width: 1330px; + width: 77.3%; margin: 0 auto; + margin-top: 1%; + margin-bottom: 1%; } .page-input { @@ -775,6 +912,7 @@ background-color: transparent; color: #937950; border: 1px solid #6f5a3a; + cursor: pointer; &:hover { background-color: #6f5a3a; @@ -788,7 +926,6 @@ .page-content { width: 100%; margin-top: 20px; - margin-bottom: 20px; background-color: #fefbf5; border: 1px solid #e4dace; display: flex; @@ -831,13 +968,14 @@ border-bottom: 1px solid #e4dace; padding: 10px; display: flex; - align-items: center; flex-wrap: wrap; } .category-main { width: 50%; margin-bottom: 10px; + display: flex; + align-items: center; span { font-family: Source Han Sans; @@ -885,7 +1023,10 @@ } .el-checkbox { + vertical-align: middle; + font-family: "Tahoma"; width: 70%; + vertical-align: middle; } /* 璁剧疆榧犳爣缁忚繃瀵瑰嬀妗嗭紝瀵瑰嬀妗嗚竟妗嗙殑棰滆壊 */ @@ -1038,7 +1179,6 @@ font-size: 12px; font-weight: 350; padding-right: 10px; - border-right: 1px solid #2c2c2c; color: #333; } @@ -1047,7 +1187,18 @@ font-size: 12px; font-weight: 350; padding-left: 10px; + padding-right: 10px; color: #333; + border-left: 1px solid #2c2c2c; + } + + span:nth-child(4) { + font-family: Source Han Sans; + font-size: 12px; + font-weight: 350; + padding-left: 10px; + color: #333; + border-left: 1px solid #2c2c2c; } margin-bottom: 10px; @@ -1078,6 +1229,14 @@ font-weight: 700; font-size: 14px; } + } + + .page-main-abstract { + font-family: Source Han Sans !important; + font-size: 14px !important; + font-weight: 350 !important; + line-height: 26px !important; + color: #333333 !important; } .main-keyword { @@ -1114,34 +1273,36 @@ } :deep .msg-pagination-container.is-background .el-pager li { - /*瀵归〉鏁扮殑鏍峰紡杩涜淇敼*/ - background-color: transparent; - color: #333333; - border-radius: 5px; - border: 1px solid #CCCCCC; + /*瀵归〉鏁扮殑鏍峰紡杩涜淇敼*/ + background-color: transparent; + color: #333333; + border-radius: 5px; + border: 1px solid #cccccc; } :deep.msg-pagination-container.is-background .btn-next { - /*瀵逛笅涓�椤电殑鎸夐挳鏍峰紡杩涜淇敼*/ - background-color: transparent; - color: #333333; - border-radius: 5px; - border: 1px solid #CCCCCC; + /*瀵逛笅涓�椤电殑鎸夐挳鏍峰紡杩涜淇敼*/ + background-color: transparent; + color: #333333; + border-radius: 5px; + border: 1px solid #cccccc; } :deep.msg-pagination-container.is-background .btn-prev { - /*瀵逛笂涓�椤电殑鎸夐挳鏍峰紡杩涜淇敼*/ - background-color: transparent; - color: #333333; - border-radius: 5px; - border: 1px solid #CCCCCC; + /*瀵逛笂涓�椤电殑鎸夐挳鏍峰紡杩涜淇敼*/ + background-color: transparent; + color: #333333; + border-radius: 5px; + border: 1px solid #cccccc; } -:deep.msg-pagination-container.is-background .el-pager li:not(.disabled).active { - /*褰撳墠閫変腑椤垫暟鐨勬牱寮忚繘琛屼慨鏀�*/ - background-color: #937950; - color: #FFF; - border-radius: 5px; - border: 1px solid #CCCCCC; +:deep.msg-pagination-container.is-background + .el-pager + li:not(.disabled).active { + /*褰撳墠閫変腑椤垫暟鐨勬牱寮忚繘琛屼慨鏀�*/ + background-color: #937950; + color: #fff; + border-radius: 5px; + border: 1px solid #cccccc; } -</style> +</style> \ No newline at end of file -- Gitblit v1.9.1