Commit 2d193102 authored by 石建新(贵阳日报)'s avatar 石建新(贵阳日报)
parents 8c0089e5 023efd26
......@@ -55,3 +55,20 @@ export function sgyrddShopPage(data) {
data,
});
}
// 获取店铺入驻类型
export function sgyrShopCategory() {
return request({
url: `/sgyrdd/category/tree`,
method: 'GET',
});
}
// 申请成为商家
export function applyShop(data) {
return request({
url: `/sgyrdd/shop/apply`,
method: 'POST',
data,
});
}
<template>
<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="check"
......@@ -9,11 +9,12 @@
>
<wd-icon v-if="shop.isChecked" name="check1"></wd-icon>
</div>
<div class="type">{{ shop.type }}</div>
<div class="shop-name">{{ shop.shopName }}</div>
<div class="type">店铺</div>
<div class="shop-name" @click="toStore(item)">{{ shop.shopName }}</div>
<wd-icon name="arrow-right" size="32rpx" style="margin-left: -15rpx"></wd-icon>
</div>
<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
class="check"
:class="{ 'is-checked': item.isChecked }"
......@@ -21,14 +22,14 @@
>
<wd-icon v-if="item.isChecked" name="check1"></wd-icon>
</div>
<img :src="item.img" alt="" />
<img :src="item.imgUrl" alt="" />
<div class="commodity-info">
<div class="name">{{ item.name }}</div>
<div class="name">{{ item.prodName }}</div>
<div class="tag">{{ item.tag }}</div>
<div class="flex-between">
<div class="price">
<span></span>
{{ item.price }}
{{ item.skuPrice }}
</div>
<wd-input-number v-model="item.count" />
</div>
......@@ -47,117 +48,118 @@
</div>
<div class="price">
合计:
<span>{{ totalPrice }}</span>
<span>{{ totalPrice / 100 }}</span>
</div>
</div>
<div class="submit" @tap="toSettle">去结算({{ totalPrice }})</div>
<div class="submit" @tap="toSettle(item)">去结算({{ totalPrice / 100 }})</div>
</div>
</div>
</template>
<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(() => {
return list.value.every((item) => item.isChecked);
return cartList.value.every((item) => item.isChecked);
});
const totalPrice = computed(() => {
let total = 0;
list.value.forEach((item) => {
item.children.forEach((c) => {
cartList.value.forEach((item) => {
item.prodInfos.forEach((c) => {
if (c.isChecked) {
total += c.price;
total += c.skuPrice * 100 * c.count;
}
});
});
return total || 0;
});
const list = ref([
{
shopName: '杨家黄焖鸡',
type: '店铺',
isChecked: true,
children: [
{
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 list = ref([]);
const secondaryList = ref([]);
const cartList = ref([]);
onMounted(async () => {
presaleSortList();
});
// 店铺
const changeShopChecked = (s) => {
s.isChecked = !s.isChecked;
s.children.forEach((v) => {
s.prodInfos.forEach((v) => {
v.isChecked = s.isChecked;
});
};
// 商品 店铺
const changeCommodityChecked = (c, s) => {
c.isChecked = !c.isChecked;
s.isChecked = s.children.every((v) => v.isChecked);
s.isChecked = s.prodInfos.every((v) => v.isChecked);
};
// 全选
const changeCheckedAll = () => {
const temp = checkedAll.value;
list.value.forEach((v) => {
cartList.value.forEach((v) => {
v.isChecked = temp;
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;
});
});
});
};
const selectedItems = computed(() => {
return cartList.value.reduce((acc, shop) => {
const selectedProducts = shop.prodInfos.filter((item) => item.isChecked);
return acc.concat(selectedProducts);
}, []);
});
const getSelectedItems = () => {
return cartList.value.reduce((acc, shop) => {
const selectedProducts = shop.prodInfos.filter((item) => item.isChecked);
return acc.concat(selectedProducts);
}, []);
};
function toSettle() {
// TODO: 跳转到结算页面
const selected = getSelectedItems();
if (selected.length > 0) {
console.log('Selected items:', selected);
const basketIds = selected.map((item) => item.basket.basketId).join(',');
console.log('Basket IDs:', basketIds);
// TODO: 跳转到结算页面
xma.navigateTo({
url: `/pages/assistingAgriculture/cart/ConfirmOrder?ids=${basketIds}`,
});
} else {
xma.showToast({
title: '请选择需要结算的商品!',
icon: 'none',
});
}
}
// 跳转店铺主页
const toStore = (item) => {
xma.navigateTo({
url: '/pages/assistingAgriculture/cart/ConfirmOrder',
url: `/pages/assistingAgriculture/shop/index?shopId=1`,
});
}
};
</script>
<style lang="scss" scoped>
uni-page-body {
height: 100%;
}
.cart-wrap {
height: 100%;
background-color: #f6f6f6;
position: relative;
padding: 20rpx;
padding-bottom: 0;
padding-bottom: 220rpx;
box-sizing: border-box;
display: flex;
flex-direction: column;
......@@ -181,9 +183,8 @@ uni-page-body {
}
.shop {
background-color: #fff;
padding: 32rpx 20rpx;
padding: 32rpx 20rpx 120rpx 20rpx;
margin-bottom: 20rpx;
.shop-info {
.type {
padding: 3rpx 6rpx;
......@@ -237,7 +238,7 @@ uni-page-body {
}
}
.total {
position: absolute;
position: fixed;
bottom: 0;
left: 0;
width: 100%;
......@@ -276,4 +277,7 @@ uni-page-body {
}
}
}
.wd-input-number {
margin-left: 120rpx;
}
</style>
......@@ -190,10 +190,11 @@ const addOrderFn = () => {
// 获取购物车列表
const getshoppingCartListFn = () => {
getshoppingCartList({}).then((res) => {
res.data.forEach((item) => {
// item.img = imgUrl + item.img;
});
subscript.value = res.data.length;
// 累加prodInfos长度
const totalLength = res.data.reduce((accumulator, current) => {
return accumulator + (current.prodInfos ? current.prodInfos.length : 0);
}, 0);
subscript.value = totalLength;
});
};
// 进入页面回到顶部
......
......@@ -146,7 +146,10 @@ const toBuilding = (item) => {
url: `/pages/assistingAgriculture/RuralTravel/RuralTravel?categoryId=${item.categoryId}`,
});
} else {
console.log(222);
xma.showToast({
title: '正在开发中!',
icon: 'none',
});
}
};
// 跳转详情页
......
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