111 lines
2.4 KiB
Vue
111 lines
2.4 KiB
Vue
|
<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) {
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<D8BA><F3A3ACB5><EFBFBD>handleImageClick<63><6B><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ͼƬ
|
|||
|
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>
|