NurseStationPersonAppletUl/pages/Videolearning/Videolearning.vue
2023-04-24 10:49:20 +08:00

279 lines
5.9 KiB
Vue

<template>
<view class="app">
<view class="card">
<view class="item" v-for='(item,index) in list' :key="index" @click.stop='goVideolearningdetails(item)'>
<image :src="baseurl + item.trainingItemCoverUrl" mode=""></image>
<view class="title">
{{item.trainingItemTitle}}
</view>
<view class="price" v-if="item.trainingItemPrice">
{{item.trainingItemPrice}}
</view>
<view class="price" v-else>
0
</view>
<view class="buy" v-if='!item.trainingOrderStatus' @click.stop='buy(item)'>
购买
</view>
<view class="havebuy" v-else>
已购
</view>
</view>
</view>
<u-popup v-model="buyshow" mode='bottom' height='500' class='popup' safe-area-inset-bottom>
<view class="popuptitle">请选择支付方式</view>
<view class="buyselect">
<image src="../../static/wechat.png" mode=""></image>
<view class="text">
微信支付
</view>
</view>
<view class="buybtn" @tap='tobuy'>
确认支付¥{{buylist.trainingItemPrice}}
</view>
</u-popup>
<u-toast ref="uToast" />
</view>
</template>
<script>
import {
personTrainingItem,
trainingItemOrder
} from '@/api/Videolearning/index.js'
import baseurl from '@/api/baseurl.js'
export default {
data() {
return {
buyshow: false,
baseurl: undefined,
pageNum: 1,
pageSize: 10,
trainingCategoryId: undefined,
nurseStationPersonId: undefined,
list: [],
total: 0,
buylist: {},
};
},
onLoad(options) {
const that = this
// this.trainingCategoryId = options.trainingCategoryId
this.trainingCategoryId = 2
this.baseurl = baseurl
const value = uni.getStorageSync('nursePersonId');
if (value) {
// that.nurseStationPersonId = value
that.nurseStationPersonId = 61
that.info();
} else {}
},
methods: {
//购买
tobuy() {
var obj = {
"trainingItemIdList": [],
"nurseStationId": undefined,
"nurseStationPersonId": undefined,
"trainingOrderAmount": undefined,
"nursePersonName": undefined
}
obj.nurseStationId = uni.getStorageSync('nurseStationId');
obj.nursePersonName = uni.getStorageSync('nursePersonName');
obj.trainingItemIdList.push(this.buylist.trainingItemId)
obj.nurseStationPersonId = this.nurseStationPersonId
obj.trainingOrderAmount = this.buylist.trainingItemPrice
trainingItemOrder(obj).then(res => {
if (res.code == 200) {
this.buyshow = false
this.$refs.uToast.show({
title: '支付成功',
type: 'success',
duration: '1500'
})
}
})
},
//打开购买弹框
buy(item) {
this.buylist = item
this.buyshow = true
},
//跳转视频学习详情
goVideolearningdetails(item) {
uni.navigateTo({
url: `/pages/Videolearningdetails/Videolearningdetails?list=${JSON.stringify(item)}`
})
},
info() {
personTrainingItem(this.pageNum, this.pageSize, this.trainingCategoryId, this.nurseStationPersonId).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, this.nurseStationPersonId).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;
.popup {
position: fixed;
bottom: 0;
.buyselect {
width: 100%;
height: 100rpx;
margin: 40rpx auto 0;
position: absolute;
top: 100rpx;
image {
position: absolute;
top: 50%;
left: 48rpx;
transform: translateY(-50%);
width: 70rpx;
height: 70rpx;
}
.text {
position: absolute;
left: 150rpx;
top: 50%;
transform: translateY(-50%);
line-height: 100rpx;
font-size: 32rpx;
}
}
.buybtn {
width: 70%;
height: 70rpx;
background: #4271B9;
border-radius: 5rpx;
line-height: 70rpx;
color: #fff;
text-align: center;
position: absolute;
bottom: 40rpx;
left: 15%;
}
.popuptitle {
width: 100%;
font-size: 41rpx;
text-align: center;
position: absolute;
top: 40rpx;
}
}
.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: 125rpx;
height: 55rpx;
background: #CDCDCD;
border-radius: 5rpx;
text-align: center;
line-height: 55rpx;
color: #FFFFFF;
position: absolute;
right: 15rpx;
bottom: 30rpx;
}
.buy {
width: 125rpx;
height: 55rpx;
background: #4271B9;
border-radius: 5rpx;
text-align: center;
line-height: 55rpx;
color: #FFFFFF;
position: absolute;
right: 15rpx;
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>