From c3d85f99d71dc283308e1219817e1d816e985809 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期四, 25 十二月 2025 10:31:38 +0800
Subject: [PATCH] feat: init
---
src/views/EmploymentManage/EmploymentSignList.vue | 72
src/services/api/standardOrder.ts | 162 +
src/views/CustomerManage/CustomerManage.vue | 202 +
src/views/ServiceChargeManage/ServiceChargeDetail.vue | 157
src/views/FinanceManage/components/EnterpriseBalanceManageView.vue | 127
src/views/DataReport/DistributionDetailReport.vue | 116
src/views/ServiceChargeManage/ServiceChargeManageList.vue | 34
src/views/EmploymentManage/TaskArrange.vue | 188 -
src/views/FinanceManage/components/DistributionDetailView.vue | 8
src/hooks/index.ts | 2
src/views/CustomerManage/components/ResetOperatorPasswordDialog.vue | 81
src/views/FinanceManage/CustomerRechargeManage.vue | 158 +
src/views/FlexJobManage/FlexJobContractManage.vue | 552 ++++
src/views/EmploymentManage/components/AddTaskDialog.vue | 175 +
src/views/ServiceChargeManage/components/ResettleEditDialog.vue | 90
src/views/EmploymentManage/TaskManageList.vue | 20
auto-imports.d.ts | 48
src/constants/electronSign.ts | 2
src/views/FinanceManage/components/OrderSettlementDetailDialog.vue | 143 +
src/views/FinanceManage/components/RechargeRecordialog.vue | 102
src/constants/app.ts | 2
src/views/CustomerManage/AddOrEditCustomer.vue | 19
src/constants/enum.ts | 5
src/views/EmploymentManage/EmploymentManageArrange.vue | 36
src/services/api/standardService.ts | 153 +
src/views/CustomerManage/CustomerDetail.vue | 11
src/views/EmploymentManage/TaskArrangeDetail.vue | 274 ++
src/views/FlexJobManage/FlexJobManage.vue | 419 +-
src/views/FinanceManage/AccountManage.vue | 169 +
src/services/api/auth.ts | 15
src/views/Permission/RoleManage.vue | 2
src/views/CustomerManage/components/ResetPasswordDialog.vue | 71
src/services/api/advertisement.ts | 96
src/views/AgreementManage/AgreementManageList.vue | 113
src/hooks/useEvent.ts | 2
src/views/FinanceManage/OrderSettlementManage.vue | 154 +
src/views/CustomerManage/InsureProductConfigure.vue | 117
src/views/ServiceChargeManage/components/SettleDetailDialog.vue | 8
src/views/EmploymentManage/components/ManualCheckManageDialog.vue | 35
src/views/FlexJobManage/hooks/index.ts | 108
src/views/FlexJobManage/components/StaffDetailInfoView.vue | 8
src/views/FinanceManage/constants/columns.ts | 68
src/views/FinanceManage/EnterpriseBalanceManage.vue | 132
src/views/FlexJobManage/components/AddInternalStaffDialog.vue | 225 +
src/constants/enterpriseEmployee.ts | 8
src/views/EmploymentManage/CheckReceiveTaskDetail.vue | 16
src/views/EmploymentManage/components/AddOrEditEmploymentView.vue | 110
src/views/AgreementManage/components/TemplateAddDialog.vue | 35
src/views/EmploymentManage/CheckManage.vue | 5
src/constants/apiEnum.ts | 136
src/constants/index.ts | 2
src/utils/common/common.ts | 31
src/services/api/userWallet.ts | 15
src/views/EmploymentManage/StandardOrder.vue | 158 +
src/views/CustomerManage/components/AddOrEditCustomerView.vue | 579 ++++
.eslintrc-auto-import.json | 15
src/hooks/useUser.ts | 4
src/services/api/typings.d.ts | 1380 ++++++++++
src/constants/customer.ts | 23
src/views/UserManage/UserManageList.vue | 9
src/services/api/enterprise.ts | 93
src/views/Permission/components/dialogAuthorizeV2.vue | 2
src/services/api/index.ts | 10
src/views/EmploymentManage/StandardOrderDetail.vue | 180 +
src/views/ServiceChargeManage/BalanceManage.vue | 28
src/views/EmploymentManage/components/CheckManageDialog.vue | 20
src/views/FinanceManage/CustomerRechargeRecord.vue | 105
src/constants/finance.ts | 5
src/views/FinanceManage/components/CustomerBalanceManageView.vue | 96
src/views/FinanceManage/EnterpriseBalanceManageDetail.vue | 49
src/views/FinanceManage/components/CustomerRechargeDialog.vue | 170 +
71 files changed, 7,054 insertions(+), 911 deletions(-)
diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json
index 6c88a55..ec15cc0 100644
--- a/.eslintrc-auto-import.json
+++ b/.eslintrc-auto-import.json
@@ -3,6 +3,8 @@
"AppLocalConfig": true,
"AppType": true,
"AreaType": true,
+ "AutoSignPowerAttorneyTempUrl": true,
+ "BooleanOptions": true,
"CategoryCode": true,
"CertificateTypeCodeEnum": true,
"CommonAnnexTableColumns": true,
@@ -15,6 +17,8 @@
"EducationCodeEnum": true,
"EffectScope": true,
"EmptyTextEditorItem": true,
+ "EnumAdvertisementPage": true,
+ "EnumAdvertisementStatus": true,
"EnumBillingMethod": true,
"EnumBillingMethodText": true,
"EnumBillingMethodUnitText": true,
@@ -31,15 +35,18 @@
"EnumElectronSignAccess": true,
"EnumElectronSignVerifyType": true,
"EnumEnterpriseCooperationServiceFeeCollectType": true,
+ "EnumEnterpriseCooperationServiceFeeCollectTypeText": true,
"EnumEnterpriseCooperationSignStatus": true,
"EnumEnterpriseCooperationSignStatusText": true,
"EnumEnterpriseCooperationStatus": true,
"EnumEnterpriseCooperationStatusText": true,
"EnumEnterpriseCooperationWalletTransactionStatus": true,
"EnumEnterpriseCooperationWalletTransactionStatusText": true,
+ "EnumEnterpriseCooperationWalletTransactionStatusTextForConfirm": true,
"EnumEnterpriseCostStatus": true,
"EnumEnterpriseCostType": true,
"EnumEnterpriseEmployeeSource": true,
+ "EnumEnterpriseEmployeeSourceText": true,
"EnumEnterpriseRealMethod": true,
"EnumEnterpriseType": true,
"EnumEnterpriseTypeText": true,
@@ -85,6 +92,11 @@
"EnumSettlementCycleText": true,
"EnumSmsAccess": true,
"EnumSmsStatus": true,
+ "EnumStandardOrderAppointmentStatus": true,
+ "EnumStandardOrderPayStatus": true,
+ "EnumStandardOrderSettlementStatus": true,
+ "EnumStandardServiceRecommendStatus": true,
+ "EnumStandardServiceReleaseStatus": true,
"EnumTaskApplyStatus": true,
"EnumTaskCheckReceiveMethod": true,
"EnumTaskCheckReceiveMethodText": true,
@@ -162,7 +174,10 @@
"GlobalEventListener": true,
"IdentityCodeEnum": true,
"ImportEnterpriseEmployeesTempPath": true,
+ "ImportFlexJobTempPath": true,
"InjectionKey": true,
+ "IsConfiguredText": true,
+ "IsRealText": true,
"MaybeRef": true,
"MaybeRefOrGetter": true,
"MenuSvgIconMap": true,
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
index 286e380..1cc9fdc 100644
--- a/auto-imports.d.ts
+++ b/auto-imports.d.ts
@@ -9,8 +9,12 @@
const AppLocalConfig: typeof import('./src/constants/app')['AppLocalConfig']
const AppType: typeof import('./src/constants/app')['AppType']
const AreaType: typeof import('./src/constants/enum')['AreaType']
+ const AutoSignPowerAttorneyTempUrl: typeof import('./src/constants/electronSign')['AutoSignPowerAttorneyTempUrl']
+ const BooleanOptions: typeof import('./src/constants/enum')['BooleanOptions']
const CategoryCode: typeof import('./src/constants/dic')['CategoryCode']
const CertificateTypeCodeEnum: typeof import('./src/constants/dic')['CertificateTypeCodeEnum']
+ const ChargeTypeEnum: typeof import('./src/constants/enterprise')['ChargeTypeEnum']
+ const ChargeTypeEnumText: typeof import('./src/constants/enterprise')['ChargeTypeEnumText']
const CommonAnnexTableColumns: typeof import('./src/constants/common')['CommonAnnexTableColumns']
const EditorType: typeof import('./src/constants/editor')['EditorType']
const EditorTypeText: typeof import('./src/constants/editor')['EditorTypeText']
@@ -18,6 +22,11 @@
const EffectScope: typeof import('vue')['EffectScope']
const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
const EmptyTextEditorItem: typeof import('./src/constants/editor')['EmptyTextEditorItem']
+ const EnterpriseConfigureType: typeof import('./src/constants/enterprise')['EnterpriseConfigureType']
+ const EnterpriseConfigureTypeTextPartA: typeof import('./src/constants/enterprise')['EnterpriseConfigureTypeTextPartA']
+ const EnterpriseConfigureTypeTextSupplier: typeof import('./src/constants/enterprise')['EnterpriseConfigureTypeTextSupplier']
+ const EnumAdvertisementPage: typeof import('./src/constants/apiEnum')['EnumAdvertisementPage']
+ const EnumAdvertisementStatus: typeof import('./src/constants/apiEnum')['EnumAdvertisementStatus']
const EnumBillingMethod: typeof import('./src/constants/apiEnum')['EnumBillingMethod']
const EnumBillingMethodText: typeof import('./src/constants/task')['EnumBillingMethodText']
const EnumBillingMethodUnitText: typeof import('./src/constants/task')['EnumBillingMethodUnitText']
@@ -34,15 +43,18 @@
const EnumElectronSignAccess: typeof import('./src/constants/apiEnum')['EnumElectronSignAccess']
const EnumElectronSignVerifyType: typeof import('./src/constants/apiEnum')['EnumElectronSignVerifyType']
const EnumEnterpriseCooperationServiceFeeCollectType: typeof import('./src/constants/apiEnum')['EnumEnterpriseCooperationServiceFeeCollectType']
+ const EnumEnterpriseCooperationServiceFeeCollectTypeText: typeof import('./src/constants/customer')['EnumEnterpriseCooperationServiceFeeCollectTypeText']
const EnumEnterpriseCooperationSignStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseCooperationSignStatus']
const EnumEnterpriseCooperationSignStatusText: typeof import('./src/constants/supplier')['EnumEnterpriseCooperationSignStatusText']
const EnumEnterpriseCooperationStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseCooperationStatus']
const EnumEnterpriseCooperationStatusText: typeof import('./src/constants/supplier')['EnumEnterpriseCooperationStatusText']
const EnumEnterpriseCooperationWalletTransactionStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseCooperationWalletTransactionStatus']
const EnumEnterpriseCooperationWalletTransactionStatusText: typeof import('./src/constants/finance')['EnumEnterpriseCooperationWalletTransactionStatusText']
+ const EnumEnterpriseCooperationWalletTransactionStatusTextForConfirm: typeof import('./src/constants/finance')['EnumEnterpriseCooperationWalletTransactionStatusTextForConfirm']
const EnumEnterpriseCostStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseCostStatus']
const EnumEnterpriseCostType: typeof import('./src/constants/apiEnum')['EnumEnterpriseCostType']
const EnumEnterpriseEmployeeSource: typeof import('./src/constants/apiEnum')['EnumEnterpriseEmployeeSource']
+ const EnumEnterpriseEmployeeSourceText: typeof import('./src/constants/enterpriseEmployee')['EnumEnterpriseEmployeeSourceText']
const EnumEnterpriseRealMethod: typeof import('./src/constants/apiEnum')['EnumEnterpriseRealMethod']
const EnumEnterpriseType: typeof import('./src/constants/apiEnum')['EnumEnterpriseType']
const EnumEnterpriseTypeText: typeof import('./src/constants/apiEnumText')['EnumEnterpriseTypeText']
@@ -53,7 +65,9 @@
const EnumEnterpriseWalletExpandindirectOrderFileType: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletExpandindirectOrderFileType']
const EnumEnterpriseWalletExpandindirectOrderScene: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletExpandindirectOrderScene']
const EnumEnterpriseWalletExpandindirectOrderStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletExpandindirectOrderStatus']
+ const EnumEnterpriseWalletExpandindirectOrderStatusText: typeof import('./src/constants/enterprise')['EnumEnterpriseWalletExpandindirectOrderStatusText']
const EnumEnterpriseWalletSignStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletSignStatus']
+ const EnumEnterpriseWalletSignStatusText: typeof import('./src/constants/enterprise')['EnumEnterpriseWalletSignStatusText']
const EnumEnterpriseWalletTransactionStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletTransactionStatus']
const EnumEnterpriseWalletTransactionType: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletTransactionType']
const EnumGetArrangeTaskUsersQueryApplyStatus: typeof import('./src/constants/apiEnum')['EnumGetArrangeTaskUsersQueryApplyStatus']
@@ -62,6 +76,7 @@
const EnumGetCheckReceiveTasksQueryResultItemCheckStatus: typeof import('./src/constants/apiEnum')['EnumGetCheckReceiveTasksQueryResultItemCheckStatus']
const EnumGetEnterpriseEmployeesQuerySignContractStatus: typeof import('./src/constants/apiEnum')['EnumGetEnterpriseEmployeesQuerySignContractStatus']
const EnumInsuranceSupplierAccess: typeof import('./src/constants/apiEnum')['EnumInsuranceSupplierAccess']
+ const EnumInsuranceSupplierAccessText: typeof import('./src/constants/enterprise')['EnumInsuranceSupplierAccessText']
const EnumLogLevel: typeof import('./src/constants/apiEnum')['EnumLogLevel']
const EnumMenuType: typeof import('./src/constants/apiEnum')['EnumMenuType']
const EnumMenuVisitLevel: typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel']
@@ -76,6 +91,7 @@
const EnumPersonalUserRealStatus: typeof import('./src/constants/apiEnum')['EnumPersonalUserRealStatus']
const EnumReadScene: typeof import('./src/constants/apiEnum')['EnumReadScene']
const EnumRealAccess: typeof import('./src/constants/apiEnum')['EnumRealAccess']
+ const EnumRealAccessText: typeof import('./src/constants/enterprise')['EnumRealAccessText']
const EnumResourceController: typeof import('./src/constants/apiEnum')['EnumResourceController']
const EnumResourceMethod: typeof import('./src/constants/apiEnum')['EnumResourceMethod']
const EnumRoleWebApiDataPower: typeof import('./src/constants/apiEnum')['EnumRoleWebApiDataPower']
@@ -88,8 +104,15 @@
const EnumSettlementCycleDateWeekArray: typeof import('./src/constants/task')['EnumSettlementCycleDateWeekArray']
const EnumSettlementCycleText: typeof import('./src/constants/task')['EnumSettlementCycleText']
const EnumSmsAccess: typeof import('./src/constants/apiEnum')['EnumSmsAccess']
+ const EnumSmsAccessText: typeof import('./src/constants/enterprise')['EnumSmsAccessText']
+ const EnumSmsAccessTextUseInSms: typeof import('./src/constants/enterprise')['EnumSmsAccessTextUseInSms']
const EnumSmsStatus: typeof import('./src/constants/apiEnum')['EnumSmsStatus']
const EnumSmsTemplateType: typeof import('./src/constants/apiEnum')['EnumSmsTemplateType']
+ const EnumStandardOrderAppointmentStatus: typeof import('./src/constants/apiEnum')['EnumStandardOrderAppointmentStatus']
+ const EnumStandardOrderPayStatus: typeof import('./src/constants/apiEnum')['EnumStandardOrderPayStatus']
+ const EnumStandardOrderSettlementStatus: typeof import('./src/constants/apiEnum')['EnumStandardOrderSettlementStatus']
+ const EnumStandardServiceRecommendStatus: typeof import('./src/constants/apiEnum')['EnumStandardServiceRecommendStatus']
+ const EnumStandardServiceReleaseStatus: typeof import('./src/constants/apiEnum')['EnumStandardServiceReleaseStatus']
const EnumTaskApplyStatus: typeof import('./src/constants/apiEnum')['EnumTaskApplyStatus']
const EnumTaskCheckReceiveMethod: typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveMethod']
const EnumTaskCheckReceiveMethodText: typeof import('./src/constants/task')['EnumTaskCheckReceiveMethodText']
@@ -154,6 +177,8 @@
const FastColumnList: typeof import('./src/constants/module')['FastColumnList']
const FastDataButtonList: typeof import('./src/constants/module')['FastDataButtonList']
const FastPageButtonList: typeof import('./src/constants/module')['FastPageButtonList']
+ const FlexEnterpriseCertificationStatus: typeof import('./src/constants/enterprise')['FlexEnterpriseCertificationStatus']
+ const FlexEnterpriseCertificationStatusText: typeof import('./src/constants/enterprise')['FlexEnterpriseCertificationStatusText']
const FlexEnterpriseSettingStatus: typeof import('./src/constants/enum')['FlexEnterpriseSettingStatus']
const Gender: typeof import('./src/constants/enum')['Gender']
const GenderText: typeof import('./src/constants/enum')['GenderText']
@@ -165,6 +190,9 @@
const GetTaskInfoQueryResultHireButton: typeof import('./src/constants/apiEnum')['GetTaskInfoQueryResultHireButton']
const IdentityCodeEnum: typeof import('./src/constants/dic')['IdentityCodeEnum']
const ImportEnterpriseEmployeesTempPath: typeof import('./src/constants/enterpriseEmployee')['ImportEnterpriseEmployeesTempPath']
+ const ImportFlexJobTempPath: typeof import('./src/constants/enterpriseEmployee')['ImportFlexJobTempPath']
+ const IsConfiguredText: typeof import('./src/constants/customer')['IsConfiguredText']
+ const IsRealText: typeof import('./src/constants/customer')['IsRealText']
const MenuSvgIconMap: typeof import('./src/constants/menu')['MenuSvgIconMap']
const ModuleColumns: typeof import('./src/constants/module')['ModuleColumns']
const MyRegExp: typeof import('./src/constants/regExp')['MyRegExp']
@@ -188,6 +216,9 @@
const SubModuleType: typeof import('./src/constants/module')['SubModuleType']
const TempFolderPath: typeof import('./src/constants/enum')['TempFolderPath']
const ThemeColors: typeof import('./src/constants/theme')['ThemeColors']
+ const VerifyStatus: typeof import('./src/constants/enterprise')['VerifyStatus']
+ const VerifyStatusColor: typeof import('./src/constants/enterprise')['VerifyStatusColor']
+ const VerifyStatusText: typeof import('./src/constants/enterprise')['VerifyStatusText']
const WelfareCodeEnum: typeof import('./src/constants/dic')['WelfareCodeEnum']
const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
const computed: typeof import('vue')['computed']
@@ -307,7 +338,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, EnumConsoleLogAccess, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumElectronSignVerifyType, EnumEnterpriseCooperationServiceFeeCollectType, EnumEnterpriseCooperationSignStatus, EnumEnterpriseCooperationStatus, EnumEnterpriseCooperationWalletTransactionStatus, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseEmployeeSource, EnumEnterpriseRealMethod, EnumEnterpriseType, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetArrangeTaskUsersQueryApplyStatus, EnumGetCheckReceiveTaskCheckInUsersQueryStatus, EnumGetCheckReceiveTasksQueryResultItemCheckStatus, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumInsuranceSupplierAccess, EnumLogLevel, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumReadScene, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsStatus, EnumTaskApplyStatus, EnumTaskCheckReceiveMethod, EnumTaskCheckReceiveStatus, EnumTaskPaymentMethod, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementAuditStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserApplyStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckHistoryType, EnumTaskUserSubmitCheckReceiveStatus, EnumUserBankCardAccess, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, EnumWeChatPayApplymentBankAccountType, EnumWeChatPayApplymentCertType, EnumWeChatPayApplymentContactType, EnumWeChatPayApplymentFinanceType, EnumWeChatPayApplymentIdDocType, EnumWeChatPayApplymentIdHolderType, EnumWeChatPayApplymentSalesScenesType, EnumWeChatPayApplymentState, EnumWeChatPayApplymentSubjectType, EnumWeChatPaySettlementModifyVerifyResult, EnumWeChatPaySettlementVerifyResult, EnumWxmpSubscribMessageTemplate, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetSettlementTasksQueryPaymentStatus, GetSettlementTasksQuerySupplierPaymentStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus, EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumConsoleLogAccess, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumElectronSignVerifyType, EnumEnterpriseCooperationServiceFeeCollectType, EnumEnterpriseCooperationSignStatus, EnumEnterpriseCooperationStatus, EnumEnterpriseCooperationWalletTransactionStatus, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseEmployeeSource, EnumEnterpriseRealMethod, EnumEnterpriseType, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetArrangeTaskUsersQueryApplyStatus, EnumGetCheckReceiveTaskCheckInUsersQueryStatus, EnumGetCheckReceiveTasksQueryResultItemCheckStatus, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumInsuranceSupplierAccess, EnumLogLevel, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumReadScene, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsStatus, EnumTaskApplyStatus, EnumTaskCheckReceiveMethod, EnumTaskCheckReceiveStatus, EnumTaskPaymentMethod, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementAuditStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserApplyStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckHistoryType, EnumTaskUserSubmitCheckReceiveStatus, EnumUserBankCardAccess, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, EnumWeChatPayApplymentBankAccountType, EnumWeChatPayApplymentCertType, EnumWeChatPayApplymentContactType, EnumWeChatPayApplymentFinanceType, EnumWeChatPayApplymentIdDocType, EnumWeChatPayApplymentIdHolderType, EnumWeChatPayApplymentSalesScenesType, EnumWeChatPayApplymentState, EnumWeChatPayApplymentSubjectType, EnumWeChatPaySettlementModifyVerifyResult, EnumWeChatPaySettlementVerifyResult, EnumWxmpSubscribMessageTemplate, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetSettlementTasksQueryPaymentStatus, GetSettlementTasksQuerySupplierPaymentStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus } from './src/constants/apiEnum'
+ export type { EnumAdvertisementPage, EnumAdvertisementStatus, EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumConsoleLogAccess, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumElectronSignVerifyType, EnumEnterpriseCooperationServiceFeeCollectType, EnumEnterpriseCooperationSignStatus, EnumEnterpriseCooperationStatus, EnumEnterpriseCooperationWalletTransactionStatus, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseEmployeeSource, EnumEnterpriseRealMethod, EnumEnterpriseType, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetArrangeTaskUsersQueryApplyStatus, EnumGetCheckReceiveTaskCheckInUsersQueryStatus, EnumGetCheckReceiveTasksQueryResultItemCheckStatus, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumInsuranceSupplierAccess, EnumLogLevel, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumReadScene, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsStatus, EnumStandardOrderAppointmentStatus, EnumStandardOrderPayStatus, EnumStandardOrderSettlementStatus, EnumStandardServiceRecommendStatus, EnumStandardServiceReleaseStatus, EnumTaskApplyStatus, EnumTaskCheckReceiveMethod, EnumTaskCheckReceiveStatus, EnumTaskPaymentMethod, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementAuditStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserApplyStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckHistoryType, EnumTaskUserSubmitCheckReceiveStatus, EnumUserBankCardAccess, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, EnumWeChatPayApplymentBankAccountType, EnumWeChatPayApplymentCertType, EnumWeChatPayApplymentContactType, EnumWeChatPayApplymentFinanceType, EnumWeChatPayApplymentIdDocType, EnumWeChatPayApplymentIdHolderType, EnumWeChatPayApplymentSalesScenesType, EnumWeChatPayApplymentState, EnumWeChatPayApplymentSubjectType, EnumWeChatPaySettlementModifyVerifyResult, EnumWeChatPaySettlementVerifyResult, EnumWxmpSubscribMessageTemplate, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetSettlementTasksQueryPaymentStatus, GetSettlementTasksQuerySupplierPaymentStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus, EnumAdvertisementPage, EnumAdvertisementStatus, EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumConsoleLogAccess, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumElectronSignVerifyType, EnumEnterpriseCooperationServiceFeeCollectType, EnumEnterpriseCooperationSignStatus, EnumEnterpriseCooperationStatus, EnumEnterpriseCooperationWalletTransactionStatus, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseEmployeeSource, EnumEnterpriseRealMethod, EnumEnterpriseType, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetArrangeTaskUsersQueryApplyStatus, EnumGetCheckReceiveTaskCheckInUsersQueryStatus, EnumGetCheckReceiveTasksQueryResultItemCheckStatus, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumInsuranceSupplierAccess, EnumLogLevel, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumReadScene, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsStatus, EnumStandardOrderAppointmentStatus, EnumStandardOrderPayStatus, EnumStandardOrderSettlementStatus, EnumStandardServiceRecommendStatus, EnumStandardServiceReleaseStatus, EnumTaskApplyStatus, EnumTaskCheckReceiveMethod, EnumTaskCheckReceiveStatus, EnumTaskPaymentMethod, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementAuditStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserApplyStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckHistoryType, EnumTaskUserSubmitCheckReceiveStatus, EnumUserBankCardAccess, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, EnumWeChatPayApplymentBankAccountType, EnumWeChatPayApplymentCertType, EnumWeChatPayApplymentContactType, EnumWeChatPayApplymentFinanceType, EnumWeChatPayApplymentIdDocType, EnumWeChatPayApplymentIdHolderType, EnumWeChatPayApplymentSalesScenesType, EnumWeChatPayApplymentState, EnumWeChatPayApplymentSubjectType, EnumWeChatPaySettlementModifyVerifyResult, EnumWeChatPaySettlementVerifyResult, EnumWxmpSubscribMessageTemplate, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetSettlementTasksQueryPaymentStatus, GetSettlementTasksQuerySupplierPaymentStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus } from './src/constants/apiEnum'
import('./src/constants/apiEnum')
// @ts-ignore
export type { CategoryCode, IdentityCodeEnum, EducationCodeEnum, CertificateTypeCodeEnum, WelfareCodeEnum } from './src/constants/dic'
@@ -346,6 +377,8 @@
readonly AppLocalConfig: UnwrapRef<typeof import('./src/constants/app')['AppLocalConfig']>
readonly AppType: UnwrapRef<typeof import('./src/constants/app')['AppType']>
readonly AreaType: UnwrapRef<typeof import('./src/constants/enum')['AreaType']>
+ readonly AutoSignPowerAttorneyTempUrl: UnwrapRef<typeof import('./src/constants/electronSign')['AutoSignPowerAttorneyTempUrl']>
+ readonly BooleanOptions: UnwrapRef<typeof import('./src/constants/enum')['BooleanOptions']>
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']>
@@ -354,6 +387,8 @@
readonly EducationCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['EducationCodeEnum']>
readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']>
readonly EmptyTextEditorItem: UnwrapRef<typeof import('./src/constants/editor')['EmptyTextEditorItem']>
+ readonly EnumAdvertisementPage: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumAdvertisementPage']>
+ readonly EnumAdvertisementStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumAdvertisementStatus']>
readonly EnumBillingMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumBillingMethod']>
readonly EnumBillingMethodText: UnwrapRef<typeof import('./src/constants/task')['EnumBillingMethodText']>
readonly EnumBillingMethodUnitText: UnwrapRef<typeof import('./src/constants/task')['EnumBillingMethodUnitText']>
@@ -370,15 +405,18 @@
readonly EnumElectronSignAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumElectronSignAccess']>
readonly EnumElectronSignVerifyType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumElectronSignVerifyType']>
readonly EnumEnterpriseCooperationServiceFeeCollectType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCooperationServiceFeeCollectType']>
+ readonly EnumEnterpriseCooperationServiceFeeCollectTypeText: UnwrapRef<typeof import('./src/constants/customer')['EnumEnterpriseCooperationServiceFeeCollectTypeText']>
readonly EnumEnterpriseCooperationSignStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCooperationSignStatus']>
readonly EnumEnterpriseCooperationSignStatusText: UnwrapRef<typeof import('./src/constants/supplier')['EnumEnterpriseCooperationSignStatusText']>
readonly EnumEnterpriseCooperationStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCooperationStatus']>
readonly EnumEnterpriseCooperationStatusText: UnwrapRef<typeof import('./src/constants/supplier')['EnumEnterpriseCooperationStatusText']>
readonly EnumEnterpriseCooperationWalletTransactionStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCooperationWalletTransactionStatus']>
readonly EnumEnterpriseCooperationWalletTransactionStatusText: UnwrapRef<typeof import('./src/constants/finance')['EnumEnterpriseCooperationWalletTransactionStatusText']>
+ readonly EnumEnterpriseCooperationWalletTransactionStatusTextForConfirm: UnwrapRef<typeof import('./src/constants/finance')['EnumEnterpriseCooperationWalletTransactionStatusTextForConfirm']>
readonly EnumEnterpriseCostStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCostStatus']>
readonly EnumEnterpriseCostType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCostType']>
readonly EnumEnterpriseEmployeeSource: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseEmployeeSource']>
+ readonly EnumEnterpriseEmployeeSourceText: UnwrapRef<typeof import('./src/constants/enterpriseEmployee')['EnumEnterpriseEmployeeSourceText']>
readonly EnumEnterpriseRealMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseRealMethod']>
readonly EnumEnterpriseType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseType']>
readonly EnumEnterpriseTypeText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumEnterpriseTypeText']>
@@ -424,6 +462,11 @@
readonly EnumSettlementCycleText: UnwrapRef<typeof import('./src/constants/task')['EnumSettlementCycleText']>
readonly EnumSmsAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSmsAccess']>
readonly EnumSmsStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSmsStatus']>
+ readonly EnumStandardOrderAppointmentStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumStandardOrderAppointmentStatus']>
+ readonly EnumStandardOrderPayStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumStandardOrderPayStatus']>
+ readonly EnumStandardOrderSettlementStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumStandardOrderSettlementStatus']>
+ readonly EnumStandardServiceRecommendStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumStandardServiceRecommendStatus']>
+ readonly EnumStandardServiceReleaseStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumStandardServiceReleaseStatus']>
readonly EnumTaskApplyStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskApplyStatus']>
readonly EnumTaskCheckReceiveMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveMethod']>
readonly EnumTaskCheckReceiveMethodText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskCheckReceiveMethodText']>
@@ -494,6 +537,9 @@
readonly GetTaskInfoQueryResultHireButton: UnwrapRef<typeof import('./src/constants/apiEnum')['GetTaskInfoQueryResultHireButton']>
readonly IdentityCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['IdentityCodeEnum']>
readonly ImportEnterpriseEmployeesTempPath: UnwrapRef<typeof import('./src/constants/enterpriseEmployee')['ImportEnterpriseEmployeesTempPath']>
+ readonly ImportFlexJobTempPath: UnwrapRef<typeof import('./src/constants/enterpriseEmployee')['ImportFlexJobTempPath']>
+ readonly IsConfiguredText: UnwrapRef<typeof import('./src/constants/customer')['IsConfiguredText']>
+ readonly IsRealText: UnwrapRef<typeof import('./src/constants/customer')['IsRealText']>
readonly MenuSvgIconMap: UnwrapRef<typeof import('./src/constants/menu')['MenuSvgIconMap']>
readonly ModuleColumns: UnwrapRef<typeof import('./src/constants/module')['ModuleColumns']>
readonly MyRegExp: UnwrapRef<typeof import('./src/constants/regExp')['MyRegExp']>
diff --git a/src/constants/apiEnum.ts b/src/constants/apiEnum.ts
index c98f0a4..a8c9942 100644
--- a/src/constants/apiEnum.ts
+++ b/src/constants/apiEnum.ts
@@ -1,6 +1,20 @@
/* eslint-disable */
// @ts-ignore
+/** 骞垮憡椤甸潰 */
+export enum EnumAdvertisementPage {
+ /**鐢叉柟灏忕▼搴忛椤� */
+ PartAWxmpHome = 10,
+}
+
+/** 骞垮憡鐘舵�� */
+export enum EnumAdvertisementStatus {
+ /**灞曠ず涓� */
+ InProcess = 20,
+ /**宸蹭笅鏋� */
+ Stopped = 100,
+}
+
/** 璁¤垂鏂瑰紡 */
export enum EnumBillingMethod {
/**鎸夋湀 */
@@ -165,6 +179,8 @@
Identity3 = 10,
/**浼佷笟鍥涜绱� */
Identity4 = 20,
+ /**瀹㈡埛鑷璇� */
+ Customer = 30,
}
/** 浼佷笟绫诲瀷 */
@@ -173,6 +189,8 @@
Supplier = 0,
/**鐢叉柟浼佷笟 */
PartyA = 1,
+ /**骞冲彴 */
+ Platform = 999,
}
/** 浼佷笟閽卞寘閫氶亾 */
@@ -417,74 +435,82 @@
BestSign = 10,
/**鏀粯瀹濅俊浠荤 */
AlipaySign = 20,
+ /**瀹㈡埛鑷璇� */
+ Customer = 30,
}
/** 璧勬簮鎺у埗鍣� */
export enum EnumResourceController {
/**鏁版嵁瀛楀吀 */
FlexJobServerDictionary = 0,
+ /**鏍囧噯璁㈠崟鏈嶅姟 */
+ FlexJobServerStandardService = 1,
+ /**鏍囧噯璁㈠崟 */
+ FlexJobServerStandardOrder = 2,
/**浠诲姟 */
- FlexJobServerTask = 1,
+ FlexJobServerTask = 3,
/**浠诲姟浜哄憳 */
- FlexJobServerTaskUser = 2,
+ FlexJobServerTaskUser = 4,
/**浠诲姟楠屾敹 */
- FlexJobServerTaskCheckReceive = 3,
+ FlexJobServerTaskCheckReceive = 5,
/**鎶曚繚浜у搧 */
- FlexJobServerInsuranceProduct = 4,
+ FlexJobServerInsuranceProduct = 6,
/**浼佷笟鎶曚繚浜у搧 */
- FlexJobServerEnterpriseInsuranceProduct = 5,
+ FlexJobServerEnterpriseInsuranceProduct = 7,
+ /**骞垮憡 */
+ CommonServerAdvertisement = 8,
/**缂栧彿鍦板潃 */
- CommonServerCodeUrls = 6,
+ CommonServerCodeUrls = 9,
/**鏂囦欢 */
- CommonServerFileUtils = 7,
+ CommonServerFileUtils = 10,
/**浜嬩欢 */
- CommonServerEventUtils = 8,
+ CommonServerEventUtils = 11,
/**鏂囧瓧璇嗗埆 */
- CommonServerOcrUtils = 9,
+ CommonServerOcrUtils = 12,
/**鏃ュ織璁板綍 */
- CommonServerLogRecords = 10,
+ CommonServerLogRecords = 13,
/**鍚屾鏁版嵁搴� */
- CommonServerSyncDatabase = 11,
+ CommonServerSyncDatabase = 14,
/**鐭俊宸ュ叿 */
- CommonServerSmsUtils = 12,
+ CommonServerSmsUtils = 15,
/**閰嶇疆 */
- CommonServerSettings = 13,
+ CommonServerSettings = 16,
/**宸茶 */
- CommonServerReadRecord = 14,
+ CommonServerReadRecord = 17,
/**寰俊灏忕▼搴� */
- CommonServerWxmp = 15,
+ CommonServerWxmp = 18,
/**鐢ㄦ埛璁よ瘉 */
- UserServerAuth = 16,
+ UserServerAuth = 19,
/**鐢ㄦ埛鑿滃崟 */
- UserServerMenu = 17,
+ UserServerMenu = 20,
/**鐢ㄦ埛璧勬簮 */
- UserServerResource = 18,
+ UserServerResource = 21,
/**鐢ㄦ埛瑙掕壊 */
- UserServerRole = 19,
+ UserServerRole = 22,
/**鐢ㄦ埛淇℃伅 */
- UserServerUser = 20,
+ UserServerUser = 23,
/**鐢ㄦ埛閽卞寘 */
- UserServerUserWallet = 21,
+ UserServerUserWallet = 24,
/**鐢靛瓙绛� */
- UserServerElectronSign = 22,
+ UserServerElectronSign = 25,
/**鐢ㄦ埛绠�鍘� */
- UserServerUserResume = 23,
+ UserServerUserResume = 26,
/**浼佷笟淇℃伅 */
- UserServerEnterprise = 24,
+ UserServerEnterprise = 27,
/**浼佷笟閽卞寘 */
- UserServerEnterpriseWallet = 25,
+ UserServerEnterpriseWallet = 28,
/**浼佷笟鍚堜綔閽卞寘 */
- UserServerEnterpriseCooperationWallet = 26,
+ UserServerEnterpriseCooperationWallet = 29,
/**鐏靛伐淇℃伅 */
- UserServerEnterpriseEmployee = 27,
+ UserServerEnterpriseEmployee = 30,
/**鐢靛瓙绛� */
- ElectronSignServerElectronSign = 28,
+ ElectronSignServerElectronSign = 31,
/**鐭俊 */
- ToolServerSms = 29,
+ ToolServerSms = 32,
/**灏忕▼搴� */
- ToolServerWxmp = 30,
+ ToolServerWxmp = 33,
/**淇濋櫓 */
- WaterDropCloudServerInsurance = 31,
+ WaterDropCloudServerInsurance = 34,
}
/** 璧勬簮璇锋眰鏂瑰紡 */
@@ -549,6 +575,52 @@
Fail = 30,
}
+/** 鏍囧噯璁㈠崟棰勭害鐘舵�� */
+export enum EnumStandardOrderAppointmentStatus {
+ /**寰呯‘璁� */
+ WaitSure = 10,
+ /**寰呮湇鍔� */
+ WaitServe = 20,
+ /**宸插畬鎴� */
+ Completed = 30,
+ /**宸插彇娑� */
+ Cancelled = 40,
+}
+
+/** 鏍囧噯璁㈠崟鏀粯鐘舵�� */
+export enum EnumStandardOrderPayStatus {
+ /**寰呮敮浠� */
+ Wait = 10,
+ /**宸叉敮浠� */
+ Completed = 20,
+ /**宸插彇娑� */
+ Cancelled = 30,
+}
+
+/** 鏍囧噯璁㈠崟缁撶畻鐘舵�� */
+export enum EnumStandardOrderSettlementStatus {
+ /**寰呯粨绠� */
+ Wait = 10,
+ /**宸插畬鎴� */
+ Completed = 20,
+}
+
+/** 鏍囧噯璁㈠崟鏈嶅姟鎺ㄨ崘鐘舵�� */
+export enum EnumStandardServiceRecommendStatus {
+ /**鏈帹鑽� */
+ No = 10,
+ /**宸叉帹鑽� */
+ Yes = 20,
+}
+
+/** 鏍囧噯璁㈠崟鏈嶅姟-鍙戝竷鐘舵�� */
+export enum EnumStandardServiceReleaseStatus {
+ /**鍙戝竷涓� */
+ InProcess = 20,
+ /**宸插仠姝� */
+ Stopped = 100,
+}
+
/** 浠诲姟鎶ュ悕鐘舵�� */
export enum EnumTaskApplyStatus {
/**寰呭紑濮� */
@@ -751,6 +823,8 @@
/** 鐢ㄦ埛閽卞寘鏀舵敮绫诲瀷 */
export enum EnumUserWalletTransactionType {
+ /**鏀粯 */
+ Payment = 1,
/**鏀跺叆 */
Income = 10,
/**鎻愮幇 */
diff --git a/src/constants/app.ts b/src/constants/app.ts
index c3ab8d7..090be88 100644
--- a/src/constants/app.ts
+++ b/src/constants/app.ts
@@ -3,5 +3,5 @@
export const AppLocalConfig = {
userType: EnumUserType.Enterprise,
clientType: EnumClientType.PcWeb,
- enterpriseType: EnumEnterpriseType.PartyA,
+ enterpriseType: EnumEnterpriseType.Supplier,
};
diff --git a/src/constants/customer.ts b/src/constants/customer.ts
new file mode 100644
index 0000000..a0da17c
--- /dev/null
+++ b/src/constants/customer.ts
@@ -0,0 +1,23 @@
+export const EnumEnterpriseCooperationStatusText = {
+ [EnumEnterpriseCooperationStatus.None]: '鏈悎浣�',
+ [EnumEnterpriseCooperationStatus.Completed]: '宸插悎浣�',
+};
+
+export const EnumEnterpriseCooperationSignStatusText = {
+ [EnumEnterpriseCooperationSignStatus.None]: '鏈绾�',
+ [EnumEnterpriseCooperationSignStatus.Completed]: '宸茬绾�',
+};
+
+export const EnumEnterpriseCooperationServiceFeeCollectTypeText = {
+ [EnumEnterpriseCooperationServiceFeeCollectType.Rate]: '鎸夋瘮渚�',
+ [EnumEnterpriseCooperationServiceFeeCollectType.SingleTime]: '鍗曚汉鍗曟',
+};
+
+export const IsRealText = {
+ false: '鏈疄鍚�',
+ true: '宸插疄鍚�',
+};
+export const IsConfiguredText = {
+ false: '鏈厤缃�',
+ true: '宸查厤缃�',
+};
diff --git a/src/constants/electronSign.ts b/src/constants/electronSign.ts
index 4577c54..83363f5 100644
--- a/src/constants/electronSign.ts
+++ b/src/constants/electronSign.ts
@@ -8,3 +8,5 @@
width: number;
height: number;
};
+
+export const AutoSignPowerAttorneyTempUrl = `https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/FlexJob/temp/%E3%80%90%E5%85%AC%E5%AF%B9%E5%85%AC%E3%80%91%E7%94%B5%E5%AD%90%E7%AD%BE%E5%90%8D%E6%8E%88%E6%9D%83%E4%B9%A6%EF%BC%88%E4%BB%A3%E4%B8%BA%E7%AD%BE%E7%BD%B2%26%E8%87%AA%E5%8A%A8%E7%AD%BE%EF%BC%89-V4-20220315.docx`;
diff --git a/src/constants/enterpriseEmployee.ts b/src/constants/enterpriseEmployee.ts
index 9b3808b..afcc484 100644
--- a/src/constants/enterpriseEmployee.ts
+++ b/src/constants/enterpriseEmployee.ts
@@ -8,7 +8,6 @@
[EnumTaskUserHireStatus.Wait]: '寰呭綍鐢�',
[EnumTaskUserHireStatus.Pass]: '宸插綍鐢�',
[EnumTaskUserHireStatus.Refuse]: '宸茶阿缁�',
- [EnumTaskUserHireStatus.Cancel]: '宸插彇娑�',
};
export const EnumTaskUserSignContractStatusTextForFilter = {
@@ -25,7 +24,14 @@
export const ImportEnterpriseEmployeesTempPath = `${TempFolderPath}/%E7%81%B5%E5%B7%A5%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx`;
+export const ImportFlexJobTempPath = `${TempFolderPath}/%E7%81%B5%E5%B7%A5%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BFV2.xlsx`;
+
export const EnumGetArrangeTaskUsersQueryApplyStatusText = {
[EnumGetArrangeTaskUsersQueryApplyStatus.None]: '鏈姤鍚�',
[EnumGetArrangeTaskUsersQueryApplyStatus.Completed]: '宸叉姤鍚�',
};
+
+export const EnumEnterpriseEmployeeSourceText = {
+ [EnumEnterpriseEmployeeSource.Internal]: '鍐呴儴',
+ [EnumEnterpriseEmployeeSource.External]: '澶栭儴',
+};
diff --git a/src/constants/enum.ts b/src/constants/enum.ts
index c1ba104..7a9fcd1 100644
--- a/src/constants/enum.ts
+++ b/src/constants/enum.ts
@@ -19,3 +19,8 @@
*/
Town,
}
+
+export const BooleanOptions = [
+ { label: '鏄�', value: true },
+ { label: '鍚�', value: false },
+];
diff --git a/src/constants/finance.ts b/src/constants/finance.ts
index fa071de..15f29cb 100644
--- a/src/constants/finance.ts
+++ b/src/constants/finance.ts
@@ -17,3 +17,8 @@
[EnumEnterpriseCooperationWalletTransactionStatus.Success]: '宸插埌璐�',
[EnumEnterpriseCooperationWalletTransactionStatus.Fail]: '鏈埌璐�',
};
+
+export const EnumEnterpriseCooperationWalletTransactionStatusTextForConfirm = {
+ [EnumEnterpriseCooperationWalletTransactionStatus.Success]: '宸插埌璐�',
+ [EnumEnterpriseCooperationWalletTransactionStatus.Fail]: '鏈埌璐�',
+};
diff --git a/src/constants/index.ts b/src/constants/index.ts
index e9eac59..5647ab8 100644
--- a/src/constants/index.ts
+++ b/src/constants/index.ts
@@ -17,4 +17,4 @@
export * from './finance';
export * from './common';
export * from './user';
-export * from './supplier';
+export * from './customer';
diff --git a/src/hooks/index.ts b/src/hooks/index.ts
index 7bccc40..5460294 100644
--- a/src/hooks/index.ts
+++ b/src/hooks/index.ts
@@ -11,5 +11,3 @@
export * from './sign';
export * from './settlement';
export * from './portraitTable';
-export * from './supplier';
-export * from './insurance';
diff --git a/src/hooks/useEvent.ts b/src/hooks/useEvent.ts
index 3d01572..7c89841 100644
--- a/src/hooks/useEvent.ts
+++ b/src/hooks/useEvent.ts
@@ -7,6 +7,8 @@
'taskManage:edit': any;
sureTaskSettlementOrder: any;
checkReceiveTask: any;
+ 'customerManage:add': any;
+ 'customerManage:edit': any;
};
export type GlobalEventListener<T extends keyof GlobalEvent> = (payload: GlobalEvent[T]) => any;
diff --git a/src/hooks/useUser.ts b/src/hooks/useUser.ts
index b677f4d..975d556 100644
--- a/src/hooks/useUser.ts
+++ b/src/hooks/useUser.ts
@@ -23,14 +23,14 @@
export function useUserInfoRoles({ userInfoId, userType, clientType }: UseUserInfoRolesOptions) {
const { data: userInfoRoles } = useQuery({
- queryKey: ['userServices/getUserInfoRoles'],
+ queryKey: ['userServices/getUserInfoRoles', userInfoId, userType, clientType],
queryFn: async () => {
let res = await userServices.getUserInfoRoles(
{
userInfoId: unref(userInfoId),
userType: userType,
clientType: clientType,
- enterpriseType: EnumEnterpriseType.PartyA,
+ enterpriseType: EnumEnterpriseType.Supplier,
},
{ showLoading: false }
);
diff --git a/src/services/api/advertisement.ts b/src/services/api/advertisement.ts
new file mode 100644
index 0000000..d75f8f0
--- /dev/null
+++ b/src/services/api/advertisement.ts
@@ -0,0 +1,96 @@
+/* eslint-disable */
+// @ts-ignore
+import { request } from '@/utils/request';
+
+/** 鏌ヨ骞垮憡璇︽儏 GET /api/common/advertisement/getAdvertisement */
+export async function getAdvertisement(
+ // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+ params: API.APIgetAdvertisementParams,
+ options?: API.RequestConfig
+) {
+ return request<API.GetAdvertisementQueryResult>('/api/common/advertisement/getAdvertisement', {
+ method: 'GET',
+ params: {
+ ...params,
+ },
+ ...(options || {}),
+ });
+}
+
+/** 鏌ヨ骞垮憡鏃ュ織鍒嗛〉鍒楄〃 POST /api/common/advertisement/getAdvertisementLogs */
+export async function getAdvertisementLogs(
+ body: API.GetAdvertisementLogsQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.HistoryQueryResult>('/api/common/advertisement/getAdvertisementLogs', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 鏌ヨ骞垮憡鍒嗛〉鍒楄〃 POST /api/common/advertisement/getAdvertisements */
+export async function getAdvertisements(
+ body: API.GetAdvertisementsQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetAdvertisementsQueryResult>('/api/common/advertisement/getAdvertisements', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 鏌ヨ灞曠ず骞垮憡鍒楄〃 GET /api/common/advertisement/getShowAdvertisements */
+export async function getShowAdvertisements(
+ // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+ params: API.APIgetShowAdvertisementsParams,
+ options?: API.RequestConfig
+) {
+ return request<API.GetShowAdvertisementsQueryResultItem[]>(
+ '/api/common/advertisement/getShowAdvertisements',
+ {
+ method: 'GET',
+ params: {
+ ...params,
+ },
+ ...(options || {}),
+ }
+ );
+}
+
+/** 淇濆瓨骞垮憡 POST /api/common/advertisement/saveAdvertisement */
+export async function saveAdvertisement(
+ body: API.SaveAdvertisementCommand,
+ options?: API.RequestConfig
+) {
+ return request<string>('/api/common/advertisement/saveAdvertisement', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 璁剧疆骞垮憡鐘舵�� PUT /api/common/advertisement/setAdvertisementStatus */
+export async function setAdvertisementStatus(
+ body: API.SetAdvertisementStatusCommand,
+ options?: API.RequestConfig
+) {
+ return request<number>('/api/common/advertisement/setAdvertisementStatus', {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
diff --git a/src/services/api/auth.ts b/src/services/api/auth.ts
index 87bd6be..2cb1c46 100644
--- a/src/services/api/auth.ts
+++ b/src/services/api/auth.ts
@@ -32,6 +32,21 @@
});
}
+/** 閫夋嫨寰俊鎵嬫満鍙� POST /api/user/auth/chooseWxmpPhoneNumber */
+export async function chooseWxmpPhoneNumber(
+ body: API.ChooseWxmpPhoneNumberCommand,
+ options?: API.RequestConfig
+) {
+ return request<boolean>('/api/user/auth/chooseWxmpPhoneNumber', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
/** 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅 GET /api/user/auth/getAliyunOSSAcs */
export async function getAliyunOSSAcs(
// 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
diff --git a/src/services/api/enterprise.ts b/src/services/api/enterprise.ts
index 346e2eb..90c4a39 100644
--- a/src/services/api/enterprise.ts
+++ b/src/services/api/enterprise.ts
@@ -2,6 +2,36 @@
// @ts-ignore
import { request } from '@/utils/request';
+/** 鍒犻櫎浼佷笟鍦板潃 DELETE /api/user/enterprise/deleteEnterpriseAddress */
+export async function deleteEnterpriseAddress(
+ body: API.DeleteEnterpriseAddressCommand,
+ options?: API.RequestConfig
+) {
+ return request<number>('/api/user/enterprise/deleteEnterpriseAddress', {
+ method: 'DELETE',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 绂佺敤浼佷笟 POST /api/user/enterprise/disabledEnterprise */
+export async function disabledEnterprise(
+ body: API.DisabledEnterpriseCommand,
+ options?: API.RequestConfig
+) {
+ return request<number>('/api/user/enterprise/disabledEnterprise', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
/** 鏌ヨ浼佷笟璇︽儏 GET /api/user/enterprise/getEnterprise */
export async function getEnterprise(
// 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
@@ -17,6 +47,39 @@
});
}
+/** 鏌ヨ浼佷笟鍦板潃璇︽儏 GET /api/user/enterprise/getEnterpriseAddress */
+export async function getEnterpriseAddress(
+ // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+ params: API.APIgetEnterpriseAddressParams,
+ options?: API.RequestConfig
+) {
+ return request<API.GetEnterpriseAddressQueryResult>('/api/user/enterprise/getEnterpriseAddress', {
+ method: 'GET',
+ params: {
+ ...params,
+ },
+ ...(options || {}),
+ });
+}
+
+/** 鏌ヨ浼佷笟鍦板潃鍒嗛〉鍒楄〃 POST /api/user/enterprise/getEnterpriseAddresses */
+export async function getEnterpriseAddresses(
+ body: API.GetEnterpriseAddressesQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetEnterpriseAddressesQueryResult>(
+ '/api/user/enterprise/getEnterpriseAddresses',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
/** 鏌ヨ浼佷笟鐢靛瓙绛鹃厤缃� GET /api/user/enterprise/getEnterpriseElectronSignSetting */
export async function getEnterpriseElectronSignSetting(
// 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
@@ -169,6 +232,21 @@
});
}
+/** 淇濆瓨浼佷笟鍦板潃 POST /api/user/enterprise/saveEnterpriseAddress */
+export async function saveEnterpriseAddress(
+ body: API.SaveEnterpriseAddressCommand,
+ options?: API.RequestConfig
+) {
+ return request<string>('/api/user/enterprise/saveEnterpriseAddress', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
/** 淇濆瓨浼佷笟璐圭敤 POST /api/user/enterprise/saveEnterpriseCost */
export async function saveEnterpriseCost(
body: API.SaveEnterpriseCostCommand,
@@ -229,6 +307,21 @@
});
}
+/** 璁剧疆浼佷笟鐧诲綍鐢ㄦ埛淇℃伅 PUT /api/user/enterprise/setEnterpriseLoginInfo */
+export async function setEnterpriseLoginInfo(
+ body: API.SetEnterpriseLoginInfoCommand,
+ options?: API.RequestConfig
+) {
+ return request<string>('/api/user/enterprise/setEnterpriseLoginInfo', {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
/** 璁剧疆浼佷笟鐭俊閰嶇疆 PUT /api/user/enterprise/setEnterpriseSmsSetting */
export async function setEnterpriseSmsSetting(
body: API.SetEnterpriseSmsSettingCommand,
diff --git a/src/services/api/index.ts b/src/services/api/index.ts
index 2dd6b34..566987c 100644
--- a/src/services/api/index.ts
+++ b/src/services/api/index.ts
@@ -14,10 +14,13 @@
import * as logRecords from './logRecords';
import * as dictionary from './dictionary';
import * as taskCheckReceive from './taskCheckReceive';
+import * as standardService from './standardService';
+import * as userWallet from './userWallet';
import * as userResume from './userResume';
import * as auth from './auth';
import * as taskUser from './taskUser';
import * as enterpriseInsuranceProduct from './enterpriseInsuranceProduct';
+import * as standardOrder from './standardOrder';
import * as eventUtils from './eventUtils';
import * as enterpriseCooperationWallet from './enterpriseCooperationWallet';
import * as insuranceProduct from './insuranceProduct';
@@ -25,7 +28,7 @@
import * as syncDatabase from './syncDatabase';
import * as menu from './menu';
import * as sms from './sms';
-import * as userWallet from './userWallet';
+import * as advertisement from './advertisement';
import * as fileUtils from './fileUtils';
import * as settings from './settings';
import * as wxmpUtils from './wxmpUtils';
@@ -42,10 +45,13 @@
logRecords,
dictionary,
taskCheckReceive,
+ standardService,
+ userWallet,
userResume,
auth,
taskUser,
enterpriseInsuranceProduct,
+ standardOrder,
eventUtils,
enterpriseCooperationWallet,
insuranceProduct,
@@ -53,7 +59,7 @@
syncDatabase,
menu,
sms,
- userWallet,
+ advertisement,
fileUtils,
settings,
wxmpUtils,
diff --git a/src/services/api/standardOrder.ts b/src/services/api/standardOrder.ts
new file mode 100644
index 0000000..4890389
--- /dev/null
+++ b/src/services/api/standardOrder.ts
@@ -0,0 +1,162 @@
+/* eslint-disable */
+// @ts-ignore
+import { request } from '@/utils/request';
+
+/** 棰勭害涓嬪崟锛堟爣鍑嗚鍗曪級 POST /api/flexjob/standardOrder/addStandardOrder */
+export async function addStandardOrder(
+ body: API.AddStandardOrderCommand,
+ options?: API.RequestConfig
+) {
+ return request<string>('/api/flexjob/standardOrder/addStandardOrder', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 鏍囧噯璁㈠崟鍙栨秷 POST /api/flexjob/standardOrder/cancelStandardOrderAppointment */
+export async function cancelStandardOrderAppointment(
+ body: API.CancelStandardOrderAppointmentCommand,
+ options?: API.RequestConfig
+) {
+ return request<string>('/api/flexjob/standardOrder/cancelStandardOrderAppointment', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 鏌ヨ鏍囧噯璁㈠崟璇︽儏 GET /api/flexjob/standardOrder/getStandardOrder */
+export async function getStandardOrder(
+ // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+ params: API.APIgetStandardOrderParams,
+ options?: API.RequestConfig
+) {
+ return request<API.GetStandardOrderQueryResult>('/api/flexjob/standardOrder/getStandardOrder', {
+ method: 'GET',
+ params: {
+ ...params,
+ },
+ ...(options || {}),
+ });
+}
+
+/** 鏌ヨ鏍囧噯璁㈠崟棰勭害鍒嗛〉鍒楄〃 POST /api/flexjob/standardOrder/getStandardOrderAppointments */
+export async function getStandardOrderAppointments(
+ body: API.GetStandardOrderAppointmentsQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetStandardOrderAppointmentsQueryResult>(
+ '/api/flexjob/standardOrder/getStandardOrderAppointments',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
+/** 鏌ヨ鏍囧噯璁㈠崟鏀粯鍒嗛〉鍒楄〃 POST /api/flexjob/standardOrder/getStandardOrderPays */
+export async function getStandardOrderPays(
+ body: API.GetStandardOrderPaysQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetStandardOrderPaysQueryResult>(
+ '/api/flexjob/standardOrder/getStandardOrderPays',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
+/** 鏌ヨ鏍囧噯璁㈠崟鍒嗛〉鍒楄〃 POST /api/flexjob/standardOrder/getStandardOrders */
+export async function getStandardOrders(
+ body: API.GetStandardOrdersQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetStandardOrdersQueryResult>('/api/flexjob/standardOrder/getStandardOrders', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 鏌ヨ鏍囧噯璁㈠崟缁撶畻鍒嗛〉鍒楄〃 POST /api/flexjob/standardOrder/getStandardOrderSettlements */
+export async function getStandardOrderSettlements(
+ body: API.GetStandardOrderSettlementsQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetStandardOrderSettlementsQueryResult>(
+ '/api/flexjob/standardOrder/getStandardOrderSettlements',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
+/** 鏍囧噯璁㈠崟鏀粯 POST /api/flexjob/standardOrder/payStandardOrder */
+export async function payStandardOrder(
+ body: API.PayStandardOrderCommand,
+ options?: API.RequestConfig
+) {
+ return request<API.PayStandardOrderCommandResult>('/api/flexjob/standardOrder/payStandardOrder', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 鏍囧噯璁㈠崟鏈嶅姟纭 POST /api/flexjob/standardOrder/sureStandardOrder */
+export async function sureStandardOrder(
+ body: API.SureStandardOrderCommand,
+ options?: API.RequestConfig
+) {
+ return request<string>('/api/flexjob/standardOrder/sureStandardOrder', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 鏍囧噯璁㈠崟纭棰勭害 POST /api/flexjob/standardOrder/sureStandardOrderAppointment */
+export async function sureStandardOrderAppointment(
+ body: API.SureStandardOrderAppointmentCommand,
+ options?: API.RequestConfig
+) {
+ return request<string>('/api/flexjob/standardOrder/sureStandardOrderAppointment', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
diff --git a/src/services/api/standardService.ts b/src/services/api/standardService.ts
new file mode 100644
index 0000000..43d02bc
--- /dev/null
+++ b/src/services/api/standardService.ts
@@ -0,0 +1,153 @@
+/* eslint-disable */
+// @ts-ignore
+import { request } from '@/utils/request';
+
+/** 鏀惰棌鏍囧噯璁㈠崟鏈嶅姟 POST /api/flexjob/standardService/collectionStandardService */
+export async function collectionStandardService(
+ body: API.CollectionStandardServiceCommand,
+ options?: API.RequestConfig
+) {
+ return request<number>('/api/flexjob/standardService/collectionStandardService', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 鏌ヨ鏍囧噯璁㈠崟鏈嶅姟璇︽儏 GET /api/flexjob/standardService/getStandardService */
+export async function getStandardService(
+ // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+ params: API.APIgetStandardServiceParams,
+ options?: API.RequestConfig
+) {
+ return request<API.GetStandardServiceQueryResult>(
+ '/api/flexjob/standardService/getStandardService',
+ {
+ method: 'GET',
+ params: {
+ ...params,
+ },
+ ...(options || {}),
+ }
+ );
+}
+
+/** 鏌ヨ鏍囧噯璁㈠崟鏈嶅姟璇勮鍒嗛〉鍒楄〃 POST /api/flexjob/standardService/getStandardServiceComments */
+export async function getStandardServiceComments(
+ body: API.GetStandardServiceCommentsQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetStandardServiceCommentsQueryResult>(
+ '/api/flexjob/standardService/getStandardServiceComments',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
+/** 鏌ヨ鏍囧噯璁㈠崟鏈嶅姟鍒嗛〉鍒楄〃 POST /api/flexjob/standardService/getStandardServices */
+export async function getStandardServices(
+ body: API.GetStandardServicesQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetStandardServicesQueryResult>(
+ '/api/flexjob/standardService/getStandardServices',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
+/** 鏌ヨ鏍囧噯璁㈠崟鏈嶅姟浜哄憳鍒嗛〉鍒楄〃 POST /api/flexjob/standardService/getStandardServiceServers */
+export async function getStandardServiceServers(
+ body: API.GetStandardServiceServersQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetStandardServiceServersQueryResult>(
+ '/api/flexjob/standardService/getStandardServiceServers',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
+/** 鏌ヨ鏍囧噯璁㈠崟鏈嶅姟渚涘簲鍟嗗垎椤靛垪琛� POST /api/flexjob/standardService/getStandardServiceSupplierEnterprises */
+export async function getStandardServiceSupplierEnterprises(
+ body: API.GetStandardServiceSupplierEnterprisesQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetStandardServiceSupplierEnterprisesQueryResult>(
+ '/api/flexjob/standardService/getStandardServiceSupplierEnterprises',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
+/** 淇濆瓨鏍囧噯璁㈠崟鏈嶅姟 POST /api/flexjob/standardService/saveStandardService */
+export async function saveStandardService(
+ body: API.SaveStandardServiceCommand,
+ options?: API.RequestConfig
+) {
+ return request<string>('/api/flexjob/standardService/saveStandardService', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 璁剧疆鏍囧噯璁㈠崟鏈嶅姟鏄惁鎺ㄨ崘 PUT /api/flexjob/standardService/setStandardServiceRecommendStatus */
+export async function setStandardServiceRecommendStatus(
+ body: API.SetStandardServiceRecommendStatusCommand,
+ options?: API.RequestConfig
+) {
+ return request<number>('/api/flexjob/standardService/setStandardServiceRecommendStatus', {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 璁剧疆鏍囧噯璁㈠崟鏈嶅姟鍙戝竷鐘舵�� PUT /api/flexjob/standardService/setStandardServiceReleaseStatus */
+export async function setStandardServiceReleaseStatus(
+ body: API.SetStandardServiceReleaseStatusCommand,
+ options?: API.RequestConfig
+) {
+ return request<number>('/api/flexjob/standardService/setStandardServiceReleaseStatus', {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index af06ffb..bc58f45 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -25,6 +25,60 @@
contractEnd?: string;
}
+ interface AddStandardOrderCommand {
+ /** 鏈嶅姟Id */
+ serviceId?: string;
+ /** 鏈嶅姟鍚� */
+ serviceName?: string;
+ /** 鏈嶅姟鍗曞彿 */
+ serviceCode?: string;
+ /** 瑙勬牸 */
+ specId?: string;
+ /** 瑙勬牸鍚嶇О */
+ specName?: string;
+ /** 瑙勬牸浠锋牸 */
+ specPrice?: number;
+ /** 瑙勬牸鏁伴噺 */
+ specNumber?: number;
+ /** 鍦板潃Id */
+ addressId?: string;
+ /** 濮撳悕 */
+ name?: string;
+ /** 鑱旂郴鐢佃瘽 */
+ contactPhoneNumber?: string;
+ /** 鐪佷唤缂栧彿 */
+ provinceCode?: string;
+ /** 鐪佷唤 */
+ provinceContent?: string;
+ /** 鍩庡競缂栧彿 */
+ cityCode?: string;
+ /** 鍩庡競 */
+ cityContent?: string;
+ /** 鍖虹紪鍙� */
+ areaCode?: string;
+ /** 鍖� */
+ areaContent?: string;
+ /** 璇︾粏鍦板潃 */
+ addressName?: string;
+ /** 闂ㄧ墝鍙� */
+ addressDetail?: string;
+ /** 缁忓害 */
+ longitude?: number;
+ /** 绾害 */
+ latitude?: number;
+ /** 鏈嶅姟璧峰鏃堕棿 */
+ beginTime?: string;
+ /** 鏈嶅姟鎴鏃堕棿 */
+ endTime?: string;
+ /** 渚涘簲鍟咺d */
+ supplierEnterpriseId?: string;
+ /** 鏈嶅姟浜哄憳Id */
+ enterpriseEmployeeIds?: string[];
+ /** 澶囨敞 */
+ remark?: string;
+ payAccess?: EnumUserBankCardAccess;
+ }
+
interface AgainSureTaskSettlementOrderRosterCommand {
/** 鍚嶅崟Id */
id?: string;
@@ -35,6 +89,11 @@
request?: CheckHealthQuery;
}
+ interface APIgetAdvertisementParams {
+ /** Id */
+ id?: string;
+ }
+
interface APIgetAliyunOSSAcsParams {
/** 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅 */
request?: GetAliyunOSSAcsQuery;
@@ -114,6 +173,16 @@
maxDeep?: number;
/** 鎼哄甫涓嬬骇 */
withChildren?: boolean;
+ /** 瀛楁1 */
+ field1?: string;
+ /** 瀛楁2 */
+ field2?: string;
+ /** 瀛楁3 */
+ field3?: string;
+ /** 瀛楁4 */
+ field4?: string;
+ /** 瀛楁5 */
+ field5?: string;
}
interface APIgetEnabledElectronSignSettingsParams {
@@ -123,6 +192,11 @@
all?: boolean;
}
+ interface APIgetEnterpriseAddressParams {
+ /** Id */
+ id?: string;
+ }
+
interface APIgetEnterpriseContractTemplateSelectParams {
/** 浼佷笟Id */
enterpriseId?: string;
@@ -312,6 +386,21 @@
operatorToken?: string;
}
+ interface APIgetShowAdvertisementsParams {
+ /** 椤甸潰 */
+ page?: EnumAdvertisementPage;
+ }
+
+ interface APIgetStandardOrderParams {
+ /** 璁㈠崟Id */
+ id?: string;
+ }
+
+ interface APIgetStandardServiceParams {
+ /** Id */
+ id?: string;
+ }
+
interface APIgetSupplierEnterpriseSelectParams {
/** 鏌ヨ渚涘簲鍟嗛�夋嫨鍣ㄦ暟鎹� */
request?: GetSupplierEnterpriseSelectQuery;
@@ -591,6 +680,13 @@
insuranceSupplierId?: string;
}
+ interface CancelStandardOrderAppointmentCommand {
+ /** 璁㈠崟Id */
+ id?: string;
+ /** 鍙栨秷鍘熷洜 */
+ appointmentCancelReason?: string;
+ }
+
interface ChangePhoneNumberCommand {
/** 鎵嬫満鍙风爜 */
phoneNumber: string;
@@ -645,6 +741,8 @@
checkReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus;
}
+ type ChooseWxmpPhoneNumberCommand = Record<string, any>;
+
type ClearTaskCollectCommand = Record<string, any>;
interface CloseEnterpriseWalletCommand {
@@ -653,6 +751,13 @@
access?: EnumEnterpriseWalletAccess;
}
+ interface CollectionStandardServiceCommand {
+ /** Id */
+ ids?: string[];
+ /** 鏄惁鏀惰棌 */
+ isCollect?: boolean;
+ }
+
interface CollectTaskCommand {
/** 浠诲姟Id */
ids?: string[];
@@ -676,6 +781,10 @@
ids: string[];
}
+ interface DeleteEnterpriseAddressCommand {
+ ids: string[];
+ }
+
interface DeleteMenuCommand {
ids: string[];
}
@@ -696,6 +805,12 @@
ids: string[];
}
+ interface DisabledEnterpriseCommand {
+ ids?: string[];
+ /** 鏄惁宸茬鐢� */
+ isDisabled?: boolean;
+ }
+
interface EditEnterpriseEmployeeCommand {
/** Id */
id?: string;
@@ -813,6 +928,18 @@
enterpriseId?: string;
}
+ enum EnumAdvertisementPage {
+ /**鐢叉柟灏忕▼搴忛椤� */
+ PartAWxmpHome = 10,
+ }
+
+ enum EnumAdvertisementStatus {
+ /**灞曠ず涓� */
+ InProcess = 20,
+ /**宸蹭笅鏋� */
+ Stopped = 100,
+ }
+
enum EnumBillingMethod {
/**鎸夋湀 */
Month = 10,
@@ -958,6 +1085,8 @@
Identity3 = 10,
/**浼佷笟鍥涜绱� */
Identity4 = 20,
+ /**瀹㈡埛鑷璇� */
+ Customer = 30,
}
enum EnumEnterpriseType {
@@ -965,6 +1094,8 @@
Supplier = 0,
/**鐢叉柟浼佷笟 */
PartyA = 1,
+ /**骞冲彴 */
+ Platform = 999,
}
enum EnumEnterpriseWalletAccess {
@@ -1186,73 +1317,81 @@
BestSign = 10,
/**鏀粯瀹濅俊浠荤 */
AlipaySign = 20,
+ /**瀹㈡埛鑷璇� */
+ Customer = 30,
}
enum EnumResourceController {
/**鏁版嵁瀛楀吀 */
FlexJobServerDictionary = 0,
+ /**鏍囧噯璁㈠崟鏈嶅姟 */
+ FlexJobServerStandardService = 1,
+ /**鏍囧噯璁㈠崟 */
+ FlexJobServerStandardOrder = 2,
/**浠诲姟 */
- FlexJobServerTask = 1,
+ FlexJobServerTask = 3,
/**浠诲姟浜哄憳 */
- FlexJobServerTaskUser = 2,
+ FlexJobServerTaskUser = 4,
/**浠诲姟楠屾敹 */
- FlexJobServerTaskCheckReceive = 3,
+ FlexJobServerTaskCheckReceive = 5,
/**鎶曚繚浜у搧 */
- FlexJobServerInsuranceProduct = 4,
+ FlexJobServerInsuranceProduct = 6,
/**浼佷笟鎶曚繚浜у搧 */
- FlexJobServerEnterpriseInsuranceProduct = 5,
+ FlexJobServerEnterpriseInsuranceProduct = 7,
+ /**骞垮憡 */
+ CommonServerAdvertisement = 8,
/**缂栧彿鍦板潃 */
- CommonServerCodeUrls = 6,
+ CommonServerCodeUrls = 9,
/**鏂囦欢 */
- CommonServerFileUtils = 7,
+ CommonServerFileUtils = 10,
/**浜嬩欢 */
- CommonServerEventUtils = 8,
+ CommonServerEventUtils = 11,
/**鏂囧瓧璇嗗埆 */
- CommonServerOcrUtils = 9,
+ CommonServerOcrUtils = 12,
/**鏃ュ織璁板綍 */
- CommonServerLogRecords = 10,
+ CommonServerLogRecords = 13,
/**鍚屾鏁版嵁搴� */
- CommonServerSyncDatabase = 11,
+ CommonServerSyncDatabase = 14,
/**鐭俊宸ュ叿 */
- CommonServerSmsUtils = 12,
+ CommonServerSmsUtils = 15,
/**閰嶇疆 */
- CommonServerSettings = 13,
+ CommonServerSettings = 16,
/**宸茶 */
- CommonServerReadRecord = 14,
+ CommonServerReadRecord = 17,
/**寰俊灏忕▼搴� */
- CommonServerWxmp = 15,
+ CommonServerWxmp = 18,
/**鐢ㄦ埛璁よ瘉 */
- UserServerAuth = 16,
+ UserServerAuth = 19,
/**鐢ㄦ埛鑿滃崟 */
- UserServerMenu = 17,
+ UserServerMenu = 20,
/**鐢ㄦ埛璧勬簮 */
- UserServerResource = 18,
+ UserServerResource = 21,
/**鐢ㄦ埛瑙掕壊 */
- UserServerRole = 19,
+ UserServerRole = 22,
/**鐢ㄦ埛淇℃伅 */
- UserServerUser = 20,
+ UserServerUser = 23,
/**鐢ㄦ埛閽卞寘 */
- UserServerUserWallet = 21,
+ UserServerUserWallet = 24,
/**鐢靛瓙绛� */
- UserServerElectronSign = 22,
+ UserServerElectronSign = 25,
/**鐢ㄦ埛绠�鍘� */
- UserServerUserResume = 23,
+ UserServerUserResume = 26,
/**浼佷笟淇℃伅 */
- UserServerEnterprise = 24,
+ UserServerEnterprise = 27,
/**浼佷笟閽卞寘 */
- UserServerEnterpriseWallet = 25,
+ UserServerEnterpriseWallet = 28,
/**浼佷笟鍚堜綔閽卞寘 */
- UserServerEnterpriseCooperationWallet = 26,
+ UserServerEnterpriseCooperationWallet = 29,
/**鐏靛伐淇℃伅 */
- UserServerEnterpriseEmployee = 27,
+ UserServerEnterpriseEmployee = 30,
/**鐢靛瓙绛� */
- ElectronSignServerElectronSign = 28,
+ ElectronSignServerElectronSign = 31,
/**鐭俊 */
- ToolServerSms = 29,
+ ToolServerSms = 32,
/**灏忕▼搴� */
- ToolServerWxmp = 30,
+ ToolServerWxmp = 33,
/**淇濋櫓 */
- WaterDropCloudServerInsurance = 31,
+ WaterDropCloudServerInsurance = 34,
}
enum EnumResourceMethod {
@@ -1312,6 +1451,47 @@
Fail = 30,
}
+ enum EnumStandardOrderAppointmentStatus {
+ /**寰呯‘璁� */
+ WaitSure = 10,
+ /**寰呮湇鍔� */
+ WaitServe = 20,
+ /**宸插畬鎴� */
+ Completed = 30,
+ /**宸插彇娑� */
+ Cancelled = 40,
+ }
+
+ enum EnumStandardOrderPayStatus {
+ /**寰呮敮浠� */
+ Wait = 10,
+ /**宸叉敮浠� */
+ Completed = 20,
+ /**宸插彇娑� */
+ Cancelled = 30,
+ }
+
+ enum EnumStandardOrderSettlementStatus {
+ /**寰呯粨绠� */
+ Wait = 10,
+ /**宸插畬鎴� */
+ Completed = 20,
+ }
+
+ enum EnumStandardServiceRecommendStatus {
+ /**鏈帹鑽� */
+ No = 10,
+ /**宸叉帹鑽� */
+ Yes = 20,
+ }
+
+ enum EnumStandardServiceReleaseStatus {
+ /**鍙戝竷涓� */
+ InProcess = 20,
+ /**宸插仠姝� */
+ Stopped = 100,
+ }
+
enum EnumTaskApplyStatus {
/**寰呭紑濮� */
Wait = 10,
@@ -1492,6 +1672,8 @@
}
enum EnumUserWalletTransactionType {
+ /**鏀粯 */
+ Payment = 1,
/**鏀跺叆 */
Income = 10,
/**鎻愮幇 */
@@ -1859,6 +2041,42 @@
timestamp?: number;
}
+ interface FriendlyResultGetAdvertisementQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetAdvertisementQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetAdvertisementsQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetAdvertisementsQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
interface FriendlyResultGetAliyunOSSAcsQueryResult {
/** 璺熻釜Id */
traceId?: string;
@@ -2165,6 +2383,42 @@
timestamp?: number;
}
+ interface FriendlyResultGetEnterpriseAddressesQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetEnterpriseAddressesQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetEnterpriseAddressQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetEnterpriseAddressQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
interface FriendlyResultGetEnterpriseContractTemplateLogsQueryResult {
/** 璺熻釜Id */
traceId?: string;
@@ -3011,6 +3265,186 @@
timestamp?: number;
}
+ interface FriendlyResultGetStandardOrderAppointmentsQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetStandardOrderAppointmentsQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetStandardOrderPaysQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetStandardOrderPaysQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetStandardOrderQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetStandardOrderQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetStandardOrderSettlementsQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetStandardOrderSettlementsQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetStandardOrdersQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetStandardOrdersQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetStandardServiceCommentsQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetStandardServiceCommentsQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetStandardServiceQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetStandardServiceQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetStandardServiceServersQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetStandardServiceServersQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetStandardServicesQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetStandardServicesQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetStandardServiceSupplierEnterprisesQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetStandardServiceSupplierEnterprisesQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
interface FriendlyResultGetTaskEnterpriseQueryResult {
/** 璺熻釜Id */
traceId?: string;
@@ -3336,6 +3770,24 @@
timestamp?: number;
}
+ interface FriendlyResultHistoryQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: HistoryQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
interface FriendlyResultImportEnterpriseEmployeesCommandResult {
/** 璺熻釜Id */
traceId?: string;
@@ -3562,6 +4014,25 @@
timestamp?: number;
}
+ interface FriendlyResultListGetShowAdvertisementsQueryResultItem {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ /** 鏁版嵁 */
+ data?: GetShowAdvertisementsQueryResultItem[];
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
interface FriendlyResultListGetUserInfoRolesQueryResultItem {
/** 璺熻釜Id */
traceId?: string;
@@ -3914,6 +4385,24 @@
timestamp?: number;
}
+ interface FriendlyResultPayStandardOrderCommandResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: PayStandardOrderCommandResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
interface FriendlyResultPersonalUserElectronSignCommandResult {
/** 璺熻釜Id */
traceId?: string;
@@ -4041,6 +4530,68 @@
timestamp?: number;
}
+ interface GetAdvertisementLogsQuery {
+ /** Id */
+ id?: string;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetAdvertisementQueryResult {
+ /** Id */
+ id?: string;
+ page?: EnumAdvertisementPage;
+ /** 骞垮憡鍚嶇О */
+ name?: string;
+ /** 寮�濮嬫椂闂� */
+ beginTime?: string;
+ /** 缁撴潫鏃堕棿 */
+ endTime?: string;
+ /** 骞垮憡鍥剧墖 */
+ file?: string;
+ /** 骞垮憡閾炬帴 */
+ url?: string;
+ status?: EnumAdvertisementStatus;
+ /** 鎺掑簭 */
+ sort?: number;
+ }
+
+ interface GetAdvertisementsQuery {
+ /** 鍏抽敭瀛楋紙骞垮憡鍚嶇О锛� */
+ keywords?: string;
+ /** 骞垮憡寮�濮嬫椂闂� */
+ beginTime?: string;
+ /** 骞垮憡缁撴潫鏃堕棿 */
+ endTime?: string;
+ page?: EnumAdvertisementPage;
+ status?: EnumAdvertisementStatus;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetAdvertisementsQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetAdvertisementsQueryResultItem[];
+ }
+
+ interface GetAdvertisementsQueryResultItem {
+ /** Id */
+ id?: string;
+ page?: EnumAdvertisementPage;
+ /** 骞垮憡鍚嶇О */
+ name?: string;
+ /** 寮�濮嬫椂闂� */
+ beginTime?: string;
+ /** 缁撴潫鏃堕棿 */
+ endTime?: string;
+ /** 骞垮憡鍥剧墖 */
+ file?: string;
+ /** 骞垮憡閾炬帴 */
+ url?: string;
+ status?: EnumAdvertisementStatus;
+ /** 鎺掑簭 */
+ sort?: number;
+ }
+
type GetAlipayNotifyCommand = Record<string, any>;
type GetAliyunOSSAcsQuery = Record<string, any>;
@@ -4524,6 +5075,10 @@
checkReceiveMethods?: EnumTaskCheckReceiveMethod[];
/** 鏄惁鍐呴儴浠诲姟 */
isInternal?: boolean;
+ /** 鑱旂郴浜� */
+ contacts?: string;
+ /** 鑱旂郴鐢佃瘽 */
+ contactPhoneNumber?: string;
}
interface GetCodeUrlQueryResult {
@@ -4953,6 +5508,60 @@
mergeSignCost?: number;
}
+ interface GetEnterpriseAddressesQuery {
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetEnterpriseAddressesQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetEnterpriseAddressesQueryResultItem[];
+ }
+
+ interface GetEnterpriseAddressesQueryResultItem {
+ /** Id */
+ id?: string;
+ /** 濮撳悕 */
+ name?: string;
+ /** 鑱旂郴鐢佃瘽 */
+ contactPhoneNumber?: string;
+ /** 鐪佸競鍖�+璇︾粏鍦板潃+闂ㄧ墝鍙� */
+ addressDetail?: string;
+ /** 鏄惁榛樿 */
+ isDefault?: boolean;
+ }
+
+ interface GetEnterpriseAddressQueryResult {
+ /** Id */
+ id?: string;
+ /** 濮撳悕 */
+ name?: string;
+ /** 鑱旂郴鐢佃瘽 */
+ contactPhoneNumber?: string;
+ /** 鐪佷唤缂栧彿 */
+ provinceCode?: string;
+ /** 鐪佷唤 */
+ provinceContent?: string;
+ /** 鍩庡競缂栧彿 */
+ cityCode?: string;
+ /** 鍩庡競 */
+ cityContent?: string;
+ /** 鍖虹紪鍙� */
+ areaCode?: string;
+ /** 鍖� */
+ areaContent?: string;
+ /** 璇︾粏鍦板潃 */
+ addressName?: string;
+ /** 闂ㄧ墝鍙� */
+ addressDetail?: string;
+ /** 缁忓害 */
+ longitude?: number;
+ /** 绾害 */
+ latitude?: number;
+ /** 鏄惁榛樿 */
+ isDefault?: boolean;
+ }
+
interface GetEnterpriseContractTemplateLogsQuery {
/** 妯℃澘Id */
id?: string;
@@ -5245,13 +5854,22 @@
interface GetEnterpriseLoginInfoQueryResult {
/** Id */
id?: string;
+ type?: EnumUserType;
/** 澶村儚 */
avatar?: string;
/** 濮撳悕 */
name?: string;
+ /** 鎵嬫満鍙� */
+ contactPhoneNumber?: string;
gender?: EnumUserGender;
+ /** 钀ヤ笟鎵х収鐓х墖 */
+ licenseImage?: string;
+ /** 浼佷笟Id */
+ enterpriseId?: string;
/** 浼佷笟鍏ㄧО */
enterpriseName?: string;
+ /** 缁熶竴绀句細淇$敤浠g爜 */
+ societyCreditCode?: string;
/** 浼佷笟鏄惁瀹炲悕 */
enterpriseIsReal?: boolean;
/** 瑙掕壊 */
@@ -5269,6 +5887,7 @@
interface GetEnterpriseQueryResult {
/** Id */
id?: string;
+ type?: EnumEnterpriseType;
/** 浼佷笟鍏ㄧО */
enterpriseName?: string;
/** 缁熶竴绀句細淇$敤浠g爜 */
@@ -5301,6 +5920,15 @@
userName?: string;
/** 鍦ㄦ嫑宀椾綅鏁伴噺 */
taskCount?: number;
+ cooperationStatus?: EnumEnterpriseCooperationStatus;
+ signStatus?: EnumEnterpriseCooperationSignStatus;
+ /** 鍚堜綔鍗忚 */
+ cooperationAgreementUrl?: string;
+ serviceFeeCollectType?: EnumEnterpriseCooperationServiceFeeCollectType;
+ /** 鏈嶅姟璐� */
+ serviceFeeRate?: number;
+ /** 鍙戠エ绋庣偣 */
+ invoiceTaxPointRate?: number;
}
type GetEnterpriseReceiveAccountQuery = Record<string, any>;
@@ -5329,6 +5957,11 @@
keywords?: string;
/** 鏄惁宸查厤缃� */
isConfigured?: boolean;
+ type?: EnumEnterpriseType;
+ /** 鍒涘缓鏃堕棿-璧峰 */
+ createdTimeBegin?: string;
+ /** 鍒涘缓鏃堕棿-鎴 */
+ createdTimeEnd?: string;
pageModel?: PagedListQueryPageModel;
}
@@ -5344,10 +5977,18 @@
societyCreditCode?: string;
/** 鏄惁瀹炲悕 */
isReal?: boolean;
+ /** 鏄惁绂佺敤 */
+ isDisabled?: boolean;
/** 鑱旂郴浜� */
contacts?: string;
/** 鑱旂郴鐢佃瘽 */
contactPhoneNumber?: string;
+ /** 鐢ㄦ埛Id */
+ userId?: string;
+ /** 鐢ㄦ埛鍚� */
+ userName?: string;
+ /** 鎵嬫満鍙� */
+ userPhoneNumber?: string;
/** 鎵�鍦ㄧ渷浠� */
provinceContent?: string;
/** 鎵�鍦ㄥ煄甯� */
@@ -5356,6 +5997,13 @@
industryTypeContent?: string;
/** 鏄惁宸查厤缃� */
isConfigured?: boolean;
+ /** 鍏宠仈鏈嶅姟 */
+ standardServiceCount?: number;
+ serviceFeeCollectType?: EnumEnterpriseCooperationServiceFeeCollectType;
+ /** 鏈嶅姟璐� */
+ serviceFeeRate?: number;
+ /** 鍒涘缓鏃堕棿 */
+ createdTime?: string;
}
interface GetEnterpriseWalletAccessSelectQueryOption {
@@ -6541,6 +7189,8 @@
code?: string;
/** 浠诲姟鍚嶇О */
taskName?: string;
+ /** 浠诲姟鍗曞彿 */
+ taskCode?: string;
/** 浼佷笟鍚嶇О */
enterpriseName?: string;
/** 缁撶畻鏃ユ湡 */
@@ -7114,6 +7764,17 @@
ereceiptDownloadOssUrl?: string;
}
+ interface GetShowAdvertisementsQueryResultItem {
+ /** Id */
+ id?: string;
+ /** 骞垮憡鍚嶇О */
+ name?: string;
+ /** 骞垮憡鍥剧墖 */
+ file?: string;
+ /** 骞垮憡閾炬帴 */
+ url?: string;
+ }
+
interface GetSmsLogsQuery {
/** 鍒涘缓鏃堕棿-璧峰 */
createdTimeBegin?: string;
@@ -7199,6 +7860,458 @@
signName?: string;
}
+ interface GetStandardOrderAppointmentsQuery {
+ appointmentStatus?: EnumStandardOrderAppointmentStatus;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetStandardOrderAppointmentsQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetStandardOrderAppointmentsQueryResultItem[];
+ }
+
+ interface GetStandardOrderAppointmentsQueryResultItem {
+ /** 璁㈠崟Id */
+ id?: string;
+ /** 鏈嶅姟鍚嶇О */
+ serviceName?: string;
+ /** 瀹炰粯閲戦 */
+ payAmount?: number;
+ /** 鏈嶅姟璧峰鏃堕棿 */
+ beginTime?: string;
+ /** 鏈嶅姟鎴鏃堕棿 */
+ endTime?: string;
+ /** 鏈嶅姟鍦板潃锛堢渷甯傚尯+璇︾粏鍦板潃+闂ㄧ墝鍙凤級 */
+ addressDetail?: string;
+ /** 鏈嶅姟鏈烘瀯 */
+ supplierEnterpriseName?: string;
+ /** 鏈嶅姟浜哄憳 */
+ serverNames?: string[];
+ appointmentStatus?: EnumStandardOrderAppointmentStatus;
+ }
+
+ interface GetStandardOrderPaysQuery {
+ payStatus?: EnumStandardOrderPayStatus;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetStandardOrderPaysQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetStandardOrderPaysQueryResultItem[];
+ }
+
+ interface GetStandardOrderPaysQueryResultItem {
+ /** 璁㈠崟Id */
+ id?: string;
+ /** 鏈嶅姟鍚嶇О */
+ serviceName?: string;
+ /** 瀹炰粯閲戦 */
+ payAmount?: number;
+ /** 鏈嶅姟璧峰鏃堕棿 */
+ beginTime?: string;
+ /** 鏈嶅姟鎴鏃堕棿 */
+ endTime?: string;
+ /** 鏈嶅姟鍦板潃锛堢渷甯傚尯+璇︾粏鍦板潃+闂ㄧ墝鍙凤級 */
+ addressDetail?: string;
+ /** 鏈嶅姟鏈烘瀯 */
+ supplierEnterpriseName?: string;
+ /** 鏈嶅姟浜哄憳 */
+ serverNames?: string[];
+ payStatus?: EnumStandardOrderPayStatus;
+ }
+
+ interface GetStandardOrderQueryResult {
+ /** 璁㈠崟Id */
+ id?: string;
+ /** 鏈嶅姟Id */
+ serviceId?: string;
+ /** 鏈嶅姟鍚� */
+ serviceName?: string;
+ /** 鐢叉柟浼佷笟Id */
+ partyAEnterpriseId?: string;
+ /** 鐢叉柟浼佷笟 */
+ partyAEnterpriseName?: string;
+ /** 瑙勬牸Id */
+ specId?: string;
+ /** 瑙勬牸鍚嶇О */
+ specName?: string;
+ /** 瑙勬牸浠锋牸 */
+ specPrice?: number;
+ /** 瑙勬牸鏁伴噺 */
+ specNumber?: number;
+ /** 鍦板潃Id */
+ addressId?: string;
+ /** 濮撳悕 */
+ name?: string;
+ /** 鑱旂郴鐢佃瘽 */
+ contactPhoneNumber?: string;
+ /** 鐪佷唤缂栧彿 */
+ provinceCode?: string;
+ /** 鐪佷唤 */
+ provinceContent?: string;
+ /** 鍩庡競缂栧彿 */
+ cityCode?: string;
+ /** 鍩庡競 */
+ cityContent?: string;
+ /** 鍖虹紪鍙� */
+ areaCode?: string;
+ /** 鍖� */
+ areaContent?: string;
+ /** 璇︾粏鍦板潃 */
+ addressName?: string;
+ /** 闂ㄧ墝鍙� */
+ addressDetail?: string;
+ /** 缁忓害 */
+ longitude?: number;
+ /** 绾害 */
+ latitude?: number;
+ /** 鏈嶅姟璧峰鏃堕棿 */
+ beginTime?: string;
+ /** 鏈嶅姟鎴鏃堕棿 */
+ endTime?: string;
+ /** 渚涘簲鍟咺d */
+ supplierEnterpriseId?: string;
+ /** 渚涘簲鍟� */
+ supplierEnterpriseName?: string;
+ /** 鏈嶅姟浜哄憳Id */
+ serverId?: string;
+ /** 鏈嶅姟浜哄憳濮撳悕 */
+ serverName?: string;
+ /** 鏈嶅姟浜哄憳鑱旂郴鐢佃瘽 */
+ serverContactPhoneNumber?: string;
+ /** 澶囨敞 */
+ remark?: string;
+ payAccess?: EnumUserBankCardAccess;
+ appointmentStatus?: EnumStandardOrderAppointmentStatus;
+ /** 棰勭害瀹屾垚/鍙栨秷鏃堕棿 */
+ appointmentCompletedTime?: string;
+ /** 鍙栨秷鍘熷洜 */
+ appointmentCancelReason?: string;
+ payStatus?: EnumStandardOrderPayStatus;
+ /** 瀹炰粯閲戦 */
+ payAmount?: number;
+ /** 鏀粯鏃堕棿 */
+ payTime?: string;
+ settlementStatus?: EnumStandardOrderSettlementStatus;
+ serviceFeeCollectType?: EnumEnterpriseCooperationServiceFeeCollectType;
+ /** 鏈嶅姟璐� */
+ serviceFee?: number;
+ /** 瀹炴敹閲戦 */
+ receiveAmount?: number;
+ /** 缁撶畻閲戦 */
+ settlementAmount?: number;
+ }
+
+ interface GetStandardOrderSettlementsQuery {
+ /** 鍏抽敭瀛楋紙璁㈠崟鍙�/鏈嶅姟鍚�/渚涘簲鍟嗭級 */
+ keywords?: string;
+ settlementStatus?: EnumStandardOrderSettlementStatus;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetStandardOrderSettlementsQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetStandardOrderSettlementsQueryResultItem[];
+ }
+
+ interface GetStandardOrderSettlementsQueryResultItem {
+ /** 璁㈠崟Id */
+ id?: string;
+ /** 璁㈠崟鍙� */
+ code?: string;
+ /** 鏈嶅姟鍚嶇О */
+ serviceName?: string;
+ /** 鏈嶅姟鍗曞彿 */
+ serviceCode?: string;
+ /** 鐢叉柟浼佷笟Id */
+ partyAEnterpriseId?: string;
+ /** 鐢叉柟浼佷笟 */
+ partyAEnterpriseName?: string;
+ /** 鏈嶅姟鍦板潃锛堢渷甯傚尯+璇︾粏鍦板潃+闂ㄧ墝鍙凤級 */
+ addressDetail?: string;
+ /** 鏈嶅姟鏈烘瀯 */
+ supplierEnterpriseName?: string;
+ /** 鏈嶅姟浜哄憳 */
+ serverNames?: string[];
+ /** 瀹炰粯閲戦 */
+ payAmount?: number;
+ /** 瀹炴敹閲戦 */
+ receiveAmount?: number;
+ /** 鏈嶅姟璐� */
+ serviceFee?: number;
+ /** 缁撶畻閲戦 */
+ settlementAmount?: number;
+ /** 缁撶畻鍗曞彿 */
+ settlementCode?: string;
+ settlementStatus?: EnumStandardOrderSettlementStatus;
+ /** 缁撶畻鏃堕棿 */
+ settlementTime?: string;
+ /** 鏈嶅姟璧峰鏃堕棿 */
+ beginTime?: string;
+ /** 鏈嶅姟鎴鏃堕棿 */
+ endTime?: string;
+ }
+
+ interface GetStandardOrdersQuery {
+ /** 鍏抽敭瀛楋紙璁㈠崟鍙�/鏈嶅姟鍚嶏級 */
+ keywords?: string;
+ /** 涓嬪崟鏃堕棿-璧峰 */
+ createdTimeBegin?: string;
+ /** 涓嬪崟鏃堕棿-鎴 */
+ createdTimeEnd?: string;
+ /** 鏀粯鏃堕棿-璧峰 */
+ payTimeBegin?: string;
+ /** 鏀粯鏃堕棿-鎴 */
+ payTimeEnd?: string;
+ appointmentStatus?: EnumStandardOrderAppointmentStatus;
+ payStatus?: EnumStandardOrderPayStatus;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetStandardOrdersQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetStandardOrdersQueryResultItem[];
+ }
+
+ interface GetStandardOrdersQueryResultItem {
+ /** Id */
+ id?: string;
+ /** 璁㈠崟鍙� */
+ code?: string;
+ /** 鏈嶅姟鍚� */
+ serviceName?: string;
+ /** 鏈嶅姟鍗曞彿 */
+ serviceCode?: string;
+ /** 涓嬪崟鏃堕棿 */
+ createdTime?: string;
+ /** 鏀粯鏃堕棿 */
+ payTime?: string;
+ appointmentStatus?: EnumStandardOrderAppointmentStatus;
+ payStatus?: EnumStandardOrderPayStatus;
+ settlementStatus?: EnumStandardOrderSettlementStatus;
+ /** 鐢叉柟浼佷笟Id */
+ partyAEnterpriseId?: string;
+ /** 鐢叉柟浼佷笟 */
+ partyAEnterpriseName?: string;
+ /** 鑱旂郴鐢佃瘽 */
+ contactPhoneNumber?: string;
+ /** 瀹炰粯閲戦 */
+ payAmount?: number;
+ /** 瀹炴敹閲戦 */
+ receiveAmount?: number;
+ /** 鏈嶅姟璐� */
+ serviceFee?: number;
+ /** 缁撶畻閲戦 */
+ settlementAmount?: number;
+ }
+
+ interface GetStandardServiceCommentsQuery {
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetStandardServiceCommentsQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetStandardServiceCommentsQueryResultItem[];
+ }
+
+ interface GetStandardServiceCommentsQueryResultItem {
+ /** Id */
+ id?: string;
+ /** 鐢ㄦ埛鍚� */
+ userName?: string;
+ /** 璇勫垎 */
+ star?: number;
+ /** 鍐呭 */
+ content?: string;
+ /** 鍒涘缓鏃堕棿 */
+ createdTime?: string;
+ }
+
+ interface GetStandardServiceQueryResult {
+ /** Id */
+ id?: string;
+ /** 琛屼笟绫诲埆缂栧彿 */
+ industryCategoryCode?: string;
+ /** 琛屼笟绫诲埆 */
+ industryCategoryContent?: string;
+ /** 宀椾綅缂栧彿 */
+ jobCode?: string;
+ /** 宀椾綅 */
+ jobContent?: string;
+ /** 鏈嶅姟鍚� */
+ name?: string;
+ /** 鏈嶅姟鍗曞彿 */
+ code?: string;
+ /** 瑙勬牸 */
+ specs?: GetStandardServiceQueryResultSpec[];
+ /** 鏈�浣庤鏍间环鏍� */
+ minSpecPrice?: number;
+ /** 鍥剧墖 */
+ files?: string[];
+ /** 鏈嶅姟鎻忚堪 */
+ description?: string;
+ /** 渚涘簲鍟� */
+ suppliers?: GetStandardServiceQueryResultSupplier[];
+ releaseStatus?: EnumStandardServiceReleaseStatus;
+ recommendStatus?: EnumStandardServiceRecommendStatus;
+ /** 鏄惁鏀惰棌 */
+ isCollection?: boolean;
+ }
+
+ interface GetStandardServiceQueryResultSpec {
+ /** Id */
+ id?: string;
+ /** 瑙勬牸鍚嶇О */
+ name?: string;
+ /** 浠锋牸 */
+ price?: number;
+ }
+
+ interface GetStandardServiceQueryResultSupplier {
+ /** Id */
+ id?: string;
+ /** 浼佷笟鍏ㄧО */
+ enterpriseName?: string;
+ /** 娉曚汉濮撳悕 */
+ legalPerson?: string;
+ /** 缁熶竴绀句細淇$敤浠g爜 */
+ societyCreditCode?: string;
+ /** 鏄惁瀹炲悕 */
+ isReal?: boolean;
+ /** 鑱旂郴浜� */
+ contacts?: string;
+ /** 鑱旂郴鐢佃瘽 */
+ contactPhoneNumber?: string;
+ /** 鎵�鍦ㄧ渷浠� */
+ provinceContent?: string;
+ /** 鎵�鍦ㄥ煄甯� */
+ cityContent?: string;
+ }
+
+ interface GetStandardServiceServersQuery {
+ /** 渚涘簲鍟咺d */
+ supplierEnterpriseId?: string;
+ /** 鏈嶅姟璧峰鏃堕棿 */
+ beginTime?: string;
+ /** 鏈嶅姟鎴鏃堕棿 */
+ endTime?: string;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetStandardServiceServersQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetStandardServiceServersQueryResultItem[];
+ }
+
+ interface GetStandardServiceServersQueryResultItem {
+ /** Id */
+ id?: string;
+ /** 澶村儚 */
+ avatar?: string;
+ /** 濮撳悕 */
+ name?: string;
+ gender?: EnumUserGender;
+ /** 鏄惁瀹炲悕 */
+ isReal?: boolean;
+ realMethod?: EnumUserRealMethod;
+ /** 骞撮緞 */
+ age?: number;
+ /** 韬唤缂栧彿 */
+ personalIdentityCode?: string;
+ /** 韬唤 */
+ personalIdentityContent?: string;
+ /** 瀛﹀巻缂栧彿 */
+ educationalBackgroundCode?: string;
+ /** 瀛﹀巻 */
+ educationalBackgroundContent?: string;
+ /** 涓婂矖娆℃暟 */
+ taskCount?: number;
+ /** 宸ヤ綔璧勫巻 */
+ workSeniority?: string;
+ /** 宸ヤ綔缁忛獙 */
+ workExperience?: string;
+ }
+
+ interface GetStandardServicesQuery {
+ /** 鍏抽敭瀛楋紙鏈嶅姟鍚�/Id锛� */
+ keywords?: string;
+ /** 宀椾綅缂栧彿 */
+ jobCode?: string;
+ /** 鍒涘缓鏃堕棿-璧峰 */
+ createdTimeBegin?: string;
+ /** 鍒涘缓鏃堕棿-鎴 */
+ createdTimeEnd?: string;
+ releaseStatus?: EnumStandardServiceReleaseStatus;
+ recommendStatus?: EnumStandardServiceRecommendStatus;
+ /** 鏄惁鏀惰棌 */
+ isCollected?: boolean;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetStandardServicesQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetStandardServicesQueryResultItem[];
+ }
+
+ interface GetStandardServicesQueryResultItem {
+ /** Id */
+ id?: string;
+ /** 棣栦釜鍥剧墖 */
+ file?: string;
+ /** 琛屼笟绫诲埆 */
+ industryCategoryContent?: string;
+ /** 宀椾綅 */
+ jobContent?: string;
+ /** 鏈嶅姟鍚� */
+ name?: string;
+ /** 鏈�浣庤鏍间环鏍� */
+ minSpecPrice?: number;
+ /** 鏈嶅姟鍗曞彿 */
+ code?: string;
+ releaseStatus?: EnumStandardServiceReleaseStatus;
+ recommendStatus?: EnumStandardServiceRecommendStatus;
+ /** 鏄惁鏀惰棌 */
+ isCollection?: boolean;
+ /** 鍒涘缓鏃堕棿 */
+ createdTime?: string;
+ /** 渚涘簲鍟嗘暟閲� */
+ supplierCount?: number;
+ }
+
+ interface GetStandardServiceSupplierEnterprisesQuery {
+ /** 鏈嶅姟Id */
+ serviceId?: string;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetStandardServiceSupplierEnterprisesQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetStandardServiceSupplierEnterprisesQueryResultItem[];
+ }
+
+ interface GetStandardServiceSupplierEnterprisesQueryResultItem {
+ /** Id */
+ id?: string;
+ /** 澶村儚 */
+ avatar?: string;
+ /** 浼佷笟鍏ㄧО */
+ enterpriseName?: string;
+ /** 鏈嶅姟浜哄憳 */
+ serverCount?: number;
+ /** 鏈嶅姟浜烘 */
+ serviceCount?: number;
+ /** 缁忚惀鑼冨洿 */
+ mainBusiness?: string;
+ }
+
type GetSupplierEnterpriseSelectQuery = Record<string, any>;
interface GetSupplierEnterpriseSelectQueryOption {
@@ -7285,6 +8398,8 @@
enterpriseId?: string;
/** 浼佷笟鍏ㄧО */
enterpriseName?: string;
+ /** 鑱旂郴浜� */
+ contacts?: string;
/** 鑱旂郴鐢佃瘽 */
contactPhoneNumber?: string;
/** 鏄惁璁よ瘉 */
@@ -8014,6 +9129,26 @@
hiddenAlipay?: boolean;
}
+ interface HistoryQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: HistoryQueryResultItem[];
+ }
+
+ interface HistoryQueryResultItem {
+ /** Id */
+ id?: string;
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鎿嶄綔浜� */
+ createdUser?: string;
+ /** 鎿嶄綔鏃堕棿 */
+ createdTime?: string;
+ operate?: EnumDbAuditOperate;
+ /** 鎿嶄綔鍐呭 */
+ content?: string[];
+ }
+
interface ImportEnterpriseEmployeesCommand {
/** Excel鍦板潃 */
excelUrl?: string;
@@ -8296,6 +9431,32 @@
enterpriseType?: EnumEnterpriseType;
}
+ interface PayStandardOrderCommand {
+ /** 璁㈠崟Id */
+ id?: string;
+ }
+
+ interface PayStandardOrderCommandResult {
+ /** 鏃堕棿鎴�
+浠� 1970 骞� 1 鏈� 1 鏃� 00:00:00 鑷充粖鐨勭鏁帮紝鍗冲綋鍓嶇殑鏃堕棿 */
+ timestamp?: string;
+ /** 闅忔満瀛楃涓�
+闀垮害涓�32涓瓧绗︿互涓� */
+ nonceStr?: string;
+ /** 缁熶竴涓嬪崟鎺ュ彛杩斿洖鐨� prepay_id 鍙傛暟鍊�
+鎻愪氦鏍煎紡濡傦細prepay_id=*** */
+ package?: string;
+ /** 绛惧悕绠楁硶锛屽簲涓庡悗鍙颁笅鍗曟椂鐨勫�间竴鑷�
+MD5 浠呭湪 v2 鐗堟湰鎺ュ彛閫傜敤
+HMAC-SHA256 浠呭湪 v2 鐗堟湰鎺ュ彛閫傜敤
+RSA 浠呭湪 v3 鐗堟湰鎺ュ彛閫傜敤 */
+ signType?: string;
+ /** 绛惧悕锛屽叿浣撹寰俊鏀粯鏂囨。 */
+ paySign?: string;
+ /** 鏀粯缁撴潫鏃堕棿 */
+ timeExpire?: string;
+ }
+
interface PersonalUserElectronSignCommand {
/** 鐏靛伐Id锛堜簩閫変竴锛� */
id?: string;
@@ -8428,6 +9589,24 @@
taskInfoId?: string;
}
+ interface SaveAdvertisementCommand {
+ page?: EnumAdvertisementPage;
+ /** 骞垮憡鍚嶇О */
+ name?: string;
+ /** 寮�濮嬫椂闂� */
+ beginTime?: string;
+ /** 缁撴潫鏃堕棿 */
+ endTime?: string;
+ /** 骞垮憡鍥剧墖 */
+ file?: string;
+ /** 骞垮憡閾炬帴 */
+ url?: string;
+ /** 鎺掑簭 */
+ sort?: number;
+ /** Id */
+ id?: string;
+ }
+
interface SaveCodeUrlCommand {
scene?: EnumCodeUrlScene;
/** 鍦板潃 */
@@ -8543,6 +9722,31 @@
id?: string;
}
+ interface SaveEnterpriseAddressCommand {
+ /** 濮撳悕 */
+ name?: string;
+ /** 鑱旂郴鐢佃瘽 */
+ contactPhoneNumber?: string;
+ /** 鐪佷唤缂栧彿 */
+ provinceCode?: string;
+ /** 鍩庡競缂栧彿 */
+ cityCode?: string;
+ /** 鍖虹紪鍙� */
+ areaCode?: string;
+ /** 璇︾粏鍦板潃 */
+ addressName?: string;
+ /** 闂ㄧ墝鍙� */
+ addressDetail?: string;
+ /** 缁忓害 */
+ longitude?: number;
+ /** 绾害 */
+ latitude?: number;
+ /** 鏄惁榛樿 */
+ isDefault?: boolean;
+ /** Id */
+ id?: string;
+ }
+
interface SaveEnterpriseCommand {
/** 浼佷笟鍏ㄧО */
enterpriseName: string;
@@ -8570,6 +9774,15 @@
userName?: string;
/** 瀵嗙爜 */
password?: string;
+ cooperationStatus?: EnumEnterpriseCooperationStatus;
+ signStatus?: EnumEnterpriseCooperationSignStatus;
+ /** 鍚堜綔鍗忚 */
+ cooperationAgreementUrl?: string;
+ serviceFeeCollectType?: EnumEnterpriseCooperationServiceFeeCollectType;
+ /** 鏈嶅姟璐� */
+ serviceFeeRate?: number;
+ /** 鍙戠エ绋庣偣 */
+ invoiceTaxPointRate?: number;
/** Id */
id?: string;
}
@@ -8865,6 +10078,34 @@
signName?: string;
}
+ interface SaveStandardServiceCommand {
+ /** 琛屼笟绫诲埆缂栧彿 */
+ industryCategoryCode?: string;
+ /** 宀椾綅缂栧彿 */
+ jobCode?: string;
+ /** 鏈嶅姟鍚� */
+ name?: string;
+ /** 瑙勬牸 */
+ specs?: SaveStandardServiceCommandSpec[];
+ /** 鍥剧墖 */
+ files?: string[];
+ /** 鏈嶅姟鎻忚堪 */
+ description?: string;
+ /** 渚涘簲鍟� */
+ supplierIds?: string[];
+ /** Id */
+ id?: string;
+ }
+
+ interface SaveStandardServiceCommandSpec {
+ /** Id */
+ id?: string;
+ /** 瑙勬牸鍚嶇О */
+ name?: string;
+ /** 浠锋牸 */
+ price?: number;
+ }
+
interface SaveTaskInfoCommand {
/** 渚涘簲鍟咺d */
supplierEnterpriseId?: string;
@@ -9122,6 +10363,12 @@
relationId?: string;
}
+ interface SetAdvertisementStatusCommand {
+ /** Id */
+ ids?: string[];
+ status?: EnumAdvertisementStatus;
+ }
+
interface SetDictionaryDataIsDisabledCommand {
ids?: string[];
/** 鏄惁宸茬鐢� */
@@ -9151,6 +10398,21 @@
insuranceSupplierAccount?: string;
}
+ interface SetEnterpriseLoginInfoCommand {
+ /** 澶村儚 */
+ avatar?: string;
+ /** 濮撳悕 */
+ name?: string;
+ /** 钀ヤ笟鎵х収鐓х墖 */
+ licenseImage?: string;
+ /** 浼佷笟鍏ㄧО */
+ enterpriseName?: string;
+ /** 缁熶竴绀句細淇$敤浠g爜 */
+ societyCreditCode?: string;
+ /** 鎵嬫満鍙� */
+ contactPhoneNumber?: string;
+ }
+
interface SetEnterpriseSmsSettingCommand {
/** Id */
id?: string;
@@ -9194,6 +10456,18 @@
userInfoIds?: string[];
}
+ interface SetStandardServiceRecommendStatusCommand {
+ /** Id */
+ ids?: string[];
+ recommendStatus?: EnumStandardServiceRecommendStatus;
+ }
+
+ interface SetStandardServiceReleaseStatusCommand {
+ /** Id */
+ ids?: string[];
+ releaseStatus?: EnumStandardServiceReleaseStatus;
+ }
+
interface SetTaskInfoRecommendStatusCommand {
/** Id */
ids?: string[];
@@ -9331,6 +10605,20 @@
remark?: string;
}
+ interface SureStandardOrderAppointmentCommand {
+ /** 璁㈠崟Id */
+ id?: string;
+ }
+
+ interface SureStandardOrderCommand {
+ /** 璁㈠崟Id */
+ id?: string;
+ /** 璇勫垎 */
+ commentStar?: number;
+ /** 璇勪环 */
+ commentContent?: string;
+ }
+
interface SureTaskSettlementCommand {
/** 浠诲姟Id */
taskInfoId?: string;
@@ -10142,6 +11430,36 @@
reject_reason: string;
}
+ interface WeChatPayTransactionsJsApiNotifyCommand {
+ /** 閫氱煡ID锛屽洖璋冮�氱煡鐨勫敮涓�缂栧彿 */
+ id?: string;
+ /** 閫氱煡鍒涘缓鏃堕棿
+1銆佸畾涔夛細鏈鍥炶皟閫氱煡鍒涘缓鐨勬椂闂�
+2銆佹牸寮忥細閬靛惊rfc3339鏍囧噯鏍煎紡锛歽yyy-MM-DDTHH:mm:ss+TIMEZONE锛堢ず渚嬶細2015-05-20T13:29:35+08:00 琛ㄧず鍖椾含鏃堕棿2015骞�5鏈�20鏃�13鐐�29鍒�35绉掞級 */
+ create_time?: string;
+ /** 閫氱煡鐨勭被鍨嬶紝寰俊鏀粯鍥炶皟閫氱煡鐨勭被鍨�
+鏀粯鎴愬姛閫氱煡鐨勭被鍨嬩负TRANSACTION.SUCCESS */
+ event_type?: string;
+ /** 閫氱煡鏁版嵁绫诲瀷锛岄�氱煡鐨勮祫婧愭暟鎹被鍨嬶紝鍥哄畾涓篹ncrypt-resource */
+ resource_type?: string;
+ resource?: WeChatPayTransactionsJsApiNotifyCommandResource;
+ /** 鍥炶皟鎽樿锛屽井淇℃敮浠樺鍥炶皟鍐呭鐨勬憳瑕佸娉� */
+ summary?: string;
+ }
+
+ interface WeChatPayTransactionsJsApiNotifyCommandResource {
+ /** 鍔犲瘑绠楁硶绫诲瀷锛屽洖璋冩暟鎹瘑鏂囩殑鍔犲瘑绠楁硶绫诲瀷锛岀洰鍓嶄负AEAD_AES_256_GCM锛屽紑鍙戣�呴渶瑕佷娇鐢ㄥ悓鏍风被鍨嬬殑鏁版嵁杩涜瑙e瘑 */
+ algorithm?: string;
+ /** 鏁版嵁瀵嗘枃锛孊ase64缂栫爜鍚庣殑鍥炶皟鏁版嵁瀵嗘枃锛屾湇鍔″晢闇�Base64瑙g爜骞朵娇鐢ˋPIV3瀵嗛挜瑙e瘑锛屽叿浣撳弬鑰冨浣曡В瀵嗚瘉涔﹀拰鍥炶皟鎶ユ枃 */
+ ciphertext?: string;
+ /** 闄勫姞鏁版嵁锛屽弬涓庤В瀵嗙殑闄勫姞鏁版嵁锛岃瀛楁鍙兘涓虹┖ */
+ associated_data?: string;
+ /** 鍘熷鍥炶皟绫诲瀷锛屽姞瀵嗗墠鐨勫璞$被鍨嬶紝涓簍ransaction */
+ original_type?: string;
+ /** 闅忔満涓诧紝鍙備笌瑙e瘑鐨勯殢鏈轰覆 */
+ nonce?: string;
+ }
+
interface WxmpLoginCommand {
/** 鐢ㄦ埛鐧诲綍鍑瘉 */
code: string;
diff --git a/src/services/api/userWallet.ts b/src/services/api/userWallet.ts
index 6443e40..d945ac1 100644
--- a/src/services/api/userWallet.ts
+++ b/src/services/api/userWallet.ts
@@ -16,3 +16,18 @@
...(options || {}),
});
}
+
+/** 寰俊JS鏀粯閫氱煡 POST /api/user/userWallet/weChatPayTransactionsJsApiNotify */
+export async function weChatPayTransactionsJsApiNotify(
+ body: API.WeChatPayTransactionsJsApiNotifyCommand,
+ options?: API.RequestConfig
+) {
+ return request<boolean>('/api/user/userWallet/weChatPayTransactionsJsApiNotify', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
diff --git a/src/utils/common/common.ts b/src/utils/common/common.ts
index f338db2..9b58507 100644
--- a/src/utils/common/common.ts
+++ b/src/utils/common/common.ts
@@ -131,6 +131,37 @@
return null;
}
+/**
+ * 鍓旈櫎瀵硅薄涓�间负 ''銆乽ndefined銆乶ull 鐨勯敭锛屾敮鎸佸祵濂楀璞�
+ * @param {Object} obj - 闇�瑕佸鐞嗙殑瀵硅薄
+ * @returns {Object} 澶勭悊鍚庣殑鏂板璞�
+ */
+export function removeEmptyKeys<T extends object>(obj: T) {
+ // 濡傛灉涓嶆槸瀵硅薄鎴栦负null锛岀洿鎺ヨ繑鍥炲師鍊�
+ if (obj === null || typeof obj !== 'object') {
+ return obj;
+ }
+
+ // 澶勭悊鏁扮粍锛堥�掑綊澶勭悊姣忎釜鍏冪礌锛�
+ if (Array.isArray(obj)) {
+ return obj.map((item) => removeEmptyKeys(item));
+ }
+
+ // 澶勭悊瀵硅薄
+ const result = {} as T;
+ for (const key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ //@ts-ignore
+ const value = removeEmptyKeys(obj[key]); // 閫掑綊澶勭悊宓屽瀵硅薄
+ // 鍙繚鐣欓潪绌哄�硷紙鎺掗櫎''銆乽ndefined銆乶ull锛�
+ if (value !== '' && value !== undefined && value !== null) {
+ result[key] = value;
+ }
+ }
+ }
+ return result;
+}
+
export const hiddenIDNumberForEnd4 = (realIDNumber: string) => {
if (!realIDNumber) return '';
return realIDNumber.replace(/^(\d+)(.{4})$/, '$1****');
diff --git a/src/views/AgreementManage/AgreementManageList.vue b/src/views/AgreementManage/AgreementManageList.vue
index 717f974..dcdd801 100644
--- a/src/views/AgreementManage/AgreementManageList.vue
+++ b/src/views/AgreementManage/AgreementManageList.vue
@@ -36,14 +36,15 @@
</QueryFilterItem>
</template>
<template #btn>
- <el-button type="primary" @click="handleAdd()">鏂板妯℃澘</el-button>
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
+ type="primary"
+ @click="openDialog()"
+ >鏂板妯℃澘</el-button
+ >
</template>
</ProTableQueryFilterBar>
- <ProTableV2
- v-bind="proTableProps"
- :columns="AgreementbManageColumns"
- :operationBtns="operationBtns"
- >
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
<template #code="{ row }">
<el-button
v-if="row.status === EnumContractTemplateStatus.Completed && !!row.wxmpQrCode"
@@ -72,14 +73,18 @@
useTable,
FieldDatePicker,
FieldRadio,
- defineOperationBtns,
UploadUserFile,
useFormDialog,
bolePreview,
} from '@bole-core/components';
-import { AgreementbManageColumns } from './constants';
import { EnumContractTemplateStatus, EnumContractTemplateStatusText } from '@/constants';
-import { convertPdfToImage, downloadFileByUrl, format, setOSSLink } from '@/utils';
+import {
+ convertApi2FormUrlOnlyOne,
+ convertPdfToImage,
+ downloadFileByUrl,
+ format,
+ setOSSLink,
+} from '@/utils';
import { ModelValueType } from 'element-plus';
import * as electronSignServices from '@/services/api/electronSign';
import TemplateAddDialog from './components/TemplateAddDialog.vue';
@@ -90,12 +95,8 @@
name: 'AgreementManageList',
});
-const operationBtns = defineOperationBtns([
- {
- data: {
- enCode: 'checkBtn',
- name: '鏌ョ湅',
- },
+const operationBtnMap: Record<string, OperationBtnType> = {
+ checkBtn: {
emits: {
onClick: (role) => handleCheck(role),
},
@@ -103,11 +104,15 @@
hide: (row) => row.status !== EnumContractTemplateStatus.Completed,
},
},
- {
- data: {
- enCode: 'downloadBtn',
- name: '涓嬭浇',
+ editBtn: {
+ emits: {
+ onClick: (role) => openDialog(role),
},
+ extraProps: {
+ hide: (row) => row.status !== EnumContractTemplateStatus.Completed,
+ },
+ },
+ downloadBtn: {
emits: {
onClick: (role) => handleDownload(role),
},
@@ -115,11 +120,7 @@
hide: (row) => row.status !== EnumContractTemplateStatus.Completed,
},
},
- {
- data: {
- enCode: 'deleteBtn',
- name: '鍒犻櫎',
- },
+ deleteBtn: {
emits: {
onClick: (role) => handleDelete(role),
},
@@ -128,7 +129,11 @@
hide: (row) => row.status !== EnumContractTemplateStatus.Completed,
},
},
-]);
+};
+
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+ operationBtnMap,
+});
const router = useRouter();
@@ -192,20 +197,67 @@
}
);
-const { dialogProps, handleAdd, editForm } = useFormDialog({
+async function openDialog(row?: API.GetEnterpriseContractTemplatesQueryResultItem) {
+ try {
+ if (row) {
+ let detail = await electronSignServices.getContractTemplate({ id: row.id });
+ handleTemplateEdit({
+ id: row.id,
+ templateId: row.templateId,
+ name: row.name,
+ code: row.code,
+ url: convertApi2FormUrlOnlyOne(row.file),
+ access: row.access,
+ isEnterpriseUserCreated: detail.isEnterpriseUserCreated,
+ templateEditData: detail.templateEditData,
+ isAutoSign: detail.isAutoSign ?? false,
+ autoSignPowerAttorneyUrl: convertApi2FormUrlOnlyOne(detail.autoSignPowerAttorneyUrl),
+ enterpriseId: detail.enterpriseId,
+
+ customContents: detail.customContents.map((x) => x.name),
+ });
+ } else {
+ handleTemplateAdd();
+ }
+ } catch (error) {}
+}
+
+const {
+ dialogProps,
+ handleAdd: handleTemplateAdd,
+ handleEdit: handleTemplateEdit,
+ editForm,
+} = useFormDialog({
onConfirm: handleAddOrEdit,
defaultFormParams: {
+ id: '',
+ templateId: '',
name: '',
+ code: '',
url: [] as UploadUserFile[],
+ access: '' as any as EnumElectronSignAccess,
+ isEnterpriseUserCreated: false,
+ templateEditData: '',
+ enterpriseId: '',
+ isAutoSign: false,
+ autoSignPowerAttorneyUrl: [] as UploadUserFile[],
+
+ customContents: [] as string[],
},
});
async function handleAddOrEdit() {
try {
+ let isEdit = !!editForm.id;
let pdfToImage = await convertPdfToImage(editForm.url?.[0].url);
let params: API.SaveContractTemplateCommand = {
name: editForm.name,
file: editForm.url[0]?.path ?? '',
+ enterpriseId: editForm.enterpriseId,
+ code: editForm.code,
+ access: editForm.access,
+ templateId: editForm.templateId,
+ autoSignPowerAttorneyUrl: editForm.autoSignPowerAttorneyUrl?.[0]?.path ?? '',
templateEditData: JSON.stringify(
pdfToImage.map(
(x) =>
@@ -216,7 +268,16 @@
} as TemplateEditDataItem)
)
),
+ customContents: editForm.customContents,
};
+ if (editForm.access === EnumElectronSignAccess.BestSign) {
+ params.isAutoSign = editForm.isAutoSign;
+ } else {
+ params.isAutoSign = false;
+ }
+ if (isEdit) {
+ params.id = editForm.id;
+ }
let res = await electronSignServices.saveContractTemplate(params);
if (res) {
Message.successMessage('淇濆瓨鎴愬姛');
diff --git a/src/views/AgreementManage/components/TemplateAddDialog.vue b/src/views/AgreementManage/components/TemplateAddDialog.vue
index 07cf6b2..60793f4 100644
--- a/src/views/AgreementManage/components/TemplateAddDialog.vue
+++ b/src/views/AgreementManage/components/TemplateAddDialog.vue
@@ -2,7 +2,8 @@
<ProDialog title="鏂板妯℃澘" v-model="visible" @close="onDialogClose" destroy-on-close draggable>
<ProForm :model="form" ref="dialogForm" label-width="100px">
<ProFormItemV2 label="妯℃澘鍚嶇О:" prop="name" :check-rules="[{ message: '璇疯緭鍏ユā鏉垮悕绉�' }]">
- <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ユā鏉垮悕绉�" :maxlength="32" > </ProFormText>
+ <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ユā鏉垮悕绉�" :maxlength="32">
+ </ProFormText>
</ProFormItemV2>
<ProFormItemV2
label="涓婁紶妯℃澘:"
@@ -16,6 +17,27 @@
accept="pdf"
></ProFormUpload>
</ProFormItemV2>
+ <ProFormItemV2 label="鑷姩绛�:" prop="isAutoSign" required>
+ <ProFormRadio v-model="form.isAutoSign" :value-enum="BooleanOptions"></ProFormRadio>
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="涓婁紶鎺堟潈涔�:"
+ prop="autoSignPowerAttorneyUrl"
+ :check-rules="[{ message: '璇蜂笂浼犳巿鏉冧功', type: 'upload' }]"
+ v-if="form.isAutoSign"
+ >
+ <ProFormUpload
+ v-model:file-url="form.autoSignPowerAttorneyUrl"
+ :limit="1"
+ :limitFileSize="10"
+ accept="pdf,doc,docx,png,jpg,jpeg"
+ >
+ <div>
+ <el-button icon="Upload">涓婁紶鏂囦欢</el-button>
+ <el-button type="primary" link @click.stop="handleDownload">涓嬭浇鎺堟潈涔︽ā鏉�</el-button>
+ </div>
+ </ProFormUpload>
+ </ProFormItemV2>
</ProForm>
<template #footer>
<span class="dialog-footer">
@@ -34,9 +56,11 @@
ProFormUpload,
ProFormText,
UploadUserFile,
+ ProFormRadio,
} from '@bole-core/components';
import { FormInstance } from 'element-plus';
-import { max } from 'lodash';
+import { BooleanOptions } from '@/constants';
+import { downloadFileByUrl } from '@/utils';
defineOptions({
name: 'TemplateAddDialog',
@@ -44,8 +68,11 @@
type Form = {
title?: string;
+ id: string;
name: string;
url: UploadUserFile[];
+ isAutoSign: boolean;
+ autoSignPowerAttorneyUrl: UploadUserFile[];
};
const visible = defineModel({ type: Boolean });
@@ -73,4 +100,8 @@
}
});
}
+
+function handleDownload() {
+ downloadFileByUrl(AutoSignPowerAttorneyTempUrl, '鑷姩绛炬巿鏉冧功妯℃澘');
+}
</script>
diff --git a/src/views/CustomerManage/AddOrEditCustomer.vue b/src/views/CustomerManage/AddOrEditCustomer.vue
new file mode 100644
index 0000000..93668ad
--- /dev/null
+++ b/src/views/CustomerManage/AddOrEditCustomer.vue
@@ -0,0 +1,19 @@
+<template>
+ <AddOrEditCustomerView :isDetail="false" />
+</template>
+
+<script lang="ts">
+import { setPageTitle } from '@/utils';
+
+export default defineComponent({
+ name: 'AddOrEditCustomer',
+ beforeRouteEnter(to) {
+ to.meta.title = to.params.id ? '缂栬緫瀹㈡埛' : '鏂板瀹㈡埛';
+ setPageTitle(to.meta.title as string);
+ },
+});
+</script>
+
+<script setup lang="ts">
+import AddOrEditCustomerView from './components/AddOrEditCustomerView.vue';
+</script>
diff --git a/src/views/CustomerManage/CustomerDetail.vue b/src/views/CustomerManage/CustomerDetail.vue
new file mode 100644
index 0000000..10fc45d
--- /dev/null
+++ b/src/views/CustomerManage/CustomerDetail.vue
@@ -0,0 +1,11 @@
+<template>
+ <AddOrEditCustomerView isDetail />
+</template>
+
+<script setup lang="ts">
+import AddOrEditCustomerView from './components/AddOrEditCustomerView.vue';
+
+defineOptions({
+ name: 'CustomerDetail',
+});
+</script>
diff --git a/src/views/CustomerManage/CustomerManage.vue b/src/views/CustomerManage/CustomerManage.vue
new file mode 100644
index 0000000..15c62c9
--- /dev/null
+++ b/src/views/CustomerManage/CustomerManage.vue
@@ -0,0 +1,202 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem tip-content="鍚堜綔鐘舵��">
+ <FieldRadio
+ v-model="extraParamState.cooperationStatus"
+ :value-enum="EnumEnterpriseCooperationStatusText"
+ buttonStyle
+ showAllBtn
+ @change="getList()"
+ />
+ </QueryFilterItem>
+ <QueryFilterItem tip-content="绛剧害鐘舵��">
+ <FieldRadio
+ v-model="extraParamState.signStatus"
+ :value-enum="EnumEnterpriseCooperationSignStatusText"
+ buttonStyle
+ showAllBtn
+ @change="getList()"
+ />
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.keywords"
+ style="width: 300px"
+ placeholder="浼佷笟鍚嶇О/淇$敤浠g爜/濮撳悕/鐢佃瘽"
+ @on-click-search="getList"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ <template #btn>
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
+ @click="goAddOrEdit()"
+ icon="Plus"
+ type="primary"
+ >鏂板瀹㈡埛</el-button
+ >
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+ </ProTableV2>
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ FieldRadio,
+ ProTableV2,
+ SearchInput,
+ LoadingLayout,
+ AppContainer,
+ QueryFilterItem,
+ useTable,
+} from '@bole-core/components';
+import * as enterpriseServices from '@/services/api/enterprise';
+import {
+ EnumEnterpriseCooperationStatusText,
+ EnumEnterpriseCooperationSignStatusText,
+} from '@/constants';
+
+defineOptions({
+ name: 'CustomerManage',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ detailBtn: {
+ emits: {
+ onClick: (role) => goDetail(role),
+ },
+ },
+ editBtn: {
+ emits: {
+ onClick: (role) => goAddOrEdit(role),
+ },
+ },
+ insureConfigureBtn: {
+ emits: {
+ onClick: (role) => goInsureProductConfigure(role),
+ },
+ // extraProps: {
+ // hide: (role: API.GetPartyAEnterprisesQueryResultItem) => !role.isConfigured,
+ // },
+ },
+};
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
+ operationBtnMap,
+});
+
+const BaseState = {
+ loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+const eventContext = useGlobalEventContext();
+
+eventContext.addEvent('customerManage:add', () => {
+ getList();
+});
+
+eventContext.addEvent('customerManage:edit', () => {
+ getList(paginationState.pageIndex);
+});
+
+onMounted(async () => {
+ await getList();
+ state.loading = false;
+});
+
+const {
+ getDataSource: getList,
+ proTableProps,
+ paginationState,
+ extraParamState,
+ reset,
+} = useTable(
+ async ({ pageIndex, pageSize }, extraParamState) => {
+ try {
+ let params: API.GetPartyAEnterprisesQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ orderInput: extraParamState.orderInput,
+ },
+ keywords: extraParamState.keywords,
+ cooperationStatus: extraParamState.cooperationStatus,
+ signStatus: extraParamState.signStatus,
+ };
+
+ let res = await enterpriseServices.getPartyAEnterprises(params, {
+ showLoading: !state.loading,
+ });
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ keywords: '',
+ cooperationStatus: '' as any as EnumEnterpriseCooperationStatus,
+ signStatus: '' as any as EnumEnterpriseCooperationSignStatus,
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ },
+ queryKey: ['enterpriseServices/getPartyAEnterprises'],
+ columnsRenderProps: {
+ cooperationStatus: { type: 'enum', valueEnum: EnumEnterpriseCooperationStatusText },
+ signStatus: { type: 'enum', valueEnum: EnumEnterpriseCooperationSignStatusText },
+ serviceFeeCollectType: {
+ type: 'enum',
+ valueEnum: EnumEnterpriseCooperationServiceFeeCollectTypeText,
+ },
+ invoiceTaxPointRate: {
+ formatter: (row: API.GetPartyAEnterprisesQueryResultItem) => {
+ if (row.invoiceTaxPointRate) {
+ return `${row.invoiceTaxPointRate}%`;
+ }
+ return '';
+ },
+ },
+ isConfigured: {
+ formatter: (row: API.GetPartyAEnterprisesQueryResultItem) =>
+ row.isConfigured ? '宸查厤缃�' : '鏈厤缃�',
+ },
+ },
+ }
+);
+
+const router = useRouter();
+
+function goAddOrEdit(row?: API.GetPartyAEnterprisesQueryResultItem) {
+ router.push({
+ name: 'AddOrEditCustomer',
+ params: {
+ id: row?.id ?? '',
+ },
+ });
+}
+
+function goDetail(row: API.GetPartyAEnterprisesQueryResultItem) {
+ router.push({
+ name: 'CustomerDetail',
+ params: {
+ id: row?.id ?? '',
+ },
+ });
+}
+
+function goInsureProductConfigure(row: API.GetPartyAEnterprisesQueryResultItem) {
+ router.push({
+ name: 'InsureProductConfigure',
+ params: {
+ id: row?.id ?? '',
+ },
+ });
+}
+</script>
diff --git a/src/views/CustomerManage/InsureProductConfigure.vue b/src/views/CustomerManage/InsureProductConfigure.vue
new file mode 100644
index 0000000..dfb22c7
--- /dev/null
+++ b/src/views/CustomerManage/InsureProductConfigure.vue
@@ -0,0 +1,117 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+ </ProTableV2>
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import { ProTableV2, LoadingLayout, AppContainer, useTable } from '@bole-core/components';
+import * as enterpriseInsuranceProductServices from '@/services/api/enterpriseInsuranceProduct';
+import {
+ EnumEnterpriseCooperationStatusText,
+ EnumEnterpriseCooperationSignStatusText,
+} from '@/constants';
+import { Message } from '@bole-core/core';
+
+defineOptions({
+ name: 'InsureProductConfigure',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ enableBtn: {
+ emits: {
+ onClick: (role) => setDisabledEnterpriseInsuranceProducts(role),
+ },
+ extraProps: {
+ hide: (role: API.GetEnterpriseInsuranceProductsQueryResultItem) => !role.isDisabled,
+ },
+ },
+ disableBtn: {
+ emits: {
+ onClick: (role) => setDisabledEnterpriseInsuranceProducts(role),
+ },
+ extraProps: {
+ hide: (role: API.GetEnterpriseInsuranceProductsQueryResultItem) => role.isDisabled,
+ },
+ },
+};
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
+ operationBtnMap,
+});
+
+const route = useRoute();
+const enterpriseCooperationId = (route.params.id as string) ?? '';
+
+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.GetEnterpriseInsuranceProductsQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ orderInput: extraParamState.orderInput,
+ },
+ enterpriseCooperationId: enterpriseCooperationId,
+ };
+
+ let res = await enterpriseInsuranceProductServices.getEnterpriseInsuranceProducts(params, {
+ showLoading: !state.loading,
+ });
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ },
+ queryKey: ['enterpriseServices/getPartyAEnterprises'],
+ columnsRenderProps: {
+ isDisabled: {
+ formatter: (row: API.GetEnterpriseInsuranceProductsQueryResultItem) =>
+ row.isDisabled ? '绂佺敤' : '鍚敤',
+ },
+ },
+ }
+);
+
+async function setDisabledEnterpriseInsuranceProducts(
+ row: API.GetEnterpriseInsuranceProductsQueryResultItem
+) {
+ try {
+ await Message.tipMessage(`纭瑕�${row.isDisabled ? '鍚敤' : '绂佺敤'}璇ヤ繚闄╀骇鍝佸悧锛焋);
+ let params: API.SetDisabledEnterpriseInsuranceProductsCommand = {
+ enterpriseCooperationId: enterpriseCooperationId,
+ ids: [row.id],
+ isDisabled: !row.isDisabled,
+ };
+ let res = await enterpriseInsuranceProductServices.setDisabledEnterpriseInsuranceProducts(
+ params
+ );
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ getList(paginationState.pageIndex);
+ }
+ } catch (error) {}
+}
+</script>
diff --git a/src/views/CustomerManage/components/AddOrEditCustomerView.vue b/src/views/CustomerManage/components/AddOrEditCustomerView.vue
new file mode 100644
index 0000000..83a92ba
--- /dev/null
+++ b/src/views/CustomerManage/components/AddOrEditCustomerView.vue
@@ -0,0 +1,579 @@
+<template>
+ <LoadingLayout :loading="isEdit && isLoading">
+ <AppScrollContainer>
+ <ChunkCell title="浼佷笟鍩烘湰淇℃伅">
+ <ProForm :model="form" ref="formRef" label-width="140px" :is-read="isDetail">
+ <ProFormCol>
+ <ProFormColItem :span="8">
+ <ProFormItemV2
+ label="浼佷笟鍚嶇О:"
+ prop="enterpriseName"
+ :check-rules="[{ message: '璇疯緭鍏ヤ紒涓氬悕绉�' }]"
+ >
+ <ProFormText
+ v-model.trim="form.enterpriseName"
+ :maxlength="30"
+ placeholder="璇疯緭鍏ヤ紒涓氬悕绉�"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="8">
+ <ProFormItemV2 label="娉曚汉濮撳悕:" prop="legalPerson">
+ <ProFormText
+ v-model.trim="form.legalPerson"
+ :maxlength="30"
+ placeholder="璇疯緭鍏ユ硶浜哄鍚�"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="8">
+ <ProFormItemV2 label="娉曚汉韬唤璇佸彿:" prop="legalIdentity">
+ <ProFormText
+ v-model.trim="form.legalIdentity"
+ :maxlength="30"
+ placeholder="璇疯緭鍏ユ硶浜鸿韩浠借瘉鍙�"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="8">
+ <ProFormItemV2
+ label="缁熶竴绀句細淇$敤浠g爜:"
+ prop="societyCreditCode"
+ :check-rules="[{ message: '璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜', type: 'societyCreditCode' }]"
+ >
+ <ProFormText
+ v-model.trim="form.societyCreditCode"
+ placeholder="璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="8">
+ <ProFormItemV2 label="娉ㄥ唽璧勬湰:" prop="registeredCapital">
+ <ProFormText v-model.trim="form.registeredCapital" placeholder="璇疯緭鍏ユ敞鍐岃祫鏈�" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="8">
+ <ProFormItemV2 label="浼佷笟绫诲瀷:" prop="enterpriseType">
+ <ProFormText v-model.trim="form.enterpriseType" placeholder="璇疯緭鍏ヤ紒涓氱被鍨�" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="8">
+ <ProFormItemV2 label="鎴愮珛鏃ユ湡:" prop="establishmentDate">
+ <ProFormDatePicker
+ v-model="form.establishmentDate"
+ type="date"
+ placeholder="璇烽�夋嫨鎴愮珛鏃ユ湡"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="8">
+ <ProFormItemV2 label="鎵�鍦ㄥ湴鍖�:" prop="areaList">
+ <ProFromAddressSelectV2
+ v-model:areaList="form.areaList"
+ areaListPlaceholder="璇烽�夋嫨鎵�鍦ㄥ湴鍖�"
+ :layer="AreaType.City"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="8"> </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="8">
+ <ProFormItemV2 label="璇︾粏鍦板潃:" prop="address">
+ <ProFormText v-model.trim="form.address" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormItemV2 label="缁忚惀鑼冨洿:" prop="mainBusiness">
+ <ProFormTextArea
+ v-model="form.mainBusiness"
+ maxlength="200"
+ :rows="6"
+ show-word-limit
+ placeholder="璇疯緭鍏ョ粡钀ヨ寖鍥�"
+ />
+ </ProFormItemV2>
+ </ProForm>
+ </ChunkCell>
+ <ChunkCell title="鍚堜綔淇℃伅">
+ <ProForm
+ :model="form"
+ ref="settingFormRef"
+ label-width="140px"
+ :scroll-to-error="false"
+ :is-read="isDetail"
+ >
+ <ProFormCol>
+ <ProFormColItem :span="8">
+ <ProFormItemV2
+ label="鑱旂郴浜�:"
+ prop="contacts"
+ :check-rules="[{ message: '璇疯緭鍏ヨ仈绯讳汉' }]"
+ >
+ <ProFormText
+ v-model.trim="form.contacts"
+ :maxlength="30"
+ placeholder="璇疯緭鍏ヨ仈绯讳汉"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="8">
+ <ProFormItemV2
+ label="鑱旂郴鐢佃瘽:"
+ prop="contactPhoneNumber"
+ :check-rules="[{ message: '璇疯緭鍏ヨ仈绯荤數璇�', type: 'phone' }]"
+ >
+ <ProFormText v-model.trim="form.contactPhoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="8">
+ <ProFormItemV2 label="鑱旂郴閭:" prop="contactEmail">
+ <ProFormText
+ v-model.trim="form.contactEmail"
+ :maxlength="30"
+ placeholder="璇疯緭鍏ヨ仈绯婚偖绠�"
+ :formatter="filterCN"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="8">
+ <ProFormItemV2 label="鍚堜綔鐘舵��:" prop="cooperationStatus">
+ <ProFormRadio
+ v-model="form.cooperationStatus"
+ :value-enum="EnumEnterpriseCooperationStatusText"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="8">
+ <ProFormItemV2 label="绛剧害鐘舵��:" prop="signStatus">
+ <ProFormRadio
+ v-model="form.signStatus"
+ :value-enum="EnumEnterpriseCooperationSignStatusText"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="8">
+ <ProFormItemV2 label="鍚堜綔鍗忚:" prop="cooperationAgreementUrl">
+ <ProFormUpload
+ v-model:file-url="form.cooperationAgreementUrl"
+ :limit="1"
+ :limitFileSize="10"
+ accept="jpg/jpeg,png,pdf"
+ ></ProFormUpload>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="8">
+ <ProFormItemV2 label="鏈嶅姟璐规敹鍙栨柟寮�:" prop="serviceFeeCollectType">
+ <ProFormSelect
+ v-model="form.serviceFeeCollectType"
+ :valueEnum="EnumEnterpriseCooperationServiceFeeCollectTypeText"
+ placeholder="璇烽�夋嫨鏈嶅姟璐规敹鍙栨柟寮�"
+ >
+ </ProFormSelect>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="8">
+ <ProFormItemV2
+ label="鏈嶅姟璐�:"
+ prop="serviceFeeRate"
+ :check-rules="
+ form.serviceFeeCollectType ? [{ message: '璇疯緭鍏ユ湇鍔¤垂' }] : undefined
+ "
+ :required="!!form.serviceFeeCollectType"
+ >
+ <ProFormInputNumber
+ v-model="form.serviceFeeRate"
+ :controls="false"
+ :min="0"
+ :precision="2"
+ placeholder="璇疯緭鍏�"
+ :unit="serviceFeeCollectTypeUnit"
+ :showReadContent="!!form.serviceFeeRate"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="8">
+ <ProFormItemV2 label="鍙戠エ绋庣偣:" prop="invoiceTaxPointRate">
+ <ProFormInputNumber
+ v-model="form.invoiceTaxPointRate"
+ :controls="false"
+ :min="0"
+ :precision="2"
+ placeholder="璇疯緭鍏�"
+ unit="%"
+ :showReadContent="!!form.invoiceTaxPointRate"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ </ProForm>
+ </ChunkCell>
+ <ChunkCell title="璐﹀彿淇℃伅">
+ <ProForm
+ :model="form"
+ ref="accountFormRef"
+ label-width="140px"
+ :scroll-to-error="false"
+ :is-read="isDetail"
+ >
+ <ProFormCol>
+ <ProFormColItem :span="8">
+ <ProFormItemV2
+ label="璐﹀彿:"
+ prop="userName"
+ :check-rules="[{ message: '璇疯緭鍏ヨ处鍙�' }]"
+ >
+ <ProFormText
+ v-model.trim="form.userName"
+ :maxlength="30"
+ placeholder="璇疯緭鍏ヨ处鍙�"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol v-if="!isDetail">
+ <ProFormColItem :span="8">
+ <ProFormItemV2
+ label="瀵嗙爜:"
+ prop="password"
+ :check-rules="[{ required: !isEdit, message: '璇疯緭鍏ュ瘑鐮�' }]"
+ >
+ <div class="password-input">
+ <ProFormText
+ v-if="!isEdit"
+ v-model.trim="form.password"
+ :maxlength="30"
+ placeholder="璇疯緭鍏ュ瘑鐮�"
+ />
+ <el-button v-else type="primary" link @click="openResetPasswordDialog"
+ >淇敼瀵嗙爜</el-button
+ >
+ </div>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol v-if="!isDetail">
+ <ProFormColItem :span="8">
+ <ProFormItemV2
+ label="鎿嶄綔瀵嗙爜:"
+ prop="operatorPassword"
+ :check-rules="[
+ {
+ required: false,
+ message: '璇疯緭鍏�6浣嶆暟瀛�',
+ pattern: /\b\d{6}\b/,
+ },
+ ]"
+ >
+ <div class="password-input">
+ <ProFormText
+ v-if="!isEdit"
+ v-model.trim="form.operatorPassword"
+ :maxlength="6"
+ placeholder="璇疯緭鍏ユ搷浣滃瘑鐮�(6浣嶆暟瀛�)"
+ />
+ <el-button type="primary" v-else link @click="openResetOperatorPasswordDialog"
+ >淇敼瀵嗙爜</el-button
+ >
+ </div>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <div class="chuck-add-or-edit-actions">
+ <el-button @click="handleBack">杩斿洖</el-button>
+ <el-button v-if="!isDetail" type="primary" @click="handleSubmit">纭</el-button>
+ </div>
+ </ProForm>
+ </ChunkCell>
+ </AppScrollContainer>
+ <ResetPasswordDialog v-bind="resetPasswordDialogProps"></ResetPasswordDialog>
+ <ResetOperatorPasswordDialog
+ v-bind="resetOperatorPasswordDialogProps"
+ ></ResetOperatorPasswordDialog>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ LoadingLayout,
+ AppScrollContainer,
+ ProForm,
+ ProFormItemV2,
+ ChunkCell,
+ ProFormText,
+ ProFormUpload,
+ ProFormTextArea,
+ ProFormCol,
+ ProFormColItem,
+ ProFormDatePicker,
+ ProFormRadio,
+ UploadUserFile,
+ useFormDialog,
+ ProFormSelect,
+ ProFormInputNumber,
+} from '@bole-core/components';
+import { FormInstance } from 'element-plus';
+import * as enterpriseServices from '@/services/api/enterprise';
+import * as userServices from '@/services/api/user';
+import { useRouteView, useGlobalEventContext } from '@/hooks';
+import _ from 'lodash';
+import {
+ EnumEnterpriseCooperationStatusText,
+ EnumEnterpriseCooperationSignStatusText,
+ EnumEnterpriseCooperationServiceFeeCollectTypeText,
+ EnumEnterpriseCooperationServiceFeeCollectType,
+} from '@/constants';
+import {
+ validateFormList,
+ filterCN,
+ removeEmptyKeys,
+ format,
+ convertApi2FormUrlOnlyOne,
+} from '@/utils';
+import { Message } from '@bole-core/core';
+import { useQuery } from '@tanstack/vue-query';
+import { AreaType } from '@/constants';
+import ResetPasswordDialog from './ResetPasswordDialog.vue';
+import ResetOperatorPasswordDialog from './ResetOperatorPasswordDialog.vue';
+
+defineOptions({
+ name: 'AddOrEditCustomerView',
+});
+
+type Props = {
+ isDetail: boolean;
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+
+const route = useRoute();
+const id = route.params.id as string;
+const isEdit = !!id;
+
+const { closeViewPush } = useRouteView();
+const eventContext = useGlobalEventContext();
+
+const form = reactive({
+ id: '',
+ enterpriseName: '',
+ legalPerson: '',
+ legalIdentity: '',
+ societyCreditCode: '',
+ registeredCapital: '',
+ enterpriseType: '',
+ establishmentDate: '',
+ areaList: [] as string[],
+ address: '',
+ mainBusiness: '',
+ contacts: '',
+ contactPhoneNumber: '',
+ contactEmail: '',
+ cooperationStatus: EnumEnterpriseCooperationStatus.None,
+ signStatus: EnumEnterpriseCooperationSignStatus.None,
+ cooperationAgreementUrl: [] as UploadUserFile[],
+ userName: '',
+ password: '',
+ operatorPassword: '',
+
+ userId: '',
+
+ serviceFeeCollectType: '' as any as EnumEnterpriseCooperationServiceFeeCollectType,
+ serviceFeeRate: null as any as number,
+ invoiceTaxPointRate: null as any as number,
+});
+
+const { isLoading, refetch } = useQuery({
+ queryKey: ['enterpriseServices/getPartyAEnterprise', id],
+ queryFn: async () => {
+ return await enterpriseServices.getPartyAEnterprise(
+ { id: id },
+ {
+ showLoading: false,
+ }
+ );
+ },
+ onSuccess(data) {
+ form.id = data.id;
+ form.enterpriseName = data.enterpriseName;
+ form.legalPerson = data.legalPerson;
+ form.legalIdentity = data.legalIdentity;
+ form.societyCreditCode = data.societyCreditCode;
+ form.registeredCapital = data.registeredCapital;
+ form.enterpriseType = data.enterpriseType;
+ form.establishmentDate = data.establishmentDate;
+ form.areaList = [data.provinceCode, data.cityCode].filter(Boolean);
+ form.address = data.address;
+ form.mainBusiness = data.mainBusiness;
+ form.contacts = data.contacts;
+ form.contactPhoneNumber = data.contactPhoneNumber;
+ form.contactEmail = data.contactEmail;
+ form.cooperationStatus = data.cooperationStatus;
+ form.signStatus = data.signStatus;
+ form.cooperationAgreementUrl = convertApi2FormUrlOnlyOne(data.cooperationAgreementUrl);
+ form.userName = data.userName;
+
+ form.userId = data.userId;
+ form.serviceFeeCollectType = data.serviceFeeCollectType;
+ form.serviceFeeRate = data.serviceFeeRate;
+ form.invoiceTaxPointRate = data.invoiceTaxPointRate;
+ },
+ enabled: computed(() => !!id),
+});
+
+const serviceFeeCollectTypeUnit = computed(() => {
+ if (!form.serviceFeeCollectType) {
+ return '';
+ } else {
+ return form.serviceFeeCollectType === EnumEnterpriseCooperationServiceFeeCollectType.Rate
+ ? '%'
+ : '鍏�/浜�';
+ }
+});
+
+const {
+ dialogProps: resetPasswordDialogProps,
+ handleAdd: handleResetPasswordAdd,
+ editForm: resetPasswordEditForm,
+} = useFormDialog({
+ onConfirm: resetPassword,
+ defaultFormParams: {
+ ids: '',
+ password: '',
+ },
+});
+
+function openResetPasswordDialog() {
+ handleResetPasswordAdd({
+ ids: form.userId,
+ password: '',
+ });
+}
+
+async function resetPassword() {
+ try {
+ let params: API.ResetUserPasswordsCommand = {
+ ids: [resetPasswordEditForm.ids],
+ password: resetPasswordEditForm.password,
+ };
+ let res = await userServices.resetUserPasswords(params);
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ refetch();
+ }
+ } catch (error) {}
+}
+
+const {
+ dialogProps: resetOperatorPasswordDialogProps,
+ handleAdd: handleResetOperatorPasswordAdd,
+ editForm: resetOperatorPasswordEditForm,
+} = useFormDialog({
+ onConfirm: resetOperatorPassword,
+ defaultFormParams: {
+ ids: '',
+ operatorPassword: '',
+ },
+});
+
+function openResetOperatorPasswordDialog() {
+ handleResetOperatorPasswordAdd({
+ ids: form.userId,
+ operatorPassword: '',
+ });
+}
+
+async function resetOperatorPassword() {
+ try {
+ let params: API.ResetUserOperatorPasswordsCommand = {
+ ids: [resetOperatorPasswordEditForm.ids],
+ operatorPassword: resetOperatorPasswordEditForm.operatorPassword,
+ };
+ let res = await userServices.resetUserOperatorPasswords(params);
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ refetch();
+ }
+ } catch (error) {}
+}
+
+const formRef = ref<FormInstance>();
+const settingFormRef = ref<FormInstance>();
+const accountFormRef = ref<FormInstance>();
+
+async function handleSubmit() {
+ try {
+ const valid = await validateFormList([
+ formRef.value,
+ settingFormRef.value,
+ accountFormRef.value,
+ ]);
+ if (valid) {
+ handleCreateOrEditFlexEnterprise();
+ }
+ } catch (error) {}
+}
+
+async function handleCreateOrEditFlexEnterprise() {
+ try {
+ let params: API.SavePartyAEnterpriseCommand = {
+ enterpriseName: form.enterpriseName,
+ legalPerson: form.legalPerson,
+ legalIdentity: form.legalIdentity,
+ societyCreditCode: form.societyCreditCode,
+ registeredCapital: form.registeredCapital,
+ enterpriseType: form.enterpriseType,
+ establishmentDate: format(form.establishmentDate, 'YYYY-MM-DD'),
+ provinceCode: form.areaList[0],
+ cityCode: form.areaList[1],
+ address: form.address,
+ mainBusiness: form.mainBusiness,
+ contacts: form.contacts,
+ contactPhoneNumber: form.contactPhoneNumber,
+ contactEmail: form.contactEmail,
+ cooperationStatus: form.cooperationStatus,
+ signStatus: form.signStatus,
+ cooperationAgreementUrl: form.cooperationAgreementUrl[0]?.path,
+ userName: form.userName,
+ password: form.password,
+ operatorPassword: form.operatorPassword,
+ serviceFeeCollectType: form.serviceFeeCollectType,
+ invoiceTaxPointRate: form.invoiceTaxPointRate,
+ serviceFeeRate: form.serviceFeeRate,
+ };
+ if (isEdit) {
+ params.id = id;
+ }
+ let res = await enterpriseServices.savePartyAEnterprise(removeEmptyKeys(params));
+ if (res) {
+ Message.successMessage(isEdit ? '缂栬緫鎴愬姛' : '鍙戝竷鎴愬姛');
+ eventContext.emit(isEdit ? 'customerManage:edit' : 'customerManage:add');
+ handleBack();
+ }
+ } catch (error) {}
+}
+
+function handleBack() {
+ closeViewPush(route, {
+ name: 'CustomerManage',
+ });
+}
+</script>
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+
+.password-input {
+ display: flex;
+ flex: 1;
+ min-width: 0;
+}
+</style>
diff --git a/src/views/CustomerManage/components/ResetOperatorPasswordDialog.vue b/src/views/CustomerManage/components/ResetOperatorPasswordDialog.vue
new file mode 100644
index 0000000..cd7be05
--- /dev/null
+++ b/src/views/CustomerManage/components/ResetOperatorPasswordDialog.vue
@@ -0,0 +1,81 @@
+<template>
+ <ProDialog
+ :title="form.title"
+ v-model="visible"
+ @close="onDialogClose"
+ destroy-on-close
+ draggable
+ :width="800"
+ >
+ <ProForm :model="form" ref="dialogForm" label-width="120px">
+ <ProFormItemV2
+ label="鎿嶄綔瀵嗙爜:"
+ prop="operatorPassword"
+ :check-rules="[
+ { message: '璇疯緭鍏ユ搷浣滃瘑鐮�' },
+ {
+ message: '璇疯緭鍏�6浣嶆暟瀛�',
+ pattern: /\b\d{6}\b/,
+ },
+ ]"
+ >
+ <ProFormText
+ placeholder="璇疯緭鍏ユ搷浣滃瘑鐮�"
+ v-model.trim="form.operatorPassword"
+ :maxlength="30"
+ ></ProFormText>
+ </ProFormItemV2>
+ </ProForm>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="emit('onCancel')">鍙� 娑�</el-button>
+ <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button>
+ </span>
+ </template>
+ </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import { ProDialog, ProForm, ProFormItemV2, ProFormText } from '@bole-core/components';
+
+defineOptions({
+ name: 'ResetOperatorPasswordDialog',
+});
+
+// type Props = {};
+
+// const props = withDefaults(defineProps<Props>(), {});
+
+const visible = defineModel({ type: Boolean });
+
+type Form = {
+ title?: string;
+ ids: string;
+ operatorPassword: string;
+};
+
+const form = defineModel<Form>('form');
+const emit = defineEmits<{
+ (e: 'onConfirm'): void;
+ (e: 'onCancel'): void;
+}>();
+
+const dialogForm = ref<FormInstance>();
+
+function onDialogClose() {
+ if (!dialogForm.value) return;
+ dialogForm.value.resetFields();
+}
+
+function handleConfirm() {
+ if (!dialogForm.value) return;
+ dialogForm.value.validate((valid) => {
+ if (valid) {
+ emit('onConfirm');
+ } else {
+ return;
+ }
+ });
+}
+</script>
diff --git a/src/views/CustomerManage/components/ResetPasswordDialog.vue b/src/views/CustomerManage/components/ResetPasswordDialog.vue
new file mode 100644
index 0000000..f622c4f
--- /dev/null
+++ b/src/views/CustomerManage/components/ResetPasswordDialog.vue
@@ -0,0 +1,71 @@
+<template>
+ <ProDialog
+ :title="form.title"
+ v-model="visible"
+ @close="onDialogClose"
+ destroy-on-close
+ draggable
+ :width="800"
+ >
+ <ProForm :model="form" ref="dialogForm" label-width="120px">
+ <ProFormItemV2 label="瀵嗙爜:" prop="password" :check-rules="[{ message: '璇疯緭鍏ュ瘑鐮�' }]">
+ <ProFormText
+ placeholder="璇疯緭鍏ュ瘑鐮�"
+ v-model.trim="form.password"
+ :maxlength="30"
+ ></ProFormText>
+ </ProFormItemV2>
+ </ProForm>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="emit('onCancel')">鍙� 娑�</el-button>
+ <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button>
+ </span>
+ </template>
+ </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import { ProDialog, ProForm, ProFormItemV2, ProFormText } from '@bole-core/components';
+
+defineOptions({
+ name: 'ResetPasswordDialog',
+});
+
+// type Props = {};
+
+// const props = withDefaults(defineProps<Props>(), {});
+
+const visible = defineModel({ type: Boolean });
+
+type Form = {
+ title?: string;
+ ids: string;
+ password: string;
+};
+
+const form = defineModel<Form>('form');
+const emit = defineEmits<{
+ (e: 'onConfirm'): void;
+ (e: 'onCancel'): void;
+}>();
+
+const dialogForm = ref<FormInstance>();
+
+function onDialogClose() {
+ if (!dialogForm.value) return;
+ dialogForm.value.resetFields();
+}
+
+function handleConfirm() {
+ if (!dialogForm.value) return;
+ dialogForm.value.validate((valid) => {
+ if (valid) {
+ emit('onConfirm');
+ } else {
+ return;
+ }
+ });
+}
+</script>
diff --git a/src/views/DataReport/DistributionDetailReport.vue b/src/views/DataReport/DistributionDetailReport.vue
new file mode 100644
index 0000000..6ccf6ba
--- /dev/null
+++ b/src/views/DataReport/DistributionDetailReport.vue
@@ -0,0 +1,116 @@
+<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>
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+ </ProTableV2>
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ ProTableV2,
+ LoadingLayout,
+ AppContainer,
+ QueryFilterItem,
+ useTable,
+ FieldDatePicker,
+} from '@bole-core/components';
+import * as taskServices from '@/services/api/task';
+import { ModelValueType } from 'element-plus';
+import { downloadFileByUrl, format, OrderUtils, setOSSLink } from '@/utils';
+
+defineOptions({
+ name: 'DistributionDetailReport',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ downloadBtn: {
+ emits: {
+ onClick: (role) => handleDownload(role),
+ },
+ extraProps: {
+ hide: (row: API.GetTaskSettlementReleaseReportsQueryResultItem) => !row.url,
+ },
+ },
+};
+
+const { column, operationBtns } = useAccess({
+ operationBtnMap,
+});
+
+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.GetTaskSettlementReleaseReportsQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ orderInput: extraParamState.orderInput,
+ },
+ startMonth: format(extraParamState.time?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+ endMonth: format(extraParamState.time?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+ };
+
+ let res = await taskServices.getTaskSettlementReleaseReports(params, {
+ showLoading: !state.loading,
+ });
+ return res;
+ } catch (error) {
+ console.log('error: ', error);
+ }
+ },
+ {
+ defaultExtraParams: {
+ orderInput: [{ property: 'month', order: EnumPagedListOrder.Desc }],
+ time: [] as unknown as ModelValueType,
+ },
+ queryKey: ['taskServices/getTaskSettlementReleaseReports'],
+ columnsRenderProps: {
+ amount: { type: 'money' },
+ month: { type: 'date', format: 'YYYY-M' },
+ createdTime: { type: 'date' },
+ },
+ }
+);
+
+async function handleDownload(row: API.GetTaskSettlementReleaseReportsQueryResultItem) {
+ downloadFileByUrl(setOSSLink(row.url));
+}
+</script>
diff --git a/src/views/EmploymentManage/CheckManage.vue b/src/views/EmploymentManage/CheckManage.vue
index 7810aad..c009de0 100644
--- a/src/views/EmploymentManage/CheckManage.vue
+++ b/src/views/EmploymentManage/CheckManage.vue
@@ -53,10 +53,11 @@
useTable,
FieldDatePicker,
FieldRadio,
+ useFormDialog,
} from '@bole-core/components';
import * as taskCheckReceiveServices from '@/services/api/taskCheckReceive';
import { ModelValueType } from 'element-plus';
-import { downloadFileByUrl, format, OrderUtils, setOSSLink } from '@/utils';
+import { downloadFileByUrl, format, OrderUtils, setOSSLink, hiddenIDNumberForEnd4 } from '@/utils';
import { EnumTaskCheckReceiveStatusText } from '@/constants';
defineOptions({
@@ -80,7 +81,7 @@
},
};
-const { column, operationBtns } = useAccess({
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
operationBtnMap,
});
diff --git a/src/views/EmploymentManage/CheckReceiveTaskDetail.vue b/src/views/EmploymentManage/CheckReceiveTaskDetail.vue
index dba13ae..d4b19e3 100644
--- a/src/views/EmploymentManage/CheckReceiveTaskDetail.vue
+++ b/src/views/EmploymentManage/CheckReceiveTaskDetail.vue
@@ -87,13 +87,14 @@
!(
(row.checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitCheckReceive ||
row.checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitSubmit) &&
- row.checkReceiveMethods.includes(EnumTaskCheckReceiveMethod.Submit)
+ row.checkReceiveMethods.includes(EnumTaskCheckReceiveMethod.Submit) &&
+ taskInfo.value?.isInternal
),
},
},
};
-const { column, operationBtns } = useAccess({
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
operationBtnMap,
});
@@ -116,6 +117,8 @@
const BaseState = {
loading: true,
checkReceiveMethods: [] as any as EnumTaskCheckReceiveMethod[],
+
+ isInternal: false,
};
const state = reactive({ ...BaseState });
@@ -152,6 +155,7 @@
showLoading: !state.loading,
});
state.checkReceiveMethods = res.objectData?.checkReceiveMethods;
+ state.isInternal = res.objectData?.isInternal;
return res;
} catch (error) {}
},
@@ -178,23 +182,25 @@
// id: row.id,
// });
// } else {
+ // }
handleEdit({
id: row.id,
+ checkReceiveMethods: state.checkReceiveMethods,
+ isInternal: state.isInternal,
tabType: state.checkReceiveMethods.includes(EnumTaskCheckReceiveMethod.CheckIn)
? 'signRecord'
: '',
- checkReceiveMethods: state.checkReceiveMethods,
isDetail,
});
- // }
}
const { dialogProps, handleEdit } = useFormDialog({
defaultFormParams: {
id: '',
- tabType: '',
checkReceiveMethods: [] as any as EnumTaskCheckReceiveMethod[],
+ isInternal: false,
isDetail: false,
+ tabType: '',
},
});
diff --git a/src/views/EmploymentManage/EmploymentManageArrange.vue b/src/views/EmploymentManage/EmploymentManageArrange.vue
index b07e95d..72bfd5a 100644
--- a/src/views/EmploymentManage/EmploymentManageArrange.vue
+++ b/src/views/EmploymentManage/EmploymentManageArrange.vue
@@ -48,6 +48,7 @@
AppContainer,
QueryFilterItem,
useTable,
+ FieldDatePicker,
FieldRadio,
} from '@bole-core/components';
import { Message } from '@bole-core/core';
@@ -69,21 +70,12 @@
},
extraProps: {
hide: (row: API.GetArrangeTaskUsersQueryResultItem) =>
- row.arrangeStatus === EnumTaskUserArrangeStatus.Complete,
- },
- },
- cancelRecruitBtn: {
- emits: {
- onClick: (role) => setTaskUserHire(role, EnumTaskUserHireStatus.Cancel),
- },
- extraProps: {
- hide: (row: API.GetArrangeTaskUsersQueryResultItem) =>
- row.arrangeStatus === EnumTaskUserArrangeStatus.Complete || !row.taskInfoUserId,
+ row.arrangeStatus === EnumTaskUserArrangeStatus.Complete || !state.isInternal,
},
},
};
-const { column, operationBtns } = useAccess({
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
operationBtnMap,
});
@@ -93,6 +85,7 @@
const BaseState = {
loading: true,
+ isInternal: false,
};
const state = reactive({ ...BaseState });
@@ -126,6 +119,9 @@
let res = await taskUserServices.getArrangeTaskUsers(params, {
showLoading: !state.loading,
});
+ if (res) {
+ state.isInternal = res.objectData?.isInternal;
+ }
return res;
} catch (error) {
console.log('error: ', error);
@@ -164,22 +160,4 @@
}
} catch (error) {}
}
-
-async function setTaskUserHire(
- row: API.GetArrangeTaskUsersQueryResultItem,
- hireStatus: EnumTaskUserHireStatus
-) {
- try {
- await Message.tipMessage(`纭瑕佸彇娑堝綍鐢ㄥ悧锛焋);
- let params: API.SetTaskUserHireCommand = {
- id: row.taskInfoUserId,
- hireStatus: hireStatus,
- };
- let res = await taskUserServices.setTaskUserHire(params);
- if (res) {
- Message.successMessage('鎿嶄綔鎴愬姛');
- getList(paginationState.pageIndex);
- }
- } catch (error) {}
-}
</script>
diff --git a/src/views/EmploymentManage/EmploymentSignList.vue b/src/views/EmploymentManage/EmploymentSignList.vue
index 6072f08..23fc1f6 100644
--- a/src/views/EmploymentManage/EmploymentSignList.vue
+++ b/src/views/EmploymentManage/EmploymentSignList.vue
@@ -28,7 +28,6 @@
</ProTableV2>
</AppContainer>
<StaffInfoDialog v-bind="dialogStaffInfoProps" />
- <RefuseDialog v-bind="dialogProps" />
</LoadingLayout>
</template>
@@ -51,7 +50,6 @@
import { convertApi2FormUrlOnlyOne, hiddenIDNumberForEnd4 } from '@/utils';
import * as taskUserServices from '@/services/api/taskUser';
import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee';
-import RefuseDialog from './components/RefuseDialog.vue';
defineOptions({
name: 'EmploymentSignList',
@@ -65,34 +63,25 @@
},
recruitBtn: {
emits: {
- onClick: (role) => handleRecruit(role.id, EnumTaskUserHireStatus.Pass),
+ onClick: (role) => setTaskUserHire(role, EnumTaskUserHireStatus.Pass),
},
extraProps: {
hide: (row: API.GetTaskUsersQueryResultItem) =>
- row.hireStatus === EnumTaskUserHireStatus.Pass,
- },
- },
- cancelRecruitBtn: {
- emits: {
- onClick: (role) => handleCancelRecruit(role.id, EnumTaskUserHireStatus.Cancel),
- },
- extraProps: {
- hide: (row: API.GetTaskUsersQueryResultItem) =>
- row.hireStatus !== EnumTaskUserHireStatus.Pass,
+ row.hireStatus === EnumTaskUserHireStatus.Pass || !state.isInternal,
},
},
refuseBtn: {
emits: {
- onClick: (role) => openRefuseDialog(role),
+ onClick: (role) => setTaskUserHire(role, EnumTaskUserHireStatus.Refuse),
},
extraProps: {
hide: (row: API.GetTaskUsersQueryResultItem) =>
- row.hireStatus !== EnumTaskUserHireStatus.Wait,
+ row.hireStatus !== EnumTaskUserHireStatus.Wait || !state.isInternal,
},
},
};
-const { column, operationBtns } = useAccess({
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
operationBtnMap,
});
@@ -101,6 +90,8 @@
const id = route.params.id as string;
const BaseState = {
loading: true,
+
+ isInternal: false,
};
const state = reactive({ ...BaseState });
@@ -133,6 +124,9 @@
let res = await taskUserServices.getTaskUsers(params, {
showLoading: !state.loading,
});
+ if (res) {
+ state.isInternal = res.objectData?.isInternal;
+ }
return res;
} catch (error) {
console.log('error: ', error);
@@ -204,47 +198,17 @@
} catch (error) {}
}
-const { dialogProps, handleAdd, editForm } = useFormDialog({
- onConfirm: handleRefuse,
- defaultFormParams: {
- id: '',
- remark: '',
- },
-});
-
-async function openRefuseDialog(row: API.GetTaskUsersQueryResultItem) {
+async function setTaskUserHire(
+ row: API.GetTaskUsersQueryResultItem,
+ hireStatus: EnumTaskUserHireStatus
+) {
try {
- await Message.tipMessage(`纭瑕佽阿缁濆悧锛焋);
- handleAdd({
- id: row.id,
- });
- } catch (error) {}
-}
-
-async function handleRefuse() {
- setTaskUserHire(editForm.id, EnumTaskUserHireStatus.Refuse, editForm.remark);
-}
-
-async function handleRecruit(id: string, hireStatus: EnumTaskUserHireStatus) {
- try {
- await Message.tipMessage(`纭瑕佸綍鐢ㄥ悧锛焋);
- setTaskUserHire(id, hireStatus);
- } catch (error) {}
-}
-
-async function handleCancelRecruit(id: string, hireStatus: EnumTaskUserHireStatus) {
- try {
- await Message.tipMessage(`纭瑕佸彇娑堝綍鐢ㄥ悧锛焋);
- setTaskUserHire(id, hireStatus);
- } catch (error) {}
-}
-
-async function setTaskUserHire(id: string, hireStatus: EnumTaskUserHireStatus, remark?: string) {
- try {
+ await Message.tipMessage(
+ `纭瑕�${hireStatus === EnumTaskUserHireStatus.Pass ? '褰曠敤' : '璋㈢粷'}鍚楋紵`
+ );
let params: API.SetTaskUserHireCommand = {
- id: id,
+ id: row.id,
hireStatus: hireStatus,
- hireRemark: remark,
};
let res = await taskUserServices.setTaskUserHire(params);
if (res) {
diff --git a/src/views/EmploymentManage/StandardOrder.vue b/src/views/EmploymentManage/StandardOrder.vue
new file mode 100644
index 0000000..fe6f3c6
--- /dev/null
+++ b/src/views/EmploymentManage/StandardOrder.vue
@@ -0,0 +1,158 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem tip-content="棰勭害鐘舵��">
+ <FieldSelect v-model="extraParamState.status" :value-enum="[]" @change="getList()" />
+ </QueryFilterItem>
+ <QueryFilterItem tip-content="璁㈠崟鐘舵��">
+ <FieldSelect v-model="extraParamState.status" :value-enum="[]" @change="getList()" />
+ </QueryFilterItem>
+ <QueryFilterItem tip-content="涓嬪崟鏃堕棿">
+ <FieldDatePicker
+ v-model="extraParamState.time"
+ type="daterange"
+ range-separator="~"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ clearable
+ @change="getList()"
+ ></FieldDatePicker>
+ </QueryFilterItem>
+ <QueryFilterItem tip-content="鏀粯鏃堕棿">
+ <FieldDatePicker
+ v-model="extraParamState.time"
+ type="daterange"
+ range-separator="~"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ clearable
+ @change="getList()"
+ ></FieldDatePicker>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.keywords"
+ style="width: 260px"
+ placeholder="璁㈠崟鍙�/鏈嶅姟鍚�"
+ @on-click-search="getList"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+ </ProTableV2>
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ ProTableV2,
+ SearchInput,
+ LoadingLayout,
+ AppContainer,
+ QueryFilterItem,
+ useTable,
+ FieldDatePicker,
+ FieldSelect,
+} from '@bole-core/components';
+import { EnumTaskStatusText, EnumTaskReleaseStatusText } from '@/constants';
+import { useGlobalEventContext } from '@/hooks';
+import * as taskServices from '@/services/api/task';
+import { format, OrderUtils } from '@/utils';
+import { ModelValueType } from 'element-plus';
+import { Message } from '@bole-core/core';
+import dayjs from 'dayjs';
+
+defineOptions({
+ name: 'StandardOrder',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ detailBtn: {
+ emits: {
+ onClick: (row: API.GetTaskInfosQueryResultItem) => goDetail(row),
+ },
+ },
+ confirmBtn: {
+ emits: {
+ onClick: (row: API.GetTaskInfosQueryResultItem) => goDetail(row),
+ },
+ },
+};
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
+ operationBtnMap,
+});
+
+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.GetTaskInfosQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ orderInput: extraParamState.orderInput,
+ },
+ keywords: extraParamState.keywords,
+ status: extraParamState.status,
+ releaseStatus: extraParamState.releaseStatus,
+ beginTime: format(extraParamState.time?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+ endTime: format(extraParamState.time?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+ };
+
+ let res = await taskServices.getTaskInfos(params, {
+ showLoading: !state.loading,
+ });
+ return res;
+ } catch (error) {
+ console.log('error: ', error);
+ }
+ },
+ {
+ defaultExtraParams: {
+ keywords: '',
+ status: '' as any as EnumTaskStatus,
+ releaseStatus: '' as any as EnumTaskReleaseStatus,
+ time: [] as unknown as ModelValueType,
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ },
+ queryKey: ['taskServices/getTaskInfos'],
+ columnsRenderProps: {
+ endTime: { type: 'date', format: 'YYYY-MM-DD' },
+ },
+ }
+);
+
+function goDetail(row: API.GetTaskInfosQueryResultItem) {
+ router.push({
+ name: 'StandardOrderDetail',
+ params: {
+ id: row?.id ?? '',
+ },
+ });
+}
+</script>
diff --git a/src/views/EmploymentManage/StandardOrderDetail.vue b/src/views/EmploymentManage/StandardOrderDetail.vue
new file mode 100644
index 0000000..3ae7fae
--- /dev/null
+++ b/src/views/EmploymentManage/StandardOrderDetail.vue
@@ -0,0 +1,180 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppScrollContainer>
+ <ChunkCell title="鐘舵��">
+ <ProForm :model="form" ref="formRef" label-width="120px" :is-read="true">
+ <ProFormItemV2 label="棰勭害鐘舵��:" prop="cooperationStatus">
+ <ProFormRadio v-model="form.access" :value-enum="EnumWalletTransactionStatusText" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="璁㈠崟鐘舵��:" prop="cooperationStatus">
+ <ProFormRadio v-model="form.access" :value-enum="EnumWalletTransactionStatusText" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="缁撶畻鐘舵��:" prop="cooperationStatus">
+ <ProFormRadio v-model="form.access" :value-enum="EnumWalletTransactionStatusText" />
+ </ProFormItemV2>
+ </ProForm>
+ </ChunkCell>
+ <ChunkCell title="璁㈠崟淇℃伅">
+ <ProForm :model="form" ref="formRef" label-width="120px" :is-read="true">
+ <ProFormItemV2 label="鏈嶅姟鍗曞彿:" prop="cooperationStatus">
+ <ProFormText v-model.trim="form.access" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="涓嬪崟鐢ㄦ埛:" prop="cooperationStatus">
+ <ProFormText v-model.trim="form.access" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="鏈嶅姟鏃堕棿:" prop="cooperationStatus">
+ <ProFormDatePicker
+ v-model="form.access"
+ type="date"
+ value-format="YYYY-MM-DD"
+ placeholder="璇烽�夋嫨鏃ユ湡"
+ ></ProFormDatePicker>
+ </ProFormItemV2>
+ <ProFormItemV2 label="鏈嶅姟鍦板潃:" prop="cooperationStatus">
+ <ProFormText v-model.trim="form.access" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="鏈嶅姟鏈烘瀯:" prop="cooperationStatus">
+ <ProFormText v-model.trim="form.access" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="鏈嶅姟浜哄憳:" prop="cooperationStatus">
+ <ProFormText v-model.trim="form.access" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="澶囨敞:" prop="cooperationStatus">
+ <ProFormText v-model.trim="form.access" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="瀹炰粯娆�:" prop="invoiceTaxPointRate">
+ <ProFormInputNumber v-model="form.balance" :controls="false" :min="0" :precision="2" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="瀹炴敹娆�:" prop="cooperationStatus">
+ <ProFormInputNumber v-model="form.balance" :controls="false" :min="0" :precision="2" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="鏈嶅姟璐�:" prop="cooperationStatus">
+ <ProFormInputNumber v-model="form.balance" :controls="false" :min="0" :precision="2" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="缁撶畻娆�:" prop="cooperationStatus">
+ <ProFormInputNumber v-model="form.balance" :controls="false" :min="0" :precision="2" />
+ </ProFormItemV2>
+ </ProForm>
+ <ProTableV2
+ v-bind="proTableProps"
+ :columns="column"
+ :show-operation-column="false"
+ :auto-height="false"
+ :table-props="{
+ height: '400px',
+ }"
+ >
+ </ProTableV2>
+
+ <div class="chuck-add-or-edit-actions">
+ <el-button class="chuck-add-or-edit-actions" @click="handleBack">鍙栨秷棰勭害</el-button>
+ <el-button type="primary" class="chuck-add-or-edit-actions" @click="handleSubmit"
+ >纭棰勭害</el-button
+ >
+ </div>
+ </ChunkCell>
+ </AppScrollContainer>
+ </LoadingLayout>
+</template>
+<script setup lang="ts">
+import {
+ LoadingLayout,
+ AppScrollContainer,
+ ChunkCell,
+ ProForm,
+ ProFormItemV2,
+ ProFormText,
+ ProFormRadio,
+ ProFormDatePicker,
+ ProFormInputNumber,
+ useTable,
+ ProTableV2,
+} from '@bole-core/components';
+import { EnumWalletTransactionStatusText } from '@/constants';
+import * as userServices from '@/services/api/user';
+import { format, setOSSLink } from '@/utils';
+import { useRouteView } from '@/hooks';
+
+defineOptions({
+ name: 'StandardOrderDetail',
+});
+
+const { column, operationBtns } = useAccess({});
+
+const route = useRoute();
+const { closeViewPush } = useRouteView();
+const id = (route.params.id as string) ?? '';
+
+const form = reactive({
+ identity: '',
+ access: '' as any as EnumEnterpriseWalletAccess,
+ balance: 0,
+});
+
+const BaseState = {
+ loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+const {
+ getDataSource: getList,
+ proTableProps,
+ paginationState,
+ extraParamState,
+ reset,
+} = useTable(
+ async ({ pageIndex, pageSize }, extraParamState) => {
+ try {
+ let params: API.GetPersonalUserTransactionsQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ orderInput: extraParamState.orderInput,
+ },
+ enterpriseWalletId: id,
+ };
+ 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: {
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ },
+ columnsRenderProps: {
+ 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) : '',
+ },
+ },
+ }
+);
+
+onMounted(() => {
+ state.loading = false;
+ getList();
+});
+
+function handleBack() {
+ closeViewPush(route, {
+ name: 'TaskManageList',
+ });
+}
+
+async function handleSubmit() {}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/EmploymentManage/TaskArrange.vue b/src/views/EmploymentManage/TaskArrange.vue
index c74d1b0..a445ce2 100644
--- a/src/views/EmploymentManage/TaskArrange.vue
+++ b/src/views/EmploymentManage/TaskArrange.vue
@@ -3,61 +3,18 @@
<AppContainer>
<ProTableQueryFilterBar @on-reset="reset">
<template #query>
- <QueryFilterItem tip-content="浠诲姟鐘舵��">
- <FieldRadio
- v-model="extraParamState.status"
- :value-enum="EnumTaskStatusText"
- buttonStyle
- showAllBtn
- @change="getList()"
- />
- </QueryFilterItem>
- <QueryFilterItem tip-content="鍙戝竷鐘舵��">
- <FieldRadio
- v-model="extraParamState.releaseStatus"
- :value-enum="EnumTaskReleaseStatusText"
- buttonStyle
- showAllBtn
- @change="getList()"
- />
- </QueryFilterItem>
- <QueryFilterItem tip-content="鍙戝竷鏃堕棿">
- <FieldDatePicker
- v-model="extraParamState.time"
- type="daterange"
- range-separator="~"
- start-placeholder="寮�濮嬫棩鏈�"
- end-placeholder="缁撴潫鏃ユ湡"
- clearable
- @change="getList()"
- ></FieldDatePicker>
- </QueryFilterItem>
<QueryFilterItem>
<SearchInput
v-model="extraParamState.keywords"
style="width: 260px"
- placeholder="浠诲姟鍚嶇О/瀹㈡埛"
+ placeholder="濮撳悕/韬唤璇佸彿/鎵嬫満鍙�"
@on-click-search="getList"
>
</SearchInput>
</QueryFilterItem>
</template>
- <template #btn>
- <el-button
- v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
- @click="goAddOrEdit()"
- type="primary"
- >鍙戝竷</el-button
- >
- </template>
</ProTableQueryFilterBar>
<ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
- <template #userCount="{ row }">
- <el-button v-if="!row.isInternal" link type="primary" @click="goSignList(row)">{{
- row.userCount || 0
- }}</el-button>
- <span v-else>/</span>
- </template>
</ProTableV2>
</AppContainer>
</LoadingLayout>
@@ -72,64 +29,20 @@
AppContainer,
QueryFilterItem,
useTable,
- FieldDatePicker,
- FieldRadio,
- defineOperationBtns,
} from '@bole-core/components';
-import { EnumTaskStatusText, EnumTaskReleaseStatusText } from '@/constants';
-import { useGlobalEventContext } from '@/hooks';
import * as taskServices from '@/services/api/task';
-import { format, OrderUtils } from '@/utils';
-import { ModelValueType } from 'element-plus';
-import { Message } from '@bole-core/core';
-import dayjs from 'dayjs';
defineOptions({
name: 'TaskArrange',
});
const operationBtnMap: Record<string, OperationBtnType> = {
- // editBtn: {
- // emits: {
- // onClick: (role) => goAddOrEdit(role),
- // },
- // extraProps: {
- // hide: (row: API.GetTaskInfosQueryResultItem) =>
- // row.status === EnumTaskStatus.Complete || !row.isInternal,
- // },
- // },
- // detailBtn: {
- // emits: {
- // onClick: (row: API.GetTaskInfosQueryResultItem) => goDetail(row),
- // },
- // },
- // publishBtn: {
- // emits: {
- // onClick: (row: API.GetTaskInfosQueryResultItem) =>
- // setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.InProcess),
- // },
- // extraProps: {
- // hide: (row: API.GetTaskInfosQueryResultItem) =>
- // row.releaseStatus === EnumTaskReleaseStatus.InProcess || !row.isInternal,
- // },
- // },
- // unPublishBtn: {
- // emits: {
- // onClick: (row: API.GetTaskInfosQueryResultItem) =>
- // setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.Stopped),
- // },
- // extraProps: {
- // hide: (row: API.GetTaskInfosQueryResultItem) =>
- // row.releaseStatus === EnumTaskReleaseStatus.Stopped || !row.isInternal,
- // },
- // },
arrangeBtn: {
emits: {
onClick: (row: API.GetTaskInfosQueryResultItem) => handleArrange(row),
},
extraProps: {
- hide: (row: API.GetTaskInfosQueryResultItem) =>
- row.releaseStatus === EnumTaskReleaseStatus.Stopped || !row.isInternal,
+ hide: (row: API.GetTaskInfosQueryResultItem) => false,
},
},
};
@@ -146,16 +59,6 @@
const state = reactive({ ...BaseState });
-const eventContext = useGlobalEventContext();
-
-eventContext.addEvent('taskManage:add', () => {
- getList();
-});
-
-eventContext.addEvent('taskManage:edit', () => {
- getList(paginationState.pageIndex);
-});
-
onMounted(async () => {
await getList();
state.loading = false;
@@ -177,10 +80,6 @@
orderInput: extraParamState.orderInput,
},
keywords: extraParamState.keywords,
- status: extraParamState.status,
- releaseStatus: extraParamState.releaseStatus,
- beginTime: format(extraParamState.time?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
- endTime: format(extraParamState.time?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
};
let res = await taskServices.getTaskInfos(params, {
@@ -194,66 +93,13 @@
{
defaultExtraParams: {
keywords: '',
- status: '' as any as EnumTaskStatus,
- releaseStatus: '' as any as EnumTaskReleaseStatus,
- time: [] as unknown as ModelValueType,
orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
},
queryKey: ['taskServices/getTaskInfos'],
- columnsRenderProps: {
- billingMethod: { type: 'enum', valueEnum: EnumBillingMethodText },
- settlementCycle: { type: 'enum', valueEnum: EnumSettlementCycleText },
- genderLimit: { type: 'enum', valueEnum: EnumUserGenderText },
- status: { type: 'enum', valueEnum: EnumTaskStatusText },
- releaseStatus: { type: 'enum', valueEnum: EnumTaskReleaseStatusText },
- createdTime: { type: 'date', format: 'YYYY-MM-DD' },
- beginTime: { type: 'date', format: 'YYYY-MM-DD' },
- endTime: { type: 'date', format: 'YYYY-MM-DD' },
- serviceFee: {
- type: 'money',
- formatter: (row: API.GetTaskInfosQueryResultItem) => {
- return OrderUtils.getServiceFeeText(row.serviceFee, row.billingMethod);
- },
- },
- applyBeginTime: { type: 'date', format: 'YYYY-MM-DD' },
- applyEndTime: { type: 'date', format: 'YYYY-MM-DD' },
- //@ts-ignore
- applyStatus: {
- formatter: (row: API.GetTaskInfosQueryResultItem) => {
- const applyBeginTime = dayjs(row.applyBeginTime);
- const applyEndTime = dayjs(row.applyEndTime);
- const now = dayjs();
- if (applyEndTime.isBefore(now)) {
- return '宸茬粨鏉�';
- } else if (applyBeginTime.isAfter(now)) {
- return '寰呭紑濮�';
- } else {
- return '杩涜涓�';
- }
- },
- },
- },
+ columnsRenderProps: {},
}
);
-async function setTaskInfoReleaseStatus(
- row: API.GetTaskInfosQueryResultItem,
- releaseStatus: EnumTaskReleaseStatus
-) {
- try {
- await Message.tipMessage(`纭瑕�${EnumTaskReleaseStatusTextForTip[releaseStatus]}鍚楋紵`);
- let params: API.SetTaskInfoReleaseStatusCommand = {
- ids: [row.id],
- releaseStatus: releaseStatus,
- };
- let res = await taskServices.setTaskInfoReleaseStatus(params);
- if (res) {
- Message.successMessage('鎿嶄綔鎴愬姛');
- getList(paginationState.pageIndex);
- }
- } catch (error) {}
-}
-
function handleArrange(row: API.GetTaskInfosQueryResultItem) {
router.push({
name: 'EmploymentManageArrange',
@@ -262,32 +108,4 @@
},
});
}
-function goAddOrEdit(row?: API.GetTaskInfosQueryResultItem) {
- router.push({
- name: 'AddOrEditEmployment',
- params: {
- id: row?.id ?? '',
- },
- query: {
- supplierEnterpriseId: row?.supplierEnterpriseId,
- },
- });
-}
-function goDetail(row: API.GetTaskInfosQueryResultItem) {
- router.push({
- name: 'EmploymentManageDetail',
- params: {
- id: row?.id ?? '',
- },
- });
-}
-
-function goSignList(row: API.GetTaskInfosQueryResultItem) {
- router.push({
- name: 'EmploymentSignList',
- params: {
- id: row?.id ?? '',
- },
- });
-}
</script>
diff --git a/src/views/EmploymentManage/TaskArrangeDetail.vue b/src/views/EmploymentManage/TaskArrangeDetail.vue
new file mode 100644
index 0000000..b6bf954
--- /dev/null
+++ b/src/views/EmploymentManage/TaskArrangeDetail.vue
@@ -0,0 +1,274 @@
+<template>
+ <LoadingLayout :loading="isLoading">
+ <AppScrollContainer>
+ <ChunkCell title="浜哄憳淇℃伅">
+ <ProForm :model="form" ref="formRef" label-width="120px" :is-read="true">
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="濮撳悕锛�" prop="name">
+ <ProFormText v-model.trim="form.name"></ProFormText>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鏈嶅姟鍗忚锛�" prop="contractUrl">
+ <ProFormUpload
+ v-model:file-url="form.contractUrl"
+ :limit="1"
+ :limitFileSize="10"
+ accept="jpg/jpeg,png,pdf"
+ ></ProFormUpload>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="韬唤璇佸彿锛�" prop="identity">
+ <ProFormText v-model.trim="form.identity"></ProFormText>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鍗忚鏃堕棿:" prop="contractTime">
+ <ProFormDatePicker
+ v-model="form.contractTime"
+ type="daterange"
+ range-separator="鑷�"
+ ></ProFormDatePicker>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鎵嬫満鍙凤細" prop="contactPhoneNumber">
+ <ProFormText v-model.trim="form.contactPhoneNumber"></ProFormText>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鎬у埆锛�" prop="gender">
+ <ProFormRadio
+ v-model="form.gender"
+ :value-enum="EnumUserGenderTextForPerson"
+ ></ProFormRadio>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="骞撮緞锛�" prop="age">
+ <ProFormInputNumber v-model="form.age" :controls="false" unit="宀�" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ </ProForm>
+ </ChunkCell>
+ <ChunkCell title="浠诲姟瀹夋帓">
+ <ProTableQueryFilterBar>
+ <template #btn>
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
+ type="primary"
+ link
+ @click="handleAdd()"
+ >鏂板浠诲姟</el-button
+ >
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2
+ v-bind="proTableProps"
+ :columns="column"
+ :operationBtns="operationBtns"
+ :auto-height="false"
+ ref="proTable"
+ :tableProps="{
+ maxHeight: '400px',
+ }"
+ >
+ </ProTableV2>
+ <div class="chuck-add-or-edit-actions">
+ <el-button class="chuck-add-or-edit-actions" @click="handleBack">鍙栨秷</el-button>
+ </div>
+ </ChunkCell>
+ </AppScrollContainer>
+ <AddTaskDialog v-bind="dialogProps"></AddTaskDialog>
+ </LoadingLayout>
+</template>
+<script setup lang="ts">
+import {
+ LoadingLayout,
+ ProFormUpload,
+ AppScrollContainer,
+ ChunkCell,
+ ProForm,
+ ProFormItemV2,
+ ProFormText,
+ ProFormCol,
+ ProFormColItem,
+ ProFormDatePicker,
+ ProFormInputNumber,
+ useTable,
+ ProTableV2,
+ ProFormRadio,
+ ProTableQueryFilterBar,
+ useFormDialog,
+ UploadUserFile,
+} from '@bole-core/components';
+import { useQuery } from '@tanstack/vue-query';
+import * as taskUserServices from '@/services/api/taskUser';
+import AddTaskDialog from './components/AddTaskDialog.vue';
+import { EnumUserGenderTextForPerson } from '@/constants';
+import { paginateList } from '@/utils';
+
+defineOptions({
+ name: 'TaskArrangeDetail',
+});
+
+const { closeViewPush } = useRouteView();
+const eventContext = useGlobalEventContext();
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ arrangeBtn: {
+ emits: {
+ onClick: (role) => openDialog(role),
+ },
+ extraProps: {
+ hide: (row: API.GetSettlementTaskUsersQueryResultItem) => false,
+ },
+ },
+ cancelArrangeBtn: {
+ emits: {
+ onClick: (role) => openDialog(role),
+ },
+ extraProps: {
+ hide: (row: API.GetSettlementTaskUsersQueryResultItem) => false,
+ },
+ },
+};
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+ operationBtnMap,
+});
+
+const route = useRoute();
+const id = (route.params.id as string) ?? '';
+
+const form = reactive({
+ name: '',
+ contractUrl: [] as UploadUserFile[],
+ contractTime: [],
+ contactPhoneNumber: '',
+ gender: '',
+ age: 0,
+ identity: '',
+ settlementTaskUsers: [] as API.GetSettlementTaskUsersQueryResultItem[],
+});
+
+const BaseState = {
+ loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+const { isLoading, refetch } = useQuery({
+ queryKey: ['taskUserServices/getSettlementTaskUsers', id],
+ queryFn: async () => {
+ let params: API.APIgetSettlementTaskUsersParams = {
+ id: id,
+ };
+ return await taskUserServices.getSettlementTaskUsers(params, {
+ showLoading: false,
+ });
+ },
+ placeholderData: () => ({} as API.GetSettlementTaskUsersQueryResult),
+ onSuccess(res) {
+ form.settlementTaskUsers = res?.data ?? [];
+ if (res?.detail) {
+ form.name = res?.detail?.name;
+ }
+ getList();
+ },
+ enabled: !!id,
+});
+
+const {
+ getDataSource: getList,
+ proTableProps,
+ paginationState,
+ extraParamState,
+ reset,
+} = useTable(
+ async ({ pageIndex, pageSize }, extraParamState) => {
+ try {
+ let list = [...form.settlementTaskUsers];
+ if (extraParamState.keywords) {
+ list = list?.filter((item) => {
+ return (
+ item.name.includes(extraParamState.keywords) ||
+ item.contactPhoneNumber.includes(extraParamState.keywords) ||
+ item.identity.includes(extraParamState.keywords)
+ );
+ });
+ }
+
+ return Promise.resolve({
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ totalCount: list.length,
+ },
+ data: paginateList(list, pageIndex, pageSize),
+ });
+ } catch (error) {
+ console.log('error: ', error);
+ }
+ },
+ {
+ defaultExtraParams: {
+ keywords: '',
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ },
+ queryKey: ['taskUserServices/getSettlementTaskUsers'],
+ columnsRenderProps: {
+ settlementTime: { type: 'date' },
+ },
+ }
+);
+
+const { dialogProps, handleAdd, handleEdit, editForm } = useFormDialog({
+ onConfirm: handleAddOrEdit,
+ defaultFormParams: {
+ id: '',
+ },
+});
+
+function openDialog(row?: API.GetSettlementTaskUsersQueryResultItem) {
+ if (row) {
+ handleEdit({
+ id: row?.id,
+ });
+ }
+}
+
+async function handleAddOrEdit() {
+ try {
+ // let params: API.EditTaskSettlementOrderRosterCommand = {
+ // id: editForm.id,
+ // };
+ // let res = await taskServices.editTaskSettlementOrderRoster(params);
+ // if (res) {
+ // Message.successMessage('鎿嶄綔鎴愬姛');
+ // refetch();
+ // getList(paginationState.pageIndex);
+ // }
+ } catch (error) {}
+}
+
+function handleBack() {
+ closeViewPush(route, {
+ name: 'ServiceChargeManageList',
+ });
+}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/EmploymentManage/TaskManageList.vue b/src/views/EmploymentManage/TaskManageList.vue
index aaf8578..70829b7 100644
--- a/src/views/EmploymentManage/TaskManageList.vue
+++ b/src/views/EmploymentManage/TaskManageList.vue
@@ -36,7 +36,7 @@
<SearchInput
v-model="extraParamState.keywords"
style="width: 260px"
- placeholder="浠诲姟鍚嶇О"
+ placeholder="浠诲姟鍚嶇О/瀹㈡埛"
@on-click-search="getList"
>
</SearchInput>
@@ -53,9 +53,10 @@
</ProTableQueryFilterBar>
<ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
<template #userCount="{ row }">
- <el-button link type="primary" @click="goSignList(row)">{{
+ <el-button v-if="!row.isInternal" link type="primary" @click="goSignList(row)">{{
row.userCount || 0
}}</el-button>
+ <span v-else>/</span>
</template>
</ProTableV2>
</AppContainer>
@@ -73,6 +74,7 @@
useTable,
FieldDatePicker,
FieldRadio,
+ defineOperationBtns,
} from '@bole-core/components';
import { EnumTaskStatusText, EnumTaskReleaseStatusText } from '@/constants';
import { useGlobalEventContext } from '@/hooks';
@@ -92,7 +94,8 @@
onClick: (role) => goAddOrEdit(role),
},
extraProps: {
- hide: (row: API.GetTaskInfosQueryResultItem) => row.status === EnumTaskStatus.Complete,
+ hide: (row: API.GetTaskInfosQueryResultItem) =>
+ row.status === EnumTaskStatus.Complete || !row.isInternal,
},
},
detailBtn: {
@@ -107,7 +110,7 @@
},
extraProps: {
hide: (row: API.GetTaskInfosQueryResultItem) =>
- row.releaseStatus === EnumTaskReleaseStatus.InProcess,
+ row.releaseStatus === EnumTaskReleaseStatus.InProcess || !row.isInternal,
},
},
unPublishBtn: {
@@ -117,7 +120,7 @@
},
extraProps: {
hide: (row: API.GetTaskInfosQueryResultItem) =>
- row.releaseStatus === EnumTaskReleaseStatus.Stopped,
+ row.releaseStatus === EnumTaskReleaseStatus.Stopped || !row.isInternal,
},
},
arrangeBtn: {
@@ -126,7 +129,7 @@
},
extraProps: {
hide: (row: API.GetTaskInfosQueryResultItem) =>
- row.releaseStatus === EnumTaskReleaseStatus.Stopped,
+ row.releaseStatus === EnumTaskReleaseStatus.Stopped || !row.isInternal,
},
},
};
@@ -207,7 +210,7 @@
beginTime: { type: 'date', format: 'YYYY-MM-DD' },
endTime: { type: 'date', format: 'YYYY-MM-DD' },
serviceFee: {
- type: 'text',
+ type: 'money',
formatter: (row: API.GetTaskInfosQueryResultItem) => {
return OrderUtils.getServiceFeeText(row.serviceFee, row.billingMethod);
},
@@ -265,6 +268,9 @@
params: {
id: row?.id ?? '',
},
+ query: {
+ supplierEnterpriseId: row?.supplierEnterpriseId,
+ },
});
}
function goDetail(row: API.GetTaskInfosQueryResultItem) {
diff --git a/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue b/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
index d130636..f15f78d 100644
--- a/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
+++ b/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
@@ -3,19 +3,6 @@
<AppContainer>
<PageFormLayout title="鍩烘湰淇℃伅">
<ProForm :model="form" ref="productFormRef" label-width="120px" :is-read="isDetail">
- <ProFormItemV2
- label="渚涘簲鍟�:"
- prop="supplierEnterpriseId"
- :check-rules="[{ message: '璇烽�夋嫨渚涘簲鍟�' }]"
- >
- <ProFormSelect
- v-model="form.supplierEnterpriseId"
- :value-enum="supplierEnterpriseSelect"
- placeholder="璇烽�夋嫨渚涘簲鍟�"
- :disabled="isEdit"
- @change="supplierEnterpriseChange"
- ></ProFormSelect>
- </ProFormItemV2>
<ProFormCol>
<ProFormColItem :span="12">
<ProFormItemV2
@@ -65,6 +52,7 @@
},
},
]"
+ @change="calcTaskTotalServiceFee"
>
<RadioWithExtra
v-model="form.billingMethod"
@@ -72,7 +60,6 @@
:showExtra="true"
:button-style="false"
:disabled="feeCannotEdit"
- @change="calcTaskTotalServiceFee"
>
<template #extra>
<ProFormInputNumber
@@ -91,7 +78,7 @@
</ProFormItemV2>
</ProFormColItem>
</ProFormCol>
- <template v-if="form.billingMethod === EnumBillingMethod.Hour">
+ <template v-if="form.billingMethod === EnumBillingMethod.Day">
<ProFormCol>
<ProFormColItem :span="12">
<ProFormItemV2
@@ -384,21 +371,6 @@
</ProFormItemV2>
</ProFormColItem>
</ProFormCol>
- <ProFormItemV2
- label="淇濋櫓浜у搧:"
- prop="insuranceProductId"
- :check-rules="[{ message: '璇烽�夋嫨淇濋櫓浜у搧' }]"
- v-if="
- form.checkReceiveMethods.includes(EnumTaskCheckReceiveMethod.CheckIn) &&
- form.isConfiguredInsurance
- "
- >
- <ProFormSelect
- v-model="form.insuranceProductId"
- :value-enum="enterpriseInsuranceProductSelect"
- @change="calcTaskTotalServiceFee"
- ></ProFormSelect>
- </ProFormItemV2>
<ProFormItemV2 label="棰勮鏈嶅姟璐规�婚:" prop="totalServiceFee">
{{ `${toThousand(form.totalServiceFee)}鍏僠 }}
</ProFormItemV2>
@@ -456,7 +428,7 @@
EnumSettlementCycleDateWeekArray,
EnumSettlementCycle,
EnumTaskCheckReceiveMethodText,
- EnumTaskCheckReceiveMethod,
+ EnumEnterpriseWalletAccessText,
} from '@/constants';
import { format, FormValidator, toThousand } from '@/utils';
import dayjs from 'dayjs';
@@ -473,7 +445,9 @@
const id = route.params.id as string;
const isEdit = !!id;
-const { supplierEnterpriseSelect } = useGetSupplierEnterpriseSelect();
+const { settlementAccessList } = useEnterpriseWalletAccessSelect({
+ supplierEnterpriseId: computed(() => ''),
+});
function disabledDate(time: Date) {
return dayjs(time).isBefore(dayjs(), 'day');
@@ -518,12 +492,11 @@
const form = reactive({
supplierEnterpriseId: '',
name: '',
- needPeopleNumber: null as number,
billingMethod: EnumBillingMethod.Day,
serviceFee: null,
- totalPieceQuantity: null as number,
settlementCycle: EnumSettlementCycle.Day,
settlementDate: null as number,
+ totalPieceQuantity: null as number,
benefits: [] as string[],
ageMinLimit: null,
ageMaxLimit: null,
@@ -538,19 +511,9 @@
checkReceiveMethods: [] as any as EnumTaskCheckReceiveMethod[],
applyTime: [] as unknown as ModelValueType,
settlementAccess: '' as any as EnumEnterpriseWalletAccess,
+ needPeopleNumber: null as number,
+
totalServiceFee: 0,
-
- insuranceProductId: '',
- isConfiguredInsurance: false,
-});
-
-const { settlementAccessList } = useEnterpriseWalletAccessSelect({
- supplierEnterpriseId: computed(() => form.supplierEnterpriseId),
-});
-
-const { enterpriseInsuranceProductSelect } = useEnterpriseInsuranceProductSelect({
- supplierEnterpriseId: computed(() => form.supplierEnterpriseId),
- isConfiguredInsurance: computed(() => form.isConfiguredInsurance),
});
const { isLoading } = useQuery({
@@ -565,14 +528,13 @@
},
placeholderData: () => ({} as API.GetTaskInfoQueryResult),
onSuccess(data) {
- form.supplierEnterpriseId = data.supplierEnterpriseId;
+ form.supplierEnterpriseId = data.supplierEnterpriseId ?? '';
form.name = data.name;
- form.needPeopleNumber = data.needPeopleNumber;
form.billingMethod = data.billingMethod;
- form.totalPieceQuantity = data.totalPieceQuantity;
form.serviceFee = data.serviceFee;
form.settlementCycle = data.settlementCycle;
form.settlementDate = data.settlementDate;
+ form.totalPieceQuantity = data.totalPieceQuantity;
form.benefits = data.benefits?.map((x) => x.benefitCode) ?? [];
form.ageMinLimit = data.ageMinLimit;
form.ageMaxLimit = data.ageMaxLimit;
@@ -605,11 +567,8 @@
format(data.applyEndTime, 'YYYY-MM-DD 23:59:59'),
];
form.settlementAccess = data.settlementAccess;
+ form.needPeopleNumber = data.needPeopleNumber;
form.totalServiceFee = data.estimatedServiceFee;
-
- form.insuranceProductId = data.insuranceProductId ?? '';
-
- supplierEnterpriseChange();
},
enabled: isEdit,
});
@@ -628,7 +587,6 @@
name: 'TaskManageList',
});
}
-
const productFormRef = ref<FormInstance>();
function handleConfirm() {
if (!productFormRef.value) return;
@@ -641,42 +599,6 @@
});
}
-// function calculateMonthInterval(startDate, endDate) {
-// const diffInDays = dayjs(endDate).diff(startDate, 'day');
-// const monthInterval = Math.ceil(diffInDays / 30);
-// return monthInterval > 15 ? Math.ceil(monthInterval / 30) : monthInterval;
-// }
-
-// const totalServiceFee = computed(() => {
-// const monthInterval = calculateMonthInterval(form.time[0], form.time[1]);
-// const dayInterval = dayjs(form.time[1]).diff(dayjs(form.time[0]), 'day');
-// switch (form.billingMethod) {
-// case EnumBillingMethod.Month:
-// return monthInterval * (form.serviceFee ?? 0) * (form.needPeopleNumber ?? 0);
-// case EnumBillingMethod.Day:
-// return dayInterval * (form.serviceFee ?? 0) * (form.needPeopleNumber ?? 0);
-// case EnumBillingMethod.Hour:
-// return (
-// dayInterval *
-// (form.verifyWorkHours ?? 0) *
-// (form.serviceFee ?? 0) *
-// (form.needPeopleNumber ?? 0)
-// );
-// case EnumBillingMethod.Piece:
-// return (form.totalPieceQuantity ?? 0) * (form.serviceFee ?? 0);
-// default:
-// return form.totalServiceFee;
-// }
-// });
-
-function supplierEnterpriseChange() {
- if (form.supplierEnterpriseId) {
- form.isConfiguredInsurance = supplierEnterpriseSelect.value?.find(
- (item) => item.value === form.supplierEnterpriseId
- )?.data?.isConfiguredInsurance;
- }
-}
-
async function calcTaskTotalServiceFee() {
try {
let params: API.CalcTaskTotalServiceFeeCommand = {
@@ -687,12 +609,7 @@
needPeopleNumber: form.needPeopleNumber ?? 0,
beginTime: dayjs(form.time[0]).format('YYYY-MM-DD 00:00:00'),
endTime: dayjs(form.time[1]).format('YYYY-MM-DD 23:59:59'),
- supplierEnterpriseId: form.supplierEnterpriseId,
- checkReceiveMethods: form.checkReceiveMethods,
};
- if (form.insuranceProductId) {
- params.insuranceProductId = form.insuranceProductId;
- }
let res = await taskServices.calcTaskTotalServiceFee(params);
if (res) {
form.totalServiceFee = res.totalServiceFee;
@@ -732,7 +649,6 @@
description: form.description,
checkReceiveMethods: form.checkReceiveMethods,
settlementAccess: form.settlementAccess,
- insuranceProductId: form.insuranceProductId ? form.insuranceProductId : null,
};
if (form.billingMethod !== EnumBillingMethod.Face) {
params.serviceFee = form.serviceFee;
@@ -757,7 +673,7 @@
callback: (action) => {
if (action === 'confirm') {
router.push({
- name: 'BalanceManageV2',
+ name: 'EnterpriseBalanceManage',
});
}
},
diff --git a/src/views/EmploymentManage/components/AddTaskDialog.vue b/src/views/EmploymentManage/components/AddTaskDialog.vue
new file mode 100644
index 0000000..4a18c8a
--- /dev/null
+++ b/src/views/EmploymentManage/components/AddTaskDialog.vue
@@ -0,0 +1,175 @@
+<template>
+ <ProDialog title="鏂板浠诲姟" v-model="visible" width="1200px" destroy-on-close>
+ <ProTableQueryFilterBar>
+ <template #query>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.keywords"
+ style="width: 260px"
+ placeholder="浠诲姟鍚�/浠诲姟鍗曞彿"
+ @on-click-search="getList"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2
+ v-bind="proTableProps"
+ :columns="column"
+ :operation-btns="operationBtns"
+ :auto-height="false"
+ :table-props="{
+ height: '400px',
+ }"
+ >
+ </ProTableV2>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="emit('onCancel')">鍙栨秷</el-button>
+ <el-button type="primary" @click="handleConfirm">纭</el-button>
+ </span>
+ </template>
+ </ProDialog>
+</template>
+
+<script setup lang="ts">
+import {
+ ProDialog,
+ useTable,
+ defineColumns,
+ ProTableV2,
+ defineOperationBtns,
+ ProTableQueryFilterBar,
+ QueryFilterItem,
+ SearchInput,
+} from '@bole-core/components';
+import * as userServices from '@/services/api/user';
+
+defineOptions({
+ name: 'AddTaskDialog',
+});
+
+type Form = {
+ id: string;
+};
+
+const form = defineModel<Form>('form');
+const visible = defineModel<boolean>('modelValue');
+
+const emit = defineEmits<{
+ (e: 'onConfirm'): void;
+ (e: 'onCancel'): void;
+}>();
+
+const operationBtns = defineOperationBtns([
+ {
+ data: {
+ enCode: 'chooseBtn',
+ name: '閫夋嫨',
+ },
+ emits: {
+ onClick: (role) => handleChoose(role),
+ },
+ extraProps: {
+ hide: (row) => row.recommendStatus === EnumTaskRecommendStatus.No,
+ },
+ },
+ {
+ data: {
+ enCode: 'cancelChooseBtn',
+ name: '鍙栨秷閫夋嫨',
+ },
+ emits: {
+ onClick: (role) => handleChoose(role),
+ },
+ extraProps: {
+ hide: (row) => row.recommendStatus === EnumTaskRecommendStatus.No,
+ },
+ },
+]);
+
+const column = defineColumns([
+ {
+ id: '1',
+ enCode: 'name',
+ name: '浠诲姟鍚�',
+ },
+ {
+ id: '2',
+ enCode: 'name',
+ name: '浠诲姟鍗曞彿',
+ },
+ {
+ id: '3',
+ enCode: 'name',
+ name: '鍙戝崟瀹㈡埛',
+ },
+ {
+ id: '4',
+ enCode: 'name',
+ name: '瀹㈡埛ID',
+ },
+ {
+ id: '5',
+ enCode: 'name',
+ name: '浠诲姟寮�濮�',
+ },
+ {
+ id: '6',
+ enCode: 'name',
+ name: '浠诲姟缁撴潫',
+ },
+]);
+
+watch(
+ () => visible.value,
+ (value) => {
+ if (value) {
+ getList();
+ }
+ }
+);
+
+const {
+ getDataSource: getList,
+ proTableProps,
+ paginationState,
+ extraParamState,
+} = useTable(
+ async ({ pageIndex, pageSize }, extraParamState) => {
+ try {
+ let params: API.GetPersonalUserInfoSignContractsQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ orderInput: extraParamState.orderInput,
+ },
+ id: form.value.id,
+ };
+ let res = await userServices.getPersonalUserInfoSignContracts(params);
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ keywords: '',
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ },
+ columnsRenderProps: {
+ applyTime: { type: 'date' },
+ hireTime: { type: 'date' },
+ enterpriseSignContractTime: { type: 'date' },
+ },
+ }
+);
+
+function handleChoose(row) {}
+
+function handleConfirm() {
+ emit('onConfirm');
+}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/EmploymentManage/components/CheckManageDialog.vue b/src/views/EmploymentManage/components/CheckManageDialog.vue
index f90e2cc..bf67829 100644
--- a/src/views/EmploymentManage/components/CheckManageDialog.vue
+++ b/src/views/EmploymentManage/components/CheckManageDialog.vue
@@ -38,13 +38,15 @@
type Form = {
id: string;
- isDetail: boolean;
- tabType: string;
checkReceiveMethods: EnumTaskCheckReceiveMethod[];
+ isInternal: boolean;
+ tabType: string;
+ isDetail: boolean;
};
const visible = defineModel({ type: Boolean });
const form = defineModel<Form>('form');
+
const title = computed(() => (form.value.isDetail ? '璇︽儏' : '楠屾敹'));
const emit = defineEmits<{
(e: 'onCancel'): void;
@@ -153,12 +155,13 @@
},
extraProps: {
hide: (row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) =>
- form.value.isDetail ||
- form.value.tabType === 'signRecord' ||
!(
row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit ||
row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive
- ),
+ ) ||
+ form.value.isDetail ||
+ form.value.tabType === 'signRecord' ||
+ !form.value.isInternal,
},
},
{
@@ -171,12 +174,13 @@
},
extraProps: {
hide: (row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) =>
- form.value.isDetail ||
- form.value.tabType === 'signRecord' ||
!(
row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit ||
row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive
- ),
+ ) ||
+ form.value.isDetail ||
+ form.value.tabType === 'signRecord' ||
+ !form.value.isInternal,
},
},
{
diff --git a/src/views/EmploymentManage/components/ManualCheckManageDialog.vue b/src/views/EmploymentManage/components/ManualCheckManageDialog.vue
index 802597e..703ea4f 100644
--- a/src/views/EmploymentManage/components/ManualCheckManageDialog.vue
+++ b/src/views/EmploymentManage/components/ManualCheckManageDialog.vue
@@ -18,9 +18,13 @@
ProTableV2,
ProDialogTableWrapper,
defineColumns,
+ defineOperationBtns,
useTable,
} from '@bole-core/components';
import * as taskCheckReceiveServices from '@/services/api/taskCheckReceive';
+import { setOSSLink } from '@/utils';
+import { downloadWithZip, Message } from '@bole-core/core';
+import { useGlobalEventContext } from '@/hooks';
defineOptions({
name: 'ManualCheckManageDialog',
@@ -36,6 +40,8 @@
(e: 'onCancel'): void;
}>();
+const eventContext = useGlobalEventContext();
+
const columns = defineColumns([
{
id: '1',
@@ -120,4 +126,33 @@
},
}
);
+
+function handleDownload(row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) {
+ if (row.files?.length > 0) {
+ downloadWithZip(
+ row.files.map((x) => ({
+ data: `${setOSSLink(x)}`,
+ })),
+ '楠屾敹鐓х墖'
+ );
+ }
+}
+
+async function checkReceiveTask(
+ row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem,
+ checkReceiveStatus: EnumTaskUserSubmitCheckReceiveStatus
+) {
+ try {
+ let params: API.CheckReceiveTaskCommand = {
+ id: row.id,
+ checkReceiveStatus: checkReceiveStatus,
+ };
+ let res = await taskCheckReceiveServices.checkReceiveTask(params);
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ getList(paginationState.pageIndex);
+ eventContext.emit('checkReceiveTask');
+ }
+ } catch (error) {}
+}
</script>
diff --git a/src/views/FinanceManage/AccountManage.vue b/src/views/FinanceManage/AccountManage.vue
new file mode 100644
index 0000000..818d4a4
--- /dev/null
+++ b/src/views/FinanceManage/AccountManage.vue
@@ -0,0 +1,169 @@
+<template>
+ <LoadingLayout :loading="isLoading">
+ <AppContainer>
+ <PageFormLayout title="璐︽埛淇℃伅">
+ <ProForm :model="form" ref="formRef" label-width="140px" :is-read="isDetail">
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="璐︽埛鍚嶇О:" prop="name" mode="read">
+ <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ヨ处鎴峰悕绉�" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="寮�鎴锋�昏:"
+ prop="bank"
+ :check-rules="[{ message: '璇疯緭鍏ュ紑鎴锋�昏' }]"
+ >
+ <ProFormText v-model.trim="form.bank" placeholder="璇疯緭鍏ュ紑鎴锋�昏" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="寮�鎴锋敮琛�:"
+ prop="bankBranch"
+ :check-rules="[{ message: '璇疯緭鍏ュ紑鎴锋敮琛�' }]"
+ >
+ <ProFormText v-model.trim="form.bankBranch" placeholder="璇疯緭鍏ュ紑鎴锋敮琛�" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="鎴峰彿:"
+ prop="account"
+ :check-rules="[{ message: '璇疯緭鍏ユ埛鍙�', type: 'bankCard' }]"
+ >
+ <ProFormText v-model.trim="form.account" placeholder="璇疯緭鍏ユ埛鍙�" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ </ProForm>
+ <template #footer>
+ <el-button v-if="isDetail" type="primary" @click="isDetail = false">缂栬緫</el-button>
+ <el-button v-else type="primary" @click="handleConfirm()">淇濆瓨</el-button>
+ </template>
+ </PageFormLayout>
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ LoadingLayout,
+ AppContainer,
+ PageFormLayout,
+ ProForm,
+ ProFormCol,
+ ProFormColItem,
+ ProFormItemV2,
+ ProFormInputNumber,
+ ProFormRadio,
+ ProFormText,
+} from '@bole-core/components';
+import { useQuery } from '@tanstack/vue-query';
+import * as smsServices from '@/services/api/sms';
+import { FormInstance } from 'element-plus';
+import { Message } from '@bole-core/core';
+import * as enterpriseCooperationWalletServices from '@/services/api/enterpriseCooperationWallet';
+
+defineOptions({
+ name: 'AccountManage',
+});
+
+const { userDetail } = useUser();
+
+const form = reactive({
+ name: '',
+ bank: '',
+ bankBranch: '',
+ account: '',
+});
+
+const isDetail = ref(true);
+
+const { isLoading } = useQuery({
+ queryKey: ['enterpriseCooperationWalletServices/getEnterpriseReceiveAccount'],
+ queryFn: async () => {
+ return await enterpriseCooperationWalletServices.getEnterpriseReceiveAccount(
+ {},
+ {
+ showLoading: false,
+ }
+ );
+ },
+ placeholderData: () => ({} as API.GetEnterpriseReceiveAccountQueryResult),
+ onSuccess(data) {
+ form.name = data.name;
+ form.bank = data.bank;
+ form.bankBranch = data.bankBranch;
+ form.account = data.account;
+ },
+});
+
+const formRef = ref<FormInstance>();
+
+function handleConfirm() {
+ if (!formRef.value) return;
+ formRef.value.validate((valid) => {
+ if (valid) {
+ submit();
+ } else {
+ return;
+ }
+ });
+}
+
+async function submit() {
+ try {
+ let params: API.SaveEnterpriseReceiveAccountCommand = {
+ bank: form.bank,
+ bankBranch: form.bankBranch,
+ account: form.account,
+ };
+ let res = await enterpriseCooperationWalletServices.saveEnterpriseReceiveAccount(params);
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ isDetail.value = true;
+ }
+ } catch (error) {}
+}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+
+.access-list {
+ flex: 1;
+ min-width: 0;
+
+ :deep() {
+ .el-form-item__content {
+ flex-direction: column;
+ align-items: flex-start;
+ }
+ }
+}
+
+.access-item {
+ display: flex;
+ align-items: center;
+ margin-bottom: 10px;
+
+ .access-item-label {
+ margin-right: 20px;
+ word-break: keep-all;
+ }
+
+ :deep() {
+ .el-radio-group {
+ margin-right: 20px;
+ }
+ }
+}
+</style>
diff --git a/src/views/FinanceManage/CustomerRechargeManage.vue b/src/views/FinanceManage/CustomerRechargeManage.vue
new file mode 100644
index 0000000..48307e0
--- /dev/null
+++ b/src/views/FinanceManage/CustomerRechargeManage.vue
@@ -0,0 +1,158 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.keywords"
+ style="width: 260px"
+ placeholder="浼佷笟鍚嶇О/淇$敤浠g爜"
+ @on-click-search="getList"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+ </ProTableV2>
+ </AppContainer>
+ <CustomerRechargeDialog v-bind="dialogProps" />
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ ProTableV2,
+ SearchInput,
+ LoadingLayout,
+ AppContainer,
+ QueryFilterItem,
+ useTable,
+ useFormDialog,
+ defineOperationBtns,
+} from '@bole-core/components';
+import * as enterpriseCooperationWalletServices from '@/services/api/enterpriseCooperationWallet';
+import CustomerRechargeDialog from './components/CustomerRechargeDialog.vue';
+import { Message } from '@bole-core/core';
+
+defineOptions({
+ name: 'CustomerRechargeManage',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ confirmBtn: {
+ emits: {
+ onClick: (role) => openDialog(role, false),
+ },
+ extraProps: {
+ hide: (role: API.GetCooperationWalletRechargeTransactionsQueryResultItem) =>
+ role.transactionStatus !== EnumEnterpriseCooperationWalletTransactionStatus.WaitSure,
+ },
+ },
+ detailBtn: {
+ emits: {
+ onClick: (role) => openDialog(role, true),
+ },
+ extraProps: {
+ hide: (role: API.GetCooperationWalletRechargeTransactionsQueryResultItem) =>
+ role.transactionStatus === EnumEnterpriseCooperationWalletTransactionStatus.WaitSure,
+ },
+ },
+};
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+ operationBtnMap,
+});
+
+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.GetCooperationWalletRechargeTransactionsQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ orderInput: extraParamState.orderInput,
+ },
+ keywords: extraParamState.keywords,
+ };
+ let res = await enterpriseCooperationWalletServices.getCooperationWalletRechargeTransactions(
+ params
+ );
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ keywords: '',
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ },
+ columnsRenderProps: {
+ amount: { type: 'money' },
+ createdTime: { type: 'date' },
+ transactionStatus: {
+ type: 'enum',
+ valueEnum: EnumEnterpriseCooperationWalletTransactionStatusText,
+ },
+ },
+ }
+);
+
+const { dialogProps, handleAdd, handleEdit, editForm } = useFormDialog({
+ onConfirm: handleAddOrEdit,
+ defaultFormParams: {
+ id: '',
+ cooperationId: '',
+ transactionStatus: '' as any as EnumEnterpriseCooperationWalletTransactionStatus,
+ remark: '',
+ isDetail: false,
+ },
+});
+
+function openDialog(
+ row: API.GetCooperationWalletRechargeTransactionsQueryResultItem,
+ isDetail: boolean
+) {
+ handleEdit({
+ cooperationId: '',
+ id: row.id,
+ transactionStatus: '' as any as EnumEnterpriseCooperationWalletTransactionStatus,
+ remark: '',
+ isDetail: isDetail,
+ });
+}
+
+async function handleAddOrEdit() {
+ try {
+ let params: API.SureRechargeCooperationWalletCommand = {
+ cooperationId: editForm.cooperationId,
+ id: editForm.id,
+ transactionStatus: editForm.transactionStatus,
+ remark: editForm.remark,
+ };
+ let res = await enterpriseCooperationWalletServices.sureRechargeCooperationWallet(params);
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ getList(paginationState.pageIndex);
+ }
+ } catch (error) {}
+}
+</script>
diff --git a/src/views/FinanceManage/CustomerRechargeRecord.vue b/src/views/FinanceManage/CustomerRechargeRecord.vue
new file mode 100644
index 0000000..d129493
--- /dev/null
+++ b/src/views/FinanceManage/CustomerRechargeRecord.vue
@@ -0,0 +1,105 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+ </ProTableV2>
+ </AppContainer>
+ <RechargeRecordialog v-bind="dialogProps" />
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableV2,
+ LoadingLayout,
+ AppContainer,
+ useTable,
+ useFormDialog,
+ defineOperationBtns,
+ UploadUserFile,
+} from '@bole-core/components';
+import * as enterpriseCooperationWalletServices from '@/services/api/enterpriseCooperationWallet';
+import RechargeRecordialog from './components/RechargeRecordialog.vue';
+import { EnumEnterpriseCooperationWalletTransactionStatusText } from '@/constants';
+
+defineOptions({
+ name: 'CustomerRechargeRecord',
+});
+
+const route = useRoute();
+const id = route.params.id as string;
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ detailBtn: {
+ emits: {
+ onClick: (role: API.GetCooperationWalletRechargeTransactionsQueryResultItem) =>
+ openDialog(role),
+ },
+ },
+};
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+ operationBtnMap,
+});
+
+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.GetCooperationWalletRechargeTransactionsQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ orderInput: extraParamState.orderInput,
+ },
+ cooperationId: id,
+ };
+ let res = await enterpriseCooperationWalletServices.getCooperationWalletRechargeTransactions(
+ params
+ );
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ },
+ columnsRenderProps: {
+ amount: { type: 'money' },
+ createdTime: { type: 'date' },
+ transactionStatus: {
+ type: 'enum',
+ valueEnum: EnumEnterpriseCooperationWalletTransactionStatusText,
+ },
+ },
+ }
+);
+
+const { dialogProps, handleAdd, editForm } = useFormDialog({
+ defaultFormParams: {
+ id: '',
+ },
+});
+
+function openDialog(row: API.GetCooperationWalletRechargeTransactionsQueryResultItem) {
+ handleAdd({
+ id: row.id,
+ });
+}
+</script>
diff --git a/src/views/FinanceManage/EnterpriseBalanceManage.vue b/src/views/FinanceManage/EnterpriseBalanceManage.vue
index 1b860ed..9a057cd 100644
--- a/src/views/FinanceManage/EnterpriseBalanceManage.vue
+++ b/src/views/FinanceManage/EnterpriseBalanceManage.vue
@@ -1,128 +1,26 @@
<template>
- <LoadingLayout :loading="state.loading">
- <AppContainer>
- <ProTableV2
- v-bind="proTableProps"
- :columns="BalanceManageColumns"
- :operationBtns="operationBtns"
- >
- </ProTableV2>
- </AppContainer>
- <RechargeEnterpriseWalletDialog v-bind="dialogRechargeProps" />
- </LoadingLayout>
+ <AppContainer>
+ <ProTabs v-model="state.tabType" hasBorder>
+ <ProTabPane lazy label="浣欓绠$悊" name="enterpriseBalanceManageView">
+ <EnterpriseBalanceManageView />
+ </ProTabPane>
+ <ProTabPane lazy label="瀹㈡埛浣欓绠$悊" name="customerBalanceManageView">
+ <CustomerBalanceManageView />
+ </ProTabPane>
+ </ProTabs>
+ </AppContainer>
</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';
+import { AppContainer, ProTabs, ProTabPane } from '@bole-core/components';
+import EnterpriseBalanceManageView from './components/EnterpriseBalanceManageView.vue';
+import CustomerBalanceManageView from './components/CustomerBalanceManageView.vue';
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 state = reactive({
+ tabType: 'enterpriseBalanceManageView',
});
-
-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/EnterpriseBalanceManageDetail.vue b/src/views/FinanceManage/EnterpriseBalanceManageDetail.vue
index 26008ea..5678dc8 100644
--- a/src/views/FinanceManage/EnterpriseBalanceManageDetail.vue
+++ b/src/views/FinanceManage/EnterpriseBalanceManageDetail.vue
@@ -41,12 +41,23 @@
</QueryFilterItem>
</template>
<template #btn>
- <el-button type="primary" @click="handleExport()">瀵煎嚭</el-button>
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'receiptExportBtn')"
+ type="primary"
+ @click="exportPersonalUserTransactionEreceipts()"
+ >鍥炲崟瀵煎嚭</el-button
+ >
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'exportBtn')"
+ type="primary"
+ @click="handleExport()"
+ >瀵煎嚭</el-button
+ >
</template>
</ProTableQueryFilterBar>
<ProTableV2
v-bind="proTableProps"
- :columns="BalanceManageDetailColumns"
+ :columns="column"
:show-operation-column="false"
:auto-height="false"
:table-props="{
@@ -76,12 +87,11 @@
ProTableQueryFilterBar,
ProFormSelect,
} from '@bole-core/components';
-import { BalanceManageDetailColumns } from './constants';
import { EnumWalletTransactionStatusText, EnumEnterpriseWalletAccessText } from '@/constants';
import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
import * as userServices from '@/services/api/user';
import { Message } from '@bole-core/core';
-import { downloadFileByUrl, format, setOSSLink } from '@/utils';
+import { downloadFile, downloadFileByUrl, format, setOSSLink } from '@/utils';
import _ from 'lodash';
import { ModelValueType } from 'element-plus';
@@ -89,6 +99,11 @@
name: 'EnterpriseBalanceManageDetail',
});
+const operationBtnMap: Record<string, OperationBtnType> = {};
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+ operationBtnMap,
+});
+
const route = useRoute();
const id = (route.params.id as string) ?? '';
@@ -173,6 +188,32 @@
{ leading: true, trailing: false }
);
+const exportPersonalUserTransactionEreceipts = _.debounce(
+ async () => {
+ if (paginationState.total === 0) {
+ Message.warnMessage('娌℃湁鏁版嵁鍙互瀵煎嚭鍝');
+ return;
+ }
+ try {
+ let params: API.ExportPersonalUserTransactionEreceiptsCommand = {
+ enterpriseWalletId: id,
+ createdTimeStart: format(extraParamState.creationTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+ createdTimeEnd: format(extraParamState.creationTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+ };
+ let res = await userServices.exportPersonalUserTransactionEreceipts(params, {
+ responseType: 'blob',
+ getResponse: true,
+ });
+ if (res) {
+ // @ts-ignore
+ downloadFile(res?.data, `鐢靛瓙鍥炲崟`, 'zip');
+ }
+ } catch (error) {}
+ },
+ 1000,
+ { leading: true, trailing: false }
+);
+
onMounted(() => {
state.loading = false;
getList();
diff --git a/src/views/FinanceManage/OrderSettlementManage.vue b/src/views/FinanceManage/OrderSettlementManage.vue
new file mode 100644
index 0000000..552b635
--- /dev/null
+++ b/src/views/FinanceManage/OrderSettlementManage.vue
@@ -0,0 +1,154 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem tip-content="缁撶畻鐘舵��">
+ <FieldRadio
+ v-model="extraParamState.settlementStatus"
+ :value-enum="EnumTaskSettlementStatusText"
+ buttonStyle
+ showAllBtn
+ @change="getList()"
+ />
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.keywords"
+ style="width: 250px"
+ placeholder="璁㈠崟鍙�/鏈嶅姟鍚�/渚涘簲鍟�"
+ @on-click-search="getList()"
+ @keyup.enter="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+ </ProTableV2>
+ </AppContainer>
+ <OrderSettlementDetailDialog v-bind="dialogProps" />
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ ProTableV2,
+ SearchInput,
+ LoadingLayout,
+ AppContainer,
+ QueryFilterItem,
+ useTable,
+ FieldRadio,
+ useFormDialog,
+} from '@bole-core/components';
+import {
+ EnumTaskSettlementStatusText,
+ EnumTaskSettlementOrderStatus,
+ EnumTaskSettlementStatus,
+ EnumTaskCheckReceiveStatus,
+} from '@/constants';
+import * as taskServices from '@/services/api/task';
+import { ModelValueType } from 'element-plus';
+import OrderSettlementDetailDialog from './components/OrderSettlementDetailDialog.vue';
+
+defineOptions({
+ name: 'OrderSettlementManage',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ detailBtn: {
+ emits: {
+ onClick: (role: API.GetSettlementTasksQueryResultItem) => openDialog(role.id),
+ },
+ },
+};
+
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+ operationBtnMap,
+});
+
+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.GetSettlementTasksQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ orderInput: extraParamState.orderInput,
+ },
+ keywords: extraParamState.keywords,
+ settlementStatus: extraParamState.settlementStatus,
+ };
+
+ let res = await taskServices.getSettlementTasks(params, {
+ showLoading: !state.loading,
+ });
+ return res;
+ } catch (error) {
+ console.log('error: ', error);
+ }
+ },
+ {
+ defaultExtraParams: {
+ keywords: '',
+ settlementOrderStatus: '' as any as EnumTaskSettlementOrderStatus,
+ checkReceiveStatus: '' as any as EnumTaskCheckReceiveStatus,
+ settlementStatus: '' as any as EnumTaskSettlementStatus,
+ time: [] as unknown as ModelValueType,
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ },
+ queryKey: ['taskServices/getSettlementTasks'],
+ columnsRenderProps: {
+ settlementStatus: { type: 'enum', valueEnum: EnumTaskSettlementStatusText },
+ },
+ }
+);
+
+const { dialogProps, handleAdd, editForm } = useFormDialog({
+ onConfirm: handleAddOrEdit,
+ defaultFormParams: {
+ id: '',
+ },
+});
+
+function openDialog(id: string) {
+ handleAdd({
+ id: id,
+ });
+}
+
+async function handleAddOrEdit() {
+ try {
+ } catch (error) {}
+}
+
+function goDetail(id: string, settlement?: string) {
+ router.push({
+ name: 'ServiceChargeDetail',
+ params: {
+ id: id ?? '',
+ },
+ });
+}
+</script>
diff --git a/src/views/FinanceManage/components/CustomerBalanceManageView.vue b/src/views/FinanceManage/components/CustomerBalanceManageView.vue
new file mode 100644
index 0000000..e4c229f
--- /dev/null
+++ b/src/views/FinanceManage/components/CustomerBalanceManageView.vue
@@ -0,0 +1,96 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableV2
+ v-bind="proTableProps"
+ :columns="customerColumns"
+ :operationBtns="customerOperationBtns"
+ >
+ </ProTableV2>
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableV2,
+ LoadingLayout,
+ AppContainer,
+ useTable,
+ defineOperationBtns,
+} from '@bole-core/components';
+import * as enterpriseCooperationWalletServices from '@/services/api/enterpriseCooperationWallet';
+
+defineOptions({
+ name: 'CustomerBalanceManageView',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ 'customer-recordBtn': {
+ emits: {
+ onClick: (role: API.GetCooperationWalletsQueryResultItem) => goDetail(role),
+ },
+ },
+};
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
+ operationBtnMap,
+});
+
+const [customerColumns] = useGroupColumns(column, ['customer-']);
+const [customerOperationBtns] = useGroupOperationBtns(operationBtns, ['customer-']);
+
+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.GetCooperationWalletsQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ orderInput: extraParamState.orderInput,
+ },
+ };
+
+ let res = await enterpriseCooperationWalletServices.getCooperationWallets(params, {
+ showLoading: !state.loading,
+ });
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ },
+ columnsRenderProps: {
+ balance: { type: 'money' },
+ },
+ }
+);
+
+function goDetail(row: API.GetCooperationWalletsQueryResultItem) {
+ router.push({
+ name: 'CustomerRechargeRecord',
+ params: {
+ id: row?.id ?? '',
+ },
+ });
+}
+</script>
diff --git a/src/views/FinanceManage/components/CustomerRechargeDialog.vue b/src/views/FinanceManage/components/CustomerRechargeDialog.vue
new file mode 100644
index 0000000..d1d2839
--- /dev/null
+++ b/src/views/FinanceManage/components/CustomerRechargeDialog.vue
@@ -0,0 +1,170 @@
+<template>
+ <ProDialog :title="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="form.isDetail"
+ >
+ <ProFormItemV2
+ label="鍏呭�肩姸鎬�:"
+ prop="transactionStatus"
+ :check-rules="[{ message: '璇烽�夋嫨鍏呭�肩姸鎬�' }]"
+ >
+ <ProFormRadio v-model="form.transactionStatus" :value-enum="transactionStatusText" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="澶囨敞:" prop="remark">
+ <ProFormTextArea
+ v-model="form.remark"
+ placeholder="璇疯緭鍏ュ娉�"
+ :rows="4"
+ :maxlength="150"
+ show-word-limit
+ />
+ </ProFormItemV2>
+ </ProForm>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="emit('onCancel')">鍙� 娑�</el-button>
+ <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button>
+ </span>
+ </template>
+ </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import {
+ ProDialog,
+ ProForm,
+ ProFormItemV2,
+ ProFormRadio,
+ ProFormTextArea,
+} from '@bole-core/components';
+import { usePortraitTableWithAttachment } from '@/hooks';
+import { convertApi2FormUrl } from '@/utils';
+import { useQuery } from '@tanstack/vue-query';
+import * as enterpriseCooperationWalletServices from '@/services/api/enterpriseCooperationWallet';
+import { EnumEnterpriseCooperationWalletTransactionStatusTextForConfirm } from '@/constants';
+import _ from 'lodash';
+
+defineOptions({
+ name: 'CustomerRechargeDialog',
+});
+
+const visible = defineModel({ type: Boolean });
+
+type Form = {
+ title?: string;
+ id: string;
+ cooperationId: string;
+ transactionStatus: EnumEnterpriseCooperationWalletTransactionStatus;
+ remark: string;
+ isDetail: boolean;
+};
+
+const form = defineModel<Form>('form');
+
+const title = computed(() => (form.value.isDetail ? '鍏呭�艰褰�' : '纭鍏呭��'));
+
+const transactionStatusText = computed(() =>
+ form.value.isDetail
+ ? EnumEnterpriseCooperationWalletTransactionStatusText
+ : EnumEnterpriseCooperationWalletTransactionStatusTextForConfirm
+);
+
+const emit = defineEmits<{
+ (e: 'onConfirm'): void;
+ (e: 'onCancel'): void;
+}>();
+
+watch(
+ () => visible.value,
+ (val) => {
+ if (val) {
+ refetch();
+ }
+ }
+);
+
+const { data: detail, refetch } = useQuery({
+ queryKey: [
+ 'enterpriseCooperationWalletServices/getCooperationWalletRechargeTransaction',
+ form.value.id,
+ ],
+ queryFn: async () => {
+ return await enterpriseCooperationWalletServices.getCooperationWalletRechargeTransaction({
+ id: form.value.id,
+ });
+ },
+ placeholderData: () => ({} as API.GetCooperationWalletRechargeTransactionQueryResult),
+ onSuccess(data) {
+ form.value.cooperationId = data.cooperationId ?? '';
+ if (form.value.isDetail) {
+ form.value.transactionStatus = data.transactionStatus;
+ form.value.remark = data.remark ?? '';
+ }
+ },
+ enabled: computed(() => !!form.value.id),
+});
+
+const { portraitTableWithAttachmentProps } = usePortraitTableWithAttachment({
+ data: detail,
+ annexList: computed(() =>
+ detail.value?.files ? detail.value?.files.map((item) => convertApi2FormUrl(item)) : []
+ ),
+ columns: [
+ {
+ label: '鍏呭�煎崟浣�',
+ key: 'receiveUnit',
+ },
+ {
+ label: '寮�鎴疯处鍙�',
+ key: 'receiveAccount',
+ },
+ {
+ label: '鍏呭�奸噾棰�',
+ key: 'amount',
+ type: 'money',
+ },
+ {
+ label: '鍏呭�兼椂闂�',
+ key: 'createdTime',
+ type: 'date',
+ },
+ ],
+});
+const dialogForm = ref<FormInstance>();
+
+function onDialogClose() {
+ if (!dialogForm.value) return;
+ dialogForm.value.resetFields();
+}
+
+const handleConfirm = _.debounce(
+ () => {
+ if (form.value.isDetail) {
+ emit('onCancel');
+ } else {
+ if (!dialogForm.value) return;
+ dialogForm.value.validate((valid) => {
+ if (valid) {
+ emit('onConfirm');
+ } else {
+ return;
+ }
+ });
+ }
+ },
+ 1000,
+ {
+ leading: true,
+ trailing: false,
+ }
+);
+</script>
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/FinanceManage/components/DistributionDetailView.vue b/src/views/FinanceManage/components/DistributionDetailView.vue
index 8500679..b2ff74e 100644
--- a/src/views/FinanceManage/components/DistributionDetailView.vue
+++ b/src/views/FinanceManage/components/DistributionDetailView.vue
@@ -18,7 +18,11 @@
<script setup lang="ts">
import { ProTableV2, LoadingLayout, AppContainer, useTable } from '@bole-core/components';
import * as userServices from '@/services/api/user';
-import { EnumTaskSettlementStatusText, EnumTaskSettlementStatus } from '@/constants';
+import {
+ EnumTaskSettlementStatusText,
+ SettlementReceiveStatusText,
+ EnumTaskSettlementStatus,
+} from '@/constants';
defineOptions({
name: 'DistributionDetailView',
@@ -26,7 +30,7 @@
const operationBtnMap: Record<string, OperationBtnType> = {};
-const { column, operationBtns } = useAccess({
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
operationBtnMap,
});
diff --git a/src/views/FinanceManage/components/EnterpriseBalanceManageView.vue b/src/views/FinanceManage/components/EnterpriseBalanceManageView.vue
new file mode 100644
index 0000000..03c4596
--- /dev/null
+++ b/src/views/FinanceManage/components/EnterpriseBalanceManageView.vue
@@ -0,0 +1,127 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableV2
+ v-bind="proTableProps"
+ :columns="enterpriseColumns"
+ :operationBtns="enterpriseOperationBtns"
+ >
+ </ProTableV2>
+ </AppContainer>
+ <RechargeEnterpriseWalletDialog v-bind="dialogRechargeProps" />
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableV2,
+ LoadingLayout,
+ AppContainer,
+ useTable,
+ useFormDialog,
+} from '@bole-core/components';
+import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
+import RechargeEnterpriseWalletDialog from '@/views/ServiceChargeManage/components/RechargeEnterpriseWalletDialog.vue';
+import { EnumEnterpriseWalletAccess, EnumEnterpriseWalletAccessText } from '@/constants';
+
+defineOptions({
+ name: 'EnterpriseBalanceManageView',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ 'enterprise-rechargeBtn': {
+ emits: {
+ onClick: (role) => openDialog(role),
+ },
+ extraProps: {
+ hide: (role: API.GetEnterpriseWalletBalancesQueryResultItem) =>
+ role.access !== EnumEnterpriseWalletAccess.Alipay,
+ },
+ },
+ 'enterprise-detailBtn': {
+ emits: {
+ onClick: (role) => goDetail(role),
+ },
+ },
+};
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
+ operationBtnMap,
+});
+
+const [enterpriseColumns] = useGroupColumns(column, ['enterprise-']);
+const [enterpriseOperationBtns] = useGroupOperationBtns(operationBtns, ['enterprise-']);
+
+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' },
+ availableBalance: { type: 'money' },
+ freezeBalance: { 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/components/OrderSettlementDetailDialog.vue b/src/views/FinanceManage/components/OrderSettlementDetailDialog.vue
new file mode 100644
index 0000000..1ee399e
--- /dev/null
+++ b/src/views/FinanceManage/components/OrderSettlementDetailDialog.vue
@@ -0,0 +1,143 @@
+<template>
+ <ProDialog
+ :title="form.title"
+ v-model="visible"
+ @close="onDialogClose"
+ destroy-on-close
+ draggable
+ >
+ <PortraitTableWithAttachment v-bind="portraitTableWithAttachmentProps" />
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button>
+ </span>
+ </template>
+ </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import { ProDialog } from '@bole-core/components';
+import { usePortraitTableWithAttachment } from '@/hooks';
+import { convertApi2FormUrl } from '@/utils';
+import { useQuery } from '@tanstack/vue-query';
+import * as enterpriseCooperationWalletServices from '@/services/api/enterpriseCooperationWallet';
+
+defineOptions({
+ name: 'OrderSettlementDetailDialog',
+});
+
+const visible = defineModel({ type: Boolean });
+
+type Form = {
+ title?: string;
+ id: 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 } = useQuery({
+ queryKey: [
+ 'enterpriseCooperationWalletServices/getCooperationWalletRechargeTransaction',
+ form.value.id,
+ ],
+ queryFn: async () => {
+ return await enterpriseCooperationWalletServices.getCooperationWalletRechargeTransaction({
+ id: form.value.id,
+ });
+ },
+ placeholderData: () => ({} as API.GetCooperationWalletRechargeTransactionQueryResult),
+ enabled: computed(() => !!form.value.id),
+});
+
+const { portraitTableWithAttachmentProps } = usePortraitTableWithAttachment({
+ data: detail,
+ annexList: computed(() =>
+ detail.value?.files ? detail.value?.files.map((item) => convertApi2FormUrl(item)) : []
+ ),
+ columns: [
+ {
+ label: '浠樻浜鸿处鎴�',
+ key: 'receiveUnit',
+ },
+ {
+ label: '鏀舵浜鸿处鎴�',
+ key: 'receiveName',
+ },
+ {
+ label: '浠樻浜哄悕绉�',
+ key: 'receiveBank',
+ },
+ {
+ label: '鏀舵浜哄悕绉�',
+ key: 'receiveAccount',
+ },
+ {
+ label: '浠樻浜哄紑鎴疯',
+ key: 'receiveAccount',
+ },
+ {
+ label: '鏀舵浜哄紑鎴疯',
+ key: 'receiveAccount',
+ },
+ {
+ label: '甯佺',
+ key: 'receiveAccount',
+ },
+ {
+ label: '缁撶畻閲戦',
+ key: 'amount',
+ type: 'money',
+ },
+ {
+ label: '缁撶畻鏃堕棿',
+ key: 'createdTime',
+ type: 'date',
+ },
+ {
+ label: '缁撶畻鐘舵��',
+ key: 'transactionStatus',
+ type: 'enum',
+ },
+ ],
+});
+
+const dialogForm = ref<FormInstance>();
+
+function onDialogClose() {
+ if (!dialogForm.value) return;
+ dialogForm.value.resetFields();
+}
+
+function handleConfirm() {
+ if (!dialogForm.value) return;
+ dialogForm.value.validate((valid) => {
+ if (valid) {
+ emit('onConfirm');
+ } else {
+ return;
+ }
+ });
+}
+</script>
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+
+.portrait-table-with-attachment-title {
+ justify-content: space-between;
+}
+</style>
diff --git a/src/views/FinanceManage/components/RechargeRecordialog.vue b/src/views/FinanceManage/components/RechargeRecordialog.vue
new file mode 100644
index 0000000..215f7a2
--- /dev/null
+++ b/src/views/FinanceManage/components/RechargeRecordialog.vue
@@ -0,0 +1,102 @@
+<template>
+ <ProDialog title="鍏呭�艰鎯�" v-model="visible" @close="onDialogClose" destroy-on-close draggable>
+ <PortraitTableWithAttachment v-bind="portraitTableWithAttachmentProps" />
+ <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 } from '@bole-core/components';
+import { usePortraitTableWithAttachment } from '@/hooks';
+import { useQuery } from '@tanstack/vue-query';
+import { EnumEnterpriseCooperationWalletTransactionStatusText } from '@/constants';
+import * as enterpriseCooperationWalletServices from '@/services/api/enterpriseCooperationWallet';
+import { convertApi2FormUrl } from '@/utils';
+
+defineOptions({
+ name: 'RechargeRecordialog',
+});
+
+const visible = defineModel({ type: Boolean });
+
+type Form = {
+ title?: string;
+ id: 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 } = useQuery({
+ queryKey: [
+ 'enterpriseCooperationWalletServices/getCooperationWalletRechargeTransaction',
+ form.value.id,
+ ],
+ queryFn: async () => {
+ return await enterpriseCooperationWalletServices.getCooperationWalletRechargeTransaction({
+ id: form.value.id,
+ });
+ },
+ placeholderData: () => ({} as API.GetCooperationWalletRechargeTransactionQueryResult),
+ enabled: computed(() => !!form.value.id),
+});
+
+const { portraitTableWithAttachmentProps } = usePortraitTableWithAttachment({
+ data: detail,
+ annexList: computed(() =>
+ detail.value?.files ? detail.value?.files.map((item) => convertApi2FormUrl(item)) : []
+ ),
+ columns: [
+ {
+ label: '鍏呭�煎崟浣�',
+ key: 'receiveUnit',
+ },
+ {
+ label: '寮�鎴疯处鍙�',
+ key: 'receiveAccount',
+ },
+ {
+ label: '鍏呭�奸噾棰�',
+ key: 'amount',
+ type: 'money',
+ },
+ {
+ label: '鍏呭�兼椂闂�',
+ key: 'createdTime',
+ type: 'date',
+ },
+ {
+ label: '鍏呭�肩姸鎬�',
+ key: 'transactionStatus',
+ type: 'enum',
+ valueEnum: EnumEnterpriseCooperationWalletTransactionStatusText,
+ },
+ ],
+});
+
+const dialogForm = ref<FormInstance>();
+
+function onDialogClose() {
+ if (!dialogForm.value) return;
+ dialogForm.value.resetFields();
+}
+</script>
diff --git a/src/views/FinanceManage/constants/columns.ts b/src/views/FinanceManage/constants/columns.ts
index ab116f7..2dafec6 100644
--- a/src/views/FinanceManage/constants/columns.ts
+++ b/src/views/FinanceManage/constants/columns.ts
@@ -22,71 +22,3 @@
name: '璐圭敤锛堝厓锛�',
},
]);
-
-export const BalanceManageColumns = defineColumns([
- {
- id: '1',
- enCode: 'access',
- name: '璐︽埛绫诲瀷',
- },
- {
- id: '2',
- enCode: 'identity',
- name: '鎴峰彿',
- },
- {
- id: '3',
- enCode: 'balance',
- name: '璐︽埛浣欓',
- },
-]);
-
-export const BalanceManageDetailColumns = defineColumns([
- {
- id: '1',
- enCode: 'sendTime',
- name: '鍙戞斁鏃ユ湡',
- },
- {
- id: '2',
- enCode: 'code',
- name: '娴佹按鍙�',
- },
- {
- id: '3',
- enCode: 'transactionStatus',
- name: '鐘舵��',
- width: 120,
- },
- {
- id: '4',
- enCode: 'amount',
- name: '閲戦',
- width: 120,
- },
- {
- id: '5',
- enCode: 'receiveName',
- name: '鏀舵浜�',
- },
- {
- id: '6',
- enCode: 'receiveIdentity',
- name: '韬唤璇佸彿',
- },
- {
- id: '7',
- enCode: 'receiveAccount',
- name: '鏀舵浜鸿处鎴�',
- },
- {
- id: '8',
- enCode: 'transDate',
- name: '鎻愮幇鏃ユ湡',
- },
- {
- id: '9',
- enCode: 'ereceiptDownloadOssUrl',
- name: '鐢靛瓙鍥炲崟',
- },
-]);
diff --git a/src/views/FlexJobManage/FlexJobContractManage.vue b/src/views/FlexJobManage/FlexJobContractManage.vue
new file mode 100644
index 0000000..0aea8c5
--- /dev/null
+++ b/src/views/FlexJobManage/FlexJobContractManage.vue
@@ -0,0 +1,552 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem tip-content="鐏靛伐绛剧害鐘舵��">
+ <FieldSelect
+ v-model="extraParamState.userSignContractStatus"
+ :value-enum="EnumTaskUserSignContractStatusText"
+ placeholder="璇烽�夋嫨鐏靛伐绛剧害鐘舵��"
+ clearable
+ @change="getList()"
+ />
+ </QueryFilterItem>
+ <QueryFilterItem tip-content="浼佷笟绛剧害鐘舵��">
+ <FieldSelect
+ v-model="extraParamState.enterpriseSignContractStatus"
+ :value-enum="EnumTaskUserSignContractStatusText"
+ placeholder="璇烽�夋嫨浼佷笟绛剧害鐘舵��"
+ clearable
+ @change="getList()"
+ />
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <FieldDatePicker
+ v-model="extraParamState.userSignContractTime"
+ type="daterange"
+ range-separator="~"
+ start-placeholder="璧峰鏃ユ湡"
+ end-placeholder="鎴鏃ユ湡"
+ clearable
+ @change="getList()"
+ tooltipContent="鐏靛伐绛剧害鏃堕棿"
+ ></FieldDatePicker>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <FieldDatePicker
+ v-model="extraParamState.signContractTime"
+ type="daterange"
+ range-separator="~"
+ start-placeholder="璧峰鏃ユ湡"
+ end-placeholder="鎴鏃ユ湡"
+ clearable
+ @change="getList()"
+ tooltipContent="浼佷笟绛剧害鏃堕棿"
+ ></FieldDatePicker>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.searchWord"
+ style="width: 300px"
+ placeholder="濮撳悕/鎵嬫満/韬唤璇佸彿"
+ @on-click-search="getList"
+ @keyup.enter="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ <template #btn>
+ <!-- <el-button @click="handleDownloadTemplate()" type="primary" link>妯℃澘涓嬭浇</el-button> -->
+ <!-- <el-button @click="handleBatchImportAdd()" type="primary">鎵归噺瀵煎叆</el-button> -->
+ <!-- <el-button @click="handleStaffInfoAdd()" type="primary">鏂板缓</el-button> -->
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'batchUnSignBtn')"
+ @click="handleBatchUnSign()"
+ type="primary"
+ >鎵归噺瑙g害</el-button
+ >
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'sendShotMessageBtn')"
+ @click="handleSendShotMessage()"
+ type="primary"
+ >鐭俊鍙戦��</el-button
+ >
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'batchSignBtn')"
+ @click="handleBatchSign()"
+ type="primary"
+ >鎵归噺绛剧害</el-button
+ >
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'batchEnterpriseSignBtn')"
+ @click="handleEnterpriseBatchSign()"
+ type="primary"
+ >鎵归噺浼佷笟绛剧害</el-button
+ >
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2
+ v-bind="proTableProps"
+ :columns="column"
+ :operationBtns="operationBtns"
+ show-column-check
+ ref="proTable"
+ :table-props="{
+ rowKey: 'id',
+ }"
+ >
+ </ProTableV2>
+ </AppContainer>
+ <!-- <StaffInfoDialog v-bind="dialogStaffInfoProps" /> -->
+ <StaffDetailInfoDialog v-bind="dialogStaffDetailProps" />
+ <BatchImportDialog
+ v-bind="dialogBatchImportProps"
+ @onDownloadTemplate="handleDownloadTemplate"
+ />
+ <SendShotMessageDialog v-bind="dialogShotMessageProps" />
+ <SignDialog v-bind="dialogSignProps" />
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ OperationBtnType,
+ ProTableV2,
+ SearchInput,
+ LoadingLayout,
+ AppContainer,
+ QueryFilterItem,
+ useTable,
+ FieldDatePicker,
+ FieldSelect,
+ useFormDialog,
+ UploadUserFile,
+ XLSXUtils,
+} from '@bole-core/components';
+import { EnumTaskUserHireStatusText, EnumTaskUserSignContractStatusText } from '@/constants';
+import { Message } from '@bole-core/core';
+import { convertApi2FormUrlOnlyOne, downloadFileByUrl, format } from '@/utils';
+// import StaffInfoDialog from './components/StaffInfoDialog.vue';
+import BatchImportDialog from './components/BatchImportDialog.vue';
+import SendShotMessageDialog from './components/SendShotMessageDialog.vue';
+import StaffDetailInfoDialog from './components/StaffDetailInfoDialog.vue';
+import SignDialog from './components/SignDialog.vue';
+import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee';
+import { ModelValueType } from 'element-plus';
+import _ from 'lodash';
+import { getEnterpriseEmployeesHooks } from './hooks';
+
+defineOptions({
+ name: 'FlexJobContractManage',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ // editBtn: {
+ // emits: {
+ // onClick: (role) => openDialog(role),
+ // },
+ // },
+ detailBtn: {
+ emits: {
+ onClick: (role: API.GetEnterpriseEmployeesQueryResultItem) =>
+ handleStaffDetailEdit({ id: role.id, tabType: 'info' }),
+ },
+ },
+ enterpriseSignBtn: {
+ emits: {
+ onClick: (role) => handleEnterpriseSign(role),
+ },
+ extraProps: {
+ hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
+ !(
+ row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass &&
+ row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait
+ ),
+ },
+ },
+ inviteSignBtn: {
+ emits: {
+ onClick: (role) => handleInviteSign(role),
+ },
+ extraProps: {
+ hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
+ !(
+ row.source === EnumEnterpriseEmployeeSource.Internal &&
+ row.userSignContractStatus !== EnumTaskUserSignContractStatus.Pass
+ ),
+ },
+ },
+ unSignBtn: {
+ emits: {
+ onClick: (role) => handleUnSign(role),
+ },
+ extraProps: {
+ hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
+ !(
+ row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass &&
+ row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Pass
+ ),
+ },
+ },
+ delBtn: {
+ props: { type: 'danger' },
+ emits: {
+ onClick: (role) => handleDelete(role),
+ },
+ },
+};
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
+ operationBtnMap,
+});
+
+const router = useRouter();
+
+const BaseState = {
+ loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+onMounted(async () => {
+ await getList();
+ state.loading = false;
+});
+
+const { getList, proTableProps, paginationState, extraParamState, reset } =
+ getEnterpriseEmployeesHooks();
+
+const proTable = ref<InstanceType<typeof ProTableV2>>();
+
+function getSelectionRows() {
+ if (proTableProps.value.tableData.length) {
+ const res = proTable.value.innerTableRef.getSelectionRows();
+ if (res.length > 0) {
+ return res;
+ } else {
+ Message.errorMessage('鏈�夋嫨鏁版嵁');
+ }
+ } else {
+ Message.errorMessage('鏆傛棤鏁版嵁');
+ }
+}
+
+const {
+ dialogProps: dialogStaffInfoProps,
+ handleEdit: handleStaffInfoEdit,
+ handleAdd: handleStaffInfoAdd,
+ editForm: staffInfoEditForm,
+} = useFormDialog({
+ onConfirm: handleAddOrEdit,
+ defaultFormParams: {
+ id: '',
+ name: '',
+ identity: '',
+ contactPhoneNumber: '',
+ gender: EnumUserGender.Male,
+ age: null as any as number,
+ identityImg: [] as UploadUserFile[],
+ identityBackImg: [] as UploadUserFile[],
+ contractUrl: [] as UploadUserFile[],
+ regiterTime: '',
+ userRealTime: '',
+ userSignContractTime: '',
+ isDetail: false,
+ },
+});
+
+async function openDialog(row: API.GetEnterpriseEmployeesQueryResultItem, isDetail = false) {
+ try {
+ let detail = await enterpriseEmployeeServices.getEnterpriseEmployee({ id: row.id });
+ handleStaffInfoEdit({
+ id: row.id,
+ name: row.name,
+ identity: row.identity,
+ contactPhoneNumber: row.contactPhoneNumber,
+ gender: detail.gender,
+ age: detail.age ?? null,
+ identityImg: convertApi2FormUrlOnlyOne(detail.identityImg),
+ identityBackImg: convertApi2FormUrlOnlyOne(detail.identityBackImg),
+ contractUrl: convertApi2FormUrlOnlyOne(detail.contractUrl, {
+ fileName: detail.contractUrl ? detail.contractUrl.split('/').pop() : '鍚堝悓',
+ }),
+ regiterTime: detail.applyTime ?? '',
+ userRealTime: row.userRealTime ?? '',
+ userSignContractTime: row.userSignContractTime ?? '',
+ isDetail: isDetail,
+ });
+ } catch (error) {}
+}
+
+async function handleAddOrEdit() {
+ try {
+ let params: API.EditEnterpriseEmployeeCommand = {
+ name: staffInfoEditForm.name,
+ identity: staffInfoEditForm.identity,
+ contactPhoneNumber: staffInfoEditForm.contactPhoneNumber,
+ gender: staffInfoEditForm.gender,
+ age: staffInfoEditForm.age,
+ identityImg: staffInfoEditForm.identityImg[0]?.path ?? '',
+ identityBackImg: staffInfoEditForm.identityBackImg[0]?.path ?? '',
+ id: staffInfoEditForm.id,
+ };
+ let res = await enterpriseEmployeeServices.editEnterpriseEmployee(params);
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ getList(paginationState.pageIndex);
+ }
+ } catch (error) {}
+}
+
+const {
+ dialogProps: dialogBatchImportProps,
+ handleAdd: handleBatchImportAdd,
+ editForm: batchImportForm,
+} = useFormDialog({
+ onConfirm: handleBatchImport,
+ defaultFormParams: {
+ url: [] as UploadUserFile[],
+ },
+});
+
+async function handleBatchImport() {
+ try {
+ let params: API.ImportEnterpriseEmployeesCommand = {
+ excelUrl: batchImportForm.url[0]?.path ?? '',
+ };
+ let res = await enterpriseEmployeeServices.importEnterpriseEmployees(params);
+ if (res.failCount > 0) {
+ await Message.tipMessage('瀛樺湪閿欒鏁版嵁锛屾槸鍚﹀鍑猴紵');
+ XLSXUtils.exportToXLSX({
+ workbookDataList: res.errors,
+ fileName: '鐏靛伐鎵归噺瀵煎叆-閿欒鏁版嵁',
+ workbookHeaderMap: {
+ name: '濮撳悕',
+ identity: '韬唤璇佸彿',
+ contactPhoneNumber: '鎵嬫満鍙�',
+ errorMessage: '澶囨敞',
+ },
+ });
+ } else {
+ Message.successMessage('瀵煎叆鎴愬姛');
+ getList();
+ }
+ } catch (error) {}
+}
+
+const {
+ dialogProps: dialogShotMessageProps,
+ handleAdd: handleShotMessageAdd,
+ editForm: editShotMessageForm,
+} = useFormDialog({
+ onConfirm: sendMessageForSign,
+ defaultFormParams: {
+ ids: [] as string[],
+ customerId: '',
+ name: '',
+ contractTemplateId: '',
+ },
+});
+
+async function handleSendShotMessage() {
+ try {
+ const selectionRows = getSelectionRows();
+ if (selectionRows) {
+ if (selectionRows.some((x) => x.source === EnumEnterpriseEmployeeSource.External)) {
+ Message.warnMessage('鍕鹃�変汉鍛樹腑鍖呭惈澶栭儴浜哄憳');
+ return;
+ } else if (
+ selectionRows.some((x) => x.userSignContractStatus === EnumTaskUserSignContractStatus.Pass)
+ ) {
+ await Message.tipMessage('鍕鹃�変汉鍛樹腑鍖呭惈宸茬绾﹀畬鎴愪汉鍛橈紝纭瑕佺户缁彂閫佺煭淇¢�氱煡鍚楋紵');
+ }
+ handleShotMessageAdd({
+ ids: selectionRows.map((x) => x.id),
+ name: '浜哄憳绛剧害閫氶亾鐭俊',
+ });
+ }
+ } catch (error) {}
+}
+
+async function sendMessageForSign() {
+ try {
+ let params: API.SendInviteElectronSignSmsCommand = {
+ ids: editShotMessageForm.ids,
+ contractTemplateId: editShotMessageForm.contractTemplateId,
+ };
+ let res = await enterpriseEmployeeServices.sendInviteElectronSignSms(params);
+ if (res) {
+ Message.successMessage('鐭俊宸插彂閫�');
+ }
+ } catch (error) {}
+}
+
+function handleDownloadTemplate() {
+ downloadFileByUrl(ImportEnterpriseEmployeesTempPath, '鎵归噺瀵煎叆妯℃澘');
+}
+
+const {
+ dialogProps: dialogSignProps,
+ handleAdd: handleSignAdd,
+ handleEdit: handleSignEdit,
+ editForm: signEditForm,
+} = useFormDialog({
+ onConfirm: signContract,
+ defaultFormParams: {
+ ids: [] as string[],
+ contractTemplateId: '',
+ },
+});
+
+function handleInviteSign(row: API.GetEnterpriseEmployeesQueryResultItem) {
+ if (row) {
+ handleSignEdit({
+ ids: [row.id],
+ contractTemplateId: '',
+ });
+ }
+}
+function handleBatchSign() {
+ const selectionRows = getSelectionRows();
+ if (selectionRows) {
+ const hasSigned = selectionRows?.some(
+ (x) =>
+ x.userSignContractStatus === EnumTaskUserSignContractStatus.Pass ||
+ x.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Pass ||
+ x.source === EnumEnterpriseEmployeeSource.External
+ );
+ if (hasSigned) {
+ Message.warnMessage('鍕鹃�変汉鍛樹腑鍖呭惈宸茬绾﹀畬鎴愭垨澶栭儴浜哄憳');
+ return;
+ }
+ handleSignAdd({
+ ids: selectionRows.map((x) => x.id),
+ contractTemplateId: '',
+ });
+ }
+}
+
+const handleEnterpriseBatchSign = _.debounce(
+ () => {
+ const selectionRows = getSelectionRows();
+ if (selectionRows) {
+ const hasSigned = selectionRows?.some(
+ (x) =>
+ !(
+ x.userSignContractStatus === EnumTaskUserSignContractStatus.Pass &&
+ x.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait
+ )
+ );
+ if (hasSigned) {
+ Message.warnMessage('鍕鹃�変汉鍛樹腑鍖呭惈宸蹭紒涓氱绾︺�佹湭褰曠敤浜哄憳鎴栨湭绛剧害瀹屾垚浜哄憳');
+ return;
+ }
+ const ids = selectionRows.map((x) => x.id);
+ handleBatchEnterpriseSign(ids);
+ }
+ },
+ 1000,
+ { leading: true, trailing: false }
+);
+
+async function handleBatchEnterpriseSign(ids: string[]) {
+ try {
+ state.loading = true;
+ let res = await enterpriseEmployeeServices.batchEnterpriseSignContract({ ids: ids });
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ getList(paginationState.pageIndex);
+ if (res?.errors?.length > 0) {
+ Message.tipMessage('瀛樺湪绛剧害澶辫触鐨勭伒宸ヤ俊鎭暟鎹紝鏄惁瀵煎嚭锛�').then(() => {
+ XLSXUtils.exportToXLSX({
+ workbookDataList: res.errors,
+ fileName: '绛剧害澶辫触鐏靛伐淇℃伅',
+ workbookHeaderMap: {
+ name: '濮撳悕',
+ contactPhoneNumber: '鎵嬫満鍙�',
+ identity: '韬唤璇佸彿',
+ errorMessages: '閿欒淇℃伅',
+ },
+ });
+ });
+ }
+ }
+ } catch (error) {
+ } finally {
+ state.loading = false;
+ }
+}
+
+async function signContract() {
+ try {
+ let params: API.InviteElectronSignCommand = {
+ ids: signEditForm.ids,
+ contractTemplateId: signEditForm.contractTemplateId,
+ };
+ let res = await enterpriseEmployeeServices.inviteElectronSign(params);
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ getList(paginationState.pageIndex);
+ }
+ } catch (error) {}
+}
+
+async function handleEnterpriseSign(row: API.GetEnterpriseEmployeesQueryResultItem) {
+ try {
+ let res = await enterpriseEmployeeServices.enterpriseUserElectronSign({ id: row.id });
+ if (res) {
+ window.open(res?.signContractLongUrl, '_blank');
+ }
+ } catch (error) {}
+}
+
+function handleUnSign(row: API.GetEnterpriseEmployeesQueryResultItem) {
+ stopElectronSign([row.id]);
+}
+
+function handleBatchUnSign() {
+ try {
+ const selectionRows = getSelectionRows();
+ if (selectionRows) {
+ const hasUnSigned = selectionRows?.some(
+ (x) => x.enterpriseSignContractStatus !== EnumTaskUserSignContractStatus.Pass
+ );
+ if (hasUnSigned) {
+ Message.warnMessage('鍕鹃�夋暟鎹腑鍖呭惈浼佷笟鏈绾︽垨宸茶В绾︽暟鎹�');
+ return;
+ }
+ stopElectronSign(selectionRows.map((x) => x.id));
+ }
+ } catch (error) {}
+}
+
+async function stopElectronSign(ids: string[]) {
+ try {
+ await Message.tipMessage('纭畾瑙g害鐢ㄦ埛锛�');
+ let res = await enterpriseEmployeeServices.stopElectronSign({ ids: ids });
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ getList(paginationState.pageIndex);
+ }
+ } catch (error) {}
+}
+
+const {
+ dialogProps: dialogStaffDetailProps,
+ handleEdit: handleStaffDetailEdit,
+ editForm: staffDetailEditForm,
+} = useFormDialog({
+ defaultFormParams: {
+ id: '',
+ tabType: 'info',
+ },
+});
+
+async function handleDelete(row: API.GetEnterpriseEmployeesQueryResultItem) {
+ try {
+ await Message.deleteMessage();
+ } catch (error) {}
+}
+</script>
diff --git a/src/views/FlexJobManage/FlexJobManage.vue b/src/views/FlexJobManage/FlexJobManage.vue
index b4522c1..98bdc03 100644
--- a/src/views/FlexJobManage/FlexJobManage.vue
+++ b/src/views/FlexJobManage/FlexJobManage.vue
@@ -3,7 +3,7 @@
<AppContainer>
<ProTableQueryFilterBar @on-reset="reset">
<template #query>
- <QueryFilterItem tip-content="褰曠敤鐘舵��">
+ <!-- <QueryFilterItem tip-content="褰曠敤鐘舵��">
<FieldRadio
v-model="extraParamState.hireStatus"
:value-enum="EnumTaskUserHireStatusText"
@@ -11,7 +11,7 @@
showAllBtn
@change="getList()"
/>
- </QueryFilterItem>
+ </QueryFilterItem> -->
<QueryFilterItem tip-content="瀹炲悕鐘舵��">
<FieldRadio
v-model="extraParamState.isReal"
@@ -25,6 +25,15 @@
@change="getList()"
/>
</QueryFilterItem>
+ <QueryFilterItem tip-content="鐏靛伐鏉ユ簮">
+ <FieldRadio
+ v-model="extraParamState.source"
+ :value-enum="EnumEnterpriseEmployeeSourceText"
+ buttonStyle
+ showAllBtn
+ @change="getList()"
+ />
+ </QueryFilterItem>
<QueryFilterItem tip-content="鐏靛伐绛剧害鐘舵��">
<FieldSelect
v-model="extraParamState.userSignContractStatus"
@@ -43,7 +52,7 @@
@change="getList()"
/>
</QueryFilterItem>
- <QueryFilterItem>
+ <!-- <QueryFilterItem>
<FieldDatePicker
v-model="extraParamState.createdTime"
type="daterange"
@@ -66,12 +75,24 @@
@change="getList()"
tooltipContent="绛剧害鏃堕棿"
></FieldDatePicker>
+ </QueryFilterItem> -->
+ <QueryFilterItem>
+ <FieldDatePicker
+ v-model="extraParamState.userRealTime"
+ type="daterange"
+ range-separator="~"
+ start-placeholder="璧峰鏃ユ湡"
+ end-placeholder="鎴鏃ユ湡"
+ clearable
+ @change="getList()"
+ tooltipContent="瀹炲悕鏃堕棿"
+ ></FieldDatePicker>
</QueryFilterItem>
<QueryFilterItem>
<SearchInput
v-model="extraParamState.searchWord"
style="width: 300px"
- placeholder="濮撳悕/鎵嬫満/韬唤璇佸彿/瀹㈡埛"
+ placeholder="濮撳悕/鎵嬫満/韬唤璇佸彿"
@on-click-search="getList"
@keyup.enter="getList()"
>
@@ -79,17 +100,62 @@
</QueryFilterItem>
</template>
<template #btn>
- <el-button @click="handleDownloadTemplate()" type="primary" link>妯℃澘涓嬭浇</el-button>
- <el-button @click="handleBatchImportAdd()" type="primary">鎵归噺瀵煎叆</el-button>
- <el-button @click="handleBatchUnSign()" type="primary">鎵归噺瑙g害</el-button>
- <el-button @click="handleSendShotMessage()" type="primary">鐭俊鍙戦��</el-button>
- <el-button @click="handleBatchSign()" type="primary">鎵归噺绛剧害</el-button>
- <el-button @click="handleEnterpriseBatchSign()" type="primary">鎵归噺浼佷笟绛剧害</el-button>
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'importBtn')"
+ @click="handleDownloadFlexJobTemplate()"
+ type="primary"
+ link
+ >妯℃澘涓嬭浇</el-button
+ >
+ <BlFileUpload
+ v-if="checkSubModuleItemShow('pageButton', 'importBtn')"
+ v-model:file-url="state.flexjobUrl"
+ ref="uploadRef"
+ :showTip="false"
+ :show-file-list="false"
+ class="pro-table-operation-btn upload-style-btn"
+ :on-success="(event) => handleUploadSuccess(event)"
+ :limitFileSize="null"
+ :limit="1"
+ accept="xlsx,xls"
+ >
+ <el-button type="primary" class="pro-table-operation-btn">鎵归噺瀵煎叆</el-button>
+ </BlFileUpload>
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
+ @click="handleInternalStaffAdd()"
+ type="primary"
+ >鏂板缓</el-button
+ >
+ <!-- <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'batchUnSignBtn')"
+ @click="handleBatchUnSign()"
+ type="primary"
+ >鎵归噺瑙g害</el-button
+ >
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'sendShotBtn')"
+ @click="handleSendShotMessage()"
+ type="primary"
+ >鐭俊鍙戦��</el-button
+ >
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'batchSignBtn')"
+ @click="handleBatchSign()"
+ type="primary"
+ >鎵归噺绛剧害</el-button
+ >
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'enterpriseBatchSignBtn')"
+ @click="handleEnterpriseBatchSign()"
+ type="primary"
+ >鎵归噺浼佷笟绛剧害</el-button
+ > -->
</template>
</ProTableQueryFilterBar>
<ProTableV2
v-bind="proTableProps"
- :columns="FlexJobManageColumns"
+ :columns="column"
:operationBtns="operationBtns"
show-column-check
ref="proTable"
@@ -107,6 +173,7 @@
/>
<SendShotMessageDialog v-bind="dialogShotMessageProps" />
<SignDialog v-bind="dialogSignProps" />
+ <AddInternalStaffDialog v-bind="dialogAddInternalStaffProps" />
</LoadingLayout>
</template>
@@ -123,112 +190,101 @@
FieldDatePicker,
FieldRadio,
FieldSelect,
- defineOperationBtns,
useFormDialog,
UploadUserFile,
XLSXUtils,
+ BlFileUpload,
} from '@bole-core/components';
-import { FlexJobManageColumns } from './constants';
-import { EnumTaskUserHireStatusText, EnumTaskUserSignContractStatusText } from '@/constants';
+import {
+ EnumTaskUserHireStatusText,
+ EnumTaskUserSignContractStatusText,
+ EnumEnterpriseEmployeeSourceText,
+} from '@/constants';
import { Message } from '@bole-core/core';
-import { convertApi2FormUrlOnlyOne, downloadFileByUrl, format } from '@/utils';
+import {
+ convertApi2FormUrlOnlyOne,
+ downloadFileByUrl,
+ format,
+ hiddenIDNumberForEnd4,
+} from '@/utils';
import StaffInfoDialog from './components/StaffInfoDialog.vue';
import BatchImportDialog from './components/BatchImportDialog.vue';
import SendShotMessageDialog from './components/SendShotMessageDialog.vue';
import StaffDetailInfoDialog from './components/StaffDetailInfoDialog.vue';
+import AddInternalStaffDialog from './components/AddInternalStaffDialog.vue';
import SignDialog from './components/SignDialog.vue';
import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee';
import { ModelValueType } from 'element-plus';
import _ from 'lodash';
+import { getEnterpriseEmployeesHooks } from './hooks';
defineOptions({
name: 'FlexJobManageList',
});
-const operationBtns = defineOperationBtns([
- {
- data: {
- enCode: 'editBtn',
- name: '缂栬緫',
- },
+const operationBtnMap: Record<string, OperationBtnType> = {
+ editBtn: {
emits: {
- onClick: (role) => openDialog(role),
+ onClick: (role) => openInternalDialog(role),
+ },
+ extraProps: {
+ hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
+ row.source === EnumEnterpriseEmployeeSource.External,
},
},
- {
- data: {
- enCode: 'detailBtn',
- name: '璇︽儏',
- },
+ detailBtn: {
emits: {
onClick: (role: API.GetEnterpriseEmployeesQueryResultItem) =>
handleStaffDetailEdit({ id: role.id, tabType: 'info' }),
},
},
- {
- data: {
- enCode: 'enterpriseSignBtn',
- name: '浼佷笟绛剧害',
- },
- emits: {
- onClick: (role) => handleEnterpriseSign(role),
- },
- extraProps: {
- hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
- !(
- row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass &&
- row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait
- ),
- },
- },
- {
- data: {
- enCode: 'inviteSignBtn',
- name: '閭�璇风绾�',
- },
- emits: {
- onClick: (role) => handleInviteSign(role),
- },
- extraProps: {
- hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
- !(
- row.userSignContractStatus !== EnumTaskUserSignContractStatus.Pass &&
- row.hireStatus === EnumTaskUserHireStatus.Pass
- ),
- },
- },
- {
- data: {
- enCode: 'unSignBtn',
- name: '瑙g害',
- },
- emits: {
- onClick: (role) => handleUnSign(role),
- },
- extraProps: {
- hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
- !(
- row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass &&
- row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Pass
- ),
- },
- },
- // {
- // data: {
- // enCode: 'delBtn',
- // name: '鍒犻櫎',
- // },
- // props: { type: 'danger' },
+ // enterpriseSignBtn: {
// emits: {
- // onClick: (role) => handleDelete(role),
+ // onClick: (role) => handleEnterpriseSign(role),
+ // },
+ // extraProps: {
+ // hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
+ // !(
+ // row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass &&
+ // row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait
+ // ),
// },
// },
-]);
+ // inviteSignBtn: {
+ // emits: {
+ // onClick: (role) => handleInviteSign(role),
+ // },
+ // extraProps: {
+ // hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
+ // !(
+ // row.userSignContractStatus !== EnumTaskUserSignContractStatus.Pass &&
+ // row.hireStatus === EnumTaskUserHireStatus.Pass
+ // ),
+ // },
+ // },
+ // unSignBtn: {
+ // emits: {
+ // onClick: (role) => handleUnSign(role),
+ // },
+ // extraProps: {
+ // hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
+ // !(
+ // row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass &&
+ // row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Pass
+ // ),
+ // },
+ // },
+};
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
+ operationBtnMap,
+});
const router = useRouter();
const BaseState = {
loading: true,
+ flexjobUrl: [] as UploadUserFile[],
};
const state = reactive({ ...BaseState });
@@ -238,75 +294,8 @@
state.loading = false;
});
-const {
- getDataSource: getList,
- proTableProps,
- paginationState,
- extraParamState,
- reset,
-} = useTable(
- async ({ pageIndex, pageSize }, extraParamState) => {
- try {
- let params: API.GetEnterpriseEmployeesQuery = {
- pageModel: {
- rows: pageSize,
- page: pageIndex,
- orderInput: extraParamState.orderInput,
- },
- keywords: extraParamState.searchWord,
- createdTimeStart: format(extraParamState.createdTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
- createdTimeEnd: format(extraParamState.createdTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
- signContractTimeStart: format(
- extraParamState.signContractTime?.[0] ?? '',
- 'YYYY-MM-DD 00:00:00'
- ),
- signContractTimeEnd: format(
- extraParamState.signContractTime?.[1] ?? '',
- 'YYYY-MM-DD 23:59:59'
- ),
- hireStatus: extraParamState.hireStatus,
- isReal: extraParamState.isReal,
- userSignContractStatus: extraParamState.userSignContractStatus,
- enterpriseSignContractStatus: extraParamState.enterpriseSignContractStatus,
- };
-
- let res = await enterpriseEmployeeServices.getEnterpriseEmployees(params, {
- showLoading: !state.loading,
- });
- return res;
- } catch (error) {
- console.log('error: ', error);
- }
- },
- {
- defaultExtraParams: {
- searchWord: '',
- orderInput: [{ property: 'createdTime', order: EnumPagedListOrder.Desc }],
- createdTime: [] as unknown as ModelValueType,
- signContractTime: [] as unknown as ModelValueType,
- hireStatus: '' as any as EnumTaskUserHireStatus,
- isReal: null as any as boolean,
- userSignContractStatus: '' as any as EnumTaskUserSignContractStatus,
- enterpriseSignContractStatus: '' as any as EnumTaskUserSignContractStatus,
- },
- queryKey: ['enterpriseEmployeeServices/getEnterpriseEmployees'],
- columnsRenderProps: {
- gender: { type: 'enum', valueEnum: EnumUserGenderTextForPerson },
- hireStatus: { type: 'enum', valueEnum: EnumTaskUserHireStatusText },
- userIsReal: {
- formatter: (row: API.GetEnterpriseEmployeesQueryResultItem) => {
- return row.userIsReal ? '宸插疄鍚�' : '鏈疄鍚�';
- },
- },
- userSignContractStatus: { type: 'enum', valueEnum: EnumTaskUserSignContractStatusText },
- hireTime: { type: 'date' },
- userRealTime: { type: 'date' },
- userSignContractTime: { type: 'date' },
- enterpriseSignContractStatus: { type: 'enum', valueEnum: EnumTaskUserSignContractStatusText },
- enterpriseSignContractTime: { type: 'date' },
- },
- }
-);
+const { getList, proTableProps, paginationState, extraParamState, reset } =
+ getEnterpriseEmployeesHooks();
const proTable = ref<InstanceType<typeof ProTableV2>>();
@@ -326,9 +315,10 @@
const {
dialogProps: dialogStaffInfoProps,
handleEdit: handleStaffInfoEdit,
+ handleAdd: handleStaffInfoAdd,
editForm: staffInfoEditForm,
} = useFormDialog({
- onConfirm: handleAddOrEdit,
+ onConfirm: editEnterpriseEmployee,
defaultFormParams: {
id: '',
name: '',
@@ -369,7 +359,7 @@
} catch (error) {}
}
-async function handleAddOrEdit() {
+async function editEnterpriseEmployee() {
try {
let params: API.EditEnterpriseEmployeeCommand = {
name: staffInfoEditForm.name,
@@ -473,6 +463,10 @@
downloadFileByUrl(ImportEnterpriseEmployeesTempPath, '鎵归噺瀵煎叆妯℃澘');
}
+function handleDownloadFlexJobTemplate() {
+ downloadFileByUrl(ImportFlexJobTempPath, '鎵归噺瀵煎叆妯℃澘');
+}
+
const {
dialogProps: dialogSignProps,
handleAdd: handleSignAdd,
@@ -635,4 +629,121 @@
await Message.deleteMessage();
} catch (error) {}
}
+
+function handleUploadSuccess(response: UploadUserFile & { file: File & { uid: number } }) {
+ if (response.path) {
+ importEnterpriseEmployees(response.path);
+ }
+}
+
+async function importEnterpriseEmployees(excelUrl: string) {
+ try {
+ let params: API.ImportEnterpriseEmployeesCommand = {
+ excelUrl: excelUrl,
+ };
+ let res = await enterpriseEmployeeServices.importEnterpriseEmployees(params);
+ if (res.failCount > 0) {
+ await Message.tipMessage('瀛樺湪閿欒鏁版嵁锛屾槸鍚﹀鍑猴紵');
+ XLSXUtils.exportToXLSX({
+ workbookDataList: res.errors,
+ fileName: '鐏靛伐鎵归噺瀵煎叆-閿欒鏁版嵁',
+ workbookHeaderMap: {
+ name: '濮撳悕',
+ contactPhoneNumber: '鎵嬫満鍙�',
+ identity: '韬唤璇佸彿',
+ contractBegin: '鍗忚璧峰鏃堕棿',
+ contractEnd: '鍗忚缁堟鏃堕棿',
+ errorMessage: '閿欒淇℃伅',
+ },
+ });
+ } else {
+ Message.successMessage('瀵煎叆鎴愬姛');
+ getList();
+ }
+ } catch (error) {
+ } finally {
+ state.flexjobUrl = [] as UploadUserFile[];
+ }
+}
+
+const {
+ dialogProps: dialogAddInternalStaffProps,
+ handleAdd: handleInternalStaffAdd,
+ handleEdit: handleInternalStaffEdit,
+ editForm: internalStaffEditForm,
+ dialogState: internalDialogState,
+} = useFormDialog({
+ onConfirm: addEnterpriseEmployee,
+ defaultFormParams: {
+ id: '',
+ name: '',
+ identity: '',
+ contactPhoneNumber: '',
+ gender: EnumUserGender.Male,
+ age: null as any as number,
+ identityImg: [] as UploadUserFile[],
+ identityBackImg: [] as UploadUserFile[],
+ contractUrl: [] as UploadUserFile[],
+ regiterTime: '',
+ userRealTime: '',
+ userSignContractTime: '',
+ contractTime: [] as unknown as ModelValueType,
+ },
+ closeAfterConfirm: false,
+});
+
+async function openInternalDialog(row: API.GetEnterpriseEmployeesQueryResultItem) {
+ try {
+ let detail = await enterpriseEmployeeServices.getEnterpriseEmployee({ id: row.id });
+ handleInternalStaffEdit({
+ id: row.id,
+ name: row.name,
+ identity: row.identity,
+ contactPhoneNumber: row.contactPhoneNumber,
+ gender: detail.gender,
+ age: detail.age ?? null,
+ identityImg: convertApi2FormUrlOnlyOne(detail.identityImg),
+ identityBackImg: convertApi2FormUrlOnlyOne(detail.identityBackImg),
+ contractUrl: convertApi2FormUrlOnlyOne(detail.contractUrl, {
+ fileName: detail.contractUrl ? detail.contractUrl.split('/').pop() : '鍚堝悓',
+ }),
+ regiterTime: detail.applyTime ?? '',
+ userRealTime: row.userRealTime ?? '',
+ userSignContractTime: row.userSignContractTime ?? '',
+ contractTime: [row.contractBegin, row.contractEnd],
+ });
+ } catch (error) {}
+}
+
+async function addEnterpriseEmployee() {
+ try {
+ const isEdit = !!internalStaffEditForm.id;
+ let params: API.AddEnterpriseEmployeeCommand = {
+ name: internalStaffEditForm.name,
+ identity: internalStaffEditForm.identity,
+ contactPhoneNumber: internalStaffEditForm.contactPhoneNumber,
+ gender: internalStaffEditForm.gender,
+ age: internalStaffEditForm.age,
+ identityImg: internalStaffEditForm.identityImg[0]?.path ?? '',
+ identityBackImg: internalStaffEditForm.identityBackImg[0]?.path ?? '',
+ contractUrl: internalStaffEditForm.contractUrl[0]?.path ?? '',
+ contractBegin: format(internalStaffEditForm.contractTime[0], 'YYYY-MM-DD 00:00:00'),
+ contractEnd: format(internalStaffEditForm.contractTime[1], 'YYYY-MM-DD 23:59:59'),
+ };
+ let res;
+ if (isEdit) {
+ (params as API.EditEnterpriseEmployeeCommand).id = internalStaffEditForm.id;
+ res = await enterpriseEmployeeServices.editEnterpriseEmployee(params);
+ } else {
+ res = await enterpriseEmployeeServices.addEnterpriseEmployee(params);
+ }
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ getList(paginationState.pageIndex);
+ internalDialogState.dialogVisible = false;
+ }
+ } catch (error) {
+ internalDialogState.dialogVisible = true;
+ }
+}
</script>
diff --git a/src/views/FlexJobManage/components/AddInternalStaffDialog.vue b/src/views/FlexJobManage/components/AddInternalStaffDialog.vue
new file mode 100644
index 0000000..43f0a09
--- /dev/null
+++ b/src/views/FlexJobManage/components/AddInternalStaffDialog.vue
@@ -0,0 +1,225 @@
+<template>
+ <ProDialog
+ title="鏂板缓鐏靛伐"
+ v-model="visible"
+ @close="onDialogClose"
+ destroy-on-close
+ draggable
+ :width="900"
+ >
+ <ProForm :model="form" ref="dialogForm" label-width="120px">
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="濮撳悕锛�" prop="name" :check-rules="[{ message: '璇疯緭鍏ュ鍚�' }]">
+ <ProFormText placeholder="璇疯緭鍏ュ鍚�" v-model.trim="form.name"></ProFormText>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鏈嶅姟鍗忚锛�" prop="contractUrl">
+ <ProFormUpload
+ v-model:file-url="form.contractUrl"
+ :limit="1"
+ :limitFileSize="10"
+ accept="jpg/jpeg,png,pdf"
+ ></ProFormUpload>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="韬唤璇佸彿锛�"
+ prop="identity"
+ :check-rules="[{ message: '璇疯緭鍏ヨ韩浠借瘉鍙�', type: 'idCard' }]"
+ >
+ <ProFormText
+ placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�"
+ v-model.trim="form.identity"
+ @blur="handleCalculateAge"
+ ></ProFormText>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鍗忚鏃堕棿:" prop="contractTime">
+ <ProFormDatePicker
+ v-model="form.contractTime"
+ type="daterange"
+ range-separator="鑷�"
+ start-placeholder="璧峰鏃ユ湡"
+ end-placeholder="缁堟鏃ユ湡"
+ ></ProFormDatePicker>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="鎵嬫満鍙凤細"
+ prop="contactPhoneNumber"
+ :check-rules="[{ message: '璇疯緭鍏ユ墜鏈哄彿', type: 'phone' }]"
+ >
+ <ProFormText
+ placeholder="璇疯緭鍏ユ墜鏈哄彿"
+ v-model.trim="form.contactPhoneNumber"
+ ></ProFormText>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12"> </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="鎬у埆锛�"
+ prop="gender"
+ required
+ :check-rules="[{ message: '璇烽�夋嫨鎬у埆' }]"
+ >
+ <ProFormRadio
+ v-model="form.gender"
+ :value-enum="EnumUserGenderTextForPerson"
+ :buttonStyle="false"
+ ></ProFormRadio>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12"> </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="骞撮緞锛�"
+ prop="age"
+ :check-rules="[{ message: '璇疯緭鍏ュ勾榫�', type: 'number' }]"
+ >
+ <ProFormInputNumber
+ v-model="form.age"
+ :controls="false"
+ :min="0"
+ :max="9999"
+ placeholder="璇疯緭鍏ュ勾榫�"
+ unit="宀�"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormItemV2
+ label="韬唤璇佹闈細"
+ prop="identityImg"
+ :check-rules="[{ message: '璇蜂笂浼犺韩浠借瘉姝i潰', type: 'upload' }]"
+ >
+ <ProFormImageUpload
+ v-model:file-url="form.identityImg"
+ :limitFileSize="10"
+ :showTip="false"
+ imgBlur
+ >
+ </ProFormImageUpload>
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="韬唤璇佸弽闈細"
+ prop="identityBackImg"
+ :check-rules="[{ message: '璇蜂笂浼犺韩浠借瘉鍙嶉潰', type: 'upload' }]"
+ >
+ <ProFormImageUpload
+ v-model:file-url="form.identityBackImg"
+ :limitFileSize="10"
+ :showTip="false"
+ imgBlur
+ >
+ </ProFormImageUpload>
+ </ProFormItemV2>
+ </ProForm>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button type="primary" @click="handleConfirm">鎻愪氦</el-button>
+ <el-button @click="emit('onCancel')">鍙栨秷</el-button>
+ </span>
+ </template>
+ </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { FormInstance, ModelValueType } from 'element-plus';
+import {
+ ProDialog,
+ ProForm,
+ ProFormItemV2,
+ ProFormText,
+ UploadUserFile,
+ ProFormCol,
+ ProFormColItem,
+ ProFormImageUpload,
+ ProFormRadio,
+ ProFormUpload,
+ ProFormInputNumber,
+ ProFormDatePicker,
+} from '@bole-core/components';
+import { calculateAge, deepClone, format, hiddenIDNumberForEnd4 } from '@/utils';
+import { EnumUserGender, EnumUserGenderTextForPerson } from '@/constants';
+import { BoleRegExp } from '@bole-core/core';
+
+defineOptions({
+ name: 'AddInternalStaffDialog',
+});
+
+type Form = {
+ title?: string;
+ id: string;
+ name: string;
+ identity: string;
+ contactPhoneNumber: string;
+ gender: EnumUserGender;
+ age: number;
+ identityImg: UploadUserFile[];
+ identityBackImg: UploadUserFile[];
+ contractUrl: UploadUserFile[];
+ regiterTime: string;
+ userRealTime: string;
+ userSignContractTime: string;
+
+ contractTime: ModelValueType;
+};
+
+const visible = defineModel({ type: Boolean });
+
+const form = defineModel<Form>('form');
+let defaultForm: Form = null;
+
+watch(
+ visible,
+ (visible) => {
+ if (visible) {
+ defaultForm = deepClone(unref(form));
+ }
+ },
+ {
+ immediate: true,
+ }
+);
+
+const emit = defineEmits<{
+ (e: 'onConfirm'): void;
+ (e: 'onCancel'): void;
+}>();
+
+const dialogForm = ref<FormInstance>();
+
+function onDialogClose() {
+ if (!dialogForm.value) return;
+ dialogForm.value.resetFields();
+}
+
+function handleConfirm() {
+ if (!dialogForm.value) return;
+ dialogForm.value.validate((valid) => {
+ if (valid) {
+ emit('onConfirm');
+ } else {
+ return;
+ }
+ });
+}
+
+function handleReset() {
+ form.value = { ...defaultForm };
+}
+
+function handleCalculateAge() {
+ form.value.age = calculateAge(form.value.identity);
+}
+
+function formatterIdentity(value: string) {
+ return hiddenIDNumberForEnd4(value);
+}
+</script>
diff --git a/src/views/FlexJobManage/components/StaffDetailInfoView.vue b/src/views/FlexJobManage/components/StaffDetailInfoView.vue
index 5dbe708..576721e 100644
--- a/src/views/FlexJobManage/components/StaffDetailInfoView.vue
+++ b/src/views/FlexJobManage/components/StaffDetailInfoView.vue
@@ -44,10 +44,10 @@
</ProFormColItem>
</ProFormCol>
<ProFormItemV2 label="韬唤璇佹闈細" prop="identityImg">
- <ProFormImageUpload v-model:file-url="detail.identityImg"> </ProFormImageUpload>
+ <ProFormImageUpload v-model:file-url="detail.identityImg" imgBlur> </ProFormImageUpload>
</ProFormItemV2>
<ProFormItemV2 label="韬唤璇佸弽闈細" prop="identityBackImg">
- <ProFormImageUpload v-model:file-url="detail.identityBackImg"> </ProFormImageUpload>
+ <ProFormImageUpload v-model:file-url="detail.identityBackImg" imgBlur> </ProFormImageUpload>
</ProFormItemV2>
</ProForm>
</template>
@@ -64,7 +64,7 @@
ProFormRadio,
UploadUserFile,
} from '@bole-core/components';
-import { convertApi2FormUrlOnlyOne, format } from '@/utils';
+import { convertApi2FormUrlOnlyOne, format, hiddenIDNumberForEnd4 } from '@/utils';
import { useQuery } from '@tanstack/vue-query';
import { EnumUserGender, EnumUserGenderTextForPerson } from '@/constants';
import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee';
@@ -97,7 +97,7 @@
},
onSuccess(data) {
detail.name = data.name;
- detail.identity = data.identity;
+ detail.identity = hiddenIDNumberForEnd4(data.identity);
detail.contactPhoneNumber = data.contactPhoneNumber;
detail.gender = data.gender;
detail.age = data.age ?? 0;
diff --git a/src/views/FlexJobManage/hooks/index.ts b/src/views/FlexJobManage/hooks/index.ts
new file mode 100644
index 0000000..0dcfb26
--- /dev/null
+++ b/src/views/FlexJobManage/hooks/index.ts
@@ -0,0 +1,108 @@
+import { format, hiddenIDNumberForEnd4 } from '@/utils';
+import { useTable } from '@bole-core/components';
+import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee';
+import { ModelValueType } from 'element-plus';
+
+export function getEnterpriseEmployeesHooks() {
+ const {
+ getDataSource: getList,
+ proTableProps,
+ paginationState,
+ extraParamState,
+ reset,
+ } = useTable(
+ async ({ pageIndex, pageSize }, extraParamState) => {
+ try {
+ let params: API.GetEnterpriseEmployeesQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ orderInput: extraParamState.orderInput,
+ },
+ keywords: extraParamState.searchWord,
+ createdTimeStart: format(extraParamState.createdTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+ createdTimeEnd: format(extraParamState.createdTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+ userRealTimeStart: format(extraParamState.userRealTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+ userRealTimeEnd: format(extraParamState.userRealTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+ signContractTimeStart: format(
+ extraParamState.signContractTime?.[0] ?? '',
+ 'YYYY-MM-DD 00:00:00'
+ ),
+ signContractTimeEnd: format(
+ extraParamState.signContractTime?.[1] ?? '',
+ 'YYYY-MM-DD 23:59:59'
+ ),
+ userSignContractTimeStart: format(
+ extraParamState.userSignContractTime?.[0] ?? '',
+ 'YYYY-MM-DD 00:00:00'
+ ),
+ userSignContractTimeEnd: format(
+ extraParamState.userSignContractTime?.[1] ?? '',
+ 'YYYY-MM-DD 23:59:59'
+ ),
+ hireStatus: extraParamState.hireStatus,
+ isReal: extraParamState.isReal,
+ userSignContractStatus: extraParamState.userSignContractStatus,
+ enterpriseSignContractStatus: extraParamState.enterpriseSignContractStatus,
+
+ source: extraParamState.source,
+ };
+
+ let res = await enterpriseEmployeeServices.getEnterpriseEmployees(params);
+ return res;
+ } catch (error) {
+ console.log('error: ', error);
+ }
+ },
+ {
+ defaultExtraParams: {
+ searchWord: '',
+ orderInput: [{ property: 'createdTime', order: EnumPagedListOrder.Desc }],
+ createdTime: [] as unknown as ModelValueType,
+ signContractTime: [] as unknown as ModelValueType,
+ userSignContractTime: [] as unknown as ModelValueType,
+ userRealTime: [] as unknown as ModelValueType,
+ hireStatus: '' as any as EnumTaskUserHireStatus,
+ isReal: null as any as boolean,
+ userSignContractStatus: '' as any as EnumTaskUserSignContractStatus,
+ enterpriseSignContractStatus: '' as any as EnumTaskUserSignContractStatus,
+ source: '' as any as EnumEnterpriseEmployeeSource,
+ },
+ queryKey: ['enterpriseEmployeeServices/getEnterpriseEmployees'],
+ columnsRenderProps: {
+ gender: { type: 'enum', valueEnum: EnumUserGenderTextForPerson },
+ hireStatus: { type: 'enum', valueEnum: EnumTaskUserHireStatusText },
+ userIsReal: {
+ formatter: (row: API.GetEnterpriseEmployeesQueryResultItem) => {
+ return row.userIsReal ? '宸插疄鍚�' : '鏈疄鍚�';
+ },
+ },
+ userSignContractStatus: { type: 'enum', valueEnum: EnumTaskUserSignContractStatusText },
+ hireTime: { type: 'date' },
+ userRealTime: { type: 'date' },
+ userSignContractTime: { type: 'date' },
+ enterpriseSignContractStatus: {
+ type: 'enum',
+ valueEnum: EnumTaskUserSignContractStatusText,
+ },
+ enterpriseSignContractTime: { type: 'date' },
+ contractBegin: { type: 'date' },
+ contractEnd: { type: 'date' },
+ source: { type: 'enum', valueEnum: EnumEnterpriseEmployeeSourceText },
+ identity: {
+ formatter: (row: API.GetPersonalUserInfosQueryResultItem) => {
+ return hiddenIDNumberForEnd4(row.identity);
+ },
+ },
+ },
+ }
+ );
+
+ return {
+ getList,
+ proTableProps,
+ paginationState,
+ extraParamState,
+ reset,
+ };
+}
diff --git a/src/views/Permission/RoleManage.vue b/src/views/Permission/RoleManage.vue
index dfd95e2..2e32a69 100644
--- a/src/views/Permission/RoleManage.vue
+++ b/src/views/Permission/RoleManage.vue
@@ -185,7 +185,9 @@
enterpriseType: AppLocalConfig.enterpriseType,
},
});
+
const queryClient = useQueryClient();
+
async function handleAddOrEdit() {
try {
const isEdit = editForm.id;
diff --git a/src/views/Permission/components/dialogAuthorizeV2.vue b/src/views/Permission/components/dialogAuthorizeV2.vue
index 77ef4d4..aad24be 100644
--- a/src/views/Permission/components/dialogAuthorizeV2.vue
+++ b/src/views/Permission/components/dialogAuthorizeV2.vue
@@ -21,6 +21,7 @@
node-key="id"
:expand-on-click-node="false"
:highlight-current="true"
+ check-strictly
default-expand-all
show-checkbox
ref="moduleTree"
@@ -60,7 +61,6 @@
node-key="id"
:expand-on-click-node="false"
:highlight-current="true"
- check-strictly
default-expand-all
show-checkbox
ref="pageButtonTree"
diff --git a/src/views/ServiceChargeManage/BalanceManage.vue b/src/views/ServiceChargeManage/BalanceManage.vue
index a741e82..1bfe623 100644
--- a/src/views/ServiceChargeManage/BalanceManage.vue
+++ b/src/views/ServiceChargeManage/BalanceManage.vue
@@ -30,11 +30,7 @@
</QueryFilterItem>
</template>
</ProTableQueryFilterBar>
- <ProTableV2
- v-bind="proTableProps"
- :columns="BalanceManageColumns"
- :operationBtns="operationBtns"
- >
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
</ProTableV2>
</AppContainer>
<BalanceDetailDialog v-bind="dialogProps" />
@@ -55,23 +51,22 @@
} from '@bole-core/components';
import * as userServices from '@/services/api/user';
import BalanceDetailDialog from './components/BalanceDetailDialog.vue';
-import { BalanceManageColumns } from './constants';
+import { hiddenIDNumberForEnd4 } from '@/utils';
defineOptions({
- name: 'WithdrawManageList',
+ name: 'BalanceManage',
});
-const operationBtns = defineOperationBtns([
- {
- data: {
- enCode: 'detailBtn',
- name: '鏄庣粏',
- },
+const operationBtnMap: Record<string, OperationBtnType> = {
+ detailBtn: {
emits: {
onClick: (role) => openDialog(role),
},
},
-]);
+};
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+ operationBtnMap,
+});
const router = useRouter();
const BaseState = {
@@ -120,6 +115,11 @@
},
columnsRenderProps: {
balance: { type: 'money' },
+ identity: {
+ formatter: (row: API.GetPersonalUserWalletBalancesQueryResultItem) => {
+ return hiddenIDNumberForEnd4(row.identity);
+ },
+ },
},
}
);
diff --git a/src/views/ServiceChargeManage/ServiceChargeDetail.vue b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
index 6748247..97363ae 100644
--- a/src/views/ServiceChargeManage/ServiceChargeDetail.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
@@ -74,7 +74,13 @@
>
<el-button text type="primary" class="pro-table-operation-btn">瀵煎叆</el-button>
</BlFileUpload> -->
- <el-button type="primary" link @click="handleExport()">瀵煎嚭</el-button>
+ <el-button
+ v-if="checkSubModuleItemShow('pageButton', 'exportBtn')"
+ type="primary"
+ link
+ @click="handleExport()"
+ >瀵煎嚭</el-button
+ >
</template>
</ProTableQueryFilterBar>
<ProTableV2
@@ -90,28 +96,29 @@
</ProTableV2>
<div class="chuck-add-or-edit-actions">
<el-button class="chuck-add-or-edit-actions" @click="handleBack">鍙栨秷</el-button>
- <!-- <el-button
+ <el-button
v-if="
isSettlement &&
(!form.auditStatus || form.auditStatus !== EnumTaskSettlementAuditStatus.Pass)
"
class="chuck-add-or-edit-actions"
type="primary"
- @click="handleSubmit()"
- >缁撶畻鐢宠</el-button
- > -->
+ @click="handleSubmit('confirm')"
+ >缁撶畻纭</el-button
+ >
<el-button
- v-if="isSettlement"
+ v-if="isSettlement && form.auditStatus === EnumTaskSettlementAuditStatus.Pass"
class="chuck-add-or-edit-actions"
type="primary"
- @click="handleSubmit()"
- >缁撶畻纭</el-button
+ @click="handleSubmit('submit')"
+ >鎻愪氦缁撶畻</el-button
>
</div>
</ChunkCell>
</AppScrollContainer>
<EditAccountInfoDialog v-bind="dialogProps"></EditAccountInfoDialog>
<SettleDetailDialog v-bind="dialogSettleProps" />
+ <ResettleEditDialog v-bind="dialogResettleProps" />
</LoadingLayout>
</template>
<script setup lang="ts">
@@ -143,6 +150,7 @@
import * as taskUserServices from '@/services/api/taskUser';
import EditAccountInfoDialog from './components/EditAccountInfoDialog.vue';
import SettleDetailDialog from './components/SettleDetailDialog.vue';
+import ResettleEditDialog from './components/ResettleEditDialog.vue';
import { Message } from '@bole-core/core';
import { SettlementReceiveStatusText, EnumTaskSettlementAuditStatus } from '@/constants';
import {
@@ -162,19 +170,35 @@
const { closeViewPush } = useRouteView();
const eventContext = useGlobalEventContext();
+
const operationBtnMap: Record<string, OperationBtnType> = {
editBtn: {
emits: {
onClick: (role) => openDialog(role),
},
extraProps: {
- hide: () => !isSettlement.value,
+ hide: (row: API.GetSettlementTaskUsersQueryResultItem) =>
+ !(
+ (row.settlementReceiveStatus === SettlementReceiveStatus.Refunded &&
+ form.auditStatus === EnumTaskSettlementAuditStatus.Pass) ||
+ form.auditStatus === EnumTaskSettlementAuditStatus.Wait
+ ),
+ },
+ },
+ reSettleBtn: {
+ emits: {
+ onClick: (role) => againSureTaskSettlementOrderRoster(role),
+ },
+ extraProps: {
+ hide: (row: API.GetSettlementTaskUsersQueryResultItem) =>
+ row.settlementReceiveStatus !== SettlementReceiveStatus.Refunded,
},
},
};
const { column, operationBtns, checkSubModuleItemShow } = useAccess({
operationBtnMap,
});
+
const route = useRoute();
const id = (route.params.id as string) ?? '';
const settlement = (route.query.settlement as string) ?? '';
@@ -199,7 +223,7 @@
timeoutServiceFee: 0,
- supplierEnterpriseId: '',
+ settlementStatus: '' as any as EnumTaskSettlementStatus,
});
const BaseState = {
@@ -235,7 +259,7 @@
form.settlementAccess = res?.detail?.settlementAccess;
form.auditStatus = res?.detail?.auditStatus;
form.timeoutServiceFee = res?.detail?.timeoutServiceFee ?? 0;
- form.supplierEnterpriseId = res?.detail?.supplierEnterpriseId;
+ form.settlementStatus = res?.detail?.settlementStatus;
// form.settlementOrderName = setOssFileName(res?.detail?.settlementOrderName);
// form.settlementOrderTime = res?.detail?.settlementOrderTime ?? '';
}
@@ -344,22 +368,33 @@
function openDialog(row?: API.GetSettlementTaskUsersQueryResultItem) {
if (row) {
- handleEdit({
- id: row?.id,
- settlementAmount: row?.settlementAmount ?? null,
- actualSettlementAmount: row?.actualSettlementAmount ?? null,
- receiveAccount: row?.receiveAccount ?? '',
- bank: row?.bank ?? '',
- // totalWorkHours: row?.totalWorkHours ?? null,
- settlementAccess: form.settlementAccess,
- // bankBranch: row?.bankBranch ?? '',
- timeoutServiceFee: form.timeoutServiceFee,
- serviceFee: row?.serviceFee ?? 0,
- timeoutHours: row?.timeoutHours ?? null,
- timeoutFee: row?.timeoutFee ?? null,
- otherFee: row?.otherFee ?? null,
- remark: row?.remark ?? '',
- });
+ if (isSettlement) {
+ handleEdit({
+ id: row?.id,
+ settlementAmount: row?.settlementAmount ?? null,
+ actualSettlementAmount: row?.actualSettlementAmount ?? null,
+ receiveAccount: row?.receiveAccount ?? '',
+ bank: row?.bank ?? '',
+ // totalWorkHours: row?.totalWorkHours ?? null,
+ settlementAccess: form.settlementAccess,
+ // bankBranch: row?.bankBranch ?? '',
+ timeoutServiceFee: form.timeoutServiceFee,
+ serviceFee: row?.serviceFee ?? 0,
+ timeoutHours: row?.timeoutHours ?? null,
+ timeoutFee: row?.timeoutFee ?? null,
+ otherFee: row?.otherFee ?? null,
+ remark: row?.remark ?? '',
+ });
+ } else {
+ handleResettleEdit({
+ id: row?.id,
+ name: row?.name ?? '',
+ bank: row?.bank ?? '',
+ bankBranch: row?.bankBranch ?? '',
+ receiveAccount: row?.receiveAccount ?? '',
+ remark: row?.remark ?? '',
+ });
+ }
}
}
@@ -436,7 +471,7 @@
}
}
-function handleSubmit() {
+function handleSubmit(submitStatus: string) {
let actualList = form.settlementTaskUsers.filter((x) => x.actualSettlementAmount > 0);
const actualSettlementAmount = actualList.reduce(
(pre, cur) => pre + cur.actualSettlementAmount,
@@ -447,11 +482,11 @@
id: id,
name: form.name,
code: form.code,
+ submitStatus: submitStatus,
settlementUserCount: actualList.length,
actualSettlementAmount: actualSettlementAmount,
settlementAmount: settlementAmount,
settlementAccess: form.settlementAccess,
- supplierEnterpriseId: form.supplierEnterpriseId,
});
}
@@ -465,16 +500,21 @@
id: '',
name: '',
code: '',
+ submitStatus: '',
settlementUserCount: 0,
settlementAmount: 0,
actualSettlementAmount: 0,
settlementAccess: '' as any as EnumEnterpriseWalletAccess,
- supplierEnterpriseId: '',
},
});
async function handleSettle() {
- auditTaskSettlement();
+ if (settleEditForm.submitStatus === 'confirm') {
+ auditTaskSettlement();
+ }
+ if (settleEditForm.submitStatus === 'submit') {
+ sureTaskSettlementOrder();
+ }
}
async function auditTaskSettlement() {
@@ -495,8 +535,9 @@
let res = await taskServices.auditTaskSettlement(params);
if (res) {
Message.successMessage('鎿嶄綔鎴愬姛');
- eventContext.emit('sureTaskSettlementOrder');
- handleBack();
+ // eventContext.emit('sureTaskSettlementOrder');
+ // handleBack();
+ refetch();
}
} catch (error) {}
}
@@ -535,6 +576,56 @@
{ leading: true, trailing: false }
);
+const {
+ dialogProps: dialogResettleProps,
+ handleEdit: handleResettleEdit,
+ editForm: resettleEditForm,
+} = useFormDialog({
+ onConfirm: handleResettle,
+ defaultFormParams: {
+ id: '',
+ name: '',
+ bank: '',
+ bankBranch: '',
+ receiveAccount: '',
+ remark: '',
+ },
+});
+
+async function handleResettle() {
+ try {
+ let params: API.EditTaskSettlementOrderRosterCommand = {
+ id: id,
+ bank: resettleEditForm.bank,
+ bankBranch: resettleEditForm.bankBranch,
+ receiveAccount: resettleEditForm.receiveAccount,
+ remark: resettleEditForm.remark,
+ settlementAmount: 0,
+ actualSettlementAmount: 0,
+ };
+ let res = await taskServices.editTaskSettlementOrderRoster(params);
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ refetch();
+ getList(paginationState.pageIndex);
+ }
+ } catch (error) {}
+}
+
+async function againSureTaskSettlementOrderRoster(row: API.GetSettlementTaskUsersQueryResultItem) {
+ try {
+ let params: API.AgainSureTaskSettlementOrderRosterCommand = {
+ id: row.id,
+ };
+ let res = await taskServices.againSureTaskSettlementOrderRoster(params);
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ refetch();
+ getList(paginationState.pageIndex);
+ }
+ } catch (error) {}
+}
+
function handleBack() {
closeViewPush(route, {
name: 'ServiceChargeManageList',
diff --git a/src/views/ServiceChargeManage/ServiceChargeManageList.vue b/src/views/ServiceChargeManage/ServiceChargeManageList.vue
index 119bdd0..2d37f2c 100644
--- a/src/views/ServiceChargeManage/ServiceChargeManageList.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeManageList.vue
@@ -3,7 +3,7 @@
<AppContainer>
<ProTableQueryFilterBar @on-reset="reset">
<template #query>
- <QueryFilterItem tip-content="楠屾敹鐘舵��">
+ <!-- <QueryFilterItem tip-content="楠屾敹鐘舵��">
<FieldRadio
v-model="extraParamState.checkReceiveStatus"
:value-enum="EnumTaskCheckReceiveStatusTextForFilter"
@@ -11,7 +11,7 @@
showAllBtn
@change="getList()"
/>
- </QueryFilterItem>
+ </QueryFilterItem> -->
<QueryFilterItem tip-content="缁撶畻鐘舵��">
<FieldRadio
v-model="extraParamState.settlementStatus"
@@ -119,6 +119,7 @@
EnumTaskCheckReceiveStatusText,
EnumTaskCheckReceiveStatusTextForFilter,
EnumTaskCheckReceiveStatus,
+ EnumEnterpriseWalletAccessText,
} from '@/constants';
import { downloadFileByUrl, format, setOssFileName, setOSSLink } from '@/utils';
import * as taskServices from '@/services/api/task';
@@ -136,9 +137,6 @@
const operationBtnMap: Record<string, OperationBtnType> = {
// uploadBtn: {
- // emits: {
- // onClick: (role: API.GetSettlementTasksQueryResultItem) => openSettleMethodDialog(role),
- // },
// extraProps: {
// hide: (row: API.GetSettlementTasksQueryResultItem) =>
// row.settlementOrderStatus !== EnumTaskSettlementOrderStatus.Wait,
@@ -159,24 +157,18 @@
},
extraProps: {
hide: (role: API.GetSettlementTasksQueryResultItem) =>
- !(
- role.settlementStatus === EnumTaskSettlementStatus.Wait &&
- role.auditStatus !== EnumTaskSettlementAuditStatus.Pass
- ),
+ role.settlementStatus !== EnumTaskSettlementStatus.Wait,
},
},
- // recallBtn: {
- // emits: {
- // onClick: (role) => handleRecall(role),
- // },
- // extraProps: {
- // hide: (role: API.GetSettlementTasksQueryResultItem) =>
- // !(
- // role.settlementStatus === EnumTaskSettlementStatus.InProcess &&
- // role.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed
- // ),
- // },
- // },
+ recallBtn: {
+ emits: {
+ onClick: (role) => handleRecall(role),
+ },
+ extraProps: {
+ hide: (role: API.GetSettlementTasksQueryResultItem) =>
+ role.settlementStatus !== EnumTaskSettlementStatus.InProcess,
+ },
+ },
// settleAuditBtn: {
// emits: {
// onClick: (role: API.GetSettlementTasksQueryResultItem) => goDetail(role.id, 'settlement'),
diff --git a/src/views/ServiceChargeManage/components/ResettleEditDialog.vue b/src/views/ServiceChargeManage/components/ResettleEditDialog.vue
new file mode 100644
index 0000000..970bb20
--- /dev/null
+++ b/src/views/ServiceChargeManage/components/ResettleEditDialog.vue
@@ -0,0 +1,90 @@
+<template>
+ <ProDialog
+ title="缂栬緫"
+ v-model="visible"
+ @close="onDialogClose"
+ destroy-on-close
+ draggable
+ :width="700"
+ >
+ <ProForm :model="form" ref="dialogForm" label-width="120px">
+ <ProFormItemV2 label="濮撳悕锛�" prop="name" mode="read">
+ <ProFormText v-model.trim="form.name"></ProFormText>
+ </ProFormItemV2>
+ <ProFormItemV2 label="閾惰锛�" prop="bank" :check-rules="[{ message: '璇疯緭鍏ラ摱琛�' }]">
+ <ProFormText placeholder="璇疯緭鍏ラ摱琛�" v-model.trim="form.bank"></ProFormText>
+ </ProFormItemV2>
+ <ProFormItemV2 label="鏀锛�" prop="bankBranch" :check-rules="[{ message: '璇疯緭鍏ユ敮琛�' }]">
+ <ProFormText placeholder="璇疯緭鍏ユ敮琛�" v-model.trim="form.bankBranch"></ProFormText>
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="鏀舵璐︽埛锛�"
+ prop="receiveAccount"
+ :check-rules="[{ message: '璇疯緭鍏ユ敹娆捐处鎴�' }]"
+ >
+ <ProFormText placeholder="璇疯緭鍏ユ敹娆捐处鎴�" v-model.trim="form.receiveAccount"></ProFormText>
+ </ProFormItemV2>
+ <ProFormItemV2 label="澶囨敞锛�" prop="remark">
+ <ProFormTextArea placeholder="璇疯緭鍏ュ娉�" v-model="form.remark"></ProFormTextArea>
+ </ProFormItemV2>
+ </ProForm>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="emit('onCancel')">鍙栨秷</el-button>
+ <el-button type="primary" @click="handleConfirm">纭</el-button>
+ </span>
+ </template>
+ </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import {
+ ProDialog,
+ ProForm,
+ ProFormItemV2,
+ ProFormText,
+ ProFormTextArea,
+} from '@bole-core/components';
+
+defineOptions({
+ name: 'ResettleEditDialog',
+});
+
+type Form = {
+ title?: string;
+ id?: string;
+ name: string;
+ bank: string;
+ bankBranch: string;
+ receiveAccount: string;
+ remark: string;
+};
+
+const visible = defineModel({ type: Boolean });
+
+const form = defineModel<Form>('form');
+
+const emit = defineEmits<{
+ (e: 'onConfirm'): void;
+ (e: 'onCancel'): void;
+}>();
+
+const dialogForm = ref<FormInstance>();
+
+function onDialogClose() {
+ if (!dialogForm.value) return;
+ dialogForm.value.resetFields();
+}
+
+function handleConfirm() {
+ if (!dialogForm.value) return;
+ dialogForm.value.validate((valid) => {
+ if (valid) {
+ emit('onConfirm');
+ } else {
+ return;
+ }
+ });
+}
+</script>
diff --git a/src/views/ServiceChargeManage/components/SettleDetailDialog.vue b/src/views/ServiceChargeManage/components/SettleDetailDialog.vue
index 4110c43..b8d08db 100644
--- a/src/views/ServiceChargeManage/components/SettleDetailDialog.vue
+++ b/src/views/ServiceChargeManage/components/SettleDetailDialog.vue
@@ -69,16 +69,16 @@
settlementAmount: number;
actualSettlementAmount: number;
settlementAccess: EnumEnterpriseWalletAccess;
- supplierEnterpriseId: string;
};
+const { settlementAccessList } = useEnterpriseWalletAccessSelect({
+ supplierEnterpriseId: computed(() => ''),
+});
+
const visible = defineModel({ type: Boolean });
const form = defineModel<Form>('form');
-const { settlementAccessList } = useEnterpriseWalletAccessSelect({
- supplierEnterpriseId: computed(() => form.value.supplierEnterpriseId),
-});
const emit = defineEmits<{
(e: 'onConfirm'): void;
(e: 'onCancel'): void;
diff --git a/src/views/UserManage/UserManageList.vue b/src/views/UserManage/UserManageList.vue
index ccb367c..2402aa5 100644
--- a/src/views/UserManage/UserManageList.vue
+++ b/src/views/UserManage/UserManageList.vue
@@ -54,7 +54,6 @@
QueryFilterItem,
useTable,
useFormDialog,
- defineOperationBtns,
FieldSwitch,
} from '@bole-core/components';
import * as userServices from '@/services/api/user';
@@ -76,18 +75,24 @@
},
},
resetPasswordBtn: {
+ props: {
+ type: 'danger',
+ },
emits: {
onClick: (role) => openResetPasswordDialog(role),
},
},
resetOperatorPasswordBtn: {
+ props: {
+ type: 'danger',
+ },
emits: {
onClick: (role) => openResetOperatorPasswordDialog(role),
},
},
};
-const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
operationBtnMap,
});
--
Gitblit v1.10.0