imghome.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. // subpackages/dahome/dahome.js
  2. // import { models, db, _ } from '../../utils/cloudbase.js'
  3. import { getDB, getModels, getCommand, getTempFileURLs } from '../../utils/cloudbase.js'
  4. Page({
  5. data: {
  6. // levelOptions: ['初级', '中级', '高级'],
  7. // selectedLevelIndex: 0,
  8. typeOptions: ['1段', '2段', '3段'],
  9. selectedTypeIndex: 0,
  10. items: [],
  11. souimg: '',
  12. xialaimg: '',
  13. pageNumber: 1,
  14. pageSize: 10,
  15. hasMore: true, // 是否还有更多数据
  16. isLoading: false, // 防止多次触发
  17. searchText: '',
  18. // goods_9: '',
  19. },
  20. async onLoad() {
  21. // 列表数据
  22. this.getdatalist()
  23. // 获取图片
  24. const fileIDs = [
  25. 'cloud://honghgaier-5guiffgcf17a2eea.686f-honghgaier-5guiffgcf17a2eea-1373037829/images/icon/sou.png',
  26. 'cloud://honghgaier-5guiffgcf17a2eea.686f-honghgaier-5guiffgcf17a2eea-1373037829/images/icon/xiala.png',
  27. ];
  28. const fileList = await getTempFileURLs(fileIDs)
  29. this.setData({
  30. souimg: fileList[0].tempFileURL,
  31. xialaimg: fileList[1].tempFileURL,
  32. })
  33. // // 并发下载多个 fileID
  34. // Promise.all(
  35. // fileIDs.map(fileID => wx.cloud.downloadFile({ fileID }))
  36. // ).then(results => {
  37. // // 每个 result 对应一个下载结果
  38. // const tempFilePaths = results.map(r => r.tempFilePath);
  39. // console.log('全部下载成功:', tempFilePaths);
  40. // this.setData({
  41. // souimg: tempFilePaths[0],
  42. // xialaimg: tempFilePaths[1],
  43. // // goods_9: tempFilePaths[2],
  44. // });
  45. // }).catch(err => {
  46. // console.error('有文件下载失败:', err);
  47. // });
  48. },
  49. onReachBottom() {
  50. // 上拉触底事件的处理函数
  51. this.loadMore();
  52. },
  53. loadMore() {
  54. // 加载更多数据的逻辑
  55. console.log('加载更多');
  56. // this.getdatalist(true);
  57. if (this.data.isLoading || !this.data.hasMore) return;
  58. this.setData({ isLoading: true });
  59. this.getdatalist(true);
  60. },
  61. // 模糊搜搜
  62. onSearchInput(e) {
  63. const searchText = e.detail.value;
  64. this.setData({
  65. searchText,
  66. pageNumber: 1,
  67. items: [],
  68. hasMore: true,
  69. isLoading: false
  70. });
  71. this.getdatalist(false);
  72. },
  73. // 列表数据
  74. async getdatalist(isLoadMore = false) {
  75. const { pageNumber, pageSize, selectedTypeIndex, searchText } = this.data;
  76. const models = await getModels()
  77. const where = {
  78. tag_id: 'C05HFKY0YY',
  79. level: Number(selectedTypeIndex) + 1,
  80. };
  81. if (searchText.trim()) {
  82. where.name = {
  83. $regex_ci: searchText
  84. };
  85. }
  86. try {
  87. const { data } = await models.file_manage.list({
  88. filter: { where },
  89. pageSize,
  90. pageNumber,
  91. getCount: true,
  92. envType: "prod",
  93. });
  94. let collectList = data.records || [];
  95. // 提取 cover 云文件 ID 并批量获取临时链接
  96. const coverFileIDs = collectList.map(item => item.cover).filter(Boolean);
  97. let tempFiles = [];
  98. if (coverFileIDs.length > 0) {
  99. try {
  100. tempFiles = await getTempFileURLs(coverFileIDs);
  101. } catch (err) {
  102. console.error('获取临时链接失败', err);
  103. }
  104. }
  105. // 给每条记录添加可直接渲染的 coverUrl
  106. collectList = collectList.map((item, index) => ({
  107. ...item,
  108. coverUrl: tempFiles[index] ? tempFiles[index].tempFileURL : ''
  109. }));
  110. this.setData({
  111. items: isLoadMore ? this.data.items.concat(collectList) : collectList,
  112. pageNumber: pageNumber + 1,
  113. hasMore: collectList.length === pageSize,
  114. isLoading: false
  115. });
  116. } catch (err) {
  117. console.error('获取数据失败:', err);
  118. }
  119. },
  120. goToGoodsList(event) {
  121. // 获取绑定的数据
  122. const item = event.currentTarget.dataset.item;
  123. // 将数据转换为 JSON 字符串并传递
  124. const itemStr = encodeURIComponent(JSON.stringify(item));
  125. wx.navigateTo({
  126. url: `/subpackages/detailsimg/detailsimg?item=${itemStr}`
  127. });
  128. },
  129. handleTypeChange(e) {
  130. const index = Number(e.detail.value);
  131. this.setData({
  132. selectedTypeIndex: index,
  133. pageNumber: 1, // 重置分页,从第一页查
  134. hasMore: true,
  135. isLoading: false,
  136. items: [] // 可选:清空旧数据避免闪烁
  137. });
  138. this.getdatalist(false);
  139. }
  140. })