123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- <template>
- <view class="container">
- <view class="message" v-for="(item,index) in messageList" :key="item.id" @click="setRead(item,0)">
- <view class="message-cons">
- <view class="flex align_center justify_between">
- <view class="messageTitle">{{item.notice.title}}</view>
- <view class="message-right">
- <view>
- <span v-if="item.readFlag==0" class="message-unread">未读</span>
- <span v-if="item.readFlag==1" class="message-readed">已读</span>
- </view>
- <uni-icon color="rgba(157, 168, 181, 1)" name="arrow-right"></uni-icon>
- </view>
- </view>
- <view class="ellipsis-one message-info">
- {{item.notice.plainContent}}
- </view>
- <view class="flex align_center justify_between">
- <view class="messageTime flex_1">{{item.notice.releaseDate}}</view>
- <view v-if="item.notice.type == 'tx'">
- <u-button @click.stop="setRead(item,1)" shape="circle" plain size="mini" type="primary">
- {{ item.notice.extInfo.bizType == 'SHELF_REPLENISH' ? '立即处理':'点击查看' }}
- </u-button>
- </view>
- </view>
- </view>
- </view>
- <view class="nodata">
- <u-empty :src="`/static/${$config('themePath')}/def_no_data@3x.png`" :margin-top="100" icon-size="150" text="暂无数据" img-width="120" v-if="messageList.length==0 && status!='loading'" mode="list"></u-empty>
- <u-loadmore :load-text="$config('loadText')" class="loadmore" v-if="total>pageSize || status=='loading'" :status="status" />
- </view>
- </view>
- </template>
- <script>
- import {getMessage,hasRead,setReadAllNotice} from "@/api/user.js"
- export default{
- data(){
- return{
- messageList:[],
- pageNo: 1,
- pageSize: 10,
- total: 0,
- status: 'loadmore'
- }
- },
- computed: {
- wsMessage() {
- return this.$store.state.vuex_messagUnReadCount
- },
- },
- watch: {
- // 有新消息时刷新列表
- wsMessage(newValue, oldValue) {
- this.pageInit()
- }
- },
- onNavigationBarButtonTap(e) {
- uni.showLoading({
- mask:true,
- title: '正在设置...'
- })
- setReadAllNotice().then(res => {
- if(res.status == 200){
- uni.hideLoading()
- this.pageInit()
- }
- })
- },
- methods:{
- pageInit(){
- this.messageList = []
- this.total = 0
- this.pageNo = 1
- this.getMessageList()
- },
- filterHtml(str) {
- return str?str.replace(/<.*?>/g,""):""
- },
- // 获取数据列表
- getMessageList(){
- this.status = "loading"
- getMessage({
- pageNo: this.pageNo,
- pageSize: this.pageSize
- }).then(res => {
- if (res.status == 200) {
- res.data.list.map(item => {
- if(item.notice.type == 'tx'){
- item.notice.extInfo = JSON.parse(item.notice.extInfo)
- }
- })
-
- if(this.pageNo>1){
- this.messageList = this.messageList.concat(res.data.list || [])
- }else{
- this.messageList = res.data.list || []
- }
- this.total = res.data.count || 0
- } else {
- this.messageList = []
- this.total = 0
- uni.showToast({
- title: res.message ? res.message : '网络似乎出错了,请稍后再试',
- icon: "none"
- })
- }
- this.status = "loadmore"
- })
- },
- setRead(data,type){
- //设置为已读
- if (data.readFlag==0){
- hasRead({msg_id: data.id}).then(res => {
- // 刷新列表
- if (res.status == 200){
- data.readFlag = 1
- this.messageList.splice()
- }
- })
- }
- // 跳转
- if(data.notice&&data.notice.type == 'tx' && type == 1){
- this.toAction(data)
- }else{
- this.goToMessageDetail(data)
- }
- },
- // 查看详细
- goToMessageDetail(data){
- // 跳转到详细页
- uni.navigateTo({
- url:'./xtNoticeDetail/xtNoticeDetail?id='+ data.noticeId
- })
- },
- toAction (data) {
- // 急送订单
- if (data.notice.extInfo.bizType == 'TEMP_ORDER') {
- uni.navigateTo({ url: '/pages/sales/edit?pageType=detail&data='+JSON.stringify({ salesBillSn: data.notice.extInfo.bizSn }) })
- }
- // 补货订单
- if (data.notice.extInfo.bizType == 'SHELF_REPLENISH') {
- // uni.navigateTo({ url: '/pages/replenishmentManage/replenishmentList?billState=All' })
- uni.navigateTo({url: '/pages/soldOut/shelfList'})
- }
- // 货架订单
- if (data.notice.extInfo.bizType == 'SHELF_ORDER') {
- uni.navigateTo({ url: '/pages/shelfOrder/orderDetail?pageType=detail&orderBillSn='+data.notice.extInfo.bizSn })
- }
- // 货架异常
- if (data.notice.extInfo.bizType == 'SHELF_WARN') {
- const shelfName = data.notice.plainContent.split('已经超过')[0]
- uni.navigateTo({ url: '/pages/shelfOrder/shelfOrder?bizType=SHELF_WARN&shelfSn='+data.notice.extInfo.bizSn+'&shelfName='+shelfName })
- }
- },
- },
- onLoad() {
- this.pageInit()
- },
- // scroll-view到底部加载更多
- onReachBottom(){
- console.log('到底部加载更多')
- if(this.messageList.length < this.total){
- this.pageNo += 1
- this.getMessageList()
- }else{
- this.status = "nomore"
- }
- },
- }
- </script>
- <style lang="less">
- .container{
- width:100%;
- font-size: 28rpx;
- .message{
- background-color: #FFFFFF;
- padding: 25upx 30upx;
- margin: 25upx;
- border-radius: 30upx;
- box-shadow: 1px 1px 3px #EEEEEE;
- display: flex;
- align-items: center;
- .message-cons{
- flex-grow: 1;
- width: 50%;
- .messageTitle{
- font-size: 30rpx;
- padding-right: 30upx;
- }
- .message-info{
- font-size: 26rpx;
- color: #666;
- margin-top: 10rpx;
- margin-bottom: 10rpx;
- }
- .messageTime{
- font-size: 26rpx;
- color:#989898;
- }
- }
- .message-right{
- display: flex;
- align-items: center;
- font-size: 24upx;
- text-align: right;
- padding-left: 50upx;
- .message-unread{
- color: #FA3534;
- }
- .message-readed{
- color: #999;
- }
- }
- }
- }
-
- </style>
|