新闻页面加载过慢优化

This commit is contained in:
77 2024-08-01 14:26:56 +08:00
parent fe33b9c5ad
commit d280be1928

View File

@ -1,497 +1,536 @@
<template> <template>
<div class="loading"> <div class="loading">
<div class="page_ban"> <div class="page_ban">
<div class="img compbg"></div> <div class="img compbg"></div>
<div class="content"> <div class="content">
<div class="page_nav"> <div class="page_nav">
<div class="name"> <div class="name">
<a style="padding: 0;" href="">新闻内容</a> <a style="padding: 0;" href="">新闻内容</a>
</div> </div>
<div class="list" style="bottom:-15px"> <div class="list" style="bottom:-15px">
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane :label="newscatagary[0]?.name" :name="newscatagary[0]?.name"></el-tab-pane> <el-tab-pane :label="newscatagary[0]?.name" :name="newscatagary[0]?.name"></el-tab-pane>
<el-tab-pane :label="newscatagary[1]?.name" :name="newscatagary[1]?.name"></el-tab-pane> <el-tab-pane :label="newscatagary[1]?.name" :name="newscatagary[1]?.name"></el-tab-pane>
</el-tabs>
</div> </el-tabs>
</div>
</div> </div>
</div> </div>
<div style="height: 80px;"></div> </div>
<div style="width: 80%;margin: auto;"> </div>
<el-row style="display: flex;flex-wrap: wrap;"> <div style="height: 80px;"></div>
<div style="width: 80%;margin: auto;">
<el-col :span="8" v-for="item in newshow" :key="item.id" class="colitem" style="cursor: pointer;" > <el-row style="display: flex;flex-wrap: wrap;">
<div @click="changeto(item.id)">
<el-card :body-style="{ padding: '0px' }" > <el-col :span="8" v-for="item in newshow" :key="item.id" class="colitem" style="cursor: pointer;">
<div class="card_img1 mark" :style="{ 'background-image': 'url(' + item.pic + ')' }" > <div @click="changeto(item.id)">
<!-- <div class="date">{{item.releaseTime}}</div> --> <el-card :body-style="{ padding: '0px' }">
</div> <div class="card_img1 mark" :style="{ 'background-image': 'url(' + item.pic + ')' }">
<div> <!-- <div class="date">{{item.releaseTime}}</div> -->
<div class="news_li_con"><div class="title">{{item.name}}</div> <div class="introduction" v-html="item.content"></div> </div> </div>
<div>
</div> <div class="news_li_con">
</el-card> <div class="title">{{item.name}}</div>
</div> <div class="introduction" v-html="item.content"></div>
</el-col> </div>
</el-row>
</div> </div>
</el-card>
<div style="width: 80%;margin: auto;"> </div>
<div v-for="item in rest" class="newsitem" style="overflow: hidden; padding: 30px 0 24px;position: relative;cursor: pointer;display: flex;" @click="changeto(item.id)"> </el-col>
<div class="date1" style=""><img :src="item.pic" style="width: 236px;height: 157px;"></img></div> </el-row>
<div class="" style=" margin-left: 35px;overflow: hidden;"> </div>
<div style=" font-size: 18px;
<div style="width: 80%;margin: auto;">
<div v-for="item in rest" class="newsitem"
style="overflow: hidden; padding: 30px 0 24px;position: relative;cursor: pointer;display: flex;"
@click="changeto(item.id)">
<div class="date1" style=""><img :src="item.pic" style="width: 236px;height: 157px;"></img></div>
<div class="" style=" margin-left: 35px;overflow: hidden;">
<div style=" font-size: 18px;
color: #000; color: #000;
font-weight: bold; font-weight: bold;
margin-top: 15px;"> margin-top: 15px;">
{{item.name}} {{item.name}}
</div> </div>
<!-- <div style="font-size: 14px; <!-- <div style="font-size: 14px;
margin-top: 7px; margin-top: 7px;
color: #ababab;"> color: #ababab;">
{{item.releaseTime}} {{item.releaseTime}}
</div> --> </div> -->
<div style="font-size: 14px; <div style="font-size: 14px;
color: #666666; color: #666666;
height: 79px; height: 79px;
overflow: hidden; overflow: hidden;
-webkit-box-orient:vertical; -webkit-box-orient:vertical;
margin-top: 10px;" v-html="item.content"> margin-top: 10px;" v-html="item.content">
</div> </div>
</div> </div>
</div> </div>
<div style="height: 40px;"></div> <div style="height: 40px;"></div>
<div class="page_more wow fadeInUp animated" data-wow-delay=".2s" id="More" style="visibility: visible; animation-delay: 0.2s; animation-name: fadeInUp;" @click="addnews"> <div class="page_more wow fadeInUp animated" data-wow-delay=".2s" id="More"
<em>更多新闻</em> style="visibility: visible; animation-delay: 0.2s; animation-name: fadeInUp;" @click="addnews">
</div> <em>更多新闻</em>
<div style="height: 60px;"></div> </div>
</div> <div style="height: 60px;"></div>
</div> </div>
</div>
</template> </template>
<script> <script>
import '@/assets/images/news1.png' import '@/assets/images/news1.png'
import { getnews,getmsg,NewCategary} from '@/api'; import {
import { Loading } from 'element-ui'; getnews,
export default{ getmsg,
data(){ NewCategary
return{ } from '@/api';
activeName:'企业新闻', import {
newshow:[], Loading
rest:[], } from 'element-ui';
newslist:[], export default {
newscatagary:[], data() {
page:0, return {
content:'' activeName: '企业新闻',
} newshow: [],
}, rest: [],
mounted(){ newslist: [],
newscatagary: [],
page: 0,
content: ''
}
},
mounted() {
let loadingInstance = Loading.service('loading'); let loadingInstance = Loading.service('loading');
NewCategary().then((res)=>{ NewCategary().then((res) => {
this.newscatagary=res.data this.newscatagary = res.data
}) })
getnews({'page':0,'articleType':this.activeName}).then((res)=>{ getnews({
'page': 0,
'articleType': this.activeName
}).then((res) => {
loadingInstance.close();
// richText
res.data.content.forEach(item => {
//
item.content = item.content?.replace(/<[^>]+>/g, '').trim();
});
this.newslist = res.data.content
let arr = this.newslist.slice(0, 3)
this.newshow = arr
})
},
methods: {
handleClick() {
this.page = 0;
console.log(1111)
this.rest = []
let loadingInstance = Loading.service('loading');
// if(this.activeName==''){
getmsg({
'page': 0,
'articleType': this.activeName
}).then((res) => {
// richText
res.data.content.forEach(item => {
//
item.content = item.content?.replace(/<[^>]+>/g, '').trim();
});
this.newslist = res.data.content
let arr = this.newslist.slice(0, 3)
this.newshow = arr
loadingInstance.close();
})
// }else if(this.activeName==''){
// getnews({'page':0,'articleType':activeName}).then((res)=>{
// richText // res.data.content.forEach(item => {
res.data.content.forEach(item => {
//
item.content = item.content?.replace(/<[^>]+>/g, '').trim();
});
this.newslist=res.data.content
let arr=this.newslist.slice(0,3)
this.newshow=arr
loadingInstance.close();
})
},
methods:{
handleClick(){ // item.content = item.content?.replace(/<[^>]+>/g, '').trim();
this.page = 0; // });
console.log(1111) // this.newslist=res.data.content
this.rest=[]
let loadingInstance = Loading.service('loading');
// if(this.activeName==''){
getmsg({'page':0,'articleType':this.activeName}).then((res)=>{
// richText
res.data.content.forEach(item => {
//
item.content = item.content?.replace(/<[^>]+>/g, '').trim();
});
this.newslist=res.data.content
let arr=this.newslist.slice(0,3)
this.newshow=arr
loadingInstance.close();
})
// }else if(this.activeName==''){
// getnews({'page':0,'articleType':activeName}).then((res)=>{
// res.data.content.forEach(item => {
// item.content = item.content?.replace(/<[^>]+>/g, '').trim(); // let arr=this.newslist.slice(0,3)
// });
// this.newslist=res.data.content
// let arr=this.newslist.slice(0,3)
// this.newshow=arr // this.newshow=arr
// loadingInstance.close(); // loadingInstance.close();
// }) // })
// } // }
}, },
addnews(){ addnews() {
this.page=this.page+1 this.page = this.page + 1
// if(this.activeName==''){ // if(this.activeName==''){
getmsg({'page':this.page,'articleType':this.activeName}).then((res)=>{ getmsg({
// console.log(res) 'page': this.page,
for(let i=0;i<res.data.content.length;i++){ 'articleType': this.activeName
res.data.content[i].content= res.data.content[i].content?.replace(/<[^>]+>/g, '').trim(); }).then((res) => {
// console.log(res)
res.data.content[i].day=res.data.content[i].releaseTime.slice(-2) for (let i = 0; i < res.data.content.length; i++) {
res.data.content[i].year=res.data.content[i].releaseTime.slice(0,7) res.data.content[i].content = res.data.content[i].content?.replace(/<[^>]+>/g, '').trim();
this.rest.push(res.data.content[i])
} res.data.content[i].day = res.data.content[i].releaseTime.slice(-2)
res.data.content[i].year = res.data.content[i].releaseTime.slice(0, 7)
}) this.rest.push(res.data.content[i])
// }else if(this.activeName==''){ }
// getnews({'page':this.page}).then((res)=>{
// // console.log(res) })
// for(let i=0;i<res.data.content.length;i++){ // }else if(this.activeName==''){
// res.data.content[i].content= res.data.content[i].content?.replace(/<[^>]+>/g, '').trim(); // getnews({'page':this.page}).then((res)=>{
// // console.log(res)
// res.data.content[i].day=res.data.content[i].releaseTime.slice(-2) // for(let i=0;i<res.data.content.length;i++){
// res.data.content[i].year=res.data.content[i].releaseTime.slice(0,7) // res.data.content[i].content= res.data.content[i].content?.replace(/<[^>]+>/g, '').trim();
// this.rest.push(res.data.content[i])
// } // res.data.content[i].day=res.data.content[i].releaseTime.slice(-2)
// res.data.content[i].year=res.data.content[i].releaseTime.slice(0,7)
// }) // this.rest.push(res.data.content[i])
// } // }
}, // })
changeto(id){ // }
// if(this.activeName==''){
this.$router.push({ },
path:'/detail?type='+this.activeName+'&&id='+id changeto(id) {
}) // if(this.activeName==''){
// }else if(this.activeName==''){ this.$router.push({
// this.$router.push({ path: '/detail?type=' + this.activeName + '&&id=' + id
// path:'/detail?type=2&&id='+id })
// }) // }else if(this.activeName==''){
// } // this.$router.push({
// path:'/detail?type=2&&id='+id
} // })
} // }
}
}
}
}
</script> </script>
<style scoped> <style scoped>
.compbg { .compbg {
background-image: url('../assets/images/banner.png'); background-image: url('../assets/images/banner.png');
} }
.page_ban { .page_ban {
height: 404px; height: 404px;
position: relative; position: relative;
text-align: center; text-align: center;
z-index: 101; z-index: 101;
} }
.page_ban .img { .page_ban .img {
width: 100%; width: 100%;
height: 100%; height: 100%;
background-size: cover; background-size: cover;
position: absolute; position: absolute;
left: 0; left: 0;
top: 0; top: 0;
z-index: -1; z-index: -1;
} }
.date{
font-size: 26px;
color: #dfd4c3;
line-height: 1;
position: absolute;
left: 0;
bottom: 20px;
padding: 0 30px;
width: 100%;
}
.page_ban .content {
position: relative;
height: 100%;
}
.content {
width: 80%;
margin: 0 auto;
}
.page_nav { .date {
width: 100%;
position: absolute;
left: 0;
bottom: 0;
}
div,
li {
box-sizing: border-box;
}
.page_nav .name { font-size: 26px;
float: left; color: #dfd4c3;
} line-height: 1;
position: absolute;
left: 0;
bottom: 20px;
padding: 0 30px;
width: 100%;
}
.page_nav .list { .page_ban .content {
position: relative; position: relative;
float: right; height: 100%;
margin-right: -35px; }
}
.page_nav a { .content {
float: left; width: 80%;
line-height: 76px; margin: 0 auto;
position: relative; }
font-size: 14.5px;
color: white; .page_nav {
font-weight: bold; width: 100%;
text-decoration: none; position: absolute;
} left: 0;
bottom: 0;
}
.page_nav .name a { div,
padding-left: 30px; li {
/* background: url() no-repeat left 30px; */ box-sizing: border-box;
} }
.page_nav .list { .page_nav .name {
position: relative; float: left;
float: right; }
margin-right: -35px;
}
.page_nav .list a { .page_nav .list {
color: #e7dfd2; position: relative;
color: rgba(231, 223, 210, .7); float: right;
margin-right: 35px; margin-right: -35px;
} }
.page_nav a { .page_nav a {
float: left; float: left;
line-height: 76px; line-height: 76px;
position: relative; position: relative;
font-size: 14.5px; font-size: 14.5px;
color: rgba(255, 255, 255, 0.8); color: white;
font-weight: bold; font-weight: bold;
} text-decoration: none;
}
.page_nav .inner_bor { .page_nav .name a {
height: 4px; padding-left: 30px;
background: #f23c39; /* background: url() no-repeat left 30px; */
position: absolute; }
bottom: -4px;
left: 0;
display: block;
}
::v-deep .el-tabs__item { .page_nav .list {
position: relative;
float: right;
margin-right: -35px;
}
color: rgba(255, 255, 255, 0.8); .page_nav .list a {
border: none; color: #e7dfd2;
} color: rgba(231, 223, 210, .7);
margin-right: 35px;
}
::v-deep .el-tabs__nav-wrap::after { .page_nav a {
background-color: transparent; float: left;
} line-height: 76px;
.card_img1{ position: relative;
border-radius: 14px; font-size: 14.5px;
position: relative; color: rgba(255, 255, 255, 0.8);
width: 100%; font-weight: bold;
height: 307px; }
background-size: cover; .page_nav .inner_bor {
margin-bottom: 16px; height: 4px;
border-radius: 14px; background: #f23c39;
} position: absolute;
.card_img2{ bottom: -4px;
border-radius: 14px; left: 0;
background-image: url('../assets/images/news2.png'); display: block;
position: relative; }
width: 100%;
height: 307px;
background-size: cover; ::v-deep .el-tabs__item {
margin-bottom: 16px;
border-radius: 14px;
}
.card_img3{
border-radius: 14px;
background-image: url('../assets/images/news3.png');
position: relative;
width: 100%;
height: 307px;
background-size: cover; color: rgba(255, 255, 255, 0.8);
margin-bottom: 16px; border: none;
border-radius: 14px; }
}
.colitem{
display: inline-block;
float: none;
}
.mark::before{
content: '';
width: 100%;
height: 100%;
background-color: #000;
position: absolute;
bottom: 0;
left: 0;
opacity: .25;
filter: alpha(opacity = 25);
-webkit-filter: alpha(opacity = 25);
border-radius: 14px;
} ::v-deep .el-tabs__nav-wrap::after {
::v-deep .el-card.is-always-shadow{ background-color: transparent;
border-radius: 14px; }
box-shadow: initial;
} .card_img1 {
::v-deep el-card{ border-radius: 14px;
border:none
} position: relative;
.news_li_con { width: 100%;
position: relative; height: 307px;
padding-left: 28px;
height: 150px; background-size: cover;
overflow: hidden; margin-bottom: 16px;
} border-radius: 14px;
.news_li_con:before { }
content: '';
width: 6px; .card_img2 {
height: 21px; border-radius: 14px;
background-color: rgb(48,113,183); background-image: url('../assets/images/news2.png');
position: absolute; position: relative;
top: 4px; width: 100%;
left: 0; height: 307px;
}
.title { background-size: cover;
font-size: 22px; margin-bottom: 16px;
color: #3c3c48; border-radius: 14px;
color: rgba(60, 60, 72, .7); }
line-height: 30px;
font-weight: bold; .card_img3 {
max-width: 77%; border-radius: 14px;
overflow: hidden; background-image: url('../assets/images/news3.png');
text-overflow: ellipsis; position: relative;
white-space: nowrap; width: 100%;
transition: all .4s; height: 307px;
-webkit-transition: all .4s;
-moz-transition: all .4s; background-size: cover;
-ms-transition: all .4s; margin-bottom: 16px;
-o-transition: all .4s; border-radius: 14px;
} }
.introduction {
min-height: 72px; .colitem {
font-size: 14.5px; display: inline-block;
color: #848484; float: none;
color: rgba(132, 132, 132, .7); }
line-height: 24px;
margin: 8px 0 14px; .mark::before {
display: -webkit-box;
overflow: hidden; content: '';
-webkit-line-clamp: 3; width: 100%;
-webkit-box-orient: vertical; height: 100%;
} background-color: #000;
.more { position: absolute;
position:absolute; bottom: 0;
bottom: 0; left: 0;
font-size: 18px; opacity: .25;
color: #3958cd; filter: alpha(opacity=25);
line-height: 1; -webkit-filter: alpha(opacity=25);
text-transform: uppercase; border-radius: 14px;
letter-spacing: -.4px;
} }
div{
box-sizing: border-box; ::v-deep .el-card.is-always-shadow {
} border-radius: 14px;
.el-col{ box-shadow: initial;
padding: 0px 8px; }
}
.newsitem::before{ ::v-deep el-card {
content: ''; border: none
width: 100%; }
height: 2px;
background-color: #ebebeb; .news_li_con {
position: absolute; position: relative;
bottom: 0; padding-left: 28px;
left: 0; height: 150px;
} overflow: hidden;
.newsitem .date1{ }
width: 236px;
float: left; .news_li_con:before {
font-family: 'Rajdhani'; content: '';
font-size: 26px; width: 6px;
color: rgb(48,113,183); height: 21px;
line-height: 1; background-color: rgb(48, 113, 183);
} position: absolute;
.title1{ top: 4px;
font-size: 20px; left: 0;
color: #3c3c48; }
color: rgba(60, 60, 72, .7);
line-height: 24px; .title {
font-weight: bold; font-size: 22px;
margin-bottom: 10px; color: #3c3c48;
max-width: 77%; color: rgba(60, 60, 72, .7);
overflow: hidden; line-height: 30px;
text-overflow: ellipsis; font-weight: bold;
white-space: nowrap; max-width: 77%;
transition: all .4s; overflow: hidden;
-webkit-transition: all .4s; text-overflow: ellipsis;
-moz-transition: all .4s; white-space: nowrap;
-ms-transition: all .4s; transition: all .4s;
-o-transition: all .4s; -webkit-transition: all .4s;
} -moz-transition: all .4s;
.newsitem .introduction1{ -ms-transition: all .4s;
font-size: 14.5px; -o-transition: all .4s;
color: #848484; }
color: rgba(132, 132, 132, .7);
line-height: 24px; .introduction {
display: -webkit-box; min-height: 72px;
overflow: hidden; font-size: 14.5px;
-webkit-line-clamp: 2; color: #848484;
-webkit-box-orient: vertical; color: rgba(132, 132, 132, .7);
} line-height: 24px;
.page_more { margin: 8px 0 14px;
position: relative; display: -webkit-box;
font-size: 18px; overflow: hidden;
color: #ffffff; -webkit-line-clamp: 3;
line-height: 70px; -webkit-box-orient: vertical;
background-color: rgb(48,113,183); }
text-align: center;
cursor: pointer; .more {
border-radius: 14px; position: absolute;
-webkit-border-radius: 14px; bottom: 0;
-moz-border-radius: 14px; font-size: 18px;
-ms-border-radius: 14px; color: #3958cd;
-o-border-radius: 14px; line-height: 1;
} text-transform: uppercase;
::v-deep .el-card{ letter-spacing: -.4px;
border: none; }
}
div {
box-sizing: border-box;
}
.el-col {
padding: 0px 8px;
}
.newsitem::before {
content: '';
width: 100%;
height: 2px;
background-color: #ebebeb;
position: absolute;
bottom: 0;
left: 0;
}
.newsitem .date1 {
width: 236px;
float: left;
font-family: 'Rajdhani';
font-size: 26px;
color: rgb(48, 113, 183);
line-height: 1;
}
.title1 {
font-size: 20px;
color: #3c3c48;
color: rgba(60, 60, 72, .7);
line-height: 24px;
font-weight: bold;
margin-bottom: 10px;
max-width: 77%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
transition: all .4s;
-webkit-transition: all .4s;
-moz-transition: all .4s;
-ms-transition: all .4s;
-o-transition: all .4s;
}
.newsitem .introduction1 {
font-size: 14.5px;
color: #848484;
color: rgba(132, 132, 132, .7);
line-height: 24px;
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.page_more {
position: relative;
font-size: 18px;
color: #ffffff;
line-height: 70px;
background-color: rgb(48, 113, 183);
text-align: center;
cursor: pointer;
border-radius: 14px;
-webkit-border-radius: 14px;
-moz-border-radius: 14px;
-ms-border-radius: 14px;
-o-border-radius: 14px;
}
::v-deep .el-card {
border: none;
}
</style> </style>