366 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			366 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
<template>
 | 
						||
	<view class="content">
 | 
						||
		<cl-tabbar :current="1">
 | 
						||
 | 
						||
		</cl-tabbar>
 | 
						||
		<view class="tab">
 | 
						||
			<!-- <view v-for="(item, index) in tabList" :key="index" @click="isTab = item.value" class="tab_i"
 | 
						||
				:class="[isTab===item.value?'heng':'heng1']">
 | 
						||
				{{ item.label }}({{item.num}})
 | 
						||
			</view> -->
 | 
						||
		</view>
 | 
						||
		<template v-if="tableData.length>0">
 | 
						||
			<view class="contentList" v-for="item,index in tableData" :key="index">
 | 
						||
				<view class="flex_list">
 | 
						||
					<view>
 | 
						||
						<image class="email_icon" src="../../static/images/email1.png" mode=""></image>
 | 
						||
						<!-- <image v-if="isTab==2" class="email_icon" src="../../static/images/email2.png" mode=""></image>
 | 
						||
						<image v-if="isTab==3" class="email_icon" src="../../static/images/email3.png" mode=""></image> -->
 | 
						||
					</view>
 | 
						||
					<view class="right_content">
 | 
						||
						<template>
 | 
						||
							<view class="email_top">
 | 
						||
								<view class="etit1">{{ '平台公告' }}</view>
 | 
						||
								<!-- <view class="etit1" v-if="isTab==2">{{ '站内信' }}</view> -->
 | 
						||
								<view class="etit2">{{item.creationTime}}</view>
 | 
						||
							</view>
 | 
						||
							<view class="email_title">
 | 
						||
								{{item.title}}
 | 
						||
							</view>
 | 
						||
							<view class="email_neir" @click="clickhtml(item.content)" v-html="item.content">
 | 
						||
 | 
						||
							</view>
 | 
						||
 | 
						||
							<view class="email_find" @click="goDetail(isTab,item.pkId)">
 | 
						||
								{{ '查看详情' }} >
 | 
						||
							</view>
 | 
						||
						</template>
 | 
						||
						<!-- <template v-if="isTab==3">
 | 
						||
							<view class="email_top2">
 | 
						||
								<view class="etit1">{{item.idea}}</view>
 | 
						||
								<div v-if="item.type==1" class="kuang thetype1">{{ item.typeVal }}</div>
 | 
						||
								<div v-if="item.type==2" class="kuang thetype2">{{ item.typeVal }}</div>
 | 
						||
								<div v-if="item.type==3" class="kuang thetype3">{{ item.typeVal }}</div>
 | 
						||
								<div v-if="item.type==4" class="kuang thetype4">{{ item.typeVal }}</div>
 | 
						||
							</view>
 | 
						||
							<view class="etit3">{{item.creationTime}}</view>
 | 
						||
 | 
						||
							<view v-for="(aitem,aindex) in item.feedbackReplyList" :key="aindex">
 | 
						||
								<view class="email_title2">
 | 
						||
									{{ '系统回复' }}:
 | 
						||
								</view>
 | 
						||
								<view class="email_neir" @click="clickhtml(aitem.replyContent)"
 | 
						||
									v-html="aitem.replyContent">
 | 
						||
 | 
						||
								</view>
 | 
						||
								<view class="etit3">{{aitem.creationTime}}</view>
 | 
						||
							</view>
 | 
						||
						</template> -->
 | 
						||
					</view>
 | 
						||
				</view>
 | 
						||
			</view>
 | 
						||
		</template>
 | 
						||
		<u-empty v-else :text="'暂无信息'" mode="message" icon="http://cdn.uviewui.com/uview/empty/message.png">
 | 
						||
		</u-empty>
 | 
						||
	</view>
 | 
						||
</template>
 | 
						||
 | 
						||
<script>
 | 
						||
	import clTabbar from '@/components/cl-tabbar.vue'
 | 
						||
	import * as ema from '@/config/balance.js'
 | 
						||
	export default {
 | 
						||
		components: {
 | 
						||
			'cl-tabbar': clTabbar,
 | 
						||
		},
 | 
						||
		data() {
 | 
						||
			return {
 | 
						||
				tabList: [{
 | 
						||
					value: 1,
 | 
						||
					label: '平台公告',
 | 
						||
					num: 0,
 | 
						||
				}, 
 | 
						||
				// {
 | 
						||
				// 	value: 2,
 | 
						||
				// 	label:  '站内信',
 | 
						||
				// 	num: 0
 | 
						||
				// }, {
 | 
						||
				// 	value: 3,
 | 
						||
				// 	label:  '意见反馈',
 | 
						||
				// 	num: 0
 | 
						||
				// }
 | 
						||
			],
 | 
						||
				isTab: 1,
 | 
						||
				tableData: [],
 | 
						||
			}
 | 
						||
		},
 | 
						||
		watch: {
 | 
						||
			isTab(n, o) {
 | 
						||
				this.getDataList()
 | 
						||
			},
 | 
						||
		},
 | 
						||
		onLoad() {
 | 
						||
			uni.$on('tabChange', (isTab) => {
 | 
						||
				if (isTab === 3) {
 | 
						||
					// 从意见反馈跳转过来,isTab为3
 | 
						||
					this.isTab = 3
 | 
						||
				} else {
 | 
						||
					// 初始进入页面时将isTab设置为1
 | 
						||
					this.isTab = 1
 | 
						||
				}
 | 
						||
			});
 | 
						||
			this.getDataList();
 | 
						||
		},
 | 
						||
		onUnload() {
 | 
						||
			// 取消监听
 | 
						||
			// uni.$off('isTab');
 | 
						||
			uni.removeStorageSync('isTab');
 | 
						||
		},
 | 
						||
 | 
						||
		onShow() {
 | 
						||
 | 
						||
			this.getOthers()
 | 
						||
		},
 | 
						||
		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;
 | 
						||
			},
 | 
						||
			goDetail(index, pkId) {
 | 
						||
				if (index == 1) {
 | 
						||
					uni.navigateTo({
 | 
						||
						url: '/pages/email/noticeDetail?index=' + index + '&pkId=' + pkId
 | 
						||
					})
 | 
						||
				} else if (index == 2) {
 | 
						||
					uni.navigateTo({
 | 
						||
						url: '/pages/email/emailDetail?index=' + index + '&pkId=' + pkId
 | 
						||
					})
 | 
						||
				}
 | 
						||
			},
 | 
						||
			getOthers() {
 | 
						||
				ema.getNoticeCount().then(res => {
 | 
						||
					this.tabList.forEach(ele => {
 | 
						||
						if (ele.value == 1) {
 | 
						||
							ele.num = res.data.noticeNum
 | 
						||
						} else if (ele.value == 2) {
 | 
						||
							ele.num = res.data.stationNum
 | 
						||
						} else if (ele.value == 3) {
 | 
						||
							ele.num = res.data.feedbackNum
 | 
						||
						}
 | 
						||
					})
 | 
						||
				})
 | 
						||
			},
 | 
						||
			getDataList() {
 | 
						||
				if (this.isTab == 1 || this.isTab == 2) {
 | 
						||
					//公告1 站内信2
 | 
						||
					ema.getNoticeList({
 | 
						||
						functionType: this.isTab
 | 
						||
					}).then(res => {
 | 
						||
						this.tableData = res.rows;
 | 
						||
					})
 | 
						||
				} 
 | 
						||
				// else if (this.isTab == 3) {
 | 
						||
				// 	//意见列表
 | 
						||
				// 	ema.getFeedbackList().then(res => {
 | 
						||
				// 		this.tableData = res.rows;
 | 
						||
				// 	})
 | 
						||
				// }
 | 
						||
			}
 | 
						||
		},
 | 
						||
	}
 | 
						||
</script>
 | 
						||
 | 
						||
<style lang="scss" scoped>
 | 
						||
	::v-deep img {
 | 
						||
		max-width: 100%;
 | 
						||
		height: auto;
 | 
						||
	}
 | 
						||
 | 
						||
	.content {
 | 
						||
		background: #F2F2F2;
 | 
						||
		// height: 100vh;
 | 
						||
		padding-bottom: 140rpx;
 | 
						||
 | 
						||
		.tab {
 | 
						||
			display: flex;
 | 
						||
			align-items: center;
 | 
						||
			justify-content: space-around;
 | 
						||
			margin-bottom: 6rpx;
 | 
						||
			background-color: #FFFFFF;
 | 
						||
 | 
						||
			.tab_i {
 | 
						||
				text-align: center;
 | 
						||
				font-size: 28rpx;
 | 
						||
				font-family: PingFang SC;
 | 
						||
				font-weight: 400;
 | 
						||
				color: #333333;
 | 
						||
				white-space: nowrap;
 | 
						||
				display: flex;
 | 
						||
				flex-direction: column;
 | 
						||
				align-items: center;
 | 
						||
				padding: 24rpx 0;
 | 
						||
				// background-color: pink;
 | 
						||
 | 
						||
			}
 | 
						||
 | 
						||
			.heng {
 | 
						||
				border-bottom: 6rpx solid #005BAC;
 | 
						||
				color: #005BAC;
 | 
						||
 | 
						||
			}
 | 
						||
 | 
						||
			.heng {
 | 
						||
				color: #333333;
 | 
						||
			}
 | 
						||
 | 
						||
		}
 | 
						||
 | 
						||
		.contentList {
 | 
						||
			margin: 30rpx 24rpx 0 23rpx;
 | 
						||
			background-color: #ffffff;
 | 
						||
			padding: 40rpx 28rpx;
 | 
						||
			box-shadow: 0px 5rpx 5rpx 0px rgba(0, 0, 0, 0.05);
 | 
						||
			border-radius: 15rpx;
 | 
						||
 | 
						||
			.flex_list {
 | 
						||
				display: flex;
 | 
						||
 | 
						||
				.email_icon {
 | 
						||
					width: 42rpx;
 | 
						||
					height: 42rpx;
 | 
						||
					border-radius: 50%;
 | 
						||
				}
 | 
						||
 | 
						||
				.right_content {
 | 
						||
					width: 95%;
 | 
						||
 | 
						||
					// flex: 1;
 | 
						||
					.email_top {
 | 
						||
						display: flex;
 | 
						||
						align-items: center;
 | 
						||
						justify-content: space-between;
 | 
						||
 | 
						||
						.etit1 {
 | 
						||
							font-size: 26rpx;
 | 
						||
							font-family: Source Han Sans CN;
 | 
						||
							font-weight: 400;
 | 
						||
							color: #222222;
 | 
						||
						}
 | 
						||
 | 
						||
						.etit2 {
 | 
						||
							font-size: 22rpx;
 | 
						||
							font-family: Source Han Sans CN;
 | 
						||
							font-weight: 400;
 | 
						||
							color: #999999;
 | 
						||
						}
 | 
						||
					}
 | 
						||
 | 
						||
					.email_top2 {
 | 
						||
						display: flex;
 | 
						||
						align-items: center;
 | 
						||
 | 
						||
						.etit1 {
 | 
						||
							font-size: 26rpx;
 | 
						||
							font-family: Source Han Sans CN;
 | 
						||
							font-weight: 400;
 | 
						||
							color: #222222;
 | 
						||
						}
 | 
						||
 | 
						||
						.kuang {
 | 
						||
							border-radius: 5rpx;
 | 
						||
							// border: 2rpx solid #e25a60;
 | 
						||
							font-size: 16rpx;
 | 
						||
							padding: 5rpx;
 | 
						||
							// color: #e25a60;
 | 
						||
							margin-left: 16rpx;
 | 
						||
						}
 | 
						||
 | 
						||
						.thetype1 {
 | 
						||
							color: #1aa90e;
 | 
						||
							border: 2rpx solid #1aa90e;
 | 
						||
						}
 | 
						||
 | 
						||
						.thetype2 {
 | 
						||
							color: #D61820;
 | 
						||
							border: 2rpx solid #D61820;
 | 
						||
						}
 | 
						||
 | 
						||
						.thetype3 {
 | 
						||
							color: #FDA521;
 | 
						||
							border: 2rpx solid #FDA521;
 | 
						||
						}
 | 
						||
 | 
						||
						.thetype4 {
 | 
						||
							color: #1B8DDF;
 | 
						||
							border: 2rpx solid #1B8DDF;
 | 
						||
						}
 | 
						||
 | 
						||
 | 
						||
					}
 | 
						||
 | 
						||
					.etit3 {
 | 
						||
						font-size: 22rpx;
 | 
						||
						font-family: Source Han Sans CN;
 | 
						||
						font-weight: 400;
 | 
						||
						color: #999999;
 | 
						||
					}
 | 
						||
 | 
						||
					.email_title {
 | 
						||
						font-size: 28rpx;
 | 
						||
						font-family: Source Han Sans CN;
 | 
						||
						font-weight: 400;
 | 
						||
						color: #222222;
 | 
						||
						margin: 23rpx 0;
 | 
						||
					}
 | 
						||
 | 
						||
					.email_title2 {
 | 
						||
						font-size: 28rpx;
 | 
						||
						font-family: Source Han Sans CN;
 | 
						||
						font-weight: 400;
 | 
						||
						color: #07609F;
 | 
						||
						margin-top: 30rpx;
 | 
						||
					}
 | 
						||
 | 
						||
					.email_neir {
 | 
						||
						font-size: 24rpx;
 | 
						||
						font-family: Source Han Sans CN;
 | 
						||
						font-weight: 400;
 | 
						||
						color: #666666;
 | 
						||
						// overflow: auto;
 | 
						||
 | 
						||
 | 
						||
					}
 | 
						||
 | 
						||
					.email_find {
 | 
						||
						margin-top: 25rpx;
 | 
						||
						font-size: 22rpx;
 | 
						||
						font-family: Source Han Sans CN;
 | 
						||
						font-weight: 400;
 | 
						||
						color: #999999;
 | 
						||
					}
 | 
						||
				}
 | 
						||
			}
 | 
						||
		}
 | 
						||
	}
 | 
						||
</style> |