From d70fb991c267352866418eae75c0da07eb5bf03e Mon Sep 17 00:00:00 2001
From: xy <271556543@qq.com>
Date: Mon, 10 Feb 2025 17:48:51 +0800
Subject: [PATCH] =?UTF-8?q?=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
common/http.api.js | 7 +-
package_sub/pages/Shop/Order.vue | 46 ++------
package_sub/pages/Shop/Pay.vue | 192 ++++++++++++++++++++++++++-----
pages/index/index.vue | 3 +-
pages/me/me.vue | 56 ++++++---
pages/order/order.vue | 3 +-
6 files changed, 224 insertions(+), 83 deletions(-)
diff --git a/common/http.api.js b/common/http.api.js
index 78322c3..0439391 100644
--- a/common/http.api.js
+++ b/common/http.api.js
@@ -34,6 +34,7 @@ let apiApp = {
productDetail: '/api/mobile/product/product-detail',
productOrder: '/api/mobile/product/order',
productPay: '/api/mobile/product/pay',
+ productOrderRefund: '/api/mobile/user/order-refund',
// 收货地址
userAddress: '/api/mobile/user-address/index',
userAddressShow: '/api/mobile/user-address/show',
@@ -89,7 +90,7 @@ const install = (Vue, vm) => {
const productList = (params = {}) => vm.$u.get(apiApp.productList, params)
const productDetail = (params = {}) => vm.$u.get(apiApp.productDetail, params)
const productOrder = (params = {}) => vm.$u.post(apiApp.productOrder, params)
- const productPay = (params = {}) => vm.$u.get(apiApp.productPay, params)
+ const productPay = (params = {}) => vm.$u.post(apiApp.productPay, params)
// 收货地址
const userAddress = (params = {}) => vm.$u.get(apiApp.userAddress, params)
const userAddressShow = (params = {}) => vm.$u.get(apiApp.userAddressShow, params)
@@ -98,7 +99,7 @@ const install = (Vue, vm) => {
// 用户商城订单
const userOrders = (params = {}) => vm.$u.get(apiApp.userOrders, params)
const userOrdersDetail = (params = {}) => vm.$u.get(apiApp.userOrdersDetail, params)
-
+ const productOrderRefund = (params = {}) => vm.$u.get(apiApp.productOrderRefund, params)
const hospitalList = (params = {}) => vm.$u.get(apiApp.hospital, params)
const banner = (params = {}) => vm.$u.get(apiApp.banner, params)
// end
@@ -131,7 +132,7 @@ const install = (Vue, vm) => {
// 收货地址
userAddress,userAddressShow,userAddressSave,userAddressDestroy,
// 用户商城订单
- userOrders,userOrdersDetail,
+ userOrders,userOrdersDetail,productOrderRefund,
// 购物车
cartList, cartSave, cartShow, cartDestroy
diff --git a/package_sub/pages/Shop/Order.vue b/package_sub/pages/Shop/Order.vue
index 37c6293..6d44ea4 100644
--- a/package_sub/pages/Shop/Order.vue
+++ b/package_sub/pages/Shop/Order.vue
@@ -37,10 +37,9 @@
-
- 专享半天陪诊
+ {{ i.title }}
- {{ statusFormat(i.pay_status) }}
+ {{ i.pay_status ? '已支付' : '待支付' }}
@@ -49,40 +48,13 @@
- ¥{{ i.accompany_product ? i.accompany_product.price : 0 }}
+ ¥{{ i.price }}
订单号 {{ i.no }}
-
-
- 就诊城市
- {{ i.city || ((i.hospital && i.hospital.site) ? i.hospital.site.name : "") || " " }}
-
-
- 就诊医院
- {{ i.hospital ? i.hospital.name : '' }}
-
-
- 就诊人
- {{ i.user_archive ? i.user_archive.name : i.user_archive_id }}
-
-
- 就诊时间
- {{ i.time ? $moment(i.time).format('YYYY年MM月DD日 HH:mm') : '' }}
-
-
-
@@ -95,11 +67,9 @@
:custom-style="payBtnStyle"
:throttle-time="2000"
@click="$u.route({
- url: '/package_sub/pages/AddOrder/AddOrder',
+ url: '/package_sub/pages/Shop/Pay',
params: {
- order_id: i.id,
- type: i.type,
- site_id: i.hospital ? i.hospital.site_id : ''
+ order_id: i.id
}
})"
>{{ i.pay_status === 0 ? '立即支付' : '查看订单' }}= res.total) {
this.loadStatus[this.swiperCurrent] = 'nomore'
} else {
+ this.select.page++;
this.loadStatus[this.swiperCurrent] = 'loadmore'
}
} catch (err) {
console.error(err);
this.loadStatus[this.swiperCurrent] = 'loadmore'
- } finally {
- this.loadStatus[this.swiperCurrent] = 'loadmore'
}
},
},
diff --git a/package_sub/pages/Shop/Pay.vue b/package_sub/pages/Shop/Pay.vue
index 9f2663d..c827722 100644
--- a/package_sub/pages/Shop/Pay.vue
+++ b/package_sub/pages/Shop/Pay.vue
@@ -17,27 +17,47 @@
-
-
-
- 默认
- {{ site.city }}
-
-
- {{ site.address }}
+
+
+
+
+ 默认
+ {{ site.city }}
+
+ {{ site.name }} {{ site.mobile }}
+
+
+ {{ site.address }}
+
+
+ {{ site.name }} {{ site.mobile }}
+
-
- {{ site.name }} {{ site.mobile }}
+ 请选择收货地址
+
+
- 请选择收货地址
-
-
+
+
+
+ 默认
+ {{ detail.user_address.city }}
+
+ {{ detail.user_address.name }} {{ detail.user_address.mobile }}
+
+
+ {{ detail.user_address.address }}
+
+
+ {{ detail.user_address.name }} {{ detail.user_address.mobile }}
+
+
@@ -79,12 +99,44 @@
+
+
+ 快递名称
+
+
+ {{ detail.express_name }}
+
+
+
+
+ 快递单号
+
+
+ {{ detail.express_number }}
+
+
+
+
+ 下单日期
+
+
+ {{ detail.created_at }}
+
+
+
+
+ 订单号
+
+
+ {{ detail.no }}
+
+
合计
- ¥ {{ totalPrice }}
+ ¥ {{ detail.id ? detail.price : totalPrice }}
@@ -92,12 +144,29 @@
保 存
+ 立即支付
+ 申请退款
@@ -164,6 +233,7 @@ export default {
site: {},
sites: [],
carts: [],
+ detail: {}
};
},
methods: {
@@ -201,18 +271,21 @@ export default {
return
}
try {
- const res = await this.$u.api.productOrder({
- user_addres_id: this.site.id
+ const { model } = await this.$u.api.productOrder({
+ user_address_id: this.site.id
});
- if (res) {
+ if (model) {
uni.showModal({
title: "下单成功",
content: "下单成功,是否立即支付?",
success: (status) => {
if (status.confirm) {
- this.payOrder(res);
+ this.payOrder(model);
} else {
-
+ this.$u.route({
+ url: '/package_sub/pages/Shop/Order',
+ type: 'reLaunch'
+ })
}
},
fail: () => {
@@ -249,6 +322,10 @@ export default {
title: "支付成功",
icon: "none",
});
+ this.$u.route({
+ url: '/package_sub/pages/Shop/Order',
+ type: 'reLaunch'
+ })
}
} catch (err) {
uni.showToast({
@@ -257,6 +334,39 @@ export default {
});
}
},
+ async getDetail(id) {
+ try {
+ const res = await this.$u.api.userOrdersDetail({ id })
+ this.detail = res
+ } catch (err) {
+ console.error(err)
+ }
+ },
+ async refund() {
+ try {
+ uni.showModal({
+ title: "提示",
+ content: "确认申请退款?",
+ success: async (status) => {
+ if (status.confirm) {
+ await this.$u.api.productOrderRefund({
+ id: this.detail.id
+ })
+ await this.getDetail({
+ id: this.detail.id
+ })
+ } else {
+
+ }
+ },
+ fail: () => {
+
+ },
+ });
+ } catch (err) {
+ console.error(err)
+ }
+ }
},
computed: {
totalPrice() {
@@ -266,7 +376,13 @@ export default {
},
created() {
this.getSites();
- this.getCarts();
+ },
+ onLoad(option) {
+ if (option.order_id) {
+ this.getDetail(option.order_id)
+ } else {
+ this.getCarts();
+ }
},
};
@@ -292,6 +408,11 @@ export default {
color: #666666;
margin-left: 10rpx;
}
+ .name {
+ font-size: 22rpx;
+ color: #999;
+ margin-left: 10rpx;
+ }
.tag {
display: flex;
font-weight: normal;
@@ -395,9 +516,21 @@ export default {
&-row {
display: flex;
align-items: center;
- // line-height: 80rpx;
justify-content: space-between;
+ position: relative;
+ &::before {
+ content: '';
+ background: #ccc;
+ height: 2rpx;
+ position: absolute;
+ top: -19rpx;
+ left: 10rpx;
+ right: 10rpx;
+ }
+ &:nth-child(1):before {
+ opacity: 0;
+ }
&__name {
font-size: 24rpx;
color: #000000;
@@ -408,8 +541,15 @@ export default {
color: red;
font-weight: 500;
text-align: right;
+
+ text {
+ color: #666;
+ }
}
}
+ .price-row + .price-row {
+ margin-top: 40rpx;
+ }
}
.bottom {
position: fixed;
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 01b3e10..a7c2c0f 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -18,7 +18,8 @@
-
+ 四世同堂整合照护平台
+
diff --git a/pages/me/me.vue b/pages/me/me.vue
index dd72ff1..31a56a1 100644
--- a/pages/me/me.vue
+++ b/pages/me/me.vue
@@ -2,10 +2,10 @@
-
+
-
+
{{ vuex_user.nickname || '微信用户' }}
@@ -13,10 +13,13 @@
{{ vuex_user.mobile || '' }}
-
-
-
-
+ 获取手机号
@@ -87,11 +90,11 @@
我要分享
-
+
加入我们
-
+
联系我们
@@ -119,11 +122,9 @@
保密
-
-
-
-
-
+
+
+
@@ -134,6 +135,9 @@
+
+
+
@@ -147,6 +151,7 @@ export default {
},
data() {
return {
+ isShowModal: false,
isShowMyInfo: false,
form: {
headimgurl: '',
@@ -156,6 +161,19 @@ export default {
};
},
methods: {
+ async onPhoneNumber(e) {
+ try {
+ if (e.detail.encryptedData) {
+ const res = await this.$u.api.getMobile({
+ code: e.detail.encryptedData
+ })
+ const { user } = await this.$u.api.getUserInfo()
+ this.$u.vuex('vuex_user', user)
+ }
+ } catch (err) {
+ console.error(err)
+ }
+ },
onChooseAvatar(e) {
uni.uploadFile({
url: ROOTPATH + "/api/mobile/upload-file",
@@ -206,6 +224,15 @@ export default {
return this.vuex_token || uni.getStorageSync('lifeData')?.vuex_token
}
},
+ watch: {
+ vuex_user: {
+ handler: function (newVal) {
+ this.form.mobile = newVal.mobile
+ this.form.sex = newVal.sex
+ this.form.headimgurl = newVal.headimgurl
+ }
+ }
+ },
onLoad() {
},
}
@@ -339,5 +366,8 @@ export default {
.btn-normal::after {
border: none
}
+ .auth-btn {
+ color: $uni-color-primary;
+ }
}
diff --git a/pages/order/order.vue b/pages/order/order.vue
index abfb68c..31c0636 100644
--- a/pages/order/order.vue
+++ b/pages/order/order.vue
@@ -189,7 +189,7 @@ export default {
select: {
page: 1,
pay_status: "",
- page_size: 20,
+ page_size: 10,
},
list: [],
};
@@ -252,6 +252,7 @@ export default {
if (this.list[this.swiperCurrent].length >= res.total) {
this.loadStatus[this.swiperCurrent] = 'nomore'
} else {
+ this.select.page++;
this.loadStatus[this.swiperCurrent] = 'loadmore'
}
} catch (err) {