Authored by htoooth

Merge branch 'master' into release/6.0

# Conflicts:
#	apps/product/models/detail-service.js
#	apps/product/views/partial/product/size-list.hbs
... ... @@ -25,10 +25,7 @@ const ticketEnsure = (req, res, next) => {
let header = headerModel.setSimpleHeaderData() || {};
result.stepper = stepper;
if (result.error) {
result.productUrl = helpers.getUrlBySkc(skn);
}
result.productUrl = helpers.getUrlBySkc(skn);
res.render('ticket-ensure', {
title: '填写订单 | ' + (res.locals.title || ''),
... ...
... ... @@ -45,8 +45,8 @@ const submitTicket = co(function * (uid, sku, count, mobile, yohoCoin) {
if (result.code !== 200) {
return {
code: 410,
message: '提交失败'
code: result.code,
message: result.message
};
}
... ...
... ... @@ -32,7 +32,7 @@
<tr>
<th width="3%"></th>
<th class="aline-left" width="46%">商品信息</th>
<th>时间</th>
<th>时间/区域</th>
<th width="18%">单价</th>
<th width="6%">数量</th>
<th width="3%"></th>
... ... @@ -55,7 +55,8 @@
</a>
</td>
<td class="border-top color-size">
<span>{{color_name}}</span>
时间:<span class="color" title="{{color_name}}">{{color_name}}</span>
区域:<span class="size" title="{{size_name}}">{{size_name}}</span>
</td>
<td class="border-top price">
<p class="red">¥ {{round productPrice 2}}</p>
... ... @@ -103,7 +104,7 @@
<div class="sum-wrap">
应付金额:<span id="order-price" class="price">¥ {{round last_order_amount 2}}</span>
<button id="order-submit">提交订单</button>
<button id="order-submit" data-url="{{productUrl}}">提交订单</button>
</div>
{{#if error}}
... ...
... ... @@ -13,6 +13,10 @@ exports.QRcode = (req, res, next) => {
let id = req.query.orderCode || 0;
QRcodeModel.getQRcodeData(id, req.user.uid).then((result)=>{
if (!result) {
return next();
}
let vm = {
path: [{href: helpers.urlFormat('/'), name: 'YOHO!BUY 有货首页'},
{name: '个人中心'}, {name: '订单中心'}, {name: '查看二维码'}],
... ...
... ... @@ -27,6 +27,7 @@
<div class='center'>
<img src='{{image2 qr_image}}'>
<p class='bianhao'><label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;号:</label><i>{{ticket_code}}</i></p>
{{#if seat_no}}<p><label>&nbsp;&nbsp;&nbsp;&nbsp;号:</label>{{seat_no}}</p>{{/if}}
<p><label>进场时间:</label>{{entrance_time}}</p>
</div>
</li>
... ...
... ... @@ -242,6 +242,9 @@
{{#if color}}
日期:{{color}}
{{/if}}
{{#if size}}
区域:{{size}}
{{/if}}
{{else}}
{{#if color}}
<b title="{{color}}">颜色:{{color}}</b>
... ...
... ... @@ -41,6 +41,9 @@
{{#if color}}
日期:{{color}}&nbsp;&nbsp;
{{/if}}
{{#if size}}
区域:{{size}}
{{/if}}
{{else}}
{{#if color}}
<b title="{{color}}">颜色:{{color}}&nbsp;&nbsp;</b>
... ...
... ... @@ -358,7 +358,8 @@ const _getSkuDataByProductBaseInfo = (data) => {
notify: size.notify,
soldOut: _.parseInt(size.storage_number) === 0,
info: _.get(size, 'size_info', '').replace(/\//ig, '-').replace(/ /ig, '/').replace(/:/ig, ' '),
helper: _.get(size, 'size_rec', '')
helper: _.get(size, 'size_rec', ''),
limitNum: _.get(size, 'limit_buy_num', 0)
});
// 单个sku商品的总数
... ...
... ... @@ -117,6 +117,29 @@ const getProductList = (params, from) => {
}
};
/**
* 获取seo商品列表
* @return
*/
const getSeoProductList = (params, from) => {
let finalParams = {
method: 'web.search.forseo',
sales: 'Y',
outlets: 2,
stocknumber: 1,
need_filter: 'no',
limit: 60
};
Object.assign(finalParams, params);
if (from) {
finalParams.from = from;
}
return getProductListOrig(finalParams);
};
const getSortListOrig = (finalParams) => api.get('', finalParams, config.apiCache);
/**
... ... @@ -478,6 +501,7 @@ const lessRecommend = (channelNum, uid, udid, recPos, limit) => {
module.exports = {
getKeyActivityAsync,
getProductList,
getSeoProductList,
getSortList,
getSortIntro,
getSortAds,
... ...
... ... @@ -394,7 +394,7 @@ exports.getSearchKeywordData = (params, channel) => {
let apiMethod = [
headerModel.requestHeaderData(channel),
searchApi.getSuggest({keyword: searchParams.query.substring(0, 2)}),
searchApi.getProductList(searchParams, 'fuzzySearch')
searchApi.getSeoProductList(searchParams, 'fuzzySearch')
];
return api.all(apiMethod).then(result => {
... ...
... ... @@ -12,8 +12,7 @@
{{bundle.count}}件起购{{#if bundle.discount}}{{bundle.discount}}折优惠{{/if}}
</span>
<span class="bundle {{#unless isTicket}}hide{{/unless}}" >
限购4件
<span class="bundle limit hide" >
</span>
<span class="few-sold hide">
... ...
... ... @@ -14,6 +14,7 @@
data-title="{{title}}"
data-info="{{info}}"
data-helper="{{helper}}">
data-limit="{{limitNum}}">
{{name}}</li>
{{/each}}
... ...
... ... @@ -10,7 +10,7 @@
</ul>
</div>
<div class="chose-size row clearfix hide">
<div class="chose-size row clearfix">
<input type="hidden" name="isTicket" value="{{isTicket}}"/>
<span class="title pull-left">
选区域:
... ... @@ -20,15 +20,20 @@
{{#each colors}}
<ul class="size{{#unless focus}} hide{{/unless}}">
{{#each size}}
<li {{#unless num}}class="disable"{{/unless}} data-sku="{{sku}}"
data-num="{{num}}" data-name="{{name}}">{{name}}</li>
<li {{#unless num}}class="disable"{{/unless}}
data-sku="{{sku}}"
data-num="{{num}}"
data-name="{{name}}"
data-notify="{{notify}}"
data-title="{{title}}"
data-info="{{info}}"
data-limit="{{limitNum}}">
{{name}}
</li>
{{/each}}
<span class="size-warn warn-tip hide">
<i class="iconfont">&#xe62c;</i>
请选择区域
</span>
</ul>
{{/each}}
<p class="size-warn warn-tip hide"> <i class="iconfont">&#xe6c9;</i> 请选择区域 </p>
</div>
</div>
... ...
{
"name": "yohobuy-node",
"version": "5.9.4",
"version": "5.9.5",
"private": true,
"description": "A New Yohobuy Project With Express",
"repository": {
... ...
... ... @@ -142,6 +142,8 @@ $('.locker-switch').click(function() {
$('#order-submit').on('click', function() {
var $this = $(this);
if (submitting) {
return;
}
... ... @@ -160,6 +162,8 @@ $('#order-submit').on('click', function() {
}).then(function(data) {
if (data.code === 200) {
window.location.href = data.data.refer;
} else if (data.code === 500) {
errorInfo(data.message, $this.data('url'));
}
}).always(function() {
submitting = false;
... ...
... ... @@ -41,6 +41,7 @@ var $main = $('.main'),
var maxStock = -1; // 记录当前选中的颜色-尺码的库存量,若为-1,代表未选择尺码
var $maxColor = null; // 记录当前选中的颜色
var limitStock = 0; // 当前限购件数
var $shoppingCarBtn = $('.shoppingCar-btn');
... ... @@ -80,6 +81,15 @@ function limitedProductUrl(s) {
return window.location.href + '?openby:yohobuy={"action":"go.limitpurchase","params":{"lp":"' + s + '"}}';
}
// 在限制购买数量和最大购买数下取真值
function getStock() {
if (maxStock < limitStock) {
return maxStock;
}
return limitStock || maxStock;
}
function isEmpty(el) {
return !$.trim(el.html());
}
... ... @@ -454,8 +464,11 @@ bindEvent.add(function() {
return;
}
// 当前能购买数
var _num = getStock(); // eslint-disable-line
// +-按钮状态重置
if (maxStock === 1 || maxStock === 0) {
if (_num === 1 || _num === 0) {
// 数目为1/0时
$plusNum.addClass('dis');
... ... @@ -647,6 +660,14 @@ bindEvent.add(function() {
return;
}
limitStock = +$this.data('limit');
if (limitStock) {
$('.bundle.limit').text('限购' + limitStock + '件').removeClass('hide');
} else {
$('.bundle.limit').addClass('hide');
}
maxStock = +$this.data('num');
$this.siblings('.focus').removeClass('focus');
... ... @@ -780,17 +801,20 @@ bindEvent.add(function() {
return;
}
if (maxStock === -1) {
// 当前能购买数
var _stock = getStock(); // eslint-disable-line
if (_stock === -1) {
showSizeWarn();// 显示选择尺码提示
return;
}
// 已售罄
if (maxStock === 0) {
if (_stock === 0) {
return;
}
if (num === maxStock - 1) {
if (num === _stock - 1) {
// +按钮不可点
$(this).addClass('dis');
... ... @@ -801,7 +825,7 @@ bindEvent.add(function() {
$minusNum.removeClass('dis');
}
$num.text(num + 1 > maxStock ? maxStock : num + 1);
$num.text(num + 1 > _stock ? _stock : num + 1);
}).on('selectstart', function() {
return false;
});
... ... @@ -818,7 +842,7 @@ bindEvent.add(function() {
$(this).addClass('dis');
}
if (num === maxStock) {
if (num === getStock()) {
// 恢复+可点
$plusNum.removeClass('dis');
... ...