diff --git a/src/components/end_billing_modal/end_billing_modal.vue b/src/components/end_billing_modal/end_billing_modal.vue index efa86df..40e3efd 100644 --- a/src/components/end_billing_modal/end_billing_modal.vue +++ b/src/components/end_billing_modal/end_billing_modal.vue @@ -76,6 +76,7 @@ export default { // setTimeout(()=>uni.navigateBack(),1200); this.$emit('timeEndBtn'); }) + .catch(util.hideLoad) }, selectBtn(type){ 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..0980267 --- /dev/null +++ b/src/components/order_refund/fixed.vue @@ -0,0 +1,57 @@ + + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..18e3075 --- /dev/null +++ b/src/components/order_refund/modal.vue @@ -0,0 +1,231 @@ + + + + + \ No newline at end of file diff --git a/src/components/timing_order/timing_order.vue b/src/components/timing_order/timing_order.vue index be95aa8..1d6743f 100644 --- a/src/components/timing_order/timing_order.vue +++ b/src/components/timing_order/timing_order.vue @@ -80,8 +80,8 @@ export default { // _query["stadium_id"] = orderInfo.stadium_id // _query["order_no"] = orderInfo.order_no // _query["order_type"] = 1 - let _str = `stadium_id=${orderInfo.stadium_id || ''}&order_no=${orderInfo.order_no || ''}&order_type=1` - util.routeTo(`/subpackage/device/pages/order_details/order_details?${_str}`,'nT'); + let _str = `stadium_id=${orderInfo.stadium_id || ''}&order_no=${orderInfo.order_no || ''}` + util.routeTo(`/subpackage/order/pages/timing/detail?${_str}`,'nT'); // this.$emit('orderDetailChange'); }, timeEndBtn(){ diff --git a/src/js/api.js b/src/js/api.js index 1b0663b..1db1e8b 100644 --- a/src/js/api.js +++ b/src/js/api.js @@ -152,6 +152,7 @@ API['writeOff'] = { API['order'] = { reservationDetail:`${ORIGIN}/admin/assistant/stadiumOrder/detail`, //k-订单管理-场馆预约订单-预约场馆订单详情/ 次卡订单详情 sessionVerify:`${ORIGIN}/admin/person/number/rule/orderinfo/sessionVerify`, // 次票核销,输入二维码数量核销 + orderRefundList:`${ORIGIN}/admin/stadium/order/refundList`, // 硬件管理(所有的订单)-退款信息列表(包括预订,计时) } // 20240325 后台功能迁移到小程序端 diff --git a/src/pages.json b/src/pages.json index 813c428..c9eb464 100644 --- a/src/pages.json +++ b/src/pages.json @@ -604,6 +604,12 @@ "style" : { "navigationBarTitleText": "租球机订单详情" } + }, + { + "path": "pages/timing/detail", + "style" : { + "navigationBarTitleText": "计时订单详情" + } } ] }, diff --git a/src/pages/site/confirm/confirm.vue b/src/pages/site/confirm/confirm.vue index 9baa789..087b161 100644 --- a/src/pages/site/confirm/confirm.vue +++ b/src/pages/site/confirm/confirm.vue @@ -94,7 +94,7 @@ export default { ocPrice: '', ocReaon: '', ocUsage: 1, // 1 -> 客户订场, 2-> 散客, 3-> 锁场, 4 -> 挂账 - light_up: false, + light_up: true, usageLs: [ { name: '客户订场', type: 1 }, { name: '散客', type: 2 }, { name: '锁场', type: 3 }, { name: '挂账', type: 4 }, diff --git a/src/store/actions.js b/src/store/actions.js index e195e2a..ace8154 100644 --- a/src/store/actions.js +++ b/src/store/actions.js @@ -13,5 +13,13 @@ export default { commit('setBrandInfo',res); return res; }) + }, + + getOrderRefundList({commit, state}, order_no){ + return servers.get({ + url: API.order.orderRefundList, + data: { order_no }, + isDefaultGet: false + }) } } \ No newline at end of file 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/device/components/order/reservation_people_detail/reservation_people_detail.vue b/src/subpackage/device/components/order/reservation_people_detail/reservation_people_detail.vue index c9e1f8c..2d36f30 100644 --- a/src/subpackage/device/components/order/reservation_people_detail/reservation_people_detail.vue +++ b/src/subpackage/device/components/order/reservation_people_detail/reservation_people_detail.vue @@ -161,6 +161,26 @@ 微信交易号:{{orderInfo.trade_no || ''}} + + + + + + + + + @@ -237,7 +257,13 @@ import util from '@/utils/util'; import deviceServer from '../../../js/device_server'; import deviceApi from '../../../js/device_api'; import { mapState } from 'vuex'; +import orderRefundFixed from '@/components/order_refund/fixed.vue' +import orderRefundInfo from '@/components/order_refund/info.vue'; export default { + components: { + 'order-refund-fixed': orderRefundFixed, + 'order-refund-info': orderRefundInfo, + }, props: { orderInfo: { type: Object, @@ -592,6 +618,10 @@ export default { this.isShowSuccessIC = !this.isShowSuccessIC this.$emit('okChange'); }, + refunndBtn(){ + // this.$emit('refundbtn'); + this.$emit('click:refund'); + } } } 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..fb4d734 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 @@ -98,6 +98,12 @@ 优惠券优惠 -¥{{orderInfo.coupons_amount || 0}} + + 团购券抵扣 + -¥{{ orderInfo.extension.meituan_args.meituan_coupon_deduction_amount || 0}} + 合计支付:{{orderInfo.pay_amount || 0}} @@ -135,14 +141,35 @@ - - + + + + + + - - diff --git a/src/subpackage/device/pages/order_details/order_details.vue b/src/subpackage/device/pages/order_details/order_details.vue index f294e36..bc8d1cd 100644 --- a/src/subpackage/device/pages/order_details/order_details.vue +++ b/src/subpackage/device/pages/order_details/order_details.vue @@ -2,67 +2,56 @@ - + - - - - - 退款 - - {{ pageInfo.stadium_name || '-' }} - 订单编号:{{ pageInfo.order_no || '-' }} - 手机号码:{{ pageInfo.mobile || '-' }} - - - *退款金额 - - - - 最多可退{{ (pageInfo.extension&&pageInfo.extension.refundable_amount) || 0 }}元 - - 确认退款 - - + + + @@ -225,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 ac8af38..4597f0a 100644 --- a/src/subpackage/order/js/api.js +++ b/src/subpackage/order/js/api.js @@ -35,6 +35,13 @@ 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订单管理-场馆预订订单-订单退款 (零售订单、场地、次卡) + userMonthlyCardRefundFixed:`${ORIGIN}/admin/userMonthlyCard/refundFixed`, // 年月卡订单-订单退款 } 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 43f2ff8..a74ef44 100644 --- a/src/subpackage/order/pages/curriculum/detail/detail.vue +++ b/src/subpackage/order/pages/curriculum/detail/detail.vue @@ -86,21 +86,29 @@ 交易流水: - - - 退款单号: - - - 退款时间: - - - 退款金额: - - - - + + + + + + + + @@ -109,50 +117,104 @@ import a_line from '../../../../../components/order_list/a_line/a_line.vue'; import util from '../../../../../utils/util'; import { ORDER_API } from '../../../js/api'; import server from '../../../js/server'; +import orderRefundFixed from '@/components/order_refund/fixed.vue' +import orderRefundModal from '@/components/order_refund/modal.vue'; +import orderRefundInfo from '@/components/order_refund/info.vue'; export default { computed: { course_period_nums_give(){ let { orderInfo } = this; let _num = orderInfo.course_period_nums_give || 0; return (_num + '').replace('-', '') + }, + refundTimes(){ + // 课程订单只支持一次退款,refund_times + 1 间接实现 + let _num = this.refundList?.length || 0; + return _num + 1; } }, // ('订单状态 0-待付款 1-进行中 2-已结束 3-已退款 4-已取消') components: { 'a-line': a_line, + 'order-refund-fixed': orderRefundFixed, + 'order-refund-modal': orderRefundModal, + 'order-refund-info': orderRefundInfo }, data(){ return { orderInfo: { user_info: {} - } + }, + refundList: [], // 退款列表 } }, onLoad(options){ this.getInfo(options.order_no); + this.getRefundTimes(options.order_no); }, methods: { + refunndBtn(){ + let { orderInfo, refundTimes } = this; + this.$refs.orderRefundModal.show({ + stadium_name: orderInfo?.extension?.stadium_name ?? '', + order_no: orderInfo?.order_no ?? '', + mobile: orderInfo?.student_phone ?? '', + refundable_amount: orderInfo?.extension?.refundable_amount ?? 0, + refundable_integral: orderInfo?.extension?.refundable_integral ?? 0, + refund_times: refundTimes, + confirm: e => { + 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); + this.getRefundTimes(order_no); + }, 1200)); + }, + async getRefundTimes(order_no){ + try{ + let _refundRes = await this.$store.dispatch('getOrderRefundList', order_no); + let _refundLs = _refundRes?.data?.data?.list || []; + this.refundList = _refundLs; + }catch(err){ + console.warn('getRefundTimes err', err); + } + }, 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/retail/detail/detail.vue b/src/subpackage/order/pages/retail/detail/detail.vue index 7860259..83b2f30 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,28 @@ - - - - - 退款信息{{ index + 1 }} - - - - - - + + + + + + + + + @@ -114,16 +109,22 @@ 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 orderRefundInfo from '@/components/order_refund/info.vue'; import { mapState } from 'vuex'; export default { components: { 's-line': s_line, 'p-line': p_line, + 'order-refund-fixed': orderRefundFixed, + 'order-refund-modal': orderRefundModal, + 'order-refund-info': orderRefundInfo }, data(){ return { orderInfo: {}, - refundList: [] + refundList: [] } }, computed:{ @@ -131,19 +132,74 @@ 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?.stadium_name ?? '', + order_no: orderInfo?.order_no ?? '', + 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 = { - 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,21 +216,24 @@ 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 } + // ]; + }); }, + 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 || []; + }); + } } } @@ -189,57 +248,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 +315,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; + } } } } @@ -324,15 +383,4 @@ export default { color: #1A1A1A; } } - .rc-refund-info{ - padding: 30upx; - margin-top: 24upx; - background-color: #fff; - .rpi-tit{ - margin-bottom: 16upx; - line-height: 44upx; - font-size: 28upx; - color: #9C9C9F; - } - } \ No newline at end of file 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..59ec707 100644 --- a/src/subpackage/order/pages/stored_value_card/detail/detail.vue +++ b/src/subpackage/order/pages/stored_value_card/detail/detail.vue @@ -65,24 +65,27 @@ - - - 退款信息{{i+1}} - - - - 退款金额:{{ e.amount || 0 }} - - - 退款单号:{{ e.refund_no || '-' }} - - - 退款时间:{{ e.refund_time || '-' }} - - - 退款原因:{{ e.reason || '-' }} - - + + + + + + + + @@ -91,9 +94,15 @@ 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'; +import orderRefundInfo from '@/components/order_refund/info.vue'; export default { components: { 's-line': s_line, + 'order-refund-fixed': orderRefundFixed, + 'order-refund-modal': orderRefundModal, + 'order-refund-info': orderRefundInfo }, computed: { cardInfo(){ @@ -116,6 +125,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..da4dddd --- /dev/null +++ b/src/subpackage/order/pages/timing/detail.vue @@ -0,0 +1,379 @@ + + + + + diff --git a/src/subpackage/order/pages/ym_card/detail/detail.vue b/src/subpackage/order/pages/ym_card/detail/detail.vue index 13ffcbe..204b2d6 100644 --- a/src/subpackage/order/pages/ym_card/detail/detail.vue +++ b/src/subpackage/order/pages/ym_card/detail/detail.vue @@ -53,7 +53,30 @@ + + + + + + + + + + @@ -67,6 +90,9 @@ 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 orderRefundInfo from '@/components/order_refund/info.vue'; import util from '../../../../../utils/util'; import { ORDER_API } from '../../../js/api'; import server from '../../../js/server'; @@ -75,7 +101,14 @@ export default { 'a-line': a_line, 's-line': s_line, 'p-line': p_line, - + 'order-refund-fixed': orderRefundFixed, + 'order-refund-modal': orderRefundModal, + 'order-refund-info': orderRefundInfo + }, + computed: { + _extension(){ + return this.orderInfo?.extension || {} + } }, data(){ return { @@ -84,16 +117,79 @@ export default { extension: {} }, optionsQuery: {}, + refundInfo: {}, + refundList: [] } }, 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 || ''); + }) + this.optionsQuery = options; }, methods: { + refunndBtn(){ + let { orderInfo, _extension, refundList } = this; + this.$refs.orderRefundModal.show({ + stadium_name: _extension?.name ?? '', + order_no: orderInfo?.order_no ?? '', + mobile: orderInfo?.mobile ?? '', + refundable_amount: +_extension?.refundable_amount || 0, + refundable_integral: 0, + refund_times: refundList?.length || 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); + let _ls = _refundRes?.data?.data?.list || []; + this.refundList = _ls; + console.log('refundRes', _refundRes); + }catch(err){ + console.warn('getRefundTimes err', err); + } + }, + // 年月卡订单-订单退款 + userMonthlyCardRefundFixed({ order_no = '', amount = 0, integral = 0 }){ + util.showLoad(); + server.post({ + url: ORDER_API.userMonthlyCardRefundFixed, + data: { order_no, amount, deduction_integral: 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 + + }) + .then(res=>{ + if(res.order_no)this.getRefundInfo(res.order_no || ''); + }) + }, 1200) + ); + }, previewImg(url){ if(!url)return uni.previewImage({ urls: [ url ] }); @@ -166,14 +262,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(){ @@ -187,7 +287,7 @@ export default {