web-retail-h5/pages/email/emailDetail.vue

110 lines
2.4 KiB
Vue
Raw Permalink Normal View History

2025-03-23 09:29:40 +08:00
<template>
<view class="content">
<view class="detailBox">
<view class="detail_top">{{detailData.title}}</view>
<view class="detail_time">{{detailData.creationTime}}</view>
<view class="detail_content" @click="clickhtml(detailData.content)" v-html="detailData.content"></view>
</view>
</view>
</template>
<script>
import * as ema from '@/config/balance.js'
export default {
data() {
return {
detailData: {},
pkId: "",
functionType: ""
}
},
onLoad(query) {
this.pkId = query.pkId
this.functionType = query.index
this.getDetail()
},
methods: {
clickhtml(content) {
// 在组件挂载后调用handleImageClick方法预览第一张图片
const parser = new DOMParser();
const doc = parser.parseFromString(content, "text/html");
const imgElements = doc.getElementsByTagName("img");
if (imgElements.length > 0) {
const firstImageUrl = imgElements[0].src;
this.handleImageClick(firstImageUrl, content);
}
},
handleImageClick(url, content) {
uni.previewImage({
urls: this.getUrls(content),
current: url
});
},
getUrls(content) {
const parser = new DOMParser();
const doc = parser.parseFromString(content, "text/html");
const imgElements = doc.getElementsByTagName("img");
const urls = [];
for (let i = 0; i < imgElements.length; i++) {
urls.push(imgElements[i].src);
}
return urls;
},
getDetail() {
ema
.getNoticeDetail({
pkId: this.pkId,
functionType: this.functionType
})
.then((res) => {
this.detailData = res.data;
// console.log('馃寛query', this.detailData)
});
}
}
}
</script>
<style lang="scss" scoped>
::v-deep img {
max-width: 100%;
height: auto;
}
.content {
background: #F2F2F2;
padding: 22rpx 24rpx;
// padding-bottom: 140rpx;
.detailBox {
background-color: #FFFFFF;
border-top-left-radius: 20rpx;
border-top-right-radius: 20rpx;
padding: 40rpx 20rpx;
.detail_top {
font-size: 28rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
}
.detail_time {
text-align: right;
font-size: 20rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
}
.detail_content {
font-size: 24rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
}
}
}
</style>