From 91064262d6783437f3e636046602e58a74f50eaa Mon Sep 17 00:00:00 2001 From: "liujw155@outlook.com" Date: Tue, 11 Jun 2024 18:29:02 +0800 Subject: [PATCH 01/10] add tid1523 refund modal styly --- src/components/order_refund_modal/index.vue | 161 +++++++++++++++++++++ .../reservation_site_detail.vue | 2 +- .../device/pages/order_details/order_details.vue | 3 + 3 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 src/components/order_refund_modal/index.vue diff --git a/src/components/order_refund_modal/index.vue b/src/components/order_refund_modal/index.vue new file mode 100644 index 0000000..5f0fc48 --- /dev/null +++ b/src/components/order_refund_modal/index.vue @@ -0,0 +1,161 @@ + + + + + \ No newline at end of file diff --git a/src/subpackage/device/components/order/reservation_site_detail/reservation_site_detail.vue b/src/subpackage/device/components/order/reservation_site_detail/reservation_site_detail.vue index 3239102..47a46ed 100644 --- a/src/subpackage/device/components/order/reservation_site_detail/reservation_site_detail.vue +++ b/src/subpackage/device/components/order/reservation_site_detail/reservation_site_detail.vue @@ -136,7 +136,7 @@ - + 退款 diff --git a/src/subpackage/device/pages/order_details/order_details.vue b/src/subpackage/device/pages/order_details/order_details.vue index f294e36..74c08af 100644 --- a/src/subpackage/device/pages/order_details/order_details.vue +++ b/src/subpackage/device/pages/order_details/order_details.vue @@ -38,6 +38,7 @@ ref="ticketCheckModal" @confirm="verifyConfirm" > + @@ -47,6 +48,7 @@ import reservationPeopleDetail from '../../components/order/reservation_people_detail/reservation_people_detail.vue'; import organizeDetail from '../../components/order/organize_detail/organize_detail.vue'; import ticket_check from '../../../../components/order_list/modal/ticket_check.vue'; + import orderRefundModal from '../../../../components/order_refund_modal/index.vue'; import util from '../../../../utils/util'; import deviceServer from '../../js/device_server'; import deviceApi from '../../js/device_api'; @@ -58,6 +60,7 @@ 'reservation-people-detail': reservationPeopleDetail, 'organize-detail': organizeDetail, 'ticket-check': ticket_check, + 'order-refund-modal': orderRefundModal, }, computed:{ titleName(){ From 103aecdd72b06b92d4bf8d36b8820fb4408d4ced Mon Sep 17 00:00:00 2001 From: "liujw155@outlook.com" Date: Wed, 12 Jun 2024 18:25:15 +0800 Subject: [PATCH 02/10] add order refund logic --- src/components/fixed_bar/fixed_bar.vue | 38 ++++ src/components/order_refund/button.vue | 22 +++ src/components/order_refund/fixed.vue | 26 +++ src/components/order_refund/modal.vue | 215 +++++++++++++++++++++ src/components/order_refund_modal/index.vue | 74 ++++++- .../reservation_site_detail.vue | 19 +- .../device/pages/order_details/order_details.vue | 50 ++++- src/utils/util.js | 2 +- 8 files changed, 421 insertions(+), 25 deletions(-) create mode 100644 src/components/fixed_bar/fixed_bar.vue create mode 100644 src/components/order_refund/button.vue create mode 100644 src/components/order_refund/fixed.vue create mode 100644 src/components/order_refund/modal.vue diff --git a/src/components/fixed_bar/fixed_bar.vue b/src/components/fixed_bar/fixed_bar.vue new file mode 100644 index 0000000..96aa027 --- /dev/null +++ b/src/components/fixed_bar/fixed_bar.vue @@ -0,0 +1,38 @@ + + + + + \ No newline at end of file diff --git a/src/components/order_refund/button.vue b/src/components/order_refund/button.vue new file mode 100644 index 0000000..34e6ad0 --- /dev/null +++ b/src/components/order_refund/button.vue @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/src/components/order_refund/fixed.vue b/src/components/order_refund/fixed.vue new file mode 100644 index 0000000..0e234e4 --- /dev/null +++ b/src/components/order_refund/fixed.vue @@ -0,0 +1,26 @@ + + + + + \ No newline at end of file diff --git a/src/components/order_refund/modal.vue b/src/components/order_refund/modal.vue new file mode 100644 index 0000000..448f13f --- /dev/null +++ b/src/components/order_refund/modal.vue @@ -0,0 +1,215 @@ + + + + + \ No newline at end of file diff --git a/src/components/order_refund_modal/index.vue b/src/components/order_refund_modal/index.vue index 5f0fc48..448f13f 100644 --- a/src/components/order_refund_modal/index.vue +++ b/src/components/order_refund_modal/index.vue @@ -1,14 +1,14 @@ diff --git a/src/components/order_refund/modal.vue b/src/components/order_refund/modal.vue index 448f13f..e870c9b 100644 --- a/src/components/order_refund/modal.vue +++ b/src/components/order_refund/modal.vue @@ -57,6 +57,8 @@ - - diff --git a/src/subpackage/device/pages/order_details/order_details.vue b/src/subpackage/device/pages/order_details/order_details.vue index b5f5047..737eeae 100644 --- a/src/subpackage/device/pages/order_details/order_details.vue +++ b/src/subpackage/device/pages/order_details/order_details.vue @@ -17,7 +17,6 @@ @click:refund="siteAndPeopleDetailRefund" > - @@ -52,7 +51,6 @@ diff --git a/src/subpackage/order/js/api.js b/src/subpackage/order/js/api.js index ac8af38..fc16176 100644 --- a/src/subpackage/order/js/api.js +++ b/src/subpackage/order/js/api.js @@ -35,6 +35,12 @@ export const ORDER_API = { rentballEndBilling:`${ORIGIN}/admin/stadium/rentball/order/end`, // 结束订单-后台 // 20220727 rentBallOrderDetails:`${ORIGIN}/admin/stadium/hardware/order/rentBallOrderDetails`, // 硬件管理-订单详情_copy + // 20240614 tid1523 统一退款 + venueCourseOrderRefund:`${ORIGIN}/admin/venueCourse/orderRefund`, // 课程订单-退款 + userValueCardRefundFixed:`${ORIGIN}/admin/userValueCard/refundFixed`, // 储值卡订单-退款 + timeOrderDetail:`${ORIGIN}/admin/assistant/timeOrder/detail`, //k-订单管理-计时订单详情 + timeOrderComplete:`${ORIGIN}/admin/assistant/timeOrder/complete`, //【20220208】k-订单管理-计时订单完结 + orderRefund:`${ORIGIN}/admin/stadium/order/refund`, // A订单管理-场馆预订订单-订单退款 } export default ORDER_API; \ No newline at end of file diff --git a/src/subpackage/order/pages/curriculum/detail/detail.vue b/src/subpackage/order/pages/curriculum/detail/detail.vue index 9e19f21..e42c1d7 100644 --- a/src/subpackage/order/pages/curriculum/detail/detail.vue +++ b/src/subpackage/order/pages/curriculum/detail/detail.vue @@ -121,10 +121,6 @@ import server from '../../../js/server'; import orderRefundFixed from '@/components/order_refund/fixed.vue' import orderRefundModal from '@/components/order_refund/modal.vue'; export default { - components: { - 'order-refund-fixed': orderRefundFixed, - 'order-refund-modal': orderRefundModal, - }, computed: { course_period_nums_give(){ let { orderInfo } = this; @@ -135,6 +131,8 @@ export default { // ('订单状态 0-待付款 1-进行中 2-已结束 3-已退款 4-已取消') components: { 'a-line': a_line, + 'order-refund-fixed': orderRefundFixed, + 'order-refund-modal': orderRefundModal, }, data(){ return { @@ -159,14 +157,32 @@ export default { refundable_integral: orderInfo?.extension?.refundable_integral ?? 0, refund_times: refundTimes, confirm: e => { - // this.siteAndPeopleRefund({ - // order_no: pageInfo?.order_no ?? '', - // amount: e?.refund_amount || 0, - // integral: e?.refund_integral || 0, - // }) + this.venueCourseOrderRefund({ + order_no: orderInfo?.order_no ?? '', + amount: e.refund_amount || 0, + integral: e.refund_integral || 0 + }) } }); }, + venueCourseOrderRefund({ order_no = '', amount = 0, integral = 0}){ + util.showLoad(); + server.get({ + url: ORDER_API.venueCourseOrderRefund, + data: { order_no, amount, integral }, + isDefaultGet: false + }) + .then(res=>{ + util.hideLoad(); + if(res.data.code == 0){ + util.showNone(res.data.message || '操作成功!'); + }else{ + util.showNone(res.data.message || '操作失败!'); + } + }) + .catch(util.hideLoad) + .finally(_=>setTimeout(_=>this.getInfo(order_no), 1200)); + }, async getRefundTimes(order_no){ try{ let _refundRes = await this.$store.dispatch('getOrderRefundList', order_no); @@ -178,26 +194,19 @@ export default { } }, getInfo(order_no){ + util.showLoad(); server.get({ url: ORDER_API.venueCourse_orderInfo, data: { order_no }, failMsg: '加载失败!' }) .then(res=>{ + util.hideLoad(); this.orderInfo = res || {}; }) + .catch(util.hideLoad) }, getPayType: util.order_pay_type_txt, - // getPayType(type){ - // // [0微信支付,1支付宝支付,2会员换卡支付, 3商家主动] - // let _obj = { - // 0: '微信支付', - // 1: '支付宝支付', - // 2: '会员换卡支付', - // 3: '商家主动', - // } - // return _obj[type] || '-' - // } } } diff --git a/src/subpackage/order/pages/stored_value_card/detail/detail.vue b/src/subpackage/order/pages/stored_value_card/detail/detail.vue index f7b9a58..1aadff2 100644 --- a/src/subpackage/order/pages/stored_value_card/detail/detail.vue +++ b/src/subpackage/order/pages/stored_value_card/detail/detail.vue @@ -83,6 +83,16 @@ 退款原因:{{ e.reason || '-' }} + + + @@ -91,9 +101,13 @@ import s_line from '../../../components/s_line/s_line.vue'; import { ORDER_API } from '../../../js/api'; import server from '../../../js/server'; import util from '../../../../../utils/util'; +import orderRefundFixed from '@/components/order_refund/fixed.vue' +import orderRefundModal from '@/components/order_refund/modal.vue'; export default { components: { 's-line': s_line, + 'order-refund-fixed': orderRefundFixed, + 'order-refund-modal': orderRefundModal, }, computed: { cardInfo(){ @@ -116,6 +130,46 @@ export default { this.getOrderInfo({ order_no: options.order_no }); }, methods: { + refunndBtn(){ + let { orderInfo } = this; + let _pay_amount = +orderInfo?.pay_amount || 0; + let _refund_amount = +orderInfo?.refund_amount || 0; + let _deduction_integral = +orderInfo?.deduction_integral || 0; + let _refund_integral = +orderInfo?.refund_integral || 0; + this.$refs.orderRefundModal.show({ + stadium_name: orderInfo?.stadium?.stadium_name ?? '', + order_no: orderInfo?.order_no ?? '', + mobile: orderInfo?.mobile ?? '', + refundable_amount: _pay_amount - _refund_amount, + refundable_integral: _deduction_integral - _refund_integral, + refund_times: orderInfo?.refunds?.length || 0, + confirm: e => { + this.userValueCardRefundFixed({ + order_no: orderInfo?.order_no ?? '', + amount: e.refund_amount || 0, + integral: e.refund_integral || 0 + }) + } + }); + }, + userValueCardRefundFixed({ order_no = '', amount = 0, integral = 0}){ + util.showLoad(); + server.get({ + url: ORDER_API.userValueCardRefundFixed, + data: { order_no, amount, integral }, + isDefaultGet: false + }) + .then(res=>{ + util.hideLoad(); + if(res.data.code == 0){ + util.showNone(res.data.message || '操作成功!'); + }else{ + util.showNone(res.data.message || '操作失败!'); + } + }) + .catch(util.hideLoad) + .finally(_=>setTimeout(_=>this.getOrderInfo({ order_no }), 1200)); + }, payStatus(status){ if(status == 1)return '已付款'; if(status == 4)return '已退款'; diff --git a/src/subpackage/order/pages/timing/detail.vue b/src/subpackage/order/pages/timing/detail.vue new file mode 100644 index 0000000..2c96f16 --- /dev/null +++ b/src/subpackage/order/pages/timing/detail.vue @@ -0,0 +1,373 @@ + + + + + diff --git a/src/utils/util.js b/src/utils/util.js index acd8787..c38a21b 100644 --- a/src/utils/util.js +++ b/src/utils/util.js @@ -395,7 +395,7 @@ function order_pay_type_txt(status = ''){ 0: '微信支付', 1: '支付宝支付', 2: '会员卡支付', - 3: '商家主动', + 3: '商家主动结束计费', }; return _obj[status] || '-' } From 6325ddbbfc70848a200f02eac4a1d5e773871451 Mon Sep 17 00:00:00 2001 From: "liujw155@outlook.com" Date: Mon, 17 Jun 2024 18:21:01 +0800 Subject: [PATCH 05/10] add tid 1523 refund logic --- src/store/index.js | 3 +- src/subpackage/order/js/api.js | 1 + .../order/pages/retail/detail/detail.vue | 397 +++++++++++---------- .../order/pages/ym_card/detail/detail.vue | 87 ++++- 4 files changed, 300 insertions(+), 188 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index 36a4a95..38ef2f5 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -44,7 +44,8 @@ export default new Vuex.Store({ '1014': '储值卡管理', '1015': '进场人数异常', '1016': '系统工具', - '1017': '钱包提现' + '1017': '钱包提现', + '1018': '退款权限' }, // 场地占用提交页面信息 occupyInfo: { diff --git a/src/subpackage/order/js/api.js b/src/subpackage/order/js/api.js index fc16176..40d6591 100644 --- a/src/subpackage/order/js/api.js +++ b/src/subpackage/order/js/api.js @@ -41,6 +41,7 @@ export const ORDER_API = { timeOrderDetail:`${ORIGIN}/admin/assistant/timeOrder/detail`, //k-订单管理-计时订单详情 timeOrderComplete:`${ORIGIN}/admin/assistant/timeOrder/complete`, //【20220208】k-订单管理-计时订单完结 orderRefund:`${ORIGIN}/admin/stadium/order/refund`, // A订单管理-场馆预订订单-订单退款 + userMonthlyCardRefundFixed:`${ORIGIN}/admin/userMonthlyCard/refundFixed`, // 年月卡订单-订单退款 } export default ORDER_API; \ No newline at end of file diff --git a/src/subpackage/order/pages/retail/detail/detail.vue b/src/subpackage/order/pages/retail/detail/detail.vue index 7860259..f853c78 100644 --- a/src/subpackage/order/pages/retail/detail/detail.vue +++ b/src/subpackage/order/pages/retail/detail/detail.vue @@ -2,36 +2,36 @@ - - {{ orderInfo.stadium_name || '-' }} - - - - - - 微信昵称: - {{ orderInfo.nickname || '-' }} - - {{ getStatus(orderInfo.pay_status) }} - - - - 手机号码: - {{ orderInfo.mobile || '-' }} - - - - - - 下单途径: - {{ orderInfo.retail_source || '-' }} - - + + {{ orderInfo.stadium_name || '-' }} + + + + + + 微信昵称: + {{ orderInfo.nickname || '-' }} + + {{ getStatus(orderInfo.pay_status) }} + + + + 手机号码: + {{ orderInfo.mobile || '-' }} + + + + + + 下单途径: + {{ orderInfo.retail_source || '-' }} + + @@ -39,37 +39,37 @@ - {{ e.erp_retail_goods ? (e.erp_retail_goods.goods_name || '-') : (e.name || '-') }} - ¥{{ e.price || 0 }} - - sku:{{ e.erp_retail_goods ? (e.erp_retail_goods.erp_goods ? e.erp_retail_goods.erp_goods.erp_goods_sku : '-') : '-' }} - - 型号:{{ e.erp_retail_goods ? (e.erp_retail_goods.erp_goods ? e.erp_retail_goods.erp_goods.erp_goods_type : '-') : '-' }}        规格:{{ e.spec || '-' }} - x{{ e.nums || 0 }} - - + {{ e.erp_retail_goods ? (e.erp_retail_goods.goods_name || '-') : (e.name || '-') }} + ¥{{ e.price || 0 }} + + sku:{{ e.erp_retail_goods ? (e.erp_retail_goods.erp_goods ? e.erp_retail_goods.erp_goods.erp_goods_sku : '-') : '-' }} + + 型号:{{ e.erp_retail_goods ? (e.erp_retail_goods.erp_goods ? e.erp_retail_goods.erp_goods.erp_goods_type : '-') : '-' }}        规格:{{ e.spec || '-' }} + x{{ e.nums || 0 }} + + - - - 金额小计 - ¥{{ orderInfo.amount || 0 }} - - - 积分抵扣 - ¥{{ orderInfo.deduction_amount || 0 }} - - - 折扣金额 - -¥{{ orderInfo.discount_amount || 0 }} - - - 优惠券优惠 - -¥{{ orderInfo.coupons_amount || 0 }} - - 合计支付:¥{{ orderInfo.pay_amount || 0 }} + + + 金额小计 + ¥{{ orderInfo.amount || 0 }} + + + 积分抵扣 + ¥{{ orderInfo.deduction_amount || 0 }} + + + 折扣金额 + -¥{{ orderInfo.discount_amount || 0 }} + + 优惠券优惠 + -¥{{ orderInfo.coupons_amount || 0 }} + + 合计支付:¥{{ orderInfo.pay_amount || 0 }} + 支付详情 @@ -78,33 +78,44 @@ - - - - - 退款信息{{ index + 1 }} - - - - - - + + + + + 退款信息{{ index + 1 }} + + + + + + + + + + @@ -114,16 +125,20 @@ import server from '../../../js/server'; import util from '../../../../../utils/util'; import s_line from '../../../components/s_line/s_line.vue'; import p_line from '../../../components/p_line/p_line.vue'; +import orderRefundFixed from '@/components/order_refund/fixed.vue' +import orderRefundModal from '@/components/order_refund/modal.vue'; import { mapState } from 'vuex'; export default { components: { 's-line': s_line, 'p-line': p_line, + 'order-refund-fixed': orderRefundFixed, + 'order-refund-modal': orderRefundModal, }, data(){ return { orderInfo: {}, - refundList: [] + refundList: [] } }, computed:{ @@ -133,17 +148,35 @@ export default { this.getOrderInfo(options.order_no); }, methods: { + refunndBtn(){ + let { orderInfo, refundList } = this; + this.$refs.orderRefundModal.show({ + stadium_name: orderInfo?.refundList ?? '', + order_no: orderInfo?.order_no ?? '', + mobile: orderInfo?.refundList ?? '', + refundable_amount: orderInfo?.extension?.refundable_amount ?? 0, + refundable_integral: orderInfo?.extension?.refundable_integral ?? 0, + refund_times: refundList?.length || 0, + confirm: e => { + // this.venueCourseOrderRefund({ + // order_no: orderInfo?.order_no ?? '', + // amount: e.refund_amount || 0, + // integral: e.refund_integral || 0 + // }) + } + }); + }, // payTypeTxt: util.order_pay_type_txt, - payTypeTxt(payType, cardNo) { - let _obj = { - 0: '微信支付', - 1: '支付宝支付', - 2: `储值卡支付 ${cardNo ? '(' + cardNo + ')' : ''}`, - 3: '现金支付', - 4: '其他' - }; - return _obj[payType] || '-' - }, + payTypeTxt(payType, cardNo) { + let _obj = { + 0: '微信支付', + 1: '支付宝支付', + 2: `储值卡支付 ${cardNo ? '(' + cardNo + ')' : ''}`, + 3: '现金支付', + 4: '其他' + }; + return _obj[payType] || '-' + }, getStatus(status){ let _obj = { 1: '交易成功', @@ -160,19 +193,19 @@ export default { }) .then(res=>{ this.orderInfo = res || {}; - // this.orderInfo.refunds = [ - // { refund_amount: this.orderInfo.refund_amount, refund_no: this.orderInfo.refund_no, refund_time: this.orderInfo.refund_time, refund_reason: this.orderInfo.refund_reason }, - // { refund_amount: this.orderInfo.refund_amount, refund_no: this.orderInfo.refund_no, refund_time: this.orderInfo.refund_time, refund_reason: this.orderInfo.refund_reason } - // ]; - server.get({ - url: ORDER_API.retailOrderInfoRefundList, - data: { order_no, brand_id: this.brandInfo.brand.id }, - failMsg: '加载失败!' - }) - .then(res=>{ - util.hideLoad(); - this.refundList = res.list; - }); + // this.orderInfo.refunds = [ + // { refund_amount: this.orderInfo.refund_amount, refund_no: this.orderInfo.refund_no, refund_time: this.orderInfo.refund_time, refund_reason: this.orderInfo.refund_reason }, + // { refund_amount: this.orderInfo.refund_amount, refund_no: this.orderInfo.refund_no, refund_time: this.orderInfo.refund_time, refund_reason: this.orderInfo.refund_reason } + // ]; + server.get({ + url: ORDER_API.retailOrderInfoRefundList, + data: { order_no, brand_id: this.brandInfo.brand.id }, + failMsg: '加载失败!' + }) + .then(res=>{ + util.hideLoad(); + this.refundList = res?.list || []; + }); }); }, @@ -189,57 +222,57 @@ export default { margin-bottom: 26upx; padding: 0 24upx; background-color: #fff; - .ra-header { - position: relative; - padding: 30upx 0; - @include centerFlex(flex-start); - >image { - width: 32upx; - height: 30upx; - margin-right: 14upx; - } - >text { - font-size: 28upx; - font-weight: 500; - color: #1A1A1A; + .ra-header { + position: relative; + padding: 30upx 0; + @include centerFlex(flex-start); + >image { + width: 32upx; + height: 30upx; + margin-right: 14upx; + } + >text { + font-size: 28upx; + font-weight: 500; + color: #1A1A1A; + } + >view { + position: absolute; + bottom: 0%; + width: 100%; + height: 2upx; + background-color: #D8D8D8; + } + } + .rh-name{ + padding: 18upx 0; + .rh-name-line { + @include centerFlex(space-between); + font-size: 28upx; + font-weight: 400; + margin-bottom: 10upx; + + >view { + &:first-child { + color: #9C9C9F; + @include centerFlex(flex-start); + flex-grow: 1; + + >view { + width: 152upx; + flex-shrink: 0; + } + >text { + color: #1A1A1A; + @include textHide(1); + } } - >view { - position: absolute; - bottom: 0%; - width: 100%; - height: 2upx; - background-color: #D8D8D8; + + &:nth-child(2) { + flex-shrink: 0; } } - .rh-name{ - padding: 18upx 0; - .rh-name-line { - @include centerFlex(space-between); - font-size: 28upx; - font-weight: 400; - margin-bottom: 10upx; - - >view { - &:first-child { - color: #9C9C9F; - @include centerFlex(flex-start); - flex-grow: 1; - - >view { - width: 152upx; - flex-shrink: 0; - } - >text { - color: #1A1A1A; - @include textHide(1); - } - } - - &:nth-child(2) { - flex-shrink: 0; - } - } - } + } } } .rc-goods-info{ @@ -256,32 +289,32 @@ export default { .rgl-item{ padding-top: 30upx; // border-bottom: 2upx solid #D8D8D8; - color: #9C9C9F; - font-size: 28upx; - - .rgl-item-desc { - display: flex; - justify-content: space-between; - margin-bottom: 20upx; - color: #1A1A1A; - } - .rgl-item-sku { - margin-bottom: 10upx; - } - .rgl-item-type-spec { - display: flex; - justify-content: space-between; - align-items: flex-end; - >text { - color: #1A1A1A; - } - } - .rgl-item-bottom-line { - width: 100%; - height: 2upx; - background-color: #D8D8D8; - margin-top: 18upx; - } + color: #9C9C9F; + font-size: 28upx; + + .rgl-item-desc { + display: flex; + justify-content: space-between; + margin-bottom: 20upx; + color: #1A1A1A; + } + .rgl-item-sku { + margin-bottom: 10upx; + } + .rgl-item-type-spec { + display: flex; + justify-content: space-between; + align-items: flex-end; + >text { + color: #1A1A1A; + } + } + .rgl-item-bottom-line { + width: 100%; + height: 2upx; + background-color: #D8D8D8; + margin-top: 18upx; + } } } } diff --git a/src/subpackage/order/pages/ym_card/detail/detail.vue b/src/subpackage/order/pages/ym_card/detail/detail.vue index 13ffcbe..edbb76e 100644 --- a/src/subpackage/order/pages/ym_card/detail/detail.vue +++ b/src/subpackage/order/pages/ym_card/detail/detail.vue @@ -54,6 +54,17 @@ + + + + @@ -67,6 +78,8 @@ import a_line from '../../../../../components/order_list/a_line/a_line.vue'; import s_line from '../../../components/s_line/s_line.vue'; import p_line from '../../../components/p_line/p_line.vue'; +import orderRefundFixed from '@/components/order_refund/fixed.vue' +import orderRefundModal from '@/components/order_refund/modal.vue'; import util from '../../../../../utils/util'; import { ORDER_API } from '../../../js/api'; import server from '../../../js/server'; @@ -75,7 +88,13 @@ export default { 'a-line': a_line, 's-line': s_line, 'p-line': p_line, - + 'order-refund-fixed': orderRefundFixed, + 'order-refund-modal': orderRefundModal, + }, + computed: { + _extension(){ + return this.orderInfo?.extension || {} + } }, data(){ return { @@ -84,16 +103,70 @@ export default { extension: {} }, optionsQuery: {}, + refundInfo: {} } }, onLoad(options){ this.getCardInfo({ id: options.id, card_no: options.card_no - }); - this.optionsQuery = options || {}; + }) + .then(res=>{ + if(res.order_no)this.getRefundInfo(res.order_no || ''); + }) + }, methods: { + refunndBtn(){ + let { orderInfo, _extension } = this; + this.$refs.orderRefundModal.show({ + stadium_name: _extension?.name ?? '', + order_no: orderInfo?.order_no ?? '', + mobile: orderInfo?.mobile ?? '', + refundable_amount: +_extension?.pay_amount || 0, + refundable_integral: 0, + refund_times: 0, + confirm: e => { + this.userMonthlyCardRefundFixed({ + order_no: orderInfo?.order_no || '', + amount: e.refund_amount || 0, + integral: e.refund_integral || 0 + }); + } + }); + }, + async getRefundInfo(order_no){ + try{ + let _refundRes = await this.$store.dispatch('getOrderRefundList', order_no); + + console.log('refundRes', _refundRes); + }catch(err){ + console.warn('getRefundTimes err', err); + } + }, + // 年月卡订单-订单退款 + userMonthlyCardRefundFixed({ order_no = '', amount = 0, integral = 0 }){ + util.showLoad(); + server.get({ + url: ORDER_API.userMonthlyCardRefundFixed, + data: { order_no, amount, integral }, + isDefaultGet: false + }) + .then(res=>{ + util.hideLoad(); + if(res.data.code == 0){ + util.showNone(res.data.message || '操作成功!'); + }else{ + util.showNone(res.data.message || '操作失败!'); + } + }) + .catch(util.hideLoad) + .finally(_=>setTimeout(_=>this.getCardInfo({ + id: this.optionsQuery?.id, + card_no: this.optionsQuery?.card_no + + }), 1200)); + }, previewImg(url){ if(!url)return uni.previewImage({ urls: [ url ] }); @@ -166,14 +239,18 @@ export default { }, getCardInfo({id, card_no}){ util.showLoad(); - server.get({ + return server.get({ url: ORDER_API.userMonthlyCardInfo, data: { id, card_no }, failMsg: '加载失败!' }) .then(res=>{ util.hideLoad(); - this.orderInfo = res || {}; + return this.orderInfo = res || {}; + }) + .catch(err=>{ + util.hideLoad(); + console.warn('getCardInfo err', err); }) }, toRecord(){ From d176480e4039819d12619075475c4dae44934230 Mon Sep 17 00:00:00 2001 From: "liujw155@outlook.com" Date: Tue, 18 Jun 2024 18:16:40 +0800 Subject: [PATCH 06/10] add tid1523 refund permission condition --- src/components/order_refund/fixed.vue | 11 +- src/components/order_refund/modal.vue | 17 +- src/components/order_refund_modal/index.vue | 215 --------------------- .../reservation_site_detail.vue | 1 - .../device/pages/order_details/order_details.vue | 125 +----------- src/subpackage/order/js/api.js | 2 +- .../order/pages/retail/detail/detail.vue | 62 ++++-- 7 files changed, 77 insertions(+), 356 deletions(-) delete mode 100644 src/components/order_refund_modal/index.vue diff --git a/src/components/order_refund/fixed.vue b/src/components/order_refund/fixed.vue index 8265be8..0980267 100644 --- a/src/components/order_refund/fixed.vue +++ b/src/components/order_refund/fixed.vue @@ -9,6 +9,7 @@ - - \ No newline at end of file diff --git a/src/subpackage/device/components/order/reservation_site_detail/reservation_site_detail.vue b/src/subpackage/device/components/order/reservation_site_detail/reservation_site_detail.vue index 02ad2a1..c8cc4e9 100644 --- a/src/subpackage/device/components/order/reservation_site_detail/reservation_site_detail.vue +++ b/src/subpackage/device/components/order/reservation_site_detail/reservation_site_detail.vue @@ -198,7 +198,6 @@ export default { return _obj[`${_status}`] || '-' }, refunndBtn(){ - // this.$emit('refundbtn'); this.$emit('click:refund'); } } diff --git a/src/subpackage/device/pages/order_details/order_details.vue b/src/subpackage/device/pages/order_details/order_details.vue index 737eeae..bc8d1cd 100644 --- a/src/subpackage/device/pages/order_details/order_details.vue +++ b/src/subpackage/device/pages/order_details/order_details.vue @@ -5,7 +5,6 @@ - - - - 退款 - - {{ pageInfo.stadium_name || '-' }} - 订单编号:{{ pageInfo.order_no || '-' }} - 手机号码:{{ pageInfo.mobile || '-' }} - - - *退款金额 - - - - 最多可退{{ (pageInfo.extension&&pageInfo.extension.refundable_amount) || 0 }}元 - - 确认退款 - - + { - if(res.data.code == 0){ - util.showNone(res.data.message || '操作成功!'); - setTimeout(this.refreshPage, 1200); - }else{ - util.showNone(res.data.message || '操作失败!'); - } - }) - .catch(util.hideLoad) - }, 300, true), // 次卡恢复二维码状态刷新订单 peopleRecoverBtn(){ this.okChange(); // 逻辑一样,刷新 @@ -238,82 +192,5 @@ } -.refund-mask{ - position: fixed; - left: 0; - top: 0; - bottom: 0; - right: 0; - background-color: rgba($color: #000, $alpha: .5); - .rm-content{ - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - padding: 80upx; - background-color: #fff; - width: 620upx; - border-radius: 10upx; - .rc-tit{ - margin-bottom: 30upx; - text-align: center; - font-size: 32upx; - font-weight: 500; - color: #1A1A1A; - } - .rc-info{ - margin-bottom: 34upx; - .ri-view{ - line-height: 40upx; - font-size: 28upx; - color: #9C9C9F; - @include textHide(1); - &:first-child{ - font-weight: 500; - color: #1A1A1A; - } - } - } - .rc-price{ - margin-bottom: 32upx; - .rp-name{ - margin-bottom: 8upx; - font-size: 28upx; - line-height: 48upx; - color: #1A1A1A; - .rn-txt{ - color: #EA5061; - } - } - .rp-frame{ - padding: 0 20upx; - height: 88upx; - border-radius: 10upx; - border: 2upx solid #D8D8D8; - .rf-ipt{ - width: 100%; - height: 100%; - font-size: 28upx; - color: #1A1A1A; - } - } - .rp-tip{ - font-size: 24upx; - color: #EA5061; - } - } - .ri-btn{ - margin: 0 auto; - width: 240upx; - line-height: 88upx; - text-align: center; - border-radius: 10upx; - font-size: 32upx; - font-weight: 500; - color: #fff; - background-color: $themeColor; - } - } -} diff --git a/src/subpackage/order/js/api.js b/src/subpackage/order/js/api.js index 40d6591..4597f0a 100644 --- a/src/subpackage/order/js/api.js +++ b/src/subpackage/order/js/api.js @@ -40,7 +40,7 @@ export const ORDER_API = { userValueCardRefundFixed:`${ORIGIN}/admin/userValueCard/refundFixed`, // 储值卡订单-退款 timeOrderDetail:`${ORIGIN}/admin/assistant/timeOrder/detail`, //k-订单管理-计时订单详情 timeOrderComplete:`${ORIGIN}/admin/assistant/timeOrder/complete`, //【20220208】k-订单管理-计时订单完结 - orderRefund:`${ORIGIN}/admin/stadium/order/refund`, // A订单管理-场馆预订订单-订单退款 + orderRefund:`${ORIGIN}/admin/stadium/order/refund`, // A订单管理-场馆预订订单-订单退款 (零售订单、场地、次卡) userMonthlyCardRefundFixed:`${ORIGIN}/admin/userMonthlyCard/refundFixed`, // 年月卡订单-订单退款 } diff --git a/src/subpackage/order/pages/retail/detail/detail.vue b/src/subpackage/order/pages/retail/detail/detail.vue index f853c78..aef10cf 100644 --- a/src/subpackage/order/pages/retail/detail/detail.vue +++ b/src/subpackage/order/pages/retail/detail/detail.vue @@ -146,26 +146,63 @@ export default { }, onLoad(options){ this.getOrderInfo(options.order_no); + this.retailOrderInfoRefundList({ + order_no: options.order_no, + brand_id: this.brandInfo.brand.id + }) }, methods: { refunndBtn(){ let { orderInfo, refundList } = this; this.$refs.orderRefundModal.show({ - stadium_name: orderInfo?.refundList ?? '', + stadium_name: orderInfo?.stadium_name ?? '', order_no: orderInfo?.order_no ?? '', - mobile: orderInfo?.refundList ?? '', + mobile: orderInfo?.mobile ?? '', refundable_amount: orderInfo?.extension?.refundable_amount ?? 0, refundable_integral: orderInfo?.extension?.refundable_integral ?? 0, refund_times: refundList?.length || 0, confirm: e => { + console.log('refund' , e) // this.venueCourseOrderRefund({ // order_no: orderInfo?.order_no ?? '', // amount: e.refund_amount || 0, // integral: e.refund_integral || 0 // }) + this.confirmRefundReq({ + order_no: orderInfo?.order_no || '', + amount: e.refund_amount || 0, + integral: e.refund_integral || 0 + }) } }); }, + confirmRefundReq({ order_no = '', amount = 0, integral = 0}){ + util.showLoad(); + server.get({ + url: ORDER_API.orderRefund, + data: { order_no, amount, integral }, + isDefaultGet: false + }) + .then(res=>{ + util.hideLoad(); + if(res.data.code == 0){ + util.showNone(res.data.message || '操作成功!'); + }else{ + util.showNone(res.data.message || '操作失败!'); + } + }) + .then(_=>{ + setTimeout(_=>{ + let { orderInfo } = this; + this.getOrderInfo(orderInfo?.order_no || ''); + this.retailOrderInfoRefundList({ + order_no: orderInfo?.order_no || '', + brand_id: orderInfo?.brand_id || '' + }) + }, 1200); + }) + .catch(util.hideLoad) + }, // payTypeTxt: util.order_pay_type_txt, payTypeTxt(payType, cardNo) { let _obj = { @@ -197,17 +234,20 @@ export default { // { refund_amount: this.orderInfo.refund_amount, refund_no: this.orderInfo.refund_no, refund_time: this.orderInfo.refund_time, refund_reason: this.orderInfo.refund_reason }, // { refund_amount: this.orderInfo.refund_amount, refund_no: this.orderInfo.refund_no, refund_time: this.orderInfo.refund_time, refund_reason: this.orderInfo.refund_reason } // ]; - server.get({ - url: ORDER_API.retailOrderInfoRefundList, - data: { order_no, brand_id: this.brandInfo.brand.id }, - failMsg: '加载失败!' - }) - .then(res=>{ - util.hideLoad(); - this.refundList = res?.list || []; - }); + }); }, + retailOrderInfoRefundList({ order_no, brand_id }){ + server.get({ + url: ORDER_API.retailOrderInfoRefundList, + data: { order_no, brand_id }, + failMsg: '加载失败!' + }) + .then(res=>{ + util.hideLoad(); + this.refundList = res?.list || []; + }); + } } } From ad55230e0c9204aac2c3785978b2ef98761d1d57 Mon Sep 17 00:00:00 2001 From: "liujw155@outlook.com" Date: Thu, 20 Jun 2024 18:25:15 +0800 Subject: [PATCH 07/10] add refund_info components & meituan_coupon_deduction_amount key --- src/components/order_refund/info.vue | 56 ++++++++++++++++++++++ src/components/order_refund/modal.vue | 4 +- .../reservation_people_detail.vue | 16 ++++++- .../reservation_site_detail.vue | 24 +++++++++- .../order/pages/curriculum/detail/detail.vue | 42 +++++++++------- .../order/pages/retail/detail/detail.vue | 49 +++++-------------- .../pages/stored_value_card/detail/detail.vue | 31 +++++------- src/subpackage/order/pages/timing/detail.vue | 32 ++++++++----- .../order/pages/ym_card/detail/detail.vue | 16 ++++--- 9 files changed, 173 insertions(+), 97 deletions(-) create mode 100644 src/components/order_refund/info.vue diff --git a/src/components/order_refund/info.vue b/src/components/order_refund/info.vue new file mode 100644 index 0000000..1ce011b --- /dev/null +++ b/src/components/order_refund/info.vue @@ -0,0 +1,56 @@ + + + + + \ No newline at end of file diff --git a/src/components/order_refund/modal.vue b/src/components/order_refund/modal.vue index ef6ad51..18e3075 100644 --- a/src/components/order_refund/modal.vue +++ b/src/components/order_refund/modal.vue @@ -19,7 +19,7 @@ 微信交易号:{{orderInfo.trade_no || ''}} + + + + + + 优惠券优惠 -¥{{orderInfo.coupons_amount || 0}} + + 团购券抵扣 + -¥{{ orderInfo.extension.meituan_args.meituan_coupon_deduction_amount || 0}} + 合计支付:{{orderInfo.pay_amount || 0}} @@ -135,6 +141,18 @@ + + + + + +