Commit 2d193102 authored by 石建新(贵阳日报)'s avatar 石建新(贵阳日报)
parents 8c0089e5 023efd26
...@@ -55,3 +55,20 @@ export function sgyrddShopPage(data) { ...@@ -55,3 +55,20 @@ export function sgyrddShopPage(data) {
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> <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"
...@@ -9,11 +9,12 @@ ...@@ -9,11 +9,12 @@
> >
<wd-icon v-if="shop.isChecked" name="check1"></wd-icon> <wd-icon v-if="shop.isChecked" name="check1"></wd-icon>
</div> </div>
<div class="type">{{ shop.type }}</div> <div class="type">店铺</div>
<div class="shop-name">{{ shop.shopName }}</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>
<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 +22,14 @@ ...@@ -21,14 +22,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>
...@@ -47,117 +48,118 @@ ...@@ -47,117 +48,118 @@
</div> </div>
<div class="price"> <div class="price">
合计: 合计:
<span>{{ totalPrice }}</span> <span>{{ totalPrice / 100 }}</span>
</div> </div>
</div> </div>
<div class="submit" @tap="toSettle">去结算({{ totalPrice }})</div> <div class="submit" @tap="toSettle(item)">去结算({{ totalPrice / 100 }})</div>
</div> </div>
</div> </div>
</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 * 100 * c.count;
} }
}); });
}); });
return total || 0; return total || 0;
}); });
const list = ref([ const list = ref([]);
{ const secondaryList = ref([]);
shopName: '杨家黄焖鸡', const cartList = ref([]);
type: '店铺', onMounted(async () => {
isChecked: true, presaleSortList();
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 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;
});
});
});
};
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() { function toSettle() {
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: 跳转到结算页面 // TODO: 跳转到结算页面
xma.navigateTo({ xma.navigateTo({
url: '/pages/assistingAgriculture/cart/ConfirmOrder', url: `/pages/assistingAgriculture/cart/ConfirmOrder?ids=${basketIds}`,
}); });
} else {
xma.showToast({
title: '请选择需要结算的商品!',
icon: 'none',
});
}
} }
// 跳转店铺主页
const toStore = (item) => {
xma.navigateTo({
url: `/pages/assistingAgriculture/shop/index?shopId=1`,
});
};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
uni-page-body {
height: 100%;
}
.cart-wrap { .cart-wrap {
height: 100%; height: 100%;
background-color: #f6f6f6; background-color: #f6f6f6;
position: relative; position: relative;
padding: 20rpx; padding: 20rpx;
padding-bottom: 0; padding-bottom: 220rpx;
box-sizing: border-box; box-sizing: border-box;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
...@@ -181,9 +183,8 @@ uni-page-body { ...@@ -181,9 +183,8 @@ uni-page-body {
} }
.shop { .shop {
background-color: #fff; background-color: #fff;
padding: 32rpx 20rpx; padding: 32rpx 20rpx 120rpx 20rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
.shop-info { .shop-info {
.type { .type {
padding: 3rpx 6rpx; padding: 3rpx 6rpx;
...@@ -237,7 +238,7 @@ uni-page-body { ...@@ -237,7 +238,7 @@ uni-page-body {
} }
} }
.total { .total {
position: absolute; position: fixed;
bottom: 0; bottom: 0;
left: 0; left: 0;
width: 100%; width: 100%;
...@@ -276,4 +277,7 @@ uni-page-body { ...@@ -276,4 +277,7 @@ uni-page-body {
} }
} }
} }
.wd-input-number {
margin-left: 120rpx;
}
</style> </style>
...@@ -190,10 +190,11 @@ const addOrderFn = () => { ...@@ -190,10 +190,11 @@ const addOrderFn = () => {
// 获取购物车列表 // 获取购物车列表
const getshoppingCartListFn = () => { const getshoppingCartListFn = () => {
getshoppingCartList({}).then((res) => { getshoppingCartList({}).then((res) => {
res.data.forEach((item) => { // 累加prodInfos长度
// item.img = imgUrl + item.img; const totalLength = res.data.reduce((accumulator, current) => {
}); return accumulator + (current.prodInfos ? current.prodInfos.length : 0);
subscript.value = res.data.length; }, 0);
subscript.value = totalLength;
}); });
}; };
// 进入页面回到顶部 // 进入页面回到顶部
......
...@@ -146,7 +146,10 @@ const toBuilding = (item) => { ...@@ -146,7 +146,10 @@ const toBuilding = (item) => {
url: `/pages/assistingAgriculture/RuralTravel/RuralTravel?categoryId=${item.categoryId}`, url: `/pages/assistingAgriculture/RuralTravel/RuralTravel?categoryId=${item.categoryId}`,
}); });
} else { } 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