Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
groupPurchase-miniapp
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
彭佳妮(贵阳日报)
groupPurchase-miniapp
Commits
2d193102
Commit
2d193102
authored
Aug 09, 2024
by
石建新(贵阳日报)
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.platform.xinhuaapp.com/pengjiani/groupPurchase-miniapp
parents
8c0089e5
023efd26
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
105 additions
and
80 deletions
+105
-80
shop.js
src/api/shop.js
+17
-0
cart.vue
src/pages/assistingAgriculture/cart/cart.vue
+79
-75
detail.vue
src/pages/assistingAgriculture/detail/detail.vue
+5
-4
index.vue
src/pages/assistingAgriculture/index/index.vue
+4
-1
No files found.
src/api/shop.js
View file @
2d193102
...
...
@@ -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
,
});
}
src/pages/assistingAgriculture/cart/cart.vue
View file @
2d193102
<
template
>
<div
class=
"cart-wrap"
>
<div
class=
"shop"
v-for=
"(shop, i) in
l
ist"
:key=
"i"
>
<div
class=
"shop"
v-for=
"(shop, i) in
cartL
ist"
: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 s
hop.children
"
:key=
"j"
>
<div
class=
"commodity-item flex-align-center"
v-for=
"(item, j) in s
econdaryList
"
: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.img
Url
"
alt=
""
/>
<div
class=
"commodity-info"
>
<div
class=
"name"
>
{{
item
.
n
ame
}}
</div>
<div
class=
"name"
>
{{
item
.
prodN
ame
}}
</div>
<div
class=
"tag"
>
{{
item
.
tag
}}
</div>
<div
class=
"flex-between"
>
<div
class=
"price"
>
<span>
¥
</span>
{{
item
.
p
rice
}}
{{
item
.
skuP
rice
}}
</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
l
ist
.
value
.
every
((
item
)
=>
item
.
isChecked
);
return
cartL
ist
.
value
.
every
((
item
)
=>
item
.
isChecked
);
});
const
totalPrice
=
computed
(()
=>
{
let
total
=
0
;
l
ist
.
value
.
forEach
((
item
)
=>
{
item
.
children
.
forEach
((
c
)
=>
{
cartL
ist
.
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
;
l
ist
.
value
.
forEach
((
v
)
=>
{
cartL
ist
.
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
>
src/pages/assistingAgriculture/detail/detail.vue
View file @
2d193102
...
...
@@ -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
;
});
};
// 进入页面回到顶部
...
...
src/pages/assistingAgriculture/index/index.vue
View file @
2d193102
...
...
@@ -146,7 +146,10 @@ const toBuilding = (item) => {
url
:
`/pages/assistingAgriculture/RuralTravel/RuralTravel?categoryId=
${
item
.
categoryId
}
`
,
});
}
else
{
console
.
log
(
222
);
xma
.
showToast
({
title
:
'正在开发中!'
,
icon
:
'none'
,
});
}
};
// 跳转详情页
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment