greenPro/unpackage/dist/dev/mp-weixin/pages/template/tabbar/tabbar.js

272 lines
8.1 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
const common_vendor = require("../../../common/vendor.js");
const mediaItem = () => "./news-item.js";
const MAX_CACHE_DATA = 100;
const MAX_CACHE_PAGE = 3;
const newsData = {
data0: {
"datetime": "40分钟前",
"article_type": 0,
"title": "uni-app行业峰会频频亮相开发者反响热烈!",
"source": "DCloud",
"comment_count": 639
},
data1: {
"datetime": "一天前",
"article_type": 1,
"title": "DCloud完成B2轮融资uni-app震撼发布!",
"image_url": "https://web-assets.dcloud.net.cn/unidoc/zh/shuijiao-small.jpg",
"source": "DCloud",
"comment_count": 11395
},
data2: {
"datetime": "一天前",
"article_type": 2,
"title": "中国技术界小奇迹HBuilder开发者突破200万",
"image_url": "https://web-assets.dcloud.net.cn/unidoc/zh/muwu-samll.jpg",
"source": "DCloud",
"comment_count": 11395
},
data3: {
"article_type": 3,
"image_list": [{
"url": "https://web-assets.dcloud.net.cn/unidoc/zh/cbd%20-small.jpg",
"width": 563,
"height": 316
}, {
"url": "https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/b4cd3000-517d-11eb-a16f-5b3e54966275.jpg",
"width": 641,
"height": 360
}, {
"url": "https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/b7c7f970-517d-11eb-97b7-0dc4655d6e68.jpg",
"width": 640,
"height": 360
}],
"datetime": "5分钟前",
"title": "uni-app 支持使用 npm 安装第三方包,生态更趋丰富",
"source": "DCloud",
"comment_count": 11
},
data4: {
"datetime": "2小时前",
"article_type": 4,
"title": "uni-app 支持原生小程序自定义组件,更开放、更自由",
"image_url": "https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/b2e201d0-517d-11eb-8a36-ebb87efcf8c0.jpg",
"source": "DCloud",
"comment_count": 69
}
};
const _sfc_main = {
components: {
mediaItem
},
data() {
return {
newsList: [],
cacheTab: [],
tabIndex: 0,
tabBars: [{
name: "关注",
id: "guanzhu"
}, {
name: "推荐",
id: "tuijian"
}, {
name: "体育",
id: "tiyu"
}, {
name: "热点",
id: "redian"
}, {
name: "财经",
id: "caijing"
}, {
name: "娱乐",
id: "yule"
}, {
name: "军事",
id: "junshi"
}, {
name: "历史",
id: "lishi"
}, {
name: "本地",
id: "bendi"
}],
scrollInto: "",
showTips: false,
navigateFlag: false,
pulling: false,
refreshIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5QTFRFcHBw3Nzct7e39vb2ycnJioqK7e3tpqam29vb////D8oK7wAAAAp0Uk5T////////////ALLMLM8AAABxSURBVHja7JVBDoAgDASrjqj//7CJBi90iyYeOHTPMwmFZrHjYyyFYYUy1bwUZqtJIYVxhf1a6u0R7iUvWsCcrEtwJHp8MwMdvh2amHduiZD3rpWId9+BgPd7Cc2LIkPyqvlQvKxKBJ//Qwq/CacAAwDUv0a0YuKhzgAAAABJRU5ErkJggg=="
};
},
onLoad() {
setTimeout(() => {
this.tabBars.forEach((tabBar) => {
this.newsList.push({
data: [],
isLoading: false,
refreshText: "",
loadingText: "加载更多..."
});
});
this.getList(0);
}, 350);
},
methods: {
getList(index) {
let activeTab = this.newsList[index];
let list = [];
for (let i = 1; i <= 10; i++) {
let item = Object.assign({}, newsData["data" + Math.floor(Math.random() * 5)]);
item.id = this.newGuid();
list.push(item);
}
activeTab.data = activeTab.data.concat(list);
},
goDetail(e) {
if (this.navigateFlag) {
return;
}
this.navigateFlag = true;
common_vendor.index.navigateTo({
url: "./detail/detail?title=" + e.title
});
setTimeout(() => {
this.navigateFlag = false;
}, 200);
},
close(index1, index2) {
common_vendor.index.showModal({
content: "是否删除本条信息?",
success: (res) => {
if (res.confirm) {
this.newsList[index1].data.splice(index2, 1);
}
}
});
},
loadMore(e) {
setTimeout(() => {
this.getList(this.tabIndex);
}, 500);
},
ontabtap(e) {
let index = e.target.dataset.current || e.currentTarget.dataset.current;
this.switchTab(index);
},
ontabchange(e) {
let index = e.target.current || e.detail.current;
this.switchTab(index);
},
switchTab(index) {
if (this.newsList[index].data.length === 0) {
this.getList(index);
}
if (this.tabIndex === index) {
return;
}
if (this.newsList[this.tabIndex].data.length > MAX_CACHE_DATA) {
let isExist = this.cacheTab.indexOf(this.tabIndex);
if (isExist < 0) {
this.cacheTab.push(this.tabIndex);
}
}
this.tabIndex = index;
this.scrollInto = this.tabBars[index].id;
if (this.cacheTab.length > MAX_CACHE_PAGE) {
let cacheIndex = this.cacheTab[0];
this.clearTabData(cacheIndex);
this.cacheTab.splice(0, 1);
}
},
clearTabData(e) {
this.newsList[e].data.length = 0;
this.newsList[e].loadingText = "加载更多...";
},
refreshData() {
},
onrefresh(e) {
var tab = this.newsList[this.tabIndex];
if (!tab.refreshFlag) {
return;
}
tab.refreshing = true;
tab.refreshText = "正在刷新...";
setTimeout(() => {
this.refreshData();
this.pulling = true;
tab.refreshing = false;
tab.refreshFlag = false;
tab.refreshText = "已刷新";
setTimeout(() => {
this.pulling = false;
}, 500);
}, 2e3);
},
onpullingdown(e) {
var tab = this.newsList[this.tabIndex];
if (tab.refreshing || this.pulling) {
return;
}
if (Math.abs(e.pullingDistance) > Math.abs(e.viewHeight)) {
tab.refreshFlag = true;
tab.refreshText = "释放立即刷新";
} else {
tab.refreshFlag = false;
tab.refreshText = "下拉可以刷新";
}
},
newGuid() {
let s4 = function() {
return (65536 * (1 + Math.random()) | 0).toString(16).substring(1);
};
return (s4() + s4() + "-" + s4() + "-4" + s4().substr(0, 3) + "-" + s4() + "-" + s4() + s4() + s4()).toUpperCase();
}
}
};
if (!Array) {
const _component_media_item = common_vendor.resolveComponent("media-item");
_component_media_item();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.f($data.tabBars, (tab, index, i0) => {
return {
a: common_vendor.t(tab.name),
b: common_vendor.n($data.tabIndex == index ? "uni-tab-item-title-active" : ""),
c: tab.id,
d: tab.id,
e: index,
f: common_vendor.o((...args) => $options.ontabtap && $options.ontabtap(...args), tab.id)
};
}),
b: $data.scrollInto,
c: common_vendor.f($data.newsList, (tab, index1, i0) => {
return common_vendor.e({
a: common_vendor.f(tab.data, (newsitem, index2, i1) => {
return {
a: common_vendor.o(($event) => $options.close(index1, index2), newsitem.id),
b: common_vendor.o(($event) => $options.goDetail(newsitem), newsitem.id),
c: "46f8da5b-0-" + i0 + "-" + i1,
d: common_vendor.p({
options: newsitem
}),
e: newsitem.id
};
}),
b: tab.isLoading || tab.data.length > 4
}, tab.isLoading || tab.data.length > 4 ? {
c: common_vendor.t(tab.loadingText)
} : {}, {
d: common_vendor.o(($event) => $options.loadMore(index1), index1),
e: index1
});
}),
d: $data.tabIndex,
e: common_vendor.o((...args) => $options.ontabchange && $options.ontabchange(...args))
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "E:/xianyu/app/greenPro/pages/template/tabbar/tabbar.nvue"]]);
wx.createPage(MiniProgramPage);