Files
xdd-uniapp-new/pages/foodInfomation/foodInfomationDetail.vue
T
2023-09-20 21:49:33 +08:00

211 lines
5.3 KiB
Vue

<template>
<view class="newsDetail">
<view class="title">{{ articleInfo.title }}</view>
<view class="list acea-row row-middle">
<view class="label line1" style="color: #999;">来源:{{articleInfo.author||"未知"}}</view>
<view class="item">
<!-- <text class="iconfont icon-shenhezhong"></text> -->
{{ articleInfo.addTime }}
</view>
<view class="item acea-row row-middle">
<image :src="webUrl+'/20230304131559277594.png'" class="eye-icon" mode=""></image>
<text class="see-num-text">{{articleInfo.visit||0}}</text>
</view>
</view>
<view class="conter" v-html="articleInfo.content"></view>
</view>
</template>
<style>
.conter>>>img{
display:block;
max-width:100% !important;
}
page{
background: #fff !important;
}
</style>
<style scoped lang="less">
.newsDetail .list .label{
padding: 0;
max-width: auto !important;
}
.eye-icon{
width: 32rpx;
height: 32rpx;
margin-right: 8rpx;
}
.zan-icon{
width: 32rpx;
height: 32rpx;
margin-right: 8rpx;
}
.zan-num-text{
color: #080F1A;
font-size: 24rpx;
}
.see-num-text{
color: #080F1A;
font-size: 24rpx;
}
.newsDetail .title{
font-size: 40rpx !important;
font-weight: bold;
color: #080F1A !important;
}
.newsDetail .picTxt {
width: 6.9*100rpx;
height: 2*100rpx;
border-radius: 0.2*100rpx;
border: 1px solid #e1e1e1;
position: relative;
margin: 0.3*100rpx auto 0 auto;
}
.newsDetail .picTxt .pictrue {
width: 2*100rpx;
height: 2*100rpx;
}
.newsDetail .picTxt .pictrue image{
width: 100%;
height: 100%;
border-radius: 0.2*100rpx 0 0 0.2*100rpx;
display: block;
}
.newsDetail .picTxt .text {
width: 4.6*100rpx;
}
.newsDetail .picTxt .text .name {
font-size: 0.3*100rpx;
color: #282828;
}
.newsDetail .picTxt .text .money {
font-size: 0.24*100rpx;
margin-top: 0.4*100rpx;
font-weight: bold;
}
.newsDetail .picTxt .text .money .num {
font-size: 0.36*100rpx;
}
.newsDetail .picTxt .text .y_money {
font-size: 0.26*100rpx;
color: #999;
text-decoration: line-through;
}
.newsDetail .picTxt .label {
position: absolute;
background-color: #303131;
width: 1.6*100rpx;
height: 0.5*100rpx;
right: -0.07*100rpx;
border-radius: 0.25*100rpx 0 0.06*100rpx 0.25*100rpx;
text-align: center;
line-height: 0.5*100rpx;
bottom: 0.24*100rpx;
}
.newsDetail .picTxt .label .span {
background-image: linear-gradient(to right, #fff71e 0%, #f9b513 100%);
background-image: -webkit-linear-gradient(to right, #fff71e 0%, #f9b513 100%);
background-image: -moz-linear-gradient(to right, #fff71e 0%, #f9b513 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.newsDetail .picTxt .label:after {
content: " ";
position: absolute;
width: 0;
height: 0;
border-bottom: 0.08*100rpx solid #303131;
border-right: 0.08*100rpx solid transparent;
top: -0.08*100rpx;
right: 0;
}
.newsDetail .bnt {
color: #fff;
font-size: 0.3*100rpx;
width: 6.9*100rpx;
height: 0.9*100rpx;
border-radius: 0.45*100rpx;
margin: 0.48*100rpx auto 0 auto;
text-align: center;
line-height: 0.9*100rpx;
}
</style>
<script>
import { getArticleDetails } from "@/api/public";
export default {
name: "FoodInfomationDetail",
components: {},
props: {},
data: function() {
return {
articleInfo: {}
};
},
watch: {
$yroute(to) {
if (to.name === "NewsDetail") this.articleDetails();
}
},
mounted: function() {
this.articleDetails();
},
methods: {
updateTitle() {
// document.title = this.articleInfo.title || this.$yroute.meta.title;
},
articleDetails: function() {
let that = this,
id = this.$yroute.query.id;
getArticleDetails(id).then(res => {
var data = res.data;
data.content = that.formatRichText(data.content);
that.articleInfo = data;
that.updateTitle();
console.log('current path:'+that.$yroute.path);
//动态配置share参数
that.$set(that, "share", {
title:that.articleInfo.title,
path:'/pages/foodInfomation/foodInfomationDetail?id='+that.$yroute.query.id,
imageUrl:'',
desc:'',
content:''
});
});
},
/**
* 处理富文本里的图片宽度自适应
* 1.去掉img标签里的style、width、height属性
* 2.img标签添加style属性:max-width:100%;height:auto
* 3.修改所有style里的width属性为max-width:100%
* 4.去掉<br/>标签
* @param html
* @returns {void|string|*}
*/
formatRichText:function(html){
let newContent= html.replace(/<img[^>]*>/gi,function(match,capture){
match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
return match;
});
newContent = newContent.replace(/style="[^"]+"/gi,function(match,capture){
match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;');
return match;
});
newContent = newContent.replace(/<br[^>]*\/>/gi, '');
newContent = newContent.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;margin-top:0;margin-bottom:0;"');
return newContent;
}
}
};
</script>