index.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. import Toast from 'tdesign-miniprogram/toast/index';
  2. import Dialog from 'tdesign-miniprogram/dialog/index';
  3. import { OrderButtonTypes } from '../../config';
  4. Component({
  5. options: {
  6. addGlobalClass: true,
  7. },
  8. properties: {
  9. order: {
  10. type: Object,
  11. observer(order) {
  12. // 判定有传goodsIndex ,则认为是商品button bar, 仅显示申请售后按钮
  13. if (this.properties?.goodsIndex !== null) {
  14. const goods = order.goodsList[Number(this.properties.goodsIndex)];
  15. this.setData({
  16. buttons: {
  17. left: [],
  18. right: (goods.buttons || []).filter((b) => b.type == OrderButtonTypes.APPLY_REFUND),
  19. },
  20. });
  21. return;
  22. }
  23. // 订单的button bar 不显示申请售后按钮
  24. const buttonsRight = (order.buttons || [])
  25. // .filter((b) => b.type !== OrderButtonTypes.APPLY_REFUND)
  26. .map((button) => {
  27. //邀请好友拼团按钮
  28. if (button.type === OrderButtonTypes.INVITE_GROUPON && order.groupInfoVo) {
  29. const {
  30. groupInfoVo: { groupId, promotionId, remainMember, groupPrice },
  31. goodsList,
  32. } = order;
  33. const goodsImg = goodsList[0] && goodsList[0].imgUrl;
  34. const goodsName = goodsList[0] && goodsList[0].name;
  35. return {
  36. ...button,
  37. openType: 'share',
  38. dataShare: {
  39. goodsImg,
  40. goodsName,
  41. groupId,
  42. promotionId,
  43. remainMember,
  44. groupPrice,
  45. storeId: order.storeId,
  46. },
  47. };
  48. }
  49. return button;
  50. });
  51. // 删除订单按钮单独挪到左侧
  52. const deleteBtnIndex = buttonsRight.findIndex((b) => b.type === OrderButtonTypes.DELETE);
  53. let buttonsLeft = [];
  54. if (deleteBtnIndex > -1) {
  55. buttonsLeft = buttonsRight.splice(deleteBtnIndex, 1);
  56. }
  57. this.setData({
  58. buttons: {
  59. left: buttonsLeft,
  60. right: buttonsRight,
  61. },
  62. });
  63. },
  64. },
  65. goodsIndex: {
  66. type: Number,
  67. value: null,
  68. },
  69. isBtnMax: {
  70. type: Boolean,
  71. value: false,
  72. },
  73. },
  74. data: {
  75. order: {},
  76. buttons: {
  77. left: [],
  78. right: [],
  79. },
  80. },
  81. methods: {
  82. // 点击【订单操作】按钮,根据按钮类型分发
  83. onOrderBtnTap(e) {
  84. const { type } = e.currentTarget.dataset;
  85. switch (type) {
  86. case OrderButtonTypes.DELETE:
  87. this.onDelete(this.data.order);
  88. break;
  89. case OrderButtonTypes.CANCEL:
  90. this.onCancel(this.data.order);
  91. break;
  92. case OrderButtonTypes.CONFIRM:
  93. this.onConfirm(this.data.order);
  94. break;
  95. case OrderButtonTypes.PAY:
  96. this.onPay(this.data.order);
  97. break;
  98. case OrderButtonTypes.APPLY_REFUND:
  99. this.onApplyRefund(this.data.order);
  100. break;
  101. case OrderButtonTypes.VIEW_REFUND:
  102. this.onViewRefund(this.data.order);
  103. break;
  104. case OrderButtonTypes.COMMENT:
  105. this.onAddComment(this.data.order);
  106. break;
  107. case OrderButtonTypes.INVITE_GROUPON:
  108. //分享邀请好友拼团
  109. break;
  110. case OrderButtonTypes.REBUY:
  111. this.onBuyAgain(this.data.order);
  112. }
  113. },
  114. onCancel() {
  115. Toast({
  116. context: this,
  117. selector: '#t-toast',
  118. message: '你点击了取消订单',
  119. icon: 'check-circle',
  120. });
  121. },
  122. onConfirm() {
  123. Dialog.confirm({
  124. title: '确认是否已经收到货?',
  125. content: '',
  126. confirmBtn: '确认收货',
  127. cancelBtn: '取消',
  128. })
  129. .then(() => {
  130. Toast({
  131. context: this,
  132. selector: '#t-toast',
  133. message: '你确认了确认收货',
  134. icon: 'check-circle',
  135. });
  136. })
  137. .catch(() => {
  138. Toast({
  139. context: this,
  140. selector: '#t-toast',
  141. message: '你取消了确认收货',
  142. icon: 'check-circle',
  143. });
  144. });
  145. },
  146. onPay() {
  147. Toast({
  148. context: this,
  149. selector: '#t-toast',
  150. message: '你点击了去支付',
  151. icon: 'check-circle',
  152. });
  153. },
  154. onBuyAgain() {
  155. Toast({
  156. context: this,
  157. selector: '#t-toast',
  158. message: '你点击了再次购买',
  159. icon: 'check-circle',
  160. });
  161. },
  162. onApplyRefund(order) {
  163. const goods = order.goodsList[this.properties.goodsIndex];
  164. const params = {
  165. orderNo: order.orderNo,
  166. skuId: goods?.skuId ?? '19384938948343',
  167. spuId: goods?.spuId ?? '28373847384343',
  168. orderStatus: order.status,
  169. logisticsNo: order.logisticsNo,
  170. price: goods?.price ?? 89,
  171. num: goods?.num ?? 89,
  172. createTime: order.createTime,
  173. orderAmt: order.totalAmount,
  174. payAmt: order.amount,
  175. canApplyReturn: true,
  176. };
  177. const paramsStr = Object.keys(params)
  178. .map((k) => `${k}=${params[k]}`)
  179. .join('&');
  180. wx.navigateTo({ url: `/pages/order/apply-service/index?${paramsStr}` });
  181. },
  182. onViewRefund() {
  183. Toast({
  184. context: this,
  185. selector: '#t-toast',
  186. message: '你点击了查看退款',
  187. icon: '',
  188. });
  189. },
  190. /** 添加订单评论 */
  191. onAddComment(order) {
  192. const imgUrl = order?.goodsList?.[0]?.thumb;
  193. const title = order?.goodsList?.[0]?.title;
  194. const specs = order?.goodsList?.[0]?.specs;
  195. wx.navigateTo({
  196. url: `/pages/goods/comments/create/index?specs=${specs}&title=${title}&orderNo=${order?.orderNo}&imgUrl=${imgUrl}`,
  197. });
  198. },
  199. },
  200. });