Authored by xuqi

Merge remote-tracking branch 'origin/develop' into release/1.0

Conflicts:
	apps/me/router.js
... ... @@ -58,7 +58,9 @@ const getOrderList = (req, res) => {
page: 'order',
isMe: true,
orderList: result.order.orderList,
paginationOpts: result.order.paginationOpts
paginationOpts: result.order.paginationOpts,
emptyMsg: result.order.emptyMsg,
showEmptyEn: result.order.showEmptyEn
});
});
};
... ... @@ -79,9 +81,9 @@ const getOrderTotal = (req, res) => {
const cancelOrder = (req, res) => {
const uid = req.user.uid || '10931021';
const code = req.query.orderCode;
const data = req.query;
orderModel.cancelOrder(uid, code).then(result => {
orderModel.cancelOrder(uid, data).then(result => {
res.json(result);
});
};
... ... @@ -121,14 +123,24 @@ const editOrder = (req, res) => {
});
};
const reAdd = (req, res) => {
const uid = req.user.uid || '10931021';
const code = req.query.orderCode;
orderModel.reAddCart(uid, code).then(result => {
res.json(result);
});
};
module.exports = {
index: index,
detail: detail,
getOrderList: getOrderList,
getOrderTotal: getOrderTotal,
cancelOrder: cancelOrder,
deleteOrder: deleteOrder,
editOrder: editOrder,
getExpressInfo: getExpressInfo,
getCancelOrderReason: getCancelOrderReason
index,
detail,
getOrderList,
getOrderTotal,
cancelOrder,
deleteOrder,
editOrder,
getExpressInfo,
getCancelOrderReason,
reAdd
};
... ...
... ... @@ -11,7 +11,7 @@ const _ = require('lodash');
const index = (req, res, next) => {
const uid = global.yoho.uid || '8050560';
const uid = global.yoho.uid || '8050882';
const page = req.query.page;
returns.getUserReturn(uid, page).then(result => {
... ... @@ -32,7 +32,7 @@ const detail = (req, res, next) => {
};
const refund = (req, res, next) => {
let uid = req.user.uid || '8050560';
let uid = req.user.uid || '8050882';
let code = parseInt(req.params.orderCode, 10) || '160192757';
if (!uid || !code) {
... ... @@ -41,7 +41,7 @@ const refund = (req, res, next) => {
returns.getRefundGoodsData(code, uid).then(result => {
res.display('index', {
page: 'returns-refund',
page: 'refund',
content: result
});
}).catch(next);
... ... @@ -68,7 +68,7 @@ const refundApply = (req, res, next) => {
const refundDetail = (req, res, next) => {
let applyId = parseInt(req.params.applyId, 10) || '429528',
uid = req.user.uid || '8050560';
uid = req.user.uid || '8050882';
if (!uid || !applyId) {
return next();
... ... @@ -76,7 +76,7 @@ const refundDetail = (req, res, next) => {
returns.getRefundDetailData(applyId, uid).then(result => {
res.display('index', {
page: 'returns-refund',
page: 'refund-detail',
content: result
});
}).catch(next);
... ... @@ -84,11 +84,11 @@ const refundDetail = (req, res, next) => {
const exchange = (req, res, next) => {
const code = req.params.orderCode;
const uid = req.user.uid || '8050560';
const uid = req.user.uid || '8050882';
returns.getChangeGoodsList(code, uid).then(result => {
res.display('index', {
page: 'returns-change',
page: 'exchange',
isMe: true,
content: Object.assign({
nav: mcHandler.getMeCrumb('我的退/换货'),
... ... @@ -109,7 +109,7 @@ const getProductInfo = (req, res, next) => {
};
const detailExchange = (req, res) => {
// const uid = global.yoho.uid || '8050560';
// const uid = global.yoho.uid || '8050882';
// const page = req.query.page;
res.display('index', {
... ...
... ... @@ -134,7 +134,6 @@ const bindMobile = (req, res, next) => {
info.checkCode = settingModel.cipheriv(info.uid + '.completeverify');
// info.checkCode = settingModel.cipheriv("20000190" + ".completeverify");
console.log('info.checkCode:', info.checkCode);
res.display('index', {
module: 'me',
page: 'setting',
... ... @@ -225,7 +224,7 @@ const edit = (req, res)=> {
let code = settingModel.decipheriv(req.query.checkCode.split(' ').join('+'));
let codes = code.split('.');
if (codes[0] === req.user.uid && codes[1] === 'completeverify') {
if (parseInt(codes[0], 10) === req.user.uid && codes[1] === 'completeverify') {
// if (codes[0] === "20000190" && codes[1] === "completeverify") {
let result = {
title: _getTitle(type).typeName,
... ... @@ -267,7 +266,7 @@ const success = (req, res)=> {
let code = settingModel.decipheriv(req.query.checkCode.split(' ').join('+'));
let codes = code.split('.');
if (codes[0] === req.user.uid && codes[1] === 'completeoperate') {
if (parseInt(codes[0], 10) === req.user.uid && codes[1] === 'completeoperate') {
// if (codes[0] === "20000190" && codes[1] === "completeoperate") {
let result = {
title: _getTitle(type).typeName,
... ...
... ... @@ -4,6 +4,8 @@ const api = global.yoho.API;
const camelCase = global.yoho.camelCase;
const moment = require('moment');
const helpers = global.yoho.helpers;
const _ = require('lodash');
const pageSize = 10;
... ... @@ -262,6 +264,12 @@ const _getUserOrder = (uid, type, page) => {
item.statusStr = statusMap[st].valueStr;
}
item.payUrl = helpers.urlFormat('/shopping/pay/online', {
code: item.orderCode
});
item.refundUrl = helpers.urlFormat('/me/return/refund/' + item.orderCode);
item.exchangeUrl = helpers.urlFormat('/me/return/exchange/' + item.orderCode);
});
return {
... ... @@ -470,12 +478,12 @@ const reAddCart = (uid, code) => {
};
module.exports = {
getOrderData: getOrderData,
getOrderDetail: getOrderDetail,
cancelOrder: cancelOrder,
getCancelOrderReason: getCancelOrderReason,
deleteOrder: deleteOrder,
editOrder: editOrder,
getExpressInfo: getExpressInfo,
getOrderData,
getOrderDetail,
cancelOrder,
getCancelOrderReason,
deleteOrder,
editOrder,
getExpressInfo,
reAddCart: reAddCart
};
... ...
... ... @@ -111,7 +111,7 @@ const _setDefaultStatus = (type) => {
};
return resData;
}
};
const _setReturnStatus = (list, half) => {
let resData = {};
... ... @@ -188,7 +188,9 @@ const _setRefundGoodList = (data) => {
};
const _setRefundDetailData = (data) => {
let resData = {};
let resData = {
id: data.id || 0
};
switch (data.status) {
case 10:
... ... @@ -210,6 +212,27 @@ const _setRefundDetailData = (data) => {
break;
}
let goods = [];
_.forEach(data.goods_list, value => {
let cnAlphabet = value.cn_alphabet ? value.cn_alphabet : '';
goods.push({
href: helpers.urlFormat(`/product/pro_${value.product_id}_${value.goods_id}/${cnAlphabet}.html`),
img: value.goods_image,
name: value.product_name,
size: value.size_name,
color: value.color_name,
num: 1, // 接口目前不支持
reason: value.reason_name || '--',
price: value.sales_price,
remark: value.remark,
evidence: value.evidence_images
});
});
resData.goods = goods;
return resData;
};
... ... @@ -239,18 +262,19 @@ const getRefundDetailData = (applyId, uid) => {
return returnsAPI.getRefundDetailAsync(applyId, uid).then(result => {
let resData = {};
Object.assign(resData, _setSideMenu('我的退/换货'));
resData = {
title: '退货申请',
refundDetail: {}
};
Object.assign(resData, _setSideMenu('我的退/换货'));
if (result.data) {
// console.log(_setRefundDetailData(result.data));
let data = result.data;
Object.assign(resData.refundDetail, _setReturnStatus(result.data.statusList));
// console.log(_setRefundDetailData(result.data));
Object.assign(resData.refundDetail, _setReturnStatus(data.statusList, !data.status));
Object.assign(resData.refundDetail, _setRefundDetailData(result.data));
Object.assign(resData.refundDetail, _setRefundDetailData(data));
}
return {returns: resData};
... ... @@ -310,7 +334,6 @@ const getChangeGoodsList = (orderCode, uid) => {
// good.buyNumber = good.num;
good.buyNumber = 1;
data.goodsList[2].colorId = 1;
});
}
... ...
... ... @@ -31,7 +31,7 @@ router.get('/cancelOrder', order.cancelOrder);
router.get('/getCancelOrderReason', order.getCancelOrderReason);
router.get('/getExpressInfo', order.getExpressInfo);
router.get('/editOrder', order.editOrder);
//router.get('/reAdd', order.reAddCart);
router.get('/reAdd', order.reAdd);
// 退换货
router.get('/return', returns.index);
... ...
... ... @@ -3,7 +3,6 @@
{{#orderList}}
<div class="order" data-code="{{orderCode}}">
{{> order/order-header}}
<div class="table-body">
{{> order/goods-box}}
<div class="common-column special-border">
... ... @@ -21,15 +20,19 @@
<div class="pay-operation">
{{#if isOnlinePaid}}
<span class="iconfont">&#xe606;</span><p class="left-time" data-left="{{payLefttime}}"></p>
<a href="{{payUrl}}">
<span class="btn red">立即付款</span>
</a>
{{/if}}
<p class="subtext cancel">取消订单</p>
</div>
{{/if}}
{{#if showEditOption}}
<p class="subtext">评价晒单</p>
<p class="subtext">申请退货</p>
<a href="/me/return/exchange/{{orderCode}}">
<a href="{{refundUrl}}">
<p class="subtext">申请退货</p>
</a>
<a href="{{exchangeUrl}}">
<p class="subtext">申请换货</p>
</a>
<p class="subtext delete">删除订单</p>
... ...
{{# refundDetail}}
<div class="refund-datail-wrap">
<div class="refund-datail-wrap" data-id="{{id}}">
{{> returns/returns-status}}
{{# orderReview}}
<div class="top-tip">
{{#if pass}}
<p class="tip-status">
<span class="iconfont blue">&#xe618;</span>
<span class="blue">退货申请已通过</span>
</p>
{{^}}
<p class="tip-status">
<span class="iconfont blue">&#xe618;</span>
<span class="blue">退货申请审核中</span>
</p>
{{/if}}
{{#if pass}}
<p class="tip-status">
<span class="iconfont blue">&#xe60f;</span>
<span class="blue">退货申请已通过</span>
</p>
{{^}}
<p class="tip-status">
<span class="iconfont blue">&#xe618;</span>
<span class="blue">退货申请审核中</span>
</p>
{{/if}}
<p class="tip-text">
请将商品连同吊牌、包装、发货单(如无发货单,您可找张白纸上注明订单编号,收货人姓名及手机号码)、发票(如有)、 赠品(如有)一并寄回,如有 遗漏将影响您的退换货进度,敬请谅解<br>
非我司原因的退换货,寄回运费由您承担。商品客观问题的退换货,请您先行垫付运费,邮费会在退款中补贴给您,
... ... @@ -31,7 +31,7 @@
{{# backStorage}}
<div class="storage-tip top-tip">
<p class="tip-status">
<span class="iconfont blue">&#xe618;</span>
<span class="iconfont blue">&#xe60f;</span>
<span class="blue">您寄回的商品已收到</span>
</p>
<p>
... ... @@ -44,7 +44,7 @@
{{# refundSure}}
<div class="success-tip top-tip">
<p class="tip-status">
<span class="iconfont blue">&#xe618;</span>
<span class="iconfont blue">&#xe60f;</span>
<span class="blue">退款完成</span>
</p>
<p>退款方式:<em>由于银行内部处理流程的差异,储蓄卡需要3-7个工作日到账,信用卡需要7-15个工作日到账</em></p>
... ... @@ -103,12 +103,27 @@
<p>颜色:{{color}}&nbsp;尺码:{{size}}</p>
<p>×{{num}}</p>
</div>
<div class="reason">dsa{{reason}}</div>
<div class="num">dasd{{num}}</div>
<dl class="special-info hide">
<dd>问题描述:</dd>
<dd>照片凭证:</dd>
</dl>
<div class="reason">{{reason}}</div>
<div class="num">{{num}}</div>
{{#if remark}}
<dl class="special-info">
<dd class="remark">
<label>问题描述:</label>
{{remark}}
</dd>
{{#if evidence}}
<dd>
<label>照片凭证:</label>
{{# evidence}}
<div class="evidence-img">
<img class="lazy" data-original="{{image . 70 90}}">
</div>
{{/ evidence}}
</dd>
{{/if}}
</dl>
{{/if}}
</div>
{{/ goods}}
</div>
... ...
{{# refund}}
{{> returns/returns-status}}
<div class="refund-wrap">
{{> returns/returns-status}}
<h4 class="third-title">选择退货商品</h4>
<div class="refund-goods clearfix" {{# speclialReason}} data-{{id}}="{{@index}}"{{/ speclialReason}}>
<input id="order-code" type="hidden" value="{{orderCode}}">
<ul class="goods-header">
<li class="info">商品信息</li>
<li class="reason">退货原因</li>
<li class="num">退货数量</li>
<li class="price">单价</li>
</ul>
<h4 class="third-title">选择退货商品</h4>
<div class="refund-goods clearfix" {{# speclialReason}} data-{{id}}="{{@index}}"{{/ speclialReason}}>
<input id="order-code" type="hidden" value="{{orderCode}}">
<ul class="goods-header">
<li class="info">商品信息</li>
<li class="reason">退货原因</li>
<li class="num">退货数量</li>
<li class="price">单价</li>
</ul>
{{# goods}}
<div class="goods-item clearfix">
<div class="check" data-skn="{{skn}}" data-skc="{{skc}}" data-sku="{{sku}}" data-price="{{price}}" data-type="{{typeId}}">{{> icon/checkbox}}</div>
<div class="img">
<img class="lazy" data-original="{{image img 70 90}}">
{{# goods}}
<div class="goods-item clearfix">
<div class="check" data-skn="{{skn}}" data-skc="{{skc}}" data-sku="{{sku}}" data-price="{{price}}" data-type="{{typeId}}">{{> icon/checkbox}}</div>
<div class="img">
<img class="lazy" data-original="{{image img 70 90}}">
</div>
<div class="info">
<p>{{name}}</p>
<p>颜色:{{color}}&nbsp;尺码:{{size}}</p>
<p>×{{num}}</p>
</div>
<div class="reason">
<select class="refund-reason">
<option>选择退款原因</option>
{{# reasonList}}
<option value="{{id}}">{{name}}</option>
{{/ reasonList}}
</select>
</div>
<div class="num">
<span class="iconfont">&#xe621;</span>
<input type="text" value="{{num}}" readonly="readonly">
<span class="iconfont">&#xe61f;</span>
</div>
<div class="price">¥{{round price 2}}</div>
{{> returns/special-reason}}
</div>
<div class="info">
<p>{{name}}</p>
<p>颜色:{{color}}&nbsp;尺码:{{size}}</p>
<p>×{{num}}</p>
</div>
<div class="reason">
<select class="refund-reason">
<option>选择退款原因</option>
{{# reasonList}}
<option value="{{id}}">{{name}}</option>
{{/ reasonList}}
</select>
</div>
<div class="num">
<span class="iconfont">&#xe621;</span>
<input type="text" value="{{num}}" readonly="readonly">
<span class="iconfont">&#xe61f;</span>
</div>
<div class="price">¥{{round price 2}}</div>
{{> returns/special-reason}}
</div>
{{/ goods}}
</div>
{{/ goods}}
</div>
<h4 class="third-title">退款方式</h4>
<h4 class="third-title">退款方式</h4>
<div class="refund-type">
<div>
<label class="type-item ali-item cur" title="支付宝"></label>
<label class="type-item union-item" title="银行卡"></label>
<div class="refund-type">
<div>
<label class="type-item ali-item cur" title="支付宝"></label>
<label class="type-item union-item" title="银行卡"></label>
</div>
<dl class="alipay">
<dd>账号:<input type="text" class="name" placeholder="收款人支付宝账号"></dd>
<dd>姓名:<input type="text" class="account" placeholder="姓名"></dd>
</dl>
<dl class="unionpay hide">
<dd>
银行:
<select class="bank">
<option>中国银行</option>
<option>中国农业银行</option>
<option>中国工商银行</option>
<option>中国建设银行</option>
</select>
<input type="text" placeholder="开户支行">
<span class="blue" class="area">例:江苏省南京市奥体支行</span>
</dd>
<dd>账号:<input type="text" class="account" placeholder="收款人银行卡号"></dd>
<dd>姓名:<input type="text" class="name" placeholder="姓名"></dd>
</dl>
</div>
<div class="opt-btn">
<span class="apply-tip blue hide">请填写完整</span>
<div id="apply-btn" class="btn disable">提交申请</div>
</div>
<dl class="alipay">
<dd>账号:<input type="text" class="name" placeholder="收款人支付宝账号"></dd>
<dd>姓名:<input type="text" class="account" placeholder="姓名"></dd>
</dl>
<dl class="unionpay hide">
<dd>
银行:
<select class="bank">
<option>中国银行</option>
<option>中国农业银行</option>
<option>中国工商银行</option>
<option>中国建设银行</option>
</select>
<input type="text" placeholder="开户支行">
<span class="blue" class="area">例:江苏省南京市奥体支行</span>
</dd>
<dd>账号:<input type="text" class="account" placeholder="收款人银行卡号"></dd>
<dd>姓名:<input type="text" class="name" placeholder="姓名"></dd>
</dl>
</div>
<div class="opt-btn">
<span class="apply-tip blue hide">请填写完整</span>
<div id="apply-btn" class="btn disable">提交申请</div>
</div>
{{/ refund}}
... ...
... ... @@ -76,16 +76,26 @@ var sizeTpl = require('../../tpl/me/size-list.hbs');
function setActive($item) {
var color = $item.find('.color-text').data('color');
var size = $item.find('.size-text').data('size');
// var size = $item.find('.size-text').data('size');
var $colorList = $item.find('.color-list');
var $sizeList = $item.find('.size-list');
console.log(color);
$colorList.find('.img-box').each(function(i, box) {
var $box = $(box);
if ($box.find('img').data('color') === color) {
$box.find('.img-box').eq(i).addClass('active');
$colorList.find('.img-box').eq(i).addClass('active');
return false;
}
});
$sizeList.find('span').each(function(i, s) {
var $size = $(s);
if ($size.data('size') === size) {
$sizeList.find('span').eq(i).addClass('active');
}
});
}
... ... @@ -180,7 +190,6 @@ function getProductInfo() {
productSkn: skn
}
}).done(function(result) {
console.log(result);
if (result.code === 200) {
renderList(result.data);
initSizeId();
... ...
... ... @@ -6,6 +6,7 @@
var dialog = require('../plugins/dialog');
var _dialog = dialog.Dialog;
var _alert = dialog.Alert;
var expressTpl = require('../../tpl/me/express.hbs');
... ... @@ -170,14 +171,19 @@ function deleteOrder(code) {
data: {
orderCode: code
}
}).done(function() {
}).done(function(result) {
var type = getCurrentTabType();
var page = getCurrentPage();
type = typeMap[type];
getOrderList(type, page);
if (result && result.code === 200) {
type = typeMap[type];
getOrderList(type, page);
} else {
new _alert('<h1>出错了!请重试!</h1>').show();
}
}).fail(function(err) {
console.log(err);
new _alert('<h1>网络异常!</h1>').show();
});
}
... ...
var dialog = require('../../plugins/dialog');
var _dialog = dialog.Dialog;
var _alert = dialog.Alert;
// 添加.check方法
require('../../plugins/check');
... ... @@ -37,26 +38,33 @@ function cancelOrder(code, onCancel) {
reasonId: reasonId,
reason: reason
}
}).done(function() {
var tip = new _dialog({
className: 'order-dialog alert',
content: '<h1>订单修改</h1>' +
'<span>您已成功取消了该订单</span>',
closeCb: onCancel,
btns: [
{
id: 'cancel-complete',
btnClass: ['confirm'],
name: '确定',
cb: function() {
tip.close(onCancel);
}).done(function(result) {
var tip;
if (result && result.code === 200) {
tip = new _dialog({
className: 'order-dialog alert',
content: '<h1>订单修改</h1>' +
'<span>您已成功取消了该订单</span>',
closeCb: onCancel,
btns: [
{
id: 'cancel-complete',
btnClass: ['confirm'],
name: '确定',
cb: function() {
tip.close(onCancel);
}
}
}
]
}).show();
]
}).show();
} else {
new _alert('<h1>出错了!修改失败!</h1>').show();
}
}).fail(function(err) {
console.log(err);
new _alert('<h1>出错了!修改失败!</h1>').show();
});
}
... ...
... ... @@ -37,7 +37,7 @@
top: 36px;
z-index: 1;
display: none;
width: 310px;
width: 410px;
li {
float: left;
... ... @@ -63,7 +63,7 @@
.dist-name {
font-size: 12px;
display: inline-block;
width: 50px;
width: 75px;
padding: 3px;
text-overflow: ellipsis;
white-space: nowrap;
... ...
... ... @@ -99,14 +99,14 @@
font-size: 12px;
}
}
}
/* 表单必填项提示符 */
.asterisk {
position: relative;
top: 2px;
margin-right: 5px;
color: #c71814 !important;
}
/* 表单必填项提示符 */
.asterisk {
position: relative;
top: 2px;
margin-right: 5px;
color: #c71814 !important;
}
@import "address";
... ... @@ -115,5 +115,4 @@
@import "currency";
@import "setting/index";
@import "favorite/index";
@import "returns";
@import "exchange";
... ...
... ... @@ -72,7 +72,7 @@
position: relative;
.time {
width: 330px;
width: 340px;
height: 42px;
margin-top: -$space;
font-size: $smallSize;
... ...
.returns-wrap {
font-size: 14px;
.returns-status {
padding: 30px 0 80px;
... ... @@ -49,8 +51,106 @@
}
}
}
.third-title {
font-size: 16px;
font-weight: bold;
padding-bottom: 20px;
}
.special-reason {
padding-top: 20px;
display: none;
.left-title {
width: 150px;
padding-left: 54px;
.red {
color: #d93549;
margin-right: 3px;
}
}
.right-content {
width: 570px;
}
.mark-text {
width: 570px;
height: 120px;
resize: none;
border-color: #eee;
}
.img-wrap,
.img-upload {
width: 60px;
height: 60px;
border: 1px dashed #eee;
float: left;
margin-right: 10px;
}
.img-upload {
line-height: 60px;
text-align: center;
color: #dfdfdf;
cursor: pointer;
.iconfont {
font-size: 34px;
}
}
.img-wrap {
position: relative;
}
.img-wrap:hover .img-opt {
display: block;
}
.img-opt {
width: 100%;
height: 20px;
line-height: 20px;
background: #555;
font-size: 12px;
color: #fff;
opacity: 0.7;
position: absolute;
text-align: center;
display: none;
> * {
display: inline-block;
cursor: pointer;
}
}
}
.opt-btn {
padding-top: 40px;
line-height: 40px;
text-align: right;
.blue {
margin-right: 10px;
font-size: 12px;
}
.btn {
width: 130px;
height: 40px;
line-height: 40px;
font-size: 16px;
display: inline-block;
}
}
}
@import "list";
@import "change";
@import "refund";
@import "refund-detail";
... ...
... ... @@ -110,14 +110,32 @@
.info {
width: 284px;
text-align: left;
line-height: 2;
}
.reason,
.num {
line-height: 90px;
}
.special-info {
width: 100%;
height: auto;
padding-left: 15px;
padding-top: 30px;
text-align: left;
}
.remark {
padding-bottom: 15px;
}
.evidence-img {
width: 70px;
height: 90px;
display: inline-block;
vertical-align: top;
}
}
}
}
... ...
.returns-wrap {
font-size: 14px;
.third-title {
font-size: 16px;
font-weight: bold;
padding-bottom: 20px;
}
.special-reason {
padding-top: 20px;
display: none;
.left-title {
width: 150px;
padding-left: 54px;
.red {
color: #d93549;
margin-right: 3px;
}
}
.right-content {
width: 570px;
}
.mark-text {
width: 570px;
height: 120px;
resize: none;
border-color: #eee;
}
.img-wrap,
.img-upload {
width: 60px;
height: 60px;
border: 1px dashed #eee;
float: left;
margin-right: 10px;
}
.img-upload {
line-height: 60px;
text-align: center;
color: #dfdfdf;
cursor: pointer;
.iconfont {
font-size: 34px;
}
}
.img-wrap {
position: relative;
}
.img-wrap:hover .img-opt {
display: block;
}
.img-opt {
width: 100%;
height: 20px;
line-height: 20px;
background: #555;
font-size: 12px;
color: #fff;
opacity: 0.7;
position: absolute;
text-align: center;
display: none;
> * {
display: inline-block;
cursor: pointer;
}
}
}
.opt-btn {
padding-top: 40px;
line-height: 40px;
text-align: right;
.blue {
margin-right: 10px;
font-size: 12px;
}
.btn {
width: 130px;
height: 40px;
line-height: 40px;
font-size: 16px;
display: inline-block;
}
}
.refund-wrap {
.refund-goods {
margin-bottom: 40px;
... ...