| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295 |
- <template>
- <view>
- <!--pages/liveMiddle/liveMiddle.wxml-->
- <image :src="date.cover_img" class="background"></image>
- <view class="button">
- <view class="btn" @tap="intoLive" v-if="flag">{{star?'进入直播间':'直播未开始'}}</view>
- <view class="btn" @tap="intoLive" v-else>查看回放</view>
- <view class="btn1" @tap="showShare">分享海报</view>
- </view>
- <v-share :hide-toast="hideShare" :product="date" :code-url="codeUrl" a-type="6" @onFather="click"></v-share>
- <!-- <v-share hide-toast="{{hideShare}}" product="{{pro}}" code-url="{{codeUrl}}" bg-url="{{bgUrl}}"></v-share> -->
- </view>
- </template>
- <script>
- // pages/liveMiddle/liveMiddle.js
- const req = require("../../utils/request.js");
- const util = require("../../utils/util.js");
- const app = getApp();
- import vShare from "../../components/share/share";
- export default {
- data() {
- return {
- flag: true,
- hideShare: true,
- star: true,
- date: '',
- codeUrl: ""
- };
- },
- components: {
- vShare
- },
- props: {},
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function(options) {
- this.isLoad = true;
- this.query = options;
- if (options.scene) {
- this.scene = options.scene;
- }
- if (options.isShare) {
- this.query.roomid = options.id;
- req.setStorage('pidCode', options.userId);
- }
- this.getList().then(resolve=>{
- // console.log("debug1", resolve);
- this.getStar();
- })
- // console.log(options);
- },
- //分享
- onShareAppMessage: function() {
- // console.log('直播间详情', this.date);
- // console.log('/pages/liveMiddle/liveMiddle?id=' + this.query.id + '&isShare=' + true + '&userId=' + req
- // .getStorage(
- // 'userInfo').id);
- return {
- title: req.getStorage('userInfo').nickName + '邀请您观看直播:' + this.date.name,
- imageUrl: this.date.cover_img,
- path: '/pages/liveMiddle/liveMiddle?id=' + this.query.id + '&isShare=' + true + '&userId=' + req
- .getStorage(
- 'userInfo').id
- };
- },
- /**
- * 生命周期函数--监听页面显示
- */
- onShow: async function() {
- await this.loadCodeParams();
- },
- methods: {
- click(e) {
- // console.log(e)
- this.hideShare = e
- },
- getList() {
- return new Promise((resolve, reject) => {
- let that = this;
-
- if (!that.isLoad) return false;
- that.isLoad = false;
- let form = {
- page: 1,
- limit: 100
- };
- let date = {};
- req.getRequest('/api/live/list', form, data => {
- if (data) {
- data.map(item => {
- item.time = util.transTime(item.start_time);
- return item;
- }); // console.log(data)
-
- data.forEach(res => {
- if (res.roomid == this.query.id) {
- date = res;
- }
- });
- that.setData({
- date: date
- });
- resolve(date);
- }
- });
- });
-
- },
- onShareTimeline() {
- return {
- title: '直播分享' + this.date.name,
- imageUrl: this.date.cover_img
- };
- },
- // 分享
- showShare() {
- // #ifndef H5
- req.isLogin().then(success => {
- if (success) {
- this.getCodeUrl();
- this.setData({
- hideShare: false
- });
- }
- });
- // #endif
- },
- // 解析路由参数
- loadCodeParams() {
- let _ts = this;
- // console.log(_ts.scene);
- return new Promise((resolve, reject) => {
- if (!_ts.scene) {
- resolve();
- return false;
- }
- req.getRequest('/api/code/params', {
- scene: _ts.scene
- }, data => {
- // console.log(data);
- this.query.id = data.scene;
- req.setStorage('pidCode', data.userId);
- resolve();
- });
- });
- },
- getCodeUrl() {
- let that = this; //获取小程序码
- const params = {
- page: 'pages/liveMiddle/liveMiddle',
- scene: this.query.id
- };
- // console.log("pa--", params);
- req.getRequest('/api/program/codev', params, url => {
- // console.log(url);
- that.setData({
- codeUrl: url
- });
- });
- },
- //获取当前直播间的状态码 101:直播中,102:未开始, 可以直接进入直播间
- // 103已结束, 只能查看回放
- // 104禁播,105:暂停,106:异常,107:已过期 未处理
- getStar() {
- // console.log(this.date.time);
- let status = this.date.live_status;
- this.getDate(this.date);
- this.date.month = this.year;
- this.date.hour = this.hour;
- let str = this.date.share_img;
- if (str.indexOf("https") == -1) {
- this.date.share_img = str.replace(/http/, 'https');
- }
- let res = this.date;
- this.setData({
- date: res
- }); //状态码为101
- if (status == 101) {
- this.setData({
- flag: true,
- star: true,
- date: res
- });
- } //状态码为102
- if (status == 102) {
- this.setData({
- flag: true,
- star: false,
- date: res
- });
- } //状态码为103
- if (status == 103) {
- this.setData({
- flag: false
- });
- }
- },
- // 进入直播间
- intoLive(event) {
- let roomId = this.date.roomid;
- let customParams = encodeURIComponent(JSON.stringify({
- isShare: true,
- userId: req.getStorage(
- 'userInfo').id
- }))
- // let redirect=`plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=${roomId}&custom_params=${customParams}`
- // uni.navigateToMiniProgram({
- // appId:'wxae03e9c5b5fcb1fb',
- // path:redirect
- // })
- uni.navigateTo({
- url: `plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=${roomId}&custom_params=${customParams}`
- });
- },
- /**
- *
- * 直播开始时间转换 year-month-day hour:minute:00
- *
- */
- getDate(str) {
- // console.log(str)
- if (str.time) {
- // str = this.date.time;
- var strArr = str.time.split(' ');
- // console.log(strArr)
- var time = strArr[0].toString().split('-');
- var hose = strArr[1].toString().split(':');
- var hour = hose[0];
- var minute = hose[1];
- var day = time[2];
- var month = time[1];
- var year = time[0];
- var date = (month + '月' + day + '日').toString();
- var date1 = (hour + ':' + minute).toString();
- var date2 = strArr[0];
- this.year = date
- this.hour = date1
- }
- },
- getLive(id) {
- return new Promise((resolve, reject) => {
- req.getRequest('/api/live/playBack', {
- page: 1,
- limit: 10,
- room_id: id
- }, data => {
- this.videoList = data;
- resolve();
- });
- });
- },
- async playBack(event) {
- let roomId = this.date.roomid;
- await this.getLive(roomId);
- let videoList = JSON.stringify(this.videoList);
- if (videoList.length < 1) return req.msg('回放生成中');
- uni.navigateTo({
- url: '/pages/video/video?videoList=' + videoList
- });
- }
- }
- };
- </script>
- <style>
- @import "./liveMiddle.css";
- </style>
|