...
|
...
|
@@ -12,10 +12,19 @@ const _ = require('lodash'); |
|
|
const mcHandler = require('./menu-crumb-handler');
|
|
|
const returnsAPI = require('./returns-api');
|
|
|
|
|
|
// const logger = global.yoho.logger;
|
|
|
|
|
|
const helpers = global.yoho.helpers;
|
|
|
|
|
|
const pageSize = 10;
|
|
|
|
|
|
const returnAddress = {
|
|
|
address: '江苏省南京市江宁区江宁经济技术开发区苏源大道87号YOHO!BUY(有货)物流中心东一楼',
|
|
|
name: 'YOHO!',
|
|
|
code: '210000',
|
|
|
phone: '17714194699'
|
|
|
};
|
|
|
|
|
|
// const _reduceArrByProductSku = data => {
|
|
|
// const d = [];
|
|
|
//
|
...
|
...
|
@@ -92,6 +101,12 @@ const _calcStatusRate = (num, total) => { |
|
|
return rate;
|
|
|
};
|
|
|
|
|
|
const submitChange = (data, uid) => {
|
|
|
return returnsAPI.changeSubmitAsync(data, uid).then(result => {
|
|
|
return result;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
const _setDefaultStatus = (type) => {
|
|
|
const list = ['提交申请', '审核通过', '商品寄回', '商品入库', `${type}完成`];
|
|
|
let statusList = [];
|
...
|
...
|
@@ -192,11 +207,13 @@ const _setRefundDetailData = (data) => { |
|
|
id: data.id || 0
|
|
|
};
|
|
|
|
|
|
data.status = 20;
|
|
|
|
|
|
switch (data.status) {
|
|
|
case 10:
|
|
|
resData.orderReview = {pass: true};
|
|
|
resData.refundExpress = true;
|
|
|
resData.refundAddress = true;
|
|
|
resData.refundAddress = returnAddress;
|
|
|
break;
|
|
|
case 20:
|
|
|
resData.refundExpress = true;
|
...
|
...
|
@@ -205,13 +222,36 @@ const _setRefundDetailData = (data) => { |
|
|
resData.backStorage = true;
|
|
|
break;
|
|
|
case 40:
|
|
|
resData.refundSure = true;
|
|
|
resData.refundSure = {
|
|
|
mode: data.return_amount_mode_name,
|
|
|
account: data.return_amount_mode_name,
|
|
|
amount: data.return_amount_total,
|
|
|
coin: data.use_yoho_coin_num
|
|
|
};
|
|
|
break;
|
|
|
case 91:
|
|
|
resData.cancelApply = true;
|
|
|
break;
|
|
|
default:
|
|
|
resData.orderReview = true;
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
if (resData.refundExpress) {
|
|
|
resData.refundExpress = {expressList: data.expressList};
|
|
|
|
|
|
if (_.get(data, 'notice.id', 0) === 20) {
|
|
|
let company = _.get(data, 'notice.express_company'),
|
|
|
key = _.findKey(data.expressList, {name: company});
|
|
|
|
|
|
Object.assign(resData.refundExpress, {
|
|
|
id: key ? data.expressList[key].id : 0,
|
|
|
company: company,
|
|
|
number: _.get(data, 'notice.express_number', 0)
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
let goods = [];
|
|
|
|
|
|
_.forEach(data.goods_list, value => {
|
...
|
...
|
@@ -236,18 +276,75 @@ const _setRefundDetailData = (data) => { |
|
|
return resData;
|
|
|
};
|
|
|
|
|
|
const _setExpressData = (data) => {
|
|
|
var resData = [];
|
|
|
|
|
|
if (!_.isEmpty(data)) {
|
|
|
let list = [];
|
|
|
|
|
|
_.forEach(data, value => {
|
|
|
list = list.concat(value);
|
|
|
});
|
|
|
_.forEach(list, value => {
|
|
|
resData.push({
|
|
|
id: value.id,
|
|
|
name: value.company_name
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
|
|
|
return resData;
|
|
|
};
|
|
|
|
|
|
const _setExchangeDetailData = (data) => {
|
|
|
data = camelCase(data);
|
|
|
|
|
|
data.status = 10;
|
|
|
|
|
|
let list = {};
|
|
|
|
|
|
switch (data.status) {
|
|
|
case 0:
|
|
|
list.audit = true;
|
|
|
break;
|
|
|
case 10:
|
|
|
list.through = true;
|
|
|
|
|
|
if (data.deliveryTpyeName === '寄回换货') {
|
|
|
list.courier = true;
|
|
|
}
|
|
|
break;
|
|
|
case 50:
|
|
|
list.send = true;
|
|
|
list.auditSuccess = true;
|
|
|
break;
|
|
|
case 40:
|
|
|
list.finish = true;
|
|
|
list.auditSuccess = true;
|
|
|
break;
|
|
|
case 91:
|
|
|
list.cancel = true;
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
return list;
|
|
|
};
|
|
|
|
|
|
const getRefundGoodsData = (orderCode, uid) => {
|
|
|
return returnsAPI.getRefundGoodsAsync(orderCode, uid).then(result => {
|
|
|
let resData = {};
|
|
|
|
|
|
Object.assign(resData, _setSideMenu('我的退/换货'));
|
|
|
|
|
|
|
|
|
resData.returns = {
|
|
|
title: '退货申请',
|
|
|
refund: _setDefaultStatus('退货') || {}
|
|
|
};
|
|
|
|
|
|
// console.log(resData);
|
|
|
|
|
|
if (result.data) {
|
|
|
Object.assign(resData.returns.refund, _setRefundGoodList(result.data), {
|
|
|
orderCode: orderCode
|
...
|
...
|
@@ -259,25 +356,35 @@ const getRefundGoodsData = (orderCode, uid) => { |
|
|
};
|
|
|
|
|
|
const getRefundDetailData = (applyId, uid) => {
|
|
|
return returnsAPI.getRefundDetailAsync(applyId, uid).then(result => {
|
|
|
return Promise.all([
|
|
|
returnsAPI.getRefundDetailAsync(applyId, uid),
|
|
|
returnsAPI.getExpressCompanyAsync()
|
|
|
]).then(result => {
|
|
|
let resData = {};
|
|
|
|
|
|
resData = {
|
|
|
Object.assign(resData, _setSideMenu('我的退/换货'));
|
|
|
|
|
|
resData.returns = {
|
|
|
title: '退货申请',
|
|
|
refundDetail: {}
|
|
|
};
|
|
|
Object.assign(resData, _setSideMenu('我的退/换货'));
|
|
|
|
|
|
if (result.data) {
|
|
|
let data = result.data;
|
|
|
if (result[0] && result[0].data) {
|
|
|
let data = result[0].data;
|
|
|
|
|
|
if (result[1] && result[1].data) {
|
|
|
data.expressList = _setExpressData(result[1].data);
|
|
|
}
|
|
|
|
|
|
// console.log(_setRefundDetailData(result.data));
|
|
|
Object.assign(resData.refundDetail, _setReturnStatus(data.statusList, !data.status));
|
|
|
// 设置状态进度
|
|
|
Object.assign(resData.returns.refundDetail, _setReturnStatus(data.statusList, !data.status));
|
|
|
|
|
|
// 设置退货详情信息
|
|
|
Object.assign(resData.returns.refundDetail, _setRefundDetailData(data));
|
|
|
|
|
|
Object.assign(resData.refundDetail, _setRefundDetailData(data));
|
|
|
}
|
|
|
|
|
|
return {returns: resData};
|
|
|
return resData;
|
|
|
});
|
|
|
};
|
|
|
|
...
|
...
|
@@ -289,7 +396,7 @@ const saveRefund = (orderCode, uid, goods, payment) => { |
|
|
return {
|
|
|
code: 200,
|
|
|
data: {
|
|
|
refer: helpers.urlFormat(`/return/refund/detail/${subRes.data.apply_id}`)
|
|
|
refer: `/me/return/refund/detail/${subRes.data.apply_id}`
|
|
|
}
|
|
|
};
|
|
|
}
|
...
|
...
|
@@ -324,9 +431,9 @@ const getChangeGoodsList = (orderCode, uid) => { |
|
|
if (result && result.data) {
|
|
|
data = camelCase(result.data);
|
|
|
|
|
|
|
|
|
// data.goodsList = _reduceArrByProductSku(data.goodsList);
|
|
|
data.hidePrice = true;
|
|
|
data.orderCode = orderCode;
|
|
|
|
|
|
data.goodsList.forEach(good => {
|
|
|
good.showCheckbox = true;
|
...
|
...
|
@@ -344,11 +451,84 @@ const getChangeGoodsList = (orderCode, uid) => { |
|
|
});
|
|
|
};
|
|
|
|
|
|
const getExchangeDetailData = (id, uid) => {
|
|
|
return Promise.all([
|
|
|
returnsAPI.getExchangeDetail(id, uid),
|
|
|
returnsAPI.getExpressCompanyAsync()
|
|
|
]).then(result => {
|
|
|
|
|
|
let exchangeData = {};
|
|
|
|
|
|
Object.assign(exchangeData, _setSideMenu('我的退/换货'));
|
|
|
exchangeData = {
|
|
|
title: '换货申请',
|
|
|
exchangeDetail: {}
|
|
|
};
|
|
|
|
|
|
// if (result.data) {
|
|
|
// // console.log(_setRefundDetailData(result.data));
|
|
|
|
|
|
// Object.assign(exchangeData.exchangeDetail, _setReturnStatus(result.data.statusList));// 头部
|
|
|
|
|
|
// Object.assign(exchangeData.exchangeDetail, _setExchangeDetailData(result.data));
|
|
|
|
|
|
// Object.assign(exchangeData.exchangeDetail, camelCase(result.data));
|
|
|
// }
|
|
|
|
|
|
if (result[0] && result[0].data) {
|
|
|
|
|
|
let data = result[0].data;
|
|
|
|
|
|
if (result[1] && result[1].data) {
|
|
|
data.expressList = _setExpressData(result[1].data);
|
|
|
}
|
|
|
|
|
|
Object.assign(exchangeData.exchangeDetail, _setReturnStatus(data.statusList));// 头部
|
|
|
|
|
|
Object.assign(exchangeData.exchangeDetail, _setExchangeDetailData(data));
|
|
|
|
|
|
Object.assign(exchangeData.exchangeDetail, camelCase(data));
|
|
|
|
|
|
}
|
|
|
|
|
|
// console.log(exchangeData.exchangeDetail.expressList);
|
|
|
return exchangeData;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
const cancelReturnApply = (id, uid, type) => {
|
|
|
return returnsAPI.cancelReturnAsync(id, uid, type).then(result => {
|
|
|
let resData = result || {
|
|
|
code: 400,
|
|
|
message: '取消失败'
|
|
|
};
|
|
|
|
|
|
return resData;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
const setBackEepress = (uid, param) => {
|
|
|
const type = param.type === 'exchange';
|
|
|
|
|
|
return returnsAPI.setExpressNumberAsync(uid, param, type).then(result => {
|
|
|
let resData = result || {
|
|
|
code: 400,
|
|
|
message: '设置寄回单号失败'
|
|
|
};
|
|
|
|
|
|
return resData;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
module.exports = {
|
|
|
getUserReturn,
|
|
|
getRefundGoodsData,
|
|
|
getChangeGoodsList,
|
|
|
getProductInfo,
|
|
|
getRefundDetailData,
|
|
|
saveRefund
|
|
|
saveRefund,
|
|
|
getExchangeDetailData,
|
|
|
submitChange,
|
|
|
cancelReturnApply,
|
|
|
setBackEepress
|
|
|
}; |
...
|
...
|
|