HRM 员工档案。入职申请 和转正申请
parent
a5bf4d80b3
commit
d986e37efc
|
|
@ -0,0 +1,51 @@
|
|||
import request from '@/config/axios'
|
||||
|
||||
// 转正申请 VO
|
||||
export interface FullMemberApplyVO {
|
||||
id: number // 主键,自动递增
|
||||
userId: number // 员工档案ID(关联hrm_user_infor)
|
||||
processInstanceId: string // 工作流编号
|
||||
auditStatus: number // 审批状态
|
||||
confirmationDate: Date // 转正日期
|
||||
isConfirmed: number // 是否转正(1:是,0:否)
|
||||
applicationDate: Date // 申请日期
|
||||
applicationNote: string // 转正申请说明
|
||||
workPerformanceScore: number // 工作业绩评分
|
||||
attendanceScore: number // 出勤情况评分
|
||||
teamworkScore: number // 团队协作评分
|
||||
abilityPerformanceScore: number // 能力表现评分
|
||||
eSignature: string // 本人签字
|
||||
}
|
||||
|
||||
// 转正申请 API
|
||||
export const FullMemberApplyApi = {
|
||||
// 查询转正申请分页
|
||||
getFullMemberApplyPage: async (params: any) => {
|
||||
return await request.get({ url: `/hrm/full-member-apply/page`, params })
|
||||
},
|
||||
|
||||
// 查询转正申请详情
|
||||
getFullMemberApply: async (id: number) => {
|
||||
return await request.get({ url: `/hrm/full-member-apply/get?id=` + id })
|
||||
},
|
||||
|
||||
// 新增转正申请
|
||||
createFullMemberApply: async (data: FullMemberApplyVO) => {
|
||||
return await request.post({ url: `/hrm/full-member-apply/create`, data })
|
||||
},
|
||||
|
||||
// 修改转正申请
|
||||
updateFullMemberApply: async (data: FullMemberApplyVO) => {
|
||||
return await request.put({ url: `/hrm/full-member-apply/update`, data })
|
||||
},
|
||||
|
||||
// 删除转正申请
|
||||
deleteFullMemberApply: async (id: number) => {
|
||||
return await request.delete({ url: `/hrm/full-member-apply/delete?id=` + id })
|
||||
},
|
||||
|
||||
// 导出转正申请 Excel
|
||||
exportFullMemberApply: async (params) => {
|
||||
return await request.download({ url: `/hrm/full-member-apply/export-excel`, params })
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
import request from '@/config/axios'
|
||||
|
||||
// 员工档案信息 VO
|
||||
export interface UserVO {
|
||||
id: number // 唯一主键
|
||||
acctId: number // 用户登录账号IDsys_user表
|
||||
userNo: string // 员工编号
|
||||
realName: string // 员工姓名
|
||||
phone: string // 手机号
|
||||
email: string // 邮箱
|
||||
employmentDate: Date // 入职日期
|
||||
regularizationDate: Date // 转正日期
|
||||
postId: number // 岗位Id
|
||||
postLevel: number // 职级
|
||||
gradeLevel: number // 档级
|
||||
employType: number // 聘用形式(全职、见习、实习、劳务、联创、其他)
|
||||
trialStartDate: Date // 试用开始日期
|
||||
trialEndDate: Date // 试用结束日期
|
||||
probationPeriod: number // 试用期限(月)
|
||||
contractStartDate: Date // 合同开始日期
|
||||
contractEndDate: Date // 合同结束日期
|
||||
contractTerm: number // 合同期限(年)
|
||||
gender: number // 性别(男、女、其他)
|
||||
age: string // 年龄
|
||||
resume: string // 简历附件
|
||||
workPhoto: string // 形象照
|
||||
idCardFaceSide: string // 身份证人像
|
||||
idCardNationalEmblemSide: string // 身份证国徽
|
||||
currentAddress: string // 现住址
|
||||
idCardNumber: string // 身份证号
|
||||
birthDate: Date // 出生日期
|
||||
issuingAuthority: string // 发证机关
|
||||
nation: number // 民族(56个民族)
|
||||
householdRegistrationScan: string // 户口扫描件
|
||||
householdType: number // 户籍类型(农村、城镇)
|
||||
householdAddress: string // 户籍地
|
||||
politicalStatus: number // 政治面貌(共青团员、中共预备党员、中共党员、群众、其他)
|
||||
maritalStatus: number // 婚姻状况(未婚、已婚未育、已婚已育)
|
||||
relationship1: number // 关系1(父母、夫妻、兄弟、姊妹、朋友、其他)
|
||||
contactName1: string // 联系人姓名1
|
||||
contactPhone1: string // 联系手机号1
|
||||
relationship2: number // 关系2(父母、夫妻、兄弟、姊妹、朋友、其他)
|
||||
contactName2: string // 联系人姓名2
|
||||
contactPhone2: string // 联系手机号2
|
||||
bankBranch: string // 工商银行开户支行
|
||||
salaryCardNumber: string // 工资卡卡号
|
||||
accountRelationship: number // 账户名与本人关系(父亲、母亲)
|
||||
pensionCardHolder: string // 敬老费银行卡户名
|
||||
pensionAccountNumber: string // 敬老费银行账号
|
||||
pensionBankBranch: string // 敬老费开户行网点
|
||||
insuranceStatus: number // 五险缴纳情况(未缴纳过、已缴纳过)
|
||||
oneInchPhoto: string // 1寸白底照(当未缴纳五险一金,需要上传)
|
||||
resignationCertScan: string // 离职证明扫描件
|
||||
highestEducation: string // 最高学历
|
||||
educationSystemType: number // 学制类型(全日制、非全日制)
|
||||
educationCertificateScan: string // 学历扫描件
|
||||
status: number // 状态
|
||||
deptId: number // 部门ID
|
||||
}
|
||||
|
||||
// 员工档案信息 API
|
||||
export const UserApi = {
|
||||
// 查询员工档案信息分页
|
||||
getUserPage: async (params: any) => {
|
||||
return await request.get({ url: `/hrm/user/page`, params })
|
||||
},
|
||||
|
||||
// 查询员工档案信息详情
|
||||
getUser: async (id: number) => {
|
||||
return await request.get({ url: `/hrm/user/get?id=` + id })
|
||||
},
|
||||
|
||||
// 新增员工档案信息
|
||||
createUser: async (data: UserVO) => {
|
||||
return await request.post({ url: `/hrm/user/create`, data })
|
||||
},
|
||||
|
||||
// 修改员工档案信息
|
||||
updateUser: async (data: UserVO) => {
|
||||
return await request.put({ url: `/hrm/user/update`, data })
|
||||
},
|
||||
|
||||
// 删除员工档案信息
|
||||
deleteUser: async (id: number) => {
|
||||
return await request.delete({ url: `/hrm/user/delete?id=` + id })
|
||||
},
|
||||
|
||||
// 导出员工档案信息 Excel
|
||||
exportUser: async (params) => {
|
||||
return await request.download({ url: `/hrm/user/export-excel`, params })
|
||||
},
|
||||
|
||||
// ==================== 子表(教育信息) ====================
|
||||
|
||||
// 获得教育信息列表
|
||||
getUserEducationInfoListByUserId: async (userId) => {
|
||||
return await request.get({ url: `/hrm/user/user-education-info/list-by-user-id?userId=` + userId })
|
||||
},
|
||||
|
||||
// ==================== 子表(工作经历信息) ====================
|
||||
|
||||
// 获得工作经历信息列表
|
||||
getUserWorkInfoListByUserId: async (userId) => {
|
||||
return await request.get({ url: `/hrm/user/user-work-info/list-by-user-id?userId=` + userId })
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
import request from '@/config/axios'
|
||||
|
||||
// 教育信息 VO
|
||||
export interface UserEducationInfoVO {
|
||||
id: number // 唯一主键
|
||||
userId: number // 员工档案ID(关联hrm_user_infor)
|
||||
education: number // 学历
|
||||
beginDate: Date // 入学日期
|
||||
graduationDate: Date // 毕业日期
|
||||
schoolName: string // 学校名称
|
||||
major: string // 专业名称
|
||||
}
|
||||
|
||||
// 教育信息 API
|
||||
export const UserEducationInfoApi = {
|
||||
// 查询教育信息分页
|
||||
getUserEducationInfoPage: async (params: any) => {
|
||||
return await request.get({ url: `/hrm/user-education-info/page`, params })
|
||||
},
|
||||
|
||||
// 查询教育信息详情
|
||||
getUserEducationInfo: async (id: number) => {
|
||||
return await request.get({ url: `/hrm/user-education-info/get?id=` + id })
|
||||
},
|
||||
|
||||
// 新增教育信息
|
||||
createUserEducationInfo: async (data: UserEducationInfoVO) => {
|
||||
return await request.post({ url: `/hrm/user-education-info/create`, data })
|
||||
},
|
||||
|
||||
// 修改教育信息
|
||||
updateUserEducationInfo: async (data: UserEducationInfoVO) => {
|
||||
return await request.put({ url: `/hrm/user-education-info/update`, data })
|
||||
},
|
||||
|
||||
// 删除教育信息
|
||||
deleteUserEducationInfo: async (id: number) => {
|
||||
return await request.delete({ url: `/hrm/user-education-info/delete?id=` + id })
|
||||
},
|
||||
|
||||
// 导出教育信息 Excel
|
||||
exportUserEducationInfo: async (params) => {
|
||||
return await request.download({ url: `/hrm/user-education-info/export-excel`, params })
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
import request from '@/config/axios'
|
||||
|
||||
// 入职申请 VO
|
||||
export interface UserOnboardingVO {
|
||||
id: number // 主键,自动递增
|
||||
talentId: number // 人才库id
|
||||
userId: number // 员工ID
|
||||
processInstanceId: string // 工作流编号
|
||||
auditStatus: number // 审批状态
|
||||
employType: number // 聘用形式(全职、见习、实习、劳务、劳动、联创、其他)
|
||||
eSignature: string // 员工签字
|
||||
submissionDate: Date // 提交日期
|
||||
}
|
||||
|
||||
// 入职申请 API
|
||||
export const UserOnboardingApi = {
|
||||
// 查询入职申请分页
|
||||
getUserOnboardingPage: async (params: any) => {
|
||||
return await request.get({ url: `/hrm/user-onboarding/page`, params })
|
||||
},
|
||||
|
||||
// 查询入职申请详情
|
||||
getUserOnboarding: async (id: number) => {
|
||||
return await request.get({ url: `/hrm/user-onboarding/get?id=` + id })
|
||||
},
|
||||
|
||||
// 新增入职申请
|
||||
createUserOnboarding: async (data: UserOnboardingVO) => {
|
||||
return await request.post({ url: `/hrm/user-onboarding/create`, data })
|
||||
},
|
||||
|
||||
// 修改入职申请
|
||||
updateUserOnboarding: async (data: UserOnboardingVO) => {
|
||||
return await request.put({ url: `/hrm/user-onboarding/update`, data })
|
||||
},
|
||||
|
||||
// 删除入职申请
|
||||
deleteUserOnboarding: async (id: number) => {
|
||||
return await request.delete({ url: `/hrm/user-onboarding/delete?id=` + id })
|
||||
},
|
||||
|
||||
// 导出入职申请 Excel
|
||||
exportUserOnboarding: async (params) => {
|
||||
return await request.download({ url: `/hrm/user-onboarding/export-excel`, params })
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
import request from '@/config/axios'
|
||||
|
||||
// 工作经历信息 VO
|
||||
export interface UserWorkInfoVO {
|
||||
id: number // 唯一主键
|
||||
userId: number // 员工档案ID(关联hrm_user_infor)
|
||||
companyName: string // 单位名称
|
||||
deptName: string // 部门名称
|
||||
postName: string // 职位名称
|
||||
startDate: Date // 开始日期
|
||||
endDate: Date // 离职日期
|
||||
monthlySalary: number // 待遇(元/月)
|
||||
}
|
||||
|
||||
// 工作经历信息 API
|
||||
export const UserWorkInfoApi = {
|
||||
// 查询工作经历信息分页
|
||||
getUserWorkInfoPage: async (params: any) => {
|
||||
return await request.get({ url: `/hrm/user-work-info/page`, params })
|
||||
},
|
||||
|
||||
// 查询工作经历信息详情
|
||||
getUserWorkInfo: async (id: number) => {
|
||||
return await request.get({ url: `/hrm/user-work-info/get?id=` + id })
|
||||
},
|
||||
|
||||
// 新增工作经历信息
|
||||
createUserWorkInfo: async (data: UserWorkInfoVO) => {
|
||||
return await request.post({ url: `/hrm/user-work-info/create`, data })
|
||||
},
|
||||
|
||||
// 修改工作经历信息
|
||||
updateUserWorkInfo: async (data: UserWorkInfoVO) => {
|
||||
return await request.put({ url: `/hrm/user-work-info/update`, data })
|
||||
},
|
||||
|
||||
// 删除工作经历信息
|
||||
deleteUserWorkInfo: async (id: number) => {
|
||||
return await request.delete({ url: `/hrm/user-work-info/delete?id=` + id })
|
||||
},
|
||||
|
||||
// 导出工作经历信息 Excel
|
||||
exportUserWorkInfo: async (params) => {
|
||||
return await request.download({ url: `/hrm/user-work-info/export-excel`, params })
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,175 @@
|
|||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
label-width="100px"
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-form-item label="员工档案ID(关联hrm_user_infor)" prop="userId">
|
||||
<el-input v-model="formData.userId" placeholder="请输入员工档案ID(关联hrm_user_infor)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工作流编号" prop="processInstanceId">
|
||||
<el-input v-model="formData.processInstanceId" placeholder="请输入工作流编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审批状态" prop="auditStatus">
|
||||
<el-radio-group v-model="formData.auditStatus">
|
||||
<el-radio value="1">请选择字典生成</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="转正日期" prop="confirmationDate">
|
||||
<el-date-picker
|
||||
v-model="formData.confirmationDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择转正日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否转正(1:是,0:否)" prop="isConfirmed">
|
||||
<el-select v-model="formData.isConfirmed" placeholder="请选择是否转正(1:是,0:否)">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="申请日期" prop="applicationDate">
|
||||
<el-date-picker
|
||||
v-model="formData.applicationDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择申请日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="转正申请说明" prop="applicationNote">
|
||||
<el-input v-model="formData.applicationNote" placeholder="请输入转正申请说明" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工作业绩评分" prop="workPerformanceScore">
|
||||
<el-input v-model="formData.workPerformanceScore" placeholder="请输入工作业绩评分" />
|
||||
</el-form-item>
|
||||
<el-form-item label="出勤情况评分" prop="attendanceScore">
|
||||
<el-input v-model="formData.attendanceScore" placeholder="请输入出勤情况评分" />
|
||||
</el-form-item>
|
||||
<el-form-item label="团队协作评分" prop="teamworkScore">
|
||||
<el-input v-model="formData.teamworkScore" placeholder="请输入团队协作评分" />
|
||||
</el-form-item>
|
||||
<el-form-item label="能力表现评分" prop="abilityPerformanceScore">
|
||||
<el-input v-model="formData.abilityPerformanceScore" placeholder="请输入能力表现评分" />
|
||||
</el-form-item>
|
||||
<el-form-item label="本人签字" prop="eSignature">
|
||||
<el-input v-model="formData.eSignature" placeholder="请输入本人签字" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import { FullMemberApplyApi, FullMemberApplyVO } from '@/api/hrm/fullmemberapply'
|
||||
|
||||
/** 转正申请 表单 */
|
||||
defineOptions({ name: 'FullMemberApplyForm' })
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
userId: undefined,
|
||||
processInstanceId: undefined,
|
||||
auditStatus: undefined,
|
||||
confirmationDate: undefined,
|
||||
isConfirmed: undefined,
|
||||
applicationDate: undefined,
|
||||
applicationNote: undefined,
|
||||
workPerformanceScore: undefined,
|
||||
attendanceScore: undefined,
|
||||
teamworkScore: undefined,
|
||||
abilityPerformanceScore: undefined,
|
||||
eSignature: undefined
|
||||
})
|
||||
const formRules = reactive({
|
||||
userId: [{ required: true, message: '员工档案ID(关联hrm_user_infor)不能为空', trigger: 'blur' }],
|
||||
auditStatus: [{ required: true, message: '审批状态不能为空', trigger: 'blur' }],
|
||||
confirmationDate: [{ required: true, message: '转正日期不能为空', trigger: 'blur' }],
|
||||
isConfirmed: [{ required: true, message: '是否转正(1:是,0:否)不能为空', trigger: 'change' }],
|
||||
applicationDate: [{ required: true, message: '申请日期不能为空', trigger: 'blur' }],
|
||||
workPerformanceScore: [{ required: true, message: '工作业绩评分不能为空', trigger: 'blur' }],
|
||||
attendanceScore: [{ required: true, message: '出勤情况评分不能为空', trigger: 'blur' }],
|
||||
teamworkScore: [{ required: true, message: '团队协作评分不能为空', trigger: 'blur' }],
|
||||
abilityPerformanceScore: [{ required: true, message: '能力表现评分不能为空', trigger: 'blur' }]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
/** 打开弹窗 */
|
||||
const open = async (type: string, id?: number) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = t('action.' + type)
|
||||
formType.value = type
|
||||
resetForm()
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
formLoading.value = true
|
||||
try {
|
||||
formData.value = await FullMemberApplyApi.getFullMemberApply(id)
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const submitForm = async () => {
|
||||
// 校验表单
|
||||
await formRef.value.validate()
|
||||
// 提交请求
|
||||
formLoading.value = true
|
||||
try {
|
||||
const data = formData.value as unknown as FullMemberApplyVO
|
||||
if (formType.value === 'create') {
|
||||
await FullMemberApplyApi.createFullMemberApply(data)
|
||||
message.success(t('common.createSuccess'))
|
||||
} else {
|
||||
await FullMemberApplyApi.updateFullMemberApply(data)
|
||||
message.success(t('common.updateSuccess'))
|
||||
}
|
||||
dialogVisible.value = false
|
||||
// 发送操作成功的事件
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
id: undefined,
|
||||
userId: undefined,
|
||||
processInstanceId: undefined,
|
||||
auditStatus: undefined,
|
||||
confirmationDate: undefined,
|
||||
isConfirmed: undefined,
|
||||
applicationDate: undefined,
|
||||
applicationNote: undefined,
|
||||
workPerformanceScore: undefined,
|
||||
attendanceScore: undefined,
|
||||
teamworkScore: undefined,
|
||||
abilityPerformanceScore: undefined,
|
||||
eSignature: undefined
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,324 @@
|
|||
<template>
|
||||
<ContentWrap>
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form
|
||||
class="-mb-15px"
|
||||
:model="queryParams"
|
||||
ref="queryFormRef"
|
||||
:inline="true"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="员工档案ID(关联hrm_user_infor)" prop="userId">
|
||||
<el-input
|
||||
v-model="queryParams.userId"
|
||||
placeholder="请输入员工档案ID(关联hrm_user_infor)"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工作流编号" prop="processInstanceId">
|
||||
<el-input
|
||||
v-model="queryParams.processInstanceId"
|
||||
placeholder="请输入工作流编号"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="审批状态" prop="auditStatus">
|
||||
<el-select
|
||||
v-model="queryParams.auditStatus"
|
||||
placeholder="请选择审批状态"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option label="请选择字典生成" value="" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="转正日期" prop="confirmationDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.confirmationDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否转正(1:是,0:否)" prop="isConfirmed">
|
||||
<el-select
|
||||
v-model="queryParams.isConfirmed"
|
||||
placeholder="请选择是否转正(1:是,0:否)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="申请日期" prop="applicationDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.applicationDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="转正申请说明" prop="applicationNote">
|
||||
<el-input
|
||||
v-model="queryParams.applicationNote"
|
||||
placeholder="请输入转正申请说明"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工作业绩评分" prop="workPerformanceScore">
|
||||
<el-input
|
||||
v-model="queryParams.workPerformanceScore"
|
||||
placeholder="请输入工作业绩评分"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="出勤情况评分" prop="attendanceScore">
|
||||
<el-input
|
||||
v-model="queryParams.attendanceScore"
|
||||
placeholder="请输入出勤情况评分"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="团队协作评分" prop="teamworkScore">
|
||||
<el-input
|
||||
v-model="queryParams.teamworkScore"
|
||||
placeholder="请输入团队协作评分"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="能力表现评分" prop="abilityPerformanceScore">
|
||||
<el-input
|
||||
v-model="queryParams.abilityPerformanceScore"
|
||||
placeholder="请输入能力表现评分"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="本人签字" prop="eSignature">
|
||||
<el-input
|
||||
v-model="queryParams.eSignature"
|
||||
placeholder="请输入本人签字"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="创建时间" prop="createTime">
|
||||
<el-date-picker
|
||||
v-model="queryParams.createTime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
@click="openForm('create')"
|
||||
v-hasPermi="['hrm:full-member-apply:create']"
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExport"
|
||||
:loading="exportLoading"
|
||||
v-hasPermi="['hrm:full-member-apply:export']"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="主键,自动递增" align="center" prop="id" />
|
||||
<el-table-column label="员工档案ID(关联hrm_user_infor)" align="center" prop="userId" />
|
||||
<el-table-column label="工作流编号" align="center" prop="processInstanceId" />
|
||||
<el-table-column label="审批状态" align="center" prop="auditStatus" />
|
||||
<el-table-column label="转正日期" align="center" prop="confirmationDate" />
|
||||
<el-table-column label="是否转正(1:是,0:否)" align="center" prop="isConfirmed">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.isConfirmed" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="申请日期" align="center" prop="applicationDate" />
|
||||
<el-table-column label="转正申请说明" align="center" prop="applicationNote" />
|
||||
<el-table-column label="工作业绩评分" align="center" prop="workPerformanceScore" />
|
||||
<el-table-column label="出勤情况评分" align="center" prop="attendanceScore" />
|
||||
<el-table-column label="团队协作评分" align="center" prop="teamworkScore" />
|
||||
<el-table-column label="能力表现评分" align="center" prop="abilityPerformanceScore" />
|
||||
<el-table-column label="本人签字" align="center" prop="eSignature" />
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
prop="createTime"
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column label="操作" align="center" min-width="120px">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="openForm('update', scope.row.id)"
|
||||
v-hasPermi="['hrm:full-member-apply:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id)"
|
||||
v-hasPermi="['hrm:full-member-apply:delete']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 表单弹窗:添加/修改 -->
|
||||
<FullMemberApplyForm ref="formRef" @success="getList" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import { dateFormatter } from '@/utils/formatTime'
|
||||
import download from '@/utils/download'
|
||||
import { FullMemberApplyApi, FullMemberApplyVO } from '@/api/hrm/fullmemberapply'
|
||||
import FullMemberApplyForm from './FullMemberApplyForm.vue'
|
||||
|
||||
/** 转正申请 列表 */
|
||||
defineOptions({ name: 'FullMemberApply' })
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref<FullMemberApplyVO[]>([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
userId: undefined,
|
||||
processInstanceId: undefined,
|
||||
auditStatus: undefined,
|
||||
confirmationDate: [],
|
||||
isConfirmed: undefined,
|
||||
applicationDate: [],
|
||||
applicationNote: undefined,
|
||||
workPerformanceScore: undefined,
|
||||
attendanceScore: undefined,
|
||||
teamworkScore: undefined,
|
||||
abilityPerformanceScore: undefined,
|
||||
eSignature: undefined,
|
||||
createTime: []
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await FullMemberApplyApi.getFullMemberApplyPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
/** 添加/修改操作 */
|
||||
const formRef = ref()
|
||||
const openForm = (type: string, id?: number) => {
|
||||
formRef.value.open(type, id)
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (id: number) => {
|
||||
try {
|
||||
// 删除的二次确认
|
||||
await message.delConfirm()
|
||||
// 发起删除
|
||||
await FullMemberApplyApi.deleteFullMemberApply(id)
|
||||
message.success(t('common.delSuccess'))
|
||||
// 刷新列表
|
||||
await getList()
|
||||
} catch {}
|
||||
}
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
// 导出的二次确认
|
||||
await message.exportConfirm()
|
||||
// 发起导出
|
||||
exportLoading.value = true
|
||||
const data = await FullMemberApplyApi.exportFullMemberApply(queryParams)
|
||||
download.excel(data, '转正申请.xls')
|
||||
} catch {
|
||||
} finally {
|
||||
exportLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 初始化 **/
|
||||
onMounted(() => {
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
|
|
@ -0,0 +1,540 @@
|
|||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
label-width="100px"
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-form-item label="用户登录账号IDsys_user表" prop="acctId">
|
||||
<el-input v-model="formData.acctId" placeholder="请输入用户登录账号IDsys_user表" />
|
||||
</el-form-item>
|
||||
<el-form-item label="员工编号" prop="userNo">
|
||||
<el-input v-model="formData.userNo" placeholder="请输入员工编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="员工姓名" prop="realName">
|
||||
<el-input v-model="formData.realName" placeholder="请输入员工姓名" />
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号" prop="phone">
|
||||
<el-input v-model="formData.phone" placeholder="请输入手机号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="邮箱" prop="email">
|
||||
<el-input v-model="formData.email" placeholder="请输入邮箱" />
|
||||
</el-form-item>
|
||||
<el-form-item label="入职日期" prop="employmentDate">
|
||||
<el-date-picker
|
||||
v-model="formData.employmentDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择入职日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="转正日期" prop="regularizationDate">
|
||||
<el-date-picker
|
||||
v-model="formData.regularizationDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择转正日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="岗位Id" prop="postId">
|
||||
<el-input v-model="formData.postId" placeholder="请输入岗位Id" />
|
||||
</el-form-item>
|
||||
<el-form-item label="职级" prop="postLevel">
|
||||
<el-select v-model="formData.postLevel" placeholder="请选择职级">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_POST_RANK)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="档级" prop="gradeLevel">
|
||||
<el-select v-model="formData.gradeLevel" placeholder="请选择档级">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_GRADE_LEVEL)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="聘用形式(全职、见习、实习、劳务、联创、其他)" prop="employType">
|
||||
<el-select v-model="formData.employType" placeholder="请选择聘用形式(全职、见习、实习、劳务、联创、其他)">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_EMPLOY_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="试用开始日期" prop="trialStartDate">
|
||||
<el-date-picker
|
||||
v-model="formData.trialStartDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择试用开始日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="试用结束日期" prop="trialEndDate">
|
||||
<el-date-picker
|
||||
v-model="formData.trialEndDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择试用结束日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="试用期限(月)" prop="probationPeriod">
|
||||
<el-input v-model="formData.probationPeriod" placeholder="请输入试用期限(月)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="合同开始日期" prop="contractStartDate">
|
||||
<el-date-picker
|
||||
v-model="formData.contractStartDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择合同开始日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同结束日期" prop="contractEndDate">
|
||||
<el-date-picker
|
||||
v-model="formData.contractEndDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择合同结束日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同期限(年)" prop="contractTerm">
|
||||
<el-input v-model="formData.contractTerm" placeholder="请输入合同期限(年)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="性别(男、女、其他)" prop="gender">
|
||||
<el-select v-model="formData.gender" placeholder="请选择性别(男、女、其他)">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="年龄" prop="age">
|
||||
<el-input v-model="formData.age" placeholder="请输入年龄" />
|
||||
</el-form-item>
|
||||
<el-form-item label="简历附件" prop="resume">
|
||||
<el-input v-model="formData.resume" placeholder="请输入简历附件" />
|
||||
</el-form-item>
|
||||
<el-form-item label="形象照" prop="workPhoto">
|
||||
<el-input v-model="formData.workPhoto" placeholder="请输入形象照" />
|
||||
</el-form-item>
|
||||
<el-form-item label="身份证人像" prop="idCardFaceSide">
|
||||
<el-input v-model="formData.idCardFaceSide" placeholder="请输入身份证人像" />
|
||||
</el-form-item>
|
||||
<el-form-item label="身份证国徽" prop="idCardNationalEmblemSide">
|
||||
<el-input v-model="formData.idCardNationalEmblemSide" placeholder="请输入身份证国徽" />
|
||||
</el-form-item>
|
||||
<el-form-item label="现住址" prop="currentAddress">
|
||||
<el-input v-model="formData.currentAddress" placeholder="请输入现住址" />
|
||||
</el-form-item>
|
||||
<el-form-item label="身份证号" prop="idCardNumber">
|
||||
<el-input v-model="formData.idCardNumber" placeholder="请输入身份证号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="出生日期" prop="birthDate">
|
||||
<el-date-picker
|
||||
v-model="formData.birthDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择出生日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="发证机关" prop="issuingAuthority">
|
||||
<el-input v-model="formData.issuingAuthority" placeholder="请输入发证机关" />
|
||||
</el-form-item>
|
||||
<el-form-item label="民族(56个民族)" prop="nation">
|
||||
<el-select v-model="formData.nation" placeholder="请选择民族(56个民族)">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_NATION)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="户口扫描件" prop="householdRegistrationScan">
|
||||
<el-input v-model="formData.householdRegistrationScan" placeholder="请输入户口扫描件" />
|
||||
</el-form-item>
|
||||
<el-form-item label="户籍类型(农村、城镇)" prop="householdType">
|
||||
<el-select v-model="formData.householdType" placeholder="请选择户籍类型(农村、城镇)">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_HOUSEHOLD_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="户籍地" prop="householdAddress">
|
||||
<el-input v-model="formData.householdAddress" placeholder="请输入户籍地" />
|
||||
</el-form-item>
|
||||
<el-form-item label="政治面貌(共青团员、中共预备党员、中共党员、群众、其他)" prop="politicalStatus">
|
||||
<el-select v-model="formData.politicalStatus" placeholder="请选择政治面貌(共青团员、中共预备党员、中共党员、群众、其他)">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_POLITICAL_STATUS)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="婚姻状况(未婚、已婚未育、已婚已育)" prop="maritalStatus">
|
||||
<el-select v-model="formData.maritalStatus" placeholder="请选择婚姻状况(未婚、已婚未育、已婚已育)">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_MARITAL_STATUS)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="关系1(父母、夫妻、兄弟、姊妹、朋友、其他)" prop="relationship1">
|
||||
<el-select v-model="formData.relationship1" placeholder="请选择关系1(父母、夫妻、兄弟、姊妹、朋友、其他)">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_RELATIONSHIP)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人姓名1" prop="contactName1">
|
||||
<el-input v-model="formData.contactName1" placeholder="请输入联系人姓名1" />
|
||||
</el-form-item>
|
||||
<el-form-item label="联系手机号1" prop="contactPhone1">
|
||||
<el-input v-model="formData.contactPhone1" placeholder="请输入联系手机号1" />
|
||||
</el-form-item>
|
||||
<el-form-item label="关系2(父母、夫妻、兄弟、姊妹、朋友、其他)" prop="relationship2">
|
||||
<el-select v-model="formData.relationship2" placeholder="请选择关系2(父母、夫妻、兄弟、姊妹、朋友、其他)">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_RELATIONSHIP)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人姓名2" prop="contactName2">
|
||||
<el-input v-model="formData.contactName2" placeholder="请输入联系人姓名2" />
|
||||
</el-form-item>
|
||||
<el-form-item label="联系手机号2" prop="contactPhone2">
|
||||
<el-input v-model="formData.contactPhone2" placeholder="请输入联系手机号2" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工商银行开户支行" prop="bankBranch">
|
||||
<el-input v-model="formData.bankBranch" placeholder="请输入工商银行开户支行" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工资卡卡号" prop="salaryCardNumber">
|
||||
<el-input v-model="formData.salaryCardNumber" placeholder="请输入工资卡卡号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="账户名与本人关系(父亲、母亲)" prop="accountRelationship">
|
||||
<el-select v-model="formData.accountRelationship" placeholder="请选择账户名与本人关系(父亲、母亲)">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_RELATIONSHIP)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="敬老费银行卡户名" prop="pensionCardHolder">
|
||||
<el-input v-model="formData.pensionCardHolder" placeholder="请输入敬老费银行卡户名" />
|
||||
</el-form-item>
|
||||
<el-form-item label="敬老费银行账号" prop="pensionAccountNumber">
|
||||
<el-input v-model="formData.pensionAccountNumber" placeholder="请输入敬老费银行账号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="敬老费开户行网点" prop="pensionBankBranch">
|
||||
<el-input v-model="formData.pensionBankBranch" placeholder="请输入敬老费开户行网点" />
|
||||
</el-form-item>
|
||||
<el-form-item label="五险缴纳情况(未缴纳过、已缴纳过)" prop="insuranceStatus">
|
||||
<el-radio-group v-model="formData.insuranceStatus">
|
||||
<el-radio
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_INSURANCE_STATUS)"
|
||||
:key="dict.value"
|
||||
:label="dict.value"
|
||||
>
|
||||
{{ dict.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="1寸白底照(当未缴纳五险一金,需要上传)" prop="oneInchPhoto">
|
||||
<el-input v-model="formData.oneInchPhoto" placeholder="请输入1寸白底照(当未缴纳五险一金,需要上传)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="离职证明扫描件" prop="resignationCertScan">
|
||||
<el-input v-model="formData.resignationCertScan" placeholder="请输入离职证明扫描件" />
|
||||
</el-form-item>
|
||||
<el-form-item label="最高学历" prop="highestEducation">
|
||||
<el-input v-model="formData.highestEducation" placeholder="请输入最高学历" />
|
||||
</el-form-item>
|
||||
<el-form-item label="学制类型(全日制、非全日制)" prop="educationSystemType">
|
||||
<el-select v-model="formData.educationSystemType" placeholder="请选择学制类型(全日制、非全日制)">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_EDUCATION_SYSTEM_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="学历扫描件" prop="educationCertificateScan">
|
||||
<el-input v-model="formData.educationCertificateScan" placeholder="请输入学历扫描件" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-radio-group v-model="formData.status">
|
||||
<el-radio value="1">请选择字典生成</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门ID" prop="deptId">
|
||||
<el-input v-model="formData.deptId" placeholder="请输入部门ID" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!-- 子表的表单 -->
|
||||
<el-tabs v-model="subTabsName">
|
||||
<el-tab-pane label="教育信息" name="userEducationInfo">
|
||||
<UserEducationInfoForm ref="userEducationInfoFormRef" :user-id="formData.id" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="工作经历信息" name="userWorkInfo">
|
||||
<UserWorkInfoForm ref="userWorkInfoFormRef" :user-id="formData.id" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<template #footer>
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import { UserApi, UserVO } from '@/api/hrm/user'
|
||||
import UserEducationInfoForm from './components/UserEducationInfoForm.vue'
|
||||
import UserWorkInfoForm from './components/UserWorkInfoForm.vue'
|
||||
|
||||
/** 员工档案信息 表单 */
|
||||
defineOptions({ name: 'UserForm' })
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
acctId: undefined,
|
||||
userNo: undefined,
|
||||
realName: undefined,
|
||||
phone: undefined,
|
||||
email: undefined,
|
||||
employmentDate: undefined,
|
||||
regularizationDate: undefined,
|
||||
postId: undefined,
|
||||
postLevel: undefined,
|
||||
gradeLevel: undefined,
|
||||
employType: undefined,
|
||||
trialStartDate: undefined,
|
||||
trialEndDate: undefined,
|
||||
probationPeriod: undefined,
|
||||
contractStartDate: undefined,
|
||||
contractEndDate: undefined,
|
||||
contractTerm: undefined,
|
||||
gender: undefined,
|
||||
age: undefined,
|
||||
resume: undefined,
|
||||
workPhoto: undefined,
|
||||
idCardFaceSide: undefined,
|
||||
idCardNationalEmblemSide: undefined,
|
||||
currentAddress: undefined,
|
||||
idCardNumber: undefined,
|
||||
birthDate: undefined,
|
||||
issuingAuthority: undefined,
|
||||
nation: undefined,
|
||||
householdRegistrationScan: undefined,
|
||||
householdType: undefined,
|
||||
householdAddress: undefined,
|
||||
politicalStatus: undefined,
|
||||
maritalStatus: undefined,
|
||||
relationship1: undefined,
|
||||
contactName1: undefined,
|
||||
contactPhone1: undefined,
|
||||
relationship2: undefined,
|
||||
contactName2: undefined,
|
||||
contactPhone2: undefined,
|
||||
bankBranch: undefined,
|
||||
salaryCardNumber: undefined,
|
||||
accountRelationship: undefined,
|
||||
pensionCardHolder: undefined,
|
||||
pensionAccountNumber: undefined,
|
||||
pensionBankBranch: undefined,
|
||||
insuranceStatus: undefined,
|
||||
oneInchPhoto: undefined,
|
||||
resignationCertScan: undefined,
|
||||
highestEducation: undefined,
|
||||
educationSystemType: undefined,
|
||||
educationCertificateScan: undefined,
|
||||
status: undefined,
|
||||
deptId: undefined
|
||||
})
|
||||
const formRules = reactive({
|
||||
userNo: [{ required: true, message: '员工编号不能为空', trigger: 'blur' }],
|
||||
realName: [{ required: true, message: '员工姓名不能为空', trigger: 'blur' }],
|
||||
phone: [{ required: true, message: '手机号不能为空', trigger: 'blur' }],
|
||||
postId: [{ required: true, message: '岗位Id不能为空', trigger: 'blur' }],
|
||||
employType: [{ required: true, message: '聘用形式(全职、见习、实习、劳务、联创、其他)不能为空', trigger: 'change' }],
|
||||
gender: [{ required: true, message: '性别(男、女、其他)不能为空', trigger: 'change' }],
|
||||
resume: [{ required: true, message: '简历附件不能为空', trigger: 'blur' }],
|
||||
workPhoto: [{ required: true, message: '形象照不能为空', trigger: 'blur' }],
|
||||
idCardFaceSide: [{ required: true, message: '身份证人像不能为空', trigger: 'blur' }],
|
||||
idCardNationalEmblemSide: [{ required: true, message: '身份证国徽不能为空', trigger: 'blur' }],
|
||||
currentAddress: [{ required: true, message: '现住址不能为空', trigger: 'blur' }],
|
||||
idCardNumber: [{ required: true, message: '身份证号不能为空', trigger: 'blur' }],
|
||||
householdRegistrationScan: [{ required: true, message: '户口扫描件不能为空', trigger: 'blur' }],
|
||||
relationship1: [{ required: true, message: '关系1(父母、夫妻、兄弟、姊妹、朋友、其他)不能为空', trigger: 'change' }],
|
||||
contactName1: [{ required: true, message: '联系人姓名1不能为空', trigger: 'blur' }],
|
||||
contactPhone1: [{ required: true, message: '联系手机号1不能为空', trigger: 'blur' }],
|
||||
bankBranch: [{ required: true, message: '工商银行开户支行不能为空', trigger: 'blur' }],
|
||||
salaryCardNumber: [{ required: true, message: '工资卡卡号不能为空', trigger: 'blur' }],
|
||||
accountRelationship: [{ required: true, message: '账户名与本人关系(父亲、母亲)不能为空', trigger: 'change' }],
|
||||
pensionCardHolder: [{ required: true, message: '敬老费银行卡户名不能为空', trigger: 'blur' }],
|
||||
pensionAccountNumber: [{ required: true, message: '敬老费银行账号不能为空', trigger: 'blur' }],
|
||||
pensionBankBranch: [{ required: true, message: '敬老费开户行网点不能为空', trigger: 'blur' }],
|
||||
insuranceStatus: [{ required: true, message: '五险缴纳情况(未缴纳过、已缴纳过)不能为空', trigger: 'blur' }],
|
||||
oneInchPhoto: [{ required: true, message: '1寸白底照(当未缴纳五险一金,需要上传)不能为空', trigger: 'blur' }],
|
||||
educationSystemType: [{ required: true, message: '学制类型(全日制、非全日制)不能为空', trigger: 'change' }],
|
||||
educationCertificateScan: [{ required: true, message: '学历扫描件不能为空', trigger: 'blur' }],
|
||||
deptId: [{ required: true, message: '部门ID不能为空', trigger: 'blur' }]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
/** 子表的表单 */
|
||||
const subTabsName = ref('userEducationInfo')
|
||||
const userEducationInfoFormRef = ref()
|
||||
const userWorkInfoFormRef = ref()
|
||||
|
||||
/** 打开弹窗 */
|
||||
const open = async (type: string, id?: number) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = t('action.' + type)
|
||||
formType.value = type
|
||||
resetForm()
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
formLoading.value = true
|
||||
try {
|
||||
formData.value = await UserApi.getUser(id)
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const submitForm = async () => {
|
||||
// 校验表单
|
||||
await formRef.value.validate()
|
||||
// 校验子表单
|
||||
try {
|
||||
await userEducationInfoFormRef.value.validate()
|
||||
} catch (e) {
|
||||
subTabsName.value = 'userEducationInfo'
|
||||
return
|
||||
}
|
||||
try {
|
||||
await userWorkInfoFormRef.value.validate()
|
||||
} catch (e) {
|
||||
subTabsName.value = 'userWorkInfo'
|
||||
return
|
||||
}
|
||||
// 提交请求
|
||||
formLoading.value = true
|
||||
try {
|
||||
const data = formData.value as unknown as UserVO
|
||||
// 拼接子表的数据
|
||||
data.userEducationInfos = userEducationInfoFormRef.value.getData()
|
||||
data.userWorkInfos = userWorkInfoFormRef.value.getData()
|
||||
if (formType.value === 'create') {
|
||||
await UserApi.createUser(data)
|
||||
message.success(t('common.createSuccess'))
|
||||
} else {
|
||||
await UserApi.updateUser(data)
|
||||
message.success(t('common.updateSuccess'))
|
||||
}
|
||||
dialogVisible.value = false
|
||||
// 发送操作成功的事件
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
id: undefined,
|
||||
acctId: undefined,
|
||||
userNo: undefined,
|
||||
realName: undefined,
|
||||
phone: undefined,
|
||||
email: undefined,
|
||||
employmentDate: undefined,
|
||||
regularizationDate: undefined,
|
||||
postId: undefined,
|
||||
postLevel: undefined,
|
||||
gradeLevel: undefined,
|
||||
employType: undefined,
|
||||
trialStartDate: undefined,
|
||||
trialEndDate: undefined,
|
||||
probationPeriod: undefined,
|
||||
contractStartDate: undefined,
|
||||
contractEndDate: undefined,
|
||||
contractTerm: undefined,
|
||||
gender: undefined,
|
||||
age: undefined,
|
||||
resume: undefined,
|
||||
workPhoto: undefined,
|
||||
idCardFaceSide: undefined,
|
||||
idCardNationalEmblemSide: undefined,
|
||||
currentAddress: undefined,
|
||||
idCardNumber: undefined,
|
||||
birthDate: undefined,
|
||||
issuingAuthority: undefined,
|
||||
nation: undefined,
|
||||
householdRegistrationScan: undefined,
|
||||
householdType: undefined,
|
||||
householdAddress: undefined,
|
||||
politicalStatus: undefined,
|
||||
maritalStatus: undefined,
|
||||
relationship1: undefined,
|
||||
contactName1: undefined,
|
||||
contactPhone1: undefined,
|
||||
relationship2: undefined,
|
||||
contactName2: undefined,
|
||||
contactPhone2: undefined,
|
||||
bankBranch: undefined,
|
||||
salaryCardNumber: undefined,
|
||||
accountRelationship: undefined,
|
||||
pensionCardHolder: undefined,
|
||||
pensionAccountNumber: undefined,
|
||||
pensionBankBranch: undefined,
|
||||
insuranceStatus: undefined,
|
||||
oneInchPhoto: undefined,
|
||||
resignationCertScan: undefined,
|
||||
highestEducation: undefined,
|
||||
educationSystemType: undefined,
|
||||
educationCertificateScan: undefined,
|
||||
status: undefined,
|
||||
deptId: undefined
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
<template>
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
v-loading="formLoading"
|
||||
label-width="0px"
|
||||
:inline-message="true"
|
||||
>
|
||||
<el-table :data="formData" class="-mt-10px">
|
||||
<el-table-column label="序号" type="index" width="100" />
|
||||
<el-table-column label="学历" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.education`" :rules="formRules.education" class="mb-0px!">
|
||||
<el-input v-model="row.education" placeholder="请输入学历" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="入学日期" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.beginDate`" :rules="formRules.beginDate" class="mb-0px!">
|
||||
<el-date-picker
|
||||
v-model="row.beginDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择入学日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="毕业日期" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.graduationDate`" :rules="formRules.graduationDate" class="mb-0px!">
|
||||
<el-date-picker
|
||||
v-model="row.graduationDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择毕业日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="学校名称" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.schoolName`" :rules="formRules.schoolName" class="mb-0px!">
|
||||
<el-input v-model="row.schoolName" placeholder="请输入学校名称" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="专业名称" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.major`" :rules="formRules.major" class="mb-0px!">
|
||||
<el-input v-model="row.major" placeholder="请输入专业名称" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="right" label="操作" width="60">
|
||||
<template #default="{ $index }">
|
||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form>
|
||||
<el-row justify="center" class="mt-3">
|
||||
<el-button @click="handleAdd" round>+ 添加教育信息</el-button>
|
||||
</el-row>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { UserApi } from '@/api/hrm/user'
|
||||
|
||||
const props = defineProps<{
|
||||
userId: undefined // 员工档案ID(关联hrm_user_infor)(主表的关联字段)
|
||||
}>()
|
||||
const formLoading = ref(false) // 表单的加载中
|
||||
const formData = ref([])
|
||||
const formRules = reactive({
|
||||
userId: [{ required: true, message: '员工档案ID(关联hrm_user_infor)不能为空', trigger: 'blur' }],
|
||||
education: [{ required: true, message: '学历不能为空', trigger: 'blur' }],
|
||||
beginDate: [{ required: true, message: '入学日期不能为空', trigger: 'blur' }],
|
||||
graduationDate: [{ required: true, message: '毕业日期不能为空', trigger: 'blur' }],
|
||||
schoolName: [{ required: true, message: '学校名称不能为空', trigger: 'blur' }]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
/** 监听主表的关联字段的变化,加载对应的子表数据 */
|
||||
watch(
|
||||
() => props.userId,
|
||||
async (val) => {
|
||||
// 1. 重置表单
|
||||
formData.value = []
|
||||
// 2. val 非空,则加载数据
|
||||
if (!val) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
formLoading.value = true
|
||||
formData.value = await UserApi.getUserEducationInfoListByUserId(val)
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
const row = {
|
||||
id: undefined,
|
||||
userId: undefined,
|
||||
education: undefined,
|
||||
beginDate: undefined,
|
||||
graduationDate: undefined,
|
||||
schoolName: undefined,
|
||||
major: undefined
|
||||
}
|
||||
row.userId = props.userId
|
||||
formData.value.push(row)
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = (index) => {
|
||||
formData.value.splice(index, 1)
|
||||
}
|
||||
|
||||
/** 表单校验 */
|
||||
const validate = () => {
|
||||
return formRef.value.validate()
|
||||
}
|
||||
|
||||
/** 表单值 */
|
||||
const getData = () => {
|
||||
return formData.value
|
||||
}
|
||||
|
||||
defineExpose({ validate, getData })
|
||||
</script>
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
<template>
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
v-loading="formLoading"
|
||||
label-width="0px"
|
||||
:inline-message="true"
|
||||
>
|
||||
<el-table :data="formData" class="-mt-10px">
|
||||
<el-table-column label="序号" type="index" width="100" />
|
||||
<el-table-column label="单位名称" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.companyName`" :rules="formRules.companyName" class="mb-0px!">
|
||||
<el-input v-model="row.companyName" placeholder="请输入单位名称" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="部门名称" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.deptName`" :rules="formRules.deptName" class="mb-0px!">
|
||||
<el-input v-model="row.deptName" placeholder="请输入部门名称" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="职位名称" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.postName`" :rules="formRules.postName" class="mb-0px!">
|
||||
<el-input v-model="row.postName" placeholder="请输入职位名称" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="开始日期" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.startDate`" :rules="formRules.startDate" class="mb-0px!">
|
||||
<el-date-picker
|
||||
v-model="row.startDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择开始日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="离职日期" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.endDate`" :rules="formRules.endDate" class="mb-0px!">
|
||||
<el-date-picker
|
||||
v-model="row.endDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择离职日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="待遇(元/月)" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.monthlySalary`" :rules="formRules.monthlySalary" class="mb-0px!">
|
||||
<el-input v-model="row.monthlySalary" placeholder="请输入待遇(元/月)" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="right" label="操作" width="60">
|
||||
<template #default="{ $index }">
|
||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form>
|
||||
<el-row justify="center" class="mt-3">
|
||||
<el-button @click="handleAdd" round>+ 添加工作经历信息</el-button>
|
||||
</el-row>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { UserApi } from '@/api/hrm/user'
|
||||
|
||||
const props = defineProps<{
|
||||
userId: undefined // 员工档案ID(关联hrm_user_infor)(主表的关联字段)
|
||||
}>()
|
||||
const formLoading = ref(false) // 表单的加载中
|
||||
const formData = ref([])
|
||||
const formRules = reactive({
|
||||
userId: [{ required: true, message: '员工档案ID(关联hrm_user_infor)不能为空', trigger: 'blur' }],
|
||||
companyName: [{ required: true, message: '单位名称不能为空', trigger: 'blur' }],
|
||||
deptName: [{ required: true, message: '部门名称不能为空', trigger: 'blur' }],
|
||||
postName: [{ required: true, message: '职位名称不能为空', trigger: 'blur' }],
|
||||
startDate: [{ required: true, message: '开始日期不能为空', trigger: 'blur' }],
|
||||
endDate: [{ required: true, message: '离职日期不能为空', trigger: 'blur' }],
|
||||
monthlySalary: [{ required: true, message: '待遇(元/月)不能为空', trigger: 'blur' }]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
/** 监听主表的关联字段的变化,加载对应的子表数据 */
|
||||
watch(
|
||||
() => props.userId,
|
||||
async (val) => {
|
||||
// 1. 重置表单
|
||||
formData.value = []
|
||||
// 2. val 非空,则加载数据
|
||||
if (!val) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
formLoading.value = true
|
||||
formData.value = await UserApi.getUserWorkInfoListByUserId(val)
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
const row = {
|
||||
id: undefined,
|
||||
userId: undefined,
|
||||
companyName: undefined,
|
||||
deptName: undefined,
|
||||
postName: undefined,
|
||||
startDate: undefined,
|
||||
endDate: undefined,
|
||||
monthlySalary: undefined
|
||||
}
|
||||
row.userId = props.userId
|
||||
formData.value.push(row)
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = (index) => {
|
||||
formData.value.splice(index, 1)
|
||||
}
|
||||
|
||||
/** 表单校验 */
|
||||
const validate = () => {
|
||||
return formRef.value.validate()
|
||||
}
|
||||
|
||||
/** 表单值 */
|
||||
const getData = () => {
|
||||
return formData.value
|
||||
}
|
||||
|
||||
defineExpose({ validate, getData })
|
||||
</script>
|
||||
|
|
@ -0,0 +1,905 @@
|
|||
<template>
|
||||
<ContentWrap>
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form
|
||||
class="-mb-15px"
|
||||
:model="queryParams"
|
||||
ref="queryFormRef"
|
||||
:inline="true"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="用户登录账号IDsys_user表" prop="acctId">
|
||||
<el-input
|
||||
v-model="queryParams.acctId"
|
||||
placeholder="请输入用户登录账号IDsys_user表"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="员工编号" prop="userNo">
|
||||
<el-input
|
||||
v-model="queryParams.userNo"
|
||||
placeholder="请输入员工编号"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="员工姓名" prop="realName">
|
||||
<el-input
|
||||
v-model="queryParams.realName"
|
||||
placeholder="请输入员工姓名"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号" prop="phone">
|
||||
<el-input
|
||||
v-model="queryParams.phone"
|
||||
placeholder="请输入手机号"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="邮箱" prop="email">
|
||||
<el-input
|
||||
v-model="queryParams.email"
|
||||
placeholder="请输入邮箱"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="入职日期" prop="employmentDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.employmentDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="转正日期" prop="regularizationDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.regularizationDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="岗位Id" prop="postId">
|
||||
<el-input
|
||||
v-model="queryParams.postId"
|
||||
placeholder="请输入岗位Id"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="职级" prop="postLevel">
|
||||
<el-select
|
||||
v-model="queryParams.postLevel"
|
||||
placeholder="请选择职级"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_POST_RANK)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="档级" prop="gradeLevel">
|
||||
<el-select
|
||||
v-model="queryParams.gradeLevel"
|
||||
placeholder="请选择档级"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_GRADE_LEVEL)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="聘用形式(全职、见习、实习、劳务、联创、其他)" prop="employType">
|
||||
<el-select
|
||||
v-model="queryParams.employType"
|
||||
placeholder="请选择聘用形式(全职、见习、实习、劳务、联创、其他)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_EMPLOY_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="试用开始日期" prop="trialStartDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.trialStartDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="试用结束日期" prop="trialEndDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.trialEndDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="试用期限(月)" prop="probationPeriod">
|
||||
<el-input
|
||||
v-model="queryParams.probationPeriod"
|
||||
placeholder="请输入试用期限(月)"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同开始日期" prop="contractStartDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.contractStartDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同结束日期" prop="contractEndDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.contractEndDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同期限(年)" prop="contractTerm">
|
||||
<el-input
|
||||
v-model="queryParams.contractTerm"
|
||||
placeholder="请输入合同期限(年)"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="性别(男、女、其他)" prop="gender">
|
||||
<el-select
|
||||
v-model="queryParams.gender"
|
||||
placeholder="请选择性别(男、女、其他)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="年龄" prop="age">
|
||||
<el-input
|
||||
v-model="queryParams.age"
|
||||
placeholder="请输入年龄"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="简历附件" prop="resume">
|
||||
<el-input
|
||||
v-model="queryParams.resume"
|
||||
placeholder="请输入简历附件"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="形象照" prop="workPhoto">
|
||||
<el-input
|
||||
v-model="queryParams.workPhoto"
|
||||
placeholder="请输入形象照"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="身份证人像" prop="idCardFaceSide">
|
||||
<el-input
|
||||
v-model="queryParams.idCardFaceSide"
|
||||
placeholder="请输入身份证人像"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="身份证国徽" prop="idCardNationalEmblemSide">
|
||||
<el-input
|
||||
v-model="queryParams.idCardNationalEmblemSide"
|
||||
placeholder="请输入身份证国徽"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="现住址" prop="currentAddress">
|
||||
<el-input
|
||||
v-model="queryParams.currentAddress"
|
||||
placeholder="请输入现住址"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="身份证号" prop="idCardNumber">
|
||||
<el-input
|
||||
v-model="queryParams.idCardNumber"
|
||||
placeholder="请输入身份证号"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="出生日期" prop="birthDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.birthDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="发证机关" prop="issuingAuthority">
|
||||
<el-input
|
||||
v-model="queryParams.issuingAuthority"
|
||||
placeholder="请输入发证机关"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="民族(56个民族)" prop="nation">
|
||||
<el-select
|
||||
v-model="queryParams.nation"
|
||||
placeholder="请选择民族(56个民族)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_NATION)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="户口扫描件" prop="householdRegistrationScan">
|
||||
<el-input
|
||||
v-model="queryParams.householdRegistrationScan"
|
||||
placeholder="请输入户口扫描件"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="户籍类型(农村、城镇)" prop="householdType">
|
||||
<el-select
|
||||
v-model="queryParams.householdType"
|
||||
placeholder="请选择户籍类型(农村、城镇)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_HOUSEHOLD_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="户籍地" prop="householdAddress">
|
||||
<el-input
|
||||
v-model="queryParams.householdAddress"
|
||||
placeholder="请输入户籍地"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="政治面貌(共青团员、中共预备党员、中共党员、群众、其他)" prop="politicalStatus">
|
||||
<el-select
|
||||
v-model="queryParams.politicalStatus"
|
||||
placeholder="请选择政治面貌(共青团员、中共预备党员、中共党员、群众、其他)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_POLITICAL_STATUS)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="婚姻状况(未婚、已婚未育、已婚已育)" prop="maritalStatus">
|
||||
<el-select
|
||||
v-model="queryParams.maritalStatus"
|
||||
placeholder="请选择婚姻状况(未婚、已婚未育、已婚已育)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_MARITAL_STATUS)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="关系1(父母、夫妻、兄弟、姊妹、朋友、其他)" prop="relationship1">
|
||||
<el-select
|
||||
v-model="queryParams.relationship1"
|
||||
placeholder="请选择关系1(父母、夫妻、兄弟、姊妹、朋友、其他)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_RELATIONSHIP)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人姓名1" prop="contactName1">
|
||||
<el-input
|
||||
v-model="queryParams.contactName1"
|
||||
placeholder="请输入联系人姓名1"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系手机号1" prop="contactPhone1">
|
||||
<el-input
|
||||
v-model="queryParams.contactPhone1"
|
||||
placeholder="请输入联系手机号1"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="关系2(父母、夫妻、兄弟、姊妹、朋友、其他)" prop="relationship2">
|
||||
<el-select
|
||||
v-model="queryParams.relationship2"
|
||||
placeholder="请选择关系2(父母、夫妻、兄弟、姊妹、朋友、其他)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_RELATIONSHIP)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人姓名2" prop="contactName2">
|
||||
<el-input
|
||||
v-model="queryParams.contactName2"
|
||||
placeholder="请输入联系人姓名2"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系手机号2" prop="contactPhone2">
|
||||
<el-input
|
||||
v-model="queryParams.contactPhone2"
|
||||
placeholder="请输入联系手机号2"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工商银行开户支行" prop="bankBranch">
|
||||
<el-input
|
||||
v-model="queryParams.bankBranch"
|
||||
placeholder="请输入工商银行开户支行"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工资卡卡号" prop="salaryCardNumber">
|
||||
<el-input
|
||||
v-model="queryParams.salaryCardNumber"
|
||||
placeholder="请输入工资卡卡号"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="账户名与本人关系(父亲、母亲)" prop="accountRelationship">
|
||||
<el-select
|
||||
v-model="queryParams.accountRelationship"
|
||||
placeholder="请选择账户名与本人关系(父亲、母亲)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_RELATIONSHIP)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="敬老费银行卡户名" prop="pensionCardHolder">
|
||||
<el-input
|
||||
v-model="queryParams.pensionCardHolder"
|
||||
placeholder="请输入敬老费银行卡户名"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="敬老费银行账号" prop="pensionAccountNumber">
|
||||
<el-input
|
||||
v-model="queryParams.pensionAccountNumber"
|
||||
placeholder="请输入敬老费银行账号"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="敬老费开户行网点" prop="pensionBankBranch">
|
||||
<el-input
|
||||
v-model="queryParams.pensionBankBranch"
|
||||
placeholder="请输入敬老费开户行网点"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="五险缴纳情况(未缴纳过、已缴纳过)" prop="insuranceStatus">
|
||||
<el-select
|
||||
v-model="queryParams.insuranceStatus"
|
||||
placeholder="请选择五险缴纳情况(未缴纳过、已缴纳过)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_INSURANCE_STATUS)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="1寸白底照(当未缴纳五险一金,需要上传)" prop="oneInchPhoto">
|
||||
<el-input
|
||||
v-model="queryParams.oneInchPhoto"
|
||||
placeholder="请输入1寸白底照(当未缴纳五险一金,需要上传)"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="离职证明扫描件" prop="resignationCertScan">
|
||||
<el-input
|
||||
v-model="queryParams.resignationCertScan"
|
||||
placeholder="请输入离职证明扫描件"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="最高学历" prop="highestEducation">
|
||||
<el-input
|
||||
v-model="queryParams.highestEducation"
|
||||
placeholder="请输入最高学历"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="学制类型(全日制、非全日制)" prop="educationSystemType">
|
||||
<el-select
|
||||
v-model="queryParams.educationSystemType"
|
||||
placeholder="请选择学制类型(全日制、非全日制)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_EDUCATION_SYSTEM_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="学历扫描件" prop="educationCertificateScan">
|
||||
<el-input
|
||||
v-model="queryParams.educationCertificateScan"
|
||||
placeholder="请输入学历扫描件"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select
|
||||
v-model="queryParams.status"
|
||||
placeholder="请选择状态"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option label="请选择字典生成" value="" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门ID" prop="deptId">
|
||||
<el-input
|
||||
v-model="queryParams.deptId"
|
||||
placeholder="请输入部门ID"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="创建时间" prop="createTime">
|
||||
<el-date-picker
|
||||
v-model="queryParams.createTime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
@click="openForm('create')"
|
||||
v-hasPermi="['hrm:user:create']"
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExport"
|
||||
:loading="exportLoading"
|
||||
v-hasPermi="['hrm:user:export']"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="唯一主键" align="center" prop="id" />
|
||||
<el-table-column label="用户登录账号IDsys_user表" align="center" prop="acctId" />
|
||||
<el-table-column label="员工编号" align="center" prop="userNo" />
|
||||
<el-table-column label="员工姓名" align="center" prop="realName" />
|
||||
<el-table-column label="手机号" align="center" prop="phone" />
|
||||
<el-table-column label="邮箱" align="center" prop="email" />
|
||||
<el-table-column label="入职日期" align="center" prop="employmentDate" />
|
||||
<el-table-column label="转正日期" align="center" prop="regularizationDate" />
|
||||
<el-table-column label="岗位Id" align="center" prop="postId" />
|
||||
<el-table-column label="职级" align="center" prop="postLevel">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HRM_POST_RANK" :value="scope.row.postLevel" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="档级" align="center" prop="gradeLevel">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HRM_GRADE_LEVEL" :value="scope.row.gradeLevel" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="聘用形式(全职、见习、实习、劳务、联创、其他)" align="center" prop="employType">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HRM_EMPLOY_TYPE" :value="scope.row.employType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="试用开始日期" align="center" prop="trialStartDate" />
|
||||
<el-table-column label="试用结束日期" align="center" prop="trialEndDate" />
|
||||
<el-table-column label="试用期限(月)" align="center" prop="probationPeriod" />
|
||||
<el-table-column label="合同开始日期" align="center" prop="contractStartDate" />
|
||||
<el-table-column label="合同结束日期" align="center" prop="contractEndDate" />
|
||||
<el-table-column label="合同期限(年)" align="center" prop="contractTerm" />
|
||||
<el-table-column label="性别(男、女、其他)" align="center" prop="gender">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.SYSTEM_USER_SEX" :value="scope.row.gender" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="年龄" align="center" prop="age" />
|
||||
<el-table-column label="简历附件" align="center" prop="resume" />
|
||||
<el-table-column label="形象照" align="center" prop="workPhoto" />
|
||||
<el-table-column label="身份证人像" align="center" prop="idCardFaceSide" />
|
||||
<el-table-column label="身份证国徽" align="center" prop="idCardNationalEmblemSide" />
|
||||
<el-table-column label="现住址" align="center" prop="currentAddress" />
|
||||
<el-table-column label="身份证号" align="center" prop="idCardNumber" />
|
||||
<el-table-column label="出生日期" align="center" prop="birthDate" />
|
||||
<el-table-column label="发证机关" align="center" prop="issuingAuthority" />
|
||||
<el-table-column label="民族(56个民族)" align="center" prop="nation">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HRM_NATION" :value="scope.row.nation" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="户口扫描件" align="center" prop="householdRegistrationScan" />
|
||||
<el-table-column label="户籍类型(农村、城镇)" align="center" prop="householdType">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HRM_HOUSEHOLD_TYPE" :value="scope.row.householdType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="户籍地" align="center" prop="householdAddress" />
|
||||
<el-table-column label="政治面貌(共青团员、中共预备党员、中共党员、群众、其他)" align="center" prop="politicalStatus">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HRM_POLITICAL_STATUS" :value="scope.row.politicalStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="婚姻状况(未婚、已婚未育、已婚已育)" align="center" prop="maritalStatus">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HRM_MARITAL_STATUS" :value="scope.row.maritalStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="关系1(父母、夫妻、兄弟、姊妹、朋友、其他)" align="center" prop="relationship1">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HRM_RELATIONSHIP" :value="scope.row.relationship1" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="联系人姓名1" align="center" prop="contactName1" />
|
||||
<el-table-column label="联系手机号1" align="center" prop="contactPhone1" />
|
||||
<el-table-column label="关系2(父母、夫妻、兄弟、姊妹、朋友、其他)" align="center" prop="relationship2">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HRM_RELATIONSHIP" :value="scope.row.relationship2" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="联系人姓名2" align="center" prop="contactName2" />
|
||||
<el-table-column label="联系手机号2" align="center" prop="contactPhone2" />
|
||||
<el-table-column label="工商银行开户支行" align="center" prop="bankBranch" />
|
||||
<el-table-column label="工资卡卡号" align="center" prop="salaryCardNumber" />
|
||||
<el-table-column label="账户名与本人关系(父亲、母亲)" align="center" prop="accountRelationship">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HRM_RELATIONSHIP" :value="scope.row.accountRelationship" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="敬老费银行卡户名" align="center" prop="pensionCardHolder" />
|
||||
<el-table-column label="敬老费银行账号" align="center" prop="pensionAccountNumber" />
|
||||
<el-table-column label="敬老费开户行网点" align="center" prop="pensionBankBranch" />
|
||||
<el-table-column label="五险缴纳情况(未缴纳过、已缴纳过)" align="center" prop="insuranceStatus">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HRM_INSURANCE_STATUS" :value="scope.row.insuranceStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="1寸白底照(当未缴纳五险一金,需要上传)" align="center" prop="oneInchPhoto" />
|
||||
<el-table-column label="离职证明扫描件" align="center" prop="resignationCertScan" />
|
||||
<el-table-column label="最高学历" align="center" prop="highestEducation" />
|
||||
<el-table-column label="学制类型(全日制、非全日制)" align="center" prop="educationSystemType">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HRM_EDUCATION_SYSTEM_TYPE" :value="scope.row.educationSystemType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="学历扫描件" align="center" prop="educationCertificateScan" />
|
||||
<el-table-column label="状态" align="center" prop="status" />
|
||||
<el-table-column label="部门ID" align="center" prop="deptId" />
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
prop="createTime"
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column label="操作" align="center" min-width="120px">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="openForm('update', scope.row.id)"
|
||||
v-hasPermi="['hrm:user:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id)"
|
||||
v-hasPermi="['hrm:user:delete']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 表单弹窗:添加/修改 -->
|
||||
<UserForm ref="formRef" @success="getList" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import { dateFormatter } from '@/utils/formatTime'
|
||||
import download from '@/utils/download'
|
||||
import { UserApi, UserVO } from '@/api/hrm/user'
|
||||
import UserForm from './UserForm.vue'
|
||||
|
||||
/** 员工档案信息 列表 */
|
||||
defineOptions({ name: 'User' })
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref<UserVO[]>([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
acctId: undefined,
|
||||
userNo: undefined,
|
||||
realName: undefined,
|
||||
phone: undefined,
|
||||
email: undefined,
|
||||
employmentDate: [],
|
||||
regularizationDate: [],
|
||||
postId: undefined,
|
||||
postLevel: undefined,
|
||||
gradeLevel: undefined,
|
||||
employType: undefined,
|
||||
trialStartDate: [],
|
||||
trialEndDate: [],
|
||||
probationPeriod: undefined,
|
||||
contractStartDate: [],
|
||||
contractEndDate: [],
|
||||
contractTerm: undefined,
|
||||
gender: undefined,
|
||||
age: undefined,
|
||||
resume: undefined,
|
||||
workPhoto: undefined,
|
||||
idCardFaceSide: undefined,
|
||||
idCardNationalEmblemSide: undefined,
|
||||
currentAddress: undefined,
|
||||
idCardNumber: undefined,
|
||||
birthDate: [],
|
||||
issuingAuthority: undefined,
|
||||
nation: undefined,
|
||||
householdRegistrationScan: undefined,
|
||||
householdType: undefined,
|
||||
householdAddress: undefined,
|
||||
politicalStatus: undefined,
|
||||
maritalStatus: undefined,
|
||||
relationship1: undefined,
|
||||
contactName1: undefined,
|
||||
contactPhone1: undefined,
|
||||
relationship2: undefined,
|
||||
contactName2: undefined,
|
||||
contactPhone2: undefined,
|
||||
bankBranch: undefined,
|
||||
salaryCardNumber: undefined,
|
||||
accountRelationship: undefined,
|
||||
pensionCardHolder: undefined,
|
||||
pensionAccountNumber: undefined,
|
||||
pensionBankBranch: undefined,
|
||||
insuranceStatus: undefined,
|
||||
oneInchPhoto: undefined,
|
||||
resignationCertScan: undefined,
|
||||
highestEducation: undefined,
|
||||
educationSystemType: undefined,
|
||||
educationCertificateScan: undefined,
|
||||
status: undefined,
|
||||
deptId: undefined,
|
||||
createTime: []
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await UserApi.getUserPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
/** 添加/修改操作 */
|
||||
const formRef = ref()
|
||||
const openForm = (type: string, id?: number) => {
|
||||
formRef.value.open(type, id)
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (id: number) => {
|
||||
try {
|
||||
// 删除的二次确认
|
||||
await message.delConfirm()
|
||||
// 发起删除
|
||||
await UserApi.deleteUser(id)
|
||||
message.success(t('common.delSuccess'))
|
||||
// 刷新列表
|
||||
await getList()
|
||||
} catch {}
|
||||
}
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
// 导出的二次确认
|
||||
await message.exportConfirm()
|
||||
// 发起导出
|
||||
exportLoading.value = true
|
||||
const data = await UserApi.exportUser(queryParams)
|
||||
download.excel(data, '员工档案信息.xls')
|
||||
} catch {
|
||||
} finally {
|
||||
exportLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 初始化 **/
|
||||
onMounted(() => {
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
label-width="100px"
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-form-item label="员工档案ID(关联hrm_user_infor)" prop="userId">
|
||||
<el-input v-model="formData.userId" placeholder="请输入员工档案ID(关联hrm_user_infor)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="学历" prop="education">
|
||||
<el-input v-model="formData.education" placeholder="请输入学历" />
|
||||
</el-form-item>
|
||||
<el-form-item label="入学日期" prop="beginDate">
|
||||
<el-date-picker
|
||||
v-model="formData.beginDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择入学日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="毕业日期" prop="graduationDate">
|
||||
<el-date-picker
|
||||
v-model="formData.graduationDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择毕业日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="学校名称" prop="schoolName">
|
||||
<el-input v-model="formData.schoolName" placeholder="请输入学校名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="专业名称" prop="major">
|
||||
<el-input v-model="formData.major" placeholder="请输入专业名称" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { UserEducationInfoApi, UserEducationInfoVO } from '@/api/hrm/usereducationinfo'
|
||||
|
||||
/** 教育信息 表单 */
|
||||
defineOptions({ name: 'UserEducationInfoForm' })
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
userId: undefined,
|
||||
education: undefined,
|
||||
beginDate: undefined,
|
||||
graduationDate: undefined,
|
||||
schoolName: undefined,
|
||||
major: undefined
|
||||
})
|
||||
const formRules = reactive({
|
||||
userId: [{ required: true, message: '员工档案ID(关联hrm_user_infor)不能为空', trigger: 'blur' }],
|
||||
education: [{ required: true, message: '学历不能为空', trigger: 'blur' }],
|
||||
beginDate: [{ required: true, message: '入学日期不能为空', trigger: 'blur' }],
|
||||
graduationDate: [{ required: true, message: '毕业日期不能为空', trigger: 'blur' }],
|
||||
schoolName: [{ required: true, message: '学校名称不能为空', trigger: 'blur' }]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
/** 打开弹窗 */
|
||||
const open = async (type: string, id?: number) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = t('action.' + type)
|
||||
formType.value = type
|
||||
resetForm()
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
formLoading.value = true
|
||||
try {
|
||||
formData.value = await UserEducationInfoApi.getUserEducationInfo(id)
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const submitForm = async () => {
|
||||
// 校验表单
|
||||
await formRef.value.validate()
|
||||
// 提交请求
|
||||
formLoading.value = true
|
||||
try {
|
||||
const data = formData.value as unknown as UserEducationInfoVO
|
||||
if (formType.value === 'create') {
|
||||
await UserEducationInfoApi.createUserEducationInfo(data)
|
||||
message.success(t('common.createSuccess'))
|
||||
} else {
|
||||
await UserEducationInfoApi.updateUserEducationInfo(data)
|
||||
message.success(t('common.updateSuccess'))
|
||||
}
|
||||
dialogVisible.value = false
|
||||
// 发送操作成功的事件
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
id: undefined,
|
||||
userId: undefined,
|
||||
education: undefined,
|
||||
beginDate: undefined,
|
||||
graduationDate: undefined,
|
||||
schoolName: undefined,
|
||||
major: undefined
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,226 @@
|
|||
<template>
|
||||
<ContentWrap>
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form
|
||||
class="-mb-15px"
|
||||
:model="queryParams"
|
||||
ref="queryFormRef"
|
||||
:inline="true"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="员工档案ID(关联hrm_user_infor)" prop="userId">
|
||||
<el-input
|
||||
v-model="queryParams.userId"
|
||||
placeholder="请输入员工档案ID(关联hrm_user_infor)"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="学历" prop="education">
|
||||
<el-input
|
||||
v-model="queryParams.education"
|
||||
placeholder="请输入学历"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="入学日期" prop="beginDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.beginDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="毕业日期" prop="graduationDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.graduationDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="学校名称" prop="schoolName">
|
||||
<el-input
|
||||
v-model="queryParams.schoolName"
|
||||
placeholder="请输入学校名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="专业名称" prop="major">
|
||||
<el-input
|
||||
v-model="queryParams.major"
|
||||
placeholder="请输入专业名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
@click="openForm('create')"
|
||||
v-hasPermi="['hrm:user-education-info:create']"
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExport"
|
||||
:loading="exportLoading"
|
||||
v-hasPermi="['hrm:user-education-info:export']"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="唯一主键" align="center" prop="id" />
|
||||
<el-table-column label="员工档案ID(关联hrm_user_infor)" align="center" prop="userId" />
|
||||
<el-table-column label="学历" align="center" prop="education" />
|
||||
<el-table-column label="入学日期" align="center" prop="beginDate" />
|
||||
<el-table-column label="毕业日期" align="center" prop="graduationDate" />
|
||||
<el-table-column label="学校名称" align="center" prop="schoolName" />
|
||||
<el-table-column label="专业名称" align="center" prop="major" />
|
||||
<el-table-column label="操作" align="center" min-width="120px">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="openForm('update', scope.row.id)"
|
||||
v-hasPermi="['hrm:user-education-info:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id)"
|
||||
v-hasPermi="['hrm:user-education-info:delete']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 表单弹窗:添加/修改 -->
|
||||
<UserEducationInfoForm ref="formRef" @success="getList" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import download from '@/utils/download'
|
||||
import { UserEducationInfoApi, UserEducationInfoVO } from '@/api/hrm/usereducationinfo'
|
||||
import UserEducationInfoForm from './UserEducationInfoForm.vue'
|
||||
|
||||
/** 教育信息 列表 */
|
||||
defineOptions({ name: 'UserEducationInfo' })
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref<UserEducationInfoVO[]>([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
userId: undefined,
|
||||
education: undefined,
|
||||
beginDate: [],
|
||||
graduationDate: [],
|
||||
schoolName: undefined,
|
||||
major: undefined
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await UserEducationInfoApi.getUserEducationInfoPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
/** 添加/修改操作 */
|
||||
const formRef = ref()
|
||||
const openForm = (type: string, id?: number) => {
|
||||
formRef.value.open(type, id)
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (id: number) => {
|
||||
try {
|
||||
// 删除的二次确认
|
||||
await message.delConfirm()
|
||||
// 发起删除
|
||||
await UserEducationInfoApi.deleteUserEducationInfo(id)
|
||||
message.success(t('common.delSuccess'))
|
||||
// 刷新列表
|
||||
await getList()
|
||||
} catch {}
|
||||
}
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
// 导出的二次确认
|
||||
await message.exportConfirm()
|
||||
// 发起导出
|
||||
exportLoading.value = true
|
||||
const data = await UserEducationInfoApi.exportUserEducationInfo(queryParams)
|
||||
download.excel(data, '教育信息.xls')
|
||||
} catch {
|
||||
} finally {
|
||||
exportLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 初始化 **/
|
||||
onMounted(() => {
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
label-width="100px"
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-form-item label="人才库id" prop="talentId">
|
||||
<el-input v-model="formData.talentId" placeholder="请输入人才库id" />
|
||||
</el-form-item>
|
||||
<el-form-item label="员工ID" prop="userId">
|
||||
<el-input v-model="formData.userId" placeholder="请输入员工ID" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工作流编号" prop="processInstanceId">
|
||||
<el-input v-model="formData.processInstanceId" placeholder="请输入工作流编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="审批状态" prop="auditStatus">
|
||||
<el-radio-group v-model="formData.auditStatus">
|
||||
<el-radio value="1">请选择字典生成</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="聘用形式(全职、见习、实习、劳务、劳动、联创、其他)" prop="employType">
|
||||
<el-select v-model="formData.employType" placeholder="请选择聘用形式(全职、见习、实习、劳务、劳动、联创、其他)">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_EMPLOY_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="员工签字" prop="eSignature">
|
||||
<el-input v-model="formData.eSignature" placeholder="请输入员工签字" />
|
||||
</el-form-item>
|
||||
<el-form-item label="提交日期" prop="submissionDate">
|
||||
<el-date-picker
|
||||
v-model="formData.submissionDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择提交日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import { UserOnboardingApi, UserOnboardingVO } from '@/api/hrm/useronboarding'
|
||||
|
||||
/** 入职申请 表单 */
|
||||
defineOptions({ name: 'UserOnboardingForm' })
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
talentId: undefined,
|
||||
userId: undefined,
|
||||
processInstanceId: undefined,
|
||||
auditStatus: undefined,
|
||||
employType: undefined,
|
||||
eSignature: undefined,
|
||||
submissionDate: undefined
|
||||
})
|
||||
const formRules = reactive({
|
||||
talentId: [{ required: true, message: '人才库id不能为空', trigger: 'blur' }],
|
||||
userId: [{ required: true, message: '员工ID不能为空', trigger: 'blur' }],
|
||||
auditStatus: [{ required: true, message: '审批状态不能为空', trigger: 'blur' }],
|
||||
submissionDate: [{ required: true, message: '提交日期不能为空', trigger: 'blur' }]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
/** 打开弹窗 */
|
||||
const open = async (type: string, id?: number) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = t('action.' + type)
|
||||
formType.value = type
|
||||
resetForm()
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
formLoading.value = true
|
||||
try {
|
||||
formData.value = await UserOnboardingApi.getUserOnboarding(id)
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const submitForm = async () => {
|
||||
// 校验表单
|
||||
await formRef.value.validate()
|
||||
// 提交请求
|
||||
formLoading.value = true
|
||||
try {
|
||||
const data = formData.value as unknown as UserOnboardingVO
|
||||
if (formType.value === 'create') {
|
||||
await UserOnboardingApi.createUserOnboarding(data)
|
||||
message.success(t('common.createSuccess'))
|
||||
} else {
|
||||
await UserOnboardingApi.updateUserOnboarding(data)
|
||||
message.success(t('common.updateSuccess'))
|
||||
}
|
||||
dialogVisible.value = false
|
||||
// 发送操作成功的事件
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
id: undefined,
|
||||
talentId: undefined,
|
||||
userId: undefined,
|
||||
processInstanceId: undefined,
|
||||
auditStatus: undefined,
|
||||
employType: undefined,
|
||||
eSignature: undefined,
|
||||
submissionDate: undefined
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,267 @@
|
|||
<template>
|
||||
<ContentWrap>
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form
|
||||
class="-mb-15px"
|
||||
:model="queryParams"
|
||||
ref="queryFormRef"
|
||||
:inline="true"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="人才库id" prop="talentId">
|
||||
<el-input
|
||||
v-model="queryParams.talentId"
|
||||
placeholder="请输入人才库id"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="员工ID" prop="userId">
|
||||
<el-input
|
||||
v-model="queryParams.userId"
|
||||
placeholder="请输入员工ID"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工作流编号" prop="processInstanceId">
|
||||
<el-input
|
||||
v-model="queryParams.processInstanceId"
|
||||
placeholder="请输入工作流编号"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="审批状态" prop="auditStatus">
|
||||
<el-select
|
||||
v-model="queryParams.auditStatus"
|
||||
placeholder="请选择审批状态"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option label="请选择字典生成" value="" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="聘用形式(全职、见习、实习、劳务、劳动、联创、其他)" prop="employType">
|
||||
<el-select
|
||||
v-model="queryParams.employType"
|
||||
placeholder="请选择聘用形式(全职、见习、实习、劳务、劳动、联创、其他)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_EMPLOY_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="员工签字" prop="eSignature">
|
||||
<el-input
|
||||
v-model="queryParams.eSignature"
|
||||
placeholder="请输入员工签字"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="提交日期" prop="submissionDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.submissionDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="创建时间" prop="createTime">
|
||||
<el-date-picker
|
||||
v-model="queryParams.createTime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
@click="openForm('create')"
|
||||
v-hasPermi="['hrm:user-onboarding:create']"
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExport"
|
||||
:loading="exportLoading"
|
||||
v-hasPermi="['hrm:user-onboarding:export']"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="主键,自动递增" align="center" prop="id" />
|
||||
<el-table-column label="人才库id" align="center" prop="talentId" />
|
||||
<el-table-column label="员工ID" align="center" prop="userId" />
|
||||
<el-table-column label="工作流编号" align="center" prop="processInstanceId" />
|
||||
<el-table-column label="审批状态" align="center" prop="auditStatus" />
|
||||
<el-table-column label="聘用形式(全职、见习、实习、劳务、劳动、联创、其他)" align="center" prop="employType">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HRM_EMPLOY_TYPE" :value="scope.row.employType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="员工签字" align="center" prop="eSignature" />
|
||||
<el-table-column label="提交日期" align="center" prop="submissionDate" />
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
prop="createTime"
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column label="操作" align="center" min-width="120px">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="openForm('update', scope.row.id)"
|
||||
v-hasPermi="['hrm:user-onboarding:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id)"
|
||||
v-hasPermi="['hrm:user-onboarding:delete']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 表单弹窗:添加/修改 -->
|
||||
<UserOnboardingForm ref="formRef" @success="getList" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import { dateFormatter } from '@/utils/formatTime'
|
||||
import download from '@/utils/download'
|
||||
import { UserOnboardingApi, UserOnboardingVO } from '@/api/hrm/useronboarding'
|
||||
import UserOnboardingForm from './UserOnboardingForm.vue'
|
||||
|
||||
/** 入职申请 列表 */
|
||||
defineOptions({ name: 'UserOnboarding' })
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref<UserOnboardingVO[]>([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
talentId: undefined,
|
||||
userId: undefined,
|
||||
processInstanceId: undefined,
|
||||
auditStatus: undefined,
|
||||
employType: undefined,
|
||||
eSignature: undefined,
|
||||
submissionDate: [],
|
||||
createTime: []
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await UserOnboardingApi.getUserOnboardingPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
/** 添加/修改操作 */
|
||||
const formRef = ref()
|
||||
const openForm = (type: string, id?: number) => {
|
||||
formRef.value.open(type, id)
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (id: number) => {
|
||||
try {
|
||||
// 删除的二次确认
|
||||
await message.delConfirm()
|
||||
// 发起删除
|
||||
await UserOnboardingApi.deleteUserOnboarding(id)
|
||||
message.success(t('common.delSuccess'))
|
||||
// 刷新列表
|
||||
await getList()
|
||||
} catch {}
|
||||
}
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
// 导出的二次确认
|
||||
await message.exportConfirm()
|
||||
// 发起导出
|
||||
exportLoading.value = true
|
||||
const data = await UserOnboardingApi.exportUserOnboarding(queryParams)
|
||||
download.excel(data, '入职申请.xls')
|
||||
} catch {
|
||||
} finally {
|
||||
exportLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 初始化 **/
|
||||
onMounted(() => {
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
|
|
@ -0,0 +1,138 @@
|
|||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
label-width="100px"
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-form-item label="员工档案ID(关联hrm_user_infor)" prop="userId">
|
||||
<el-input v-model="formData.userId" placeholder="请输入员工档案ID(关联hrm_user_infor)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单位名称" prop="companyName">
|
||||
<el-input v-model="formData.companyName" placeholder="请输入单位名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="部门名称" prop="deptName">
|
||||
<el-input v-model="formData.deptName" placeholder="请输入部门名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="职位名称" prop="postName">
|
||||
<el-input v-model="formData.postName" placeholder="请输入职位名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="开始日期" prop="startDate">
|
||||
<el-date-picker
|
||||
v-model="formData.startDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择开始日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="离职日期" prop="endDate">
|
||||
<el-date-picker
|
||||
v-model="formData.endDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="选择离职日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="待遇(元/月)" prop="monthlySalary">
|
||||
<el-input v-model="formData.monthlySalary" placeholder="请输入待遇(元/月)" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { UserWorkInfoApi, UserWorkInfoVO } from '@/api/hrm/userworkinfo'
|
||||
|
||||
/** 工作经历信息 表单 */
|
||||
defineOptions({ name: 'UserWorkInfoForm' })
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
userId: undefined,
|
||||
companyName: undefined,
|
||||
deptName: undefined,
|
||||
postName: undefined,
|
||||
startDate: undefined,
|
||||
endDate: undefined,
|
||||
monthlySalary: undefined
|
||||
})
|
||||
const formRules = reactive({
|
||||
userId: [{ required: true, message: '员工档案ID(关联hrm_user_infor)不能为空', trigger: 'blur' }],
|
||||
companyName: [{ required: true, message: '单位名称不能为空', trigger: 'blur' }],
|
||||
deptName: [{ required: true, message: '部门名称不能为空', trigger: 'blur' }],
|
||||
postName: [{ required: true, message: '职位名称不能为空', trigger: 'blur' }],
|
||||
startDate: [{ required: true, message: '开始日期不能为空', trigger: 'blur' }],
|
||||
endDate: [{ required: true, message: '离职日期不能为空', trigger: 'blur' }],
|
||||
monthlySalary: [{ required: true, message: '待遇(元/月)不能为空', trigger: 'blur' }]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
/** 打开弹窗 */
|
||||
const open = async (type: string, id?: number) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = t('action.' + type)
|
||||
formType.value = type
|
||||
resetForm()
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
formLoading.value = true
|
||||
try {
|
||||
formData.value = await UserWorkInfoApi.getUserWorkInfo(id)
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const submitForm = async () => {
|
||||
// 校验表单
|
||||
await formRef.value.validate()
|
||||
// 提交请求
|
||||
formLoading.value = true
|
||||
try {
|
||||
const data = formData.value as unknown as UserWorkInfoVO
|
||||
if (formType.value === 'create') {
|
||||
await UserWorkInfoApi.createUserWorkInfo(data)
|
||||
message.success(t('common.createSuccess'))
|
||||
} else {
|
||||
await UserWorkInfoApi.updateUserWorkInfo(data)
|
||||
message.success(t('common.updateSuccess'))
|
||||
}
|
||||
dialogVisible.value = false
|
||||
// 发送操作成功的事件
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
id: undefined,
|
||||
userId: undefined,
|
||||
companyName: undefined,
|
||||
deptName: undefined,
|
||||
postName: undefined,
|
||||
startDate: undefined,
|
||||
endDate: undefined,
|
||||
monthlySalary: undefined
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,237 @@
|
|||
<template>
|
||||
<ContentWrap>
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form
|
||||
class="-mb-15px"
|
||||
:model="queryParams"
|
||||
ref="queryFormRef"
|
||||
:inline="true"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="员工档案ID(关联hrm_user_infor)" prop="userId">
|
||||
<el-input
|
||||
v-model="queryParams.userId"
|
||||
placeholder="请输入员工档案ID(关联hrm_user_infor)"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="单位名称" prop="companyName">
|
||||
<el-input
|
||||
v-model="queryParams.companyName"
|
||||
placeholder="请输入单位名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门名称" prop="deptName">
|
||||
<el-input
|
||||
v-model="queryParams.deptName"
|
||||
placeholder="请输入部门名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="职位名称" prop="postName">
|
||||
<el-input
|
||||
v-model="queryParams.postName"
|
||||
placeholder="请输入职位名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="开始日期" prop="startDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.startDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="离职日期" prop="endDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.endDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="待遇(元/月)" prop="monthlySalary">
|
||||
<el-input
|
||||
v-model="queryParams.monthlySalary"
|
||||
placeholder="请输入待遇(元/月)"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
@click="openForm('create')"
|
||||
v-hasPermi="['hrm:user-work-info:create']"
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExport"
|
||||
:loading="exportLoading"
|
||||
v-hasPermi="['hrm:user-work-info:export']"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="唯一主键" align="center" prop="id" />
|
||||
<el-table-column label="员工档案ID(关联hrm_user_infor)" align="center" prop="userId" />
|
||||
<el-table-column label="单位名称" align="center" prop="companyName" />
|
||||
<el-table-column label="部门名称" align="center" prop="deptName" />
|
||||
<el-table-column label="职位名称" align="center" prop="postName" />
|
||||
<el-table-column label="开始日期" align="center" prop="startDate" />
|
||||
<el-table-column label="离职日期" align="center" prop="endDate" />
|
||||
<el-table-column label="待遇(元/月)" align="center" prop="monthlySalary" />
|
||||
<el-table-column label="操作" align="center" min-width="120px">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="openForm('update', scope.row.id)"
|
||||
v-hasPermi="['hrm:user-work-info:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id)"
|
||||
v-hasPermi="['hrm:user-work-info:delete']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 表单弹窗:添加/修改 -->
|
||||
<UserWorkInfoForm ref="formRef" @success="getList" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import download from '@/utils/download'
|
||||
import { UserWorkInfoApi, UserWorkInfoVO } from '@/api/hrm/userworkinfo'
|
||||
import UserWorkInfoForm from './UserWorkInfoForm.vue'
|
||||
|
||||
/** 工作经历信息 列表 */
|
||||
defineOptions({ name: 'UserWorkInfo' })
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref<UserWorkInfoVO[]>([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
userId: undefined,
|
||||
companyName: undefined,
|
||||
deptName: undefined,
|
||||
postName: undefined,
|
||||
startDate: [],
|
||||
endDate: [],
|
||||
monthlySalary: undefined
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await UserWorkInfoApi.getUserWorkInfoPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
/** 添加/修改操作 */
|
||||
const formRef = ref()
|
||||
const openForm = (type: string, id?: number) => {
|
||||
formRef.value.open(type, id)
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (id: number) => {
|
||||
try {
|
||||
// 删除的二次确认
|
||||
await message.delConfirm()
|
||||
// 发起删除
|
||||
await UserWorkInfoApi.deleteUserWorkInfo(id)
|
||||
message.success(t('common.delSuccess'))
|
||||
// 刷新列表
|
||||
await getList()
|
||||
} catch {}
|
||||
}
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
// 导出的二次确认
|
||||
await message.exportConfirm()
|
||||
// 发起导出
|
||||
exportLoading.value = true
|
||||
const data = await UserWorkInfoApi.exportUserWorkInfo(queryParams)
|
||||
download.excel(data, '工作经历信息.xls')
|
||||
} catch {
|
||||
} finally {
|
||||
exportLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 初始化 **/
|
||||
onMounted(() => {
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
Loading…
Reference in New Issue