"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);