From cb4bcf7c64236b7c47e0500f4097a925543d850f Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期四, 23 十月 2025 13:15:44 +0800
Subject: [PATCH] fix: bug

---
 src/views/BalanceManage/BalanceManage.vue                   |   35 +++++
 src/views/BalanceManage/components/WithdrawalRecordView.vue |  139 +++++++++++++++++++++++
 src/views/BalanceManage/components/PaymentRecordView.vue    |  118 +++++++++++++++++++
 src/views/BalanceManage/components/RechargeRecordView.vue   |   14 +-
 4 files changed, 297 insertions(+), 9 deletions(-)

diff --git a/src/views/BalanceManage/BalanceManage.vue b/src/views/BalanceManage/BalanceManage.vue
index fd6b997..2946d2b 100644
--- a/src/views/BalanceManage/BalanceManage.vue
+++ b/src/views/BalanceManage/BalanceManage.vue
@@ -68,8 +68,22 @@
         </RewardInfoCard>
       </RewardInfoCardList>
       <ProTabs v-model="state.tabType" hasBorder class="reward-tabs">
-        <ProTabPane lazy label="娑堣垂璁板綍" name="Consume">
-          <ConsumeRecordView></ConsumeRecordView>
+        <ProTabPane lazy label="鎷ㄤ粯璁板綍" name="Payment">
+          <PaymentRecordView></PaymentRecordView>
+        </ProTabPane>
+        <template v-if="sceneThree || sceneFour">
+          <ProTabPane lazy label="濂栧姳鍙戞斁璁板綍" name="RewardGrant">
+            <RewardGrantRecordView></RewardGrantRecordView>
+          </ProTabPane>
+          <ProTabPane lazy label="鍏呭�艰褰�" name="Recharge">
+            <RechargeRecordView ref="rechargeRecordRef"></RechargeRecordView>
+          </ProTabPane>
+          <ProTabPane lazy label="娑堣垂璁板綍" name="Consume">
+            <ConsumeRecordView></ConsumeRecordView>
+          </ProTabPane>
+        </template>
+        <ProTabPane lazy label="鎻愮幇璁板綍" name="Withdrawal" v-if="sceneTwo || sceneFour">
+          <WithdrawalRecordView ref="withdrawalRecordRef"></WithdrawalRecordView>
         </ProTabPane>
       </ProTabs>
     </AppContainer>
@@ -84,6 +98,10 @@
 import RewardInfoCardContentItem from '@/components/Reward/RewardInfoCardContentItem.vue';
 import { setOSSLink, downloadFileByUrl, toThousand, addStarForString } from '@/utils';
 import ConsumeRecordView from './components/ConsumeRecordView.vue';
+import RechargeRecordView from './components/RechargeRecordView.vue';
+import RewardGrantRecordView from './components/RewardGrantRecordView.vue';
+import WithdrawalRecordView from './components/WithdrawalRecordView.vue';
+import PaymentRecordView from './components/PaymentRecordView.vue';
 import { useQuery } from '@tanstack/vue-query';
 import { useUser } from '@/hooks';
 
@@ -99,6 +117,19 @@
 const { user } = useUser();
 const state = reactive({ ...BaseState });
 
+const sceneOne = computed(() => {
+  return !userDetail.value?.suportPlatRecharge && !userDetail.value?.suportWithDraw;
+});
+const sceneTwo = computed(() => {
+  return !userDetail.value?.suportPlatRecharge && userDetail.value?.suportWithDraw;
+});
+const sceneThree = computed(() => {
+  return userDetail.value?.suportPlatRecharge && !userDetail.value?.suportWithDraw;
+});
+const sceneFour = computed(() => {
+  return userDetail.value?.suportPlatRecharge && userDetail.value?.suportWithDraw;
+});
+
 const { isLoading, data: detail } = useQuery({
   queryKey: ['userServices/getUserAmountShow'],
   queryFn: async () => {
diff --git a/src/views/BalanceManage/components/PaymentRecordView.vue b/src/views/BalanceManage/components/PaymentRecordView.vue
new file mode 100644
index 0000000..94e1377
--- /dev/null
+++ b/src/views/BalanceManage/components/PaymentRecordView.vue
@@ -0,0 +1,118 @@
+<template>
+  <LoadingLayout :loading="state.loading">
+    <AppContainer>
+      <Table v-bind="{ ...proTableProps, ...columnsProps }">
+        <template #operationBtn-checkBtn="{ data, row }">
+          <PreviewBtnV2
+            class="pro-table-operation-btn"
+            :url="convertApi2FormUrlBySeparator(row.financeToFileUrl ?? '')"
+            preview-btn-text="鏌ョ湅鍑瘉"
+          />
+        </template>
+      </Table>
+    </AppContainer>
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import { AppContainer, useTable, PreviewBtnV2 } from '@bole-core/components';
+import { OrderInputType } from '@bole-core/core';
+import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
+import { FinanceStatusEnum, FinanceStatusEnumText } from '@/constants';
+import { useDefineColumns, useUser } from '@/hooks';
+import { convertApi2FormUrlBySeparator } from '@/utils';
+
+defineOptions({
+  name: 'PaymentRecordView',
+});
+
+const columnsProps = useDefineColumns({
+  columns: [
+    {
+      id: '1',
+      enCode: 'financeToTime',
+      name: '鎷ㄤ粯鏃堕棿',
+    },
+    {
+      id: '2',
+      enCode: 'financeToAmount',
+      name: '鎷ㄤ粯閲戦',
+    },
+    {
+      id: '3',
+      enCode: 'batchNo',
+      name: '鎷ㄤ粯鎵规',
+    },
+    {
+      id: '4',
+      enCode: 'applyMonth',
+      name: '鎷ㄤ粯鏈堜唤',
+    },
+    {
+      id: '5',
+      enCode: 'financeToStatus',
+      name: '鎷ㄤ粯鐘舵��',
+    },
+  ],
+  operationBtns: [
+    {
+      data: {
+        enCode: 'checkBtn',
+        name: '鏌ョ湅鍑瘉',
+      },
+    },
+  ],
+});
+
+const { userDetail } = useUser();
+const BaseState = {
+  loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.QueryParkCustomerBountyApplyInput = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+        id: userDetail.value?.userId ?? '',
+      };
+      let res = await parkBountyApplyServices.getParkCustomerBountyFinanceList(params, {
+        showLoading: !state.loading,
+      });
+
+      return res;
+    } catch (error) {}
+  },
+  {
+    defaultExtraParams: {
+      orderInput: [{ property: 'financeToTime', order: OrderInputType.Desc }],
+    },
+    columnsRenderProps: {
+      financeToStatus: { type: 'enum', valueEnum: FinanceStatusEnumText },
+      financeToTime: { type: 'date', format: 'YYYY-MM-DD' },
+      applyMonth: { type: 'date', format: 'YYYY骞碝M鏈�' },
+      financeToAmount: { type: 'money' },
+    },
+  }
+);
+
+onMounted(async () => {
+  await getList();
+  state.loading = false;
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/BalanceManage/components/RechargeRecordView.vue b/src/views/BalanceManage/components/RechargeRecordView.vue
index 21c2153..1db603d 100644
--- a/src/views/BalanceManage/components/RechargeRecordView.vue
+++ b/src/views/BalanceManage/components/RechargeRecordView.vue
@@ -35,14 +35,14 @@
   defineOperationBtns,
 } from '@bole-core/components';
 import { OrderInputType } from '@bole-core/core';
-// import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
+import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
 import { useUser } from '@/hooks';
-// import {
-//   EnterprisePrechargeInComeStatusEnum,
-//   EnterprisePrechargeInComeStatusEnumText,
-//   EnterpriseRechargeStatusEnum,
-//   EnterpriseRechargeStatusEnumText,
-// } from '@/constants';
+import {
+  EnterprisePrechargeInComeStatusEnum,
+  EnterprisePrechargeInComeStatusEnumText,
+  EnterpriseRechargeStatusEnum,
+  EnterpriseRechargeStatusEnumText,
+} from '@/constants';
 import { convertApi2FormUrlBySeparator } from '@/utils';
 
 defineOptions({
diff --git a/src/views/BalanceManage/components/WithdrawalRecordView.vue b/src/views/BalanceManage/components/WithdrawalRecordView.vue
new file mode 100644
index 0000000..78d4948
--- /dev/null
+++ b/src/views/BalanceManage/components/WithdrawalRecordView.vue
@@ -0,0 +1,139 @@
+<template>
+  <LoadingLayout :loading="state.loading">
+    <AppContainer>
+      <Table v-bind="{ ...proTableProps, ...columnsProps }">
+        <template #checkStatus="{ data, row }">
+          <div style="display: flex; justify-content: center; align-items: center">
+            {{ EnterpriseRechargeStatusEnumTextWithdrawal[row.checkStatus] }}
+            <el-tooltip
+              placement="top"
+              v-if="row.checkStatus === EnterpriseRechargeStatusEnum.CheckReject && row.checkRemark"
+              :content="row.checkRemark"
+            >
+              <el-icon color="#ff0000"><WarningFilled /></el-icon>
+            </el-tooltip>
+          </div>
+        </template>
+        <template #operationBtn-checkBtn="{ data, row }">
+          <PreviewBtnV2
+            class="pro-table-operation-btn"
+            :url="convertApi2FormUrlBySeparator(row.checkFileUrl ?? '')"
+            preview-btn-text="鏌ョ湅鍑瘉"
+          />
+        </template>
+      </Table>
+    </AppContainer>
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import { AppContainer, useTable, PreviewBtnV2, TextOverTooltip } from '@bole-core/components';
+import { OrderInputType } from '@bole-core/core';
+import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
+import { useDefineColumns, useUser } from '@/hooks';
+import { convertApi2FormUrlBySeparator } from '@/utils';
+import {
+  EnterpriseRechargeStatusEnumTextWithdrawal,
+  EnterpriseRechargeStatusEnum,
+} from '@/constants';
+
+defineOptions({
+  name: 'WithdrawalRecordView',
+});
+
+const columnsProps = useDefineColumns({
+  columns: [
+    {
+      id: '1',
+      enCode: 'creationTime',
+      name: '鐢宠鏃堕棿',
+    },
+    {
+      id: '2',
+      enCode: 'amount',
+      name: '鎻愮幇閲戦',
+    },
+    {
+      id: '3',
+      enCode: 'checkStatus',
+      name: '瀹℃牳鐘舵��',
+    },
+    {
+      id: '4',
+      enCode: 'checkTime',
+      name: '瀹℃牳鏃堕棿',
+    },
+    {
+      id: '5',
+      enCode: 'remainAmount',
+      name: '璧勯噾浣欓',
+    },
+  ],
+  operationBtns: [
+    {
+      data: {
+        enCode: 'checkBtn',
+        name: '鏌ョ湅鍑瘉',
+      },
+    },
+  ],
+});
+
+const route = useRoute();
+const router = useRouter();
+const id = route.params.id as string;
+const BaseState = {
+  loading: true,
+};
+
+const state = reactive({ ...BaseState });
+const { userDetail } = useUser();
+
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetEnterpriseDrawWithListInput = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+      };
+      let res = await parkBountyApplyServices.getEnterpriseDrawWithList(params, {
+        showLoading: !state.loading,
+      });
+      return res;
+    } catch (error) {}
+  },
+  {
+    defaultExtraParams: {
+      orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
+    },
+    columnsRenderProps: {
+      creationTime: { type: 'date', format: 'YYYY-MM-DD' },
+      checkTime: { type: 'date', format: 'YYYY-MM-DD' },
+      amount: { type: 'money' },
+      remainAmount: { type: 'money' },
+      checkStatus: { type: 'enum', valueEnum: EnterpriseRechargeStatusEnumTextWithdrawal },
+    },
+  }
+);
+
+onMounted(async () => {
+  await getList();
+  state.loading = false;
+});
+
+defineExpose({
+  getList,
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>

--
Gitblit v1.9.1