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) {