wupengfei
2025-11-12 4be53daa8eda7c2577a101f28c97f8068b71175c
feat: 1.3.0.2
13个文件已修改
1个文件已添加
707 ■■■■■ 已修改文件
.eslintrc-auto-import.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
auto-imports.d.ts 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/apiEnum.ts 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/enterpriseEmployee.ts 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/useUser.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/enterpriseEmployee.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/index.ts 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FlexJobManage/FlexJobContractManage.vue 159 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FlexJobManage/FlexJobManage.vue 241 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FlexJobManage/components/StaffInfoDialog.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FlexJobManage/constants/columns.ts 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FlexJobManage/hooks/index.ts 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Permission/RoleManage.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.eslintrc-auto-import.json
@@ -39,6 +39,8 @@
    "EnumEnterpriseCooperationWalletTransactionStatusTextForConfirm": true,
    "EnumEnterpriseCostStatus": true,
    "EnumEnterpriseCostType": true,
    "EnumEnterpriseEmployeeSource": true,
    "EnumEnterpriseEmployeeSourceText": true,
    "EnumEnterpriseRealMethod": true,
    "EnumEnterpriseType": true,
    "EnumEnterpriseTypeText": true,
@@ -158,6 +160,7 @@
    "GlobalEventListener": true,
    "IdentityCodeEnum": true,
    "ImportEnterpriseEmployeesTempPath": true,
    "ImportFlexJobTempPath": true,
    "InjectionKey": true,
    "MaybeRef": true,
    "MaybeRefOrGetter": true,
auto-imports.d.ts
@@ -42,6 +42,8 @@
  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']
@@ -161,6 +163,7 @@
  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 MenuSvgIconMap: typeof import('./src/constants/menu')['MenuSvgIconMap']
  const ModuleColumns: typeof import('./src/constants/module')['ModuleColumns']
  const MyRegExp: typeof import('./src/constants/regExp')['MyRegExp']
@@ -301,7 +304,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, EnumEnterpriseCooperationSignStatus, EnumEnterpriseCooperationStatus, EnumEnterpriseCooperationWalletTransactionStatus, 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, GetSettlementTasksQuerySupplierPaymentStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus, EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumConsoleLogAccess, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumElectronSignVerifyType, EnumEnterpriseCooperationSignStatus, EnumEnterpriseCooperationStatus, EnumEnterpriseCooperationWalletTransactionStatus, 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, GetSettlementTasksQuerySupplierPaymentStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus } from './src/constants/apiEnum'
  export type { EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumConsoleLogAccess, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumElectronSignVerifyType, EnumEnterpriseCooperationSignStatus, EnumEnterpriseCooperationStatus, EnumEnterpriseCooperationWalletTransactionStatus, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseEmployeeSource, 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, GetSettlementTasksQuerySupplierPaymentStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus, EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumConsoleLogAccess, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumElectronSignVerifyType, EnumEnterpriseCooperationSignStatus, EnumEnterpriseCooperationStatus, EnumEnterpriseCooperationWalletTransactionStatus, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseEmployeeSource, 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, 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'
@@ -372,6 +375,8 @@
    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']>
@@ -484,6 +489,7 @@
    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 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']>
src/constants/apiEnum.ts
@@ -143,6 +143,14 @@
  ElectronSign = 20,
}
/** 灵工来源 */
export enum EnumEnterpriseEmployeeSource {
  /**内部 */
  Internal = 10,
  /**外部 */
  External = 20,
}
/** 企业实名方式 */
export enum EnumEnterpriseRealMethod {
  /**企业三要素 */
src/constants/enterpriseEmployee.ts
@@ -1,4 +1,8 @@
import { EnumTaskUserHireStatus, EnumTaskUserSignContractStatus,EnumGetArrangeTaskUsersQueryApplyStatus } from './apiEnum';
import {
  EnumTaskUserHireStatus,
  EnumTaskUserSignContractStatus,
  EnumGetArrangeTaskUsersQueryApplyStatus,
} from './apiEnum';
export const EnumTaskUserHireStatusText = {
  [EnumTaskUserHireStatus.Wait]: '待录用',
@@ -20,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]: '外部',
};
src/hooks/useUser.ts
@@ -23,7 +23,7 @@
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(
        {
src/services/api/enterpriseEmployee.ts
@@ -2,6 +2,21 @@
// @ts-ignore
import { request } from '@/utils/request';
/** 添加灵工信息 POST /api/user/enterpriseEmployee/addEnterpriseEmployee */
export async function addEnterpriseEmployee(
  body: API.AddEnterpriseEmployeeCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/enterpriseEmployee/addEnterpriseEmployee', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 企业批量签约合同 POST /api/user/enterpriseEmployee/batchEnterpriseSignContract */
export async function batchEnterpriseSignContract(
  body: API.BatchEnterpriseSignContractCommand,
@@ -176,6 +191,21 @@
  );
}
/** 修复1.3.0.2版本灵工数据 POST /api/user/enterpriseEmployee/repairEnterpriseEmployee_1_3_0_2 */
export async function repairEnterpriseEmployee1302(
  body: API.RepairEnterpriseEmployee1302Command,
  options?: API.RequestConfig
) {
  return request<boolean>('/api/user/enterpriseEmployee/repairEnterpriseEmployee_1_3_0_2', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 发送邀请签约短信 POST /api/user/enterpriseEmployee/sendInviteElectronSignSms */
export async function sendInviteElectronSignSms(
  body: API.SendInviteElectronSignSmsCommand,
src/services/api/index.ts
@@ -9,14 +9,16 @@
import * as task from './task';
import * as enterpriseWallet from './enterpriseWallet';
import * as ocrUtils from './ocrUtils';
import * as electronSign from './electronSign';
import * as resource from './resource';
import * as logRecords from './logRecords';
import * as dictionary from './dictionary';
import * as taskCheckReceive from './taskCheckReceive';
import * as electronSign from './electronSign';
import * as userResume from './userResume';
import * as auth from './auth';
import * as taskUser from './taskUser';
import * as eventUtils from './eventUtils';
import * as enterpriseCooperationWallet from './enterpriseCooperationWallet';
import * as codeUrl from './codeUrl';
import * as syncDatabase from './syncDatabase';
import * as menu from './menu';
@@ -24,8 +26,6 @@
import * as userWallet from './userWallet';
import * as fileUtils from './fileUtils';
import * as settings from './settings';
import * as eventUtils from './eventUtils';
import * as enterpriseCooperationWallet from './enterpriseCooperationWallet';
export default {
  enterprise,
  enterpriseEmployee,
@@ -34,14 +34,16 @@
  task,
  enterpriseWallet,
  ocrUtils,
  electronSign,
  resource,
  logRecords,
  dictionary,
  taskCheckReceive,
  electronSign,
  userResume,
  auth,
  taskUser,
  eventUtils,
  enterpriseCooperationWallet,
  codeUrl,
  syncDatabase,
  menu,
@@ -49,6 +51,4 @@
  userWallet,
  fileUtils,
  settings,
  eventUtils,
  enterpriseCooperationWallet,
};
src/services/api/typings.d.ts
@@ -3,6 +3,28 @@
    [key: string]: any;
  }
  interface AddEnterpriseEmployeeCommand {
    /** 姓名 */
    name: string;
    /** 身份证号 */
    identity: string;
    /** 手机号 */
    contactPhoneNumber: string;
    gender?: EnumUserGender;
    /** 年龄 */
    age?: number;
    /** 身份证人像面 */
    identityImg?: string;
    /** 身份证国徽面 */
    identityBackImg?: string;
    /** 电子合同 */
    contractUrl?: string;
    /** 协议起始时间 */
    contractBegin?: string;
    /** 协议终止时间 */
    contractEnd?: string;
  }
  interface AgainSureTaskSettlementOrderRosterCommand {
    /** 名单Id */
    id?: string;
@@ -200,6 +222,8 @@
  interface APIgetMenusParams {
    /** 用户类型 */
    userType?: EnumUserType;
    /** 企业类型 */
    enterpriseType?: EnumEnterpriseType;
    /** 客户端类型 */
    clientType?: EnumClientType;
    /** 角色Id */
@@ -646,6 +670,8 @@
  }
  interface EditEnterpriseEmployeeCommand {
    /** Id */
    id?: string;
    /** 姓名 */
    name: string;
    /** 身份证号 */
@@ -659,8 +685,12 @@
    identityImg?: string;
    /** 身份证国徽面 */
    identityBackImg?: string;
    /** Id */
    id?: string;
    /** 电子合同 */
    contractUrl?: string;
    /** 协议起始时间 */
    contractBegin?: string;
    /** 协议终止时间 */
    contractEnd?: string;
  }
  interface EditTaskSettlementOrderRosterCommand {
@@ -880,6 +910,13 @@
    SMS = 10,
    /**电子签 */
    ElectronSign = 20,
  }
  enum EnumEnterpriseEmployeeSource {
    /**内部 */
    Internal = 10,
    /**外部 */
    External = 20,
  }
  enum EnumEnterpriseRealMethod {
@@ -4847,8 +4884,13 @@
    /** 签约时间-最晚时间 */
    signContractTimeEnd?: string;
    hireStatus?: EnumTaskUserHireStatus;
    /** 实名时间-最早时间 */
    userRealTimeStart?: string;
    /** 实名时间-最晚时间 */
    userRealTimeEnd?: string;
    /** 是否实名 */
    isReal?: boolean;
    source?: EnumEnterpriseEmployeeSource;
    userSignContractStatus?: EnumTaskUserSignContractStatus;
    enterpriseSignContractStatus?: EnumTaskUserSignContractStatus;
    signContractStatus?: EnumGetEnterpriseEmployeesQuerySignContractStatus;
@@ -4907,6 +4949,14 @@
    enterpriseSignContractTime?: string;
    /** 电子合同 */
    contractUrl?: string;
    /** 协议起始时间 */
    contractBegin?: string;
    /** 协议终止时间 */
    contractEnd?: string;
    source?: EnumEnterpriseEmployeeSource;
    /** 来源名称 */
    sourceName?: string;
    /** 创建时间 */
    createdTime?: string;
  }
@@ -5464,6 +5514,7 @@
    /** 是否选择(用户角色授权) */
    isChecked?: boolean;
    userType?: EnumUserType;
    enterpriseType?: EnumEnterpriseType;
    clientType?: EnumClientType;
    /** 上级Id */
    parentId?: string;
@@ -6423,6 +6474,8 @@
    dataPower?: EnumRoleWebApiDataPower;
    /** 备注 */
    remark?: string;
    /** 用户数 */
    userCount?: number;
    /** 菜单Id */
    menuIds?: string[];
    /** 资源 */
@@ -7571,6 +7624,10 @@
    contactPhoneNumber?: string;
    /** 身份证号 */
    identity?: string;
    /** 协议起始时间 */
    contractBegin?: string;
    /** 协议终止时间 */
    contractEnd?: string;
  }
  interface ImportTaskSettlementOrderRostersCommand {
@@ -7922,6 +7979,8 @@
  type RepairContractTemplateValuePointBy1202Command = Record<string, any>;
  type RepairEnterpriseEmployee1302Command = Record<string, any>;
  type RepairTaskEstimatedServiceFee1301Command = Record<string, any>;
  interface ResendResourceCommand {
@@ -8155,6 +8214,7 @@
  interface SaveMenuCommand {
    userType?: EnumUserType;
    enterpriseType?: EnumEnterpriseType;
    clientType?: EnumClientType;
    /** 上级Id */
    parentId?: string;
src/views/FlexJobManage/FlexJobContractManage.vue
@@ -60,15 +60,30 @@
          <!-- <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 @click="handleBatchUnSign()" type="primary">批量解约</el-button>
          <el-button @click="handleSendShotMessage()" type="primary">短信发送</el-button>
          <el-button @click="handleBatchSign()" type="primary">批量签约</el-button>
          <el-button
            v-if="checkSubModuleItemShow('pageButton', 'batchUnSignBtn')"
            @click="handleBatchUnSign()"
            type="primary"
            >批量解约</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 @click="handleEnterpriseBatchSign()" type="primary">批量企业签约</el-button> -->
        </template>
      </ProTableQueryFilterBar>
      <ProTableV2
        v-bind="proTableProps"
        :columns="FlexJobContractManageColumns"
        :columns="column"
        :operationBtns="operationBtns"
        show-column-check
        ref="proTable"
@@ -78,7 +93,7 @@
      >
      </ProTableV2>
    </AppContainer>
    <StaffInfoDialog v-bind="dialogStaffInfoProps" />
    <!-- <StaffInfoDialog v-bind="dialogStaffInfoProps" /> -->
    <StaffDetailInfoDialog v-bind="dialogStaffDetailProps" />
    <BatchImportDialog
      v-bind="dialogBatchImportProps"
@@ -100,18 +115,15 @@
  QueryFilterItem,
  useTable,
  FieldDatePicker,
  FieldRadio,
  FieldSelect,
  defineOperationBtns,
  useFormDialog,
  UploadUserFile,
  XLSXUtils,
} from '@bole-core/components';
import { FlexJobContractManageColumns } from './constants';
import { EnumTaskUserHireStatusText, EnumTaskUserSignContractStatusText } from '@/constants';
import { Message } from '@bole-core/core';
import { convertApi2FormUrlOnlyOne, downloadFileByUrl, format } from '@/utils';
import StaffInfoDialog from './components/StaffInfoDialog.vue';
// import StaffInfoDialog from './components/StaffInfoDialog.vue';
import BatchImportDialog from './components/BatchImportDialog.vue';
import SendShotMessageDialog from './components/SendShotMessageDialog.vue';
import StaffDetailInfoDialog from './components/StaffDetailInfoDialog.vue';
@@ -119,36 +131,25 @@
import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee';
import { ModelValueType } from 'element-plus';
import _ from 'lodash';
import { getEnterpriseEmployeesHooks } from './hooks';
defineOptions({
  name: 'FlexJobContractManage',
});
const operationBtns = defineOperationBtns([
  // {
  //   data: {
  //     enCode: 'editBtn',
  //     name: '编辑',
  //   },
const operationBtnMap: Record<string, OperationBtnType> = {
  // editBtn: {
  //   emits: {
  //     onClick: (role) => openDialog(role),
  //   },
  // },
  {
    data: {
      enCode: 'detailBtn',
      name: '详情',
    },
  detailBtn: {
    emits: {
      onClick: (role: API.GetEnterpriseEmployeesQueryResultItem) =>
        handleStaffDetailEdit({ id: role.id, tabType: 'info' }),
    },
  },
  {
    data: {
      enCode: 'enterpriseSignBtn',
      name: '企业签约',
    },
  enterpriseSignBtn: {
    emits: {
      onClick: (role) => handleEnterpriseSign(role),
    },
@@ -156,15 +157,12 @@
      hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
        !(
          row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass &&
          row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait
          row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait &&
          row.source === EnumEnterpriseEmployeeSource.Internal
        ),
    },
  },
  {
    data: {
      enCode: 'inviteSignBtn',
      name: '邀请签约',
    },
  inviteSignBtn: {
    emits: {
      onClick: (role) => handleInviteSign(role),
    },
@@ -176,11 +174,7 @@
        ),
    },
  },
  {
    data: {
      enCode: 'unSignBtn',
      name: '解约',
    },
  unSignBtn: {
    emits: {
      onClick: (role) => handleUnSign(role),
    },
@@ -192,17 +186,17 @@
        ),
    },
  },
  // {
  //   data: {
  //     enCode: 'delBtn',
  //     name: '删除',
  //   },
  //   props: { type: 'danger' },
  //   emits: {
  //     onClick: (role) => handleDelete(role),
  //   },
  // },
]);
  delBtn: {
    props: { type: 'danger' },
    emits: {
      onClick: (role) => handleDelete(role),
    },
  },
};
const { checkSubModuleItemShow, column, operationBtns } = useAccess({
  operationBtnMap,
});
const router = useRouter();
@@ -217,75 +211,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>>();
src/views/FlexJobManage/FlexJobManage.vue
@@ -103,18 +103,32 @@
        <template #btn>
          <el-button
            v-if="checkSubModuleItemShow('pageButton', 'importBtn')"
            @click="handleDownloadTemplate()"
            @click="handleDownloadFlexJobTemplate()"
            type="primary"
            link
            >模板下载</el-button
          >
          <el-button
          <BlFileUpload
            v-if="checkSubModuleItemShow('pageButton', 'importBtn')"
            @click="handleBatchImportAdd()"
            type="primary"
            >批量导入</el-button
            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 text type="primary" class="pro-table-operation-btn">批量导入</el-button>
          </BlFileUpload>
          <el-button
            v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
            @click="handleStaffInfoAdd()"
            type="primary"
            >新建</el-button
          >
          <!-- <el-button
            v-if="checkSubModuleItemShow('pageButton', 'batchUnSignBtn')"
            @click="handleBatchUnSign()"
            type="primary"
@@ -137,7 +151,7 @@
            @click="handleEnterpriseBatchSign()"
            type="primary"
            >批量企业签约</el-button
          >
          > -->
        </template>
      </ProTableQueryFilterBar>
      <ProTableV2
@@ -179,6 +193,7 @@
  useFormDialog,
  UploadUserFile,
  XLSXUtils,
  BlFileUpload,
} from '@bole-core/components';
import { EnumTaskUserHireStatusText, EnumTaskUserSignContractStatusText } from '@/constants';
import { Message } from '@bole-core/core';
@@ -191,6 +206,7 @@
import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee';
import { ModelValueType } from 'element-plus';
import _ from 'lodash';
import { getEnterpriseEmployeesHooks } from './hooks';
defineOptions({
  name: 'FlexJobManageList',
@@ -208,42 +224,42 @@
        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.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
        ),
    },
  },
  // 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.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({
@@ -254,6 +270,7 @@
const BaseState = {
  loading: true,
  flexjobUrl: [] as UploadUserFile[],
};
const state = reactive({ ...BaseState });
@@ -263,75 +280,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>>();
@@ -354,7 +304,7 @@
  handleAdd: handleStaffInfoAdd,
  editForm: staffInfoEditForm,
} = useFormDialog({
  onConfirm: handleAddOrEdit,
  onConfirm: addEnterpriseEmployee,
  defaultFormParams: {
    id: '',
    name: '',
@@ -368,6 +318,7 @@
    regiterTime: '',
    userRealTime: '',
    userSignContractTime: '',
    contractTime: [] as unknown as ModelValueType,
    isDetail: false,
  },
});
@@ -391,11 +342,35 @@
      userRealTime: row.userRealTime ?? '',
      userSignContractTime: row.userSignContractTime ?? '',
      isDetail: isDetail,
      contractTime: [row.contractBegin, row.contractEnd],
    });
  } catch (error) {}
}
async function handleAddOrEdit() {
async function addEnterpriseEmployee() {
  try {
    let params: API.AddEnterpriseEmployeeCommand = {
      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 ?? '',
      contractUrl: staffInfoEditForm.contractUrl[0]?.path ?? '',
      contractBegin: format(staffInfoEditForm.contractTime[0], 'YYYY-MM-DD 00:00:00'),
      contractEnd: format(staffInfoEditForm.contractTime[1], 'YYYY-MM-DD 23:59:59'),
    };
    let res = await enterpriseEmployeeServices.addEnterpriseEmployee(params);
    if (res) {
      Message.successMessage('操作成功');
      getList(paginationState.pageIndex);
    }
  } catch (error) {}
}
async function editEnterpriseEmployee() {
  try {
    let params: API.EditEnterpriseEmployeeCommand = {
      name: staffInfoEditForm.name,
@@ -497,6 +472,10 @@
function handleDownloadTemplate() {
  downloadFileByUrl(ImportEnterpriseEmployeesTempPath, '批量导入模板');
}
function handleDownloadFlexJobTemplate() {
  downloadFileByUrl(ImportFlexJobTempPath, '批量导入模板');
}
const {
@@ -661,4 +640,40 @@
    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[];
  }
}
</script>
src/views/FlexJobManage/components/StaffInfoDialog.vue
@@ -40,11 +40,11 @@
        <ProFormColItem :span="12">
          <ProFormItemV2
            label="协议时间:"
            prop="regiterTime"
            prop="contractTime"
            :check-rules="[{ message: '请选择协议时间', type: 'array' }]"
          >
            <ProFormDatePicker
              v-model="form.regiterTime"
              v-model="form.contractTime"
              type="daterange"
              range-separator="至"
              start-placeholder="起始日期"
@@ -136,7 +136,7 @@
</template>
<script setup lang="ts">
import { FormInstance } from 'element-plus';
import { FormInstance, ModelValueType } from 'element-plus';
import {
  ProDialog,
  ProForm,
@@ -174,6 +174,8 @@
  userRealTime: string;
  userSignContractTime: string;
  isDetail: boolean;
  contractTime: ModelValueType;
};
const visible = defineModel({ type: Boolean });
src/views/FlexJobManage/constants/columns.ts
@@ -82,66 +82,3 @@
    name: '灵工来源',
  },
]);
export const FlexJobContractManageColumns = defineColumns([
  {
    id: '1',
    enCode: 'name',
    name: '姓名',
  },
  {
    id: '2',
    enCode: 'identity',
    name: '身份证号',
  },
  {
    id: '3',
    enCode: 'gender',
    name: '性别',
  },
  {
    id: '5',
    enCode: 'age',
    name: '年龄',
  },
  {
    id: '6',
    enCode: 'contactPhoneNumber',
    name: '手机号',
  },
  {
    id: '9',
    enCode: 'userIsReal',
    name: '实名状态',
  },
  {
    id: '10',
    enCode: 'userRealTime',
    name: '实名时间',
  },
  {
    id: '11',
    enCode: 'a',
    name: '灵工来源',
  },
  {
    id: '12',
    enCode: 'userSignContractStatus',
    name: '灵工签约状态',
  },
  {
    id: '13',
    enCode: 'userSignContractTime',
    name: '签约时间',
  },
  {
    id: '14',
    enCode: 'enterpriseSignContractStatus',
    name: '企业签约状态',
  },
  {
    id: '15',
    enCode: 'enterpriseSignContractTime',
    name: '企业签约时间',
  },
]);
src/views/FlexJobManage/hooks/index.ts
New file
@@ -0,0 +1,88 @@
import { format } 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'),
          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);
        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' },
        contractBegin: { type: 'date' },
        contractEnd: { type: 'date' },
        source: { type: 'enum', valueEnum: EnumEnterpriseEmployeeSourceText },
      },
    }
  );
  return {
    getList,
    proTableProps,
    paginationState,
    extraParamState,
    reset,
  };
}
src/views/Permission/RoleManage.vue
@@ -52,6 +52,7 @@
import { EnumUserType } from '@/constants';
import DialogAuthorizeV2 from './components/dialogAuthorizeV2.vue';
import * as roleServices from '@/services/api/role';
import { useQueryClient } from '@tanstack/vue-query';
defineOptions({
  name: 'RoleManage',
@@ -169,6 +170,8 @@
  },
});
const queryClient = useQueryClient();
async function handleAddOrEdit() {
  try {
    const isEdit = editForm.id;
@@ -193,6 +196,7 @@
    if (res) {
      Message.successMessage('操作成功');
      getList(isEdit ? paginationState.pageIndex : 1);
      queryClient.invalidateQueries(['userServices/getUserInfoRoles']);
    }
  } catch (error) {}
}
@@ -207,6 +211,7 @@
    if (res) {
      Message.successMessage('操作成功');
      getList(paginationState.pageIndex);
      queryClient.invalidateQueries(['userServices/getUserInfoRoles']);
    }
  } catch (error) {}
}
@@ -221,6 +226,7 @@
    if (res) {
      Message.successMessage('操作成功');
      getList(paginationState.pageIndex);
      queryClient.invalidateQueries(['userServices/getUserInfoRoles']);
      return !!res;
    }
  } catch (error) {}