From 46c1c41331022ea8bd19b27d55e17ef3ba11ae90 Mon Sep 17 00:00:00 2001 From: weiwei Date: Tue, 9 Sep 2025 12:16:05 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:=E5=85=B1=E5=AF=8C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=92=8C=E5=95=86=E5=93=81=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages.json | 19 +++ src/pages/canteen/detail.vue | 2 +- src/pages/prosperity-shop/goods-detail.vue | 3 + src/pages/prosperity-shop/shop-detail.vue | 162 +++++++++++++++++++++ src/pages/tabbar/prosperityShop.vue | 23 +-- src/sheep/api/prosperityShop.ts | 22 +++ 6 files changed, 214 insertions(+), 17 deletions(-) create mode 100644 src/pages/prosperity-shop/goods-detail.vue create mode 100644 src/pages/prosperity-shop/shop-detail.vue diff --git a/src/pages.json b/src/pages.json index 1b93263..b3c9a49 100644 --- a/src/pages.json +++ b/src/pages.json @@ -135,6 +135,25 @@ } ] }, + { + "root": "pages/prosperity-shop", + "pages": [ + { + "path": "goods-detail", + "style": { + "navigationBarTitleText": "商品详情", + "disableScroll": true + } + }, + { + "path": "shop-detail", + "style": { + "navigationBarTitleText": "超市详情", + "disableScroll": true + } + } + ] + }, { "root": "pages/apply", "pages": [ diff --git a/src/pages/canteen/detail.vue b/src/pages/canteen/detail.vue index 03be740..25f3397 100644 --- a/src/pages/canteen/detail.vue +++ b/src/pages/canteen/detail.vue @@ -251,7 +251,7 @@ const doFood = () => { - + diff --git a/src/pages/prosperity-shop/goods-detail.vue b/src/pages/prosperity-shop/goods-detail.vue new file mode 100644 index 0000000..60988c1 --- /dev/null +++ b/src/pages/prosperity-shop/goods-detail.vue @@ -0,0 +1,3 @@ + + + diff --git a/src/pages/prosperity-shop/shop-detail.vue b/src/pages/prosperity-shop/shop-detail.vue new file mode 100644 index 0000000..3d6d3ef --- /dev/null +++ b/src/pages/prosperity-shop/shop-detail.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/src/pages/tabbar/prosperityShop.vue b/src/pages/tabbar/prosperityShop.vue index da0ac85..dc1fabc 100644 --- a/src/pages/tabbar/prosperityShop.vue +++ b/src/pages/tabbar/prosperityShop.vue @@ -106,7 +106,7 @@ diff --git a/src/sheep/api/prosperityShop.ts b/src/sheep/api/prosperityShop.ts index 8097e42..d9720f4 100644 --- a/src/sheep/api/prosperityShop.ts +++ b/src/sheep/api/prosperityShop.ts @@ -9,4 +9,26 @@ export default { params: { productLimit: 5 }, }) }, + // 获取超市商户分类列表 + getShopCategory: (): Promise => { + return request({ + url: "/supermarket/app/mall/merchant/category/list", + method: "GET", + }) + }, + // 获取超市商户所属分类列表 + getShopDetail: (id: string): Promise => { + return request({ + url: `/supermarket/app/mall/merchant/${id}`, + method: "GET", + }) + }, + // 获取超市商品分类列表 + getGoodsCategory: (params: { merchantId: string }): Promise => { + return request({ + url: `/supermarket/app/mall/category/tree`, + method: "GET", + params, + }) + }, } From 4ef150f57bb780f7e9d70eab18b8a94bd2a2a94d Mon Sep 17 00:00:00 2001 From: weiwei Date: Tue, 9 Sep 2025 19:13:16 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat:=E5=85=B1=E5=AF=8C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=88=97=E8=A1=A8=E5=92=8C=E5=95=86=E5=93=81?= =?UTF-8?q?=E8=AF=A6=E7=BB=86=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/prosperity-shop/goods-detail.vue | 82 ++++++++++++- src/pages/prosperity-shop/shop-detail.vue | 110 +++++++++++++----- src/pages/tabbar/onlineShop.vue | 13 +-- src/pages/tabbar/prosperityShop.vue | 6 +- src/sheep/api/prosperityShop.ts | 15 +++ .../crud/crud-layout/crud-layout.vue | 12 +- src/sheep/utils/tree-to-list.ts | 11 ++ 7 files changed, 200 insertions(+), 49 deletions(-) create mode 100644 src/sheep/utils/tree-to-list.ts diff --git a/src/pages/prosperity-shop/goods-detail.vue b/src/pages/prosperity-shop/goods-detail.vue index 60988c1..cf4024b 100644 --- a/src/pages/prosperity-shop/goods-detail.vue +++ b/src/pages/prosperity-shop/goods-detail.vue @@ -1,3 +1,81 @@ - + - + + + diff --git a/src/pages/prosperity-shop/shop-detail.vue b/src/pages/prosperity-shop/shop-detail.vue index 3d6d3ef..67d3466 100644 --- a/src/pages/prosperity-shop/shop-detail.vue +++ b/src/pages/prosperity-shop/shop-detail.vue @@ -1,16 +1,18 @@ diff --git a/src/pages/tabbar/onlineShop.vue b/src/pages/tabbar/onlineShop.vue index 274508d..f1231aa 100644 --- a/src/pages/tabbar/onlineShop.vue +++ b/src/pages/tabbar/onlineShop.vue @@ -53,7 +53,7 @@ { } } -const treeToList = (tree: T[], result: T[] = []): T[] => { - for (const node of tree) { - result.push(node) - if (node?.children?.length) { - treeToList(node.children, result) - } - } - return result -} - // 获取分类 const getClassify = async () => { if (state.curMerchant.id) { diff --git a/src/pages/tabbar/prosperityShop.vue b/src/pages/tabbar/prosperityShop.vue index dc1fabc..c5a2ccb 100644 --- a/src/pages/tabbar/prosperityShop.vue +++ b/src/pages/tabbar/prosperityShop.vue @@ -43,7 +43,7 @@ {{ v.email }} - - 营业:{{ v.businessHours }} + + 营业:{{ v.businessHours }} diff --git a/src/sheep/api/prosperityShop.ts b/src/sheep/api/prosperityShop.ts index d9720f4..644a5dd 100644 --- a/src/sheep/api/prosperityShop.ts +++ b/src/sheep/api/prosperityShop.ts @@ -31,4 +31,19 @@ export default { params, }) }, + // 获取商品列表 + getGoodsList: (params: any): Promise => { + return request({ + url: `/supermarket/app/mall/merchant/product/list`, + method: "GET", + params, + }) + }, + // 获取商品详情 + getGoodsDetail: (id: string): Promise => { + return request({ + url: `/supermarket/app/mall/product/${id}`, + method: "GET", + }) + }, } diff --git a/src/sheep/components/crud/crud-layout/crud-layout.vue b/src/sheep/components/crud/crud-layout/crud-layout.vue index c90d790..1a38e1a 100644 --- a/src/sheep/components/crud/crud-layout/crud-layout.vue +++ b/src/sheep/components/crud/crud-layout/crud-layout.vue @@ -21,6 +21,7 @@ const props = withDefaults(defineProps(), { mainIsScroll: false, bg: "", }) +const emit = defineEmits(["scroll"]) const state = reactive({ navBgTitleColor_: props.navBgTitleColor, @@ -46,10 +47,11 @@ onMounted(() => { }) function scroll(e) { - if (!router.hasTabbar()) return - if (!props.scrollHideTabbar) return - const offset = 50 - const top = e.target.scrollTop + // if (!router.hasTabbar()) return + // if (!props.scrollHideTabbar) return + // const offset = 50 + // const top = e.target.scrollTop + emit("scroll", e) } function defaultPage() { @@ -67,7 +69,7 @@ function initBackStyle() { break case "just-flot-back": state.visble.topSafe = true - state.visble.topNav = false + state.visble.topNav = true break default: break diff --git a/src/sheep/utils/tree-to-list.ts b/src/sheep/utils/tree-to-list.ts new file mode 100644 index 0000000..ba991d7 --- /dev/null +++ b/src/sheep/utils/tree-to-list.ts @@ -0,0 +1,11 @@ +const treeToList = (tree: T[], result: T[] = []): T[] => { + for (const node of tree) { + result.push(node) + if (node?.children?.length) { + treeToList(node.children, result) + } + } + return result +} + +export default treeToList From 4cc0ac316e90048deb32b5d318f35ae2a8c9ced4 Mon Sep 17 00:00:00 2001 From: weiwei Date: Wed, 10 Sep 2025 12:10:45 +0800 Subject: [PATCH 3/5] =?UTF-8?q?feat:=E5=85=B1=E5=AF=8C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=95=86=E5=93=81sku=E5=92=8C=E5=95=86=E5=93=81=E6=90=9C?= =?UTF-8?q?=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/prosperity-shop/goods-detail.vue | 27 +++++--- src/pages/prosperity-shop/shop-detail.vue | 69 +++++++++++++++++---- src/pages/tabbar/prosperityShop.vue | 4 +- src/static/page/shop-goods-search.png | Bin 0 -> 9059 bytes 4 files changed, 79 insertions(+), 21 deletions(-) create mode 100644 src/static/page/shop-goods-search.png diff --git a/src/pages/prosperity-shop/goods-detail.vue b/src/pages/prosperity-shop/goods-detail.vue index cf4024b..c9ef73c 100644 --- a/src/pages/prosperity-shop/goods-detail.vue +++ b/src/pages/prosperity-shop/goods-detail.vue @@ -1,18 +1,18 @@ @@ -40,6 +52,7 @@ import { onLoad } from "@dcloudio/uni-app" import { reactive } from "vue" import { prosperityShopApi } from "@/sheep/api" import { filePath } from "@/sheep/utils/file" +import { displayPrice } from "@/sheep/utils/formatMoney" const state = reactive({ id: "", @@ -75,7 +88,7 @@ const getGoodsDetail = async (id: string) => { bottom: 0rpx; width: 20rpx; height: 20rpx; - background: radial-gradient(circle at 0 0, transparent 72%, #1879ff 0); + background: radial-gradient(circle at 0 0, transparent 80%, red 0); } } diff --git a/src/pages/prosperity-shop/shop-detail.vue b/src/pages/prosperity-shop/shop-detail.vue index 67d3466..0b47593 100644 --- a/src/pages/prosperity-shop/shop-detail.vue +++ b/src/pages/prosperity-shop/shop-detail.vue @@ -1,9 +1,16 @@