Files
jobslink-user-clent/pages/news/news.vue
18500206848 91172a730c 11
2024-02-02 14:44:30 +08:00

164 lines
2.8 KiB
Vue

<template>
<view class="body">
<view v-for="(value,key) in data" class="newsList" @click="goList(value)" :key="key">
<view class="newsIcon">
<image :src="value.icon" mode=""></image>
<view v-if="news.unread[value.id] > 0" class="point"></view>
</view>
<view class="newsListRight">
<view class="head">
<view class="head_left">
{{value.title}}
</view>
<view class="head_right" v-if="value.data.length > 0">
{{value.data[0][0][value.prop.time]}}
</view>
</view>
<view class="content" v-if="value.data.length > 0">
{{value.prop.desc(value)}}
</view>
</view>
</view>
<cs-button></cs-button>
</view>
</template>
<script>
import {
mapGetters
} from 'vuex'
export default {
data() {
return {
loading: false
}
},
onLoad() {},
onShow() {
if (!this.$store.state.user.token) {
uni.redirectTo({
url: "/pages/login/login"
})
} else {
uni.$emit('newsReadChange')
}
},
onPullDownRefresh() {
this.loading = true
this.$store.dispatch("newsInit").then(() => {
this.loading = false
uni.stopPullDownRefresh();
}).catch(() => {
this.loading = false
uni.stopPullDownRefresh();
})
},
methods: {
goList(item) {
if (item.data.length === 0) {
uni.showToast({
title: '暂无消息',
icon: 'none'
});
return
}
uni.navigateTo({
url: './newsList?type=' + item.id
})
}
},
computed: {
...mapGetters(['news']),
data() {
return this.news.data
}
}
}
</script>
<style>
.content {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #666666;
width: 560rpx;
overflow: hidden;
white-space: nowrap;
/*不换行*/
text-overflow: ellipsis;
/*超出部分文字以...显示*/
}
.head_right {
float: right;
font-family: PingFangSC-Regular;
font-size: 24rpx;
color: #CCCCCC;
}
.head_left {
float: left;
font-family: PingFangSC-Regular;
font-size: 36rpx;
color: #333333;
}
.head {
overflow: hidden;
width: 560rpx;
}
.newsListRight {
float: left;
width: 560rpx;
height: 50rpx;
line-height: 50rpx;
padding-left: 30rpx;
}
.newsList .newsIcon {
position: relative;
width: 100rpx;
height: 100rpx;
display: inline-block;
float: left;
}
.newsList image {
width: 100rpx;
height: 100rpx;
}
.newsList .point {
position: absolute;
top: 5rpx;
right: 10rpx;
width: 20rpx;
height: 20rpx;
background: red;
border-radius: 50%;
}
.newsList {
border-bottom: 1rpx solid #dddddd;
padding-bottom: 30rpx;
padding-right: 30rpx;
padding-top: 30rpx;
overflow: hidden;
display: flex;
align-items: center;
}
.body {
background-color: #fefefe;
padding-left: 30rpx;
width: 720rpx;
}
page {
background: #f6f6f6;
}
</style>