小程序 自定义(定时)滚动刷新内容-轮播图

2021-10-25  本文已影响0人  web30
有预约消息效果,(41分钟就是Math.floor取整结果) 没有预约消息效果
<!-- 就诊动态 begin-->
  <view class="medical-visits">
    <image src="https://xx/medical-visits.png" class="medical-img"></image>
    // 动态信息用轮播图展示
    <swiper wx:if="{{notifyArr.length > 1}}" 
      autoplay 
      circular 
      vertical 
      interval="10000" 
      display-multiple-items="2" 
      class="medical-scroll">
      <swiper-item class="medical-info" wx:for="{{notifyArr}}" wx:key="index">
        <text class="medical-interval">{{item.interval}}</text>
        <text class="medical-content">{{item.content}}</text>
      </swiper-item>
    </swiper>
    <view wx:elif="{{notifyArr.length == 1}}" class="medical-scroll">
      <view class="medical-info single">
        <text class="medical-interval">{{notifyArr[0].interval}}</text>
        <text class="medical-content">{{notifyArr[0].content}}</text>
      </view>
    </view>
    <view wx:else class="medical-scroll">
      <view class="medical-info single">
        <text class="medical-content">暂无就诊动态</text>
      </view>
    </view>
  </view>
  <!-- 就诊动态 end-->
page({
  data:{
    notifyArr: [], // 就诊动态消息列表
    notifyRefreshTimer: null, // 刷新就诊动态消息列表定时器
  },

/**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 每隔3秒刷新一次(根据需求自行设置)
    this.data.notifyRefreshTimer = setInterval(() => {
      this.getNotifyList()
    }, 30000)
  },

/**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    clearInterval(this.data.notifyRefreshTimer)
  },

// 获取就诊动态消息列表
  getNotifyList() {
    $http.request('/api/xxxx', {
      pageNo: 1,
      pageSize: 10
    }, 'GET').then(res => {
      if (res.success) {
        const notifyArr = res.data.data.map(item => {
          const fssj = new Date(item.fssj), 
          now = new Date()
          let interval = now - fssj  // 当前时间 - 预约时间
          if(interval < 60 * 1000) {
            interval = '刚刚'
          } else if(interval < 60 * 60 * 1000) {
            // Math.floor()可以获得一个数的整数部分,而不是四舍五入
            interval = Math.floor(interval / (60 * 1000)) + '分钟前'
          } else if(interval < 24 * 60 * 60 * 1000) {
            interval = Math.floor(interval / (60 * 60 * 1000)) + '小时前'
          } else {
            interval = Math.floor(interval / (24 * 60 * 60 * 1000)) + '天前'
          }
          return {
            content: item.nr,
            interval
          }
        })
        this.setData({
          notifyArr
        })
      } else {
        this.setData({
          notifyArr: []
        })
        wx.showToast({
          title: res.message,
          icon: 'none'
        })
      }
    })
  },
})
.medical-visits{
  background: #FFFFFF;
  border-radius: 10rpx;
  margin: 85rpx 30rpx 0;
  display: flex;
  align-items: center;
  padding: 20rpx 30rpx;
}
.medical-img{
  width: 63rpx;
  height: 66rpx;
  margin-right: 30rpx;
  border-right: 1rpx solid #DCDCDC;
  padding-right: 20rpx;
}

.medical-scroll{
  flex: 1;
  overflow: hidden;
  height: 90rpx;
}
.medical-info{
  height: 45rpx;
  display: flex;
  align-items: center;
}
.medical-info.single {
  height: 90rpx;
}
.medical-interval{
  font-size: 24rpx;
  border-radius: 8rpx;
  background: #FEEBD7;
  color: #FF8A00;
}
.medical-content{
  flex: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 26rpx;
  color: #333333;
  padding-left: 20rpx;
}
上一篇下一篇

猜你喜欢

热点阅读