wupengfei
2025-10-31 82e77f2e73e262776748b94f1978c2aafaf724e8
feat: 1.3
21个文件已修改
4个文件已添加
1424 ■■■■ 已修改文件
.eslintrc-auto-import.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
auto-imports.d.ts 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/apiEnum.ts 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/app.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/customer.ts 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/enterprise.ts 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/index.ts 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/task.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 378 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/user.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CustomerManage/CustomerManage.vue 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CustomerManage/components/AddOrEditCustomerView.vue 269 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CustomerManage/components/ResetOperatorPasswordDialog.vue 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CustomerManage/components/ResetPasswordDialog.vue 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CustomerManage/constants/customerManage.ts 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EmploymentManage/constants/columns.ts 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FinanceManage/components/DistributionDetailView.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FinanceManage/constants/columns.ts 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ServiceChargeManage/ServiceChargeDetail.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ServiceChargeManage/ServiceChargeManage.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ServiceChargeManage/components/ResettleEditDialog.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ServiceChargeManage/constants/columns.ts 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/UserManage/UserManageList.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/UserManage/components/AddOrEditUserDialog.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.eslintrc-auto-import.json
@@ -30,9 +30,14 @@
    "EnumDbAuditOperate": true,
    "EnumElectronSignAccess": true,
    "EnumElectronSignVerifyType": true,
    "EnumEnterpriseCooperationSignStatus": true,
    "EnumEnterpriseCooperationSignStatusText": true,
    "EnumEnterpriseCooperationStatus": true,
    "EnumEnterpriseCooperationStatusText": true,
    "EnumEnterpriseCostStatus": true,
    "EnumEnterpriseCostType": true,
    "EnumEnterpriseRealMethod": true,
    "EnumEnterpriseType": true,
    "EnumEnterpriseWalletAccess": true,
    "EnumEnterpriseWalletAccessText": true,
    "EnumEnterpriseWalletAccessTextForSettle": true,
@@ -73,6 +78,7 @@
    "EnumSettlementCycleText": true,
    "EnumSmsAccess": true,
    "EnumSmsStatus": true,
    "EnumTaskApplyStatus": true,
    "EnumTaskCheckReceiveMethod": true,
    "EnumTaskCheckReceiveMethodText": true,
    "EnumTaskCheckReceiveStatus": true,
auto-imports.d.ts
@@ -33,9 +33,14 @@
  const EnumDbAuditOperate: typeof import('./src/constants/apiEnum')['EnumDbAuditOperate']
  const EnumElectronSignAccess: typeof import('./src/constants/apiEnum')['EnumElectronSignAccess']
  const EnumElectronSignVerifyType: typeof import('./src/constants/apiEnum')['EnumElectronSignVerifyType']
  const EnumEnterpriseCooperationSignStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseCooperationSignStatus']
  const EnumEnterpriseCooperationSignStatusText: typeof import('./src/constants/customer')['EnumEnterpriseCooperationSignStatusText']
  const EnumEnterpriseCooperationStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseCooperationStatus']
  const EnumEnterpriseCooperationStatusText: typeof import('./src/constants/customer')['EnumEnterpriseCooperationStatusText']
  const EnumEnterpriseCostStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseCostStatus']
  const EnumEnterpriseCostType: typeof import('./src/constants/apiEnum')['EnumEnterpriseCostType']
  const EnumEnterpriseRealMethod: typeof import('./src/constants/apiEnum')['EnumEnterpriseRealMethod']
  const EnumEnterpriseType: typeof import('./src/constants/apiEnum')['EnumEnterpriseType']
  const EnumEnterpriseWalletAccess: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletAccess']
  const EnumEnterpriseWalletAccessText: typeof import('./src/constants/enterpriseWallet')['EnumEnterpriseWalletAccessText']
  const EnumEnterpriseWalletAccessTextForSettle: typeof import('./src/constants/task')['EnumEnterpriseWalletAccessTextForSettle']
@@ -78,6 +83,7 @@
  const EnumSmsAccess: typeof import('./src/constants/apiEnum')['EnumSmsAccess']
  const EnumSmsStatus: typeof import('./src/constants/apiEnum')['EnumSmsStatus']
  const EnumSmsTemplateType: typeof import('./src/constants/apiEnum')['EnumSmsTemplateType']
  const EnumTaskApplyStatus: typeof import('./src/constants/apiEnum')['EnumTaskApplyStatus']
  const EnumTaskCheckReceiveMethod: typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveMethod']
  const EnumTaskCheckReceiveMethodText: typeof import('./src/constants/task')['EnumTaskCheckReceiveMethodText']
  const EnumTaskCheckReceiveStatus: typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveStatus']
@@ -289,7 +295,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, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetArrangeTaskUsersQueryApplyStatus, EnumGetCheckReceiveTaskCheckInUsersQueryStatus, EnumGetCheckReceiveTasksQueryResultItemCheckStatus, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumLogLevel, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsStatus, 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, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetSettlementTasksQueryPaymentStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus, EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumConsoleLogAccess, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumElectronSignVerifyType, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetArrangeTaskUsersQueryApplyStatus, EnumGetCheckReceiveTaskCheckInUsersQueryStatus, EnumGetCheckReceiveTasksQueryResultItemCheckStatus, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumLogLevel, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsStatus, 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, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetSettlementTasksQueryPaymentStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus } from './src/constants/apiEnum'
  export type { EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumConsoleLogAccess, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumElectronSignVerifyType, EnumEnterpriseCooperationSignStatus, EnumEnterpriseCooperationStatus, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseType, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetArrangeTaskUsersQueryApplyStatus, EnumGetCheckReceiveTaskCheckInUsersQueryStatus, EnumGetCheckReceiveTasksQueryResultItemCheckStatus, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumLogLevel, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, 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, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetSettlementTasksQueryPaymentStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus, EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumConsoleLogAccess, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumElectronSignVerifyType, EnumEnterpriseCooperationSignStatus, EnumEnterpriseCooperationStatus, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseType, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetArrangeTaskUsersQueryApplyStatus, EnumGetCheckReceiveTaskCheckInUsersQueryStatus, EnumGetCheckReceiveTasksQueryResultItemCheckStatus, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumLogLevel, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, 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, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetSettlementTasksQueryPaymentStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus } from './src/constants/apiEnum'
  import('./src/constants/apiEnum')
  // @ts-ignore
  export type { CategoryCode, IdentityCodeEnum, EducationCodeEnum, CertificateTypeCodeEnum, WelfareCodeEnum } from './src/constants/dic'
@@ -351,9 +357,14 @@
    readonly EnumDbAuditOperate: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumDbAuditOperate']>
    readonly EnumElectronSignAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumElectronSignAccess']>
    readonly EnumElectronSignVerifyType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumElectronSignVerifyType']>
    readonly EnumEnterpriseCooperationSignStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCooperationSignStatus']>
    readonly EnumEnterpriseCooperationSignStatusText: UnwrapRef<typeof import('./src/constants/customer')['EnumEnterpriseCooperationSignStatusText']>
    readonly EnumEnterpriseCooperationStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCooperationStatus']>
    readonly EnumEnterpriseCooperationStatusText: UnwrapRef<typeof import('./src/constants/customer')['EnumEnterpriseCooperationStatusText']>
    readonly EnumEnterpriseCostStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCostStatus']>
    readonly EnumEnterpriseCostType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCostType']>
    readonly EnumEnterpriseRealMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseRealMethod']>
    readonly EnumEnterpriseType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseType']>
    readonly EnumEnterpriseWalletAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletAccess']>
    readonly EnumEnterpriseWalletAccessText: UnwrapRef<typeof import('./src/constants/enterpriseWallet')['EnumEnterpriseWalletAccessText']>
    readonly EnumEnterpriseWalletAccessTextForSettle: UnwrapRef<typeof import('./src/constants/task')['EnumEnterpriseWalletAccessTextForSettle']>
@@ -394,6 +405,7 @@
    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 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']>
    readonly EnumTaskCheckReceiveStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveStatus']>
src/constants/apiEnum.ts
@@ -101,6 +101,22 @@
  Face = 20,
}
/** 签约状态 */
export enum EnumEnterpriseCooperationSignStatus {
  /**未签约 */
  None = 10,
  /**已签约 */
  Completed = 20,
}
/** 企业合作状态 */
export enum EnumEnterpriseCooperationStatus {
  /**未合作 */
  None = 10,
  /**已合作 */
  Completed = 20,
}
/** 企业用量扣费状态 */
export enum EnumEnterpriseCostStatus {
  /**扣费成功 */
@@ -123,6 +139,14 @@
  Identity3 = 10,
  /**企业四要素 */
  Identity4 = 20,
}
/** 企业类型 */
export enum EnumEnterpriseType {
  /**供应商 */
  Supplier = 0,
  /**甲方企业 */
  PartyA = 1,
}
/** 企业钱包通道 */
@@ -465,6 +489,16 @@
  Success = 20,
  /**发送失败 */
  Fail = 30,
}
/** 任务报名状态 */
export enum EnumTaskApplyStatus {
  /**待开始 */
  Wait = 10,
  /**进行中 */
  InProcess = 20,
  /**已结束 */
  End = 21,
}
/** 任务验收方式 */
@@ -837,6 +871,8 @@
  WaitHire = 10,
  /**待签约 */
  WaitSignContract = 20,
  /**已谢绝 */
  HireRefuse = 30,
}
/** 我的已录用分页列表-状态 */
src/constants/app.ts
@@ -3,4 +3,5 @@
export const AppLocalConfig = {
  userType: EnumUserType.Enterprise,
  clientType: EnumClientType.PcWeb,
  enterpriseType: EnumEnterpriseType.Supplier,
};
src/constants/customer.ts
New file
@@ -0,0 +1,9 @@
export const EnumEnterpriseCooperationStatusText = {
  [EnumEnterpriseCooperationStatus.None]: '未合作',
  [EnumEnterpriseCooperationStatus.Completed]: '已合作',
};
export const EnumEnterpriseCooperationSignStatusText = {
  [EnumEnterpriseCooperationSignStatus.None]: '未签约',
  [EnumEnterpriseCooperationSignStatus.Completed]: '已签约',
};
src/constants/index.ts
@@ -17,3 +17,4 @@
export * from './finance';
export * from './common';
export * from './user';
export * from './customer';
src/services/api/enterprise.ts
@@ -68,6 +68,77 @@
  );
}
/** 查询客户详情(甲方企业) GET /api/user/enterprise/getPartyAEnterprise */
export async function getPartyAEnterprise(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetPartyAEnterpriseParams,
  options?: API.RequestConfig
) {
  return request<API.GetPartyAEnterpriseQueryResult>('/api/user/enterprise/getPartyAEnterprise', {
    method: 'GET',
    params: {
      ...params,
    },
    ...(options || {}),
  });
}
/** 查询客户管理(甲方客户) POST /api/user/enterprise/getPartyAEnterprises */
export async function getPartyAEnterprises(
  body: API.GetPartyAEnterprisesQuery,
  options?: API.RequestConfig
) {
  return request<API.PagedListQueryResultGetPartyAEnterprisesQueryResultItem>(
    '/api/user/enterprise/getPartyAEnterprises',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 查询供应商管理 POST /api/user/enterprise/getSupplierEnterprises */
export async function getSupplierEnterprises(
  body: API.GetSupplierEnterprisesQuery,
  options?: API.RequestConfig
) {
  return request<API.PagedListQueryResultGetSupplierEnterprisesQueryResultItem>(
    '/api/user/enterprise/getSupplierEnterprises',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 查询供应商选择器数据 GET /api/user/enterprise/getSupplierEnterpriseSelect */
export async function getSupplierEnterpriseSelect(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetSupplierEnterpriseSelectParams,
  options?: API.RequestConfig
) {
  return request<API.SelectOptionGuidGetSupplierEnterpriseSelectQueryOption[]>(
    '/api/user/enterprise/getSupplierEnterpriseSelect',
    {
      method: 'GET',
      params: {
        ...params,
        request: undefined,
        ...params['request'],
      },
      ...(options || {}),
    }
  );
}
/** 保存企业 POST /api/user/enterprise/saveEnterprise */
export async function saveEnterprise(body: API.SaveEnterpriseCommand, options?: API.RequestConfig) {
  return request<string>('/api/user/enterprise/saveEnterprise', {
@@ -95,6 +166,21 @@
  });
}
/** 添加客户企业(甲方企业) POST /api/user/enterprise/savePartyAEnterprise */
export async function savePartyAEnterprise(
  body: API.SavePartyAEnterpriseCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/enterprise/savePartyAEnterprise', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 设置企业电子签配置 PUT /api/user/enterprise/setEnterpriseElectronSignSetting */
export async function setEnterpriseElectronSignSetting(
  body: API.SetEnterpriseElectronSignSettingCommand,
src/services/api/index.ts
@@ -5,46 +5,46 @@
import * as enterpriseEmployee from './enterpriseEmployee';
import * as user from './user';
import * as role from './role';
import * as task from './task';
import * as enterpriseWallet from './enterpriseWallet';
import * as ocrUtils from './ocrUtils';
import * as task from './task';
import * as enterprise from './enterprise';
import * as logRecords from './logRecords';
import * as resource from './resource';
import * as logRecords from './logRecords';
import * as dictionary from './dictionary';
import * as codeUrl from './codeUrl';
import * as taskCheckReceive from './taskCheckReceive';
import * as electronSign from './electronSign';
import * as userResume from './userResume';
import * as auth from './auth';
import * as taskCheckReceive from './taskCheckReceive';
import * as taskUser from './taskUser';
import * as sms from './sms';
import * as settings from './settings';
import * as codeUrl from './codeUrl';
import * as syncDatabase from './syncDatabase';
import * as menu from './menu';
import * as sms from './sms';
import * as userWallet from './userWallet';
import * as fileUtils from './fileUtils';
import * as syncDatabase from './syncDatabase';
import * as settings from './settings';
export default {
  enterpriseEmployee,
  user,
  role,
  task,
  enterpriseWallet,
  ocrUtils,
  task,
  enterprise,
  logRecords,
  resource,
  logRecords,
  dictionary,
  codeUrl,
  taskCheckReceive,
  electronSign,
  userResume,
  auth,
  taskCheckReceive,
  taskUser,
  sms,
  settings,
  codeUrl,
  syncDatabase,
  menu,
  sms,
  userWallet,
  fileUtils,
  syncDatabase,
  settings,
};
src/services/api/task.ts
@@ -2,6 +2,21 @@
// @ts-ignore
import { request } from '@/utils/request';
/** 再次确认结算 POST /api/flexjob/task/againSureTaskSettlementOrderRoster */
export async function againSureTaskSettlementOrderRoster(
  body: API.AgainSureTaskSettlementOrderRosterCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/flexjob/task/againSureTaskSettlementOrderRoster', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 审核任务结算 POST /api/flexjob/task/auditTaskSettlement */
export async function auditTaskSettlement(
  body: API.AuditTaskSettlementCommand,
src/services/api/typings.d.ts
@@ -3,6 +3,11 @@
    [key: string]: any;
  }
  interface AgainSureTaskSettlementOrderRosterCommand {
    /** 名单Id */
    id?: string;
  }
  interface APIcheckHealthParams {
    /** 健康校验 */
    request?: CheckHealthQuery;
@@ -180,6 +185,11 @@
    roleId?: string;
  }
  interface APIgetPartyAEnterpriseParams {
    /** 合作Id */
    id?: string;
  }
  interface APIgetPersonalLoginInfoParams {
    /** 查询个人用户登录信息 */
    request?: GetPersonalLoginInfoQuery;
@@ -245,6 +255,11 @@
    isImport?: boolean;
    /** 操作令牌 */
    operatorToken?: string;
  }
  interface APIgetSupplierEnterpriseSelectParams {
    /** 查询供应商选择器数据 */
    request?: GetSupplierEnterpriseSelectQuery;
  }
  interface APIgetTaskEnterpriseParams {
@@ -787,6 +802,20 @@
    Face = 20,
  }
  enum EnumEnterpriseCooperationSignStatus {
    /**未签约 */
    None = 10,
    /**已签约 */
    Completed = 20,
  }
  enum EnumEnterpriseCooperationStatus {
    /**未合作 */
    None = 10,
    /**已合作 */
    Completed = 20,
  }
  enum EnumEnterpriseCostStatus {
    /**扣费成功 */
    Success = 10,
@@ -806,6 +835,13 @@
    Identity3 = 10,
    /**企业四要素 */
    Identity4 = 20,
  }
  enum EnumEnterpriseType {
    /**供应商 */
    Supplier = 0,
    /**甲方企业 */
    PartyA = 1,
  }
  enum EnumEnterpriseWalletAccess {
@@ -1121,6 +1157,15 @@
    Success = 20,
    /**发送失败 */
    Fail = 30,
  }
  enum EnumTaskApplyStatus {
    /**待开始 */
    Wait = 10,
    /**进行中 */
    InProcess = 20,
    /**已结束 */
    End = 21,
  }
  enum EnumTaskCheckReceiveMethod {
@@ -2212,6 +2257,24 @@
    timestamp?: number;
  }
  interface FriendlyResultGetPartyAEnterpriseQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetPartyAEnterpriseQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetPersonalApplyTaskInfosQueryResult {
    /** 跟踪Id */
    traceId?: string;
@@ -3200,6 +3263,25 @@
    timestamp?: number;
  }
  interface FriendlyResultListSelectOptionGuidGetSupplierEnterpriseSelectQueryOption {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    /** 数据 */
    data?: SelectOptionGuidGetSupplierEnterpriseSelectQueryOption[];
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultListSelectOptionGuidGetTaskSelectQueryOption {
    /** 跟踪Id */
    traceId?: string;
@@ -3365,6 +3447,24 @@
    timestamp?: number;
  }
  interface FriendlyResultPagedListQueryResultGetPartyAEnterprisesQueryResultItem {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: PagedListQueryResultGetPartyAEnterprisesQueryResultItem;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultPagedListQueryResultGetRolesQueryResultItem {
    /** 跟踪Id */
    traceId?: string;
@@ -3373,6 +3473,24 @@
    /** 错误码 */
    errorCode?: string;
    data?: PagedListQueryResultGetRolesQueryResultItem;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultPagedListQueryResultGetSupplierEnterprisesQueryResultItem {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: PagedListQueryResultGetSupplierEnterprisesQueryResultItem;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -3690,6 +3808,10 @@
  }
  interface GetCheckReceiveTaskQueryResultObjectData {
    /** 供应商Id */
    supplierEnterpriseId?: string;
    /** 需求人数 */
    needPeopleNumber?: number;
    /** 任务名称 */
    name?: string;
    /** 任务单号 */
@@ -3741,6 +3863,10 @@
  interface GetCheckReceiveTasksQueryResultItem {
    /** 任务Id */
    id?: string;
    /** 供应商Id */
    supplierEnterpriseId?: string;
    /** 需求人数 */
    needPeopleNumber?: number;
    /** 任务名称 */
    name?: string;
    /** 任务单号 */
@@ -4491,6 +4617,7 @@
  interface GetEnterprisesQueryResultItem {
    /** Id */
    id?: string;
    type?: EnumEnterpriseType;
    /** 企业全称 */
    enterpriseName?: string;
    /** 法人姓名 */
@@ -4547,6 +4674,10 @@
    identity?: string;
    /** 余额 */
    balance?: number;
    /** 可用余额 */
    availableBalance?: number;
    /** 已冻结 */
    freezeBalance?: number;
  }
  interface GetEnterpriseWalletExpandindirectOrderQueryResult {
@@ -5132,6 +5263,84 @@
    name?: string;
  }
  interface GetPartyAEnterpriseQueryResult {
    /** 合作Id */
    id?: string;
    /** 甲方企业Id */
    partyAEnterpriseId?: string;
    /** 企业名称 */
    enterpriseName?: string;
    /** 法人姓名 */
    legalPerson?: string;
    /** 法人身份证号 */
    legalIdentity?: string;
    /** 统一社会信用代码 */
    societyCreditCode?: string;
    /** 注册资本 */
    registeredCapital?: string;
    /** 企业类型 */
    enterpriseType?: string;
    /** 成立日期 */
    establishmentDate?: string;
    /** 所在省份编号 */
    provinceCode?: string;
    /** 所在省份 */
    provinceContent?: string;
    /** 所在城市编号 */
    cityCode?: string;
    /** 所在城市 */
    cityContent?: string;
    /** 详细地址 */
    address?: string;
    /** 经营范围 */
    mainBusiness?: string;
    /** 联系人 */
    contacts?: string;
    /** 联系电话 */
    contactPhoneNumber?: string;
    /** 联系邮箱 */
    contactEmail?: string;
    cooperationStatus?: EnumEnterpriseCooperationStatus;
    signStatus?: EnumEnterpriseCooperationSignStatus;
    /** 合作协议 */
    cooperationAgreementUrl?: string;
    /** 用户Id */
    userId?: string;
    /** 账号 */
    userName?: string;
  }
  interface GetPartyAEnterprisesQuery {
    /** 关键字 */
    keywords?: string;
    cooperationStatus?: EnumEnterpriseCooperationStatus;
    signStatus?: EnumEnterpriseCooperationSignStatus;
    pageModel?: PagedListQueryPageModel;
  }
  interface GetPartyAEnterprisesQueryResultItem {
    /** 合作Id */
    id?: string;
    /** 企业全称 */
    enterpriseName?: string;
    /** 统一社会信用代码 */
    societyCreditCode?: string;
    /** 客户ID */
    partyAEnterpriseId?: string;
    /** 法人姓名 */
    legalPerson?: string;
    /** 联系人 */
    contacts?: string;
    /** 联系电话 */
    contactPhoneNumber?: string;
    /** 所在省份 */
    provinceContent?: string;
    /** 所在城市 */
    cityContent?: string;
    cooperationStatus?: EnumEnterpriseCooperationStatus;
    signStatus?: EnumEnterpriseCooperationSignStatus;
  }
  interface GetPersonalApplyTaskInfosQuery {
    status?: GetPersonalApplyTaskInfosQueryStatus;
    pageModel?: PagedListQueryPageModel;
@@ -5146,6 +5355,10 @@
  interface GetPersonalApplyTaskInfosQueryResultItem {
    /** 任务Id */
    id?: string;
    /** 供应商Id */
    supplierEnterpriseId?: string;
    /** 需求人数 */
    needPeopleNumber?: number;
    /** 任务名称 */
    name?: string;
    /** 任务开始时间 */
@@ -5181,6 +5394,8 @@
    WaitHire = 10,
    /**待签约 */
    WaitSignContract = 20,
    /**已谢绝 */
    HireRefuse = 30,
  }
  interface GetPersonalCancelTaskInfosQuery {
@@ -5196,6 +5411,10 @@
  interface GetPersonalCancelTaskInfosQueryResultItem {
    /** 任务Id */
    id?: string;
    /** 供应商Id */
    supplierEnterpriseId?: string;
    /** 需求人数 */
    needPeopleNumber?: number;
    /** 任务名称 */
    name?: string;
    /** 任务开始时间 */
@@ -5241,6 +5460,10 @@
  interface GetPersonalHireTaskInfosQueryResultItem {
    /** 任务Id */
    id?: string;
    /** 供应商Id */
    supplierEnterpriseId?: string;
    /** 需求人数 */
    needPeopleNumber?: number;
    /** 任务名称 */
    name?: string;
    /** 任务开始时间 */
@@ -5594,8 +5817,15 @@
    balance?: number;
    /** 企业名称 */
    enterpriseName?: string;
    /** 供应商 */
    supplierEnterpriseName?: string;
    /** 任务名称 */
    taskName?: string;
    /** 任务单号 */
    taskCode?: string;
    /** 结算单号 */
    settlementCode?: string;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 结算单名称 */
    settlementOrderName?: string;
    settlementStatus?: EnumTaskSettlementStatus;
@@ -5789,6 +6019,7 @@
    /** 名称 */
    name?: string;
    userType?: EnumUserType;
    enterpriseType?: EnumEnterpriseType;
    clientType?: EnumClientType;
    /** 最低级别 */
    minLevel?: number;
@@ -5809,6 +6040,7 @@
  interface GetRolesQuery {
    userType?: EnumUserType;
    enterpriseType?: EnumEnterpriseType;
    clientType?: EnumClientType;
    /** 关键字 */
    keywords?: string;
@@ -5821,6 +6053,7 @@
    /** 名称 */
    name?: string;
    userType?: EnumUserType;
    enterpriseType?: EnumEnterpriseType;
    clientType?: EnumClientType;
    /** 最低级别 */
    minLevel?: number;
@@ -5906,6 +6139,8 @@
    name?: string;
    /** 任务单号 */
    code?: string;
    /** 结算单号 */
    settlementCode?: string;
    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
    settlementOrderStatus?: EnumTaskSettlementOrderStatus;
    /** 结算单名称 */
@@ -5925,7 +6160,10 @@
    settlementRemark?: string;
    /** 结算人数 */
    settlementUserCount?: number;
    settlementAccess?: EnumEnterpriseWalletAccess;
    auditStatus?: EnumTaskSettlementAuditStatus;
    /** 操作人 */
    operator?: string;
  }
  interface GetSettlementTasksQueryResultObjectData {
@@ -5946,6 +6184,10 @@
  interface GetSettlementTaskUsersQueryResultDetail {
    /** 结算订单Id */
    id?: string;
    /** 供应商Id */
    supplierEnterpriseId?: string;
    /** 需求人数 */
    needPeopleNumber?: number;
    /** 校验验收起始日期 */
    checkReceiveBeginDate?: string;
    /** 校验验收截止日期 */
@@ -6123,6 +6365,52 @@
    signName?: string;
  }
  type GetSupplierEnterpriseSelectQuery = Record<string, any>;
  interface GetSupplierEnterpriseSelectQueryOption {
    /** 供应商Id */
    supplierEnterpriseId?: string;
    supplierEnterprise?: GetSupplierEnterpriseSelectQueryOptionEnterprise;
  }
  interface GetSupplierEnterpriseSelectQueryOptionEnterprise {
    /** 企业全称 */
    enterpriseName?: string;
  }
  interface GetSupplierEnterprisesQuery {
    /** 关键字 */
    keywords?: string;
    cooperationStatus?: EnumEnterpriseCooperationStatus;
    signStatus?: EnumEnterpriseCooperationSignStatus;
    pageModel?: PagedListQueryPageModel;
  }
  interface GetSupplierEnterprisesQueryResultItem {
    /** 合作Id */
    id?: string;
    /** 企业全称 */
    enterpriseName?: string;
    /** 统一社会信用代码 */
    societyCreditCode?: string;
    /** 供应商ID */
    supplierEnterpriseId?: string;
    /** 法人姓名 */
    legalPerson?: string;
    /** 联系人 */
    contacts?: string;
    /** 联系电话 */
    contactPhoneNumber?: string;
    /** 所在省份 */
    provinceContent?: string;
    /** 所在城市 */
    cityContent?: string;
    /** 所属行业 */
    industryTypeContent?: string;
    cooperationStatus?: EnumEnterpriseCooperationStatus;
    signStatus?: EnumEnterpriseCooperationSignStatus;
  }
  interface GetTaskEnterpriseQueryResult {
    /** 企业全称 */
    enterpriseName?: string;
@@ -6147,6 +6435,12 @@
  interface GetTaskInfoQueryResult {
    /** Id */
    id?: string;
    /** 供应商Id */
    supplierEnterpriseId?: string;
    /** 供应商 */
    supplierEnterpriseName?: string;
    /** 需求人数 */
    needPeopleNumber?: number;
    /** 企业Id */
    enterpriseId?: string;
    /** 企业全称 */
@@ -6293,11 +6587,21 @@
  interface GetTaskInfosQueryResultItem {
    /** Id */
    id?: string;
    /** 供应商Id */
    supplierEnterpriseId?: string;
    /** 供应商 */
    supplierEnterpriseName?: string;
    /** 供应商账号 */
    supplierEnterpriseUserName?: string;
    /** 需求人数 */
    needPeopleNumber?: number;
    /** 任务名称 */
    name: string;
    /** 任务单号 */
    code?: string;
    /** 企业全称 */
    /** 所属客户Id */
    enterpriseId?: string;
    /** 所属客户 */
    enterpriseName?: string;
    /** 用户名 */
    userName?: string;
@@ -6341,6 +6645,7 @@
    applyBeginTime?: string;
    /** 报名结束时间 */
    applyEndTime?: string;
    applyStatus?: EnumTaskApplyStatus;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
@@ -7055,10 +7360,22 @@
    data?: GetEnterprisesQueryResultItem[];
  }
  interface PagedListQueryResultGetPartyAEnterprisesQueryResultItem {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetPartyAEnterprisesQueryResultItem[];
  }
  interface PagedListQueryResultGetRolesQueryResultItem {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetRolesQueryResultItem[];
  }
  interface PagedListQueryResultGetSupplierEnterprisesQueryResultItem {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetSupplierEnterprisesQueryResultItem[];
  }
  interface PagedListQueryResultPageModel {
@@ -7081,6 +7398,7 @@
    password: string;
    type?: EnumUserType;
    clientType?: EnumClientType;
    enterpriseType?: EnumEnterpriseType;
  }
  interface PersonalUserElectronSignCommand {
@@ -7490,6 +7808,49 @@
    id?: string;
  }
  interface SavePartyAEnterpriseCommand {
    /** 企业名称 */
    enterpriseName: string;
    /** 法人姓名 */
    legalPerson?: string;
    /** 法人身份证号 */
    legalIdentity?: string;
    /** 统一社会信用代码 */
    societyCreditCode: string;
    /** 注册资本 */
    registeredCapital?: string;
    /** 企业类型 */
    enterpriseType?: string;
    /** 成立日期 */
    establishmentDate?: string;
    /** 所在省份编号 */
    provinceCode?: string;
    /** 所在城市编号 */
    cityCode?: string;
    /** 详细地址 */
    address?: string;
    /** 经营范围 */
    mainBusiness?: string;
    /** 联系人 */
    contacts?: string;
    /** 联系电话 */
    contactPhoneNumber?: string;
    /** 联系邮箱 */
    contactEmail?: string;
    cooperationStatus?: EnumEnterpriseCooperationStatus;
    signStatus?: EnumEnterpriseCooperationSignStatus;
    /** 合作协议 */
    cooperationAgreementUrl?: string;
    /** 账号 */
    userName?: string;
    /** 密码(选填 填了就改不填就不改) */
    password?: string;
    /** 操作密码(选填 填了就改不填就不改) */
    operatorPassword?: string;
    /** Id */
    id?: string;
  }
  interface SavePersonalUserBankCardCommand {
    /** 灵工Id */
    enterpriseEmployeeId?: string;
@@ -7514,6 +7875,7 @@
    /** 名称 */
    name?: string;
    userType?: EnumUserType;
    enterpriseType?: EnumEnterpriseType;
    clientType?: EnumClientType;
    /** 最低级别 */
    minLevel?: number;
@@ -7552,6 +7914,10 @@
  }
  interface SaveTaskInfoCommand {
    /** 供应商Id */
    supplierEnterpriseId?: string;
    /** 需求人数 */
    needPeopleNumber?: number;
    /** 任务名称 */
    name: string;
    billingMethod: EnumBillingMethod;
@@ -7725,6 +8091,14 @@
    /** 标签 */
    label?: string;
    data?: GetEnterpriseWalletAccessSelectQueryOption;
  }
  interface SelectOptionGuidGetSupplierEnterpriseSelectQueryOption {
    /** 值 */
    value?: string;
    /** 标签 */
    label?: string;
    data?: GetSupplierEnterpriseSelectQueryOption;
  }
  interface SelectOptionGuidGetTaskSelectQueryOption {
@@ -7926,6 +8300,7 @@
    verifyCode?: string;
    type?: EnumUserType;
    clientType?: EnumClientType;
    enterpriseType?: EnumEnterpriseType;
  }
  interface StopElectronSignCommand {
@@ -8749,5 +9124,6 @@
    /** 用户登录凭证 */
    code: string;
    type?: EnumUserType;
    enterpriseType?: EnumEnterpriseType;
  }
}
src/store/modules/user.ts
@@ -77,6 +77,7 @@
          // password: md5Encrypt(params.password),
          type: AppLocalConfig.userType,
          clientType: AppLocalConfig.clientType,
          enterpriseType: AppLocalConfig.enterpriseType,
        },
        {
          showLoading: false,
src/views/CustomerManage/CustomerManage.vue
@@ -3,6 +3,24 @@
    <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"
@@ -14,15 +32,14 @@
          </QueryFilterItem>
        </template>
        <template #btn>
          <el-button
            @click="goAddOrEdit()"
            icon="Plus"
            type="primary"
            >新增客户</el-button
          >
          <el-button @click="goAddOrEdit()" icon="Plus" type="primary">新增客户</el-button>
        </template>
      </ProTableQueryFilterBar>
      <ProTableV2 v-bind="proTableProps" :columns="CustomerManageColumns" :operationBtns="operationBtns">
      <ProTableV2
        v-bind="proTableProps"
        :columns="CustomerManageColumns"
        :operationBtns="operationBtns"
      >
      </ProTableV2>
    </AppContainer>
  </LoadingLayout>
@@ -31,7 +48,7 @@
<script setup lang="ts">
import {
  ProTableQueryFilterBar,
  OperationBtnType,
  FieldRadio,
  ProTableV2,
  SearchInput,
  LoadingLayout,
@@ -39,10 +56,14 @@
  QueryFilterItem,
  useTable,
  useFormDialog,
  defineOperationBtns
  defineOperationBtns,
} from '@bole-core/components';
import * as taskServices from '@/services/api/task';
import * as enterpriseServices from '@/services/api/enterprise';
import {CustomerManageColumns} from './constants';
import {
  EnumEnterpriseCooperationStatusText,
  EnumEnterpriseCooperationSignStatusText,
} from '@/constants';
defineOptions({
  name: 'CustomerManage',
@@ -67,7 +88,7 @@
      onClick: (role) => goAddOrEdit(role),
    },
  },
])
]);
const BaseState = {
  loading: true,
@@ -99,16 +120,18 @@
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetTaskInfosQuery = {
      let params: API.GetPartyAEnterprisesQuery = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        keywords: extraParamState.keywords,
        cooperationStatus: extraParamState.cooperationStatus,
        signStatus: extraParamState.signStatus,
      };
      let res = await taskServices.getTaskInfos(params, {
      let res = await enterpriseServices.getPartyAEnterprises(params, {
        showLoading: !state.loading,
      });
      return res;
@@ -117,14 +140,21 @@
  {
    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 },
    },
  }
);
const router=useRouter();
function goAddOrEdit(row?: API.GetTaskInfosQueryResultItem) {
function goAddOrEdit(row?: API.GetPartyAEnterprisesQueryResultItem) {
  router.push({
    name: 'AddOrEditCustomer',
    params: {
@@ -133,7 +163,7 @@
  });
}
function goDetail(row: API.GetTaskInfosQueryResultItem) {
function goDetail(row: API.GetPartyAEnterprisesQueryResultItem) {
  router.push({
    name: 'CustomerDetail',
    params: {
src/views/CustomerManage/components/AddOrEditCustomerView.vue
@@ -50,87 +50,54 @@
              </ProFormItemV2>
            </ProFormColItem>
            <ProFormColItem :span="8">
              <ProFormItemV2
                label="注册资本:"
                prop="societyCreditCode"
                :check-rules="[{ message: '请输入注册资本', type: 'societyCreditCode' }]"
              >
                <ProFormText v-model.trim="form.societyCreditCode" placeholder="请输入注册资本" />
              <ProFormItemV2 label="注册资本:" prop="registeredCapital">
                <ProFormText v-model.trim="form.registeredCapital" placeholder="请输入注册资本" />
              </ProFormItemV2>
            </ProFormColItem>
            <ProFormColItem :span="8">
              <ProFormItemV2
                label="企业类型:"
                prop="societyCreditCode"
                :check-rules="[{ message: '请输入企业类型', type: 'societyCreditCode' }]"
              >
                <ProFormText v-model.trim="form.societyCreditCode" placeholder="请输入企业类型" />
              <ProFormItemV2 label="企业类型:" prop="enterpriseType">
                <ProFormText v-model.trim="form.enterpriseType" placeholder="请输入企业类型" />
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="8">
              <ProFormItemV2
                label="成立日期:"
                prop="date"
                :check-rules="[{ message: '请选择成立日期' }]"
              >
                <ProFormDatePicker v-model="form.date" type="date" placeholder="请选择成立日期" />
              </ProFormItemV2>
            </ProFormColItem>
            <ProFormColItem :span="8">
              <ProFormItemV2
                label="所在省份:"
                prop="areaList"
                :check-rules="[
                  {
                    type: 'array',
                    message: '请选择',
                  },
                ]"
              >
                <ProFromAddressSelectV2
                  v-model:areaList="form.areaList"
                  areaListPlaceholder="请选择"
                  :layer="AreaType.City"
              <ProFormItemV2 label="成立日期:" prop="establishmentDate">
                <ProFormDatePicker
                  v-model="form.establishmentDate"
                  type="date"
                  placeholder="请选择成立日期"
                />
              </ProFormItemV2>
            </ProFormColItem>
            <ProFormColItem :span="8">
              <ProFormItemV2
                label="所在城市:"
                label="所在地区:"
                prop="areaList"
                :check-rules="[
                  {
                    type: 'array',
                    message: '请选择',
                    message: '请选择所在地区',
                  },
                ]"
              >
                <ProFromAddressSelectV2
                  v-model:areaList="form.areaList"
                  areaListPlaceholder="请选择"
                  areaListPlaceholder="请选择所在地区"
                  :layer="AreaType.City"
                />
              </ProFormItemV2>
            </ProFormColItem>
            <ProFormColItem :span="8"> </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="8">
              <ProFormItemV2
                label="详细地址:"
                prop="societyCreditCode"
                :check-rules="[{ message: '请输入详细地址' }]"
              >
                <ProFormText v-model.trim="form.societyCreditCode" placeholder="请输入详细地址" />
              <ProFormItemV2 label="详细地址:" prop="address">
                <ProFormText v-model.trim="form.address" placeholder="请输入详细地址" />
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormItemV2
            label="经营范围:"
            prop="mainBusiness"
            :check-rules="[{ message: '请输入经营范围' }]"
          >
          <ProFormItemV2 label="经营范围:" prop="mainBusiness">
            <ProFormTextArea
              v-model="form.mainBusiness"
              maxlength="200"
@@ -185,13 +152,30 @@
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="8">
              <ProFormItemV2 label="合作状态:" prop="contacts"> </ProFormItemV2>
              <ProFormItemV2 label="合作状态:" prop="cooperationStatus">
                <ProFormRadio
                  v-model="form.cooperationStatus"
                  :value-enum="EnumEnterpriseCooperationStatusText"
                />
              </ProFormItemV2>
            </ProFormColItem>
            <ProFormColItem :span="8">
              <ProFormItemV2 label="签约状态:" prop="contacts"> </ProFormItemV2>
              <ProFormItemV2 label="签约状态:" prop="signStatus">
                <ProFormRadio
                  v-model="form.signStatus"
                  :value-enum="EnumEnterpriseCooperationSignStatusText"
                />
              </ProFormItemV2>
            </ProFormColItem>
            <ProFormColItem :span="8">
              <ProFormItemV2 label="合作协议:" prop="contacts"> </ProFormItemV2>
              <ProFormItemV2 label="合作协议:" prop="cooperationAgreementUrl">
                <ProFormUpload
                  v-model:file-url="form.cooperationAgreementUrl"
                  :limit="1"
                  :limitFileSize="10"
                  accept="jpg/jpeg,png,pdf"
                ></ProFormUpload>
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
        </ProForm>
@@ -218,17 +202,42 @@
                />
              </ProFormItemV2>
            </ProFormColItem>
            <ProFormColItem :span="8" v-if="!isEdit">
          </ProFormCol>
          <ProFormCol v-if="!isDetail">
            <ProFormColItem :span="8">
              <ProFormItemV2
                label="密码:"
                prop="password"
                :check-rules="[{ message: '请输入密码' }]"
                :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">
                <div class="password-input">
                  <ProFormText
                    v-if="!isEdit"
                    v-model.trim="form.operatorPassword"
                    :maxlength="30"
                    placeholder="请输入操作密码"
                  />
                  <el-button type="primary" v-else link @click="openResetOperatorPasswordDialog"
                    >修改密码</el-button
                  >
                </div>
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
@@ -239,6 +248,10 @@
        </ProForm>
      </ChunkCell>
    </AppScrollContainer>
    <ResetPasswordDialog v-bind="resetPasswordDialogProps"></ResetPasswordDialog>
    <ResetOperatorPasswordDialog
      v-bind="resetOperatorPasswordDialogProps"
    ></ResetOperatorPasswordDialog>
  </LoadingLayout>
</template>
@@ -250,20 +263,36 @@
  ProFormItemV2,
  ChunkCell,
  ProFormText,
  ProFormSelect,
  ProFormUpload,
  ProFormTextArea,
  ProFormCol,
  ProFormColItem,
  ProFormDatePicker,
  ProFormRadio,
  UploadUserFile,
  useFormDialog,
} from '@bole-core/components';
import { FormRules, FormInstance } from 'element-plus';
import { FormInstance } from 'element-plus';
import * as enterpriseServices from '@/services/api/enterprise';
import { useRouteView, useGlobalEventContext, GlobalEvent } from '@/hooks';
import * as userServices from '@/services/api/user';
import { useRouteView, useGlobalEventContext } from '@/hooks';
import _ from 'lodash';
import { validateFormList, filterCN, removeEmptyKeys } from '@/utils';
import { Message, BoleRegExp } from '@bole-core/core';
import {
  EnumEnterpriseCooperationStatusText,
  EnumEnterpriseCooperationSignStatusText,
} 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',
@@ -288,21 +317,29 @@
  legalPerson: '',
  legalIdentity: '',
  societyCreditCode: '',
  industryTypeCode: '',
  mainBusiness: '',
  registeredCapital: '',
  enterpriseType: '',
  establishmentDate: '',
  areaList: [] as string[],
  address: '',
  mainBusiness: '',
  contacts: '',
  contactPhoneNumber: '',
  contactEmail: '',
  cooperationStatus: EnumEnterpriseCooperationStatus.None,
  signStatus: EnumEnterpriseCooperationSignStatus.None,
  cooperationAgreementUrl: [] as UploadUserFile[],
  userName: '',
  password: '',
  date: '',
  operatorPassword: '',
  userId: '',
});
const { isLoading } = useQuery({
  queryKey: ['enterpriseServices/getEnterprise', id],
const { isLoading, refetch } = useQuery({
  queryKey: ['enterpriseServices/getPartyAEnterprise', id],
  queryFn: async () => {
    return await enterpriseServices.getEnterprise(
    return await enterpriseServices.getPartyAEnterprise(
      { id: id },
      {
        showLoading: false,
@@ -315,16 +352,90 @@
    form.legalPerson = data.legalPerson;
    form.legalIdentity = data.legalIdentity;
    form.societyCreditCode = data.societyCreditCode;
    form.industryTypeCode = data.industryTypeCode ?? '';
    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.areaList = [data.provinceCode, data.cityCode].filter(Boolean);
    form.userId = data.userId;
  },
  enabled: computed(() => !!id),
});
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>();
@@ -345,25 +456,32 @@
async function handleCreateOrEditFlexEnterprise() {
  try {
    let params: API.SaveEnterpriseCommand = {
    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],
      industryTypeCode: form.industryTypeCode,
      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,
    };
    if (isEdit) {
      params.id = id;
    }
    let res = await enterpriseServices.saveEnterprise(removeEmptyKeys(params));
    let res = await enterpriseServices.savePartyAEnterprise(removeEmptyKeys(params));
    if (res) {
      Message.successMessage(isEdit ? '编辑成功' : '发布成功');
      eventContext.emit(isEdit ? 'customerManage:edit' : 'customerManage:add');
@@ -374,7 +492,16 @@
function handleBack() {
  closeViewPush(route, {
    name: 'EnterpriseManageList',
    name: 'CustomerManage',
  });
}
</script>
<style lang="scss" scoped>
@use '@/style/common.scss' as *;
.password-input {
  display: flex;
  flex: 1;
  min-width: 0;
}
</style>
src/views/CustomerManage/components/ResetOperatorPasswordDialog.vue
New file
@@ -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>
src/views/CustomerManage/components/ResetPasswordDialog.vue
New file
@@ -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>
src/views/CustomerManage/constants/customerManage.ts
@@ -1,54 +1,54 @@
  import {defineColumns} from '@bole-core/components'
import { defineColumns } from '@bole-core/components';
  export const CustomerManageColumns = defineColumns([
    {
      id: '1',
      enCode: 'name',
    enCode: 'enterpriseName',
      name: '企业名称',
    },
    {
      id: '2',
      enCode: 'phoneNumber',
    enCode: 'societyCreditCode',
      name: '统一信用代码',
    },
    {
      id: '3',
      enCode: 'status',
    enCode: 'partyAEnterpriseId',
      name: '客户ID',
    },
    {
      id: '4',
      enCode: 'createdTime',
    enCode: 'legalPerson',
      name: '法人姓名',
    },
    {
      id: '5',
      enCode: 'createdTime',
    enCode: 'contacts',
      name: '联系人名称',
    },
    {
      id: '6',
      enCode: 'createdTime',
    enCode: 'contactPhoneNumber',
      name: '联系电话',
    },
    {
      id: '7',
      enCode: 'createdTime',
    enCode: 'provinceContent',
      name: '省份',
    },
    {
      id: '8',
      enCode: 'createdTime',
    enCode: 'cityContent',
      name: '城市',
    },
    {
      id: '9',
      enCode: 'createdTime',
    enCode: 'cooperationStatus',
      name: '合作状态',
    },
    {
      id: '10',
      enCode: 'createdTime',
    enCode: 'signStatus',
      name: '签约状态',
    },
  ])
]);
src/views/EmploymentManage/constants/columns.ts
@@ -13,66 +13,81 @@
  },
  {
    id: '3',
    enCode: 'supplierEnterpriseName',
    name: '所属客户',
  },
  {
    id: '4',
    enCode: 'supplierEnterpriseId',
    name: '客户ID',
  },
  {
    id: '5',
    enCode: 'billingMethod',
    name: '结算周期',
  },
  {
    id: '4',
    id: '6',
    enCode: 'serviceFee',
    name: '服务费金额',
  },
  {
    id: '5',
    id: '7',
    enCode: 'settlementCycle',
    name: '结算方式',
  },
  {
    id: '6',
    id: '8',
    enCode: 'genderLimit',
    name: '性别要求',
  },
  {
    id: '7',
    id: '9',
    enCode: 'needPeopleNumber',
    name: '需求人数',
  },
  {
    id: '10',
    enCode: 'userCount',
    name: '报名人数',
  },
  {
    id: '8',
    id: '11',
    enCode: 'applyBeginTime',
    name: '报名开始',
  },
  {
    id: '9',
    id: '12',
    enCode: 'applyEndTime',
    name: '报名结束',
  },
  {
    id: '10',
    id: '13',
    enCode: 'applyStatus',
    name: '报名状态',
  },
  {
    id: '11',
    id: '14',
    enCode: 'status',
    name: '任务状态',
  },
  {
    id: '12',
    id: '15',
    enCode: 'createdTime',
    name: '发布日期',
  },
  {
    id: '13',
    id: '16',
    enCode: 'beginTime',
    name: '任务开始日期',
  },
  {
    id: '14',
    id: '17',
    enCode: 'endTime',
    name: '任务结束日期',
  },
  {
    id: '15',
    id: '18',
    enCode: 'releaseStatus',
    name: '发布状态',
  },
src/views/FinanceManage/components/DistributionDetailView.vue
@@ -63,6 +63,7 @@
    columnsRenderProps: {
      amount: { type: 'money' },
      settlementStatus: { type: 'enum', valueEnum: EnumTaskSettlementStatusText },
      settlementAccess: { type: 'enum', valueEnum: EnumEnterpriseWalletAccessText },
      settlementTime: { type: 'date' },
    },
  }
src/views/FinanceManage/constants/columns.ts
@@ -13,31 +13,46 @@
  },
  {
    id: '3',
    enCode: 'settlementOrderName',
    name: '结算单名称',
    enCode: 'taskCode',
    name: '任务单号',
  },
  {
    id: '4',
    enCode: 'receiveName',
    name: '姓名',
    enCode: 'settlementCode',
    name: '结算单号',
  },
  {
    id: '5',
    enCode: 'receiveAccount',
    name: '手机号',
    enCode: 'receiveName',
    name: '姓名',
  },
  // {
  //   id: '3',
  //   enCode: 'settlementOrderName',
  //   name: '结算单名称',
  // },
  {
    id: '6',
    enCode: 'settlementAccess',
    name: '结算方式',
  },
  {
    id: '7',
    enCode: 'receiveAccount',
    name: '结算账户',
  },
  {
    id: '8',
    enCode: 'amount',
    name: '结算金额',
  },
  {
    id: '7',
    id: '9',
    enCode: 'settlementStatus',
    name: '结算状态',
  },
  {
    id: '8',
    id: '10',
    enCode: 'settlementTime',
    name: '结算日期',
  },
src/views/ServiceChargeManage/ServiceChargeDetail.vue
@@ -61,7 +61,7 @@
            </QueryFilterItem>
          </template>
          <template #btn v-if="isSettlement">
            <BlFileUpload
            <!-- <BlFileUpload
              v-model:file-url="form.settlementUrl"
              ref="uploadRef"
              :showTip="false"
@@ -73,7 +73,7 @@
              accept="xlsx,xls"
            >
              <el-button text type="primary" class="pro-table-operation-btn">导入</el-button>
            </BlFileUpload>
            </BlFileUpload> -->
            <el-button type="primary" link @click="handleExport()">导出</el-button>
          </template>
        </ProTableQueryFilterBar>
@@ -90,7 +90,7 @@
        </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)
@@ -99,9 +99,9 @@
            type="primary"
            @click="handleSubmit()"
            >结算申请</el-button
          >
          > -->
          <el-button
            v-if="isSettlement && form.auditStatus === EnumTaskSettlementAuditStatus.Pass"
            v-if="isSettlement"
            class="chuck-add-or-edit-actions"
            type="primary"
            @click="handleSubmit()"
@@ -112,6 +112,7 @@
    </AppScrollContainer>
    <EditAccountInfoDialog v-bind="dialogProps"></EditAccountInfoDialog>
    <SettleDetailDialog v-bind="dialogSettleProps" />
    <ResettleEditDialog v-bind="dialogResettleProps" />
  </LoadingLayout>
</template>
<script setup lang="ts">
@@ -144,6 +145,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 {
@@ -172,7 +174,27 @@
      onClick: (role) => openDialog(role),
    },
    extraProps: {
      hide: () => !isSettlement.value,
      hide: (row: API.GetSettlementTaskUsersQueryResultItem) =>
        !(
          form.settlementStatus === EnumTaskSettlementStatus.Fail ||
          form.settlementStatus === EnumTaskSettlementStatus.Part
        ),
    },
  },
  {
    data: {
      enCode: 'editBtn',
      name: '重新结算',
    },
    emits: {
      onClick: (role) => againSureTaskSettlementOrderRoster(role),
    },
    extraProps: {
      hide: (row: API.GetSettlementTaskUsersQueryResultItem) =>
        !(
          form.settlementStatus === EnumTaskSettlementStatus.Fail ||
          form.settlementStatus === EnumTaskSettlementStatus.Part
        ),
    },
  },
]);
@@ -199,6 +221,8 @@
  auditStatus: '' as any as EnumTaskSettlementAuditStatus,
  timeoutServiceFee: 0,
  settlementStatus: '' as any as EnumTaskSettlementStatus,
});
const BaseState = {
@@ -234,6 +258,7 @@
      form.settlementAccess = res?.detail?.settlementAccess;
      form.auditStatus = res?.detail?.auditStatus;
      form.timeoutServiceFee = res?.detail?.timeoutServiceFee ?? 0;
      form.settlementStatus = res?.detail?.settlementStatus;
      // form.settlementOrderName = setOssFileName(res?.detail?.settlementOrderName);
      // form.settlementOrderTime = res?.detail?.settlementOrderTime ?? '';
    }
@@ -337,6 +362,7 @@
function openDialog(row?: API.GetSettlementTaskUsersQueryResultItem) {
  if (row) {
    if (isSettlement) {
    handleEdit({
      id: row?.id,
      settlementAmount: row?.settlementAmount ?? null,
@@ -353,6 +379,16 @@
      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 ?? '',
      });
    }
  }
}
@@ -496,6 +532,54 @@
  { 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('操作成功');
      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('操作成功');
      getList(paginationState.pageIndex);
    }
  } catch (error) {}
}
function handleBack() {
  closeViewPush(route, {
    name: 'ServiceChargeManageList',
src/views/ServiceChargeManage/ServiceChargeManage.vue
@@ -47,7 +47,7 @@
        <template #btn>
          <!-- <el-button type="primary" link @click="handleDownloadTemplate()">结算单模板</el-button> -->
          <!-- <el-button type="primary" @click="handleAdd()">上传结算单</el-button> -->
          <!-- <el-button type="primary" @click="handleDownloadTemplate()">导出</el-button> -->
          <el-button type="primary" @click="handleDownloadTemplate()">导出</el-button>
        </template>
      </ProTableQueryFilterBar>
      <ProTableV2
@@ -119,6 +119,7 @@
  EnumTaskCheckReceiveStatusText,
  EnumTaskCheckReceiveStatusTextForFilter,
  EnumTaskCheckReceiveStatus,
  EnumEnterpriseWalletAccessText,
} from '@/constants';
import { downloadFileByUrl, format, setOssFileName } from '@/utils';
import * as taskServices from '@/services/api/task';
@@ -167,10 +168,7 @@
    },
    extraProps: {
      hide: (role: API.GetSettlementTasksQueryResultItem) =>
        !(
          role.settlementStatus === EnumTaskSettlementStatus.Wait &&
          role.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed
        ),
        role.settlementStatus !== EnumTaskSettlementStatus.Wait,
    },
  },
  {
@@ -183,10 +181,7 @@
    },
    extraProps: {
      hide: (role: API.GetSettlementTasksQueryResultItem) =>
        !(
          role.settlementStatus === EnumTaskSettlementStatus.InProcess &&
          role.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed
        ),
        role.settlementStatus !== EnumTaskSettlementStatus.InProcess,
    },
  },
  // {
@@ -294,6 +289,7 @@
      settlementStatus: { type: 'enum', valueEnum: EnumTaskSettlementStatusText },
      checkReceiveStatus: { type: 'enum', valueEnum: EnumTaskCheckReceiveStatusText },
      auditStatus: { type: 'enum', valueEnum: EnumTaskSettlementAuditStatusText },
      settlementAccess: { type: 'enum', valueEnum: EnumEnterpriseWalletAccessText },
      actualSettlementAmount: { type: 'money' },
      settlementAmount: { type: 'money' },
      settlementTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
src/views/ServiceChargeManage/components/ResettleEditDialog.vue
New file
@@ -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>
src/views/ServiceChargeManage/constants/columns.ts
@@ -22,15 +22,25 @@
  //   name: '结算单状态',
  // },
  {
    id: '5',
    enCode: 'settlementOrderName',
    name: '结算单名称',
    id: '4',
    enCode: 'settlementCode',
    name: '结算单号',
  },
  {
    id: '6',
    enCode: 'settlementOrderTime',
    name: '上传时间',
    id: '5',
    enCode: 'settlementAccess',
    name: '结算方式',
  },
  // {
  //   id: '5',
  //   enCode: 'settlementOrderName',
  //   name: '结算单名称',
  // },
  // {
  //   id: '6',
  //   enCode: 'settlementOrderTime',
  //   name: '上传时间',
  // },
  {
    id: '7',
    enCode: 'actualSettlementAmount',
@@ -41,11 +51,11 @@
    enCode: 'settlementAmount',
    name: '结算金额',
  },
  {
    id: '9',
    enCode: 'auditStatus',
    name: '审核状态',
  },
  // {
  //   id: '9',
  //   enCode: 'auditStatus',
  //   name: '审核状态',
  // },
  {
    id: '10',
    enCode: 'settlementStatus',
@@ -63,6 +73,11 @@
  },
  {
    id: '13',
    enCode: 'operator',
    name: '操作人',
  },
  {
    id: '14',
    enCode: 'settlementRemark',
    name: '备注',
  },
@@ -107,22 +122,22 @@
  {
    id: '7-1',
    enCode: 'serviceFee',
    name: '服务费',
    name: '服务费(元)',
  },
  {
    id: '7-2',
    enCode: 'timeoutHours',
    name: '超时',
    name: '超时(小时)',
  },
  {
    id: '7-3',
    enCode: 'timeoutFee',
    name: '超时费用',
    name: '超时费用(元)',
  },
  {
    id: '7-4',
    enCode: 'otherFee',
    name: '其他费用',
    name: '其他费用(元)',
  },
  {
    id: '8',
src/views/UserManage/UserManageList.vue
@@ -90,18 +90,18 @@
      onClick: (role) => openResetPasswordDialog(role),
    },
  },
  {
    data: {
      enCode: 'resetOperatorPasswordBtn',
      name: '重置操作密码',
    },
    props: {
      type: 'danger',
    },
    emits: {
      onClick: (role) => openResetOperatorPasswordDialog(role),
    },
  },
  // {
  //   data: {
  //     enCode: 'resetOperatorPasswordBtn',
  //     name: '重置操作密码',
  //   },
  //   props: {
  //     type: 'danger',
  //   },
  //   emits: {
  //     onClick: (role) => openResetOperatorPasswordDialog(role),
  //   },
  // },
]);
const router = useRouter();
src/views/UserManage/components/AddOrEditUserDialog.vue
@@ -28,7 +28,7 @@
      >
        <ProFormText placeholder="请输入密码" v-model.trim="innerForm.password"></ProFormText>
      </ProFormItemV2>
      <ProFormItemV2
      <!-- <ProFormItemV2
        v-if="!isEdit"
        label="操作密码"
        prop="operatorPassword"
@@ -44,7 +44,7 @@
          placeholder="请输入操作密码"
          v-model.trim="innerForm.operatorPassword"
        ></ProFormText>
      </ProFormItemV2>
      </ProFormItemV2> -->
      <ProFormItemV2 label="角色" prop="roleIds" :check-rules="[{ message: '请选择角色' }]">
        <ProFormCheckbox
          v-model="innerForm.roleIds"