|
@@ -10,6 +10,7 @@ |
|
@@ -10,6 +10,7 @@ |
10
|
// 增加init函数,异步请求的接口需要重新初始化一下选择列表
|
10
|
// 增加init函数,异步请求的接口需要重新初始化一下选择列表
|
11
|
// 异步渲染的模板统一插入 #chose-panel ,兼容页面多个选择框
|
11
|
// 异步渲染的模板统一插入 #chose-panel ,兼容页面多个选择框
|
12
|
|
12
|
|
|
|
13
|
+
|
13
|
var $ = require('yoho-jquery'),
|
14
|
var $ = require('yoho-jquery'),
|
14
|
tip = require('../plugin/tip'),
|
15
|
tip = require('../plugin/tip'),
|
15
|
loading = require('../plugin/loading');
|
16
|
loading = require('../plugin/loading');
|
|
@@ -37,7 +38,14 @@ var $chosePanel = $('#chose-panel'), |
|
@@ -37,7 +38,14 @@ var $chosePanel = $('#chose-panel'), |
37
|
$choseArea,
|
38
|
$choseArea,
|
38
|
$cartBar,
|
39
|
$cartBar,
|
39
|
$soonSoldOut = $('.soonSoldOut-tag'),
|
40
|
$soonSoldOut = $('.soonSoldOut-tag'),
|
40
|
- $yohoPage = $('.yoho-page');
|
41
|
+ $yohoPage = $('.yoho-page'),
|
|
|
42
|
+
|
|
|
43
|
+ // 门票 限购数量
|
|
|
44
|
+ ticketsLimit = $('#limitNum').val() || 0,
|
|
|
45
|
+ single = $('#single').val() || 0;
|
|
|
46
|
+$productSku = $('#productSku'),
|
|
|
47
|
+ $buyNumber = $('#buyNumber'),
|
|
|
48
|
+ $buyNowForm = $('#buyNowForm');
|
41
|
|
49
|
|
42
|
// 购物车编辑标相关变量
|
50
|
// 购物车编辑标相关变量
|
43
|
var isEdit,
|
51
|
var isEdit,
|
|
@@ -66,7 +74,6 @@ function init() { |
|
@@ -66,7 +74,6 @@ function init() { |
66
|
hasChooseColor = false;
|
74
|
hasChooseColor = false;
|
67
|
hasChooseSize = false;
|
75
|
hasChooseSize = false;
|
68
|
$curSizeBlock = null;
|
76
|
$curSizeBlock = null;
|
69
|
-
|
|
|
70
|
queryString = $.queryString();
|
77
|
queryString = $.queryString();
|
71
|
$imgsThumb = $('.chose-panel').find('.thumb');
|
78
|
$imgsThumb = $('.chose-panel').find('.thumb');
|
72
|
$choseArea = $('.chose-panel .main .chose-items');
|
79
|
$choseArea = $('.chose-panel .main .chose-items');
|
|
@@ -127,6 +134,14 @@ function removePannel() { |
|
@@ -127,6 +134,14 @@ function removePannel() { |
127
|
}
|
134
|
}
|
128
|
|
135
|
|
129
|
function checkColorSizeNum() {
|
136
|
function checkColorSizeNum() {
|
|
|
137
|
+
|
|
|
138
|
+ if (ticketsLimit) {
|
|
|
139
|
+ // 门票
|
|
|
140
|
+ if (!checkTickets()) {
|
|
|
141
|
+ return;
|
|
|
142
|
+ }
|
|
|
143
|
+ }
|
|
|
144
|
+
|
130
|
if (!hasChooseColor && !hasChooseSize) {
|
145
|
if (!hasChooseColor && !hasChooseSize) {
|
131
|
tip.show('请选择颜色和尺码~');
|
146
|
tip.show('请选择颜色和尺码~');
|
132
|
return false;
|
147
|
return false;
|
|
@@ -140,6 +155,24 @@ function checkColorSizeNum() { |
|
@@ -140,6 +155,24 @@ function checkColorSizeNum() { |
140
|
return true;
|
155
|
return true;
|
141
|
}
|
156
|
}
|
142
|
|
157
|
|
|
|
158
|
+// 检查门票选择
|
|
|
159
|
+function checkTickets() {
|
|
|
160
|
+ if (!hasChooseColor && !hasChooseSize) {
|
|
|
161
|
+ if (single) {
|
|
|
162
|
+ tip.show('请选择日期~');
|
|
|
163
|
+ } else {
|
|
|
164
|
+ tip.show('请选择日期和区域~');
|
|
|
165
|
+ }
|
|
|
166
|
+ return false;
|
|
|
167
|
+ } else if (!hasChooseColor) {
|
|
|
168
|
+ tip.show('请选择日期~');
|
|
|
169
|
+ return false;
|
|
|
170
|
+ } else if (!hasChooseSize && !single) {
|
|
|
171
|
+ tip.show('请选择区域~');
|
|
|
172
|
+ return false;
|
|
|
173
|
+ }
|
|
|
174
|
+ return true;
|
|
|
175
|
+}
|
143
|
|
176
|
|
144
|
|
177
|
|
145
|
function show(html, cb) {
|
178
|
function show(html, cb) {
|
|
@@ -172,9 +205,9 @@ function hide() { |
|
@@ -172,9 +205,9 @@ function hide() { |
172
|
// 修改加入购物车的文字和背景
|
205
|
// 修改加入购物车的文字和背景
|
173
|
function updateConformButtonClassAndText() {
|
206
|
function updateConformButtonClassAndText() {
|
174
|
$chosed = $allChoseItems.find('.chosed');
|
207
|
$chosed = $allChoseItems.find('.chosed');
|
175
|
- if ($chosed.closest('.zero-stock').length === 2) {
|
208
|
+ if (2 === $chosed.closest('.zero-stock').length) {
|
176
|
$('#chose-btn-sure').css('background-color', '#c0c0c0').html('已售罄');
|
209
|
$('#chose-btn-sure').css('background-color', '#c0c0c0').html('已售罄');
|
177
|
- } else if (limitProductCode) {
|
210
|
+ } else if (limitProductCode || ticketsLimit) {
|
178
|
$('#chose-btn-sure').css('background-color', '#eb0313').html('立即购买');
|
211
|
$('#chose-btn-sure').css('background-color', '#eb0313').html('立即购买');
|
179
|
} else {
|
212
|
} else {
|
180
|
$('#chose-btn-sure').css('background-color', '#eb0313').html(isEdit ? '确认' : '加入购物车');
|
213
|
$('#chose-btn-sure').css('background-color', '#eb0313').html(isEdit ? '确认' : '加入购物车');
|
|
@@ -184,7 +217,14 @@ function updateConformButtonClassAndText() { |
|
@@ -184,7 +217,14 @@ function updateConformButtonClassAndText() { |
184
|
// 显示剩余件数
|
217
|
// 显示剩余件数
|
185
|
function displayGoodNum(curGoodNum) {
|
218
|
function displayGoodNum(curGoodNum) {
|
186
|
|
219
|
|
187
|
- // 数量大于0
|
220
|
+ // 门票限购
|
|
|
221
|
+ if (ticketsLimit) {
|
|
|
222
|
+ $allChoseItems.find('.num .left-num').html('限购' + ticketsLimit + '件');
|
|
|
223
|
+ $leftNum.val(curGoodNum);
|
|
|
224
|
+ return;
|
|
|
225
|
+ }
|
|
|
226
|
+
|
|
|
227
|
+ // 数量大于
|
188
|
if (curGoodNum > 0) {
|
228
|
if (curGoodNum > 0) {
|
189
|
if ($soonSoldOut.length > 0) {
|
229
|
if ($soonSoldOut.length > 0) {
|
190
|
$allChoseItems.find('.num .left-num').html('即将售罄');
|
230
|
$allChoseItems.find('.num .left-num').html('即将售罄');
|
|
@@ -204,6 +244,7 @@ function displayGoodNum(curGoodNum) { |
|
@@ -204,6 +244,7 @@ function displayGoodNum(curGoodNum) { |
204
|
// 老的选中尺码去掉勾选,新的选中尺码加上勾选
|
244
|
// 老的选中尺码去掉勾选,新的选中尺码加上勾选
|
205
|
function changeSizeChosed(newSizeIndex) {
|
245
|
function changeSizeChosed(newSizeIndex) {
|
206
|
var sizes,
|
246
|
var sizes,
|
|
|
247
|
+ queryString,
|
207
|
i;
|
248
|
i;
|
208
|
|
249
|
|
209
|
if (curColorIndex && $curSizeBlock && $curSizeBlock.length > 0) {
|
250
|
if (curColorIndex && $curSizeBlock && $curSizeBlock.length > 0) {
|
|
@@ -247,6 +288,39 @@ function changeColorChosed(newColorIndex) { |
|
@@ -247,6 +288,39 @@ function changeColorChosed(newColorIndex) { |
247
|
return 0;
|
288
|
return 0;
|
248
|
}
|
289
|
}
|
249
|
|
290
|
|
|
|
291
|
+// 添加门票
|
|
|
292
|
+function addTickets(productSku, buyNumber) {
|
|
|
293
|
+ var data = {
|
|
|
294
|
+ productSku: productSku,
|
|
|
295
|
+ buyNumber: buyNumber
|
|
|
296
|
+ };
|
|
|
297
|
+
|
|
|
298
|
+ // 校验电子票
|
|
|
299
|
+ $.ajax({
|
|
|
300
|
+ url: '/cart/index/checkTickets',
|
|
|
301
|
+ dataType: 'json',
|
|
|
302
|
+ data: data,
|
|
|
303
|
+ type: 'post',
|
|
|
304
|
+ success: function(addRestult) {
|
|
|
305
|
+ if (addRestult.code != 200) {
|
|
|
306
|
+ if (addRestult.code == 401) {
|
|
|
307
|
+ var refer = window.location.href;
|
|
|
308
|
+ window.location.href = '//m.yohobuy.com/signin.html?refer=' + refer;
|
|
|
309
|
+ }
|
|
|
310
|
+ tip.show(addRestult.message);
|
|
|
311
|
+ } else {
|
|
|
312
|
+ $productSku.val(productSku);
|
|
|
313
|
+ $buyNumber.val(buyNumber);
|
|
|
314
|
+ $buyNowForm.submit();
|
|
|
315
|
+ }
|
|
|
316
|
+ },
|
|
|
317
|
+ error: function() {
|
|
|
318
|
+ tip.show('网络异常~');
|
|
|
319
|
+ }
|
|
|
320
|
+
|
|
|
321
|
+ });
|
|
|
322
|
+}
|
|
|
323
|
+
|
250
|
init();
|
324
|
init();
|
251
|
|
325
|
|
252
|
|
326
|
|
|
@@ -314,7 +388,7 @@ $yohoPage.on('touchstart', '.color-list .block', function() { |
|
@@ -314,7 +388,7 @@ $yohoPage.on('touchstart', '.color-list .block', function() { |
314
|
$this.siblings('.chosed').removeClass('chosed');
|
388
|
$this.siblings('.chosed').removeClass('chosed');
|
315
|
|
389
|
|
316
|
// 特殊处理: 老的选中尺码在新选中的颜色对应尺码中不存在, 需要将颜色的第一行对应的颜色块加上勾选样式.
|
390
|
// 特殊处理: 老的选中尺码在新选中的颜色对应尺码中不存在, 需要将颜色的第一行对应的颜色块加上勾选样式.
|
317
|
- if (curGoodNum === -1) {
|
391
|
+ if (-1 === curGoodNum) {
|
318
|
$curColorBlock = $($colorRowList.eq(0).children().get(index));
|
392
|
$curColorBlock = $($colorRowList.eq(0).children().get(index));
|
319
|
$curColorBlock.addClass('chosed');
|
393
|
$curColorBlock.addClass('chosed');
|
320
|
|
394
|
|
|
@@ -327,6 +401,20 @@ $yohoPage.on('touchstart', '.color-list .block', function() { |
|
@@ -327,6 +401,20 @@ $yohoPage.on('touchstart', '.color-list .block', function() { |
327
|
|
401
|
|
328
|
// 设置按钮的样式和文字
|
402
|
// 设置按钮的样式和文字
|
329
|
updateConformButtonClassAndText();
|
403
|
updateConformButtonClassAndText();
|
|
|
404
|
+
|
|
|
405
|
+ // 展览票
|
|
|
406
|
+ if (ticketsLimit && single) {
|
|
|
407
|
+ // 选中日期
|
|
|
408
|
+ $curSizeBlock = $('.size-list .size-row .block').eq(index + 1);
|
|
|
409
|
+ $curSizeBlock.addClass('chosed');
|
|
|
410
|
+
|
|
|
411
|
+ // 显示剩余数量
|
|
|
412
|
+ displayGoodNum($curColorBlock.data('num'));
|
|
|
413
|
+ hasChooseSize = true;
|
|
|
414
|
+ return false;
|
|
|
415
|
+ }
|
|
|
416
|
+
|
|
|
417
|
+
|
330
|
}).on('touchstart', '.size-list .block', function() {
|
418
|
}).on('touchstart', '.size-list .block', function() {
|
331
|
var $this = $(this),
|
419
|
var $this = $(this),
|
332
|
index,
|
420
|
index,
|
|
@@ -391,7 +479,7 @@ $yohoPage.on('touchstart', '.btn-minus', function() { |
|
@@ -391,7 +479,7 @@ $yohoPage.on('touchstart', '.btn-minus', function() { |
391
|
return;
|
479
|
return;
|
392
|
}
|
480
|
}
|
393
|
|
481
|
|
394
|
- if (num === 1 || (leftNum - 0) === 0) {
|
482
|
+ if (num === 1 || 0 === leftNum - 0) {
|
395
|
tip.show('您选择的数量不能为零~');
|
483
|
tip.show('您选择的数量不能为零~');
|
396
|
return;
|
484
|
return;
|
397
|
}
|
485
|
}
|
|
@@ -402,21 +490,22 @@ $yohoPage.on('touchstart', '.btn-minus', function() { |
|
@@ -402,21 +490,22 @@ $yohoPage.on('touchstart', '.btn-minus', function() { |
402
|
|
490
|
|
403
|
$num.val(num - 1);
|
491
|
$num.val(num - 1);
|
404
|
}).on('touchstart', '.btn-plus', function() {
|
492
|
}).on('touchstart', '.btn-plus', function() {
|
405
|
- var num = parseInt($num.val(), 10);
|
493
|
+ var num = parseInt($num.val(), 10),
|
|
|
494
|
+ maxTips = ticketsLimit ? '每人只可购买' + ticketsLimit + '张当日门票' : '您选择的数量超过了最大库存量~';
|
406
|
|
495
|
|
407
|
- leftNum = $('#left-num').val();
|
496
|
+ leftNum = ticketsLimit || $('#left-num').val();
|
408
|
|
497
|
|
409
|
if (!checkColorSizeNum()) {
|
498
|
if (!checkColorSizeNum()) {
|
410
|
return;
|
499
|
return;
|
411
|
}
|
500
|
}
|
412
|
|
501
|
|
413
|
- if (num - 0 === leftNum || leftNum === 0) {
|
502
|
+ if (num - 0 === leftNum || 0 === leftNum) {
|
414
|
return;
|
503
|
return;
|
415
|
}
|
504
|
}
|
416
|
|
505
|
|
417
|
// TODO:库存数验证
|
506
|
// TODO:库存数验证
|
418
|
if (num > leftNum - 1) {
|
507
|
if (num > leftNum - 1) {
|
419
|
- tip.show('您选择的数量超过了最大库存量~');
|
508
|
+ tip.show(maxTips);
|
420
|
return;
|
509
|
return;
|
421
|
}
|
510
|
}
|
422
|
$num.val(num + 1);
|
511
|
$num.val(num + 1);
|
|
@@ -451,16 +540,25 @@ $yohoPage.on('touchstart', '.btn-minus', function() { |
|
@@ -451,16 +540,25 @@ $yohoPage.on('touchstart', '.btn-minus', function() { |
451
|
}
|
540
|
}
|
452
|
$chosed = $('.block-list>ul>li.chosed');
|
541
|
$chosed = $('.block-list>ul>li.chosed');
|
453
|
|
542
|
|
454
|
- if ($chosed.length === 2 && $chosed.closest('.zero-stock').length === 0) {
|
543
|
+ if (2 === $chosed.length && 0 === $chosed.closest('.zero-stock').length) {
|
455
|
productSku = $curSizeBlock.data('skuid');
|
544
|
productSku = $curSizeBlock.data('skuid');
|
456
|
promotionId = $('#promotionId').val();
|
545
|
promotionId = $('#promotionId').val();
|
457
|
if (confirming) {
|
546
|
if (confirming) {
|
458
|
return false;
|
547
|
return false;
|
459
|
}
|
548
|
}
|
460
|
|
549
|
|
|
|
550
|
+ if (!ticketsLimit) {
|
461
|
confirming = true;
|
551
|
confirming = true;
|
|
|
552
|
+ }
|
|
|
553
|
+
|
462
|
loading.showLoadingMask();
|
554
|
loading.showLoadingMask();
|
463
|
|
555
|
|
|
|
556
|
+ // 立即购买门票
|
|
|
557
|
+ if (ticketsLimit) {
|
|
|
558
|
+ addTickets(productSku, buyNumber);
|
|
|
559
|
+ return;
|
|
|
560
|
+ }
|
|
|
561
|
+
|
464
|
// 针对是否处于编辑模式设置不同的url和需要post的数据
|
562
|
// 针对是否处于编辑模式设置不同的url和需要post的数据
|
465
|
if (isEdit) {
|
563
|
if (isEdit) {
|
466
|
cartGoodData = {
|
564
|
cartGoodData = {
|