index.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. import { getRightsList } from './api';
  2. import { AfterServiceStatus, ServiceType, ServiceTypeDesc } from '../config';
  3. Page({
  4. page: {
  5. size: 10,
  6. num: 1,
  7. },
  8. data: {
  9. tabs: [
  10. {
  11. key: -1,
  12. text: '全部',
  13. },
  14. {
  15. key: AfterServiceStatus.TO_AUDIT,
  16. text: '待审核',
  17. },
  18. {
  19. key: AfterServiceStatus.THE_APPROVED,
  20. text: '已审核',
  21. },
  22. {
  23. key: AfterServiceStatus.COMPLETE,
  24. text: '已完成',
  25. },
  26. {
  27. key: AfterServiceStatus.CLOSED,
  28. text: '已关闭',
  29. },
  30. ],
  31. curTab: -1,
  32. dataList: [],
  33. listLoading: 0, // 0-未加载,1-加载中,2-已全部加载
  34. pullDownRefreshing: false, // 下拉刷新时不显示load-more
  35. emptyImg: 'https://tdesign.gtimg.com/miniprogram/template/retail/order/empty-order-list.png',
  36. backRefresh: false,
  37. },
  38. onLoad(query) {
  39. let status = parseInt(query.status);
  40. status = this.data.tabs.map((t) => t.key).includes(status) ? status : -1;
  41. this.init(status);
  42. this.pullDownRefresh = this.selectComponent('#wr-pull-down-refresh');
  43. },
  44. onShow() {
  45. // 当从其他页面返回,并且 backRefresh 被置为 true 时,刷新数据
  46. if (!this.data.backRefresh) return;
  47. this.onRefresh();
  48. this.setData({
  49. backRefresh: false,
  50. });
  51. },
  52. onReachBottom() {
  53. if (this.data.listLoading === 0) {
  54. this.getAfterServiceList(this.data.curTab);
  55. }
  56. },
  57. onPageScroll(e) {
  58. this.pullDownRefresh && this.pullDownRefresh.onPageScroll(e);
  59. },
  60. onPullDownRefresh_(e) {
  61. const { callback } = e.detail;
  62. this.setData({
  63. pullDownRefreshing: true,
  64. }); // 下拉刷新时不显示load-more
  65. this.refreshList(this.data.curTab)
  66. .then(() => {
  67. this.setData({
  68. pullDownRefreshing: false,
  69. });
  70. callback && callback();
  71. })
  72. .catch((err) => {
  73. this.setData({
  74. pullDownRefreshing: false,
  75. });
  76. Promise.reject(err);
  77. });
  78. },
  79. init(status) {
  80. status = status !== undefined ? status : this.data.curTab;
  81. this.refreshList(status);
  82. },
  83. getAfterServiceList(statusCode = -1, reset = false) {
  84. const params = {
  85. parameter: {
  86. pageSize: this.page.size,
  87. pageNum: this.page.num,
  88. },
  89. };
  90. if (statusCode !== -1) params.parameter.afterServiceStatus = statusCode;
  91. this.setData({
  92. listLoading: 1,
  93. });
  94. return getRightsList(params)
  95. .then((res) => {
  96. this.page.num++;
  97. let dataList = [];
  98. let { tabs } = this.data;
  99. if (res && res.data && res.data.states) {
  100. tabs = this.data.tabs.map((item) => {
  101. switch (item.key) {
  102. case AfterServiceStatus.TO_AUDIT:
  103. item.info = res.data.states.audit;
  104. break;
  105. case AfterServiceStatus.THE_APPROVED:
  106. item.info = res.data.states.approved;
  107. break;
  108. case AfterServiceStatus.COMPLETE:
  109. item.info = res.data.states.complete;
  110. break;
  111. case AfterServiceStatus.CLOSED:
  112. item.info = res.data.states.closed;
  113. break;
  114. }
  115. return item;
  116. });
  117. }
  118. if (res && res.data && res.data.dataList) {
  119. dataList = (res.data.dataList || []).map((_data) => {
  120. return {
  121. id: _data.rights.rightsNo,
  122. serviceNo: _data.rights.rightsNo,
  123. storeName: _data.rights.storeName,
  124. type: _data.rights.rightsType,
  125. typeDesc: ServiceTypeDesc[_data.rights.rightsType],
  126. typeDescIcon: _data.rightsType === ServiceType.ONLY_REFUND ? 'money-circle' : 'return-goods-1',
  127. status: _data.rights.rightsStatus,
  128. statusName: _data.rights.userRightsStatusName,
  129. statusDesc: _data.rights.userRightsStatusDesc,
  130. amount: _data.rights.refundAmount,
  131. goodsList: _data.rightsItem.map((item, i) => ({
  132. id: i,
  133. thumb: item.goodsPictureUrl,
  134. title: item.goodsName,
  135. specs: (item.specInfo || []).map((s) => s.specValues || ''),
  136. itemRefundAmount: item.itemRefundAmount,
  137. rightsQuantity: item.itemRefundAmount,
  138. })),
  139. storeId: _data.storeId,
  140. buttons: _data.buttonVOs || [],
  141. logisticsNo: _data.logisticsVO.logisticsNo, // 退货物流单号
  142. logisticsCompanyName: _data.logisticsVO.logisticsCompanyName, // 退货物流公司
  143. logisticsCompanyCode: _data.logisticsVO.logisticsCompanyCode, // 退货物流公司
  144. remark: _data.logisticsVO.remark, // 退货备注
  145. logisticsVO: _data.logisticsVO,
  146. };
  147. });
  148. }
  149. return new Promise((resolve) => {
  150. if (reset) {
  151. this.setData(
  152. {
  153. dataList: [],
  154. },
  155. () => resolve(),
  156. );
  157. } else resolve();
  158. }).then(() => {
  159. this.setData({
  160. tabs,
  161. dataList: this.data.dataList.concat(dataList),
  162. listLoading: dataList.length > 0 ? 0 : 2,
  163. });
  164. });
  165. })
  166. .catch((err) => {
  167. this.setData({
  168. listLoading: 3,
  169. });
  170. return Promise.reject(err);
  171. });
  172. },
  173. onReTryLoad() {
  174. this.getAfterServiceList(this.data.curTab);
  175. },
  176. onTabChange(e) {
  177. const { value } = e.detail;
  178. const tab = this.data.tabs.find((v) => v.key === value);
  179. if (!tab) return;
  180. this.refreshList(value);
  181. },
  182. refreshList(status = -1) {
  183. this.page = {
  184. size: 10,
  185. num: 1,
  186. };
  187. this.setData({
  188. curTab: status,
  189. dataList: [],
  190. });
  191. return this.getAfterServiceList(status, true);
  192. },
  193. onRefresh() {
  194. this.refreshList(this.data.curTab);
  195. },
  196. // 点击订单卡片
  197. onAfterServiceCardTap(e) {
  198. wx.navigateTo({
  199. url: `/pages/order/after-service-detail/index?rightsNo=${e.currentTarget.dataset.order.id}`,
  200. });
  201. },
  202. });