Authored by biao

Merge branch 'feature/return' of http://git.yoho.cn/fe/yoho-blk into feature/return

... ... @@ -32,15 +32,14 @@ const detail = (req, res, next) => {
};
const refund = (req, res, next) => {
let code = parseInt(req.params.orderCode, 10);
let uid = req.user.uid || '8050560';
let code = parseInt(req.params.orderCode, 10) || '160192757';
req.user.uid = '8050560';
code = '160192757';
if (!req.user.uid || !code) {
if (!uid || !code) {
return next();
}
returns.getRefundGoodsData(code, req.user.uid).then(result => {
returns.getRefundGoodsData(code, uid).then(result => {
res.display('index', {
page: 'returns-refund',
content: result
... ... @@ -54,9 +53,6 @@ const refundApply = (req, res, next) => {
goods = req.body.goods,
payment = req.body.payment;
uid = '8050560';
orderCode = '160192757';
if (!orderCode || _.isEmpty(goods) || _.isEmpty(payment)) {
return res.json({
code: 203,
... ... @@ -70,6 +66,22 @@ const refundApply = (req, res, next) => {
};
const refundDetail = (req, res, next) => {
let applyId = parseInt(req.params.applyId, 10) || '429528',
uid = req.user.uid || '8050560';
if (!uid || !applyId) {
return next();
}
returns.getRefundDetailData(applyId, uid).then(result => {
res.display('index', {
page: 'returns-refund',
content: result
});
}).catch(next);
};
const exchange = (req, res, next) => {
const code = req.params.orderCode;
const uid = req.user.uid || '8050560';
... ... @@ -96,11 +108,33 @@ const getProductInfo = (req, res, next) => {
}).catch(next);
};
const detailExchange = (req, res) => {
// const uid = global.yoho.uid || '8050560';
// const page = req.query.page;
res.display('index', {
page: 'exchange-detail',
isMe: true,
content: {
nav: mcHandler.getMeCrumb('我的退/换货'),
navigation: mcHandler.getSideMenu('我的退/换货'),
banner: 'http://placehold.it/{width}x{height}'
// exchange: {
// }
}
});
};
module.exports = {
index,
detail,
refund,
refundApply,
exchange,
getProductInfo
getProductInfo,
refundDetail,
detailExchange
};
... ...
... ... @@ -24,6 +24,14 @@ const getRefundGoodsAsync = (orderCode, uid) => {
}, {code: 200});
};
const getRefundDetailAsync = (applyId, uid) => {
return api.get('', {
method: 'app.refund.detail',
id: applyId,
uid: uid
}, {code: 200});
};
const refundSubmitAsync = (orderCode, uid, goods, payment) => {
return api.get('', {
method: 'app.refund.submit',
... ... @@ -31,7 +39,7 @@ const refundSubmitAsync = (orderCode, uid, goods, payment) => {
uid: uid,
goods: JSON.stringify(goods),
payment: JSON.stringify(payment)
});
}, {code: 200});
};
const getChangeGoodsListAsync = (orderCode, uid) => {
... ... @@ -53,8 +61,9 @@ const getProductInfoAsync = (productId, productSkn) => {
module.exports = {
getOrderInfoAsync,
getRefundGoodsAsync,
refundSubmitAsync,
getChangeGoodsListAsync,
getProductInfoAsync
getProductInfoAsync,
getRefundDetailAsync,
refundSubmitAsync
};
... ...
... ... @@ -118,28 +118,84 @@ const _setRefundGoodList = (data) => {
return resData;
};
const _setRefundDetailData = (data) => {
let resData = {};
switch (data.status) {
case 10:
resData.orderReview = {pass: true};
resData.refundExpress = true;
resData.refundAddress = true;
break;
case 20:
resData.refundExpress = true;
break;
case 30:
resData.backStorage = true;
break;
case 40:
resData.refundSure = true;
break;
default:
resData.orderReview = true;
break;
}
return resData;
};
const getRefundGoodsData = (orderCode, uid) => {
return returnsAPI.getRefundGoodsAsync(orderCode, uid).then(result => {
let resData = {};
Object.assign(resData, _setSideMenu('我的退/换货'));
resData.returns = {
title: '退货申请'
title: '退货申请',
refund: {}
};
if (result.data) {
Object.assign(resData.returns, _setRefundGoodList(result.data));
Object.assign(resData.returns.refund, _setRefundGoodList(result.data), {
orderCode: orderCode
});
}
return resData;
});
};
const getRefundDetailData = (applyId, uid) => {
return returnsAPI.getRefundDetailAsync(applyId, uid).then(result => {
let resData = {};
Object.assign(resData, _setSideMenu('我的退/换货'));
resData = {
title: '退货申请',
refundDetail: {}
};
if (result.data) {
// console.log(_setRefundDetailData(result.data));
Object.assign(resData.refundDetail, _setRefundDetailData(result.data));
}
return {returns: resData};
});
};
const saveRefund = (orderCode, uid, goods, payment) => {
return returnsAPI.getOrderInfoAsync(orderCode, uid, '').then(result => {
if (!_.isEmpty(result)) {
return returnsAPI.refundSubmitAsync(orderCode, uid, goods, payment).then(subRes => {
return subRes;
if (subRes && subRes.data) {
return {
code: 200,
data: {
refer: helpers.urlFormat(`/return/refund/detail/${subRes.data.apply_id}`)
}
};
}
return {code: 400, message: '申请失败'};
});
} else {
return {code: 403, message: '没有找到该订单'};
... ... @@ -192,7 +248,8 @@ const getChangeGoodsList = (orderCode, uid) => {
module.exports = {
getUserReturn,
getRefundGoodsData,
saveRefund,
getChangeGoodsList,
getProductInfo
getProductInfo,
getRefundDetailData,
saveRefund
};
... ...
... ... @@ -30,6 +30,8 @@ router.get('/editOrder', order.editOrder);
router.get('/return', returns.index);
router.get('/return/refund/:orderCode', returns.refund);
router.get('/return/exchange/:orderCode', returns.exchange);
router.get('/return/refund/detail/:applyId', returns.refundDetail);
router.get('/return/exchange/detail', returns.detailExchange);
router.get('/return/:returnId', returns.detail);
router.post('/return/refund/apply', returns.refundApply);
router.get('/return/getProductInfo', returns.getProductInfo);
... ...
... ... @@ -35,6 +35,11 @@
{{#if returns}}
{{> returns}}
{{/if}}
{{!-- 换货详情 --}}
{{#if exchange}}
{{> exchange-detail}}
{{/if}}
{{!-- 我的退换货列表 --}}
{{#if returnsList}}
... ...
{{!-- {{# exchange}} --}}
<div class="exchange-detail-page">
<p class="state"><span class="iconfont">&#xe618;</span>换货申请审核中</p>
<div class="way">
<p class="way-title">您已选择{{way}}</p>
<p>请将商品连同吊牌、包装、发货单(如无发货单,您可找张白纸上注明订单编号,收货人姓名及手机号码)、发票(如有)、赠品(如有)一并保存,
如有遗漏将影响您的退换货进度,敬请谅解
</p>
<p class="cancel">如果您不想换货了,您可以<span class="cancel-btn">取消申请</span></p>
</div>
<div class="adress">
<p class="adress-title">收货地址<span class="modify-btn">修改</span></p>
<div class="adress-detail">
<p>所在区域:江苏省 南京市 雨花台区</p>
<p>收 货 人:赵四</p>
<p>详细地址:西善桥北路 109 号</p>
<p>联系电话:17714194699</p>
</div>
</div>
<div class="good-info">
<div class="table">
<ul class="header">
<li class="info">商品信息</li>
<li class="st">换货原因</li>
<li class="op">换货信息</li>
</ul>
</div>
<div class="table">
<div class="table-body">
<div class="goods-info">
<img class="lazy" data-original="{{image img 70 90}}">
<div class="info">
<p class="good-name">{{!-- {{name}} --}}fdefwfwefwrefverfref</p>
<p>颜色:{{color}}&nbsp;尺码:{{size}}</p>
<p>×{{num}}</p>
</div>
</div>
<div class="common-column special-border">
<p class="reason">{{reason}}发错货</p>
</div>
<div class="common-column special-border operation">
<p class="subtext">color: 蓝色<br>size: M</p>
</div>
</div>
<div class="reason-info">
<span>问题描述:太小了</span>
<div class="reason-img">照片凭证:
<div class="evidence">
<img src="{{image img 70 90}}">
</div>
</div>
</div>
</div>
</div>
</div>
{{!-- {{/ exchange}} --}}
\ No newline at end of file
... ...
{{# refundDetail}}
<div class="refund-datail-wrap">
{{> 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}}
<p class="tip-text">
请将商品连同吊牌、包装、发货单(如无发货单,您可找张白纸上注明订单编号,收货人姓名及手机号码)、发票(如有)、 赠品(如有)一并寄回,如有 遗漏将影响您的退换货进度,敬请谅解<br>
非我司原因的退换货,寄回运费由您承担。商品客观问题的退换货,请您先行垫付运费,邮费会在退款中补贴给您,
<b>我们不接受平邮和到付</b>
,感谢您的理解与支持
</p>
<p>
如果您不想退货了,您可以
<span class="cancel-btn btn">取消申请</span>
</p>
</div>
{{/ orderReview}}
{{# backStorage}}
<div class="storage-tip top-tip">
<p class="tip-status">
<span class="iconfont blue">&#xe618;</span>
<span class="blue">您寄回的商品已收到</span>
</p>
<p>
我们会在入库后的1-3个工作日内处理您的退款,如有疑问,请联系
<span>在线客服</span>
</p>
</div>
{{/ backStorage}}
{{# refundSure}}
<div class="success-tip top-tip">
<p class="tip-status">
<span class="iconfont blue">&#xe618;</span>
<span class="blue">退款完成</span>
</p>
<p>退款方式:<em>由于银行内部处理流程的差异,储蓄卡需要3-7个工作日到账,信用卡需要7-15个工作日到账</em></p>
<p class="tip-pad-top">退款账户:</p>
<p class="tip-pad-top">金额:</p>
<p class="tip-pad-top">有货币:</p>
</div>
{{/ refundSure}}
{{# refundExpress}}
<div class="return-express">
<h4 class="third-title">填写物流</h4>
<p>请您在<span class="blue">7月30日24:00</span>前将商品寄回并填写物流,逾期将自动取消申请</p>
<dl class="express-wrap">
<dd>
物流公司:
<select>
<option>顺丰</option>
<option>申通</option>
</select>
</dd>
<dd>
快递单号:
<input type="text">
</dd>
<dd>
<span class="submit-express btn">提交</span>
</dd>
</dl>
</div>
{{/ refundExpress}}
{{# refundAddress}}
<div class="return-address">
<h4 class="third-title">寄回地址</h4>
<p>地址:{{address}}</p>
<p>收件人:{{name}}</p>
<p>邮编:{{code}}</p>
<p>联系电话:{{phone}}</p>
</div>
{{/ refundAddress}}
<div class="refund-detail-goods">
<ul class="goods-header">
<li class="info">商品信息</li>
<li>退货原因</li>
<li>退货数量</li>
</ul>
{{# goods}}
<div class="goods-item clearfix">
<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">dsa{{reason}}</div>
<div class="num">dasd{{num}}</div>
<dl class="special-info hide">
<dd>问题描述:</dd>
<dd>照片凭证:</dd>
</dl>
</div>
{{/ goods}}
</div>
</div>
{{/ refundDetail}}
\ No newline at end of file
... ...
{{# refund}}
<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}}">
</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>
<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>
<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}}
... ...
... ... @@ -2,76 +2,10 @@
{{# returns}}
{{> common/subtitle}}
<h4 class="third-title">选择退货商品</h4>
{{> refund}}
<div class="refund-goods clearfix">
<ul class="goods-header">
<li class="info">商品信息</li>
<li class="reason">退货原因</li>
<li class="num">退货数量</li>
<li class="price">单价</li>
</ul>
{{> refund-detail}}
{{# goods}}
<div class="goods-item clearfix">
<div class="check">{{> 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>
<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>
</div>
{{/ goods}}
</div>
<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>
<dl class="alipay">
<dd>账号:<input type="text" placeholder="收款人支付宝账号"></dd>
<dd>姓名:<input type="text" placeholder="姓名"></dd>
</dl>
<dl class="unionpay hide">
<dd>
银行:
<select>
<option>中国银行</option>
<option>中国农业银行</option>
<option>中国工商银行</option>
<option>中国建设银行</option>
</select>
<input type="text" placeholder="开户支行">
<span class="blue">例:江苏省南京市奥体支行</span>
</dd>
<dd>账号:<input type="text" placeholder="收款人银行卡号"></dd>
<dd>姓名:<input type="text" placeholder="姓名"></dd>
</dl>
</div>
<div class="opt-btn">
<span class="apply-tip blue hide">请填写完整</span>
<div id="apply-btn" class="btn disable">提交申请</div>
</div>
{{> exchange}}
{{/ returns}}
</div>
</div>
... ...
<div class="returns-status">
<div class="back-wrap">
<div class="progress"></div>
<div class="visual-state">
<ul>
{{# statusList}}
<li{{#if act}} class="act"{{/if}}>
<span class="iconfont state-bg">&#xe611;</span>
<div class="number">{{step}}</div>
<div>{{name}}</div>
</li>
{{/ statusList}}
</ul>
</div>
</div>
</div>
\ No newline at end of file
... ...
<div class="special-reason">
<div class="clearfix">
<div class="left left-title">
<span class="red">*</span>问题描述:
</div>
<div class="left right-content">
<textarea class="mark-text"></textarea>
</div>
</div>
<div class="clearfix">
<div class="left left-title">
<span class="red">*</span>上传凭证:
</div>
<div class="left right-content">
<div class="img-wrap">
<div class="img-opt">
<span>查看</span>
<span>删除</span>
</div>
<div class="img-view"></div>
</div>
<div class="img-upload">
<span class="iconfont">&#xe61f;</span>
</div>
<span class="img-up-tip">1/4</span>
</div>
</div>
</div>
\ No newline at end of file
... ...
var $ = require('yoho-jquery'),
lazyLoad = require('yoho-jquery-lazyload');
require('../common/header');
require('../common/return-top');
lazyLoad($('.content-msg img.lazy'));
$('.editorial-list-page').on('click', '.like-icon', function() {
var $this = $(this),
msgId = $this.closest('.msg-content').data('id'),
url;
$this.toggleClass('liked');
if ($this.hasClass('liked')) {
url = '/editorial/info/cancelPraise';
} else {
url = '/editorial/info/praise';
}
$.ajax({
type: 'GET',
url: url,
data: {
id: msgId,
time: new Date().getTime()
}
}).then(function(data) {
if (data.code === 200) {
$this.next('b').removeClass('num-0').children('.num').html(data.data);
}
// if (data.code === 200) {
// if (data.data * 1 === 0) {
// $this.next('b').addClass('num-0').children('.num').html('0'); // 隐藏数字显示
// } else {
// console.log(data.data)
// $this.next('b').removeClass('num-0').children('.num').html(data.data);
// }
// }
// prising = false;
});
}).on('mouseenter mouseleave', '.like-icon', function() {
$(this).closest('.like').toggleClass('hover');
});
... ...
... ... @@ -6,12 +6,20 @@
var $ = require('yoho-jquery'),
lazyload = require('yoho-jquery-lazyload');
var $check = $('.check'),
var $refundTable = $('.refund-goods'),
$check = $('.check'),
$refundType = $('.refund-type'),
$typeInfo = $refundType.children('dl');
var $applyBtn = $('#apply-btn');
var orderCode = $('#order-code').val() || 0,
specialReason = $refundTable.data() || {},
payInfo = { // 退款信息
type: 3, // 2--银行卡 3--支付宝 4--yoho币
dom: $typeInfo.eq(0)
};
var checked;
require('../plugins/check');
... ... @@ -26,6 +34,81 @@ function restApplyBtn() {
}
}
function packApplyInfo() {
var dom,
isLack = false,
payment = {},
resData = {
order_code: orderCode
};
if (checked && checked.documents) {
dom = checked.documents;
resData.goods = [];
// 打包商品信息
$.each(dom, function(key) {
var data = $(dom[key]).data(),
good = {
last_price: data.price,
goods_type: data.type,
product_skn: data.skn,
product_skc: data.skc,
product_sku: data.sku
};
if (isLack || !data.reason) {
isLack = true;
return;
} else {
good.returned_reason = data.reason;
// if (specialReason.hasOwnProperty(data.reason)) {
// remark: ,
// returned_reason: 3,
// evidence_images: ,
// }
}
resData.goods.push(good);
});
// 处理退款信息
if (payInfo) {
payment = {
return_amount_mode: payInfo.type
};
switch (payInfo.type) {
case 2:
payment.bank_name = payInfo.dom.find('.bank').val();
payment.bank_card = payInfo.dom.find('.account').val();
payment.payee_name = payInfo.dom.find('.name').val();
break;
case 3:
payment.alipay_account = payInfo.dom.find('.account').val();
payment.alipay_name = payInfo.dom.find('.name').val();
break;
default:
isLack = true;
break;
}
// 检查信息完整性
$.each(payment, function(key) {
if (!payment[key]) {
isLack = true;
}
});
resData.payment = payment;
}
}
if (isLack) {
return false;
}
return resData;
}
$check.check({
type: 'checkbox',
onChange: function() {
... ... @@ -34,28 +117,62 @@ $check.check({
}
});
$refundTable.on('change', '.refund-reason', function() {
var $this = $(this),
$specialDom = $this.parent().siblings('.special-reason'),
val = $this.val();
if (specialReason.hasOwnProperty(val)) {
$specialDom.slideDown();
} else {
$specialDom.slideUp();
}
$specialDom.siblings('.check').data({reason: val});
});
$refundType.on('click', '.type-item', function() {
var $this = $(this),
index;
if (!$this.hasClass('cur')) {
if ($this.hasClass('ali-item')) {
payInfo.type = 3;
} else {
payInfo.type = 2;
}
index = $this.index();
// 切换退款卡片
$this.addClass('cur').siblings('.cur').removeClass('cur');
// 切换退款信息输入容器
payInfo.dom = $typeInfo.eq(index);
$typeInfo.addClass('hide');
$typeInfo.eq(index).removeClass('hide');
payInfo.dom.removeClass('hide');
}
});
$applyBtn.click(function() {
var $tip = $applyBtn.siblings('.apply-tip'),
param = packApplyInfo();
if (!param) {
$tip.removeClass('hide');
return;
} else {
$tip.addClass('hide');
}
$.ajax({
type: 'POST',
url: '/me/return/refund/apply',
data: {
id: 11
},
data: param,
success: function(data) {
if (data.code === 200) {
console.log(data);
if (data.data && data.data.refer) {
location.href = data.data.refer;
}
$tip.text('申请成功').removeClass('hide');
}
}
});
... ...
.exchange-detail-page {
.state {
font-size: 16px;
color: #5cb0de;
span {
font-size: 20px;
margin-right: 5px;
}
}
.way {
font-size: 14px;
border-bottom: 1px solid #eee;
.way-title {
margin-top: 10px;
font-weight: bold;
height: 40px;
line-height: 35px;
}
p {
line-height: 22px;
height: 22px;
}
.cancel {
display: block;
margin-top: 18px;
width: 220px;
height: 50px;
line-height: 50px;
font-size: 12px;
}
.cancel-btn {
float: right;
display: block;
height: 25px;
width: 70px;
background: #1b1b1b;
color: #fff;
line-height: 25px;
text-align: center;
margin-top: 10px;
}
}
.adress {
overflow: hidden;
margin-top: 30px;
font-size: 14px;
border-bottom: 1px solid #eee;
.adress-title {
display: block;
font-size: 16px;
width: 125px;
height: 40px;
line-height: 40px;
}
.modify-btn {
font-size: 12px;
float: right;
display: block;
height: 20px;
width: 40px;
line-height: 20px;
text-align: center;
margin-top: 10px;
border: 1px solid #eee;
}
.adress-detail {
margin-bottom: 15px;
p {
display: block;
height: 25px;
line-height: 25px;
}
}
}
.table {
width: 100%;
.header {
height: 40px;
line-height: 40px;
padding-left: 20px;
font-size: 14px;
background-color: #f5f5f5;
border: 1px solid #f1f1f1;
li {
height: 100%;
float: left;
text-align: center;
}
.info {
width: 496px;
text-align: left;
}
.st,
.op {
width: 206px;
}
}
}
.table-body {
display: table;
font-size: 14px;
border: 1px solid #f1f1f1;
}
.goods-info {
width: 516px;
display: inline-block;
box-sizing: border-box;
border-top: none;
font-weight: normal;
img {
width: 70px;
height: 90px;
display: inline-block;
box-sizing: border-box;
margin: 30px 20px;
}
.info {
width: 400px;
padding: 30px 8px 0 0;
float: right;
box-sizing: border-box;
line-height: 1.4;
font-size: 14px;
color: #616161;
}
.good-name {
margin-bottom: 8px;
}
}
.common-column {
width: 208px;
display: table-cell;
text-align: center;
vertical-align: top;
padding-top: 30px;
position: relative;
}
.subtext {
display: inline-block;
line-height: 30px;
}
.reason {
display: inline-block;
margin-top: 20px;
}
.reason-info {
overflow: hidden;
padding: 25px 0 0 20px;
width: 100%;
border: 1px solid #eee;
border-top: none;
img {
float: left;
width: 70px;
height: 90px;
}
span {
line-height: 25px;
height: 25px;
display: block;
}
}
.reason-img {
margin-top: 5px;
}
.evidence {
width: 825px;
overflow: hidden;
float: right;
}
}
... ...
... ... @@ -106,3 +106,4 @@
@import "return/index";
@import "currency";
@import "returns";
@import "exchange";
... ...
... ... @@ -7,6 +7,78 @@
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;
... ... @@ -99,6 +171,13 @@
.num > input {
width: 40px;
}
.special-reason {
width: 100%;
height: auto;
line-height: 1.5;
text-align: left;
}
}
}
... ... @@ -133,6 +212,17 @@
dd {
padding: 5px 0;
}
select,
input {
height: 24px;
border: 1px solid #eee;
padding: 0 8px;
}
.bank {
border-color: #1d1d1d;
}
}
}
}
... ...
@import "list"
.returns-wrap {
.returns-status {
padding: 30px 0 50px;
.back-wrap {
width: 800px;
height: 6px;
background: #eee;
border-radius: 3px;
margin: 0 auto;
}
.progress {
height: 6px;
background: #1d1d1d;
border-radius: 3px;
width: 30%;
}
.visual-state {
width: 100%;
display: table;
position: relative;
top: -15px;
> ul {
display: table-row;
}
li {
display: table-cell;
text-align: center;
}
.state-bg {
color: #eee;
}
.number {
position: relative;
top: -17px;
}
.cur .state-bg {
color: #1d1d1d;
}
.cur .number {
color: #fff;
}
}
}
}
@import "list";
@import "refund-detail";
... ...
.refund-datail-wrap {
font-size: 14px;
.top-tip {
padding: 40px 0 20px;
border-bottom: 1px solid #eee;
.blue {
font-size: 16px;
line-height: 16px;
}
.tip-status {
padding-bottom: 20px;
.iconfont {
position: relative;
top: -1px;
}
}
.tip-text {
line-height: 2;
padding: 0 20px 20px 0;
}
.tip-pad-top {
padding-top: 15px;
}
b {
font-weight: 700;
}
em {
color: #9a9a9a;
}
.cancel-btn {
display: inline-block;
}
}
.return-express {
padding: 40px 0 20px;
border-bottom: 1px solid #eee;
.express-wrap {
padding-top: 10px;
> dd {
padding-top: 12px;
}
}
.submit-express {
margin-left: 74px;
}
}
.return-address {
padding: 40px 0 20px;
border-bottom: 1px solid #eee;
> p {
padding-top: 10px;
}
> p:first-child {
padding-top: 0;
}
}
.refund-detail-goods {
.goods-header {
height: 40px;
line-height: 40px;
background-color: #f5f5f5;
border: 1px solid #f1f1f1;
> * {
float: left;
width: 270px;
text-align: center;
}
.info {
width: 384px;
padding-left: 20px;
text-align: left;
}
}
.goods-item {
padding: 30px 0;
border: 1px solid #f1f1f1;
border-top: 0;
> * {
width: 270px;
height: 90px;
float: left;
text-align: center;
}
.img {
width: 100px;
}
.info {
width: 284px;
text-align: left;
}
.special-info {
width: 100%;
height: auto;
padding-top: 30px;
text-align: left;
}
}
}
}
... ...