Authored by 姜枫

handle merge

... ... @@ -25,7 +25,7 @@ const index = (req, res, next) => {
addressModel.getAddressDataAsync(uid, 20).then(result => {
let resultData = result.data ? result.data : result;
let length = resultData.length ? resultData.length : 0;
let length = resultData.length ? (resultData.length > 7 ? 7 : resultData.length) : 0;
let reg = /(\d{3})\d{4}(\d{4})/;
for (let i = 0; i < length; i++) {
... ...
... ... @@ -34,6 +34,7 @@ const paymentTypeStr = {
const btnMap = {
all: [
{
isPayBtn: true,
name: '立即付款',
classStr: 'btn red pay-btn mr'
},
... ... @@ -502,6 +503,14 @@ const getOrderDetail = (uid, code) => {
detail.steps = _getStepByOrderStatus(st);
detail.btns = statusMap[st].btns;
_.forEach(detail.btns, btn => {
if (btn.isPayBtn) {
btn.payUrl = helpers.urlFormat('/shopping/pay/online', {
code: detail.orderCode
});
}
});
if (parseInt(detail.paymentType, 10) === 2 &&
(statusMap[st].valueStr === '备货中' ||
detail.statusStr === '备货中')) {
... ...
... ... @@ -564,9 +564,12 @@ const getChangeGoodsList = (orderCode, uid) => {
if (data.goodsList) {
data.goodsList.forEach(good => {
let cnAlphabet = good.cnAlphabet ? good.cnAlphabet : '';
good.showCheckbox = true;
good.hidePrice = true;
good.buyNumber = 1;
good.goodUrl = helpers.urlFormat(`/product/pro_${good.productId}_${good.goodsId}/${cnAlphabet}.html`); //eslint-disable-line
});
}
}
... ... @@ -586,7 +589,7 @@ const getChangeGoodsList = (orderCode, uid) => {
*/
const _setExchangeDetailData = (data) => {
data = camelCase(data);
console.log(data);
let list = {};
switch (data.status) {
... ...
... ... @@ -6,7 +6,13 @@
<ul>
{{# btns}}
<li>
{{#if isPayBtn}}
<a href="{{payUrl}}">
<span class="{{classStr}}">{{name}}</span>
</a>
{{^}}
<span class="{{classStr}}">{{name}}</span>
{{/if}}
</li>
{{/ btns}}
</ul>
... ...
... ... @@ -84,5 +84,5 @@
{{/address}}
{{/returnsChange}}
<span class="btn confirm right">提交申请</span>
<span class="btn confirm right disable">提交申请</span>
</div>
... ...
... ... @@ -15,12 +15,18 @@ const helper = global.yoho.helpers;
// 结算页面
const index = (req, res, next) => {
orderModel.index(req.user.uid).then(result => {
let data = result.data;
// 设置头部路径索引focus
result.data.bcNavFocus = 2;
data.bcNavFocus = 2;
// 构造诡异的配送方式数据【显示普通快递的文字,确用顺丰发货和顺丰的快递费】
data.delivery_way = _.concat(_.assign(_.find(data.delivery_way, {delivery_way_id: 2}), {
delivery_way_name: '普通快递'
}));
// 发票抬头
result.data.invoices.invoiceTitle = [
data.invoices.invoiceTitle = [
{
name: '个人',
value: 1,
... ... @@ -33,17 +39,17 @@ const index = (req, res, next) => {
];
// 返回购物车链接
result.data.goCartLink = helper.urlFormat('/shopping/cart');
data.goCartLink = helper.urlFormat('/shopping/cart');
// 拆单是否显示左右切换
_.forEach(result.data.shopping_cart_data.package_list, i => {
_.forEach(data.shopping_cart_data.package_list, i => {
if (i.goods_list.length > 4) {
i.showToggle = true;
}
});
// 是否打印价格radio
result.data.printPriceRadio = [
data.printPriceRadio = [
{
value: '1',
name: '是'
... ... @@ -56,7 +62,7 @@ const index = (req, res, next) => {
];
res.display('order', {
content: result.data,
content: data,
defaultHeader: false
});
}).catch(next);
... ...
... ... @@ -294,12 +294,13 @@ const filterCartData = (result, uid) => {
});
}
// _.groupBy(_.concat(advancedGoods, advancedSoldOutGoods), 'brand_id')
return _.merge(resData, {
hasGoods: advancedGoods.length || ordinaryGoods.length || invalidGoods.length,
preSalePros: (advancedSoldOutGoods.length || advancedGoods.length) ?
_.groupBy(_.concat(advancedGoods, advancedSoldOutGoods), 'brand_id') : [],
_.concat(advancedGoods, advancedSoldOutGoods) : [],
commonPros: (ordinarySoldOutGoods.length || ordinaryGoods.length) ?
_.groupBy(_.concat(ordinaryGoods, ordinarySoldOutGoods), 'brand_id') : [],
_.concat(ordinaryGoods, ordinarySoldOutGoods) : [],
invalidPros: invalidGoods,
selectedNum: selectedAdvanceNum + selectedOrdinaryNum,
checkAll: totalNum === (selectedAdvanceNum + selectedOrdinaryNum),
... ...
... ... @@ -32,9 +32,11 @@
<div class="dispatch-type order-block">
<p class="title">配送方式</p>
<ul class="content">
<li class="chose-row clearfix focus">
<span class="chose-block">普通快递:运费¥10.00</span>
</li>
{{#each delivery_way}}
<li class="chose-row clearfix{{#if @first}} focus{{/if}}" data-id="{{delivery_way_id}}">
<span class="chose-block">{{delivery_way_name}}:运费¥{{round delivery_way_cost 2}}</span>
</li>
{{/each}}
</ul>
</div>
<div class="order-info order-block">
... ... @@ -173,7 +175,9 @@
{{# shopping_cart_data}}
<div class="balance-info left">
<p>
收货信息:<em id="receiver"></em>
{{#with ../delivery_address}}
收货信息:<em id="receiver">{{consignee}} {{mobile}} {{area}} {{address}}</em>
{{/with}}
<span class="right">{{selected_goods_count}}件商品</span>
</p>
<p>
... ...
... ... @@ -18,10 +18,10 @@
<div class="tip-info">
<p class="title">温馨提示:</p>
<p>
1.每天15:00以前成功支付的订单将在当天发货,12:00-00:00成功付款的订单将在第二天发货。
1.每天15:00以前成功支付的订单将在当天发货,15:00-00:00成功付款的订单将在第二天发货。
2.当订单发货后,您可以登录<a class="blue" href="/me/order">订单中心</a>查询快递发货详情。
3.YOHO!BUY有货支持“开箱验货”和“15天退换货保障”收货后请当面验货,如果发现商品有任何问题请致电客服电话400-889-9646,
<a class="blue" href="">“退换货政策”</a>请点击查看。<em class="blue">4.尊敬的用户:近期为网络诈骗高发期,YOHO!BUY有货郑重声明,不会以任何形式索取客户的账户信息或引导转账,敬请提高警惕,谨防诈骗</em>
3.YOHO!BLK有货支持“开箱验货”和“15天退换货保障”收货后请当面验货,如果发现商品有任何问题请致电客服电话400-889-9646,
<a class="blue" href="">“退换货政策”</a>请点击查看。<em class="blue">4.尊敬的用户:近期为网络诈骗高发期,YOHO!BLK有货郑重声明,不会以任何形式索取客户的账户信息或引导转账,敬请提高警惕,谨防诈骗</em>
</p>
</div>
{{/ content}}
... ...
... ... @@ -7,7 +7,7 @@
<div class="pro-list">
{{#each preSalePros}}
<div class="pros-group">
{{# each this}}
{{!-- {{# each this}} --}}
<ul>
<li class="chk" data-product_info='{"goods_type": "advance", "buy_number": {{buy_number}}, "selected": "{{selected}}", "product_sku": "{{product_sku}}", "promotion_id": 0}'>
<label class="toggle-chk-item {{#isEqual selected 'Y'}}chk-group{{/isEqual}}">
... ... @@ -24,7 +24,7 @@
<li class="pro-info">
{{!-- <div class="brand-name">{{brand_name}}</div> --}}
<div class="pro-name"><a href="/product/pro_{{product_id}}_{{goods_id}}/{{cn_alphabet}}.html" target="_blank">{{product_name}}</a></div>
<div class="color-size editable" data-productId={{product_id}} id="edit_{{product_id}}" data-productSkn={{product_skn}}>
<div class="color-size editable" data-productId="{{product_id}}" id="edit_{{product_id}}" data-productSkn="{{product_skn}}">
{{#if color_name}}
<span class="mr20">颜色: <span class="default-color">{{color_name}}</span></span>
{{/if}}
... ... @@ -49,7 +49,7 @@
</div>
</li>
</ul>
{{/each}}
{{!-- {{/each}} --}}
</div>
{{/each}}
</div>
... ... @@ -64,7 +64,7 @@
<div class="pro-list">
{{#each commonPros}}
<div class="pros-group">
{{# each this}}
{{!-- {{# each this}} --}}
<ul>
<li class="chk" data-product_info='{"goods_type": "ordinary", "buy_number": {{buy_number}}, "selected": "{{selected}}", "product_sku": "{{product_sku}}", "promotion_id": 0}'>
<label class="toggle-chk-item {{#isEqual selected 'Y'}}chk-group{{/isEqual}}">
... ... @@ -81,7 +81,7 @@
<li class="pro-info">
{{!-- <div class="brand-name">{{brandName}}</div> --}}
<div class="pro-name"><a href="/product/pro_{{product_id}}_{{goods_id}}/{{cn_alphabet}}.html" target="_blank">{{product_name}}</a></div>
<div class="color-size editable" data-productId={{product_id}} id="edit_{{product_id}}" data-productSkn={{product_skn}}>
<div class="color-size editable" data-productId="{{product_id}}" id="edit_{{product_id}}" data-productSkn="{{product_skn}}">
{{#if color_name}}
<span class="mr20">颜色: <span class="default-color">{{color_name}}</span></span>
{{/if}}
... ... @@ -103,7 +103,7 @@
</div>
</li>
</ul>
{{/each}}
{{!-- {{/each}} --}}
</div>
{{/each}}
</div>
... ...
... ... @@ -25,7 +25,7 @@ require('yoho-jquery-placeholder');
$('[placeholder]').placeholder();
$(function() {
$(function () {
var address = cascadingAddress({el: '#address'});
/**
... ... @@ -33,7 +33,7 @@ $(function() {
*/
var Bll = {
// 获取输入框输入的值
getInfo: function() {
getInfo: function () {
return {
id: $addressId.val(),
... ... @@ -45,7 +45,7 @@ $(function() {
},
// 清空输入框
clearInput: function() {
clearInput: function () {
$consignee.val('');
$address.val('');
$mobile.val('');
... ... @@ -54,7 +54,7 @@ $(function() {
},
// 校验
check: function(info) {
check: function (info) {
var flag = true;
info.consignee === '' ? $consignee.next().show() : $consignee.next().hide();
... ... @@ -72,7 +72,7 @@ $(function() {
},
// 拼接一条数据的html
getHtml: function(info) {
getHtml: function (info) {
var html = '<tr class="table-body">';
html += '<input type="hidden" id="tr_' + info.address_id + '" value="' + info.address_id + '">' +
... ... @@ -90,7 +90,7 @@ $(function() {
},
// 获取一条数据
setInfo: function(id, td) {
setInfo: function (id, td) {
$addressId.val(id);
$consignee.val(td.eq(0).text());
$address.val(td.eq(2).text());
... ... @@ -99,7 +99,7 @@ $(function() {
},
// 设置表格头部
setTableTile: function() {
setTableTile: function () {
$('.table-title').text('已保存了' + currentLength +
'条地址,还能保存' + leftLength + '条地址');
}
... ... @@ -107,7 +107,7 @@ $(function() {
// 保存收货地址
$(document).on('click', '#save-address', function() {
$(document).on('click', '#save-address', function () {
var info,
area,
areaInfo;
... ... @@ -125,36 +125,36 @@ $(function() {
if (currentLength >= 7) {
new _alert('您最多添加7个收货地址,可删除不需要的地址后再添加新地址!').show();
Bll.clearInput();
}
$.ajax({
type: 'POST',
url: '/me/address/add',
dataType: 'json',
data: info,
success: function(data) {
var html;
if (data.code === 200) {
html = Bll.getHtml(data.data);
currentLength++;
leftLength--;
$('tbody').append(html);
Bll.setTableTile();
Bll.clearInput();
} else {
new _alert(data.message).show();
} else {
$.ajax({
type: 'POST',
url: '/me/address/add',
dataType: 'json',
data: info,
success: function (data) {
var html;
if (data.code === 200) {
html = Bll.getHtml(data.data);
currentLength++;
leftLength--;
$('tbody').append(html);
Bll.setTableTile();
Bll.clearInput();
} else {
new _alert(data.message).show();
}
}
}
});
});
}
} else { // 修改
$.ajax({
type: 'POST',
url: '/me/address/update',
dataType: 'json',
data: info,
success: function(data) {
success: function (data) {
if (data.code === 200) {
info.mobile = info.mobile.substring(0, 3) + '****' + info.mobile.substring(7, 11);
info.address_id = info.id;
... ... @@ -171,7 +171,7 @@ $(function() {
});
// 修改收货地址
$(document).on('click', '.update-address', function() {
$(document).on('click', '.update-address', function () {
var id = $(this).data('id');
var tr = $(this).parents('.table-body');
var td = tr.find('td');
... ... @@ -185,13 +185,13 @@ $(function() {
});
// 删除收货地址
$(document).on('click', '.del-address', function() {
$(document).on('click', '.del-address', function () {
var id = $(this).data('id');
var tr = $(this).parents('.table-body');
var a = new _confirm({
content: '您确定要删除收货地址吗?',
cb: function() {
cb: function () {
$.ajax({
type: 'POST',
url: '/me/address/del',
... ... @@ -199,7 +199,7 @@ $(function() {
data: {
id: id
},
success: function() {
success: function () {
currentLength--;
leftLength++;
tr.remove();
... ... @@ -214,7 +214,7 @@ $(function() {
});
// 设置默认收货地址
$(document).on('click', '.set-default', function() {
$(document).on('click', '.set-default', function () {
var tr = $(this).parents('.table-body');
var tbody = tr.parent();
var id = $(this).data('id');
... ... @@ -227,7 +227,7 @@ $(function() {
data: {
id: id
},
success: function() {
success: function () {
$('.current-default').removeClass('current-default').text('设为默认');
$(self).addClass('current-default').text('默认地址');
tbody.find('.table-body').eq(0).before('<tr class=\'table-body\'>' + tr.html() + '</tr>');
... ...
... ... @@ -279,6 +279,12 @@ function bindCheckboxEvent() {
$box.removeClass('will-change');
$box.find('.form').addClass('hide');
}
if ($('.will-change').length) {
$('.btn.disable').removeClass('disable');
} else {
$('.btn.confirm').addClass('disable');
}
}
});
}
... ... @@ -333,6 +339,10 @@ function bindConfirmEvent() {
var $imgs;
var imgs = [];
if ($(this).hasClass('disable')) {
return false;
}
if (!validateData()) {
return false;
}
... ...
... ... @@ -193,8 +193,6 @@ var Cart = {
var dialog;
if (products.length) {
// Cart.showRemovedProducts(products, extraInfos);
dialog = new _confirm({
content: '您确定要从购物车中删除该商品吗?',
cb: function() {
... ... @@ -269,10 +267,6 @@ var Cart = {
}
// 刷新
// template = hbs.compile($('#removed-products').html());
// $('#removed_products').html(template({
// removedProducts: removedProsInfo
// }));
$('#removed_products').html(removedGoodsTpl({
removedProducts: removedProsInfo
}));
... ... @@ -341,7 +335,6 @@ var Cart = {
* @params { Function } setEditable 编辑商品回调
*/
editColorOrSize: function(productId, skn, defaultColor, defaultSize, setEditable) {
// var template;
var index = 0;
var colors;
var colorsLen;
... ... @@ -391,31 +384,6 @@ var Cart = {
}
}
// helpers start
// hbs.registerHelper('isEqual', function(v1, v2, options) {
// if (v1 === v2) {
// return options.fn(this);
// }
// return options.inverse(this);
// });
// hbs.registerHelper('image', function(url, width, height, mode) {
// mode = parseInt(mode, 10) ? mode : 2;
// url = url || '';
// return url.replace(/{width}/g, width).replace(/{height}/g, height).replace(/{mode}/g, mode);
// });
// helpers end
// template = hbs.compile($('#edit-color-size-tpl').html());
// editTarget.append(
// template({
// colors: filterSet,
// defaultColor: defaultColor,
// defaultSize: defaultSize,
// defaultImg: defaultImg
// })
// );
editTarget.append(editTpl({
colors: filterSet,
defaultColor: defaultColor,
... ...
... ... @@ -139,7 +139,7 @@ $('.coin-ctrl, .remark-ctrl').click(function() {
});
// 使用有货币输入框联动
$coin.on('input', function() {
$coin.on('propertychange input', function() {
var c = $.trim($coin.val());
var err = true;
... ...
... ... @@ -451,9 +451,6 @@ $.ajax({
}
dotYou($('.address'));
// 填收货人信息
receiver(data.data[0]);
}
}
});
... ...
... ... @@ -13,6 +13,8 @@ var $invoiceContent = $('#invoice-content');
var $invoiceTitleInput;
require('yoho-jquery-placeholder');
// 发票信息验证
function validateInvoice($el) {
var pass = true;
... ... @@ -137,6 +139,9 @@ function showInvoiceDialog() {
}
});
// placeholder for title
$('.invoice-title-input').placeholder();
dialog.show();
}
... ...
... ... @@ -23,7 +23,15 @@
color: #fff;
}
.good-name-text:hover {
.good-name-text {
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.good-name-text:hover,
.check-detail:hover {
text-decoration: underline;
}
... ... @@ -127,7 +135,7 @@
.detail {
width: calc($bigWidth - $goodImgWidth - $space);
padding: $bigSpace $smallSpace 0 0;
padding: $bigSpace 5px 0 0;
float: right;
box-sizing: border-box;
line-height: 1.4;
... ...
... ... @@ -21,6 +21,15 @@
}
}
.btn {
&.confirm {
width: 130px;
height: 40px;
line-height: 40px;
font-size: 16px;
}
}
.goods-container {
width: 990px;
}
... ...
... ... @@ -23,7 +23,7 @@
<div class="pro-list">
{{#each preSalePros}}
<div class="pros-group">
{{# each this}}
{{!-- {{# each this}} --}}
<ul>
<li class="chk" data-product_info='{"goods_type": "advance", "buy_number": {{buy_number}}, "selected": "{{selected}}", "product_sku": "{{product_sku}}", "promotion_id": 0}'>
<label class="toggle-chk-item {{#isEqual selected 'Y'}}chk-group{{/isEqual}}">
... ... @@ -40,12 +40,12 @@
<li class="pro-info">
{{!-- <div class="brand-name">{{brand_name}}</div> --}}
<div class="pro-name"><a href="/product/pro_{{product_id}}_{{goods_id}}/{{cn_alphabet}}.html" target="_blank">{{product_name}}</a></div>
<div class="color-size editable" data-product_id={{product_id}} id="edit_{{product_id}}">
<div class="color-size editable" data-productId="{{product_id}}" id="edit_{{product_id}}" data-productSkn="{{product_skn}}">
{{#if color_name}}
<span class="mr20">颜色: {{color_name}}</span>
<span class="mr20">颜色: <span class="default-color">{{color_name}}</span></span>
{{/if}}
{{#if size_name}}
<span>尺寸: {{size_name}}</span>
<span>尺寸: <span class="default-size">{{size_name}}</span></span>
{{/if}}
<span class="iconfont">&#xe63c;</span>
</div>
... ... @@ -78,7 +78,7 @@
</div>
</li>
</ul>
{{/each}}
{{!-- {{/each}} --}}
</div>
{{/each}}
</div>
... ... @@ -93,7 +93,7 @@
<div class="pro-list">
{{#each commonPros}}
<div class="pros-group">
{{# each this}}
{{!-- {{# each this}} --}}
<ul>
<li class="chk" data-product_info='{"goods_type": "ordinary", "buy_number": {{buy_number}}, "selected": "{{selected}}", "product_sku": "{{product_sku}}", "promotion_id": 0}'>
<label class="toggle-chk-item {{#isEqual selected 'Y'}}chk-group{{/isEqual}}">
... ... @@ -110,12 +110,12 @@
<li class="pro-info">
{{!-- <div class="brand-name">{{brandName}}</div> --}}
<div class="pro-name"><a href="/product/pro_{{product_id}}_{{goods_id}}/{{cn_alphabet}}.html" target="_blank">{{product_name}}</a></div>
<div class="color-size editable" data-product_id={{product_id}} id="edit_{{product_id}}">
<div class="color-size editable" data-productId="{{product_id}}" id="edit_{{product_id}}" data-productSkn="{{product_skn}}">
{{#if color_name}}
<span class="mr20">颜色: {{color_name}}</span>
<span class="mr20">颜色: <span class="default-color">{{color_name}}</span></span>
{{/if}}
{{#if size_name}}
<span>尺寸: {{size_name}}</span>
<span>尺寸: <span class="default-size">{{size_name}}</span></span>
{{/if}}
<span class="iconfont">&#xe63c;</span>
</div>
... ... @@ -145,7 +145,7 @@
</div>
</li>
</ul>
{{/each}}
{{!-- {{/each}} --}}
</div>
{{/each}}
</div>
... ...
... ... @@ -329,10 +329,7 @@ exports.processProduct = (productData, options) => {
}
result.is_soon_sold_out = (productData.is_soon_sold_out === 'Y');
result.url = helpers.urlFormat(`
/product/pro_${productData.product_id}_${productData.goods_list[0].goods_id}
/${productData.cn_alphabet}.html
`, null, 'list');
result.url = helpers.urlFormat(`/product/pro_${productData.product_id}_${productData.goods_list[0].goods_id}/${productData.cn_alphabet}.html`, null, 'list'); //eslint-disable-line
if (options.showTags) {
let tags = {};
... ...