Commit 912f56cb authored by jyx's avatar jyx

更新短剧播放器

parent 7cfbc1cb
......@@ -7,19 +7,8 @@
// #endif
export default {
onLoad() {
// #ifdef MP-WEIXIN
playletPlugin.onPageLoad(this._onPlayerLoad.bind(this))
playletPlugin.getShareParams().then(res => {
//关于extParam的处理,需要先做decodeURIComponent之后才能得到原值
const extParam = decodeURIComponent(res.extParam)
// 如果设置了withShareTicket为true,可通过文档的方法获取更多信息
// https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html
const enterOptions = wx.getEnterOptionsSync()
}).catch(err => {
console.log('getLaunch options query err-app-vue', err)
})
// #endif
usingComponents: {
"charge-dialog": "/components/charge-dialog/charge-dialog",
},
onLaunch: function(options) {
// #ifdef APP-PLUS
......@@ -61,14 +50,26 @@
console.log(e);
}
// checkUpdate(this);
},
_onPlayerLoad(info) {
console.log('App-onPlayerLoad', info.playerId, info)
uni.getSystemInfo({
success: (res => {
this.globalData.clientHeight = res.windowHeight - 65
})
});
// #ifdef MP-WEIXIN
const playerManager = new PlayerManager()
playerManager._onPlayerLoad(info)
playletPlugin.onPageLoad(this._onPlayerLoad.bind(this))
playletPlugin.getShareParams().then(res => {
//关于extParam的处理,需要先做decodeURIComponent之后才能得到原值
const extParam = decodeURIComponent(res.extParam)
// 如果设置了withShareTicket为true,可通过文档的方法获取更多信息
// https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html
const enterOptions = wx.getEnterOptionsSync()
}).catch(err => {
console.log('getLaunch options query err-app-vue', err)
})
// #endif
// checkUpdate(this);
},
onShow: function(options) {
this.globalData.resetLogin = true
......@@ -77,7 +78,13 @@
this.globalData.resetLogin = false
},
methods: {
_onPlayerLoad(info) {
console.log('App-onPlayerLoad', info.playerId, info)
// #ifdef MP-WEIXIN
const playerManager = new PlayerManager()
playerManager._onPlayerLoad(info)
// #endif
},
},
globalData: {
resetLogin: false,
......@@ -89,6 +96,7 @@
h5Url: 'https://api.mints-id.com/index.html',
baseUrl: 'https://api.mints-tech.cn/camera-api/miniApi',
titleButtonWidth: 38,
clientHeight: 0,
token: '',
userId: 0,
inviteUId: '',
......
import {
loading
} from '../utils/fun.js';
function req(options) {
let {
showLoading,
url,
data,
auth
} = options;
const app = getApp()
const success = options?.success;
const fail = options?.fail;
const header = options?.header ?? {};
Object.assign(header, {
token: uni.getStorageSync('token'),
os: wx.getSystemInfoSync().platform,
pkgName: app.globalData.pkgName
})
showLoading && loading.show();
options = Object.assign(options, {
url: `${app.globalData.baseUrl}${url}`,
header,
data,
success: (res) => {
switch (res.data.status) {
case 200:
if (success) {
success(res.data);
}
break;
default:
if (fail) {
fail(res.data.message);
}
break;
}
},
fail: (e) => {
if (fail) {
fail(e);
}
},
complete: () => {
showLoading && loading.hide();
}
})
uni.request(options);
}
function apiPOST(options) {
options = Object.assign({
showLoading: false
}, options, {
method: 'POST'
})
req(options);
}
function apiGET(options) {
options = Object.assign({
showLoading: false
}, options, {
method: 'GET'
})
req(options);
}
module.exports = {
apiGET,
apiPOST
}
\ No newline at end of file
import {
apiPOST
} from "./apiRequest";
var plugin = requirePlugin("playlet-plugin");
// 点击按钮触发此函数跳转到播放器页面
function navigateToPlayer(obj) {
// 下面的${dramaId}变量,需要替换成小程序管理后台的媒资管理上传的剧目的dramaId,变量${srcAppid}是提审方appid,变量${serialNo}是某一集,变量${extParam}是扩展字段,可通过
const {
extParam,
dramaId,
srcAppid,
serialNo
wechatDramaId,
wechatSrcAppid,
seeIndex
} = obj
wx.navigateTo({
url: `plugin-private://wx94a6522b1d640c3b/pages/playlet/playlet?dramaId=${dramaId}&srcAppid=${srcAppid}&serialNo=${serialNo}&extParam=${extParam || ''}`
url: `plugin-private://wx94a6522b1d640c3b/pages/playlet/playlet?dramaId=${wechatDramaId}&srcAppid=${wechatSrcAppid}&serialNo=${seeIndex}&extParam=${extParam || ''}`
})
}
const proto = {
_onPlayerLoad(info) {
const pm = plugin.PlayletManager.getPageManager(info.playerId)
this.pm = pm
// 上传剧集信息
this.pm_report()
// encryptedData是经过开发者后台加密后(不要在前端加密)的数据,具体实现见下面的加密章节
this.getEncryptData({
serialNo: info.serialNo
......@@ -26,7 +36,7 @@ const proto = {
freeList: [{
start_serial_no: 1,
end_serial_no: 10
}], // 1~10集是免费剧集
}] // 1~10集是免费剧集
})
})
pm.onCheckIsCanPlay(this.onCheckIsCanPlay)
......@@ -53,21 +63,55 @@ const proto = {
// extParam除了可以通过在path传参,还可以通过下面的接口设置
pm.setExtParam('hellotest')
// 分享部分end
// 参考文档章节“数据上报”
pm.onDataReport((obj) => {
const {
dramaId,
serialNo
} = this.pm.getInfo()
//分享
if (obj.event === plugin.REPORT_DATA_EVENTS.SHARE) {
console.log('分享', obj)
this.pm_share()
}
//点赞
if (obj.event === plugin.REPORT_DATA_EVENTS.LIKE) {
console.log('点赞', obj)
this.pm_like()
}
//取消点赞
if (obj.event === plugin.REPORT_DATA_EVENTS.UNLIKE) {
console.log('取消点赞', obj)
this.pm_unlike()
}
//在追
if (obj.event === plugin.REPORT_DATA_EVENTS.FAV) {
console.log('在追', obj)
this.pm_collect()
}
//取消在追
if (obj.event === plugin.REPORT_DATA_EVENTS.UNFAV) {
console.log('取消在追', obj)
this.pm_uncollect()
}
//切换剧集CHANGE_SERIAL
// VIDEO_PLAY 播放事件
if (obj.event === plugin.REPORT_DATA_EVENTS.CHANGE_SERIAL) {
console.log('切换剧集', obj)
}
})
},
onCheckIsCanPlay(param) {
// TODO: 碰到不可以解锁的剧集,会触发此事件,这里可以进行扣币解锁逻辑,如果用户无足够的币,可调用下面的this.isCanPlay设置
console.log('onCheckIsCanPlay param', param)
var serialNo = param.serialNo
this.getEncryptData({
serialNo: serialNo
}).then(res => {
// encryptedData是后台加密后的数据,具体实现见下面的加密章节
this.pm.isCanPlay({
data: res.encryptedData,
serialNo: serialNo,
})
})
// 解锁剧集
this.unlockSerial()
},
getEncryptData(obj) {
const {
......@@ -78,13 +122,138 @@ const proto = {
srcAppid,
dramaId
} = this.pm.getInfo()
console.log('getEncryptData start', srcAppid, dramaId, serialNo)
return new Promise((resolve, reject) => {
apiPOST({
url: '/vedio/getIndexList',
data: {
dramaId
},
success: (res) => {
resolve({
encryptedData: '' // TODO: 此参数需从后台接口获取到
encryptedData: res.data.vedioMsg.wechatEncryptedData,
start_serial_no: res.data.vedioMsg.wechatFreeList[0]
.start_serial_no,
end_serial_no: res.data.vedioMsg.wechatFreeList[0]
.end_serial_no
})
this.pm_report()
},
fail: (res) => {
reject(res.data.message)
}
})
})
},
pm_collect() {
const {
dramaId,
} = this.pm.getInfo()
apiPOST({
url: '/vedio/collect',
data: {
dramaId
}
});
},
pm_uncollect() {
const {
dramaId,
} = this.pm.getInfo()
apiPOST({
url: '/vedio/cancelCollect',
data: {
dramaId
}
});
},
// 上传播放剧集信息
pm_report() {
const {
dramaId,
serialNo
} = this.pm.getInfo()
apiPOST({
url: '/vedio/reportIndex',
data: {
dramaId,
vedioIndex: serialNo
},
success: ({
data
}) => {},
});
},
// 解锁剧集
unlockSerial() {
const {
dramaId,
serialNo
} = this.pm.getInfo()
apiPOST({
url: '/vedio/unlock',
data: {
dramaId,
num: serialNo
},
success: ({
data
}) => {
switch (data.code) {
case 200:
this.getEncryptData({
serialNo: serialNo,
}).then(res => {
this.pm.isCanPlay({
data: res.encryptedData,
serialNo: serialNo,
})
})
break
case 301:
this.getEncryptData({
serialNo: serialNo,
}).then(res => {
this.pm.isCanPlay({
data: res.encryptedData,
serialNo: serialNo,
})
})
break
case 302:
this.getEncryptData({
serialNo: serialNo,
}).then(res => {
this.pm.isCanPlay({
data: res.encryptedData,
serialNo: serialNo,
})
})
break
case 303:
this.getEncryptData({
serialNo: serialNo,
}).then(res => {
this.pm.isCanPlay({
data: res.encryptedData,
serialNo: serialNo,
})
})
// 自动弹出充值弹窗
this.pm.showChargeDialog()
break
}
},
});
}
}
function PlayerManager() {
......
This diff is collapsed.
......@@ -13,6 +13,11 @@ import './filters'
plus.screen.lockOrientation('portrait-primary');
// #endif
// #ifdef MP-WEIXIN
import chargedialog from './components/charge-dialog/charge-dialog.vue'
Vue.component('charge-dialog', chargedialog)
// #endif
// let v = new vconsole();
// #ifndef VUE3
import Vue from 'vue'
......
......@@ -151,7 +151,7 @@
"provider": "wx94a6522b1d640c3b",
"genericsImplementation": {
"playlet": {
"charge-dialog": "/components/"
"charge-dialog": "/components/charge-dialog/charge-dialog"
}
}
}
......@@ -226,17 +226,3 @@
}
}
}
\ No newline at end of file
// "devServer" : {
// "proxy" : {
// "/https://nft-web.tech-mints.com" : {
// "target" : "https://nft-web.tech-mints.com",
// "changeOrgin" : true, //是否跨域
// "seure" : true, //是否支持https协议的代理
// "pathRewrite" : {
// "^/https://nft-web.tech-mints.com" : "/",
// "^/zs-ui/hap/https://nft-web.tech-mints.com" : "/"
// }
// }
// },
// "https" : true
// }
\ No newline at end of file
......@@ -13,7 +13,7 @@ export default {
data() {
return {
xhrPool: new Set(),
bottomSafePadding: app.globalData.bottomSafePadding,
// bottomSafePadding: app.globalData.bottomSafePadding,
options: {},
auth: false, // 登录验证
paying: false, // 支付按钮状态
......@@ -27,14 +27,14 @@ export default {
this.loadData();
},
onHide() {
if (this.xhrPool.size) {
if (this.xhrPool && this.xhrPool.size) {
this.xhrPool.forEach((requestTask) => {
requestTask.abort();
})
}
},
methods: {
authTo(url) {//登录校验
authTo(url) { //登录校验
if (app.globalData.userInfo) {
navigateTo(url);
} else {
......@@ -43,7 +43,7 @@ export default {
// });
}
},
authToNs(url) {//登录校验不保留当前页面
authToNs(url) { //登录校验不保留当前页面
if (app.globalData.userInfo) {
redirectTo(url);
} else {
......@@ -133,8 +133,7 @@ export default {
Object.assign(header, {
token: uni.getStorageSync('token'),
os:wx.getSystemInfoSync().platform,
// token: 'AC8FA7EB65C3074472378362124462E70E762CAB0EAD1C6EABB742EB893A61C05F433703067DF5142735505C42F58997',
os: wx.getSystemInfoSync().platform,
pkgName: app.globalData.pkgName
})
......@@ -168,12 +167,16 @@ export default {
}
},
complete: () => {
if (this.xhrPool) {
this.xhrPool.delete(requestTask)
}
}
})
if (this.xhrPool) {
requestTask = uni.request(options);
this.xhrPool.add(requestTask)
}
}
}
};
\ No newline at end of file
import AlmostLottery from '@/uni_modules/almost-lottery/components/almost-lottery/almost-lottery.vue';
export default {
data() {
return {
loading: true,
// 以下是转盘配置相关数据
lotteryConfig: {
// 抽奖转盘的整体尺寸,单位rpx
lotterySize: 700,
// 抽奖按钮的尺寸,单位rpx
action: {
width: 188,
height: 228,
top: 228 - 188,
padding: 85
},
imgCircled: false,
},
// 转盘外环图,如有需要,请参考替换为自己的设计稿
lotteryBg: require('@/static/turn/zp.png'),
// // 抽奖按钮图
actionBg: require('@/static/turn/point.png'),
// 以下是奖品配置数据
// 奖品数据
prizeList: [
],
// 中奖下标
prizeIndex: -1,
// 是否正在抽奖中,避免重复触发
prizeing: false,
}
},
components: {
AlmostLottery
},
methods:{
remoteGetPrizeIndex(prizeId) {
let list = [...this.prizeList]
// 拿到后端返回的 prizeId 后,开始循环比对得出那个中奖的数据
for (let i = 0; i < list.length; i++) {
let item = list[i]
if (item.prizeId === prizeId) {
this.prizeIndex = i
break
}
}
console.log('本次抽中奖品 =>', this.prizeList[this.prizeIndex].prizeName)
// 如果奖品设有库存
},
// 抽奖转盘绘制完成
handleDrawFinish(res) {
console.log('抽奖转盘绘制完成', res)
}
}
}
......@@ -7,13 +7,9 @@
"^nx-(.*)": "@/nProX/$1/$1.vue" // 匹配nProX内的vue文件
}
},
"pages": [
// #ifndef APP-PLUS
{
"pages": [{
"path": "pages/loading"
},
// #endif
{
}, {
"path": "pages/home"
}, {
"path": "pages/index/index"
......@@ -27,8 +23,7 @@
"path": "pages/recommend/follow"
}, {
"path": "pages/recommend/recommendVideo"
}
],
}],
// 分包配置
"subPackages": [{
"root": "pagesA",
......
......@@ -6,10 +6,9 @@
v-show="currentPage==1" ref="recommend" />
<userPage v-show="currentPage==2" ref="user" />
</view>
<view v-if="!isShowBlackBar" class="tabs-bar">
<view :class="currentPage==0?'tab active': 'tab'" :style="'padding-bottom:' + bottomSafePadding + 'px;'"
@click="tabChange(0)">
<view style="margin: 16rpx 0 11rpx;">
<view v-if="!isShowBlackBar" class="tabs-bar" style="height: 70px;">
<view :class="currentPage==0?'tab active': 'tab'" @click="tabChange(0)">
<view style="margin: 12rpx 0 8rpx;">
<image v-if="currentPage==0" class="tabs-image" src="/static/tab/index_selected.png"
mode="heightFix">
</image>
......@@ -17,18 +16,16 @@
</view>
剧场
</view>
<view :class="currentPage == 1?'tab active': 'tab'" :style="'padding-bottom:' + bottomSafePadding + 'px;'"
@click="tabChange(1)">
<view style="margin: 16rpx 0 11rpx;">
<view :class="currentPage == 1?'tab active': 'tab'" @click="tabChange(1)">
<view style="margin: 12rpx 0 8rpx;">
<image v-if="currentPage==1" class="tabs-image" src="/static/tab/promote_selected.png"
mode="heightFix"></image>
<image v-else class="tabs-image" src="/static/tab/promote_unselected.png" mode="heightFix"></image>
</view>
推荐
</view>
<view :class="currentPage == 2?'tab active': 'tab'" :style="'padding-bottom:' + bottomSafePadding + 'px;'"
@click="tabChange(2)">
<view style="margin: 16rpx 0 11rpx;">
<view :class="currentPage == 2?'tab active': 'tab'" @click="tabChange(2)">
<view style="margin: 12rpx 0 8rpx;">
<image v-if="currentPage==2" class="tabs-image" src="/static/tab/my_selected.png" mode="heightFix">
</image>
<image v-else class="tabs-image" src="/static/tab/my_unselected.png" mode="heightFix"></image>
......@@ -37,10 +34,9 @@
</view>
</view>
<view v-if="isShowBlackBar" class="tabs-bar2">
<view :class="currentPage==0?'tab active': 'tab'" :style="'padding-bottom:' + bottomSafePadding + 'px;'"
@click="tabChange(0)">
<view style="margin: 16rpx 0 11rpx;">
<view v-if="isShowBlackBar" class="tabs-bar2" style="height: 70px;">
<view :class="currentPage==0?'tab active': 'tab'" @click="tabChange(0)">
<view style="margin: 12rpx 0 8rpx;">
<image v-if="currentPage==0" class="tabs-image" src="/static/tab/index_selected.png"
mode="heightFix">
</image>
......@@ -48,18 +44,16 @@
</view>
剧场
</view>
<view :class="currentPage == 1?'tab active': 'tab'" :style="'padding-bottom:' + bottomSafePadding + 'px;'"
@click="tabChange(1)">
<view style="margin: 16rpx 0 11rpx;">
<view :class="currentPage == 1?'tab active': 'tab'" @click="tabChange(1)">
<view style="margin: 12rpx 0 8rpx;">
<image v-if="currentPage==1" class="tabs-image" src="/static/tab/promote_selected.png"
mode="heightFix"></image>
<image v-else class="tabs-image" src="/static/tab/promote_unselected.png" mode="heightFix"></image>
</view>
推荐
</view>
<view :class="currentPage == 2?'tab active': 'tab'" :style="'padding-bottom:' + bottomSafePadding + 'px;'"
@click="tabChange(2)">
<view style="margin: 16rpx 0 11rpx;">
<view :class="currentPage == 2?'tab active': 'tab'" @click="tabChange(2)">
<view style="margin: 12rpx 0 8rpx;">
<image v-if="currentPage==2" class="tabs-image" src="/static/tab/my_selected.png" mode="heightFix">
</image>
<image v-else class="tabs-image" src="/static/tab/my_unselected.png" mode="heightFix"></image>
......@@ -68,7 +62,7 @@
</view>
</view>
<view v-if="showEditBar" class="editBar" :style="'padding-bottom:' + bottomSafePadding + 'px;'">
<view v-if="showEditBar" class="editBar">
<view class="editItem" @click="!isFullChoice?fullChoice():noChoice()">
{{!isFullChoice?'全选':'全不选'}}
</view>
......
......@@ -193,9 +193,10 @@
import {
openUrl
} from '@/utils/app+.js';
import {
navigateToPlayer
} from '../../common/playerManager';
} from '@/common/playerManager';
const app = getApp();
......@@ -210,21 +211,13 @@
topList: [],
maskImage: 'https://mints-web.oss-cn-beijing.aliyuncs.com/images/bg_wx_guid.png',
showMask: false,
clientHeight: 0,
clientHeight: app.globalData.clientHeight,
statusBarHeight: app.globalData.statusBarHeight,
page: 1,
size: 10,
loadStatus: 'loadmore',
statusBarHeight: app.globalData.statusBarHeight,
};
},
mounted() {
let that = this
uni.getSystemInfo({
success: (res => {
this.clientHeight = res.windowHeight - 50;
})
});
},
methods: {
onScroll(event) {
// 获取scrollview已滚动的高度
......@@ -296,9 +289,9 @@
success: ({
data
}) => {
this.loadStatus = data.list.size < this.size ? 'nomore' : 'loadmore';
this.loadStatus = (data.list.length < this.size || !data.list) ? 'nomore' : 'loadmore';
if (data.list.size <= 10) {
if (data.list.size < 10) {
this.dataList = [...this.dataList, ...data.list];
return
}
......@@ -319,16 +312,16 @@
this.loadList()
},
handleBanner(item) {
navigateToPlayer({})
navigateToPlayer(item)
},
handleInfo(item) {
navigateToPlayer({})
navigateToPlayer(item)
},
handleTop(item) {
navigateToPlayer({})
navigateToPlayer(item)
},
handleBottomPlay(item) {
navigateToPlayer({})
navigateToPlayer(item)
},
handleBottomClose() {
this.newRecordBean = null;
......@@ -359,12 +352,7 @@
data
}) => {
if (data.vedioMsg != null) {
navigateToPlayer({})
// navigateTo(`/pagesC/video/newVideoDetail?data=` +
// encodeURIComponent(
// JSON.stringify(data.vedioMsg)));
navigateToPlayer(data.vedioMsg)
}
}
});
......
<template>
<view class="body">
<scroll-view v-if="clientHeight != 0" scroll-y :style="{'height': clientHeight + 'px'}" @scroll="onScroll">
<scroll-view v-if="clientHeight != 0" scroll-y :style="{'height': clientHeight + 'px'}">
<view
:style="'display: flex;flex-direction: row;align-items: center;margin: 20rpx;padding-left: 10rpx;margin-top:'+statusBarHeight+'px;'">
<image class="avatar" src="@/static/logo-about.png"></image>
......@@ -116,22 +116,13 @@
userBean: {},
showAnimate: false,
xxxPayFlag: false,
windowHeight: 0,
os: 'android',
versionName: app.globalData.versionName,
corpid: '', // 企业ID
curl: '', // 客服链接
clientHeight: 0,
clientHeight: app.globalData.clientHeight,
};
},
mounted() {
let that = this
uni.getSystemInfo({
success: (res => {
this.clientHeight = res.windowHeight - 50;
})
});
},
onScroll(event) {
// 获取scrollview已滚动的高度
const scrollTop = event.detail.scrollTop;
......@@ -146,7 +137,6 @@
methods: {
show() {
this.os = wx.getSystemInfoSync().platform;
this.windowHeight = uni.getSystemInfoSync().windowHeight
// loadData() {
this.post({
url: '/user/baseMsg',
......
......@@ -38,8 +38,8 @@
import common from '@/mixins/common';
import {
navigateTo,
} from '@/utils/fun.js';
navigateToPlayer
} from '@/common/playerManager';
const app = getApp();
......@@ -95,7 +95,7 @@
this.$emit("goRecommend")
},
click(detail) {
navigateTo(`/pagesC/video/newVideoDetail?data=` + encodeURIComponent(JSON.stringify(detail)))
navigateToPlayer(detail)
},
longClick(key) {
this.isEditStyle = true
......
<template>
<view class="body">
<view class="tabContainer" :style="'height:' +titleBarHeight +'px;line-height:'+titleBarHeight +'px;padding-top:'+statusBarHeight+'px;background-color:transparent'">
<view v-if="clientHeight != 0" :style="{'height': clientHeight + 'px'}">
<view class="tabContainer"
:style="'height:' +titleBarHeight +'px;line-height:'+titleBarHeight +'px;padding-top:'+statusBarHeight+'px;background-color:transparent'">
<view v-if="(current==0 && showEdit)"
:style="'position: absolute;left: 20rpx;top:'+ (statusBarHeight + 10) + 'px'"
@click.stop="showEditBar = !showEditBar">
<image style="width: 50rpx;height: 50rpx;" mode="widthFix"
:src="showEditBar?'/static/video/close.png':'/static/video/edit.png'" />
<!-- <image style="width: 50rpx;height: 50rpx;" mode="widthFix"
:src="showEditBar?'/static/video/close.png':'/static/video/edit.png'" /> -->
</view>
<view v-show="showEditBar" style="width: 300rpx;background: white;z-index: 999;">
<view v-show="showEditBar" style="width: 300rpx;z-index: 999;">
<view
style="font-size: 36rpx;text-align: center;align-items: center;height:100rpx;line-height: 100rpx;">
追剧
......@@ -74,8 +74,8 @@
showEdit: false,
showTap: false,
titleBarHeight: app.globalData.titleBarHeight,
titleButtonWidth: app.globalData.titleButtonWidth,
statusBarHeight: app.globalData.statusBarHeight,
clientHeight: app.globalData.clientHeight,
}
},
onLoad(e) {},
......
......@@ -53,8 +53,8 @@
import common from '@/mixins/common';
import {
navigateTo,
} from '@/utils/fun.js';
navigateToPlayer
} from '@/common/playerManager';
let audo = uni.createInnerAudioContext()
......@@ -236,8 +236,8 @@
this.isqp = e.detail.show
},
detail(detail) {
navigateTo(`/pagesC/video/newVideoDetail?data=` + encodeURIComponent(JSON.stringify(detail)) +
`&playNext=1`)
detail.seeIndex = detail.seeIndex + 1
navigateToPlayer(detail)
},
collect(vedioId, index) {
this.originList[index].collect = 1
......
......@@ -38,18 +38,14 @@
import common from '@/mixins/common';
import {
getToLocal
} from "@/utils/utils.js"
import {
navigateTo,
message,
alert,
loading
} from '@/utils/fun.js';
import {
openUrl
} from '@/utils/app+.js';
navigateToPlayer
} from '@/common/playerManager';
const app = getApp();
......@@ -83,7 +79,7 @@
});
},
handleInfo(item) {
navigateTo(`/pagesC/video/newVideoDetail?data=` + encodeURIComponent(JSON.stringify(item)));
navigateToPlayer(item)
},
handleXing(item) {
var that = this;
......
| 平台 | 账号 |
| ---- | ---- |
| [微信开放平台](https://open.weixin.qq.com/) | |
| [DCloud开发者](https://dev.dcloud.net.cn/) | 1359763362@qq.com |
┌─uniCloud 云空间目录,阿里云为uniCloud-aliyun,腾讯云为uniCloud-tcb(详见uniCloud)
│─components 符合vue组件规范的uni-app组件目录
│ └─comp-a.vue 可复用的a组件
├─hybrid App端存放本地html文件的目录,详见
├─platforms 存放各平台专用页面的目录,详见
├─pages 业务页面文件存放的目录
│ ├─index
│ │ └─index.vue index页面
│ └─list
│ └─list.vue list页面
├─static 存放应用引用的本地静态资源(如图片、视频等)的目录,注意:静态资源只能存放于此
├─uni_modules 存放[uni_module](/uni_modules)规范的插件。
├─wxcomponents 存放小程序组件的目录,详见
├─main.js Vue初始化入口文件
├─App.vue 应用配置,用来配置App全局样式以及监听 应用生命周期
├─manifest.json 配置应用名称、appid、logo、版本等打包信息,详见
├─pages.json 配置页面路由、导航条、选项卡等页面类信息,详见
└─uni.scss 这里是uni-app内置的常用样式变量
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment