Commit 4805b9e5 authored by 张娇(东信)'s avatar 张娇(东信)

购物车列表

parent 66413769
<template> <template>
<div class="cart-wrap"> <div class="cart-wrap">
<div class="shop" v-for="(shop, i) in list" :key="i"> <div class="shop" v-for="(shop, i) in cartList" :key="i">
<div class="flex-align-center shop-info"> <div class="flex-align-center shop-info">
<div <div
class="check" class="check"
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<div class="shop-name">{{ shop.shopName }}</div> <div class="shop-name">{{ shop.shopName }}</div>
</div> </div>
<div class="commodity-list"> <div class="commodity-list">
<div class="commodity-item flex-align-center" v-for="(item, j) in shop.children" :key="j"> <div class="commodity-item flex-align-center" v-for="(item, j) in secondaryList" :key="j">
<div <div
class="check" class="check"
:class="{ 'is-checked': item.isChecked }" :class="{ 'is-checked': item.isChecked }"
...@@ -21,14 +21,14 @@ ...@@ -21,14 +21,14 @@
> >
<wd-icon v-if="item.isChecked" name="check1"></wd-icon> <wd-icon v-if="item.isChecked" name="check1"></wd-icon>
</div> </div>
<img :src="item.img" alt="" /> <img :src="item.imgUrl" alt="" />
<div class="commodity-info"> <div class="commodity-info">
<div class="name">{{ item.name }}</div> <div class="name">{{ item.prodName }}</div>
<div class="tag">{{ item.tag }}</div> <div class="tag">{{ item.tag }}</div>
<div class="flex-between"> <div class="flex-between">
<div class="price"> <div class="price">
<span></span> <span></span>
{{ item.price }} {{ item.skuPrice }}
</div> </div>
<wd-input-number v-model="item.count" /> <wd-input-number v-model="item.count" />
</div> </div>
...@@ -56,90 +56,66 @@ ...@@ -56,90 +56,66 @@
</template> </template>
<script setup> <script setup>
import { ref, computed } from 'vue'; import { ref, computed, onMounted } from 'vue';
import { getshoppingCartList } from '../../../api/packageDetail';
import { categoryPresaleList } from '../../../api/assistingAgriculture/building';
// 计算是否全选 // 计算是否全选
const checkedAll = computed(() => { const checkedAll = computed(() => {
return list.value.every((item) => item.isChecked); return cartList.value.every((item) => item.isChecked);
}); });
const totalPrice = computed(() => { const totalPrice = computed(() => {
let total = 0; let total = 0;
list.value.forEach((item) => { cartList.value.forEach((item) => {
item.children.forEach((c) => { item.prodInfos.forEach((c) => {
if (c.isChecked) { if (c.isChecked) {
total += c.price; total += c.skuPrice * c.count;
} }
}); });
}); });
return total || 0; return total || 0;
}); });
const list = ref([ const list = ref([]);
{ const secondaryList = ref([]);
shopName: '杨家黄焖鸡', const hhh = ref([]);
type: '店铺',
isChecked: true, const cartList = ref([]);
children: [ onMounted(async () => {
{ presaleSortList();
img: '/src/static/assistingAgriculture/assets/fruit.png', });
name: '招牌黄焖鸡+米饭(土豆+生菜)',
price: 28.8,
count: 1,
tag: '约1000克',
isChecked: false,
},
],
},
{
shopName: '杨家黄焖鸡',
type: '店铺',
isChecked: false,
children: [
{
img: '/src/static/assistingAgriculture/assets/fruit.png',
name: '招牌黄焖鸡+米饭(土豆+生菜)',
price: 28.8,
count: 1,
tag: '约1000克',
isChecked: false,
},
{
img: '/src/static/assistingAgriculture/assets/fruit.png',
name: '招牌黄焖鸡+米饭(土豆+生菜)',
price: 28.8,
count: 1,
tag: '约1000克',
isChecked: false,
},
{
img: '/src/static/assistingAgriculture/assets/fruit.png',
name: '招牌黄焖鸡+米饭(土豆+生菜)',
price: 28.8,
count: 1,
tag: '约1000克',
isChecked: false,
},
],
},
]);
// 店铺 // 店铺
const changeShopChecked = (s) => { const changeShopChecked = (s) => {
s.isChecked = !s.isChecked; s.isChecked = !s.isChecked;
s.children.forEach((v) => { s.prodInfos.forEach((v) => {
v.isChecked = s.isChecked; v.isChecked = s.isChecked;
}); });
}; };
// 商品 店铺 // 商品 店铺
const changeCommodityChecked = (c, s) => { const changeCommodityChecked = (c, s) => {
c.isChecked = !c.isChecked; c.isChecked = !c.isChecked;
s.isChecked = s.children.every((v) => v.isChecked); s.isChecked = s.prodInfos.every((v) => v.isChecked);
}; };
// 全选 // 全选
const changeCheckedAll = () => { const changeCheckedAll = () => {
const temp = checkedAll.value; const temp = checkedAll.value;
list.value.forEach((v) => { cartList.value.forEach((v) => {
v.isChecked = temp; v.isChecked = temp;
changeShopChecked(v); changeShopChecked(v);
}); });
}; };
// 购物车列表
const presaleSortList = (index) => {
getshoppingCartList({}).then((res) => {
cartList.value = res.data;
cartList.value.forEach((shop) => {
secondaryList.value = shop.prodInfos;
secondaryList.value.forEach((item) => {
item.count = item.basket.basketCount;
item.imgUrl = import.meta.env.VITE_APP_IMG_URL + item.pic;
});
});
});
};
function toSettle() { function toSettle() {
// TODO: 跳转到结算页面 // TODO: 跳转到结算页面
xma.navigateTo({ xma.navigateTo({
...@@ -276,4 +252,7 @@ uni-page-body { ...@@ -276,4 +252,7 @@ uni-page-body {
} }
} }
} }
.wd-input-number {
margin-left: 120rpx;
}
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment