120 lines
4.1 KiB
JavaScript
120 lines
4.1 KiB
JavaScript
"use strict";
|
||
const common_vendor = require("../../common/vendor.js");
|
||
const _sfc_main = {
|
||
data() {
|
||
return {
|
||
screenHeight: 0,
|
||
statusBarHeight: 0,
|
||
navBarHeight: 0,
|
||
originList: [],
|
||
// 源数据
|
||
displaySwiperList: [],
|
||
// swiper需要的数据
|
||
displayIndex: 0,
|
||
// 用于显示swiper的真正的下标数值只有:0,1,2。
|
||
originIndex: 0,
|
||
// 记录源数据的下标
|
||
changeIndex: 0,
|
||
//控制video是否渲染
|
||
page: 0,
|
||
// 视频分页
|
||
num: 0,
|
||
flag: true
|
||
};
|
||
},
|
||
onLoad() {
|
||
common_vendor.wx$1.getSystemInfo({
|
||
success: (res) => {
|
||
this.screenHeight = res.screenHeight;
|
||
this.statusBarHeight = res.statusBarHeight;
|
||
if (res.system.substring(0, 3) == "iOS") {
|
||
this.navBarHeight = 42;
|
||
} else {
|
||
this.navBarHeight = 40;
|
||
}
|
||
}
|
||
});
|
||
this.getPageID();
|
||
},
|
||
methods: {
|
||
/* 生成随机的 pageID */
|
||
getPageID() {
|
||
let pageID = parseInt(Math.random() * (0 - 100 + 1) + 100);
|
||
this.getVideoList(pageID);
|
||
},
|
||
/* 获取视频数据 */
|
||
getVideoList(pageID) {
|
||
common_vendor.index.request({
|
||
url: "https://api.apiopen.top/api/getMiniVideo?page=" + pageID + "&size=10&pageSize=10",
|
||
// 请求数据接口
|
||
data: {},
|
||
success: (res) => {
|
||
if (res.data.code == 200) {
|
||
res.data.result.list.forEach((item) => {
|
||
let obj = {};
|
||
obj.src = item.playurl;
|
||
obj.title = item.title;
|
||
this.originList.push(obj);
|
||
});
|
||
}
|
||
if (this.flag) {
|
||
this.flag = false;
|
||
this.initSwiperData(0);
|
||
}
|
||
}
|
||
});
|
||
},
|
||
changed(event) {
|
||
let {
|
||
current
|
||
} = event.detail;
|
||
let originListLength = this.originList.length;
|
||
this.changeIndex = current;
|
||
if (this.displayIndex - current == 2 || this.displayIndex - current == -1) {
|
||
this.originIndex = this.originIndex + 1 == originListLength ? 0 : this.originIndex + 1;
|
||
this.displayIndex = this.displayIndex + 1 == 3 ? 0 : this.displayIndex + 1;
|
||
this.initSwiperData(this.originIndex);
|
||
this.num++;
|
||
console.log("num", this.num, this.originList.length);
|
||
if (this.num + 5 >= this.originList.length) {
|
||
this.getPageID();
|
||
}
|
||
} else if (this.displayIndex - current == -2 || this.displayIndex - current == 1) {
|
||
this.originIndex = this.originIndex - 1 == -1 ? originListLength - 1 : this.originIndex - 1;
|
||
this.displayIndex = this.displayIndex - 1 == -1 ? 2 : this.displayIndex - 1;
|
||
this.initSwiperData(this.originIndex);
|
||
if (this.num > 0) {
|
||
this.num--;
|
||
}
|
||
}
|
||
},
|
||
initSwiperData(originIndex = this.originIndex) {
|
||
let originListLength = this.originList.length;
|
||
let displayList = [];
|
||
displayList[this.displayIndex] = this.originList[originIndex];
|
||
displayList[this.displayIndex - 1 == -1 ? 2 : this.displayIndex - 1] = this.originList[originIndex - 1 == -1 ? originListLength - 1 : originIndex - 1];
|
||
displayList[this.displayIndex + 1 == 3 ? 0 : this.displayIndex + 1] = this.originList[originIndex + 1 == originListLength ? 0 : originIndex + 1];
|
||
this.displaySwiperList = displayList;
|
||
}
|
||
}
|
||
};
|
||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||
return {
|
||
a: common_vendor.f($data.displaySwiperList, (item, index, i0) => {
|
||
return common_vendor.e({
|
||
a: index == $data.changeIndex
|
||
}, index == $data.changeIndex ? {
|
||
b: item.src
|
||
} : {}, {
|
||
c: common_vendor.t(item.title),
|
||
d: index
|
||
});
|
||
}),
|
||
b: common_vendor.o((...args) => _ctx.transition && _ctx.transition(...args)),
|
||
c: common_vendor.o((...args) => $options.changed && $options.changed(...args)),
|
||
d: $data.screenHeight - $data.navBarHeight + "px"
|
||
};
|
||
}
|
||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "E:/DAN/wexinxiaochengxude/NewCode2/gree_leran/pages/video/video.vue"]]);
|
||
wx.createPage(MiniProgramPage);
|