Skip to content

Commit d00ecbd

Browse files
committed
收藏页
1 parent 86080cc commit d00ecbd

File tree

4 files changed

+733
-0
lines changed

4 files changed

+733
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
/**
2+
* 收藏页 -- 模型
3+
* @author by Gavin 2016-7-28
4+
*/
5+
var $ = require('home:widget/ui/zepto/zepto.js');
6+
var B = require('home:widget/ui/backbone/backbone.js');
7+
8+
var Model = B.Model.extend({
9+
defaults: {
10+
collections: null, // 收藏数据
11+
cateList: null, // 分类列表
12+
editable: null, // 编辑按钮是否可点击
13+
editStatus: false, // 当前商品的编辑状态 true 表示正在编辑,false表示不是编辑状态
14+
checkedNum: 0, // 选中商品的数量
15+
deleteList: null, // 删除商品列表
16+
errMsg: '', // 错误信息
17+
deleteStatus: null, // 删除商品返回状态
18+
maxCount: 0, // 收藏商品的总数
19+
isEnd: false // 翻页,是否到头了
20+
},
21+
22+
// 错误码统一管理
23+
ERROR_CODE: {
24+
0: '返回数据格式错误',
25+
1: '数据返回异常',
26+
2: '数据请求失败'
27+
},
28+
29+
/**
30+
* 当页面初始化时,立即请求数据
31+
*/
32+
initialize: function () {
33+
this.getList();
34+
},
35+
36+
/**
37+
* 获取收藏商品列表
38+
* @param {opts} object
39+
* @param {opts.catid} number 分类ID
40+
* @param {opts.pn} number 起始页
41+
* @param {opts.rn} number 结束页
42+
*/
43+
getList: function ( opts ) {
44+
var _opts = this.formatData( opts );
45+
this.fetch({
46+
url: '/collect/sku/getlist',
47+
data: _opts,
48+
datatype: 'JSON',
49+
timeout: 20000,
50+
success: function ( _, data ) {
51+
if ( data && data.ret === 0 ) {
52+
if ( data.content && data.content.sku_list ) {
53+
var oldCollect = _.get('collections');
54+
if ( oldCollect === null ) oldCollect = [];
55+
_.set({
56+
// 每次请求的数据都追加到原来的数组上
57+
collections: oldCollect.concat(data.content.sku_list),
58+
editable: data.content.total > 0 ? true : false,
59+
cateList: data.content.cat_list,
60+
maxCount: data.content.total
61+
});
62+
_.setIsEnd(); // 是否滚动到头了
63+
} else {
64+
_.set('errMsg', _.ERROR_CODE[0]);
65+
}
66+
} else {
67+
_.set('errMsg', _.ERROR_CODE[1]);
68+
}
69+
},
70+
error: function ( _, err ) {
71+
_.set('errMsg', _.ERROR_CODE[2]);
72+
}
73+
});
74+
},
75+
76+
/**
77+
* 滚动时请求数据,判断是否已经没有数据了
78+
*/
79+
setIsEnd: function () {
80+
var currentCount = this.get('collections').length;
81+
var maxCount = this.get('maxCount');
82+
if ( currentCount >= maxCount ) {
83+
this.set('isEnd', true);
84+
}
85+
},
86+
87+
/**
88+
* 格式化数据
89+
* @param from this.getList()
90+
*/
91+
pn: 0,
92+
formatData: function ( opts ) {
93+
var defaults = {
94+
catid: '',
95+
pn: this.pn,
96+
rn: 12
97+
};
98+
var newOpt = $.extend({}, defaults, opts);
99+
return newOpt;
100+
},
101+
102+
/**
103+
* 切换商品编辑状态
104+
*/
105+
changeEditStatus: function () {
106+
this.set('editStatus', !this.get('editStatus'));
107+
},
108+
109+
/**
110+
* 更新选中收藏商品的数量,同时更新删除商品列表
111+
* @param {action} string 'add' or 'sub' 编辑收藏品的动作
112+
* @param {skuId} number 商品sku_id
113+
*/
114+
updateNum: function ( action, skuId ) {
115+
if ( !action || !skuId ) return;
116+
var nowNum = +(this.get('checkedNum'));
117+
var deleteList = this.get('deleteList') || [];
118+
if ( action == 'add' ) {
119+
deleteList.push( skuId );
120+
this.set({checkedNum: nowNum + 1, deleteList: deleteList});
121+
} else if ( action == 'sub' ) {
122+
deleteList.splice(deleteList.indexOf(skuId), 1);
123+
this.set({checkedNum: nowNum - 1, deleteList: deleteList});
124+
}
125+
},
126+
127+
/**
128+
* 批量删除收藏商品
129+
*/
130+
batchDelete: function () {
131+
var deleteList = this.get('deleteList');
132+
this.fetch({
133+
url: '/collect/sku/del',
134+
data: {sku_list: deleteList},
135+
datatype: 'json',
136+
timeout: 20000,
137+
success: function ( _, res ) {
138+
if ( res && res.ret === 0 ) {
139+
_.set('deleteStatus', res.content.status);
140+
} else {
141+
_.set('errMsg', that.ERROR_CODE[1]);
142+
}
143+
},
144+
error: function ( _, err ) {
145+
_.set('errMsg', that.ERROR_CODE[2]);
146+
}
147+
});
148+
}
149+
});
150+
151+
module.exports = Model;

0 commit comments

Comments
 (0)