You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

259 lines
6.5 KiB

<template>
<div class="research-module flex" @click="toDetail(data.id)">
<div class="research-img" v-show="!(isSma && type === 'searchResult')">
<!-- <template v-if="isMid">-->
<!-- <div :style="`background: url(${data.cover_image}) no-repeat center/cover content-box; margin-bottom: 10px;`" class="img" alt="The image cannot be displayed properly" />-->
<!--&lt;!&ndash; <div :style="`background: url(/uploads/20221118/4e49a28329e187226d9305445aca0931.png) no-repeat center/100% 100% content-box`" class="img" alt="The image cannot be displayed properly" />&ndash;&gt;-->
<!-- </template>-->
<!-- <template v-else-if="isSma">-->
<!-- <div :style="`background: url(${data.cover_image}) no-repeat center/cover content-box`" class="img" alt="The image cannot be displayed properly" />-->
<!-- </template>-->
<!-- <template v-else>-->
<!-- <div :style="`background: url(${data.cover_image}) no-repeat center/cover content-box`" class="img" alt="The image cannot be displayed properly" />-->
<!-- </template>-->
<img :src="data.cover_image" class="img" style="object-fit: cover" alt="The image cannot be displayed properly"/>
<div class="featured" v-if="data.id < 3">
Featured
</div>
</div>
<div class="research-info" >
<div class="research-nav" v-if="!isSma">
<div class="wrap flex">
<div class="research-author" v-html="data.author && data.author.replace(/\\n/g, '<br />')"></div>
<div class="topics" v-if="!isSma">
<span class="topic_item" v-for="item in data.topic_names.split(',')">{{ item }}</span>
</div>
</div>
<div class="research-date">{{ transformDate(data.publishedtime) }}</div>
</div>
<!-- <div class="topics" v-if="isMid">
<span class="topic_item" v-for="item in data.topic_names.split(',')">{{ item }}</span>
</div> -->
<div class="research-title" v-html="data.title">
</div>
<div class="topics" v-if="isSma">
<span class="topic_item" v-for="item in data.topic_names.split(',')">{{ item }}</span>
</div>
<div class="research-content">
{{ data.description }}
</div>
<div class="research-nav" v-show="isSma">
<div class="research-author">{{ data.author }}</div>
<div class="research-date">{{ transformDate(data.publishedtime) }}</div>
</div>
</div>
</div>
</template>
<script setup>
import { useRouter } from 'vue-router';
import {transformDate} from "../utils/tools.js";
const router = useRouter()
const props = defineProps({
type: String,
data: Object,
isMid: Boolean,
isSma: Boolean,
showDate: Boolean
})
const toDetail = (id) => {
router.push({ path: '/ContentPages', query: { contentId: id } })
}
</script>
<style lang="scss" scoped>
.research-module {
cursor: pointer;
.research-img {
//width: 150px;
//height: 100px;
margin: 20px 0;
margin-right: 40px;
position: relative;
.featured {
width: 60px;
background: rgba(255, 255, 255, 0.75);
position: absolute;
top: 13px;
left: 0;
text-align: center;
line-height: 17px;
font-family: 'Libre Bodoni';
font-style: normal;
font-weight: 400;
font-size: 14Px;
color: #FF6D00;
}
.img {
width: 150px;
height: 100px;
}
}
.research-info {
margin: 20px 0px;
width: 100%;
.research-nav {
display: flex;
justify-content: space-between;
.research-author {
font-family: "Raleway";
font-style: italic;
font-weight: bolder;
font-size: 14Px;
line-height: 21px;
color: #00000080;
margin-right: 10px;
}
.research-date {
font-family: "Raleway";
font-style: normal;
font-weight: bolder;
font-size: 14Px;
line-height: 21px;
color: rgba(0, 0, 0, 0.25);
}
.wrap{
align-items: center;
}
}
.topics {
display: flex;
flex-wrap: wrap;
gap: 10px;
@media screen and (min-width: 0Px) and (max-width: 431Px) {
margin-top: 10px;
}
}
.topic_item {
padding: 0 20px;
font-family: Raleway-Semibold;
color: #FF6D00;
background: rgba(255, 109, 0, 0.1);
font-size: 14px;
line-height: 32px;
height: 32px;
display: block;
&:first-child{
margin-left: 0;
}
}
.research-title {
font-family: "Libre Bodoni";
font-style: normal;
font-weight: 400;
font-size: 18Px;
line-height: 24px;
text-overflow: ellipsis;
}
.research-content {
// height: 60px;
font-family: 'Raleway';
font-style: normal;
font-weight: 400;
font-size: 12Px;
line-height: 16px;
overflow: hidden;
color: #000000bf;
display: -webkit-box;
overflow: hidden;
white-space: normal !important;
text-overflow: ellipsis;
word-wrap: break-word;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
}
}
@media screen and (min-width: 1440Px) and (max-width: 100vw) {
.research-module {
.research-img {
width: 400Px;
height: 200Px;
flex-shrink: 0;
margin-right: 50px !important;
//margin-right: 0 !important;
.img {
width: 100%;
height: 100%;
}
}
}
.research-author,
.research-date {
font-size: 24Px !important;
}
.research-title {
margin-top: 12px !important;
font-size: 24px !important;
}
.research-content {
margin-top: 14px !important;
font-size: 16Px !important;
line-height: 24Px !important;
-webkit-line-clamp: 4 !important;
}
.featured {
width: 60px;
top: 13px;
font-size: 14Px;
line-height: 14px;
}
}
@media screen and (min-width: 0Px) and (max-width: 431Px) {
.research-module {
display: block;
// width: 353Px !important;
.research-img {
width: 100% !important;
height: 100% !important;
.img {
width: 100% !important;
height: 4.5rem !important;
}
}
}
.research-title {
margin: 12px 0 0 !important;
width: 327px !important;
}
.research-content {
margin: 14px 0 0 !important;
width: 327px !important;
}
.research-info {
margin: 30px 0 !important;
width: 327px !important;
}
.featured {
width: 80px !important;
top: 13px;
right: 0;
font-size: 12Px;
line-height: 22px !important;
}
}
</style>