From 79345cf163eebdcea697282dfe88da23ab9e3478 Mon Sep 17 00:00:00 2001 From: quu Date: Fri, 9 May 2025 22:10:39 +0900 Subject: [PATCH] hrm --- src/api/hrm/interviewinitiation/index.ts | 48 ++ src/api/hrm/recruitmentrequest/index.ts | 53 +++ src/api/hrm/talentpool/index.ts | 59 +++ src/views/crm/contract/index.vue | 3 +- src/views/crm/contract/templateForm.vue | 4 +- .../InterviewInitiationForm.vue | 149 ++++++ src/views/hrm/interviewinitiation/index.vue | 286 ++++++++++++ .../RecruitmentRequestForm.vue | 201 +++++++++ src/views/hrm/recruitmentrequest/index.vue | 372 +++++++++++++++ src/views/hrm/talentpool/TalentPoolForm.vue | 216 +++++++++ src/views/hrm/talentpool/index.vue | 427 ++++++++++++++++++ 11 files changed, 1815 insertions(+), 3 deletions(-) create mode 100644 src/api/hrm/interviewinitiation/index.ts create mode 100644 src/api/hrm/recruitmentrequest/index.ts create mode 100644 src/api/hrm/talentpool/index.ts create mode 100644 src/views/hrm/interviewinitiation/InterviewInitiationForm.vue create mode 100644 src/views/hrm/interviewinitiation/index.vue create mode 100644 src/views/hrm/recruitmentrequest/RecruitmentRequestForm.vue create mode 100644 src/views/hrm/recruitmentrequest/index.vue create mode 100644 src/views/hrm/talentpool/TalentPoolForm.vue create mode 100644 src/views/hrm/talentpool/index.vue diff --git a/src/api/hrm/interviewinitiation/index.ts b/src/api/hrm/interviewinitiation/index.ts new file mode 100644 index 000000000..503540cf7 --- /dev/null +++ b/src/api/hrm/interviewinitiation/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +// 发起面试 VO +export interface InterviewInitiationVO { + id: number // 主键ID + recruitmentRequestId: number // 招聘Id + talentPoolId: number // 人才库ID(关联hrm_talent_pool) + processInstanceId: string // 工作流编号 + auditStatus: number // 审批状态 + interviewAddress: number // 面试地址 + interviewTime: Date // 面试通知时间 + interviewEmail: string // 面试通知邮箱 + status: number // 状态 + deptId: number // 部门ID +} + +// 发起面试 API +export const InterviewInitiationApi = { + // 查询发起面试分页 + getInterviewInitiationPage: async (params: any) => { + return await request.get({ url: `/hrm/interview-initiation/page`, params }) + }, + + // 查询发起面试详情 + getInterviewInitiation: async (id: number) => { + return await request.get({ url: `/hrm/interview-initiation/get?id=` + id }) + }, + + // 新增发起面试 + createInterviewInitiation: async (data: InterviewInitiationVO) => { + return await request.post({ url: `/hrm/interview-initiation/create`, data }) + }, + + // 修改发起面试 + updateInterviewInitiation: async (data: InterviewInitiationVO) => { + return await request.put({ url: `/hrm/interview-initiation/update`, data }) + }, + + // 删除发起面试 + deleteInterviewInitiation: async (id: number) => { + return await request.delete({ url: `/hrm/interview-initiation/delete?id=` + id }) + }, + + // 导出发起面试 Excel + exportInterviewInitiation: async (params) => { + return await request.download({ url: `/hrm/interview-initiation/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/hrm/recruitmentrequest/index.ts b/src/api/hrm/recruitmentrequest/index.ts new file mode 100644 index 000000000..0d1bb5ab9 --- /dev/null +++ b/src/api/hrm/recruitmentrequest/index.ts @@ -0,0 +1,53 @@ +import request from '@/config/axios' + +// 招聘需求申请 VO +export interface RecruitmentRequestVO { + id: number // 主键,自动递增 + requestType: number // 需求类型:新增需求、替换需求、储备需求 + requestDeptId: number // 所属部门 + processInstanceId: string // 工作流编号 + auditStatus: number // 审批状态 + postId: number // 岗位id + positionName: string // 需求岗位名称 + expectedOnboard: Date // 期望到岗日期 + requestedCount: number // 需求人数 + ageRange: string // 年龄范围,如:18-25,25-35,30-45 + monthlySalary: string // 薪资(月),如:4k-7k,5k-8k,10k-15k + minEducation: number // 最低学历:1=高中,2=大专,3=本科,4=硕士,5=博士 + workLocation: number // 工作地点 + maritalStatus: number // 婚姻状况:未婚、已婚、离异、丧偶 + experience: string // 从业经验 +} + +// 招聘需求申请 API +export const RecruitmentRequestApi = { + // 查询招聘需求申请分页 + getRecruitmentRequestPage: async (params: any) => { + return await request.get({ url: `/hrm/recruitment-request/page`, params }) + }, + + // 查询招聘需求申请详情 + getRecruitmentRequest: async (id: number) => { + return await request.get({ url: `/hrm/recruitment-request/get?id=` + id }) + }, + + // 新增招聘需求申请 + createRecruitmentRequest: async (data: RecruitmentRequestVO) => { + return await request.post({ url: `/hrm/recruitment-request/create`, data }) + }, + + // 修改招聘需求申请 + updateRecruitmentRequest: async (data: RecruitmentRequestVO) => { + return await request.put({ url: `/hrm/recruitment-request/update`, data }) + }, + + // 删除招聘需求申请 + deleteRecruitmentRequest: async (id: number) => { + return await request.delete({ url: `/hrm/recruitment-request/delete?id=` + id }) + }, + + // 导出招聘需求申请 Excel + exportRecruitmentRequest: async (params) => { + return await request.download({ url: `/hrm/recruitment-request/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/api/hrm/talentpool/index.ts b/src/api/hrm/talentpool/index.ts new file mode 100644 index 000000000..df1a0cc22 --- /dev/null +++ b/src/api/hrm/talentpool/index.ts @@ -0,0 +1,59 @@ +import request from '@/config/axios' + +// 人才库 VO +export interface TalentPoolVO { + id: number // 主键ID + recruitmentRequestId: number // 招聘需求ID + name: string // 姓名 + gender: string // 性别 + birthPlace: string // 籍贯 + age: number // 年龄 + email: string // 电子邮箱 + school: string // 学校 + major: string // 专业 + phone: string // 手机号 + birthday: Date // 出生日期 + postId: number // 岗位id + desiredPosition: string // 意向岗位名称 + desiredCity: string // 意向城市 + highestEducation: number // 最高学历(大专、本科、硕士、博士) + personalPhoto: string // 个人照片 + workCaseAttachment: string // 工作案例附件 + resumeAttachment: string // 简历附件 + isInternalRef: number // 是否内推(内部推荐、BOSS直聘、猎聘、智联招聘、脉脉、公众号) + maritalStatus: number // 婚育情况(未婚、已婚未育、已婚已育) + deptId: number // 部门ID +} + +// 人才库 API +export const TalentPoolApi = { + // 查询人才库分页 + getTalentPoolPage: async (params: any) => { + return await request.get({ url: `/hrm/talent-pool/page`, params }) + }, + + // 查询人才库详情 + getTalentPool: async (id: number) => { + return await request.get({ url: `/hrm/talent-pool/get?id=` + id }) + }, + + // 新增人才库 + createTalentPool: async (data: TalentPoolVO) => { + return await request.post({ url: `/hrm/talent-pool/create`, data }) + }, + + // 修改人才库 + updateTalentPool: async (data: TalentPoolVO) => { + return await request.put({ url: `/hrm/talent-pool/update`, data }) + }, + + // 删除人才库 + deleteTalentPool: async (id: number) => { + return await request.delete({ url: `/hrm/talent-pool/delete?id=` + id }) + }, + + // 导出人才库 Excel + exportTalentPool: async (params) => { + return await request.download({ url: `/hrm/talent-pool/export-excel`, params }) + } +} \ No newline at end of file diff --git a/src/views/crm/contract/index.vue b/src/views/crm/contract/index.vue index 4369a991d..7658d12f6 100644 --- a/src/views/crm/contract/index.vue +++ b/src/views/crm/contract/index.vue @@ -402,7 +402,8 @@ const handleCommand = (command: string, row: UserApi.UserVO) => { handleChange(row) break case 'handlePrint': - getPrintTemplate(row) + // getPrintTemplate(row) + onPrintContract(row) break case 'handleDelete': handleDelete(row.id) diff --git a/src/views/crm/contract/templateForm.vue b/src/views/crm/contract/templateForm.vue index 76366e5bd..02a82bfac 100644 --- a/src/views/crm/contract/templateForm.vue +++ b/src/views/crm/contract/templateForm.vue @@ -49,8 +49,8 @@ const formData = ref({ description: undefined, }) const formRules = reactive({ - name: [{ required: true, message: '合同名称不能为空', trigger: 'blur' }], - url: [{ required: true, message: '文件地址不能为空', trigger: 'blur' }], + // name: [{ required: true, message: '合同名称不能为空', trigger: 'blur' }], + // url: [{ required: true, message: '文件地址不能为空', trigger: 'blur' }], }) const formRef = ref() // 表单 Ref diff --git a/src/views/hrm/interviewinitiation/InterviewInitiationForm.vue b/src/views/hrm/interviewinitiation/InterviewInitiationForm.vue new file mode 100644 index 000000000..886927882 --- /dev/null +++ b/src/views/hrm/interviewinitiation/InterviewInitiationForm.vue @@ -0,0 +1,149 @@ + + \ No newline at end of file diff --git a/src/views/hrm/interviewinitiation/index.vue b/src/views/hrm/interviewinitiation/index.vue new file mode 100644 index 000000000..f4431074a --- /dev/null +++ b/src/views/hrm/interviewinitiation/index.vue @@ -0,0 +1,286 @@ + + + \ No newline at end of file diff --git a/src/views/hrm/recruitmentrequest/RecruitmentRequestForm.vue b/src/views/hrm/recruitmentrequest/RecruitmentRequestForm.vue new file mode 100644 index 000000000..05de714ca --- /dev/null +++ b/src/views/hrm/recruitmentrequest/RecruitmentRequestForm.vue @@ -0,0 +1,201 @@ + + \ No newline at end of file diff --git a/src/views/hrm/recruitmentrequest/index.vue b/src/views/hrm/recruitmentrequest/index.vue new file mode 100644 index 000000000..883a0b666 --- /dev/null +++ b/src/views/hrm/recruitmentrequest/index.vue @@ -0,0 +1,372 @@ + + + \ No newline at end of file diff --git a/src/views/hrm/talentpool/TalentPoolForm.vue b/src/views/hrm/talentpool/TalentPoolForm.vue new file mode 100644 index 000000000..47754c8c7 --- /dev/null +++ b/src/views/hrm/talentpool/TalentPoolForm.vue @@ -0,0 +1,216 @@ + + \ No newline at end of file diff --git a/src/views/hrm/talentpool/index.vue b/src/views/hrm/talentpool/index.vue new file mode 100644 index 000000000..196895b94 --- /dev/null +++ b/src/views/hrm/talentpool/index.vue @@ -0,0 +1,427 @@ + + + \ No newline at end of file