From 9c0be00fbd796fa6fffe30b116d0240ee9223ef4 Mon Sep 17 00:00:00 2001 From: wangxiaowei Date: Mon, 11 Aug 2025 14:06:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/user.js | 23 +- bundle/pages/apply_refund/apply_refund.vue | 52 ++- bundle/pages/coupon/coupon.vue | 472 +++++++++++++-------- bundle/pages/coupon/coupon_20250718.vue | 198 +++++++++ bundle/pages/coupon/coupon_exchange.vue | 89 ++++ bundle/pages/coupon/coupon_list.vue | 118 ++++++ bundle/pages/coupon/coupon_package.vue | 143 +++++++ bundle/pages/points/points_shop.vue | 2 +- bundle/pages/points/points_store.vue | 25 +- components/cate-one/cate-one.vue | 40 +- components/mobile-login/mobile-login.vue | 33 +- components/mplogin/mplogin.vue | 27 +- components/order-goods/order-goods.vue | 3 +- components/order-list/order-list.vue | 4 +- config/app.js | 2 +- manifest.json | 2 +- mixins/app.js | 2 +- pages.json | 18 + pages/index/index.vue | 4 +- pages/login/login.vue | 22 +- pages/my/my.vue | 8 +- pages/my/profile.vue | 63 ++- pages/order/order.vue | 6 +- pages/order_details/order_details.vue | 6 +- pages/order_now/order_now.vue | 3 +- pages/refund/refund.vue | 2 +- pages/shop/shop.vue | 115 ++++- pages/signin/signin.vue | 2 +- pages/store/store.vue | 3 + static/coupon_bg.png | Bin 0 -> 14640 bytes uni.scss | 2 +- 31 files changed, 1180 insertions(+), 309 deletions(-) create mode 100644 bundle/pages/coupon/coupon_20250718.vue create mode 100644 bundle/pages/coupon/coupon_exchange.vue create mode 100644 bundle/pages/coupon/coupon_list.vue create mode 100644 bundle/pages/coupon/coupon_package.vue create mode 100644 static/coupon_bg.png diff --git a/api/user.js b/api/user.js index 3717a11..64bbbc8 100644 --- a/api/user.js +++ b/api/user.js @@ -1,20 +1,4 @@ -// +---------------------------------------------------------------------- -// | likeshop开源商城系统 -// +---------------------------------------------------------------------- -// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力 -// | gitee下载:https://gitee.com/likeshop_gitee -// | github下载:https://github.com/likeshop-github -// | 访问官网:https://www.likeshop.cn -// | 访问社区:https://home.likeshop.cn -// | 访问手册:http://doc.likeshop.cn -// | 微信公众号:likeshop技术社区 -// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识 -// | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识 -// | 禁止对系统程序代码以任何目的,任何形式的再发布 -// | likeshop团队版权所有并拥有最终解释权 -// +---------------------------------------------------------------------- -// | author: likeshop.cn.team -// +---------------------------------------------------------------------- + import request from '../utils/request' import { client } from '@/utils/tools' //个人中心 @@ -392,3 +376,8 @@ export function getCopyright() { export function bindOawechat(data) { return request.post('account/oaAuthLogin', data) } + +// 绑定微信 +export function getPhone(data) { + return request.post('user/getPhone', data) +} diff --git a/bundle/pages/apply_refund/apply_refund.vue b/bundle/pages/apply_refund/apply_refund.vue index 13766a9..f7d3e2d 100644 --- a/bundle/pages/apply_refund/apply_refund.vue +++ b/bundle/pages/apply_refund/apply_refund.vue @@ -19,13 +19,13 @@ - + @@ -34,24 +34,26 @@ 退款金额 - + 退款原因 - {{ + + - + 上传凭证 @@ -157,15 +159,15 @@ export default { applyAgainFun() { let { reason, reasonIndex, optTyle, remark, fileList } = this; - if (!reason[reasonIndex]) { - return this.$toast({ - title: "请选择退款原因", - }); - } + // if (!reason[reasonIndex]) { + // return this.$toast({ + // title: "请选择退款原因", + // }); + // } const data = { id: this.afterSaleId, - reason: reason[reasonIndex], + reason: reason, refund_type: optTyle, remark: remark, img: fileList.length <= 0 ? "" : fileList[0].base_url, @@ -196,20 +198,32 @@ export default { }, applyAfterSaleFun() { - let { reason, reasonIndex, optTyle, remark, fileList } = this; + let { refundMoney, reason, reasonIndex, optTyle, remark, fileList } = this; - if (!reason[reasonIndex]) { + if (!refundMoney) { return this.$toast({ - title: "请选择退款原因", + title: "请输入退款金额", }); } + if (!reason) { + return this.$toast({ + title: "请输入退款原因", + }); + } + // if (!reason[reasonIndex]) { + // return this.$toast({ + // title: "请选择退款原因", + // }); + // } + const data = { item_id: this.itemId, order_id: this.orderId, + refund_money: this.refundMoney, reason: reason[reasonIndex], refund_type: optTyle, - remark: remark, + // remark: remark, img: fileList.length <= 0 ? "" : fileList[0].url, }; applyAfterSale(data).then((res) => { @@ -255,7 +269,7 @@ export default { }).then((res) => { if (res.code == 1) { this.goods = res.data.goods; - this.reason = res.data.reason; + // this.reason = res.data.reason; } }); }, diff --git a/bundle/pages/coupon/coupon.vue b/bundle/pages/coupon/coupon.vue index 5fb7dad..c00be3a 100644 --- a/bundle/pages/coupon/coupon.vue +++ b/bundle/pages/coupon/coupon.vue @@ -1,199 +1,331 @@ \ No newline at end of file diff --git a/bundle/pages/coupon/coupon_20250718.vue b/bundle/pages/coupon/coupon_20250718.vue new file mode 100644 index 0000000..b03d265 --- /dev/null +++ b/bundle/pages/coupon/coupon_20250718.vue @@ -0,0 +1,198 @@ + + + + + \ No newline at end of file diff --git a/bundle/pages/coupon/coupon_exchange.vue b/bundle/pages/coupon/coupon_exchange.vue new file mode 100644 index 0000000..5373e55 --- /dev/null +++ b/bundle/pages/coupon/coupon_exchange.vue @@ -0,0 +1,89 @@ + + + + + \ No newline at end of file diff --git a/bundle/pages/coupon/coupon_list.vue b/bundle/pages/coupon/coupon_list.vue new file mode 100644 index 0000000..e4f22b6 --- /dev/null +++ b/bundle/pages/coupon/coupon_list.vue @@ -0,0 +1,118 @@ + + + + + \ No newline at end of file diff --git a/bundle/pages/coupon/coupon_package.vue b/bundle/pages/coupon/coupon_package.vue new file mode 100644 index 0000000..c5b1d13 --- /dev/null +++ b/bundle/pages/coupon/coupon_package.vue @@ -0,0 +1,143 @@ + + + + + \ No newline at end of file diff --git a/bundle/pages/points/points_shop.vue b/bundle/pages/points/points_shop.vue index 0fc7a5e..248dc27 100644 --- a/bundle/pages/points/points_shop.vue +++ b/bundle/pages/points/points_shop.vue @@ -27,7 +27,7 @@ return { list: [ { - image: "http://jianbing-media.stnav.com/frontend/img/banner.png", + image: "https://jianbing-media.stnav.com/frontend/img/banner.png", title: "昨夜星辰昨夜风,画楼西畔桂堂东", }, ], diff --git a/bundle/pages/points/points_store.vue b/bundle/pages/points/points_store.vue index 96cca60..74d28b9 100644 --- a/bundle/pages/points/points_store.vue +++ b/bundle/pages/points/points_store.vue @@ -9,28 +9,28 @@ - + - + - + - 小熊早餐必备煮蛋器 + {{item.title}} 兑换66人 - - 100.00 + + {{item.point}} 积分+ - 100.00 + {{item.money}} - + 兑换 @@ -45,7 +45,7 @@ export default { data() { return { - list: [ + tab: [ { name: '全部' }, @@ -53,7 +53,12 @@ name: '热门推荐' } ], - current: 0 + current: 0, + list: [ + {image: 'img/banner.png', title: '小熊早餐必备煮蛋器', needMoney: true, point: 100, money: 200}, + {image: 'img/banner.png', title: '满9-2优惠券', needMoney: false, point: 0, money: 0}, + {image: 'img/banner.png', title: '满15-3优惠券', needMoney: false, point: 0, money: 0}, + ] } }, methods: { diff --git a/components/cate-one/cate-one.vue b/components/cate-one/cate-one.vue index 270c328..0c19932 100644 --- a/components/cate-one/cate-one.vue +++ b/components/cate-one/cate-one.vue @@ -125,6 +125,10 @@ + + + 去结算 + @@ -171,6 +175,7 @@ page:1, status: loadingType.LOADING, selectIndex: 0, + categoryId: 0, cateList: [], goodsList: [], goods_spec: [], @@ -251,6 +256,21 @@ // 添加到购物车(默认商品数量+1,可以让后端连表查询商品数量字段) async addCartFun(item) { + console.log("🚀 ~ addCartFun ~ item:", item) + + // 限购逻辑 + if (item.first_category_id === 1 || item.first_category_id === 2) { + // 统计购物车中同类商品的总数量 + const totalNum = this.cartLists + .filter(i => i.first_category_id === item.first_category_id) + .reduce((sum, i) => sum + (i.goods_num || 0), 0); + + if (totalNum >= 2) { + this.$toast({ title: '该类商品每人限购2件' }); + return; + } + } + const { code, data, @@ -285,6 +305,7 @@ // 获取购物车列表数据 getCartListFun() { + // 获取商品的分类ID getCartList().then((res) => { if (res.code == 1) { @@ -307,7 +328,7 @@ // // this.cartType = cartType; this.totalPrice = total_amount // // this.isShow = true; - // this.getCartNum(); + this.getCartNum(); } }); }, @@ -325,6 +346,8 @@ // 去结算 goSettle() { + console.log(this.cartLists) + this.showCart = false const goods = this.cartLists.map(item => { return { item_id: item.item_id, @@ -334,12 +357,12 @@ uni.navigateTo({ url: "/pages/order_now/order_now?data=" + - encodeURIComponent( - JSON.stringify({ - goods, - type: "cart", - }) - ), + encodeURIComponent( + JSON.stringify({ + goods, + type: "cart", + }) + ), }); }, @@ -457,4 +480,7 @@ border-radius: 100%; } + .settle-btn { + padding: 20rpx; + } \ No newline at end of file diff --git a/components/mobile-login/mobile-login.vue b/components/mobile-login/mobile-login.vue index 31994c7..b6365e8 100644 --- a/components/mobile-login/mobile-login.vue +++ b/components/mobile-login/mobile-login.vue @@ -33,6 +33,8 @@ @@ -183,4 +263,13 @@ right: 0; padding-bottom: env(safe-area-inset-bottom); } + + .number { + background-color: #FF2C3C; + width: 40rpx; + height: 40rpx; + line-height: 40rpx; + border-radius: 100%; + } + \ No newline at end of file diff --git a/pages/signin/signin.vue b/pages/signin/signin.vue index 3122206..f12fd10 100644 --- a/pages/signin/signin.vue +++ b/pages/signin/signin.vue @@ -155,7 +155,7 @@ .signin { height: 570rpx; margin: 24rpx 20rpx 0; - background-image: url(http://jianbing-media.stnav.com/frontend/img/signin-bg.png); + background-image: url(https://jianbing-media.stnav.com/frontend/img/signin-bg.png); background-repeat: no-repeat; background-size: cover; diff --git a/pages/store/store.vue b/pages/store/store.vue index 159923b..2672bea 100644 --- a/pages/store/store.vue +++ b/pages/store/store.vue @@ -19,6 +19,9 @@ 自取 + + + diff --git a/static/coupon_bg.png b/static/coupon_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..f1538dc50d672af14ce6ea804046ce4896056854 GIT binary patch literal 14640 zcmV-0InTz4P)PyA07*naRCr$PeO=6^*LBr7?>F|0<4J13p{_DgCuAgB%~WuK1V~6!;(|+vKuG+w z4p52GG*k$msxmtm%75M$J0#dh7XwkptZLL zUwGu%*87**He5kC06Ky3@8JxpV~Brm+c;4FPV4Q3w)L0VdHdSMX?x+#cI6~Kx?Ab$ z%0D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 m+lzNz{=eoqu}(0000