// subpackages/teaching/teaching.js import { models, db } from '../../utils/cloudbase.js' Page({ /** * 页面的初始数据 */ data: { categoriesindex: 1, categories: [], viewType: 'grid', courseList: [], sou: '', show_1: '', xiazi: '', categorieslist: {}, pageNumber: 1, pageSize: 10, hasMore: true, // 是否还有更多数据 isLoading: false, // 防止多次触发 }, onLoad(options) { // 存储 options 到 this 中 this.options = options; // 获取tab数据 this.getTabdata(); const fileIDs = [ 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/images/icon/sou.png', 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/images/icon/show_1.png', 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/images/icon/xiazi.png', ]; // 并发下载多个 fileID Promise.all( fileIDs.map(fileID => wx.cloud.downloadFile({ fileID })) ).then(results => { // 每个 result 对应一个下载结果 const tempFilePaths = results.map(r => r.tempFilePath); console.log('全部下载成功:', tempFilePaths); this.setData({ sou: tempFilePaths[0], show_1: tempFilePaths[1], xiazi: tempFilePaths[2], }); }).catch(err => { console.error('有文件下载失败:', err); }); }, // tab数据 async getTabdata() { const { data } = await models.tab.list({ filter: { where: { position: 2, // 显示位置 // layout_type: 0, // 布局类型 }, }, // envType: pre 体验环境, prod 正式环境 envType: "prod", }); // 返回查询到的数据 const sortedRecords = data.records.sort((a, b) => { return a.sort - b.sort; // 升序排列 }); this.setData({ categories: sortedRecords }, () => { const type = Number(this.options.type) || 1; this.data.categories.forEach((item, index) => { if (item.sort === type) { this.setData({ categorieslist: item, categoriesindex: type }); if (this.data.categorieslist.layout_type === 1) { this.setData({ viewType: 'list' }); } else { this.setData({ viewType: 'grid' }); } // 获取列表数据 this.getdatalist() } }); }) }, onReachBottom() { // 上拉触底事件的处理函数 this.loadMore(); }, loadMore() { // 加载更多数据的逻辑 console.log('加载更多'); this.getdatalist(true); }, // 列表数据 async getdatalist(isLoadMore = false) { if (!this.data.categorieslist._id) return; // 防止 _id 为 undefined const { pageNumber, pageSize } = this.data; const { data } = await models.file_manage.list({ filter: { where: { tag_id: this.data.categorieslist._id, } }, pageSize, pageNumber, getCount: true, envType: "prod", }); const collectList = data.records || []; this.setData({ courseList: isLoadMore ? this.data.courseList.concat(collectList) : collectList, pageNumber: pageNumber + 1, hasMore: collectList.length === pageSize, isLoading: false }); }, tabcategories(e) { const sort = Number(e.currentTarget.dataset.type); // 直接转换为数字 const currentCategory = this.data.categories.find(item => item.sort === sort); if (!currentCategory) return; const viewType = currentCategory.layout_type === 1 ? 'list' : 'grid'; this.setData({ categoriesindex: sort, categorieslist: currentCategory, viewType, courseList: [], // 重置课程列表 pageNumber: 1, // 重置分页 hasMore: true, isLoading: false }, () => { this.getdatalist(); // 重新加载数据 }); }, goToGoodsList(event) { // 获取绑定的数据 const item = event.currentTarget.dataset.item; // 将数据转换为 JSON 字符串并传递 const itemStr = encodeURIComponent(JSON.stringify(item)); wx.navigateTo({ url: `/subpackagestow/details/details?item=${itemStr}` }); } })