From 0224735fb1cba46f6549adfa1f60ffd6b5041b72 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 21 五月 2025 16:13:45 +0800
Subject: [PATCH] feat: UI

---
 packages/components/src/components/Card/OrderCard.vue |   94 ++++++++++++++++++++++++++++------------------
 1 files changed, 57 insertions(+), 37 deletions(-)

diff --git a/packages/components/src/components/Card/OrderCard.vue b/packages/components/src/components/Card/OrderCard.vue
index 14ed16e..d51367a 100644
--- a/packages/components/src/components/Card/OrderCard.vue
+++ b/packages/components/src/components/Card/OrderCard.vue
@@ -1,59 +1,79 @@
 <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">{{ status }}</div>
-      </div>
-      <div class="order-card-title-ordernum">
-        {{ `璁㈠崟缂栧彿锛�${'JF202502191515350002'}` }}
+      <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="LifePayOrderStatusEnumImg[status]" alt="" />
+          </div>
+        </div>
+        <div class="order-card-title-ordernum">
+          {{ `璁㈠崟缂栧彿锛�${orderNo}` }}
+        </div>
       </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="status === LifeRechargeConstants.LifePayOrderStatusEnum.閫�娆惧け璐�"
+          @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: string;
+  status?: LifeRechargeConstants.LifePayOrderStatusEnum;
+  orderNo: string;
+  id: string;
 };
 
 const props = withDefaults(defineProps<Props>(), {});
+
+const emit = defineEmits<{
+  (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 showFooter = computed(() => {
+  return (
+    props.status === LifeRechargeConstants.LifePayOrderStatusEnum.鍏呭�间腑 ||
+    props.status === LifeRechargeConstants.LifePayOrderStatusEnum.閫�娆惧け璐�
+  );
+});
 </script>
-<style lang="scss">
-.order-card {
-  border: 1px solid #e8e8e8;
-  border-radius: 12px;
-  padding: 20px;
-
-  .order-card-title {
-    display: flex;
-    flex-direction: column;
-    border-bottom: 1px solid #e8e8e8;
-    padding-bottom: 20px;
-    margin-bottom: 20px;
-
-    .order-card-title-top {
-      display: flex;
-      justify-content: space-between;
-      color: #333333;
-      font-size: 28px;
-      line-height: 40px;
-      font-weight: 600;
-      margin-bottom: 12px;
-    }
-
-    .order-card-title-ordernum {
-      font-size: 24px;
-      color: #999999;
-    }
-  }
-}
-</style>

--
Gitblit v1.9.1