ladder_calculate.js
5.99 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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
module.exports = {
//辅助数组添加元素功能
find_in_add: function(list, ele) {
var idx=list.findIndex(function (e) {
return e.goods_id==ele.goods_id;
})
if(idx>-1) return false;
list.push(ele);
},
//辅助数组添加元素功能
find_in_remove: function(list, ele) {
var idx=list.findIndex(function (e) {
return e.goods_id==ele.goods_id;
})
if(idx==-1) return false;
list.splice(idx, 1);
},
//主要是把组合购的商品分离出来
add_ladder_prom: function(car, a, ele) {
var point = car[a];
if (point.ladder_map) {
if (point.ladder_map[ele.prom_id]) {
this.find_in_add(point.ladder_map[ele.prom_id].goods, ele);
} else {
point.ladder_map[ele.prom_id] = {
goods: [],
act: ele.act
};
point.ladder_map[ele.prom_id].goods.push(ele);
}
} else {
point.ladder_map = {};
point.ladder_map[ele.prom_id] = {
goods: [],
act: ele.act
};
point.ladder_map[ele.prom_id].goods.push(ele);
}
},
//未选中的商品,要从中剔除
remove_ladder_prom: function(car, a, ele) {
var point = car[a];
if (point.ladder_map) {
if (point.ladder_map[ele.prom_id]) {
this.find_in_remove(point.ladder_map[ele.prom_id].goods, ele);
}
}
},
//把组合购的商品价格计算出来,同时每个会员都有购买组合商品的上限!ladder_b_num是已经购买了多少件
calculate_ladder: function(car, a, th) {
var car_item = car[a];
var tfeel = 0,offline_price = 0,offline_num = 0;
var txt = "requestData[" + a + "].l_need_list";
var need_to=[];
//活动的列表都存储在这里面,可以快速查询
if (!car_item.ladder_map) {
var res = {
tfeel: tfeel,
offline_price: offline_price,
offline_num: offline_num
};
th.setData({
[txt]: null
});
return res;
}
//因为可能有多个组合购的活动
for (var mi in car_item.ladder_map) {
var bitem = car_item.ladder_map[mi];
var act = bitem.act; //获取到组合购的详情
if(!act) continue;
var all_num = 0; //商品数量之和
var all_price = 0;
var aprice=0;
var no_in_arr = []; //剩余的未加入组合购
var title =""; //提示语;
var goods = car_item.goods;
//-- 每件商品要剔除的量 --
for (let v3 in car_item.goods) {
car_item.goods[v3].l_need_downlow_num=0;
}
//寻找一下
function get_num2(ite) {
var vh=car_item.goods.findIndex(function (e) {
return e.goods_id == ite.goods_id
})
if(vh>-1) return car_item.goods[vh];
return 0;
}
for (var i in goods) {
if(goods[i].prom_type!=10) continue;
if(!goods[i].selected) continue;
if(goods[i].prom_id!=act.id) continue;
var item = goods[i];
item.goods_price=item.goods_price;
item.offline_price=item.offline_price;
item.cart_num =item.goods_num;
all_num += item.cart_num;
for (var j = 0; j < item.cart_num; j++) {
no_in_arr.push({
price: item.goods_price,offline_price:item.offline_price,goods_id:item.goods_id,shop_price:item.shop_price,goods_market_price:item.goods_market_price
})
}
}
function sortData(a, b) {
return a.price - b.price
}
no_in_arr.sort(sortData);
//开始阶梯计算价格
var lev=0;
for(let j in act.ladder_list){
if(no_in_arr.length==0) break;
let item_j=act.ladder_list[j];
var end=no_in_arr.pop();
var new_price = parseInt(item_j.discount_field) == 2?end.goods_market_price:(parseInt(item_j.discount_field) == 1 ? end.shop_price : end.price);
aprice+=new_price* parseFloat(item_j.discount)/10;
lev++;
}
//获取阶梯促销的下一个促销
if(lev>0 && lev<act.ladder_list.length){
title = "再买1件,第"+(lev+1)+"件"+act.ladder_list[lev].discount+"折";
var it = {
id: act.id,
pickup_id: car_item.pid,
title: title
};
need_to.push(it);
}
all_price+=aprice;
//算一下剩余的钱
if (no_in_arr.length) {
for (var ii in no_in_arr) {
var item = no_in_arr[ii];
var gitem=get_num2(item);
if(gitem) {
if (!gitem.l_need_downlow_num) {
gitem.l_need_downlow_num = 1;
}
else {
gitem.l_need_downlow_num++;
}
all_price += item.price;
if (item.offline_price) {
offline_price += gitem.goods_price - gitem.offline_price;
offline_num += 1;
}
}
}
}
tfeel += all_price;
}
var res = {
tfeel: tfeel,
aprice:aprice,
offline_price: offline_price,
offline_num: offline_num,
};
th.setData({ [txt]: need_to});
return res;
},
find_need_to: function(list, iter) {
if (!list || list.length <= 0) return -1;
for (var i in list) {
var item = list[i];
if (item.id == iter.id) {
return i;
}
}
return -1;
},
//筛选阶梯促销,纯粹的数组按活动id分组
find_split: function(arr) {
//过滤只有团购的商品
var oarr = arr.goods.filter(function(ele) {
return ele.prom_type == 10
})
if(!oarr || oarr.length==0) return null;
//看一下有多少个不同的团购
var map = {},dest = [];
for (var i = 0; i < oarr.length; i++) {
var ai = oarr[i];
var index=map[ai.prom_id]
if (!index) {
dest.push({
prom_id: ai.prom_id,
data: [ai]
});
map[ai.prom_id]=dest.length; //存储下标
} else {
var dj = dest[index-1];
dj.data.push(ai);
}
}
return dest;
}
}