show.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. // subpackages/show/show.js
  2. import { models, db } from '../../utils/cloudbase.js'
  3. Page({
  4. /**
  5. * 页面的初始数据
  6. */
  7. data: {
  8. categoriesindex: 1,
  9. viewType: 'grid',
  10. categories: [],
  11. courseList: [],
  12. sou: '',
  13. show_1: '',
  14. xiazi: '',
  15. itemlist: {},
  16. pageNumber: 1,
  17. pageSize: 10,
  18. hasMore: true, // 是否还有更多数据
  19. isLoading: false, // 防止多次触发
  20. // url: '',
  21. // pdfurl: '',
  22. // ppturl: '',
  23. // audioUrl: '',
  24. // carousel: ''
  25. },
  26. onLoad(options) {
  27. // 存储 options 到 this 中
  28. this.options = options;
  29. // 获取tab数据
  30. this.getTabdata();
  31. const fileIDs = [
  32. 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/images/icon/sou.png',
  33. 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/images/icon/show_1.png',
  34. 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/images/icon/xiazi.png',
  35. // 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/123123.mp4',
  36. // 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/硬盘发票.pdf',
  37. // 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/newfile.ppt',
  38. // 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/许嵩 - 有何不可.mp3',
  39. // 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/images/banner/carousel_1.jpg'
  40. ];
  41. // 并发下载多个 fileID
  42. Promise.all(
  43. fileIDs.map(fileID => wx.cloud.downloadFile({ fileID }))
  44. ).then(results => {
  45. // 每个 result 对应一个下载结果
  46. const tempFilePaths = results.map(r => r.tempFilePath);
  47. console.log('全部下载成功:', tempFilePaths);
  48. this.setData({
  49. sou: tempFilePaths[0],
  50. show_1: tempFilePaths[1],
  51. xiazi: tempFilePaths[2],
  52. // url: tempFilePaths[3],
  53. // pdfurl: tempFilePaths[4],
  54. // ppturl: tempFilePaths[5],
  55. // audioUrl: tempFilePaths[6],
  56. // carousel: tempFilePaths[7]
  57. });
  58. }).catch(err => {
  59. console.error('有文件下载失败:', err);
  60. });
  61. },
  62. // tab数据
  63. async getTabdata() {
  64. const { data } = await models.tab.list({
  65. filter: {
  66. where: {
  67. position: 3, // 显示位置
  68. // layout_type: 0, // 布局类型
  69. },
  70. },
  71. // envType: pre 体验环境, prod 正式环境
  72. envType: "prod",
  73. });
  74. // 返回查询到的数据
  75. const sortedRecords = data.records.sort((a, b) => {
  76. return a.sort - b.sort; // 升序排列
  77. });
  78. this.setData({
  79. categories: sortedRecords
  80. }, () => {
  81. const type = Number(this.options.type) || 1;
  82. this.data.categories.forEach((item, index) => {
  83. if (item.sort === type) {
  84. this.setData({
  85. categorieslist: item,
  86. categoriesindex: type
  87. });
  88. if (this.data.categorieslist.layout_type === 0) {
  89. this.setData({ viewType: 'list' });
  90. } else {
  91. this.setData({ viewType: 'grid' });
  92. }
  93. // 获取列表数据
  94. this.getdatalist()
  95. }
  96. });
  97. })
  98. },
  99. onReachBottom() {
  100. // 上拉触底事件的处理函数
  101. this.loadMore();
  102. },
  103. loadMore() {
  104. // 加载更多数据的逻辑
  105. console.log('加载更多');
  106. this.getdatalist(true);
  107. },
  108. // 列表数据
  109. async getdatalist(isLoadMore = false) {
  110. if (!this.data.categorieslist._id) return; // 防止 _id 为 undefined
  111. const { pageNumber, pageSize } = this.data;
  112. const { data } = await models.file_manage.list({
  113. filter: {
  114. where: {
  115. tag_id: this.data.categorieslist._id,
  116. }
  117. },
  118. pageSize,
  119. pageNumber,
  120. getCount: true,
  121. envType: "prod",
  122. });
  123. const collectList = data.records || [];
  124. this.setData({
  125. courseList: isLoadMore ? this.data.courseList.concat(collectList) : collectList,
  126. pageNumber: pageNumber + 1,
  127. hasMore: collectList.length === pageSize,
  128. isLoading: false
  129. });
  130. },
  131. tabcategories(e) {
  132. const sort = Number(e.currentTarget.dataset.type); // 直接转换为数字
  133. const currentCategory = this.data.categories.find(item => item.sort === sort);
  134. if (!currentCategory) return;
  135. const viewType = currentCategory.layout_type === 0 ? 'list' : 'grid';
  136. this.setData({
  137. categoriesindex: sort,
  138. categorieslist: currentCategory,
  139. viewType,
  140. courseList: [], // 重置课程列表
  141. pageNumber: 1, // 重置分页
  142. hasMore: true,
  143. isLoading: false
  144. }, () => {
  145. this.getdatalist(); // 重新加载数据
  146. });
  147. },
  148. goToGoodsList(event) {
  149. // 获取绑定的数据
  150. const item = event.currentTarget.dataset.item;
  151. // 将数据转换为 JSON 字符串并传递
  152. const itemStr = encodeURIComponent(JSON.stringify(item));
  153. wx.navigateTo({
  154. url: `/subpackagestow/details/details?item=${itemStr}`
  155. });
  156. },
  157. // previewPDF() {
  158. // wx.openDocument({
  159. // filePath: this.data.ppturl,
  160. // fileType: 'ppt',
  161. // success(res) {
  162. // console.log('打开 PDF 成功');
  163. // },
  164. // fail(err) {
  165. // console.error('打开 PDF 失败', err);
  166. // }
  167. // });
  168. // }
  169. })