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/details.vue | 711 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 530 insertions(+), 181 deletions(-) diff --git a/src/views/achievements/details.vue b/src/views/achievements/details.vue index ab9cce6..e12fdfa 100644 --- a/src/views/achievements/details.vue +++ b/src/views/achievements/details.vue @@ -15,58 +15,62 @@ <p> <span>{{ details.source }}</span> <span>{{ details.year }}</span> + <span v-if="details.DOI">doi锛歿{ details.DOI }}</span> </p> </li> <li class="page-main-title"> <p> - <span v-for="(item, index) in details.characterList" :key="index">{{ item.name }}</span> + <span v-for="(item, index) in details.author" :key="index">{{ item }}</span> </p> - <p> + <p v-if="details.abstract"> <span>鎽樿锛�</span> <span class="page-main-abstract" v-html="details.abstract"></span> </p> - <p> + <p v-if="details.keyWords && details.keyWords.length > 0"> <span>鍏抽敭璇嶏細</span> <span class="page-main-keyword" v-for="(item, index) in details.keyWords" :key="index">{{ item }}</span> </p> - <p v-if="!isDisplay"> - <el-button @click="isDisplay = !isDisplay">鏌ョ湅鍏ㄦ枃</el-button> + <p v-if="details.cmsItemType != 'video' && details.cmsItemType != 'audio'"> + <el-button @click="openPdf(details.name)">鏌ョ湅鍏ㄦ枃</el-button> </p> - <p class="page-main-video" v-if="isDisplay"> - <video :src="details.videoUrl" controls autoplay class="video" width="70%"></video> + <p class="page-main-video" v-if="details.cmsItemType == 'video'"> + <video :src="details.src" controls autoplay class="video" width="70%"></video> </p> - <p class="page-main-audio" v-if="isDisplay"> - <audio :src="details.videoUrl" controls autoplay class="video" width="100%"></audio> + <p class="page-main-audio" v-if="details.cmsItemType == 'audio'"> + <audio :src="details.src" controls autoplay class="video" width="100%"></audio> </p> </li> <li class="page-main-literature"> <p class="literature-header">鐩稿叧鏂囩尞</p> - <div class="content-right"> + <div class="content-right" v-loading="loading" element-loading-text="妫�绱㈢粨鏋滃姞杞戒腑" + element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0)"> <!-- 缁撴灉灞曠ず --> <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 @click="goPage(item.id)">璇︽儏</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> + <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.title"> - <span>鎽樿: </span>{{ item.title }} + <li class="main-title" :title="item.abstract" v-if="item.abstract"> + <span>鎽樿: </span> + <span class="page-main-abstract" v-html="item.abstract"></span> </li> - <li class="main-keyword"> + <li class="main-keyword" v-if="item.keyWords && item.keyWords.length > 0"> <span>鍏抽敭璇嶏細</span> - <span class="keyWord" v-for="(citem, cindex) in item.keyword" :key="cindex"> - {{ citem.name }} + <span class="keyWord" v-for="(citem, cindex) in item.keyWords" :key="cindex"> + {{ citem }} </span> </li> </ul> @@ -74,182 +78,452 @@ </li> </ul> </div> + <el-dialog v-model="dialogVisible" :title="pdfName" width="60vw" top="2vh" bottom="2vh" + :visible.sync="dialogVisible" class="custom-dialog"> + <div class="pdfInfoBox"> + <div v-for="(item, index) in pdfList" :key="index" class="pdfItem" :page="index + 1"> + <img :src="item.showSrc" alt="" style="min-height: 550px" loading="lazy" /> + <el-divider content-position="center"> 绗� {{ index + 1 }} 椤� </el-divider> + </div> + </div> + </el-dialog> </div> </template> <script> +import { requestCtx, appRefCode } from "@/assets/js/config"; +import fileApi from "@/assets/js/middleGround/api/file"; +import MG from "@/assets/js/middleGround/WebMiddleGroundApi.js"; +import moment from "moment"; export default { data() { return { - isDisplay: false, - details: { - name: "涓嵂闂告煖鐨勫巻鍙蹭紶鎵夸笌鏂版椂浠e彂灞曟�濊��", - sources: "鍖椾含涓尰鑽ぇ瀛﹀鎶�", - time: "2025-02-24", - characterList: [ - { - name: "鏉ㄦ担鑿�", - }, - { - name: "鏉ㄦ担鑿�", - }, - { - name: "鏉ㄦ担鑿�", - }, - { - name: "鏉ㄦ担鑿�", - }, - ], - title: - "涓嵂闂告煖鏄紶缁熶腑鑽皟鍓傜殑楂樼骇绠$悊浜哄憳锛屽湪'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃�備腑鑽椄鏌滄槸浼犵粺涓嵂璋冨墏鐨勯珮绾х鐞嗕汉鍛橈紝鍦�'鍓嶅簵鍚庡巶寮�'涓嵂鎴垮彂鎸ラ噸瑕佷綔鐢ㄥ拰鍏抽敭鑱岃兘銆備紶鎵夸腑鑽椄鏌滅殑瀹濊吹瀛︽湳缁忛獙涓庝紭绉�鏂囧寲瀵瑰帢娓呬腑鑽瀛︾鍙戝睍鑴夌粶銆佽鑼冧腑鑽皟鍓傛妧鏈搷浣溿�佷績杩涜�佽嵂宸ユ妧鑹�'娲绘�佷紶鎵�'鍏锋湁閲嶈绉戝浠峰�煎拰鐜板疄鎰忎箟銆傞潰鍚戞柊鏃朵唬銆佸紑鍚柊鎬濈淮锛屾湰鏂囧鑰佸瓧鍙蜂腑鑽摵鐨勫叴璧峰拰涓嵂闂告煖杩涜鑰冭瘉锛屽垎鏋愪腑鑽椄鏌滅殑宀椾綅璐d换銆佷紶鎵胯矾寰勫強鏈潵鍙戝睍锛屾彁鍑洪珮绱犺川涓嵂闂告煖浜烘墠鍩瑰吇绛栫暐锛屾棬鍦ㄥ煿鍏荤鍚堝綋浠gぞ浼氶渶姹傜殑涓嵂琛屼笟澶嶅悎鍨嬪垱鏂颁汉鎵嶃��", - keyword: [ - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - { - name: "涓嵂闂告煖", - }, - ], - videoUrl: "https://www.w3schools.com/html/mov_bbb.mp4", - audioMd5: "", - }, - // 鏌ヨ缁撴灉 - 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: "涓嵂闂告煖", - }, - ], - }, + observer: null, + pdfName: "", + dialogVisible: false, + pdfList: [], + relatedList: [], + // 杈撳叆妗嗙殑鍐呭 + inputValue: "", + // 閫夋嫨鐨勭被鍨� + inputType: "", + //绫诲瀷閫夋嫨 + inputOptions: [ + { value: "all", label: "鍏ㄩ儴" }, + { value: "Name", label: "鏍囬" }, + { value: "author", label: "浣滆��" }, + { value: "keyWords", label: "鍏抽敭璇�" }, + { value: "abstract", label: "鎽樿" }, + { value: "source", label: "鏉ユ簮" }, ], + isDisplay: false, + details: {}, + // 绫诲瀷 + category: { + title: "绫诲瀷", + 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, + }, + ], + }, + resourceTypeRefCode: "resourceType", + resourceTypeValueList: [], + // 鏌ヨ缁撴灉 + resultList: [], + loading: false, }; }, - mounted() { - console.log(this.$route.params.key, "key001"); - this.details = this.$route.params.key; - + async mounted() { + await this.getContent(this.$route.query.id); + await this.getSelectData(); + console.log(this.details, "璇锋眰鍑烘潵鐨勬暟鎹�"); + + // 鏌ユ壘鍏抽敭璇嶇浉鍖归厤鐨勬枃绔� + if (this.details.keyWords && this.details.keyWords.length) { + for (let i = 0; i < this.details.keyWords.length; i++) { + const item = this.details.keyWords[i]; + this.inputValue = item + this.inputType = "keyWords" + await this.getItemListOne() + } + console.log(this.resultList, "澶勭悊濂界殑"); + } else { + this.getItemList() + } + if (this.resultList.length == 0) { + this.getItemList() + } + //澶勭悊鏂囦欢 + if (this.details.cmsItemType == "video" || this.details.cmsItemType == "audio") { + if (this.details.file != "") { + this.details.src = await this.getResourcePath(this.details.file) + } + } + + + + + this.observer = new IntersectionObserver(this.pageChangeCallback, { + root: null, // 鎸囧畾鏍瑰厓绱狅紝杩欓噷璁句负 null锛岃〃绀洪�夊彇鏁翠釜瑙嗙獥浣滀负鏍瑰厓绱犮�� + rootMargin: '0px', // 鎸囧畾鏍瑰厓绱犵殑杈圭晫锛岃繖閲岃涓� "0px"锛岃〃绀烘牴鍏冪礌鐨勮竟鐣屽拰瑙嗙獥鐨勮竟鐣岄噸鍚� + threshold: 0.1 // 鎸囧畾浜ゅ弶姣斾緥锛岃繖閲岃涓� 0.5锛岃〃绀哄綋鐩爣鍏冪礌涓�鍗婃垨鏇村鏄剧ず鍦ㄨ绐椾腑鏃惰Е鍙戝洖璋冨嚱鏁般�� + }) }, methods: { - goPage(key) { }, + // 鏍规嵁id璇锋眰璇ラ〉闈㈡暟鎹� + async getContent(id) { + const res = await MG.resource + .getItem({ + path: "*", + queryType: "*", + fields: { + cmsType: ["cmsItem"], + "Id=": [id + ""], + source: [], + year: [], + abstract: [], + keyWords: [], + author: [], + DOI: [], + AIReading: [], + file: [], + IssueNumber: [], + }, + }) + 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 = []; + } + if(item.author && item.author.length>0){ + item.author = item.author.split(";"); + } + const foundItem = this.category.list.find((citem) => citem.value == item.cmsItemType); + item.resourceTypeName = foundItem ? foundItem.name : ''; + }) + this.details = res.datas[0] + this.loading = false; + }, + + // 鍦ㄦ鐐瑰嚮璇︽儏 + async goPage(id) { + await this.getContent(id); + await this.getSelectData(); + this.resultList = []; + // 鏌ユ壘鍏抽敭璇嶇浉鍖归厤鐨勬枃绔� + if (this.details.keyWords && this.details.keyWords.length) { + for (let i = 0; i < this.details.keyWords.length; i++) { + const item = this.details.keyWords[i]; + this.inputValue = item + this.inputType = "keyWords" + this.getItemListOne() + } + } else { + this.getItemList() + } + if (this.resultList.length == 0) { + this.getItemList() + } + //澶勭悊鏂囦欢 + if (this.details.cmsItemType == "video" || this.details.cmsItemType == "audio") { + if (this.details.file != "") { + this.details.src = await this.getResourcePath(this.details.file) + } + } + // 婊氬姩鍒伴〉闈㈤《閮� + this.$nextTick(() => { + const pageMain = document.querySelector('.page-main-father'); + if (pageMain) { + pageMain.scrollTo({ + top: 0, + behavior: 'smooth' + }); + } + }); + }, goBack() { this.$router.go(-1); }, + + // 鑾峰彇闃块噷浜戝姞閫熷湴鍧� (瑙嗛锛岄煶棰�) + async getResourcePath(md5) { + try { + // 璋冪敤 fileApi.getAliVod 鏂规硶鑾峰彇璧勬簮璺緞 + const res = await fileApi.getAliVod({ + md5, + appRefCode, + }); + + // 濡傛灉杩斿洖鐨勬暟鎹笉涓虹┖涓斿畾涔夋槑纭紝鍒欑洿鎺ヨ繑鍥� res.data + if (res.data && res.data !== "") { + return res.data; + } + + // 濡傛灉杩斿洖鐨勬暟鎹负绌烘垨鏈畾涔夛紝鍒欐嫾鎺ラ粯璁や笅杞借矾寰� + return requestCtx + "/file/api/ApiDownload?md5=" + md5; + } catch (error) { + // 鎹曡幏寮傚父骞舵墦鍗伴敊璇棩蹇� + console.error("鑾峰彇璧勬簮璺緞澶辫触:", error); + // 杩斿洖涓�涓粯璁ゅ�兼垨鎶涘嚭閿欒锛堟牴鎹笟鍔¢渶姹傦級 + return requestCtx + "/file/api/ApiDownload?md5=" + md5; + } + }, + + // 鑾峰彇鐩稿叧璧勬簮 + async getPDFInfo(md5) { + const res = await this.MG.file.getPdfInfo({ + md5 + }) + if (!res || !res.totalPages) return (this.pdfList = []) + for (let index = 0; index < res.totalPages; index++) { + const src = + requestCtx + '/file/GetPdfPageImage?md5=' + md5 + '&index=' + (index + 1) + '&dpi=300' + '&width=800' + this.pdfList.push({ + src, + showSrc: '' + }) + } + // 鍚姩椤电爜瑙傚療 + setTimeout(() => { + this.initObservation() + }, 500) + }, + + initObservation() { + const sections = document.querySelectorAll('.pdfItem') + sections.forEach((section) => { + // observer 瑙傚療姣忎釜鍏冪礌锛屼互渚垮湪瀹冧滑杩涘叆鎴栫寮�瑙嗙獥鏃惰Е鍙戝洖璋冨嚱鏁般�� + const isObserver = section.getAttribute('observer') + if (!isObserver) { + this.observer.observe(section) + + section.setAttribute('observer', '1') + } + }) + // 棰勫姞杞藉墠鍑犻〉璧勬簮 + const preloadPages = 3 + for (let i = 0; i < Math.min(preloadPages, sections.length); i++) { + const section = sections[i] + const page = section.getAttribute('page') + if (this.pdfList[page - 1].showSrc == '') { + this.pdfList[page - 1].showSrc = this.pdfList[page - 1].src + } + } + }, + + pageChangeCallback(entries, observer) { + //entries锛氫唬琛ㄨ瀵熷埌鐨勭洰鏍囧厓绱犵殑闆嗗悎銆� observer锛氫唬琛ㄨ瀵熻�呭璞°�� + entries.forEach((entry) => { + //entry.isIntersecting锛氭鏌ュ綋鍓嶇洰鏍囧厓绱犳槸鍚︿笌鏍瑰厓绱犵浉浜ゃ�� + if (entry.isIntersecting) { + const target = entry.target + //entry.target锛氳幏鍙栧綋鍓嶇洰鏍囧厓绱� + const page = target.getAttribute('page') + if (this.pdfList[page - 1].showSrc == '') { + this.pdfList[page - 1].showSrc = this.pdfList[page - 1].src + } + } + }) + }, + + + + //鑾峰彇涓嬫媺閫夋嫨妗嗙殑鍐呭 + async getSelectData() { + this.loading = true; + try { + // 鍚屾椂鍙戣捣涓や釜寮傛璇锋眰锛屽苟绛夊緟瀹冧滑鐨勭粨鏋� + const [resourceListResult] = await Promise.all([ + this.getSelectContent(this.resourceTypeRefCode), + ]); + this.category.list = resourceListResult.option; + if (this.category.list && this.category.list.length) { + this.category.list.forEach((item) => { + this.resourceTypeValueList.push(item.value) + }); + } + + } 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; + }); + }, + + // 澶嶅埗涓�浠� + async getItemListOne() { + 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; + } + } + } + } + } + const res = await MG.resource + .getItem({ + path: "*", + queryType: "*", + paging: { + size: 99999 + }, + fields: { + cmsType: ["cmsItem"], + // 'id=':[this.$route.params.key], + "resourceType*": this.resourceTypeValueList, + source: [], + year: [], + abstract: [], + keyWords: [], + author: [], + DOI: [], + AIReading: [], + file: [], + IssueNumber: [], + ...searchData, + }, + }) + 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 = []; + } + const foundItem = this.category.list.find((citem) => citem.value == item.cmsItemType); + item.resourceTypeName = foundItem ? foundItem.name : ''; + console.log(this.details.id, ""); + + if (!this.resultList.find(citem => citem.id === item.id) && item.id != this.details.id && this.resultList.length < 11) { + this.resultList.push(item); + } + }); + // 鎺掗櫎鑷韩涓斿幓閲� + + // const relatedList = res.datas.filter((item) => { + // return item.id !== this.details.id; + // }); + // this.resultList.push(...relatedList) + // // 鏍规嵁id鍘婚噸 + // this.resultList = this.uniqueById(this.resultList); + // //鏈�澶氭樉绀�10鏉� + // if (this.resultList.length > 10) { + // this.resultList = this.resultList.slice(0, 10); + // } + this.loading = false; + }, + + async openPdf(name) { + this.pdfList = [] + this.pdfName = name; + this.dialogVisible = true; + await this.getPDFInfo(this.details.file); + }, + + // 璇锋眰鎵�鏈夌殑鏁版嵁 + getItemList() { + MG.resource + .getItem({ + path: "*", + queryType: "*", + paging: { + size: 5 + }, + fields: { + cmsType: ["cmsItem"], + "resourceType*": this.resourceTypeValueList, + source: [], + year: [], + abstract: [], + keyWords: [], + author: [], + DOI: [], + AIReading: [], + file: [], + IssueNumber: [], + }, + }) + .then((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 = []; + } + const foundItem = this.category.list.find((citem) => citem.value == item.cmsItemType); + item.resourceTypeName = foundItem ? foundItem.name : ''; + }) + this.resultList = res.datas + this.loading = false; + }).catch((err) => { + console.log("鏇挎崲鏁版嵁璇锋眰澶辫触"); + }); + }, + + //鍘婚噸 + uniqueById(array) { + const uniqueItems = new Map(); + array.forEach(item => { + if (!uniqueItems.has(item.id)) { + uniqueItems.set(item.id, item); + } + }); + return Array.from(uniqueItems.values()); + } }, }; </script> @@ -292,6 +566,7 @@ flex: 1; width: 100%; height: 100%; + min-width: 1200px; overflow: auto; padding-top: 2%; padding-bottom: 2%; @@ -428,7 +703,6 @@ } .page-main-keyword { - cursor: pointer; padding: 5px 10px; color: #937950; border: 1px solid #937950; @@ -474,6 +748,7 @@ } .content-right { + min-height: 600px; padding: 14px 20px 20px 14px; .right-header { @@ -534,6 +809,7 @@ } } + .right-main { margin-bottom: 20px; padding: 19px 30px 15px 30px; @@ -568,6 +844,7 @@ background-color: #87a8b9; color: #fff; margin-right: 10px; + } span:nth-child(2) { @@ -575,8 +852,8 @@ font-size: 12px; font-weight: 350; padding-right: 10px; - border-right: 1px solid #2c2c2c; color: #333; + } span:nth-child(3) { @@ -584,8 +861,21 @@ 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; } @@ -617,6 +907,14 @@ } } + .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 { span:nth-child(1) { font-family: Source Han Sans; @@ -640,4 +938,55 @@ } } } + + +.pdfInfoBox { + height: 85vh; + margin-top: 20px; + overflow: auto; + width: 100%; + + img { + display: block; + margin: 0 auto; + width: 70%; + box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1); + object-fit: contain; + } +} </style> + +<style lang="less"> +.custom-dialog { + overflow: hidden !important; + + .el-dialog__body { + padding: 0; + } + + .el-dialog__header { + background-color: #937950; + + .el-dialog__title { + display: flex; + justify-content: space-between; + align-items: center; + color: #fff; + font-weight: 900; + font-size: 16px; + + span:nth-child(2):hover { + cursor: pointer; + } + } + + + .el-dialog__title, + .el-dialog__headerbtn .el-dialog__close { + color: #fff; + font-weight: 900; + font-size: 16px; + } + } +} +</style> \ No newline at end of file -- Gitblit v1.9.1