glhcp/uniapp/pages/notice/notice.vue

91 lines
2.0 KiB
Vue

<template>
<view class="notice">
<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :up="upOption">
<view v-for="(item, index) in lists" :key="index" class="notice-item bg-white">
<view class="flex row-between item-header">
<view class="header-title md bold">{{item.title}}</view>
<view class="header-time muted xs">{{item.create_time}}</view>
</view>
<view class="item-main m-t-24">
<view class="content sm lighter">{{item.content}}</view>
</view>
</view>
</mescroll-body>
</view>
</template>
<script>
import {
getNoticeLists
} from '@/api/store';
import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins";
export default {
mixins: [MescrollMixin],
data() {
return {
lists: [],
upOption: {
empty: {
icon: '/static/images/news_null.png',
tip: "暂无消息通知~",
}
},
};
},
onLoad() {
this.type = this.$Route.query.type;
switch (this.type) {
case "system":
uni.setNavigationBarTitle({
title: '系统通知'
});
break;
case "earning":
uni.setNavigationBarTitle({
title: '收益通知'
});
break;
}
},
methods: {
upCallback(page) {
getNoticeLists({
page_size: page.size,
page_no: page.num,
type: this.type
}).then(({
data
}) => {
if (page.num == 1) this.lists = [];
const curPageData = data.list;
const curPageLen = curPageData.length;
const hasNext = !!data.more;
this.lists = this.lists.concat(curPageData);
this.mescroll.endSuccess(curPageLen, hasNext);
}).catch(() => {
this.mescroll.endErr()
})
},
}
};
</script>
<style lang="scss">
.notice {
overflow: hidden;
.notice-item {
padding: 0 20rpx 30rpx;
border-radius: 10rpx;
margin: 20rpx 20rpx 0;
.item-header {
padding: 19rpx 0;
border-bottom: $-solid-border;
}
}
}
</style>