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