...
|
...
|
@@ -8,63 +8,110 @@ const _ = require('lodash'); |
|
|
|
|
|
const pageSize = 10;
|
|
|
|
|
|
// 订单列表类型对应的导航下标
|
|
|
const typeActiveIndexMap = {
|
|
|
1: 0,
|
|
|
2: 1,
|
|
|
3: 2
|
|
|
};
|
|
|
|
|
|
const btnMap = {
|
|
|
all: [
|
|
|
{
|
|
|
name: '立即付款',
|
|
|
classStr: 'btn red pay-btn mr'
|
|
|
},
|
|
|
{
|
|
|
name: '修改订单',
|
|
|
classStr: 'btn white edit-btn mr'
|
|
|
},
|
|
|
{
|
|
|
name: '取消订单',
|
|
|
classStr: 'btn white cancel-btn'
|
|
|
}
|
|
|
],
|
|
|
edit: [
|
|
|
{
|
|
|
name: '修改订单',
|
|
|
classStr: 'btn white edit-btn'
|
|
|
}
|
|
|
],
|
|
|
complete: [
|
|
|
{
|
|
|
name: '确认收货',
|
|
|
classStr: 'btn complete-btn'
|
|
|
}
|
|
|
]
|
|
|
|
|
|
};
|
|
|
|
|
|
// 订单状态
|
|
|
const statusMap = {
|
|
|
0: {
|
|
|
value: 0,
|
|
|
valueStr: '待付款',
|
|
|
step: 1
|
|
|
step: 1,
|
|
|
btns: btnMap.all
|
|
|
},
|
|
|
1: {
|
|
|
value: 1,
|
|
|
valueStr: '已付款',
|
|
|
step: 1
|
|
|
valueStr: '备货中',
|
|
|
step: 1,
|
|
|
btns: btnMap.edit
|
|
|
},
|
|
|
2: {
|
|
|
value: 1,
|
|
|
valueStr: '备货中',
|
|
|
step: 1
|
|
|
step: 1,
|
|
|
btns: btnMap.edit
|
|
|
},
|
|
|
3: {
|
|
|
value: 1,
|
|
|
valueStr: '配货中',
|
|
|
step: 1
|
|
|
valueStr: '备货中',
|
|
|
step: 1,
|
|
|
btns: btnMap.edit
|
|
|
},
|
|
|
4: {
|
|
|
value: 2,
|
|
|
valueStr: '已发货',
|
|
|
step: 2
|
|
|
step: 2,
|
|
|
showGetBtn: true,
|
|
|
btns: btnMap.complete
|
|
|
},
|
|
|
5: {
|
|
|
value: 2,
|
|
|
valueStr: '运输中',
|
|
|
step: 3
|
|
|
valueStr: '待收货',
|
|
|
step: 3,
|
|
|
showGetBtn: true,
|
|
|
btns: btnMap.complete
|
|
|
},
|
|
|
6: {
|
|
|
value: 3,
|
|
|
valueStr: '已完成',
|
|
|
step: 4
|
|
|
valueStr: '交易完成',
|
|
|
step: 4,
|
|
|
showEditor: true
|
|
|
}
|
|
|
};
|
|
|
|
|
|
// 订单类型为手机的订单
|
|
|
const isMobileOrder = {
|
|
|
3: true,
|
|
|
4: true,
|
|
|
6: true
|
|
|
};
|
|
|
|
|
|
|
|
|
// 根据订单状态获取当前步骤
|
|
|
const _getStepByOrderStatus = (st) => {
|
|
|
let steps = [
|
|
|
{
|
|
|
stepStr: '1.提交订单'
|
|
|
} ,
|
|
|
},
|
|
|
{
|
|
|
stepStr: '2.商品出库'
|
|
|
} ,
|
|
|
},
|
|
|
{
|
|
|
stepStr: '3.等待收货'
|
|
|
} ,
|
|
|
},
|
|
|
{
|
|
|
stepStr: '4.交易完成'
|
|
|
}
|
...
|
...
|
@@ -75,11 +122,13 @@ const _getStepByOrderStatus = (st) => { |
|
|
steps[i].isActive = true;
|
|
|
}
|
|
|
|
|
|
// 最后一个激活步骤需要特殊处理样式
|
|
|
steps[curStep - 1].isLastActive = true;
|
|
|
|
|
|
return steps;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
// 转换时间戳
|
|
|
const _convertUnixTime = (src) => {
|
|
|
return moment.unix(src).format('YYYY-MM-DD hh:mm:ss');
|
|
|
};
|
...
|
...
|
@@ -104,6 +153,15 @@ const cancelOrder = (uid, code) => { |
|
|
});
|
|
|
};
|
|
|
|
|
|
const getCancelOrderReason = () => {
|
|
|
return api.get('', {
|
|
|
method: 'app.SpaceOrders.closeReasons'
|
|
|
}, {
|
|
|
cache: true
|
|
|
});
|
|
|
};
|
|
|
|
|
|
|
|
|
const getExpressInfo = (uid, code) => {
|
|
|
return api.get('', {
|
|
|
method: 'app.express.get',
|
...
|
...
|
@@ -159,19 +217,22 @@ const _getUserOrder = (uid, type, page) => { |
|
|
|
|
|
// 具体订单类型见 http://git.yoho.cn/yoho-documents/api-interfaces/blob/master/%E8%AE%A2%E5%8D%95/order.md
|
|
|
// 判断是否是手机订单,3, 4, 6对应 iOS, Android, H5
|
|
|
item.showMobile = ot === 3 || ot === 4 || ot === 6;
|
|
|
item.showMobile = isMobileOrder[ot];
|
|
|
|
|
|
// 判断是否展示编辑选项
|
|
|
item.showEditOption = st === 6;
|
|
|
item.showEditOption = statusMap[st].showEditor;
|
|
|
|
|
|
// 判断是否是待收货状态
|
|
|
item.showGetBtn = st === 4 || st === 5;
|
|
|
item.showGetBtn = statusMap[st].showGetBtn;
|
|
|
|
|
|
item.showBuyBtn = item.isCancel === 'Y';
|
|
|
|
|
|
if (item.statusStr === '已付款') {
|
|
|
item.statusStr = '备货中';
|
|
|
if (item.isCancel === 'Y') {
|
|
|
item.showBuyBtn = true;
|
|
|
item.statusStr = '已取消';
|
|
|
} else {
|
|
|
item.statusStr = statusMap[st].valueStr;
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
return {
|
...
|
...
|
@@ -182,6 +243,40 @@ const _getUserOrder = (uid, type, page) => { |
|
|
});
|
|
|
};
|
|
|
|
|
|
const _convertAddress = (addressList, createTime) => {
|
|
|
let addrList = [];
|
|
|
|
|
|
addressList.forEach(addr => {
|
|
|
let address = {
|
|
|
time: '',
|
|
|
city: '',
|
|
|
action: ''
|
|
|
};
|
|
|
|
|
|
address.time = addr.acceptTime;
|
|
|
addr = addr.acceptAddress.split(' ');
|
|
|
|
|
|
if (addr.length > 1 && /市/.test(addr[0])) {
|
|
|
address.city = addr[0].replace('市', '');
|
|
|
addr.splice(0, 1);
|
|
|
address.action = addr.join('');
|
|
|
} else {
|
|
|
address.action = addr.join('');
|
|
|
}
|
|
|
|
|
|
|
|
|
addrList.push(address);
|
|
|
});
|
|
|
|
|
|
// 增加一个默认初始状态
|
|
|
addrList.push({
|
|
|
time: createTime,
|
|
|
action: '您的订单已提交,等待付款'
|
|
|
});
|
|
|
|
|
|
return _.reverse(addrList);
|
|
|
};
|
|
|
|
|
|
const getOrderData = (uid, type, page) => {
|
|
|
const navBar = {
|
|
|
tabs: [
|
...
|
...
|
@@ -234,34 +329,6 @@ const getOrderData = (uid, type, page) => { |
|
|
});
|
|
|
};
|
|
|
|
|
|
const _convertAddress = addressList => {
|
|
|
let addrList = [];
|
|
|
|
|
|
addressList.forEach(addr => {
|
|
|
let address = {
|
|
|
time: '',
|
|
|
city: '',
|
|
|
action: ''
|
|
|
};
|
|
|
|
|
|
address.time = addr.acceptTime;
|
|
|
addr = addr.acceptAddress.split(' ');
|
|
|
|
|
|
if (addr.length > 1 && /市/.test(addr[0])) {
|
|
|
address.city = addr[0].replace('市', '');
|
|
|
addr.splice(0, 1);
|
|
|
address.action = addr.join('');
|
|
|
} else {
|
|
|
address.action = addr.join('');
|
|
|
}
|
|
|
|
|
|
|
|
|
addrList.push(address);
|
|
|
});
|
|
|
|
|
|
return _.reverse(addrList);
|
|
|
};
|
|
|
|
|
|
const getOrderDetail = (uid, code) => {
|
|
|
return api.all([_getDetail(uid, code), getExpressInfo(uid, code)]).then(result => {
|
|
|
let detail = result[0] && camelCase(result[0].data);
|
...
|
...
|
@@ -280,10 +347,12 @@ const getOrderDetail = (uid, code) => { |
|
|
|
|
|
if (detail.isCancel !== 'Y') {
|
|
|
detail.steps = _getStepByOrderStatus(detail.status);
|
|
|
detail.btns = statusMap[detail.status].btns;
|
|
|
}
|
|
|
|
|
|
|
|
|
detail.expressInfo = express;
|
|
|
detail.expressInfo.addressList = _convertAddress(express.expressDetail);
|
|
|
detail.expressInfo.addressList = _convertAddress(express.expressDetail, detail.createTime);
|
|
|
|
|
|
return {
|
|
|
orderDetail: Object.assign(basicData, detail)
|
...
|
...
|
@@ -296,6 +365,7 @@ module.exports = { |
|
|
getOrderData: getOrderData,
|
|
|
getOrderDetail: getOrderDetail,
|
|
|
cancelOrder: cancelOrder,
|
|
|
getCancelOrderReason: getCancelOrderReason,
|
|
|
deleteOrder: deleteOrder,
|
|
|
getExpressInfo: getExpressInfo
|
|
|
}; |
...
|
...
|
|