From 81adf03a60f6b4452be4e3ad1f9e3915e0c78bf6 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期三, 17 九月 2025 17:25:00 +0800
Subject: [PATCH] Merge branch 'dev-v1.1' of http://120.26.58.240:8888/r/flexJobAdminBClient into dev-v1.1
---
src/views/ServiceChargeManage/constants/columns.ts | 11
src/views/ServiceChargeManage/ServiceChargeDetail.vue | 2
src/views/ServiceChargeManage/components/BalanceDetailDialog.vue | 88 ++++-
src/views/FinanceManage/components/DistributionDetailView.vue | 36 +-
src/hooks/index.ts | 1
src/views/FinanceManage/constants/columns.ts | 18
src/views/ServiceChargeManage/components/FinanceDetailDialog.vue | 106 ++++++
src/views/WithdrawManage/components/WithdrawalDetailDialog.vue | 145 ++++++++
src/views/WithdrawManage/constants/index.ts | 1
src/views/FinanceManage/components/UsageDetailView.vue | 28 -
src/views/FinanceManage/FinanceManage.vue | 4
auto-imports.d.ts | 20 +
src/components/Table/PortraitTableWithAttachment.vue | 72 ++++
src/router/index.ts | 58 ++
src/constants/apiEnum.ts | 12
src/constants/index.ts | 2
src/views/WithdrawManage/constants/columns.ts | 39 ++
src/constants/task.ts | 6
.eslintrc-auto-import.json | 9
src/services/api/typings.d.ts | 51 ++
src/views/ServiceChargeManage/ServiceChargeManage.vue | 2
src/views/WithdrawManage/WithdrawManageList.vue | 148 ++++++++
src/constants/common.ts | 9
src/views/ServiceChargeManage/BalanceManage.vue | 33 +
src/hooks/portraitTable.ts | 50 ++
src/views/EmploymentManage/components/CheckManageDialog.vue | 4
src/constants/finance.ts | 13
27 files changed, 852 insertions(+), 116 deletions(-)
diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json
index 5760c41..76c9c1f 100644
--- a/.eslintrc-auto-import.json
+++ b/.eslintrc-auto-import.json
@@ -5,6 +5,7 @@
"AreaType": true,
"CategoryCode": true,
"CertificateTypeCodeEnum": true,
+ "CommonAnnexTableColumns": true,
"Component": true,
"ComponentPublicInstance": true,
"ComputedRef": true,
@@ -93,7 +94,9 @@
"EnumUserType": true,
"EnumUserTypeText": true,
"EnumUserWalletTransactionType": true,
+ "EnumUserWalletTransactionTypeText": true,
"EnumWalletTransactionStatus": true,
+ "EnumWalletTransactionStatusText": true,
"ExtractDefaultPropTypes": true,
"ExtractPropTypes": true,
"ExtractPublicPropTypes": true,
@@ -132,6 +135,8 @@
"OssUserSign": true,
"PropType": true,
"Ref": true,
+ "SettlementReceiveStatus": true,
+ "SettlementReceiveStatusText": true,
"Slot": true,
"Slots": true,
"SubModuleKey": true,
@@ -143,6 +148,8 @@
"ThemeColorName": true,
"ThemeColors": true,
"ThemeColorsType": true,
+ "UsePortraitTableColumnsItem": true,
+ "UsePortraitTableOptions": true,
"VNode": true,
"WelfareCodeEnum": true,
"WritableComputedRef": true,
@@ -232,6 +239,8 @@
"useModel": true,
"useOmit": true,
"useOmitProps": true,
+ "usePortraitTable": true,
+ "usePortraitTableWithAttachment": true,
"useResizeHander": true,
"useRoute": true,
"useRouteView": true,
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
index 4c4aadc..44f22bb 100644
--- a/auto-imports.d.ts
+++ b/auto-imports.d.ts
@@ -11,7 +11,7 @@
const AreaType: typeof import('./src/constants/enum')['AreaType']
const CategoryCode: typeof import('./src/constants/dic')['CategoryCode']
const CertificateTypeCodeEnum: typeof import('./src/constants/dic')['CertificateTypeCodeEnum']
- const CommonAnnexTableColumns: typeof import('@/constants')['CommonAnnexTableColumns']
+ const CommonAnnexTableColumns: typeof import('./src/constants/common')['CommonAnnexTableColumns']
const EditorType: typeof import('./src/constants/editor')['EditorType']
const EditorTypeText: typeof import('./src/constants/editor')['EditorTypeText']
const EducationCodeEnum: typeof import('./src/constants/dic')['EducationCodeEnum']
@@ -101,7 +101,9 @@
const EnumUserType: typeof import('./src/constants/apiEnum')['EnumUserType']
const EnumUserTypeText: typeof import('./src/constants/apiEnumText')['EnumUserTypeText']
const EnumUserWalletTransactionType: typeof import('./src/constants/apiEnum')['EnumUserWalletTransactionType']
+ const EnumUserWalletTransactionTypeText: typeof import('./src/constants/finance')['EnumUserWalletTransactionTypeText']
const EnumWalletTransactionStatus: typeof import('./src/constants/apiEnum')['EnumWalletTransactionStatus']
+ const EnumWalletTransactionStatusText: typeof import('./src/constants/finance')['EnumWalletTransactionStatusText']
const FastButtonMap: typeof import('./src/constants/module')['FastButtonMap']
const FastColumnList: typeof import('./src/constants/module')['FastColumnList']
const FastDataButtonList: typeof import('./src/constants/module')['FastDataButtonList']
@@ -131,6 +133,8 @@
const OssRich: typeof import('./src/constants/oss')['OssRich']
const OssUser: typeof import('./src/constants/oss')['OssUser']
const OssUserSign: typeof import('./src/constants/oss')['OssUserSign']
+ const SettlementReceiveStatus: typeof import('./src/constants/apiEnum')['SettlementReceiveStatus']
+ const SettlementReceiveStatusText: typeof import('./src/constants/task')['SettlementReceiveStatusText']
const SubModuleKey: typeof import('./src/constants/module')['SubModuleKey']
const SubModuleTitle: typeof import('./src/constants/module')['SubModuleTitle']
const SubModuleType: typeof import('./src/constants/module')['SubModuleType']
@@ -224,6 +228,8 @@
const useModel: typeof import('vue')['useModel']
const useOmit: typeof import('./src/hooks/help')['useOmit']
const useOmitProps: typeof import('./src/hooks/help')['useOmitProps']
+ const usePortraitTable: typeof import('./src/hooks/portraitTable')['usePortraitTable']
+ const usePortraitTableWithAttachment: typeof import('./src/hooks/portraitTable')['usePortraitTableWithAttachment']
const useResizeHander: typeof import('./src/hooks/useResizeHander')['useResizeHander']
const useRoute: typeof import('vue-router')['useRoute']
const useRouteView: typeof import('./src/hooks/useRouteView')['useRouteView']
@@ -248,7 +254,7 @@
export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
import('vue')
// @ts-ignore
- export type { EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton } from './src/constants/apiEnum'
+ export type { EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus, EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus } from './src/constants/apiEnum'
import('./src/constants/apiEnum')
// @ts-ignore
export type { CategoryCode, IdentityCodeEnum, EducationCodeEnum, CertificateTypeCodeEnum, WelfareCodeEnum } from './src/constants/dic'
@@ -274,6 +280,9 @@
// @ts-ignore
export type { GlobalEvent, GlobalEventListener, GlobalEventContext } from './src/hooks/useEvent'
import('./src/hooks/useEvent')
+ // @ts-ignore
+ export type { UsePortraitTableColumnsItem, UsePortraitTableOptions } from './src/hooks/portraitTable'
+ import('./src/hooks/portraitTable')
}
// for vue template auto import
@@ -286,6 +295,7 @@
readonly AreaType: UnwrapRef<typeof import('./src/constants/enum')['AreaType']>
readonly CategoryCode: UnwrapRef<typeof import('./src/constants/dic')['CategoryCode']>
readonly CertificateTypeCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['CertificateTypeCodeEnum']>
+ readonly CommonAnnexTableColumns: UnwrapRef<typeof import('./src/constants/common')['CommonAnnexTableColumns']>
readonly EditorType: UnwrapRef<typeof import('./src/constants/editor')['EditorType']>
readonly EditorTypeText: UnwrapRef<typeof import('./src/constants/editor')['EditorTypeText']>
readonly EducationCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['EducationCodeEnum']>
@@ -370,7 +380,9 @@
readonly EnumUserType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserType']>
readonly EnumUserTypeText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumUserTypeText']>
readonly EnumUserWalletTransactionType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserWalletTransactionType']>
+ readonly EnumUserWalletTransactionTypeText: UnwrapRef<typeof import('./src/constants/finance')['EnumUserWalletTransactionTypeText']>
readonly EnumWalletTransactionStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumWalletTransactionStatus']>
+ readonly EnumWalletTransactionStatusText: UnwrapRef<typeof import('./src/constants/finance')['EnumWalletTransactionStatusText']>
readonly FastButtonMap: UnwrapRef<typeof import('./src/constants/module')['FastButtonMap']>
readonly FastColumnList: UnwrapRef<typeof import('./src/constants/module')['FastColumnList']>
readonly FastDataButtonList: UnwrapRef<typeof import('./src/constants/module')['FastDataButtonList']>
@@ -397,6 +409,8 @@
readonly OssRich: UnwrapRef<typeof import('./src/constants/oss')['OssRich']>
readonly OssUser: UnwrapRef<typeof import('./src/constants/oss')['OssUser']>
readonly OssUserSign: UnwrapRef<typeof import('./src/constants/oss')['OssUserSign']>
+ readonly SettlementReceiveStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['SettlementReceiveStatus']>
+ readonly SettlementReceiveStatusText: UnwrapRef<typeof import('./src/constants/task')['SettlementReceiveStatusText']>
readonly SubModuleKey: UnwrapRef<typeof import('./src/constants/module')['SubModuleKey']>
readonly SubModuleTitle: UnwrapRef<typeof import('./src/constants/module')['SubModuleTitle']>
readonly SubModuleType: UnwrapRef<typeof import('./src/constants/module')['SubModuleType']>
@@ -489,6 +503,8 @@
readonly useModel: UnwrapRef<typeof import('vue')['useModel']>
readonly useOmit: UnwrapRef<typeof import('./src/hooks/help')['useOmit']>
readonly useOmitProps: UnwrapRef<typeof import('./src/hooks/help')['useOmitProps']>
+ readonly usePortraitTable: UnwrapRef<typeof import('./src/hooks/portraitTable')['usePortraitTable']>
+ readonly usePortraitTableWithAttachment: UnwrapRef<typeof import('./src/hooks/portraitTable')['usePortraitTableWithAttachment']>
readonly useResizeHander: UnwrapRef<typeof import('./src/hooks/useResizeHander')['useResizeHander']>
readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']>
readonly useRouteView: UnwrapRef<typeof import('./src/hooks/useRouteView')['useRouteView']>
diff --git a/src/components/Table/PortraitTableWithAttachment.vue b/src/components/Table/PortraitTableWithAttachment.vue
new file mode 100644
index 0000000..cefb234
--- /dev/null
+++ b/src/components/Table/PortraitTableWithAttachment.vue
@@ -0,0 +1,72 @@
+<template>
+ <PortraitTable v-bind="portraitTableProps" :label-width="labelWidth"> </PortraitTable>
+ <div class="enclosure-list-title">闄勪欢鍒楄〃</div>
+ <ProTableV2
+ :table-data="annexList"
+ :columns="CommonAnnexTableColumns"
+ :operation-btns="operationListBtns"
+ :show-pagination="false"
+ :show-no-data="false"
+ :auto-height="false"
+ :show-table-column-setting="false"
+ :table-props="{ maxHeight: '400px' }"
+ :column-render-map="columnsRenderProps"
+ >
+ </ProTableV2>
+</template>
+
+<script setup lang="ts" generic="TAnnexItem">
+import { downloadFileByUrl } from '@bole-core/core';
+import { CommonAnnexTableColumns } from '@/constants';
+import { ProTableV2, ProTableV2Props } from '@bole-core/components';
+
+defineOptions({
+ name: 'PortraitTableWithAttachment',
+});
+
+type Props = {
+ annexList: TAnnexItem[];
+ customDownLoad?: (row: TAnnexItem) => Promise<any>;
+ labelWidth?: string;
+ portraitTableProps: any;
+ columnsRenderProps?: ProTableV2Props['columnRenderMap'];
+ downloadFileKey?: keyof TAnnexItem;
+};
+
+const props = withDefaults(defineProps<Props>(), {
+ labelWidth: '180px',
+ columnsRenderProps: () => ({}),
+ downloadFileKey: 'url' as any,
+});
+
+const operationListBtns = [
+ {
+ data: {
+ enCode: 'downloadBtn',
+ name: '涓嬭浇',
+ },
+ emits: {
+ onClick: (row) => handleDownload(row),
+ },
+ },
+];
+
+function handleDownload(row: TAnnexItem) {
+ if (props.customDownLoad) {
+ props.customDownLoad(row);
+ } else {
+ downloadFileByUrl(row[props.downloadFileKey] as any);
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+
+.enclosure-list-title {
+ padding: 16px 0;
+ font-size: 14px;
+ color: getCssVar('text-color', 'primary');
+ line-height: 19px;
+}
+</style>
diff --git a/src/constants/apiEnum.ts b/src/constants/apiEnum.ts
index 0688d08..df166c7 100644
--- a/src/constants/apiEnum.ts
+++ b/src/constants/apiEnum.ts
@@ -417,6 +417,10 @@
InProcess = 20,
/**宸茬粨绠� */
Completed = 30,
+ /**閮ㄥ垎缁撶畻 */
+ Part = 40,
+ /**缁撶畻澶辫触 */
+ Fail = 50,
}
/** 浠诲姟瀹夋帓鐘舵�� */
@@ -566,3 +570,11 @@
/**宸插畬鎴� */
Completed = 20,
}
+
+/** 缁撶畻鍒拌处鐘舵�� */
+export enum SettlementReceiveStatus {
+ /**宸插埌璐� */
+ Completed = 10,
+ /**宸查��娆� */
+ Refunded = 20,
+}
diff --git a/src/constants/common.ts b/src/constants/common.ts
new file mode 100644
index 0000000..d2a756c
--- /dev/null
+++ b/src/constants/common.ts
@@ -0,0 +1,9 @@
+import { defineColumns } from '@bole-core/components';
+
+export const CommonAnnexTableColumns = defineColumns([
+ {
+ id: '1',
+ enCode: 'name',
+ name: '鏂囦欢鍚�',
+ },
+]);
diff --git a/src/constants/finance.ts b/src/constants/finance.ts
new file mode 100644
index 0000000..cee845d
--- /dev/null
+++ b/src/constants/finance.ts
@@ -0,0 +1,13 @@
+export const EnumUserWalletTransactionTypeText = {
+ [EnumUserWalletTransactionType.Income]: '鏀跺叆',
+ [EnumUserWalletTransactionType.Withdraw]: '鎻愮幇',
+};
+
+export const EnumWalletTransactionStatusText = {
+ [EnumWalletTransactionStatus.WaitSubmit]: '寰呮彁浜�',
+ [EnumWalletTransactionStatus.WaitPay]: '寰呮敮浠�',
+ [EnumWalletTransactionStatus.Dealing]: '澶勭悊涓�',
+ [EnumWalletTransactionStatus.Success]: '鎴愬姛',
+ [EnumWalletTransactionStatus.Refund]: '閫�绁�',
+ [EnumWalletTransactionStatus.Fail]: '澶辫触',
+};
diff --git a/src/constants/index.ts b/src/constants/index.ts
index f466a6b..e1c7625 100644
--- a/src/constants/index.ts
+++ b/src/constants/index.ts
@@ -14,3 +14,5 @@
export * from './enterpriseEmployee';
export * from './electronSign';
export * from './enterpriseWallet';
+export * from './finance';
+export * from './common';
diff --git a/src/constants/task.ts b/src/constants/task.ts
index 53fad8d..460cd3f 100644
--- a/src/constants/task.ts
+++ b/src/constants/task.ts
@@ -132,11 +132,17 @@
[EnumTaskSettlementOrderStatus.Wait]: '寰呬笂浼�',
[EnumTaskSettlementOrderStatus.Completed]: '宸蹭笂浼�',
};
+export const SettlementReceiveStatusText = {
+ [SettlementReceiveStatus.Completed]: '宸插埌璐�',
+ [SettlementReceiveStatus.Refunded]: '宸查��娆�',
+};
export const EnumTaskSettlementStatusText = {
[EnumTaskSettlementStatus.Wait]: '寰呯粨绠�',
[EnumTaskSettlementStatus.InProcess]: '缁撶畻涓�',
[EnumTaskSettlementStatus.Completed]: '宸茬粨绠�',
+ [EnumTaskSettlementStatus.Part]: '閮ㄥ垎缁撶畻',
+ [EnumTaskSettlementStatus.Fail]: '缁撶畻澶辫触',
};
export const EnumPersonalFreeTimeText = {
diff --git a/src/hooks/index.ts b/src/hooks/index.ts
index bf536bc..5460294 100644
--- a/src/hooks/index.ts
+++ b/src/hooks/index.ts
@@ -10,3 +10,4 @@
export * from './dic';
export * from './sign';
export * from './settlement';
+export * from './portraitTable';
diff --git a/src/hooks/portraitTable.ts b/src/hooks/portraitTable.ts
new file mode 100644
index 0000000..844586a
--- /dev/null
+++ b/src/hooks/portraitTable.ts
@@ -0,0 +1,50 @@
+import { ColumnsRenderProps } from '@bole-core/components';
+import { MaybeRef } from 'vue';
+
+export type UsePortraitTableColumnsItem<TData extends object = object> = ColumnsRenderProps & {
+ label?: string;
+ key?: keyof TData;
+};
+
+export type UsePortraitTableOptions<TData extends object> = {
+ data: Ref<TData>;
+ columns?: UsePortraitTableColumnsItem<TData>[];
+};
+
+export function usePortraitTable<TData extends object>(options: UsePortraitTableOptions<TData>) {
+ const portraitTableProps = computed(
+ () =>
+ ({
+ data: options.data.value,
+ columns: options.columns ?? [],
+ } as any)
+ );
+
+ return {
+ portraitTableProps,
+ };
+}
+
+type UsePortraitTableWithAttachmentOptions<
+ TData extends object,
+ TAnnexItem extends object = object
+> = UsePortraitTableOptions<TData> & {
+ annexList: Ref<TAnnexItem[]>;
+ columnsRenderProps?: { [key in keyof TAnnexItem]?: ColumnsRenderProps };
+};
+
+export function usePortraitTableWithAttachment<
+ TData extends object,
+ TAnnexItem extends object = object
+>(options: UsePortraitTableWithAttachmentOptions<TData, TAnnexItem>) {
+ const { annexList, columnsRenderProps } = options;
+ const { portraitTableProps } = usePortraitTable(options);
+
+ const portraitTableWithAttachmentProps = computed(() => ({
+ annexList: annexList.value,
+ portraitTableProps: portraitTableProps.value,
+ columnsRenderProps,
+ }));
+
+ return { portraitTableWithAttachmentProps };
+}
diff --git a/src/router/index.ts b/src/router/index.ts
index aa8aa80..93b9621 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -256,19 +256,19 @@
icon: 'home',
},
},
- // {
- // path: '/BalanceManage',
- // name: 'BalanceManage',
- // hidden: false,
- // alwaysShow: true,
- // component: () => import('@/views/ServiceChargeManage/BalanceManage.vue'),
- // meta: {
- // rank: 10042,
- // title: '浣欓绠$悊',
- // // rootMenu: true,
- // icon: 'home',
- // },
- // },
+ {
+ path: '/BalanceManage',
+ name: 'BalanceManage',
+ hidden: false,
+ alwaysShow: true,
+ component: () => import('@/views/ServiceChargeManage/BalanceManage.vue'),
+ meta: {
+ rank: 10042,
+ title: '浣欓绠$悊',
+ // rootMenu: true,
+ icon: 'home',
+ },
+ },
{
path: '/ServiceChargeDetail/:id',
name: 'ServiceChargeDetail',
@@ -312,6 +312,34 @@
},
],
},
+ // {
+ // path: '/WithdrawManage',
+ // redirect: 'noRedirect',
+ // component: Layout,
+ // hidden: false,
+ // alwaysShow: true,
+ // meta: {
+ // rank: 10060,
+ // title: '鎻愮幇绠$悊',
+ // rootMenu: true,
+ // icon: 'home',
+ // },
+ // children: [
+ // {
+ // path: '/WithdrawManageList',
+ // name: 'WithdrawManageList',
+ // hidden: false,
+ // alwaysShow: true,
+ // component: () => import('@/views/WithdrawManage/WithdrawManageList.vue'),
+ // meta: {
+ // rank: 10061,
+ // title: '鎻愮幇绠$悊',
+ // // rootMenu: true,
+ // icon: 'home',
+ // },
+ // },
+ // ],
+ // },
{
path: '/FinanceManage',
redirect: 'noRedirect',
@@ -319,7 +347,7 @@
hidden: false,
alwaysShow: true,
meta: {
- rank: 10060,
+ rank: 10070,
title: '璐㈠姟绠$悊',
rootMenu: true,
icon: 'home',
@@ -332,7 +360,7 @@
alwaysShow: true,
component: () => import('@/views/FinanceManage/FinanceManage.vue'),
meta: {
- rank: 10061,
+ rank: 10071,
title: '璐㈠姟绠$悊',
// rootMenu: true,
icon: 'home',
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index f72be6c..bde91c4 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -900,6 +900,10 @@
InProcess = 20,
/**宸茬粨绠� */
Completed = 30,
+ /**閮ㄥ垎缁撶畻 */
+ Part = 40,
+ /**缁撶畻澶辫触 */
+ Fail = 50,
}
enum EnumTaskStatus {
@@ -3286,6 +3290,7 @@
enterpriseSignContractTime?: string;
/** 鐢靛瓙鍚堝悓 */
contractUrl?: string;
+ createdTime?: string;
}
type GetEnterpriseLoginInfoQuery = Record<string, any>;
@@ -4123,6 +4128,8 @@
/** 鍒涘缓鏃堕棿-鎴 */
createdTimeEnd?: string;
type?: EnumUserWalletTransactionType;
+ /** 鐢ㄦ埛Id */
+ userId?: string;
pageModel?: PagedListQueryPageModel;
}
@@ -4145,6 +4152,13 @@
balance?: number;
/** 浼佷笟鍚嶇О */
enterpriseName?: string;
+ /** 浠诲姟鍚嶇О */
+ taskName?: string;
+ /** 缁撶畻鍗曞悕绉� */
+ settlementOrderName?: string;
+ settlementStatus?: EnumTaskSettlementStatus;
+ /** 缁撶畻鏃堕棿 */
+ settlementTime?: string;
/** 浠樻浜鸿处鎴� */
payerAccount?: string;
/** 浠樻浜哄悕绉� */
@@ -4185,6 +4199,12 @@
}
interface GetPersonalUserWalletBalancesQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetPersonalUserWalletBalancesQueryResultItem[];
+ }
+
+ interface GetPersonalUserWalletBalancesQueryResultItem {
/** 鐢ㄦ埛Id */
id?: string;
/** 濮撳悕 */
@@ -4195,12 +4215,7 @@
identity?: string;
/** 浣欓 */
balance?: number;
- pageModel?: PagedListQueryResultPageModel;
- /** 鏁版嵁 */
- data?: GetPersonalUserWalletBalancesQueryResultItem[];
}
-
- type GetPersonalUserWalletBalancesQueryResultItem = Record<string, any>;
interface GetResourceFieldsQueryResultItem {
/** 缂栧彿 */
@@ -4467,7 +4482,6 @@
identity?: string;
/** 鎵嬫満鍙� */
contactPhoneNumber?: string;
- settlementStatus?: EnumTaskSettlementStatus;
/** 鎵�灞為摱琛� */
bank?: string;
/** 寮�鎴锋敮琛屽悕绉� */
@@ -4478,6 +4492,8 @@
settlementAmount?: number;
/** 瀹炲彂閲戦 */
actualSettlementAmount?: number;
+ settlementReceiveStatus?: SettlementReceiveStatus;
+ settlementStatus?: EnumTaskSettlementStatus;
/** 缁撶畻鏃堕棿 */
settlementTime?: string;
}
@@ -5108,18 +5124,18 @@
name?: string;
/** 韬唤璇佸彿 */
identity?: string;
- /** 缁撶畻閲戦 */
- settlementAmount?: number;
- /** 瀹炲彂閲戦 */
- actualSettlementAmount?: number;
- /** 鏀舵璐︽埛 */
- receiveAccount?: string;
+ /** 鎵嬫満鍙� */
+ contactPhoneNumber?: string;
/** 鎵�灞為摱琛� */
bank?: string;
/** 寮�鎴锋敮琛屽悕绉� */
bankBranch?: string;
- /** 浠诲姟鍚嶇О */
- taskName?: string;
+ /** 鏀舵璐︽埛 */
+ receiveAccount?: string;
+ /** 缁撶畻閲戦 */
+ settlementAmount?: number;
+ /** 瀹炲彂閲戦 */
+ actualSettlementAmount?: number;
}
interface InviteElectronSignCommand {
@@ -5816,6 +5832,13 @@
hireStatus?: EnumTaskUserHireStatus;
}
+ enum SettlementReceiveStatus {
+ /**宸插埌璐� */
+ Completed = 10,
+ /**宸查��娆� */
+ Refunded = 20,
+ }
+
interface SetUserInfoRolesCommand {
/** 鐢ㄦ埛Id */
userInfoId?: string;
diff --git a/src/views/EmploymentManage/components/CheckManageDialog.vue b/src/views/EmploymentManage/components/CheckManageDialog.vue
index 6c82f86..e128516 100644
--- a/src/views/EmploymentManage/components/CheckManageDialog.vue
+++ b/src/views/EmploymentManage/components/CheckManageDialog.vue
@@ -155,7 +155,7 @@
},
{
defaultExtraParams: {
- orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ orderInput: [{ property: 'date', order: EnumPagedListOrder.Desc }],
},
queryKey: ['taskCheckReceiveServices/getCheckReceiveTaskUserSubmits'],
columnsRenderProps: {
@@ -167,7 +167,7 @@
type: 'url',
//@ts-ignore
formatter: (row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) =>
- (row.files ?? []).map((x) => setOSSLink(x)),
+ row.files?.length > 0 && (row.files ?? []).map((x) => setOSSLink(x)),
showDownloadBtn: false,
},
},
diff --git a/src/views/FinanceManage/FinanceManage.vue b/src/views/FinanceManage/FinanceManage.vue
index 9d5dfeb..4396f5b 100644
--- a/src/views/FinanceManage/FinanceManage.vue
+++ b/src/views/FinanceManage/FinanceManage.vue
@@ -4,9 +4,9 @@
<ProTabPane lazy label="鍙戞斁鏄庣粏" :name="FinanceTabType.DistributionDetail">
<DistributionDetailView />
</ProTabPane>
- <ProTabPane lazy label="鐢ㄩ噺鏄庣粏" :name="FinanceTabType.UsageDetail">
+ <!-- <ProTabPane lazy label="鐢ㄩ噺鏄庣粏" :name="FinanceTabType.UsageDetail">
<UsageDetailView />
- </ProTabPane>
+ </ProTabPane> -->
</ProTabs>
</AppContainer>
</template>
diff --git a/src/views/FinanceManage/components/DistributionDetailView.vue b/src/views/FinanceManage/components/DistributionDetailView.vue
index bb7857d..be7aa59 100644
--- a/src/views/FinanceManage/components/DistributionDetailView.vue
+++ b/src/views/FinanceManage/components/DistributionDetailView.vue
@@ -4,7 +4,7 @@
<ProTableV2
v-bind="proTableProps"
:columns="DistributionDetailColumns"
- :operationBtns="operationBtns"
+ :showOperationColumn="false"
>
</ProTableV2>
</AppContainer>
@@ -20,7 +20,8 @@
defineOperationBtns,
} from '@bole-core/components';
import { DistributionDetailColumns } from '../constants';
-import * as taskServices from '@/services/api/task';
+import * as userServices from '@/services/api/user';
+import { EnumTaskSettlementStatusText } from '@/constants';
defineOptions({
name: 'DistributionDetailView',
@@ -34,11 +35,6 @@
const state = reactive({ ...BaseState });
-onMounted(async () => {
- await getList();
- state.loading = false;
-});
-
const {
getDataSource: getList,
proTableProps,
@@ -48,28 +44,32 @@
} = useTable(
async ({ pageIndex, pageSize }, extraParamState) => {
try {
- let params: API.GetOpenTaskInfosQuery = {
+ let params: API.GetPersonalUserTransactionsQuery = {
pageModel: {
rows: pageSize,
page: pageIndex,
orderInput: extraParamState.orderInput,
},
+ type: EnumUserWalletTransactionType.Income,
};
-
- let res = await taskServices.getOpenTaskInfos(params, {
- showLoading: !state.loading,
- });
+ let res = await userServices.getPersonalUserTransactions(params);
return res;
- } catch (error) {
- console.log('error: ', error);
- }
+ } catch (error) {}
},
{
defaultExtraParams: {
- orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Asc }],
},
- queryKey: ['taskServices/getOpenTaskInfos'],
- columnsRenderProps: {},
+ columnsRenderProps: {
+ amount: { type: 'money' },
+ settlementStatus: { type: 'enum', valueEnum: EnumTaskSettlementStatusText },
+ settlementTime: { type: 'date' },
+ },
}
);
+
+onMounted(async () => {
+ await getList();
+ state.loading = false;
+});
</script>
diff --git a/src/views/FinanceManage/components/UsageDetailView.vue b/src/views/FinanceManage/components/UsageDetailView.vue
index fd56379..f48a6e0 100644
--- a/src/views/FinanceManage/components/UsageDetailView.vue
+++ b/src/views/FinanceManage/components/UsageDetailView.vue
@@ -10,7 +10,7 @@
<script setup lang="ts">
import { ProTableV2, LoadingLayout, AppContainer, useTable } from '@bole-core/components';
import { UsageDetailColumns } from '../constants';
-import * as taskServices from '@/services/api/task';
+import * as userServices from '@/services/api/user';
defineOptions({
name: 'UsageDetailView',
@@ -21,12 +21,6 @@
};
const state = reactive({ ...BaseState });
-
-onMounted(async () => {
- await getList();
- state.loading = false;
-});
-
const {
getDataSource: getList,
proTableProps,
@@ -36,28 +30,28 @@
} = useTable(
async ({ pageIndex, pageSize }, extraParamState) => {
try {
- let params: API.GetOpenTaskInfosQuery = {
+ let params: API.GetPersonalUserTransactionsQuery = {
pageModel: {
rows: pageSize,
page: pageIndex,
orderInput: extraParamState.orderInput,
},
+ type: EnumUserWalletTransactionType.Income,
};
-
- let res = await taskServices.getOpenTaskInfos(params, {
- showLoading: !state.loading,
- });
+ let res = await userServices.getPersonalUserTransactions(params);
return res;
- } catch (error) {
- console.log('error: ', error);
- }
+ } catch (error) {}
},
{
defaultExtraParams: {
- orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Asc }],
},
- queryKey: ['taskServices/getOpenTaskInfos'],
columnsRenderProps: {},
}
);
+
+onMounted(async () => {
+ await getList();
+ state.loading = false;
+});
</script>
diff --git a/src/views/FinanceManage/constants/columns.ts b/src/views/FinanceManage/constants/columns.ts
index 37e7f25..7ed0674 100644
--- a/src/views/FinanceManage/constants/columns.ts
+++ b/src/views/FinanceManage/constants/columns.ts
@@ -3,42 +3,42 @@
export const DistributionDetailColumns = defineColumns([
{
id: '1',
- enCode: 'name',
+ enCode: 'enterpriseName',
name: '鎵�灞炲鎴�',
},
{
id: '2',
- enCode: 'name',
+ enCode: 'taskName',
name: '鎵�灞炰换鍔�',
},
{
id: '3',
- enCode: 'name',
+ enCode: 'settlementOrderName',
name: '缁撶畻鍗曞悕绉�',
},
{
id: '4',
- enCode: 'name',
+ enCode: 'payerName',
name: '濮撳悕',
},
{
id: '5',
- enCode: 'name',
+ enCode: 'payerContactPhoneNumber',
name: '鎵嬫満鍙�',
},
{
id: '6',
- enCode: 'name',
+ enCode: 'amount',
name: '缁撶畻閲戦',
},
{
id: '7',
- enCode: 'signNum',
+ enCode: 'settlementStatus',
name: '缁撶畻鐘舵��',
},
{
id: '8',
- enCode: 'name',
+ enCode: 'settlementTime',
name: '缁撶畻鏃ユ湡',
},
]);
@@ -46,7 +46,7 @@
export const UsageDetailColumns = defineColumns([
{
id: '1',
- enCode: 'name',
+ enCode: 'transDate',
name: '浣跨敤鏃堕棿',
},
{
diff --git a/src/views/ServiceChargeManage/BalanceManage.vue b/src/views/ServiceChargeManage/BalanceManage.vue
index e4fac28..c632be7 100644
--- a/src/views/ServiceChargeManage/BalanceManage.vue
+++ b/src/views/ServiceChargeManage/BalanceManage.vue
@@ -5,14 +5,14 @@
<template #query>
<QueryFilterItem tip-content="浣欓鑼冨洿">
<el-input-number
- v-model="extraParamState.minAmount"
+ v-model="extraParamState.balanceMin"
placeholder="浣欓鏈�灏忛噾棰�"
size="small"
style="width: 150px"
:controls="false"
/>~
<el-input-number
- v-model="extraParamState.maxAmount"
+ v-model="extraParamState.balanceMax"
placeholder="浣欓鏈�澶ч噾棰�"
size="small"
style="width: 150px"
@@ -21,7 +21,7 @@
</QueryFilterItem>
<QueryFilterItem>
<SearchInput
- v-model="extraParamState.keyword"
+ v-model="extraParamState.keywords"
style="width: 260px"
placeholder="濮撳悕/鎵嬫満鍙�/韬唤璇佸彿"
@on-click-search="getList"
@@ -53,12 +53,12 @@
useFormDialog,
defineOperationBtns,
} from '@bole-core/components';
-import * as enterpriseServices from '@/services/api/enterprise';
+import * as userServices from '@/services/api/user';
import BalanceDetailDialog from './components/BalanceDetailDialog.vue';
import { BalanceManageColumns } from './constants';
defineOptions({
- name: 'BalanceManage',
+ name: 'WithdrawManageList',
});
const operationBtns = defineOperationBtns([
@@ -69,9 +69,6 @@
},
emits: {
onClick: (role) => openDialog(role),
- },
- extraProps: {
- hide: () => false,
},
},
]);
@@ -97,15 +94,18 @@
} = useTable(
async ({ pageIndex, pageSize }, extraParamState) => {
try {
- let params: API.GetEnterprisesQuery = {
+ let params: API.GetPersonalUserWalletBalancesQuery = {
pageModel: {
rows: pageSize,
page: pageIndex,
orderInput: extraParamState.orderInput,
},
- // searchKeys: extraParamState.keyword,
+ keywords: extraParamState.keywords,
+ balanceMin: extraParamState.balanceMin,
+ balanceMax: extraParamState.balanceMax,
};
- let res = await enterpriseServices.getEnterprises(params, {
+
+ let res = await userServices.getPersonalUserWalletBalances(params, {
showLoading: !state.loading,
});
return res;
@@ -113,13 +113,14 @@
},
{
defaultExtraParams: {
- keyword: '',
- status: '',
- minAmount: null as number,
- maxAmount: null as number,
+ keywords: '',
+ balanceMin: null as number,
+ balanceMax: null as number,
orderInput: [{ property: 'id', order: EnumPagedListOrder.Asc }],
},
- columnsRenderProps: {},
+ columnsRenderProps: {
+ balance: { type: 'money' },
+ },
}
);
diff --git a/src/views/ServiceChargeManage/ServiceChargeDetail.vue b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
index 80760a2..fd799fc 100644
--- a/src/views/ServiceChargeManage/ServiceChargeDetail.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
@@ -134,6 +134,7 @@
import EditAccountInfoDialog from './components/EditAccountInfoDialog.vue';
import SettleDetailDialog from './components/SettleDetailDialog.vue';
import { Message } from '@bole-core/core';
+import { SettlementReceiveStatusText } from '@/constants';
import {
downloadFile,
downloadFileByUrl,
@@ -274,6 +275,7 @@
settlementTime: { type: 'date' },
settlementAmount: { type: 'money' },
actualSettlementAmount: { type: 'money' },
+ settlementReceiveStatus: { type: 'enum', valueEnum: SettlementReceiveStatusText },
},
}
);
diff --git a/src/views/ServiceChargeManage/ServiceChargeManage.vue b/src/views/ServiceChargeManage/ServiceChargeManage.vue
index affb651..be4341d 100644
--- a/src/views/ServiceChargeManage/ServiceChargeManage.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeManage.vue
@@ -45,7 +45,7 @@
</QueryFilterItem>
</template>
<template #btn>
- <el-button type="primary" link @click="handleDownloadTemplate()">缁撶畻鍗曟ā鏉�</el-button>
+ <!-- <el-button type="primary" link @click="handleDownloadTemplate()">缁撶畻鍗曟ā鏉�</el-button> -->
<!-- <el-button type="primary" @click="handleAdd()">涓婁紶缁撶畻鍗�</el-button> -->
<!-- <el-button type="primary" @click="handleDownloadTemplate()">瀵煎嚭</el-button> -->
</template>
diff --git a/src/views/ServiceChargeManage/components/BalanceDetailDialog.vue b/src/views/ServiceChargeManage/components/BalanceDetailDialog.vue
index a81d09f..0af6300 100644
--- a/src/views/ServiceChargeManage/components/BalanceDetailDialog.vue
+++ b/src/views/ServiceChargeManage/components/BalanceDetailDialog.vue
@@ -5,8 +5,8 @@
<template #query>
<QueryFilterItem>
<FieldSelect
- v-model="extraParamState.status"
- :valueEnum="[]"
+ v-model="extraParamState.type"
+ :valueEnum="EnumUserWalletTransactionTypeText"
clearable
filterable
placeholder="浜ゆ槗绫诲瀷"
@@ -25,9 +25,25 @@
</QueryFilterItem>
</template>
</ProTableQueryFilterBar>
- <ProTableV2 v-bind="proTableProps" :columns="columns" :showOperationColumn="false">
+ <ProTableV2 v-bind="proTableProps" :columns="columns" :operationBtns="operationBtns">
+ <template #income="{ row }">
+ <div style="color: #67c23a" v-if="row.type === EnumUserWalletTransactionType.Income">
+ {{ `+${toThousand(row.amount)}` }}
+ </div>
+ <div v-else>/</div>
+ </template>
+ <template #outcome="{ row }">
+ <div style="color: #f56c6c" v-if="row.type === EnumUserWalletTransactionType.Withdraw">
+ {{ toThousand(row.amount) }}
+ </div>
+ <div v-else>/</div>
+ </template>
+ <template #account="{ row }">
+ {{ `${row.receiveAccount} - ${row.receiveName}` }}
+ </template>
</ProTableV2>
</ProDialogTableWrapper>
+ <FinanceDetailDialog v-bind="dialogProps"></FinanceDetailDialog>
</ProDialog>
</template>
@@ -42,9 +58,14 @@
FieldSelect,
ProTableV2,
ProTableQueryFilterBar,
+ defineOperationBtns,
+ useFormDialog,
} from '@bole-core/components';
-import * as enterpriseServices from '@/services/api/enterprise';
+import * as userServices from '@/services/api/user';
import { ModelValueType } from 'element-plus';
+import { format, toThousand } from '@/utils';
+import { EnumUserWalletTransactionType, EnumUserWalletTransactionTypeText } from '@/constants';
+import FinanceDetailDialog from './FinanceDetailDialog.vue';
defineOptions({
name: 'FinanceDetailDialog',
@@ -65,33 +86,48 @@
const columns = defineColumns([
{
id: '1',
- enCode: 'name',
+ enCode: 'transDate',
name: '浜ゆ槗鏃堕棿',
},
{
id: '2',
- enCode: 'name',
+ enCode: 'income',
name: '鏀跺叆',
+ width: 100,
},
{
id: '3',
- enCode: 'name',
+ enCode: 'outcome',
name: '鏀嚭',
+ width: 100,
},
{
id: '4',
- enCode: 'name',
+ enCode: 'balance',
name: '璐︽埛浣欓',
+ width: 100,
},
{
- id: '4',
- enCode: 'name',
+ id: '5',
+ enCode: 'account',
name: '瀵规柟甯愬彿/鎴峰悕',
},
{
- id: '4',
- enCode: 'name',
+ id: '6',
+ enCode: 'purpose',
name: '鐢ㄩ��',
+ },
+]);
+
+const operationBtns = defineOperationBtns([
+ {
+ data: {
+ enCode: 'detailBtn',
+ name: '鏄庣粏',
+ },
+ emits: {
+ onClick: (role) => openDialog(role),
+ },
},
]);
@@ -113,27 +149,45 @@
} = useTable(
async ({ pageIndex, pageSize }, extraParamState) => {
try {
- let params: API.GetEnterprisesQuery = {
+ let params: API.GetPersonalUserTransactionsQuery = {
pageModel: {
rows: pageSize,
page: pageIndex,
orderInput: extraParamState.orderInput,
},
- // searchKeys: extraParamState.keyword,
+ createdTimeStart: format(extraParamState.creationTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+ createdTimeEnd: format(extraParamState.creationTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+ type: extraParamState.type,
+ userId: form.value.id,
};
- let res = await enterpriseServices.getEnterprises(params);
+ let res = await userServices.getPersonalUserTransactions(params);
return res;
} catch (error) {}
},
{
defaultExtraParams: {
- status: '',
+ type: '' as any as EnumUserWalletTransactionType,
creationTime: [] as unknown as ModelValueType,
orderInput: [{ property: 'id', order: EnumPagedListOrder.Asc }],
},
- columnsRenderProps: {},
+ columnsRenderProps: {
+ transDate: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+ balance: { type: 'money' },
+ },
}
);
+
+const { dialogProps, handleEdit, editForm } = useFormDialog({
+ defaultFormParams: {
+ id: '',
+ },
+});
+
+function openDialog(row: API.GetPersonalUserTransactionsQueryResultItem) {
+ handleEdit({
+ id: row.id,
+ });
+}
</script>
<style lang="scss" scoped>
diff --git a/src/views/ServiceChargeManage/components/FinanceDetailDialog.vue b/src/views/ServiceChargeManage/components/FinanceDetailDialog.vue
new file mode 100644
index 0000000..b05ba85
--- /dev/null
+++ b/src/views/ServiceChargeManage/components/FinanceDetailDialog.vue
@@ -0,0 +1,106 @@
+<template>
+ <ProDialog title="鏄庣粏" v-model="visible" destroy-on-close draggable>
+ <PortraitTable v-bind="portraitTableProps" label-width="140px" :col-number="2"></PortraitTable>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="emit('onCancel')" type="primary">纭畾</el-button>
+ </span>
+ </template>
+ </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { ProDialog, toThousand } from '@bole-core/components';
+import { usePortraitTable } from '@/hooks';
+import * as userServices from '@/services/api/user';
+import { useQuery } from '@tanstack/vue-query';
+import { EnumWalletTransactionStatusText } from '@/constants';
+
+defineOptions({
+ name: 'FinanceDetailDialog',
+});
+
+type Form = {
+ id?: string;
+};
+
+const visible = defineModel({ type: Boolean });
+const form = defineModel<Form>('form');
+
+const emit = defineEmits<{
+ (e: 'update:modelValue', value: boolean): void;
+ (e: 'onCancel'): void;
+}>();
+
+const { data: detail } = useQuery({
+ queryKey: ['userResumeServices/getUserResume', form.value.id],
+ queryFn: async () => {
+ return await userServices.getPersonalUserTransaction({ id: form.value.id });
+ },
+ placeholderData: () => ({} as API.GetPersonalUserTransactionQueryResult),
+ enabled: computed(() => !!form.value.id),
+});
+
+const { portraitTableProps } = usePortraitTable({
+ data: detail,
+ columns: [
+ {
+ label: '浠樻浜鸿处鎴�',
+ key: 'payerAccount',
+ },
+ {
+ label: '鏀舵浜鸿处鎴�',
+ key: 'receiveAccount',
+ },
+ {
+ label: '浠樻浜哄悕绉�',
+ key: 'payerName',
+ },
+ {
+ label: '鏀舵浜哄悕绉�',
+ key: 'receiveName',
+ },
+ {
+ label: '浠樻浜哄紑鎴疯',
+ key: 'payerBank',
+ },
+ {
+ label: '鏀舵浜哄紑鎴疯',
+ key: 'receiveBank',
+ },
+ {
+ label: '甯佺',
+ key: 'currency',
+ },
+ {
+ label: '浜ゆ槗閲戦',
+ key: 'actualAmount',
+ type: 'money',
+ },
+ {
+ label: '鐢ㄩ��',
+ key: 'purpose',
+ },
+ {
+ label: '鎽樿',
+ key: 'failReason',
+ },
+ {
+ label: '浜ゆ槗鏃堕棿',
+ key: 'transDate',
+ type: 'date',
+ format: 'YYYY-MM-DD HH:mm:ss',
+ },
+ {
+ label: '浜ゆ槗鐘舵��',
+ key: 'transactionStatus',
+ type: 'enum',
+ valueEnum: EnumWalletTransactionStatusText,
+ },
+ ],
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/ServiceChargeManage/constants/columns.ts b/src/views/ServiceChargeManage/constants/columns.ts
index 6e00484..0c3f24a 100644
--- a/src/views/ServiceChargeManage/constants/columns.ts
+++ b/src/views/ServiceChargeManage/constants/columns.ts
@@ -106,6 +106,11 @@
},
{
id: '9',
+ enCode: 'settlementReceiveStatus',
+ name: '鍒拌处鐘舵��',
+ },
+ {
+ id: '10',
enCode: 'settlementTime',
name: '缁撶畻鏃堕棿',
},
@@ -119,17 +124,17 @@
},
{
id: '2',
- enCode: 'name',
+ enCode: 'contactPhoneNumber',
name: '鎵嬫満鍙�',
},
{
id: '3',
- enCode: 'name',
+ enCode: 'identity',
name: '韬唤璇佸彿',
},
{
id: '4',
- enCode: 'name',
+ enCode: 'balance',
name: '璐︽埛浣欓',
},
]);
diff --git a/src/views/WithdrawManage/WithdrawManageList.vue b/src/views/WithdrawManage/WithdrawManageList.vue
new file mode 100644
index 0000000..cee29e0
--- /dev/null
+++ b/src/views/WithdrawManage/WithdrawManageList.vue
@@ -0,0 +1,148 @@
+<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="WithdrawManageColumns"
+ :operationBtns="operationBtns"
+ >
+ </ProTableV2>
+ </AppContainer>
+ <WithdrawalDetailDialog v-bind="dialogProps" />
+ </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 WithdrawalDetailDialog from './components/WithdrawalDetailDialog.vue';
+import { WithdrawManageColumns } from './constants';
+import { ModelValueType } from 'element-plus';
+
+defineOptions({
+ name: 'WithdrawManageList',
+});
+
+const operationBtns = defineOperationBtns([
+ {
+ data: {
+ enCode: 'detailBtn',
+ name: '璇︽儏',
+ },
+ emits: {
+ onClick: (role) => openDialog(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.Asc }],
+ },
+ columnsRenderProps: {
+ balance: { type: 'money' },
+ },
+ }
+);
+
+const { dialogProps, handleEdit, editForm } = useFormDialog({
+ defaultFormParams: {
+ id: '',
+ status: '',
+ time: '',
+ },
+});
+
+function openDialog(row) {
+ handleEdit({
+ id: row.id,
+ status: '',
+ time: '',
+ });
+}
+</script>
diff --git a/src/views/WithdrawManage/components/WithdrawalDetailDialog.vue b/src/views/WithdrawManage/components/WithdrawalDetailDialog.vue
new file mode 100644
index 0000000..0afafd9
--- /dev/null
+++ b/src/views/WithdrawManage/components/WithdrawalDetailDialog.vue
@@ -0,0 +1,145 @@
+<template>
+ <ProDialog title="璇︽儏" v-model="visible" @close="onDialogClose" destroy-on-close draggable>
+ <!-- <PortraitTableWithAttachment v-bind="portraitTableWithAttachmentProps" /> -->
+ <ProForm :model="form" ref="dialogForm" label-width="90px" style="margin-top: 20px" is-read>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鎻愮幇鐘舵��:" prop="status">
+ <ProFormRadio v-model="form.status" :value-enum="[]" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鎻愮幇鏃ユ湡:" prop="time">
+ <ProFormDatePicker v-model="form.time" type="date" format="YYYY-MM-DD HH:mm" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ </ProForm>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="emit('onCancel')">鍙� 娑�</el-button>
+ <el-button type="primary" @click="emit('onCancel')">纭� 瀹�</el-button>
+ </span>
+ </template>
+ </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import {
+ ProDialog,
+ ProForm,
+ ProFormItemV2,
+ ProFormCol,
+ ProFormColItem,
+ ProFormRadio,
+ ProFormDatePicker,
+} from '@bole-core/components';
+import { usePortraitTableWithAttachment } from '@/hooks';
+import { convertApi2FormUrl } from '@/utils';
+import { useQuery } from '@tanstack/vue-query';
+
+defineOptions({
+ name: 'WithdrawalDetailDialog',
+});
+
+const visible = defineModel({ type: Boolean });
+
+type Form = {
+ title?: string;
+ id: string;
+ status: string;
+ time: string;
+};
+
+const form = defineModel<Form>('form');
+
+const emit = defineEmits<{
+ (e: 'onConfirm'): void;
+ (e: 'onCancel'): void;
+}>();
+
+watch(
+ () => visible.value,
+ (val) => {
+ if (val) {
+ // refetch();
+ }
+ }
+);
+
+// const {
+// data: detail,
+// refetch,
+// isLoading,
+// } = useQuery({
+// queryKey: ['parkBountyApplyServices/getEnterpriseDrawWithDetail', form.value?.id],
+// queryFn: async () => {
+// return await parkBountyApplyServices.getEnterpriseDrawWithDetail(
+// {
+// drawWithId: form.value?.id,
+// },
+// {
+// showLoading: true,
+// }
+// );
+// },
+// placeholderData: () => ({}),
+// enabled: !!form.value?.id,
+// onSuccess(data) {},
+// });
+
+// const { portraitTableWithAttachmentProps } = usePortraitTableWithAttachment({
+// data: detail,
+// annexList: computed(() =>
+// detail.value?.invoiceUrl
+// ? detail.value?.invoiceUrl.split('|').map((item) => convertApi2FormUrl(item))
+// : []
+// ),
+// columns: [
+// {
+// label: '濮撳悕',
+// key: 'enterpriseName',
+// },
+// {
+// label: '韬唤璇佸彿',
+// key: 'societyCreditCode',
+// },
+// {
+// label: '璐︽埛鍚嶇О',
+// key: 'accountName',
+// },
+// {
+// label: '閾惰甯愬彿',
+// key: 'bankNumber',
+// },
+// {
+// label: '寮�鎴烽摱琛�',
+// key: 'bankName',
+// },
+// {
+// label: '寮�鎴锋敮琛�',
+// key: 'bankResumeName',
+// },
+// {
+// label: '鎻愮幇閲戦',
+// key: 'amount',
+// type: 'money',
+// },
+// {
+// label: '鐢宠鏃ユ湡',
+// key: 'creationTime',
+// type: 'date',
+// },
+// ],
+// });
+
+const dialogForm = ref<FormInstance>();
+
+function onDialogClose() {
+ if (!dialogForm.value) return;
+ dialogForm.value.resetFields();
+}
+</script>
diff --git a/src/views/WithdrawManage/constants/columns.ts b/src/views/WithdrawManage/constants/columns.ts
new file mode 100644
index 0000000..1419ee6
--- /dev/null
+++ b/src/views/WithdrawManage/constants/columns.ts
@@ -0,0 +1,39 @@
+import { defineColumns } from '@bole-core/components';
+
+export const WithdrawManageColumns = defineColumns([
+ {
+ id: '1',
+ enCode: 'name',
+ name: '濮撳悕',
+ },
+ {
+ id: '2',
+ enCode: 'code',
+ name: '韬唤璇佸彿',
+ },
+ {
+ id: '3',
+ enCode: 'checkReceiveStatus',
+ name: '鐢佃瘽',
+ },
+ {
+ id: '4',
+ enCode: 'settlementOrderStatus',
+ name: '鐢宠鏃堕棿',
+ },
+ {
+ id: '5',
+ enCode: 'settlementOrderName',
+ name: '鐢宠鎻愮幇閲戦锛堝厓锛�',
+ },
+ {
+ id: '6',
+ enCode: 'settlementOrderTime',
+ name: '鎻愮幇鐘舵��',
+ },
+ {
+ id: '7',
+ enCode: 'actualSettlementAmount',
+ name: '鎻愮幇鏃堕棿',
+ },
+]);
diff --git a/src/views/WithdrawManage/constants/index.ts b/src/views/WithdrawManage/constants/index.ts
new file mode 100644
index 0000000..a7f066b
--- /dev/null
+++ b/src/views/WithdrawManage/constants/index.ts
@@ -0,0 +1 @@
+export * from './columns';
--
Gitblit v1.9.1