home.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. const pages = require('../../mixin/pages')
  2. const { getProductCategoryList } = require('../../api/common')
  3. let leftHeight = 0
  4. let rightHeight = 0
  5. let query = null
  6. Page({
  7. /**
  8. * 页面的初始数据
  9. */
  10. data: {
  11. ...pages.data(),
  12. listUrl: '/api/user/home/product/list',
  13. searchForm: {
  14. key_words: '',
  15. category_id: ''
  16. },
  17. background: ['demo-text-1', 'demo-text-2', 'demo-text-3'],
  18. txtlist: [
  19. '这是第一条公告内容',
  20. '小程序上下滚动效果总结',
  21. '这是一行上下滚动的文字,文字最好短点,超过一行省略'
  22. ],
  23. headerNav: [
  24. {
  25. icon: 'partner@2x.png',
  26. name: '供应商',
  27. path: 'partner'
  28. },
  29. {
  30. icon: 'guide@2x.png',
  31. name: '采购指南',
  32. path: 'guide'
  33. },
  34. {
  35. icon: 'collection@2x.png',
  36. name: '收藏',
  37. path: 'collection'
  38. },
  39. {
  40. icon: 'news.png',
  41. name: '农事天地',
  42. path: 'news'
  43. }
  44. ],
  45. categoryList: [],
  46. list: [],
  47. leftList: [],
  48. rightList: []
  49. },
  50. ...pages.methods,
  51. /**
  52. * 生命周期函数--监听页面加载
  53. */
  54. async onLoad(options) {
  55. await this.fetchProductCategoryList()
  56. this.fetchOrderList()
  57. },
  58. /**
  59. * 生命周期函数--监听页面初次渲染完成
  60. */
  61. onReady() {
  62. },
  63. /**
  64. * 生命周期函数--监听页面显示
  65. */
  66. onShow() {
  67. this.getTabBar().init()
  68. },
  69. /**
  70. * 生命周期函数--监听页面隐藏
  71. */
  72. onHide() {
  73. },
  74. /**
  75. * 生命周期函数--监听页面卸载
  76. */
  77. onUnload() {
  78. },
  79. /**
  80. * 页面相关事件处理函数--监听用户下拉动作
  81. */
  82. onPullDownRefresh() {
  83. if (this.data.freshing) {
  84. return
  85. }
  86. this.setData({
  87. freshing: true
  88. })
  89. this.bindCallBack()
  90. },
  91. /**
  92. * 页面上拉触底事件的处理函数
  93. */
  94. onReachBottom() {
  95. this.fetchOrderList()
  96. },
  97. /**
  98. * 用户点击右上角分享
  99. */
  100. onShareAppMessage() {
  101. },
  102. bindCallBack() {
  103. this.refreshOrderList()
  104. },
  105. async fetchProductCategoryList() {
  106. try {
  107. const { status, data, msg } = await getProductCategoryList()
  108. if (status && Array.isArray(data) && data.length > 0) {
  109. this.setData({
  110. categoryList: data.map(item => {
  111. return {
  112. ...item,
  113. text: item.category_name
  114. }
  115. }),
  116. 'searchForm.category_id': data[0].id
  117. })
  118. } else {
  119. wx.showToast({
  120. title: msg,
  121. icon: 'none'
  122. })
  123. }
  124. } catch (err) {}
  125. },
  126. handleTab(event) {
  127. const { name } = event.detail
  128. this.setData({
  129. 'searchForm.category_id': name
  130. })
  131. },
  132. async isLeft() {
  133. const {
  134. list,
  135. leftList,
  136. rightList
  137. } = this.data
  138. query = wx.createSelectorQuery()
  139. for (const item of list) {
  140. leftHeight <= rightHeight ? leftList.push(item) : rightList.push(item)
  141. await this.getBoxHeight(leftList, rightList)
  142. }
  143. },
  144. getBoxHeight(leftList, rightList) {
  145. return new Promise((resolve, reject) => {
  146. this.setData({
  147. leftList,
  148. rightList
  149. }, () => {
  150. query.select('.waterfall-left').boundingClientRect()
  151. query.select('.waterfall-right').boundingClientRect()
  152. query.exec((res) => {
  153. leftHeight = res[0].height
  154. rightHeight = res[1].height
  155. resolve()
  156. })
  157. })
  158. })
  159. },
  160. jumpLeavingAMessage() {
  161. wx.navigateTo({
  162. url: '/pages/leavingAMessage/leavingAMessage'
  163. })
  164. },
  165. handleNav(e) {
  166. const { item } = e.currentTarget.dataset
  167. if (Object.prototype.toString.call(item) === '[object Object]' && item.path) {
  168. const path = item.path
  169. if (path === 'news' || path === 'partner') {
  170. wx.switchTab({
  171. url: `/pages/${path}/${path}`
  172. })
  173. return
  174. }
  175. wx.navigateTo({
  176. url: `/pages/${path}/${path}`
  177. })
  178. }
  179. },
  180. openMarketing(e) {
  181. const { page } = e.currentTarget.dataset
  182. wx.navigateTo({
  183. url: `/pages/${page}/${page}`
  184. })
  185. }
  186. })