<template> <view class="content"> <view style="padding-top: 30rpx;"> <view class="item" v-for="(item,index) in myVlogList" :key="index"> <video class="video" :src="item.productUrl" :poster="item.thumbImageUrl" @error="error" object-fit="fill" play-btn-position="center" :id="index" @play="playing(index)"></video> <view class=""> <!-- <button v-if="item.shareNumber===0" :data-productUrl="item.productUrl" :data-productId="item.productId" class="btnn" open-type="share">分享下载</button> --> <!-- v-else --> <button class="btnn" @click="handPayment(item.productUrl,item.isPay,item.sellingPrice)">下载视频</button> <text class="price">¥<text>{{item.sellingPrice}}</text></text> </view> <view style="clear: both;"></view> </view> </view> </view> </template> <script> export default { data() { return { openid:'', myVlogList: [], //我的视频列表 merchantId: '', //景区id merchantIdOrder:'',//下单用merchantId merchantMessage:[],//景区基础参数 } }, onLoad(options) { this.merchantId = options.merchantId this.merchantIdOrder=options.merchantIdOrder||'z0015605022691a5945bbe463141668c' this.openid = uni.getStorageSync('openid') //获取openid this.getMyVlogList() this.mearchLoadList()//调用参数 }, onShow() { }, onUnload() { //退出页面 }, onHide() {}, onReady() {}, onShareAppMessage(res) { //分享 let productId = res.target.dataset.productid let productUrl= res.target.dataset.producturl if (res.from === 'button') { this.$request('wechatUser/myPage/updateVlogRecord', { productId, openid: uni.getStorageSync('openid') }).then(res => { if (res.code === '00') { this.getMyVlogList() } }) return { title: '胖丁旅行', type: 4, path: '/pages/vlog/share/share?url='+productUrl, } }else{ return { title: '胖丁旅行', type: 4, path: '/pages/vlog/vlogIndex/vlogIndex', } } }, methods: { getMyVlogList() { //获取景区vlog列表 this.$request('wechatUser/myPage/getVlogRecord', { openid: uni.getStorageSync('openid'), productType:0 }).then(res => { if (res.code === '00') { res.data.forEach(item => { //获取当前景区视频列表 if (this.merchantId === item.merchantId) { this.myVlogList = item.vlogList } }) } }) }, playing(e) { //控制只播放当前video this.myVlogList.forEach((item, index) => { if (e !== index) { uni.createVideoContext(index.toString()).pause() } }) }, handPayment(productUrl,isPay,sellingPrice){//当前视频是否需要支付下载费用 //isPay 0为未支付 1为已支付 if(isPay==0){//originalPrice 原价 sellingPrice售价 settlementPrice结算价 this.upLoad(sellingPrice,productUrl) }else{ this.handleDownload(productUrl) } }, upLoad(sellingPrice,productUrl){//下单 var data = { companyId:this.merchantMessage[0].companyId||'',//公司ID orderMoney:sellingPrice,//订单总价 userId:this.openid, orderProductVo:{},//下单信息 orderType:12,// vlogTYPE值 orderProductList:[],//景区下单信息 } var orderProductListData = { buyNum:1,//购买数量 merchantId:this.merchantMessage[0].merchantId||'', orderType:12,// 12vlog productId:this.merchantMessage[0].merchantExtendProjectId||'', productName:this.merchantMessage[0].merchantExtendProjectName||'', extendContent:'', unitPrice:sellingPrice,//产品单价 orderImgList:[],////订单图片 couponList:[],//券信息 } var imgList = { imgUrl:productUrl, imgType:1, } orderProductListData.orderImgList.push(imgList) var extendContentData={ openid:this.openid, projectAddress:this.merchantMessage[0].projectAddress||'', projectPhone:this.merchantMessage[0].projectPhone||'', } orderProductListData.extendContent = JSON.stringify(extendContentData) data.orderProductList.push(orderProductListData) //data.orderProductVo = orderProductVo this.$request('orderc/photo/photoCreateOrder',data).then((res)=>{ if(res.code=='00'){ uni.navigateTo({ url:'../../payment/orderPayment/orderPayment?orderId='+res.data.id+'&albumOrderdetail=1' }) }else{ uni.showToast({ title: res.message, icon: 'none' }) } }) }, mearchLoadList(){//调用参数 var merchantIds = [] merchantIds.push(this.merchantIdOrder) this.$request('scenic/merchantExtendProject/loadList',{ merchantIds:merchantIds, merchantExtendProjectName:'vlog' }).then((res)=>{ if(res.code=='00'){ this.merchantMessage = res.data }else{ uni.showToast({ title: res.message, icon: 'none' }) } }) }, handleDownload(url) { // 下载功能 uni.showLoading({ title: '下载中', mask: true }) let fileName = new Date().valueOf() //获取时间戳 uni.downloadFile({ //下载文件资源到本地 url, filePath: wx.env.USER_DATA_PATH + '/' + fileName + '.mp4', //filePath指定文件下载后存储的路径,wx.env.USER_DATA_PATH,时间戳为文件名 success: res => { //下载到本地成功 let filePath = res.filePath uni.saveVideoToPhotosAlbum({ //保存视频到系统相册。 filePath, success: file => { //保存成功 //删除本地缓存 let fileMgr = uni.getFileSystemManager() fileMgr.unlink({ filePath: wx.env.USER_DATA_PATH + '/' + fileName + '.mp4', }) uni.showToast({ title: '下载成功', icon: 'success', mask: true }) }, fail: err => { uni.hideLoading() //拒绝授权时显示 if (err.errMsg === 'saveVideoToPhotosAlbum:fail auth deny') { uni.showModal({ title: '提示', content: '需要您授权保存相册', showCancel: false, success: data => { //打开权限设置 uni.openSetting({ success: setting => { if (setting.authSetting['scope.writePhotosAlbum']) { uni.showModal({ title: '提示', content: '获取权限成功,再次点击下载即可保存', showCancel: false, }) } else { uni.showModal({ title: '提示', ontent: '获取权限失败,将无法保存到相册哦', showCancel: false }) } }, }) } }) } } }) }, fail: err => { //下载失败 uni.hideLoading() if (err.errMsg == 'downloadFile:fail createDownloadTask:fail url not in domain list') { uni.showToast({ title: '服务器错误,请联系相关管理员', icon: 'none', mask: true }) } } }) }, error(e) { //视频播放出错触发函数 uni.showModal({ content: e.target.errMsg, showCancel: false }) }, } } </script> <style lang="scss" scoped> .content { padding: 0 20rpx; min-height: 100%; width: 100%; text-align: center; background-color: #192033; .item { padding: 0 10rpx; border-radius: 10rpx; background-color: #192033; padding-bottom: 40rpx; .video { height: 350rpx; border-radius: 10rpx; width: 100%; } view { margin: 20rpx 0; .btnn { float: left; width: 150rpx; background-color: #FFE600; font-weight: bold; border-radius: 30rpx; line-height: 30rpx; font-size: 24rpx; padding: 10rpx 15rpx; } .price { float: right; color: #DE6F26; font-size: 22rpx; text { font-size: 32rpx; margin-left: 5rpx; font-weight: bold; } } } } } </style>