course.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. // subpackages/course/course.js
  2. import { models, db } from '../../utils/cloudbase.js'
  3. Page({
  4. /**
  5. * 页面的初始数据
  6. */
  7. data: {
  8. categoriesindex: 1,
  9. categories: [],
  10. viewType: 'grid',
  11. courseList: [],
  12. sou: '',
  13. show_1: '',
  14. xiazi: '',
  15. goods_9: '',
  16. categorieslist: {},
  17. pageNumber: 1,
  18. pageSize: 10,
  19. hasMore: true, // 是否还有更多数据
  20. isLoading: false, // 防止多次触发
  21. },
  22. onLoad(options) {
  23. // 存储 options 到 this 中
  24. this.options = options;
  25. // 获取tab数据
  26. this.getTabdata();
  27. // 获取图片
  28. const fileIDs = [
  29. 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/images/icon/sou.png',
  30. 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/images/icon/show_1.png',
  31. 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/images/icon/xiazi.png',
  32. 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/images/goods/goods_9.jpg'
  33. ];
  34. // 并发下载多个 fileID
  35. Promise.all(
  36. fileIDs.map(fileID => wx.cloud.downloadFile({ fileID }))
  37. ).then(results => {
  38. // 每个 result 对应一个下载结果
  39. const tempFilePaths = results.map(r => r.tempFilePath);
  40. console.log('全部下载成功:', tempFilePaths);
  41. this.setData({
  42. sou: tempFilePaths[0],
  43. show_1: tempFilePaths[1],
  44. xiazi: tempFilePaths[2],
  45. goods_9: tempFilePaths[3],
  46. });
  47. }).catch(err => {
  48. console.error('有文件下载失败:', err);
  49. });
  50. },
  51. // tab数据 async
  52. async getTabdata() {
  53. const { data } = await models.tab.list({
  54. filter: {
  55. where: {
  56. position: 0, // 显示位置
  57. // layout_type: 0, // 布局类型
  58. },
  59. },
  60. // envType: pre 体验环境, prod 正式环境
  61. envType: "prod",
  62. });
  63. // 返回查询到的数据
  64. // console.log(data);
  65. const sortedRecords = data.records.sort((a, b) => {
  66. return a.sort - b.sort; // 升序排列
  67. });
  68. this.setData({
  69. categories: sortedRecords
  70. }, () => {
  71. // 在 setData 回调中执行逻辑,确保 categories 已经更新
  72. const type = Number(this.options.type) || 1;
  73. this.data.categories.forEach((item, index) => {
  74. if (item.sort === type) {
  75. this.setData({
  76. categorieslist: item,
  77. categoriesindex: type
  78. });
  79. if (this.data.categorieslist.layout_type === 1) {
  80. this.setData({ viewType: 'list' });
  81. } else {
  82. this.setData({ viewType: 'grid' });
  83. }
  84. // 获取列表数据
  85. this.getdatalist()
  86. }
  87. });
  88. })
  89. },
  90. onReachBottom() {
  91. // 上拉触底事件的处理函数
  92. this.loadMore();
  93. },
  94. loadMore() {
  95. // 加载更多数据的逻辑
  96. console.log('加载更多');
  97. this.getdatalist(true);
  98. },
  99. // 列表数据
  100. async getdatalist(isLoadMore = false) {
  101. if (!this.data.categorieslist._id) return; // 防止 _id 为 undefined
  102. const { pageNumber, pageSize } = this.data;
  103. const { data } = await models.file_manage.list({
  104. filter: {
  105. where: {
  106. tag_id: this.data.categorieslist._id,
  107. }
  108. },
  109. pageSize,
  110. pageNumber,
  111. getCount: true,
  112. envType: "prod",
  113. });
  114. const collectList = data.records || [];
  115. this.setData({
  116. courseList: isLoadMore ? this.data.courseList.concat(collectList) : collectList,
  117. pageNumber: pageNumber + 1,
  118. hasMore: collectList.length === pageSize,
  119. isLoading: false
  120. });
  121. },
  122. // async
  123. tabcategories(e) {
  124. const sort = Number(e.currentTarget.dataset.type); // 直接转换为数字
  125. const currentCategory = this.data.categories.find(item => item.sort === sort);
  126. if (!currentCategory) return;
  127. const viewType = currentCategory.layout_type === 1 ? 'list' : 'grid';
  128. this.setData({
  129. categoriesindex: sort,
  130. categorieslist: currentCategory,
  131. viewType,
  132. courseList: [], // 重置课程列表
  133. pageNumber: 1, // 重置分页
  134. hasMore: true,
  135. isLoading: false
  136. }, () => {
  137. this.getdatalist(); // 重新加载数据
  138. });
  139. // const { data } = await models.file_manage.create({
  140. // data: {
  141. // level: 1, // 级别
  142. // range: ['大班'], // 适用范围
  143. // remark: "备注文本字段", // 备注
  144. // type: 3, // 文件类型 0-视频 1-音频 2-pdf 3-ppt 4-图文
  145. // url: ['cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/newfile.ppt'], // 路径
  146. // download_count: 1, // 下载人数
  147. // dan: 0, // 段位
  148. // cover: "cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/未命名的设计.png", // 封面
  149. // size: "123.12KB", // 文件大小
  150. // name: "亲子共读角1-ppt", // 文件名
  151. // tag_id: "BT6R8VECJU", // 标签id
  152. // describe: "监听阅读成果展示 (亲子阅读照片与手工作品)", // 描述
  153. // publisher: "张老师"
  154. // },
  155. // // envType: pre 体验环境, prod 正式环境
  156. // envType: "prod",
  157. // });
  158. // // 返回创建的数据 id
  159. // console.log(data, '234234');
  160. },
  161. goToGoodsList(event) {
  162. // 获取绑定的数据
  163. const item = event.currentTarget.dataset.item;
  164. // 将数据转换为 JSON 字符串并传递
  165. const itemStr = encodeURIComponent(JSON.stringify(item));
  166. wx.navigateTo({
  167. url: `/subpackagestow/details/details?item=${itemStr}`
  168. });
  169. }
  170. })