439 lines
9.9 KiB
Vue
439 lines
9.9 KiB
Vue
<template>
|
|
<view>
|
|
<u-navbar title="互动消息" :border-bottom="false"></u-navbar>
|
|
<u-tabs-swiper ref="uTabs" :list="tabList" :current="current" :is-scroll="false"
|
|
:active-item-style="{ color: '#3CB5FB', fontSize: '0.15rem' }" :bar-style="{ background: '#3CB5FB' }"
|
|
@change="tabsChange"></u-tabs-swiper>
|
|
<scroll-view scroll-y="true" class="scroll">
|
|
<view class="flex-col list" v-if='list.length'>
|
|
<template v-for="(item, i) in list">
|
|
<view v-if='item.interType != 3' class="list-item flex-col section_4" :key="i">
|
|
<view class="image_2 flex-row view_14">
|
|
<u-avatar :src="$u.http.config.imgUrl + item.userHead"
|
|
@click='toDetil(item.interUserId)' class="image_2"></u-avatar>
|
|
<view class="flex-col group_2">
|
|
<view class="flex-row group_3">
|
|
<text class="text_16">{{ item.interUserName }}</text>
|
|
<text class="text_18">{{ item.interDate }}</text>
|
|
</view>
|
|
<view class="right-text-wrapper">
|
|
<text v-if="item.interType == 0">点赞了你的作品</text>
|
|
<text v-if="item.interType == 1">收藏了你的作品</text>
|
|
<text v-if="item.interType == 2">转发了你的作品</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="bottom-section flex-row">
|
|
<image v-if='item.dynamicHead' :src="$u.http.config.imgUrl + item.dynamicHead.split(',')[0]"
|
|
class="image_4" />
|
|
<text v-if="item.interType == 0" class="text_6">{{ item.commentContent }}</text>
|
|
<text v-if="item.interType == 1" class="text_6">{{ item.dynamicTitle }}</text>
|
|
<text v-if="item.interType == 2" class="text_6">{{ item.dynamicTitle }}</text>
|
|
</view>
|
|
<view class="flex-row group_4">
|
|
</view>
|
|
</view>
|
|
<view v-else class="list-item flex-col section_4">
|
|
<view class="top-group flex-row view_13">
|
|
<view class="image_2 flex-row view_14">
|
|
<u-avatar :src="$u.http.config.imgUrl + item.userHead"
|
|
@click='toDetil(item.interUserId)' class="image_2"></u-avatar>
|
|
<view class="flex-col group_2">
|
|
<view class="flex-row group_3">
|
|
<text class="text_16">{{ item.interUserName }}</text>
|
|
<!-- <view class="flex-col items-center text-wrapper_1">
|
|
<text>{{ item.commentContent == '【我的评论】' ? '评论' : '回复' }}了</text>
|
|
</view> -->
|
|
<text class="text_18">{{ item.interDate }}</text>
|
|
</view>
|
|
<text class="text_20">{{ item.commentContent == '【我的评论】' ? '评论' :
|
|
'回复' }}了你:{{ item.content }}</text>
|
|
</view>
|
|
</view>
|
|
<!-- <view class="right-group flex-col items-center view_15">
|
|
<text class="top-group_2">回复</text>
|
|
</view> -->
|
|
</view>
|
|
|
|
<view class="bottom-section flex-row">
|
|
<text v-if="item.commentContent == '【我的评论】'" class="text_6">{{ item.dynamicTitle }}</text>
|
|
<text v-else class="text_6">{{ item.commentContent }}</text>
|
|
</view>
|
|
<view class="flex-row group_4">
|
|
<!-- <image
|
|
src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/6216dee45a7e3f031061d0f1/621c59e162a7d90011002985/16460348611151830106.png"
|
|
class="image_11" />
|
|
<text class="text_22">还有10条评论 ></text> -->
|
|
</view>
|
|
</view>
|
|
</template>
|
|
</view>
|
|
<view v-else style='padding-top:30vh'>
|
|
<!-- <u-empty text="暂无消息列表" mode="message"></u-empty> -->
|
|
<no-data text="暂无消息列表"></no-data>
|
|
</view>
|
|
</scroll-view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import NoData from 'components/NoData.vue'
|
|
export default {
|
|
components: {
|
|
NoData
|
|
},
|
|
data() {
|
|
return {
|
|
list: [],
|
|
tabList: [
|
|
{
|
|
name: "全部",
|
|
},
|
|
{
|
|
name: "评论",
|
|
},
|
|
{
|
|
name: "点赞",
|
|
},
|
|
{
|
|
name: "收藏",
|
|
},
|
|
{
|
|
name: "转发",
|
|
},
|
|
],
|
|
current:0,
|
|
};
|
|
},
|
|
onLoad() {
|
|
this.getList(-1)
|
|
//接收互动消息
|
|
this.$connection.on("InteractMessage", (data, type) => {
|
|
if (this.route.indexOf('interactionList') >= 0) {
|
|
this.list.unshift(data.data)
|
|
}
|
|
});
|
|
},
|
|
onShow() {
|
|
if (this.vuex_msgList) {
|
|
var msgList = this.vuex_msgList;
|
|
msgList = msgList.replace('InteractMessage,', '')
|
|
this.$u.vuex('vuex_msgList', msgList)
|
|
if (!msgList) {
|
|
var tab = this.vuex_tabbar;
|
|
tab[1].isDot = false;
|
|
this.$u.vuex('vuex_tabbar', tab);
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
// tabschange
|
|
tabsChange(i) {
|
|
// this.current 0=全部 1=评论 2=点赞 3=收藏 4=转发
|
|
if (this.current !== i) {
|
|
this.current = i;
|
|
if (this.current == 0) {
|
|
this.getList(-1)
|
|
} else if (this.current == 1) {
|
|
this.getList(3)
|
|
} else {
|
|
this.getList(this.current - 2);
|
|
}
|
|
|
|
}
|
|
},
|
|
//type 0=点赞 1=收藏 2=转发 3=评论
|
|
getList(type) {
|
|
this.$u.api.getinteractionList(type).then(res => {
|
|
this.list = res
|
|
})
|
|
},
|
|
//返回上一级
|
|
router() {
|
|
uni.switchTab({
|
|
url: '../../message/msgList/msgList'
|
|
})
|
|
},
|
|
toDetil(id) {
|
|
this.$u.route({
|
|
url: '/pages/AlumniCircle/userDetail/userDetail?id=' + id
|
|
})
|
|
},
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.scroll {
|
|
background-color: rgb(246, 247, 250);
|
|
width: 100%;
|
|
height: calc(100vh - 0.44rem);
|
|
}
|
|
|
|
.list-item {
|
|
padding: 0 0.14rem 0.17rem;
|
|
background-color: rgb(255, 255, 255);
|
|
border-radius: 0.1rem;
|
|
margin-top: 0.1rem;
|
|
}
|
|
|
|
.list-item:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.top-group {
|
|
padding: 0.12rem 0 0.085rem;
|
|
}
|
|
|
|
.bottom-section {
|
|
margin-top: 10rpx;
|
|
margin-right: 0.055rem;
|
|
padding: 0.07rem 0.025rem 0.08rem 0.14rem;
|
|
color: rgb(54, 54, 54);
|
|
font-size: 0.12rem;
|
|
// letter-spacing: 0.012rem;
|
|
white-space: nowrap;
|
|
background-color:#F6F8F9;
|
|
border-radius: 24rpx;
|
|
// margin-left: 0.5rem;
|
|
width: 100%;
|
|
}
|
|
|
|
.image_2 {
|
|
margin-bottom: 0.025rem;
|
|
width: 0.4rem;
|
|
height: 0.4rem;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.right-group {
|
|
// margin-left: 0.12rem;
|
|
// margin-top: 0.05rem;
|
|
}
|
|
|
|
.image_4 {
|
|
width: 0.35rem;
|
|
height: 0.35rem;
|
|
}
|
|
|
|
.text_6 {
|
|
margin-left: 0.025rem;
|
|
align-self: center;
|
|
overflow: hidden;
|
|
max-width: 84%;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.top-group_1 {
|
|
color: rgb(2, 2, 2);
|
|
font-size: 0.15rem;
|
|
line-height: 0.14rem;
|
|
letter-spacing: 0.015rem;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.text_4 {
|
|
margin-left: 0.02rem;
|
|
margin-top: 0.085rem;
|
|
color: rgb(177, 179, 182);
|
|
font-size: 0.12rem;
|
|
line-height: 0.12rem;
|
|
letter-spacing: 0.012rem;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.text_1 {
|
|
// margin: 0.02rem 0;
|
|
color: rgb(2, 2, 2);
|
|
font-size: 0.15rem;
|
|
// line-height: 0.14rem;
|
|
letter-spacing: 0.015rem;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.right-text-wrapper {
|
|
// margin-left: 0.015rem;
|
|
padding: 0.03rem 0 0.04rem;
|
|
// color: rgb(46, 155, 255);
|
|
font-size: 0.12rem;
|
|
// line-height: 0.12rem;
|
|
// letter-spacing: 0.012rem;
|
|
white-space: nowrap;
|
|
// background-color: rgba(46, 155, 255, 0.1);
|
|
border-radius: 0.09rem;
|
|
// width: 0.65rem;
|
|
height: 0.18rem;
|
|
color: #000;
|
|
font-size: 24rpx;
|
|
}
|
|
|
|
.list {
|
|
padding: 0.14rem 0.14rem 0.14rem 0.15rem;
|
|
}
|
|
|
|
.view_2 {
|
|
color: initial;
|
|
font-size: initial;
|
|
line-height: initial;
|
|
letter-spacing: initial;
|
|
white-space: initial;
|
|
}
|
|
|
|
.top-group {
|
|
padding: 0.12rem 0 0.085rem;
|
|
}
|
|
|
|
.image_2 {
|
|
margin-bottom: 0.025rem;
|
|
width: 0.4rem;
|
|
height: 0.4rem;
|
|
}
|
|
|
|
.right-group {
|
|
// margin-left: 0.12rem;
|
|
// margin-top: 0.05rem;
|
|
}
|
|
|
|
.section_4 {
|
|
padding: 0.15rem 0.16rem 0;
|
|
margin-top: 0.1rem;
|
|
}
|
|
|
|
.view_13 {
|
|
padding: initial;
|
|
}
|
|
|
|
.text_20 {
|
|
margin-right: initial;
|
|
padding: initial;
|
|
align-self: initial;
|
|
background-color: initial;
|
|
// margin-left: 0.53rem;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
width: 80%;
|
|
font-size: 24rpx;
|
|
color: rgba(0, 0, 0, 0.9);
|
|
|
|
}
|
|
|
|
.text-wrapper_2 {
|
|
margin-right: 0.05rem;
|
|
margin-top: 0.1rem;
|
|
padding: 0.18rem 0 0.2rem;
|
|
color: rgb(54, 54, 54);
|
|
font-size: 0.12rem;
|
|
line-height: 0.12rem;
|
|
letter-spacing: 0.012rem;
|
|
white-space: nowrap;
|
|
background-color: rgb(246, 247, 250);
|
|
max-width: 84%;
|
|
min-width: 84%;
|
|
margin-left: 0.53rem;
|
|
}
|
|
|
|
.group_4 {
|
|
padding: 0.1rem 0.52rem 0.1rem;
|
|
color: rgb(177, 179, 182);
|
|
font-size: 0.12rem;
|
|
line-height: 0.12rem;
|
|
letter-spacing: 0.012rem;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.view_14 {
|
|
margin-bottom: initial;
|
|
width: initial;
|
|
height: initial;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.view_15 {
|
|
margin-left: 0.2rem;
|
|
margin-top: initial;
|
|
margin-right: 0.07rem;
|
|
padding: 0.07rem 0;
|
|
color: rgb(255, 255, 255);
|
|
font-size: 0.12rem;
|
|
line-height: 0.12rem;
|
|
white-space: nowrap;
|
|
background-color: rgb(46, 155, 255);
|
|
border-radius: 0.13rem;
|
|
width: 0.56rem;
|
|
height: 0.25rem;
|
|
}
|
|
|
|
.view_15:active {
|
|
background: #fff;
|
|
color: rgb(46, 155, 255);
|
|
border: 1px solid rgb(46, 155, 255);
|
|
}
|
|
|
|
.text_21 {
|
|
margin-left: 0.14rem;
|
|
margin-right: 0.12rem;
|
|
max-width: 100%;
|
|
text-overflow: ellipsis;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.image_11 {
|
|
width: 0.2rem;
|
|
height: 0.2rem;
|
|
}
|
|
|
|
.text_22 {
|
|
margin: 0.05rem 0 0.04rem 0.09rem;
|
|
}
|
|
|
|
.image_10 {
|
|
width: 0.4rem;
|
|
height: 0.4rem;
|
|
}
|
|
|
|
.group_2 {
|
|
margin-left: 0.11rem;
|
|
margin-bottom: 0.045rem;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.group_3 {
|
|
padding-left: 0.01rem;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.text_18 {
|
|
// margin-top: 0.055rem;
|
|
color: rgb(177, 179, 182);
|
|
font-size: 0.12rem;
|
|
// line-height: 0.12rem;
|
|
// letter-spacing: 0.012rem;
|
|
white-space: nowrap;
|
|
margin-left: 10rpx;
|
|
}
|
|
|
|
.text_16 {
|
|
margin-bottom: 0.03rem;
|
|
color: rgb(2, 2, 2);
|
|
font-size:28rpx;
|
|
// line-height: 0.14rem;
|
|
// letter-spacing: 0.015rem;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.text-wrapper_1 {
|
|
margin-left: 0.04rem;
|
|
padding: 0.03rem 0 0.04rem;
|
|
color: rgb(46, 155, 255);
|
|
font-size: 0.12rem;
|
|
line-height: 0.12rem;
|
|
letter-spacing: 0.012rem;
|
|
white-space: nowrap;
|
|
background-color: rgba(46, 155, 255, 0.1);
|
|
border-radius: 0.09rem;
|
|
width: 0.65rem;
|
|
height: 0.18rem;
|
|
}
|
|
</style>
|