cartUtils.js
4.1 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
const NET = require('../../../utils/request')
const API = require('../../../config/api')
import {showLoading,hideLoading} from "@/utils/plugIn/globalLoading.js";
/**
* 根据选中的购物车数据获取价格和过滤后的用于结算购物车的post数据
* @param dataList
* @return {Promise<{shopList: *[], money: number}>}
*/
export async function getPriceBySelect(dataList) {
showLoading()
let addCart = []
// 遍历店铺,获取选中的sku组装数据
for (let i = 0; i < dataList.length; i++) {
let shopObj = {}
const theCurrentShop = dataList[i]
shopObj["shopId"] = theCurrentShop.shopId
shopObj["skus"] = []
for (let j = 0; j < theCurrentShop.skus.length; j++) {
const theCurrentSku = dataList[i].skus[j]
// 如果是选中的才往当前店铺塞
if (theCurrentSku.selected) {
let skusObj = {}
skusObj["ifLogistics"] = theCurrentSku.ifLogistics
skusObj["number"] = theCurrentSku.number
skusObj["selected"] = theCurrentSku.selected
skusObj["skuId"] = theCurrentSku.skuId
shopObj.skus.push(skusObj)
}
}
// 过滤掉sku为空的店铺
if (shopObj.skus.length > 0) {
addCart.push(shopObj)
}
}
try {
const postData = {
type: 2,
shops: addCart
}
const res = await NET.request(API.Settlement, postData, 'POST')
const money = res.data.shops.reduce((previousValue, currentValue) => (previousValue + currentValue.total), 0)
return {
money: money.toFixed(2),
shopList: addCart
}
} finally {
hideLoading()
}
}
/**
* 根据选中的购物车数据获取购物车数量
* @param dataList
* @return {Promise<{allNumber: number, isAllCheck: boolean}>}
*/
export async function getCartNumberBySelect(dataList) {
let allNumber = 0, checkNumber = 0, isAllCheck = true
// 遍历店铺
for (let i = 0; i < dataList.length; i++) {
// 当前店铺
let shopObj = dataList[i]
// 遍历店铺内部的商品
for (let j = 0; j < shopObj.skus.length; j++) {
let good = dataList[i].skus[j]
allNumber += good.number
if (good.selected === 1) {
checkNumber += +good.number
} else {
// 如果商品没有选中,但是又勾选了全选
if (isAllCheck) {
isAllCheck = false
}
}
}
}
// 更新缓存
uni.setStorageSync('allCartNum', allNumber)
// 设置导航条
if (allNumber > 0) {
uni.setTabBarBadge({
index: 2,
text: (allNumber).toString()
})
} else {
uni.removeTabBarBadge({
index: 2
})
}
return {
allNumber, checkNumber, isAllCheck
}
}
/**
* 默认购物车,供骨架屏使用
* @type {[{skus: [{image: string, number: number, productId: number, price: number, productName: string, selected: number},{image: string, number: number, productId: number, price: number, productName: string, selected: number},{image: string, number: number, productId: number, price: number, productName: string, selected: number}], shopName: string, shopId: number, selected: number}]}
*/
export const defaultCartList = [
{
shopId: 1,
shopName: '12312312321312312',
selected: 0,
skus: [
{
productId: 1,
productName: '',
image: '',
price: 0,
number: 0,
selected: 0,
},
{
productId: 2,
productName: '',
image: '',
price: 0,
number: 0,
selected: 0,
},
{
productId: 3,
productName: '',
image: '',
price: 0,
number: 0,
selected: 0,
}
]
}
]