| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- import Toast from 'tdesign-miniprogram/toast/index';
- import { ServiceType, ServiceTypeDesc, ServiceStatus } from '../config';
- import { formatTime, getRightsDetail } from './api';
- const TitleConfig = {
- [ServiceType.ORDER_CANCEL]: '退款详情',
- [ServiceType.ONLY_REFUND]: '退款详情',
- [ServiceType.RETURN_GOODS]: '退货退款详情',
- };
- Page({
- data: {
- pageLoading: true,
- serviceRaw: {},
- service: {},
- deliveryButton: {},
- gallery: {
- current: 0,
- show: false,
- proofs: [],
- },
- showProofs: false,
- backRefresh: false,
- },
- onLoad(query) {
- this.rightsNo = query.rightsNo;
- this.inputDialog = this.selectComponent('#input-dialog');
- this.init();
- },
- onShow() {
- // 当从其他页面返回,并且 backRefresh 被置为 true 时,刷新数据
- if (!this.data.backRefresh) return;
- this.init();
- this.setData({ backRefresh: false });
- },
- // 页面刷新,展示下拉刷新
- onPullDownRefresh_(e) {
- const { callback } = e.detail;
- return this.getService().then(() => callback && callback());
- },
- init() {
- this.setData({ pageLoading: true });
- this.getService().then(() => {
- this.setData({ pageLoading: false });
- });
- },
- getService() {
- const params = { rightsNo: this.rightsNo };
- return getRightsDetail(params).then((res) => {
- const serviceRaw = res.data[0];
- // 滤掉填写运单号、修改运单号按钮,这两个按钮特殊处理,不在底部按钮栏展示
- if (!serviceRaw.buttonVOs) serviceRaw.buttonVOs = [];
- const deliveryButton = {};
- const service = {
- id: serviceRaw.rights.rightsNo,
- serviceNo: serviceRaw.rights.rightsNo,
- storeName: serviceRaw.rights.storeName,
- type: serviceRaw.rights.rightsType,
- typeDesc: ServiceTypeDesc[serviceRaw.rights.rightsType],
- status: serviceRaw.rights.rightsStatus,
- statusIcon: this.genStatusIcon(serviceRaw.rights),
- statusName: serviceRaw.rights.userRightsStatusName,
- statusDesc: serviceRaw.rights.userRightsStatusDesc,
- amount: serviceRaw.rights.refundRequestAmount,
- goodsList: (serviceRaw.rightsItem || []).map((item, i) => ({
- id: i,
- thumb: item.goodsPictureUrl,
- title: item.goodsName,
- specs: (item.specInfo || []).map((s) => s.specValues || ''),
- itemRefundAmount: item.itemRefundAmount,
- rightsQuantity: item.rightsQuantity,
- })),
- orderNo: serviceRaw.rights.orderNo, // 订单编号
- rightsNo: serviceRaw.rights.rightsNo, // 售后服务单号
- rightsReasonDesc: serviceRaw.rights.rightsReasonDesc, // 申请售后原因
- isRefunded: serviceRaw.rights.userRightsStatus === ServiceStatus.REFUNDED, // 是否已退款
- refundMethodList: (serviceRaw.refundMethodList || []).map((m) => ({
- name: m.refundMethodName,
- amount: m.refundMethodAmount,
- })), // 退款明细
- refundRequestAmount: serviceRaw.rights.refundRequestAmount, // 申请退款金额
- payTraceNo: serviceRaw.rightsRefund.traceNo, // 交易流水号
- createTime: formatTime(parseFloat(`${serviceRaw.rights.createTime}`), 'YYYY-MM-DD HH:mm'), // 申请时间
- logisticsNo: serviceRaw.logisticsVO.logisticsNo, // 退货物流单号
- logisticsCompanyName: serviceRaw.logisticsVO.logisticsCompanyName, // 退货物流公司
- logisticsCompanyCode: serviceRaw.logisticsVO.logisticsCompanyCode, // 退货物流公司
- remark: serviceRaw.logisticsVO.remark, // 退货备注
- receiverName: serviceRaw.logisticsVO.receiverName, // 收货人
- receiverPhone: serviceRaw.logisticsVO.receiverPhone, // 收货人电话
- receiverAddress: this.composeAddress(serviceRaw), // 收货人地址
- applyRemark: serviceRaw.rightsRefund.refundDesc, // 申请退款时的填写的说明
- buttons: serviceRaw.buttonVOs || [],
- logistics: serviceRaw.logisticsVO,
- };
- const proofs = serviceRaw.rights.rightsImageUrls || [];
- this.setData({
- serviceRaw,
- service,
- deliveryButton,
- 'gallery.proofs': proofs,
- showProofs:
- serviceRaw.rights.userRightsStatus === ServiceStatus.PENDING_VERIFY &&
- (service.applyRemark || proofs.length > 0),
- });
- wx.setNavigationBarTitle({
- title: TitleConfig[service.type],
- });
- });
- },
- composeAddress(service) {
- return [
- service.logisticsVO.receiverProvince,
- service.logisticsVO.receiverCity,
- service.logisticsVO.receiverCountry,
- service.logisticsVO.receiverArea,
- service.logisticsVO.receiverAddress,
- ]
- .filter((item) => !!item)
- .join(' ');
- },
- onRefresh() {
- this.init();
- },
- editLogistices() {
- this.setData({
- inputDialogVisible: true,
- });
- this.inputDialog.setData({
- cancelBtn: '取消',
- confirmBtn: '确定',
- });
- this.inputDialog._onConfirm = () => {
- Toast({
- message: '确定填写物流单号',
- });
- };
- },
- onProofTap(e) {
- if (this.data.gallery.show) {
- this.setData({
- 'gallery.show': false,
- });
- return;
- }
- const { index } = e.currentTarget.dataset;
- this.setData({
- 'gallery.show': true,
- 'gallery.current': index,
- });
- },
- onGoodsCardTap(e) {
- const { index } = e.currentTarget.dataset;
- const goods = this.data.serviceRaw.rightsItem[index];
- wx.navigateTo({ url: `/pages/goods/details/index?skuId=${goods.skuId}` });
- },
- onServiceNoCopy() {
- wx.setClipboardData({
- data: this.data.service.serviceNo,
- });
- },
- onAddressCopy() {
- wx.setClipboardData({
- data: `${this.data.service.receiverName} ${this.data.service.receiverPhone}\n${this.data.service.receiverAddress}`,
- });
- },
- /** 获取状态ICON */
- genStatusIcon(item) {
- const { userRightsStatus, afterSaleRequireType } = item;
- switch (userRightsStatus) {
- // 退款成功
- case ServiceStatus.REFUNDED: {
- return 'succeed';
- }
- // 已取消、已关闭
- case ServiceStatus.CLOSED: {
- return 'indent_close';
- }
- default: {
- switch (afterSaleRequireType) {
- case 'REFUND_MONEY': {
- return 'goods_refund';
- }
- case 'REFUND_GOODS_MONEY':
- return 'goods_return';
- default: {
- return 'goods_return';
- }
- }
- }
- }
- },
- });
|