From afdc0faf165dbc0c90e45043b4f500a3d53ba20f Mon Sep 17 00:00:00 2001
From: zym2525 <540361168@qq.com>
Date: 星期二, 11 三月 2025 21:02:24 +0800
Subject: [PATCH] fix: some

---
 packages/components/src/utils/common.ts                                         |   29 +++
 packages/components/src/components/Card/OrderCard.vue                           |   28 ++
 apps/taro/src/subpackages/recharge/selectPayType/selectPayType.vue              |    1 
 apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.config.ts     |    3 
 packages/components/src/views/Order/components/ElectricOrder.vue                |   11 +
 packages/components/src/views/Order/components/GasOrder.vue                     |   78 ++++++++
 packages/components/src/views/Order/components/PhoneOrder.vue                   |   11 +
 apps/taro/src/subpackages/order/order/InnerPage.vue                             |   21 +
 packages/components/src/views/Order/OrderApplyRefundView.vue                    |   98 ++++++++++
 apps/taro/src/app.config.ts                                                     |    6 
 apps/taro/src/pages/mine/index.vue                                              |    2 
 apps/taro/src/constants/router.ts                                               |    5 
 apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.vue           |   14 +
 apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.config.ts |    3 
 apps/taro/src/subpackages/order/orderApplyRefund/InnerPage.vue                  |   17 +
 apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.vue       |   14 +
 packages/components/src/styles/nut.scss                                         |    2 
 apps/taro/src/subpackages/userAccount/userAccountList/InnerPage.vue             |   11 +
 packages/components/src/index.ts                                                |    3 
 packages/core/src/lifeRechargeConstants.ts                                      |   31 +++
 packages/core/src/lifeRechargeServices.ts                                       |   44 ++++
 packages/components/src/views/userAccount/UserAccountListView.vue               |   75 ++++++++
 22 files changed, 492 insertions(+), 15 deletions(-)

diff --git a/apps/taro/src/app.config.ts b/apps/taro/src/app.config.ts
index f14357e..c23c86c 100644
--- a/apps/taro/src/app.config.ts
+++ b/apps/taro/src/app.config.ts
@@ -64,7 +64,11 @@
     },
     {
       root: 'subpackages/order',
-      pages: ['order/order'],
+      pages: ['order/order', 'orderApplyRefund/orderApplyRefund'],
+    },
+    {
+      root: 'subpackages/userAccount',
+      pages: ['userAccountList/userAccountList'],
     },
   ],
   // preloadRule: {
diff --git a/apps/taro/src/constants/router.ts b/apps/taro/src/constants/router.ts
index f62f6dc..f84a6d2 100644
--- a/apps/taro/src/constants/router.ts
+++ b/apps/taro/src/constants/router.ts
@@ -11,8 +11,11 @@
   phoneBillRecharge = '/subpackages/recharge/phoneBillRecharge/phoneBillRecharge',
   electricBillRecharge = '/subpackages/recharge/electricBillRecharge/electricBillRecharge',
   gasBillRecharge = '/subpackages/recharge/gasBillRecharge/gasBillRecharge',
-  order = '/subpackages/order/order/order',
   selectPayType = '/subpackages/recharge/selectPayType/selectPayType',
   rechargeResult = '/subpackages/recharge/rechargeResult/rechargeResult',
   rechargeElectricResult = '/subpackages/recharge/rechargeElectricResult/rechargeElectricResult',
+
+  order = '/subpackages/order/order/order',
+  orderApplyRefund = '/subpackages/order/orderApplyRefund/orderApplyRefund',
+  userAccountList = '/subpackages/userAccount/userAccountList/userAccountList',
 }
diff --git a/apps/taro/src/pages/mine/index.vue b/apps/taro/src/pages/mine/index.vue
index 8068ee3..f13595d 100644
--- a/apps/taro/src/pages/mine/index.vue
+++ b/apps/taro/src/pages/mine/index.vue
@@ -20,6 +20,7 @@
     <ContentScrollView>
       <List class="mine-list-wrapper">
         <ListItem title="璁㈠崟绠$悊" @click="goOrderManage"></ListItem>
+        <ListItem title="鎴峰彿绠$悊" @click="goUserAccountList"></ListItem>
         <ListItem v-if="isLogin" title="閫�鍑虹櫥褰�" @click="goLogout"></ListItem>
       </List>
     </ContentScrollView>
@@ -72,6 +73,7 @@
 });
 
 const goOrderManage = useAccessLogin(() => goPage(RouterPath.order));
+const goUserAccountList = useAccessLogin(() => goPage(RouterPath.userAccountList));
 
 async function goLogout() {
   try {
diff --git a/apps/taro/src/subpackages/order/order/InnerPage.vue b/apps/taro/src/subpackages/order/order/InnerPage.vue
index eac44ba..876a457 100644
--- a/apps/taro/src/subpackages/order/order/InnerPage.vue
+++ b/apps/taro/src/subpackages/order/order/InnerPage.vue
@@ -1,16 +1,19 @@
 <template>
   <ProTabs v-model="orderType" name="user-home-tabs" class="user-home-tabs" flexTitle fullHeight>
     <ProTabPane title="璇濊垂璁㈠崟" pane-key="1">
-      <PhoneOrder />
+      <PhoneOrder @goApplyRefund="goApplyRefund" @goRefundDetail="goRefundDetail" />
     </ProTabPane>
     <ProTabPane title="鐢佃垂璁㈠崟" pane-key="2">
-      <ElectricOrder />
+      <ElectricOrder @goApplyRefund="goApplyRefund" @goRefundDetail="goRefundDetail" />
+    </ProTabPane>
+    <ProTabPane title="鐕冩皵璁㈠崟" pane-key="3">
+      <GasOrder @goApplyRefund="goApplyRefund" @goRefundDetail="goRefundDetail" />
     </ProTabPane>
   </ProTabs>
 </template>
 
 <script setup lang="ts">
-import { PhoneOrder, ElectricOrder } from '@life-payment/components';
+import { PhoneOrder, ElectricOrder, GasOrder } from '@life-payment/components';
 import Taro from '@tarojs/taro';
 
 defineOptions({
@@ -19,9 +22,17 @@
 
 const orderType = ref('1');
 
-function goPay() {
+function goApplyRefund(orderNo: string) {
   Taro.navigateTo({
-    url: RouterPath.selectPayType,
+    url: `${RouterPath.orderApplyRefund}?orderNo=${orderNo}`,
+    // events: {
+    //   submitApplyRefund: function () {},
+    // },
+  });
+}
+function goRefundDetail(orderNo: string) {
+  Taro.navigateTo({
+    url: `${RouterPath.orderApplyRefund}?orderNo=${orderNo}`,
   });
 }
 </script>
diff --git a/apps/taro/src/subpackages/order/orderApplyRefund/InnerPage.vue b/apps/taro/src/subpackages/order/orderApplyRefund/InnerPage.vue
new file mode 100644
index 0000000..3ac3541
--- /dev/null
+++ b/apps/taro/src/subpackages/order/orderApplyRefund/InnerPage.vue
@@ -0,0 +1,17 @@
+<template>
+  <ContentScrollView :paddingH="false">
+    <OrderApplyRefundView :orderNo="orderNo" />
+  </ContentScrollView>
+</template>
+
+<script setup lang="ts">
+import Taro from '@tarojs/taro';
+import { OrderApplyRefundView } from '@life-payment/components';
+
+defineOptions({
+  name: 'InnerPage',
+});
+
+const router = Taro.useRouter();
+const orderNo = router.params?.orderNo ?? '';
+</script>
diff --git a/apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.config.ts b/apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+  disableScroll: true,
+});
diff --git a/apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.vue b/apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.vue
new file mode 100644
index 0000000..cb04f8d
--- /dev/null
+++ b/apps/taro/src/subpackages/order/orderApplyRefund/orderApplyRefund.vue
@@ -0,0 +1,14 @@
+<template>
+  <PageLayout title="鐢宠閫�娆�" class="orderApplyRefund-page-wrapper" hasBorder>
+    <InnerPage />
+  </PageLayout>
+</template>
+
+<script setup lang="ts">
+import { PageLayout } from '@/components';
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+  name: 'orderApplyRefund',
+});
+</script>
diff --git a/apps/taro/src/subpackages/recharge/selectPayType/selectPayType.vue b/apps/taro/src/subpackages/recharge/selectPayType/selectPayType.vue
index 16153e9..879f00b 100644
--- a/apps/taro/src/subpackages/recharge/selectPayType/selectPayType.vue
+++ b/apps/taro/src/subpackages/recharge/selectPayType/selectPayType.vue
@@ -19,5 +19,6 @@
 const TitleText = {
   [LifeRechargeConstants.LifePayOrderTypeEnum.璇濊垂璁㈠崟]: '璇濊垂鍏呭��',
   [LifeRechargeConstants.LifePayOrderTypeEnum.鐢佃垂璁㈠崟]: '鐢佃垂鍏呭��',
+  [LifeRechargeConstants.LifePayOrderTypeEnum.鐕冩皵璁㈠崟]: '鐕冩皵鍏呭��',
 };
 </script>
diff --git a/apps/taro/src/subpackages/userAccount/userAccountList/InnerPage.vue b/apps/taro/src/subpackages/userAccount/userAccountList/InnerPage.vue
new file mode 100644
index 0000000..e5178a1
--- /dev/null
+++ b/apps/taro/src/subpackages/userAccount/userAccountList/InnerPage.vue
@@ -0,0 +1,11 @@
+<template>
+  <UserAccountListView />
+</template>
+
+<script setup lang="ts">
+import { UserAccountListView } from '@life-payment/components';
+
+defineOptions({
+  name: 'InnerPage',
+});
+</script>
diff --git a/apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.config.ts b/apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+  disableScroll: true,
+});
diff --git a/apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.vue b/apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.vue
new file mode 100644
index 0000000..e306716
--- /dev/null
+++ b/apps/taro/src/subpackages/userAccount/userAccountList/userAccountList.vue
@@ -0,0 +1,14 @@
+<template>
+  <PageLayout title="鎴峰彿绠$悊" class="userAccountList-page-wrapper" hasBorder>
+    <InnerPage> </InnerPage>
+  </PageLayout>
+</template>
+
+<script setup lang="ts">
+import { PageLayout } from '@/components';
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+  name: 'userAccountList',
+});
+</script>
diff --git a/packages/components/src/components/Card/OrderCard.vue b/packages/components/src/components/Card/OrderCard.vue
index 3cf98d9..c3cbc55 100644
--- a/packages/components/src/components/Card/OrderCard.vue
+++ b/packages/components/src/components/Card/OrderCard.vue
@@ -3,14 +3,29 @@
     <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 class="order-card-title-status">
+          {{ LifeRechargeConstants.LifePayOrderFrontStatusEnumText[status] }}
+        </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">鐢宠閫�娆�</div>
+          <div
+            class="order-card-action"
+            v-if="status === LifeRechargeConstants.LifePayOrderFrontStatusEnum.鏀粯鎴愬姛"
+            @click="emit('goApplyRefund', orderNo)"
+          >
+            鐢宠閫�娆�
+          </div>
+          <div
+            class="order-card-action"
+            v-if="status === LifeRechargeConstants.LifePayOrderFrontStatusEnum.閫�娆惧け璐�"
+            @click="emit('goRefundDetail', orderNo)"
+          >
+            璇︽儏
+          </div>
         </slot>
       </div>
     </div>
@@ -21,15 +36,22 @@
 </template>
 
 <script setup lang="ts">
+import { LifeRechargeConstants } from '@life-payment/core-vue';
+
 defineOptions({
   name: 'OrderCard',
 });
 
 type Props = {
   title: string;
-  status: string;
+  status: LifeRechargeConstants.LifePayOrderFrontStatusEnum;
   orderNo: string;
 };
 
 const props = withDefaults(defineProps<Props>(), {});
+
+const emit = defineEmits<{
+  (e: 'goApplyRefund', orderNo: string): void;
+  (e: 'goRefundDetail', orderNo: string): void;
+}>();
 </script>
diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts
index dd86493..ebf1041 100644
--- a/packages/components/src/index.ts
+++ b/packages/components/src/index.ts
@@ -6,4 +6,7 @@
 export { default as RechargeResultView } from './views/RechargeResultView/RechargeResultView.vue';
 export { default as PhoneOrder } from './views/Order/components/PhoneOrder.vue';
 export { default as ElectricOrder } from './views/Order/components/ElectricOrder.vue';
+export { default as GasOrder } from './views/Order/components/GasOrder.vue';
+export { default as OrderApplyRefundView } from './views/Order/OrderApplyRefundView.vue';
+export { default as UserAccountListView } from './views/userAccount/UserAccountListView.vue';
 export * from './utils';
diff --git a/packages/components/src/styles/nut.scss b/packages/components/src/styles/nut.scss
index 4839c5a..e94c6e9 100644
--- a/packages/components/src/styles/nut.scss
+++ b/packages/components/src/styles/nut.scss
@@ -127,7 +127,7 @@
 
   .bole-input-textarea:not(.nut-input--disabled) {
     color: boleGetCssVar('text-color', 'primary') !important;
-    height: 100rpx;
+    height: 200px;
   }
 
   .bole-input-text-placeholder {
diff --git a/packages/components/src/utils/common.ts b/packages/components/src/utils/common.ts
index 12782a6..8ec6d2a 100644
--- a/packages/components/src/utils/common.ts
+++ b/packages/components/src/utils/common.ts
@@ -149,3 +149,32 @@
   }
   return '';
 }
+
+export function convertOrderFrontStatus(
+  payStatus?: LifeRechargeConstants.LifePayStatusEnum,
+  lifePayOrderStatus?: LifeRechargeConstants.LifePayOrderStatusEnum
+) {
+  if (
+    (lifePayOrderStatus === LifeRechargeConstants.LifePayOrderStatusEnum.寰呯‘璁� &&
+      payStatus === LifeRechargeConstants.LifePayStatusEnum.宸叉敮浠�) ||
+    payStatus === LifeRechargeConstants.LifePayStatusEnum.寰呴��娆�
+  ) {
+    return LifeRechargeConstants.LifePayOrderFrontStatusEnum.鏀粯鎴愬姛;
+  }
+  if (lifePayOrderStatus === LifeRechargeConstants.LifePayOrderStatusEnum.宸查��娆�) {
+    return LifeRechargeConstants.LifePayOrderFrontStatusEnum.宸查��娆�;
+  }
+  if (lifePayOrderStatus === LifeRechargeConstants.LifePayOrderStatusEnum.閫�娆惧緟瀹℃牳) {
+    return LifeRechargeConstants.LifePayOrderFrontStatusEnum.閫�娆惧緟瀹℃牳;
+  }
+  if (lifePayOrderStatus === LifeRechargeConstants.LifePayOrderStatusEnum.閫�娆惧け璐�) {
+    return LifeRechargeConstants.LifePayOrderFrontStatusEnum.閫�娆惧け璐�;
+  }
+  if (
+    lifePayOrderStatus === LifeRechargeConstants.LifePayOrderStatusEnum.宸插畬鎴� &&
+    payStatus === LifeRechargeConstants.LifePayStatusEnum.宸叉敮浠�
+  ) {
+    return LifeRechargeConstants.LifePayOrderFrontStatusEnum.鍏呭�兼垚鍔�;
+  }
+  return;
+}
diff --git a/packages/components/src/views/Order/OrderApplyRefundView.vue b/packages/components/src/views/Order/OrderApplyRefundView.vue
new file mode 100644
index 0000000..5380d0a
--- /dev/null
+++ b/packages/components/src/views/Order/OrderApplyRefundView.vue
@@ -0,0 +1,98 @@
+<template>
+  <NutForm
+    :model-value="form"
+    ref="formRef"
+    :rules="rules"
+    label-position="top"
+    class="order-bill-recharge phone"
+  >
+    <NutFormItem class="bole-form-item" prop="refundApplyRemark" required>
+      <NutTextarea
+        placeholder="璇峰~鍐欐偍闇�瑕佸厖鍊肩殑鎵嬫満鍙风爜"
+        placeholderClass="bole-input-text-placeholder"
+        autoSize
+        class="bole-input-textarea"
+        v-model="form.refundApplyRemark"
+        :max-length="200"
+        limit-show
+      >
+      </NutTextarea>
+    </NutFormItem>
+    <div class="common-content">
+      <nut-button class="recharge-button" type="primary" @click="handleSubmit">
+        <div class="recharge-button-inner">
+          <div class="recharge-button-text">鎻愪氦</div>
+        </div>
+      </nut-button>
+    </div>
+  </NutForm>
+</template>
+
+<script setup lang="ts">
+import {
+  Form as NutForm,
+  FormItem as NutFormItem,
+  Input as NutInput,
+  Textarea as NutTextarea,
+} from '@nutui/nutui-taro';
+import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
+import { reactive, ref, computed } from 'vue';
+import {
+  useLifeRechargeContext,
+  LifeRechargeConstants,
+  RefundUserLifePayOrderInput,
+} from '@life-payment/core-vue';
+import { useQueryClient } from '@tanstack/vue-query';
+
+defineOptions({
+  name: 'OrderApplyRefundView',
+});
+
+type Props = {
+  orderNo: string;
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+
+const emit = defineEmits<{
+  (e: 'submitApplyRefund'): void;
+}>();
+
+const form = reactive({
+  refundApplyRemark: '',
+});
+
+const rules = reactive<FormRules>({
+  refundApplyRemark: [{ required: true, message: '璇疯緭鍏ラ��娆惧師鍥�' }],
+});
+
+const { blLifeRecharge } = useLifeRechargeContext();
+
+const formRef = ref<any>(null);
+
+function handleSubmit() {
+  if (!formRef.value) return;
+  formRef.value.validate().then(({ valid, errors }: any) => {
+    if (valid) {
+      refundUserLifePayOrder();
+    }
+  });
+}
+
+const queryClient = useQueryClient();
+
+async function refundUserLifePayOrder() {
+  try {
+    let params: RefundUserLifePayOrderInput = {
+      id: props.orderNo,
+      userId: blLifeRecharge.accountModel.userId,
+      refundApplyRemark: form.refundApplyRemark,
+    };
+    let res = await blLifeRecharge.services.refundUserLifePayOrder(params);
+    emit('submitApplyRefund');
+    queryClient.invalidateQueries({
+      queryKey: ['blLifeRecharge/getUserLifePayOrderPage'],
+    });
+  } catch (error) {}
+}
+</script>
diff --git a/packages/components/src/views/Order/components/ElectricOrder.vue b/packages/components/src/views/Order/components/ElectricOrder.vue
index 3d1347b..d4ebfae 100644
--- a/packages/components/src/views/Order/components/ElectricOrder.vue
+++ b/packages/components/src/views/Order/components/ElectricOrder.vue
@@ -6,8 +6,10 @@
     <template #renderItem="{ item }">
       <OrderCard
         title="鐢佃垂鍏呭��"
-        :status="orderStatusEnum(item?.payStatus, item?.lifePayOrderStatus)"
+        :status="convertOrderFrontStatus(item?.payStatus, item?.lifePayOrderStatus)"
         :order-no="item?.orderNo"
+        @goApplyRefund="emit('goApplyRefund', $event)"
+        @goRefundDetail="emit('goRefundDetail', $event)"
       >
         <OrderCardItem
           label="鍏呭�煎湴鍖�:"
@@ -63,7 +65,7 @@
 import { useGetUserLifePayOrderPage } from '../../../hooks';
 import { BlLifeRecharge } from '@life-payment/core-vue';
 import dayjs from 'dayjs';
-import { toThousand, orderStatusEnum } from '../../../utils';
+import { toThousand, convertOrderFrontStatus } from '../../../utils';
 
 defineOptions({
   name: 'ElectricOrder',
@@ -73,6 +75,11 @@
 
 // const props = withDefaults(defineProps<Props>(), {});
 
+const emit = defineEmits<{
+  (e: 'goApplyRefund', orderNo: string): void;
+  (e: 'goRefundDetail', orderNo: string): void;
+}>();
+
 const { infiniteLoadingProps } = useGetUserLifePayOrderPage({
   lifePayOrderType: BlLifeRecharge.constants.LifePayOrderTypeEnum.鐢佃垂璁㈠崟,
 });
diff --git a/packages/components/src/views/Order/components/GasOrder.vue b/packages/components/src/views/Order/components/GasOrder.vue
new file mode 100644
index 0000000..d8f3aa6
--- /dev/null
+++ b/packages/components/src/views/Order/components/GasOrder.vue
@@ -0,0 +1,78 @@
+<template>
+  <InfiniteLoading
+    scrollViewClassName="life-page-infinite-scroll-list"
+    v-bind="infiniteLoadingProps"
+  >
+    <template #renderItem="{ item }">
+      <OrderCard
+        title="鐕冩皵鍏呭��"
+        :status="convertOrderFrontStatus(item?.payStatus, item?.lifePayOrderStatus)"
+        :order-no="item?.orderNo"
+        @goApplyRefund="emit('goApplyRefund', $event)"
+        @goRefundDetail="emit('goRefundDetail', $event)"
+      >
+        <OrderCardItem
+          label="鍏呭�艰处鍙�:"
+          :value="JSON.parse(item?.orderParamDetailJsonStr)?.gasAccount"
+        />
+        <OrderCardItem
+          label="涓嬪崟鏃堕棿:"
+          :value="item?.creationTime && dayjs(item?.creationTime).format('YYYY-MM-DD HH:mm:ss')"
+        />
+        <template v-if="item.payStatus !== BlLifeRecharge.constants.LifePayStatusEnum.宸查��娆�">
+          <OrderCardItem
+            label="鍏呭�奸噾棰�:"
+            :value="`锟�${toThousand(item?.rechargeAmount)}`"
+            danger
+          />
+          <OrderCardItem label="浼樻儬閲戦:" :value="`锟�${toThousand(item?.discountAmount)}`" />
+        </template>
+        <OrderCardItem label="瀹炰粯閲戦:" :value="`锟�${toThousand(item?.payAmount)}`" danger />
+        <OrderCardItem
+          label="鏀粯鏃堕棿:"
+          :value="item?.payTime && dayjs(item?.payTime).format('YYYY-MM-DD HH:mm:ss')"
+        />
+        <OrderCardItem
+          v-if="item.payStatus !== BlLifeRecharge.constants.LifePayStatusEnum.宸查��娆�"
+          label="瀹屾垚鏃堕棿:"
+          :value="item?.finishTime && dayjs(item?.finishTime).format('YYYY-MM-DD HH:mm:ss')"
+        />
+        <template v-else>
+          <OrderCardItem label="閫�娆鹃噾棰�:" :value="`锟�${toThousand(item?.payAmount)}`" danger />
+          <OrderCardItem
+            label="閫�娆炬椂闂�:"
+            :value="item?.refundTime && dayjs(item?.refundTime).format('YYYY-MM-DD HH:mm:ss')"
+          >
+          </OrderCardItem>
+        </template>
+      </OrderCard>
+    </template>
+  </InfiniteLoading>
+</template>
+
+<script setup lang="ts">
+import InfiniteLoading from '../../../components/InfiniteLoading/InfiniteLoading.vue';
+import OrderCard from '../../../components/Card/OrderCard.vue';
+import OrderCardItem from '../../../components/Card/OrderCardItem.vue';
+import { useGetUserLifePayOrderPage } from '../../../hooks';
+import dayjs from 'dayjs';
+import { BlLifeRecharge } from '@life-payment/core-vue';
+import { toThousand, convertOrderFrontStatus } from '../../../utils';
+
+defineOptions({
+  name: 'GasOrder',
+});
+
+// type Props = {};
+
+// const props = withDefaults(defineProps<Props>(), {});
+
+const emit = defineEmits<{
+  (e: 'goApplyRefund', orderNo: string): void;
+  (e: 'goRefundDetail', orderNo: string): void;
+}>();
+
+const { infiniteLoadingProps } = useGetUserLifePayOrderPage({
+  lifePayOrderType: BlLifeRecharge.constants.LifePayOrderTypeEnum.鐕冩皵璁㈠崟,
+});
+</script>
diff --git a/packages/components/src/views/Order/components/PhoneOrder.vue b/packages/components/src/views/Order/components/PhoneOrder.vue
index db8ebc4..873946c 100644
--- a/packages/components/src/views/Order/components/PhoneOrder.vue
+++ b/packages/components/src/views/Order/components/PhoneOrder.vue
@@ -6,8 +6,10 @@
     <template #renderItem="{ item }">
       <OrderCard
         title="璇濊垂鍏呭��"
-        :status="orderStatusEnum(item?.payStatus, item?.lifePayOrderStatus)"
+        :status="convertOrderFrontStatus(item?.payStatus, item?.lifePayOrderStatus)"
         :order-no="item?.orderNo"
+        @goApplyRefund="emit('goApplyRefund', $event)"
+        @goRefundDetail="emit('goRefundDetail', $event)"
       >
         <OrderCardItem
           label="鍏呭�艰处鍙�:"
@@ -55,7 +57,7 @@
 import { useGetUserLifePayOrderPage } from '../../../hooks';
 import dayjs from 'dayjs';
 import { BlLifeRecharge } from '@life-payment/core-vue';
-import { toThousand, orderStatusEnum } from '../../../utils';
+import { toThousand, convertOrderFrontStatus } from '../../../utils';
 
 defineOptions({
   name: 'PhoneOrder',
@@ -65,6 +67,11 @@
 
 // const props = withDefaults(defineProps<Props>(), {});
 
+const emit = defineEmits<{
+  (e: 'goApplyRefund', orderNo: string): void;
+  (e: 'goRefundDetail', orderNo: string): void;
+}>();
+
 const { infiniteLoadingProps } = useGetUserLifePayOrderPage({
   lifePayOrderType: BlLifeRecharge.constants.LifePayOrderTypeEnum.璇濊垂璁㈠崟,
 });
diff --git a/packages/components/src/views/userAccount/UserAccountListView.vue b/packages/components/src/views/userAccount/UserAccountListView.vue
new file mode 100644
index 0000000..68ee021
--- /dev/null
+++ b/packages/components/src/views/userAccount/UserAccountListView.vue
@@ -0,0 +1,75 @@
+<template>
+  <InfiniteLoading
+    scrollViewClassName="life-page-infinite-scroll-list"
+    v-bind="infiniteLoadingProps"
+  >
+    <template #renderItem="{ item }">
+      <AccountCard
+        :title="TitleMap[item.lifePayType]"
+        :content="
+          item.lifePayType === LifeRechargeConstants.LifePayOrderTypeEnum.璇濊垂璁㈠崟
+            ? item.content
+            : `${item.city}-${item.content}`
+        "
+        :remark="item.remark"
+        :style="{
+          marginBottom: Taro.pxTransform(20),
+          backgroundColor: '#ffffff',
+        }"
+      >
+        <template #action>
+          <div class="account-card-action" @click="handleEditUserAccount">缂栬緫</div>
+          <div class="account-card-action" @click="handleEditUserAccount">鍒犻櫎</div>
+        </template>
+      </AccountCard>
+    </template>
+  </InfiniteLoading>
+</template>
+
+<script setup lang="ts">
+import InfiniteLoading from '../../components/InfiniteLoading/InfiniteLoading.vue';
+import {
+  BlLifeRecharge,
+  useLifeRechargeContext,
+  QueryUserAccountListInput,
+  LifeRechargeConstants,
+} from '@life-payment/core-vue';
+import { useInfiniteLoading } from '../../hooks/infiniteLoading';
+import { OrderInputType } from '../../constants';
+import AccountCard from '../../components/Card/AccountCard.vue';
+import Taro from '@tarojs/taro';
+
+defineOptions({
+  name: 'UserAccountListView',
+});
+
+const { blLifeRecharge } = useLifeRechargeContext();
+
+const TitleMap = {
+  [LifeRechargeConstants.LifePayOrderTypeEnum.璇濊垂璁㈠崟]: '鎵嬫満鍙�',
+  [LifeRechargeConstants.LifePayOrderTypeEnum.鐢佃垂璁㈠崟]: '鐢佃垂鎴峰彿',
+  [LifeRechargeConstants.LifePayOrderTypeEnum.鐕冩皵璁㈠崟]: '鐕冩皵鎴峰彿',
+};
+
+const { infiniteLoadingProps } = useInfiniteLoading(
+  ({ pageParam }) => {
+    let params: QueryUserAccountListInput = {
+      pageModel: {
+        rows: 20,
+        page: pageParam,
+        orderInput: [{ property: 'id', order: OrderInputType.Desc }],
+      },
+      userId: blLifeRecharge.accountModel.userId,
+    };
+
+    return blLifeRecharge.services.getUserAccountList(params, {
+      showLoading: false,
+    });
+  },
+  {
+    queryKey: ['blLifeRecharge/getUserAccountList', blLifeRecharge.accountModel.userId],
+  }
+);
+
+function handleEditUserAccount() {}
+</script>
diff --git a/packages/core/src/lifeRechargeConstants.ts b/packages/core/src/lifeRechargeConstants.ts
index f052615..2d07787 100644
--- a/packages/core/src/lifeRechargeConstants.ts
+++ b/packages/core/src/lifeRechargeConstants.ts
@@ -35,8 +35,39 @@
     宸插け璐� = 20,
 
     宸插畬鎴� = 30,
+
+    閫�娆惧緟瀹℃牳 = 40,
+
+    宸查��娆� = 50,
+
+    閫�娆惧け璐� = 60,
   }
 
+  export const LifePayOrderStatusEnumText = {
+    [LifePayOrderStatusEnum.寰呯‘璁: '寰呯‘璁�',
+    [LifePayOrderStatusEnum.宸插け璐: '宸插け璐�',
+    [LifePayOrderStatusEnum.宸插畬鎴怾: '宸插畬鎴�',
+    [LifePayOrderStatusEnum.閫�娆惧緟瀹℃牳]: '閫�娆惧緟瀹℃牳',
+    [LifePayOrderStatusEnum.宸查��娆綸: '宸查��娆�',
+    [LifePayOrderStatusEnum.閫�娆惧け璐: '閫�娆惧け璐�',
+  };
+
+  export enum LifePayOrderFrontStatusEnum {
+    鏀粯鎴愬姛 = 10,
+    閫�娆惧緟瀹℃牳 = 40,
+    宸查��娆� = 50,
+    閫�娆惧け璐� = 60,
+    鍏呭�兼垚鍔� = 100,
+  }
+
+  export const LifePayOrderFrontStatusEnumText = {
+    [LifePayOrderFrontStatusEnum.鏀粯鎴愬姛]: '鏀粯鎴愬姛',
+    [LifePayOrderFrontStatusEnum.閫�娆惧緟瀹℃牳]: '閫�娆惧緟瀹℃牳',
+    [LifePayOrderFrontStatusEnum.宸查��娆綸: '宸查��娆�',
+    [LifePayOrderFrontStatusEnum.閫�娆惧け璐: '閫�娆惧け璐�',
+    [LifePayOrderFrontStatusEnum.鍏呭�兼垚鍔焆: '鍏呭�兼垚鍔�',
+  };
+
   export enum IspCode {
     /**涓浗绉诲姩 */
     yidong = 'yidong',
diff --git a/packages/core/src/lifeRechargeServices.ts b/packages/core/src/lifeRechargeServices.ts
index 865a7e2..200ad7e 100644
--- a/packages/core/src/lifeRechargeServices.ts
+++ b/packages/core/src/lifeRechargeServices.ts
@@ -169,6 +169,18 @@
     });
   }
 
+  /** 鑾峰彇鎴戠殑鎴峰彿鍒楄〃 POST /api/LifePay/GetUserAccountList */
+  async getUserAccountList(body: QueryUserAccountListInput, options?: RequestConfig) {
+    return this.request<UserAccountListOutputPageOutput>('/api/LifePay/GetUserAccountList', {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json',
+      },
+      data: body,
+      ...(options || {}),
+    });
+  }
+
   /** 娣诲姞鎴栦慨鏀规垜鐨勬埛鍙� POST /api/LifePay/AddUpdateUserAccount */
   async addUpdateUserAccount(body: AddUpdateUserAccountInput, options?: RequestConfig) {
     return this.request<number>('/api/LifePay/AddUpdateUserAccount', {
@@ -197,6 +209,18 @@
   async getGasParValue(options?: RequestConfig) {
     return this.request<GasParValueResponse>('/api/LifePay/GetGasParValue', {
       method: 'GET',
+      ...(options || {}),
+    });
+  }
+
+  /** 鐢ㄦ埛鍙戣捣鐢熸椿缂磋垂閫�娆� POST /api/LifePay/RefundUserLifePayOrder */
+  async refundUserLifePayOrder(body: RefundUserLifePayOrderInput, options?: RequestConfig) {
+    return this.request<number>('/api/LifePay/RefundUserLifePayOrder', {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json',
+      },
+      data: body,
       ...(options || {}),
     });
   }
@@ -522,3 +546,23 @@
   rate?: number;
   comments?: string;
 }
+
+export interface RefundUserLifePayOrderInput {
+  id?: string;
+  /** 鐢ㄦ埛Id */
+  userId?: string;
+  refundApplyRemark?: string;
+}
+
+export interface QueryUserAccountListInput {
+  pageModel?: Pagination;
+  /** 鐢ㄦ埛Id */
+  userId?: string;
+  lifePayOrderType?: LifeRechargeConstants.LifePayOrderTypeEnum;
+}
+
+export interface UserAccountListOutputPageOutput {
+  pageModel?: Pagination;
+  objectData?: any;
+  data?: UserAccountListOutput[];
+}

--
Gitblit v1.9.1