From 82d081dd2f375e2488b823d42dd4ae4ae63deded Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 17 十月 2025 14:28:43 +0800
Subject: [PATCH] feat: 1.2.0.1

---
 /dev/null                                                 |  164 -----------------------
 src/views/FinanceManage/EnterpriseBalanceManage.vue       |  128 ++++++++++++++++++
 src/views/FinanceManage/EnterpriseBalanceManageDetail.vue |   87 ++++++-----
 3 files changed, 174 insertions(+), 205 deletions(-)

diff --git a/src/views/FinanceManage/BalanceManageList.vue b/src/views/FinanceManage/BalanceManageList.vue
deleted file mode 100644
index fffc33a..0000000
--- a/src/views/FinanceManage/BalanceManageList.vue
+++ /dev/null
@@ -1,164 +0,0 @@
-<template>
-  <LoadingLayout :loading="state.loading">
-    <AppContainer>
-      <ProTableQueryFilterBar @on-reset="reset">
-        <template #query>
-          <QueryFilterItem>
-            <FieldDatePicker
-              v-model="extraParamState.time"
-              type="daterange"
-              range-separator="~"
-              start-placeholder="璧峰鏃ユ湡"
-              end-placeholder="鎴鏃ユ湡"
-              clearable
-              @change="getList()"
-              tooltipContent="鐢宠鏃堕棿"
-            ></FieldDatePicker>
-          </QueryFilterItem>
-          <QueryFilterItem tip-content="鎻愮幇鐘舵��">
-            <FieldRadio
-              v-model="extraParamState.status"
-              :value-enum="[]"
-              buttonStyle
-              showAllBtn
-              @change="getList()"
-            />
-          </QueryFilterItem>
-          <QueryFilterItem>
-            <SearchInput
-              v-model="extraParamState.keywords"
-              style="width: 260px"
-              placeholder="濮撳悕/鐢佃瘽/韬唤璇佸彿"
-              @on-click-search="getList"
-            >
-            </SearchInput>
-          </QueryFilterItem>
-        </template>
-      </ProTableQueryFilterBar>
-      <ProTableV2
-        v-bind="proTableProps"
-        :columns="BalanceManageColumns"
-        :operationBtns="operationBtns"
-      >
-      </ProTableV2>
-    </AppContainer>
-  </LoadingLayout>
-</template>
-
-<script setup lang="ts">
-import {
-  ProTableQueryFilterBar,
-  ProTableV2,
-  SearchInput,
-  LoadingLayout,
-  AppContainer,
-  QueryFilterItem,
-  useTable,
-  useFormDialog,
-  defineOperationBtns,
-  FieldDatePicker,
-  FieldRadio,
-} from '@bole-core/components';
-import * as userServices from '@/services/api/user';
-import { BalanceManageColumns } from './constants';
-import { ModelValueType } from 'element-plus';
-
-defineOptions({
-  name: 'BalanceManageList',
-});
-
-const operationBtns = defineOperationBtns([
-  {
-    data: {
-      enCode: 'rechargeBtn',
-      name: '鍏呭��',
-    },
-    emits: {
-      onClick: (role) => openDialog(role),
-    },
-  },
-  {
-    data: {
-      enCode: 'detailBtn',
-      name: '璇︽儏',
-    },
-    emits: {
-      onClick: (role) => goDetail(role),
-    },
-  },
-]);
-
-const router = useRouter();
-const BaseState = {
-  loading: true,
-};
-
-const state = reactive({ ...BaseState });
-
-onMounted(async () => {
-  await getList();
-  state.loading = false;
-});
-
-const {
-  getDataSource: getList,
-  proTableProps,
-  paginationState,
-  extraParamState,
-  reset,
-} = useTable(
-  async ({ pageIndex, pageSize }, extraParamState) => {
-    try {
-      let params: API.GetPersonalUserWalletBalancesQuery = {
-        pageModel: {
-          rows: pageSize,
-          page: pageIndex,
-          orderInput: extraParamState.orderInput,
-        },
-        keywords: extraParamState.keywords,
-      };
-
-      let res = await userServices.getPersonalUserWalletBalances(params, {
-        showLoading: !state.loading,
-      });
-      return res;
-    } catch (error) {}
-  },
-  {
-    defaultExtraParams: {
-      keywords: '',
-      status: '',
-      time: [] as unknown as ModelValueType,
-      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
-    },
-    columnsRenderProps: {
-      balance: { type: 'money' },
-    },
-  }
-);
-
-const { dialogProps, handleEdit, editForm } = useFormDialog({
-  defaultFormParams: {
-    id: '',
-    status: '',
-    time: '',
-  },
-});
-
-function openDialog(row) {
-  handleEdit({
-    id: row.id,
-    status: '',
-    time: '',
-  });
-}
-
-function goDetail(row) {
-  router.push({
-    name: 'BalanceManageDetail',
-    params: {
-      id: row?.id ?? '',
-    },
-  });
-}
-</script>
diff --git a/src/views/FinanceManage/EnterpriseBalanceManage.vue b/src/views/FinanceManage/EnterpriseBalanceManage.vue
new file mode 100644
index 0000000..1b860ed
--- /dev/null
+++ b/src/views/FinanceManage/EnterpriseBalanceManage.vue
@@ -0,0 +1,128 @@
+<template>
+  <LoadingLayout :loading="state.loading">
+    <AppContainer>
+      <ProTableV2
+        v-bind="proTableProps"
+        :columns="BalanceManageColumns"
+        :operationBtns="operationBtns"
+      >
+      </ProTableV2>
+    </AppContainer>
+    <RechargeEnterpriseWalletDialog v-bind="dialogRechargeProps" />
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+  ProTableV2,
+  LoadingLayout,
+  AppContainer,
+  useTable,
+  useFormDialog,
+  defineOperationBtns,
+} from '@bole-core/components';
+import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
+import { BalanceManageColumns } from './constants';
+import RechargeEnterpriseWalletDialog from '@/views/ServiceChargeManage/components/RechargeEnterpriseWalletDialog.vue';
+import { EnumEnterpriseWalletAccess, EnumEnterpriseWalletAccessText } from '@/constants';
+
+defineOptions({
+  name: 'EnterpriseBalanceManage',
+});
+
+const operationBtns = defineOperationBtns([
+  {
+    data: {
+      enCode: 'rechargeBtn',
+      name: '鍏呭��',
+    },
+    emits: {
+      onClick: (role) => openDialog(role),
+    },
+    extraProps: {
+      hide: (role: API.GetEnterpriseWalletBalancesQueryResultItem) =>
+        role.access !== EnumEnterpriseWalletAccess.Alipay,
+    },
+  },
+  {
+    data: {
+      enCode: 'detailBtn',
+      name: '璇︽儏',
+    },
+    emits: {
+      onClick: (role) => goDetail(role),
+    },
+  },
+]);
+
+const router = useRouter();
+const BaseState = {
+  loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+onMounted(async () => {
+  await getList();
+  state.loading = false;
+});
+
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+  reset,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetEnterpriseWalletBalancesQuery = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+      };
+
+      let res = await enterpriseWalletServices.getEnterpriseWalletBalances(params, {
+        showLoading: !state.loading,
+      });
+      return res;
+    } catch (error) {}
+  },
+  {
+    defaultExtraParams: {
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+    },
+    columnsRenderProps: {
+      access: { type: 'enum', valueEnum: EnumEnterpriseWalletAccessText },
+      balance: { type: 'money' },
+    },
+  }
+);
+
+const {
+  dialogProps: dialogRechargeProps,
+  handleAdd: handleRechargeAdd,
+  editForm: rechargeEditForm,
+} = useFormDialog({
+  defaultFormParams: {
+    access: EnumEnterpriseWalletAccess.Alipay,
+    amount: null as number,
+    remark: '',
+  },
+});
+
+function openDialog(row) {
+  handleRechargeAdd();
+}
+
+function goDetail(row: API.GetEnterpriseWalletBalancesQueryResultItem) {
+  router.push({
+    name: 'EnterpriseBalanceManageDetail',
+    params: {
+      id: row?.id ?? '',
+    },
+  });
+}
+</script>
diff --git a/src/views/FinanceManage/BalanceManageDetail.vue b/src/views/FinanceManage/EnterpriseBalanceManageDetail.vue
similarity index 63%
rename from src/views/FinanceManage/BalanceManageDetail.vue
rename to src/views/FinanceManage/EnterpriseBalanceManageDetail.vue
index 5f22726..5028937 100644
--- a/src/views/FinanceManage/BalanceManageDetail.vue
+++ b/src/views/FinanceManage/EnterpriseBalanceManageDetail.vue
@@ -1,22 +1,24 @@
 <template>
-  <LoadingLayout :loading="isLoading">
+  <LoadingLayout :loading="state.loading">
     <AppContainer>
       <ChunkCell title="璐︽埛淇℃伅">
         <ProForm :model="form" ref="formRef" label-width="120px" :is-read="true">
           <ProFormCol>
             <ProFormColItem :span="8">
-              <ProFormItemV2 label="璐︽埛浣欓:" prop="name">
-                <ProFormInputNumber v-model="form.name" format-value="money"> </ProFormInputNumber>
+              <ProFormItemV2 label="璐︽埛浣欓:" prop="balance">
+                <ProFormInputNumber v-model="form.balance" format-value="money">
+                </ProFormInputNumber>
               </ProFormItemV2>
             </ProFormColItem>
             <ProFormColItem :span="8">
-              <ProFormItemV2 label="璐︽埛绫诲瀷:" prop="settlementAmount">
-                <ProFormSelect v-model="form.name" :valueEnum="[]"> </ProFormSelect>
+              <ProFormItemV2 label="璐︽埛绫诲瀷:" prop="access">
+                <ProFormSelect v-model="form.access" :valueEnum="EnumEnterpriseWalletAccessText">
+                </ProFormSelect>
               </ProFormItemV2>
             </ProFormColItem>
             <ProFormColItem :span="8">
-              <ProFormItemV2 label="鎴峰彿:" prop="actualSettlementAmount">
-                <ProFormText v-model.trim="form.name"> </ProFormText>
+              <ProFormItemV2 label="鎴峰彿:" prop="identity">
+                <ProFormText v-model.trim="form.identity"> </ProFormText>
               </ProFormItemV2>
             </ProFormColItem>
           </ProFormCol>
@@ -27,7 +29,7 @@
           <template #query>
             <QueryFilterItem>
               <FieldDatePicker
-                v-model="extraParamState.time"
+                v-model="extraParamState.creationTime"
                 type="daterange"
                 range-separator="~"
                 start-placeholder="璧峰鏃ユ湡"
@@ -46,6 +48,10 @@
           v-bind="proTableProps"
           :columns="BalanceManageDetailColumns"
           :show-operation-column="false"
+          :auto-height="false"
+          :table-props="{
+            height: '400px',
+          }"
         >
         </ProTableV2>
       </ChunkCell>
@@ -71,24 +77,25 @@
   ProFormSelect,
 } from '@bole-core/components';
 import { BalanceManageDetailColumns } from './constants';
-import { useQuery } from '@tanstack/vue-query';
+import { EnumWalletTransactionStatusText, EnumEnterpriseWalletAccessText } from '@/constants';
 import * as taskServices from '@/services/api/task';
-import * as taskUserServices from '@/services/api/taskUser';
 import * as userServices from '@/services/api/user';
 import { Message } from '@bole-core/core';
-import { downloadFileByUrl, setOSSLink } from '@/utils';
+import { downloadFileByUrl, format, setOSSLink } from '@/utils';
 import _ from 'lodash';
 import { ModelValueType } from 'element-plus';
 
 defineOptions({
-  name: 'BalanceManageDetail',
+  name: 'EnterpriseBalanceManageDetail',
 });
 
 const route = useRoute();
 const id = (route.params.id as string) ?? '';
 
 const form = reactive({
-  name: '',
+  identity: '',
+  access: '' as any as EnumEnterpriseWalletAccess,
+  balance: 0,
 });
 
 const BaseState = {
@@ -96,26 +103,6 @@
 };
 
 const state = reactive({ ...BaseState });
-
-const { isLoading, refetch } = useQuery({
-  queryKey: ['taskUserServices/getSettlementTaskUsers', id],
-  queryFn: async () => {
-    return await taskUserServices.getSettlementTaskUsers(
-      { id: id },
-      {
-        showLoading: false,
-      }
-    );
-  },
-  placeholderData: () => ({} as API.GetSettlementTaskUsersQueryResult),
-  onSuccess(res) {
-    if (res?.detail) {
-      form.name = res?.detail?.name;
-    }
-    getList();
-  },
-  enabled: !!id,
-});
 
 const {
   getDataSource: getList,
@@ -126,27 +113,40 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetPersonalUserWalletBalancesQuery = {
+      let params: API.GetPersonalUserTransactionsQuery = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
+        createdTimeStart: format(extraParamState.creationTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+        createdTimeEnd: format(extraParamState.creationTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+        enterpriseWalletId: id,
       };
-
-      let res = await userServices.getPersonalUserWalletBalances(params, {
-        showLoading: !state.loading,
-      });
+      let res = await userServices.getPersonalUserTransactions(params);
+      if (res.objectData?.enterpriseWallet) {
+        form.identity = res.objectData.enterpriseWallet.identity;
+        form.access = res.objectData.enterpriseWallet.access;
+        form.balance = res.objectData.enterpriseWallet.balance;
+      }
       return res;
     } catch (error) {}
   },
   {
     defaultExtraParams: {
-      time: [] as unknown as ModelValueType,
+      creationTime: [] as unknown as ModelValueType,
       orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
     },
     columnsRenderProps: {
-      balance: { type: 'money' },
+      transDate: { type: 'date' },
+      sendTime: { type: 'date' },
+      amount: { type: 'money' },
+      transactionStatus: { type: 'enum', valueEnum: EnumWalletTransactionStatusText },
+      ereceiptDownloadOssUrl: {
+        type: 'url',
+        formatter: (row: API.GetPersonalUserTransactionsQueryResultItem) =>
+          row.ereceiptDownloadOssUrl ? setOSSLink(row.ereceiptDownloadOssUrl) : '',
+      },
     },
   }
 );
@@ -163,13 +163,18 @@
       };
       let res = await taskServices.exportTaskSettlementOrderRosters(params);
       if (res) {
-        downloadFileByUrl(setOSSLink(res), `${form.name}`);
+        downloadFileByUrl(setOSSLink(res));
       }
     } catch (error) {}
   },
   1000,
   { leading: true, trailing: false }
 );
+
+onMounted(() => {
+  state.loading = false;
+  getList();
+});
 </script>
 
 <style lang="scss" scoped>

--
Gitblit v1.9.1