NurseStationPersonAppletUl/pages/Videolearning/Videolearning.vue

171 lines
3.4 KiB
Vue
Raw Normal View History

2023-04-21 15:44:00 +08:00
<template>
<view class="app">
<view class="card">
<view class="item" v-for='(item,index) in list' :key="index" @tap='goVideolearningdetails(item)'>
<image :src="baseurl + item.trainingItemCoverUrl" mode=""></image>
<view class="title">
{{item.trainingItemTitle}}
</view>
<!-- <view class="time">
观看至 5529
</view> -->
<view class="price">
{{item.trainingItemPrice}}
</view>
<view class="buy" v-if='!item.trainingOrderStatus'>
购买
</view>
<view class="havebuy" v-else>
已购
</view>
</view>
</view>
</view>
</template>
<script>
import {
personTrainingItem
} from '@/api/Videolearning/index.js'
import baseurl from '@/api/baseurl.js'
export default {
data() {
return {
baseurl: undefined,
pageNum: 1,
pageSize: 10,
trainingCategoryId: undefined,
list: [],
total: 0,
};
},
onLoad(options) {
this.baseurl = baseurl
this.trainingCategoryId = options.trainingCategoryId
this.info();
},
methods: {
//跳转视频学习详情
goVideolearningdetails(item) {
uni.navigateTo({
url: `/pages/Videolearningdetails/Videolearningdetails?list=${JSON.stringify(item)}`
})
},
info() {
personTrainingItem(this.pageNum, this.pageSize, 2).then(res => {
this.list = res.rows
this.total = res.total
})
},
},
onReachBottom() { //下滑加载
if (this.list.length >= this.total) {} else {
this.pageNum++
personTrainingItem(this.pageNum, this.pageSize, this.trainingCategoryId).then(res => {
res.rows.forEach(e => {
this.list.push(e)
})
})
}
},
onPullDownRefresh() { //下拉刷新
this.pageNum = 1
this.info();
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
},
}
</script>
<style lang="scss">
.app {
padding: 15rpx 0 0;
color: #000000;
.card {
width: 96%;
margin: 0 auto;
background: #FFFFFF;
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 5rpx;
.item {
width: 94%;
margin: 0 auto;
border-bottom: 1rpx solid #E6E6E6;
position: relative;
height: 200rpx;
image {
position: absolute;
top: 50%;
transform: translateY(-50%);
left: 15rpx;
width: 216rpx;
height: 136rpx;
}
.havebuy {
width: 115rpx;
height: 48rpx;
background: #CDCDCD;
border-radius: 5rpx;
text-align: center;
line-height: 48rpx;
color: #FFFFFF;
position: absolute;
right: 20rpx;
bottom: 30rpx;
}
.buy {
width: 115rpx;
height: 48rpx;
background: #4271B9;
border-radius: 5rpx;
text-align: center;
line-height: 48rpx;
color: #FFFFFF;
position: absolute;
right: 20rpx;
bottom: 30rpx;
}
.time {
font-size: 24rpx;
color: #666666;
position: absolute;
top: 120rpx;
left: 250rpx;
}
.price {
position: absolute;
top: 120rpx;
left: 250rpx;
font-size: 28rpx;
font-weight: 500;
color: #EA706A;
}
.title {
width: 281rpx;
position: absolute;
top: 35rpx;
left: 250rpx;
font-weight: 500;
font-size: 30rpx;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; //行数需设置
line-clamp: 2;
-webkit-box-orient: vertical;
}
}
}
}
</style>