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