<template> <view class="container"> <!-- <view class="top"> 普及培训 </view> --> <swiper class="swiper-box" duration="300" @change="changeTab"> <swiper-item class="tab-content"> <scroll-view class="list-scroll-content" scroll-y> <!-- 空白页 --> <empty v-if="loaded && list.length === 0"></empty> <!-- 订单列表 --> <view class="order-item" @click="ToDetail(item)" v-for="(item, index) in list" :key="index"> <view class="list-cell"> <image class="image" :src="baseURL + item.image"></image> <view class="list-tpl">{{ item.title }}</view> <view class="list-tip">{{ item.info }}</view> <view class="info-box"> <view class="list-info"> <image src="../../static/img/time.png" mode=""></image> <view class="list-font"> 开始时间:{{ item.reg_start }} </view> </view> <view class="list-info"> <image src="../../static/img/time.png" mode=""></image> <view class="list-font"> 结束时间:{{ item.reg_end }} </view> </view> <view class="flex"> <view class="list-info" style="width: 50%;"> <image src="../../static/img/people.png" mode=""></image> <view class="list-font"> 当前报名人数:{{ item.number }} </view> </view> <view class="list-info" style="width: 50%;"> <image src="../../static/img/people.png" mode=""></image> <view class="list-font"> 最大报名人数:{{ item.max_number || 0 }} </view> </view> </view> </view> </view> </view> </scroll-view> </swiper-item> </swiper> </view> </template> <script> import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue'; import empty from '@/components/empty'; import uniPopup from '@/components/uni-popup/uni-popup.vue'; import { training } from '@/api/index.js'; import { mapState, mapMutations } from 'vuex'; export default { components: { uniLoadMore, empty, uniPopup }, data() { return { page: 1, //当前页数 limit: 6, //每次信息条数 list: [], loadingType: 'more' ,//加载更多状态 loaded: false }; }, computed: { ...mapState(['baseURL']) }, onLoad() { console.log(22); this.loadData(); }, onReachBottom() { this.loadData(); }, methods: { //获取订单列表 loadData(type) { let obj = this; if(obj.loadingType == 'loading' || obj.loadingType == 'noMore') { return } obj.loadingType = 'loading' training({ page: obj.page, limit: obj.limit, }) .then(data => { data.data.forEach(item => {}); let arr = data.data; obj.list = obj.list.concat(arr); obj.page++; if (obj.limit == arr.length) { obj.loadingType = 'more'; } else { obj.loadingType = 'noMore'; } obj.loaded = true }) .catch(e => { obj.loadingType = 'noMore'; }); }, //跳转到详情 ToDetail(e) { let type = e.type; let id = e.id; // console.log(e.) if(e.is_create) { uni.showModal({ title: '提示', content: '您已报名,无需再次报名' }) return } uni.navigateTo({ url: '/pages/train/sign?id=' + id }); } } }; </script> <style lang="scss"> page { background: #f2f2f2; height: 100%; padding-bottom: 25rpx; } .container { height: 100%; .top { background-color: #ffffff; height: 88rpx; display: flex; align-items: center; justify-content: center; font-size: 36rpx; font-weight: 500; color: #333333; } .swiper-box { height: 100%; .list-scroll-content { height: 100%; } } } .scroll-list { width: 100%; overflow: hidden; white-space: nowrap; background-color: #ffffff; font-size: 32rpx; .scoll-box { text-align: center; display: inline-block; margin: 0rpx 38rpx; padding: 15rpx 0rpx; .scoll-img { width: 130rpx; height: 85rpx; border-radius: 100%; image { width: 85rpx; height: 100%; border-radius: 100%; } } .scoll-name { padding-top: 15rpx; } &.active { color: #ef3d28; border-bottom: 6rpx solid #ef3d28; } } } .order-item { width: 100%; padding: 0rpx 25rpx; padding-top: 25rpx !important; .list-cell { background-color: #ffffff; border-radius: 20rpx; width: 100%; box-shadow: 0px 0px 40px 0px rgba(0, 0, 0, 0.06); .image { width: 100%; height: 300rpx; border-top-left-radius: 25rpx; border-top-right-radius: 25rpx; } .list-tpl { padding: 25rpx 25rpx; padding-bottom: 0rpx !important; font-size: 34rpx; color: #222222; font-weight: 500; } .list-tip { padding: 10rpx 25rpx 35rpx; font-size: 24rpx; color: #b4b4b4; } .info-box { padding: 0 25rpx 35rpx; .list-info { margin-top: 10rpx; display: flex; justify-content: flex-start; align-items: center; image{ width: 24rpx; height: 24rpx; } .list-font { margin-left: 6rpx; font-size: 24rpx; } } } } } </style>