myAttention.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. // pages/myAttention/myAttention.js
  2. const net = require("../../utils/net.js");
  3. const util = require("../../utils/util.js");
  4. const {
  5. api_user_attention_list,
  6. api_topic_attention_list,
  7. } = require("../../utils/api.js");
  8. Page({
  9. /**
  10. * 页面的初始数据
  11. */
  12. data: {
  13. categoryList: [
  14. {
  15. type: 1,
  16. categoryName: "用户",
  17. },
  18. {
  19. type: 2,
  20. categoryName: "话题",
  21. },
  22. ],
  23. selectTab: 0,
  24. selectIndex: null,
  25. isEmpty: false,
  26. listData: [],
  27. limit: 20,
  28. scrollH: 500,
  29. scrollTop: 0,
  30. isEnd: false,
  31. },
  32. /**
  33. * 生命周期函数--监听页面加载
  34. */
  35. onLoad: function (options) {
  36. if (options && options.userId) {
  37. this._userId = options.userId;
  38. this.loadListData({ isRefresh: true });
  39. } else {
  40. util.showToast({ title: "用户信息错误,请您稍后再试!" });
  41. }
  42. this.getScrollH();
  43. },
  44. getScrollH() {
  45. const _this = this;
  46. wx.createSelectorQuery()
  47. .select("#fixedTop")
  48. .boundingClientRect(function (res) {
  49. const sys = wx.getSystemInfoSync();
  50. _this.setData({
  51. scrollH: sys.screenHeight - res.height,
  52. });
  53. })
  54. .exec();
  55. },
  56. /**
  57. * 页面上拉触底事件的处理函数
  58. */
  59. scrollToLower() {
  60. if (this._isload) return false;
  61. this._isload = true;
  62. this.loadListData({
  63. isRefresh: false,
  64. });
  65. },
  66. loadListData(obj) {
  67. const { limit, listData, categoryList, selectTab } = this.data;
  68. let params = {};
  69. params.url =
  70. categoryList[selectTab].type == 1
  71. ? api_user_attention_list
  72. : api_topic_attention_list;
  73. params.data = {
  74. limit: limit,
  75. userId: this._userId,
  76. };
  77. const len = listData.length;
  78. if (!obj.isRefresh && len) {
  79. params.data.lastId = listData[len - 1].id;
  80. }
  81. net.req(params, true).then(
  82. (data) => {
  83. if (obj.isRefresh) {
  84. this.setData({
  85. scrollTop: 0,
  86. listData: data.list,
  87. isEmpty: !data.list.length,
  88. isEnd: data.list.length < limit,
  89. });
  90. this._refresh = false;
  91. this._isload = false;
  92. } else {
  93. if (data.list.length) {
  94. this.setData({
  95. listData: listData.concat(data.list),
  96. isEnd: data.list.length < limit,
  97. });
  98. this._isload = data.list.length < limit;
  99. }
  100. }
  101. },
  102. (e) => {
  103. util.showToast({ title: e.msg || "" });
  104. obj.isRefresh ? (this._refresh = false) : (this._isload = false);
  105. }
  106. );
  107. },
  108. handleTabAction(e) {
  109. const { index, item } = e.detail;
  110. const { categoryList, selectTab } = this.data;
  111. const newType = item.type;
  112. const oldType = categoryList[selectTab].type;
  113. if (newType != oldType) {
  114. this.setData({
  115. selectTab: index,
  116. isEmpty: false,
  117. });
  118. this.loadListData({ isRefresh: true });
  119. }
  120. },
  121. tapUserAction(e) {
  122. const { item, index } = e.currentTarget.dataset;
  123. this._selectIndex = index;
  124. wx.navigateTo({
  125. url: `/pages/personal/personal?userId=${item.id}`,
  126. });
  127. },
  128. tapTagAction(e) {
  129. const { item, index } = e.currentTarget.dataset;
  130. this._selectIndex = index;
  131. wx.navigateTo({
  132. url: `/pages/tagDetail/tagDetail?tagId=${item.id}`,
  133. });
  134. },
  135. tapAttentionAction(e) {
  136. let pages = getCurrentPages(); /*在内存中的所有页面栈对象*/
  137. let reloadPage = pages[pages.length - 2]; /*我的页面对象*/
  138. reloadPage && reloadPage.refreshCallback && reloadPage.refreshCallback();
  139. },
  140. cancelAttention() {
  141. const { listData } = this.data;
  142. listData.splice(this._selectIndex, 1);
  143. this.setData({
  144. listData: listData,
  145. isEmpty: !listData.length,
  146. });
  147. },
  148. });