cart.page.js
2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
var $ = require('yoho-jquery');
var Cart = require('./cart');
var Stepper = require('./stepper');
$(function() {
// 关闭info-bar
$('.info-bar .close').on('click', function() {
$('.info-bar').hide();
});
// 全选和单选
$('.toggle-chk, .toggle-chk-item').on('click', function() {
var $this = $(this),
$checkoutBtn = $('#checkout_btn'),
checkAll = $this.hasClass('chk-all'),
checkProId = [];
var data;
if ($this.hasClass('chk-group')) {
// 取消选择
$this.removeClass('chk-group');
$checkoutBtn.addClass('disable');
if (checkAll) {
Cart.unCheckAllPros();
} else {
Cart.resetCheckAllStyle();
$this.next().val('');
}
} else {
if (checkAll) {
data = { productId: 'ALL' };
} else {
checkProId = $this.parent().attr('data-productId');
data = { productId: checkProId};
}
// 检查库存
$.ajax({
type: 'GET',
url: '/shopping/cart/product/check_inventory',
data: data,
dataType: 'json'
}).done(function(res) {
if (res.valid) {
$this.addClass('chk-group');
$checkoutBtn.removeClass('disable');
if (checkAll) {
Cart.checkAllPros(res.invalidProIds);
} else {
$this.next().val(checkProId);
// 判断是否需要全选
Cart.toggleCheckAll();
}
} else {
if (checkAll) {
// 全选商品中存在库存不足
// 如果有有效商品
if ($('.toggle-chk-item').length) {
$this.addClass('chk-group');
Cart.checkAllPros(res.invalidProIds);
}
Cart.toggleNotEnough($this, 'ALL');
} else {
// 单选商品库存不足
Cart.toggleNotEnough($this);
}
}
}).fail(function() {
// 通用处理错误
// TODO
});
}
});
// 变动商品数量
Stepper.init();
// 删除商品
$('.remove-item').on('click', function() {
Cart.removePro($(this).attr('data-productId'));
});
// 移入收藏夹
$('.send-to-favorite').on('click', function() {
Cart.sendToFavorite($(this).attr('data-productId'));
});
// 编辑商品颜色和属性
$('.editable').on('click', function() {
Cart.editColorOrSize($(this).attr('data-productId'));
});
});