|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <div class="order-card"> | 
|---|
|  |  |  | <div class="order-card-title"> | 
|---|
|  |  |  | <div class="order-card-title-top"> | 
|---|
|  |  |  | <div class="order-card-title-text">{{ title }}</div> | 
|---|
|  |  |  | <div class="order-card-title-status"> | 
|---|
|  |  |  | {{ LifeRechargeConstants.LifePayOrderFrontStatusEnumText[status] }} | 
|---|
|  |  |  | <div class="order-card-title-left"> | 
|---|
|  |  |  | <div class="order-card-title-text-wrapper"> | 
|---|
|  |  |  | <div class="order-card-title-text">{{ title }}</div> | 
|---|
|  |  |  | <div class="order-card-title-status"> | 
|---|
|  |  |  | <img :src="StatusEnumImg" alt="" /> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="order-card-title-ordernum-wrapper"> | 
|---|
|  |  |  | <div class="order-card-title-ordernum"> | 
|---|
|  |  |  | {{ `订单编号:${orderNo}` }} | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <slot name="actions"> | 
|---|
|  |  |  | <div | 
|---|
|  |  |  | class="order-card-action" | 
|---|
|  |  |  | v-if="status === LifeRechargeConstants.LifePayOrderFrontStatusEnum.支付成功" | 
|---|
|  |  |  | @click="emit('goApplyRefund', id)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | 申请退款 | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div | 
|---|
|  |  |  | class="order-card-action" | 
|---|
|  |  |  | v-if="status === LifeRechargeConstants.LifePayOrderFrontStatusEnum.退款失败" | 
|---|
|  |  |  | @click="emit('goRefundDetail', orderNo)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | 详情 | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </slot> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="order-card-content"> | 
|---|
|  |  |  | <slot></slot> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <slot name="actions"> | 
|---|
|  |  |  | <div class="order-card-footer" v-if="showFooter"> | 
|---|
|  |  |  | <div | 
|---|
|  |  |  | v-if="status === LifeRechargeConstants.LifePayOrderStatusEnum.充值中" | 
|---|
|  |  |  | class="order-card-action" | 
|---|
|  |  |  | @click="emit('goApplyRefund', id)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | 申请退款 | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div | 
|---|
|  |  |  | class="order-card-action" | 
|---|
|  |  |  | v-if="frontStatus === LifeRechargeConstants.LifePayOrderFrontStatusEnum.退款失败" | 
|---|
|  |  |  | @click="emit('goRefundDetail', orderNo)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | 详情 | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </slot> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script setup lang="ts"> | 
|---|
|  |  |  | import { LifeRechargeConstants } from '@life-payment/core-vue'; | 
|---|
|  |  |  | import { OssAssets } from '../../constants'; | 
|---|
|  |  |  | import { computed } from 'vue'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | defineOptions({ | 
|---|
|  |  |  | name: 'OrderCard', | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | type Props = { | 
|---|
|  |  |  | title: string; | 
|---|
|  |  |  | status?: LifeRechargeConstants.LifePayOrderFrontStatusEnum; | 
|---|
|  |  |  | status?: LifeRechargeConstants.LifePayOrderStatusEnum; | 
|---|
|  |  |  | frontStatus?: LifeRechargeConstants.LifePayOrderFrontStatusEnum; | 
|---|
|  |  |  | orderNo: string; | 
|---|
|  |  |  | id: string; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | 
|---|
|  |  |  | (e: 'goApplyRefund', id: string): void; | 
|---|
|  |  |  | (e: 'goRefundDetail', orderNo: string): void; | 
|---|
|  |  |  | }>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const LifePayOrderStatusEnumImg = { | 
|---|
|  |  |  | [LifeRechargeConstants.LifePayOrderStatusEnum.充值中]: OssAssets.card.Recharge, | 
|---|
|  |  |  | [LifeRechargeConstants.LifePayOrderStatusEnum.已失败]: OssAssets.card.Failed, | 
|---|
|  |  |  | [LifeRechargeConstants.LifePayOrderStatusEnum.已完成]: OssAssets.card.Success, | 
|---|
|  |  |  | [LifeRechargeConstants.LifePayOrderStatusEnum.待退款]: OssAssets.card.WaitRefund, | 
|---|
|  |  |  | [LifeRechargeConstants.LifePayOrderStatusEnum.已退款]: OssAssets.card.Refunded, | 
|---|
|  |  |  | [LifeRechargeConstants.LifePayOrderStatusEnum.退款失败]: OssAssets.card.RefundFail, | 
|---|
|  |  |  | [LifeRechargeConstants.LifePayOrderStatusEnum.退款中]: OssAssets.card.Refund, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const StatusEnumImg = computed(() => { | 
|---|
|  |  |  | if (props.frontStatus === LifeRechargeConstants.LifePayOrderFrontStatusEnum.退款失败) { | 
|---|
|  |  |  | return OssAssets.card.RefundFail; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return LifePayOrderStatusEnumImg[props.status]; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const showFooter = computed(() => { | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | props.status === LifeRechargeConstants.LifePayOrderStatusEnum.充值中 || | 
|---|
|  |  |  | props.status === LifeRechargeConstants.LifePayOrderStatusEnum.退款失败 || | 
|---|
|  |  |  | props.frontStatus === LifeRechargeConstants.LifePayOrderFrontStatusEnum.退款失败 | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | </script> | 
|---|