You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
4.1 KiB
131 lines
4.1 KiB
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,
|
|
}
|
|
]
|
|
}
|
|
]
|