From 39446ca08ccd7d265e6def03a1d049f570101445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Wed, 21 Oct 2026 08:17:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B8=85=E5=8D=95=E5=88=86=E4=BA=AB?= =?UTF-8?q?=E7=BC=96=E7=A0=81=E4=B8=8E=E5=8A=A0=E8=B4=AD=E9=80=89=E8=A7=84?= =?UTF-8?q?=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 详情展示/复制唯一编码,分享链接按编码只读打开;加购须先选规格;列表可复制编码。 Co-authored-by: Cursor --- api/page/cart.js | 18 +++- pages/cart/cart.vue | 42 ++++++++- pages/cart/detail.vue | 178 ++++++++++++++++++++++++++++++++++----- pages/product/detail.vue | 142 +++++++++++++++++++++++++++++-- 4 files changed, 350 insertions(+), 30 deletions(-) diff --git a/api/page/cart.js b/api/page/cart.js index b82b3b1..05afb63 100644 --- a/api/page/cart.js +++ b/api/page/cart.js @@ -5,8 +5,16 @@ const prefix = 'list/' export const getCartListApi = async () => { return await get(`${prefix}list`) } -export const getCartItemApi = async (id) => { - return await get(`${prefix}detail`, {id}) +export const getCartItemApi = async (params) => { + const query = typeof params === 'object' && params !== null + ? params + : { id: params } + return await get(`${prefix}detail`, query) +} +export const ensureShareCodeApi = async (listId) => { + return await post(`${prefix}ensure-share-code`, { + list_id: listId, + }) } export const createCartApi = async (params) => { return await post(`${prefix}create`, params) @@ -21,10 +29,12 @@ export const deleteCartItemApi = async (id) => { ids: [id] }) } -export const toCartApi = async (listId, productId) => { +export const toCartApi = async (listId, productId, priceSheetId, routineIndex) => { return await post(`${prefix}to-cart`, { list_id: listId, - product_id: productId + product_id: productId, + price_sheet_id: priceSheetId, + routine_index: routineIndex, }) } export const submitHighIntentApi = async (list_id, intent_remark = '') => { diff --git a/pages/cart/cart.vue b/pages/cart/cart.vue index 2ae1714..0597877 100644 --- a/pages/cart/cart.vue +++ b/pages/cart/cart.vue @@ -45,6 +45,14 @@ {{ item.name }} + {{ item.remark }} @@ -154,6 +162,15 @@ export default { navigateBack() { uni.navigateBack() }, + copyShareCode(code) { + if (!code) return; + uni.setClipboardData({ + data: String(code), + success: () => { + uni.showToast({ title: '编码已复制', icon: 'success' }); + }, + }); + }, showCreateModal() { this.showModal = true }, @@ -375,11 +392,34 @@ view, scroll-view, text, image { font-size: 36rpx; font-weight: 500; color: #222; - margin-bottom: 16rpx; + margin-bottom: 12rpx; display: block; font-family: serif; } +.share-code-row { + display: inline-flex; + align-items: center; + gap: 12rpx; + margin-bottom: 12rpx; + padding: 4rpx 0; +} + +.share-code-text { + font-size: 22rpx; + color: #666; + font-family: Arial, Helvetica, sans-serif; + letter-spacing: 1rpx; +} + +.share-code-copy { + font-size: 20rpx; + color: #B4854D; + padding: 2rpx 12rpx; + border: 1rpx solid #B4854D; + border-radius: 8rpx; +} + .item-remark { display: flex; align-items: center; diff --git a/pages/cart/detail.vue b/pages/cart/detail.vue index c91a7dc..b9c35aa 100644 --- a/pages/cart/detail.vue +++ b/pages/cart/detail.vue @@ -1,18 +1,40 @@