<template>
|
<el-dialog
|
title="关闭档案"
|
:visible.sync="dialogVisible"
|
width="70%"
|
@close="handleClose"
|
>
|
<el-form
|
ref="gbdaForm"
|
:model="formData"
|
:rules="rules"
|
label-position="right"
|
label-width="120px"
|
>
|
<el-row>
|
<el-col span="24">
|
<el-form-item label="离职类型" prop="dimissionType">
|
<el-radio-group v-model="formData.dimissionType" @change="handleDimissionTypeChange">
|
<el-radio
|
v-for="dict in dimissionTypeOptions"
|
:key="dict.dicItemCode"
|
:label="Number(dict.dicItemCode)"
|
>
|
{{ dict.dicItemName }}
|
</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-col>
|
<el-col v-if="selectDimissionType === 4" span="12">
|
<el-form-item label="自离天数" prop="selfLeaveDay">
|
<el-input v-model="formData.selfLeaveDay" onkeyup="value=value.replace(/[^0-9.]/g,'')" />
|
</el-form-item>
|
</el-col>
|
<el-col v-if="selectDimissionType === 4" span="12">
|
<el-form-item label="报告人" prop="reporter">
|
<el-input v-model="formData.reporter" />
|
</el-form-item>
|
</el-col>
|
<el-col span="24">
|
<el-form-item label="离职操作" prop="afterOperation">
|
<el-checkbox-group v-model="formData.afterOperation">
|
<el-checkbox label="1">解除劳动合同</el-checkbox>
|
<el-checkbox label="2">禁用登录账号</el-checkbox>
|
</el-checkbox-group>
|
</el-form-item>
|
</el-col>
|
<el-col span="24">
|
<el-form-item label="关闭日期" prop="dimissionDate">
|
<el-date-picker
|
v-model="formData.dimissionDate"
|
type="date"
|
value-format="yyyy-MM-dd"
|
placeholder="选择日期"
|
style="width: 100%"
|
/>
|
</el-form-item>
|
<el-form-item label="备注说明" prop="remark">
|
<el-input v-model="formData.remark" type="textarea" :rows="4" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="handleCancel">取 消</el-button>
|
<el-button type="primary" @click="handleConfirm">确 定</el-button>
|
</div>
|
</el-dialog>
|
</template>
|
|
<script>
|
export default {
|
name: 'CloseArchivesDialog',
|
props: {
|
visible: {
|
type: Boolean,
|
default: false
|
},
|
employees: {
|
type: Array,
|
default: () => []
|
},
|
dimissionTypeOptions: {
|
type: Array,
|
default: () => []
|
}
|
},
|
data() {
|
return {
|
formData: {
|
empIds: '',
|
dgryNames: '',
|
entryDates: '',
|
dimissionType: 1,
|
dimissionDate: '',
|
remark: '',
|
afterOperation: ['1'],
|
certificateNumb: '',
|
deptNames: '',
|
selfLeaveDay: '',
|
reporter: ''
|
},
|
rules: {
|
dimissionType: [
|
{ required: true, message: '请选择离职类型', trigger: 'change' }
|
],
|
dimissionDate: [
|
{ required: true, message: '请选择关闭日期', trigger: 'change' }
|
],
|
selfLeaveDay: [
|
{ required: true, validator: this.validSelfLeaveDay }
|
],
|
reporter: [
|
{ required: true, validator: this.validReporter }
|
],
|
remark: [
|
{ max: 500, message: '长度不超过500个字符', trigger: 'blur' }
|
]
|
},
|
selectDimissionType: 1
|
}
|
},
|
computed: {
|
dialogVisible: {
|
get() {
|
return this.visible
|
},
|
set(val) {
|
this.$emit('update:visible', val)
|
}
|
}
|
},
|
watch: {
|
employees: {
|
handler(val) {
|
if (val && val.length > 0) {
|
this.initFormData(val)
|
}
|
},
|
immediate: false
|
}
|
},
|
methods: {
|
// 初始化表单数据
|
initFormData(employees) {
|
const ids = []
|
const names = []
|
const dates = []
|
const numbers = []
|
const deptNames = []
|
|
employees.forEach(emp => {
|
ids.push(emp.empId)
|
names.push(emp.empName)
|
dates.push(emp.entryDate)
|
numbers.push(emp.certificateNumb)
|
deptNames.push(emp.allDeptName)
|
})
|
|
// 默认关闭日期为当天
|
const now = new Date()
|
const year = now.getFullYear()
|
const month = String(now.getMonth() + 1).padStart(2, '0')
|
const day = String(now.getDate()).padStart(2, '0')
|
|
this.formData = {
|
empIds: ids.join(','),
|
dgryNames: names.join(','),
|
entryDates: dates.join(','),
|
dimissionType: 1,
|
dimissionDate: year + '-' + month + '-' + day,
|
remark: '',
|
afterOperation: ['1'],
|
certificateNumb: numbers.join(','),
|
deptNames: deptNames.join(','),
|
selfLeaveDay: '',
|
reporter: ''
|
}
|
this.selectDimissionType = 1
|
},
|
|
// 切换离职类型
|
handleDimissionTypeChange(value) {
|
this.selectDimissionType = value
|
},
|
|
// 自离天数验证
|
validSelfLeaveDay(rule, value, callback) {
|
const type = this.formData.dimissionType
|
if (type === 4) {
|
if (!value) {
|
callback(new Error('自动离职时自离天数不能为空!'))
|
} else {
|
callback()
|
}
|
} else {
|
callback()
|
}
|
},
|
|
// 报告人验证
|
validReporter(rule, value, callback) {
|
const type = this.formData.dimissionType
|
if (type === 4) {
|
if (!value) {
|
callback(new Error('自动离职时报告人不能为空!'))
|
} else {
|
if (value.length > 32) {
|
callback(new Error('自动离职时报告人最多32个字符!'))
|
} else {
|
callback()
|
}
|
}
|
} else {
|
callback()
|
}
|
},
|
|
// 确认提交
|
handleConfirm() {
|
this.$refs.gbdaForm.validate((valid) => {
|
if (valid) {
|
this.$post('hr/empBaseInfo/dimission', { ...this.formData }).then(() => {
|
this.$message({
|
message: '员工档案关闭成功',
|
type: 'success'
|
})
|
this.dialogVisible = false
|
this.$emit('success')
|
})
|
}
|
})
|
},
|
|
// 取消
|
handleCancel() {
|
this.dialogVisible = false
|
this.$emit('close')
|
},
|
|
// 关闭对话框
|
handleClose() {
|
if (this.$refs.gbdaForm) {
|
this.$refs.gbdaForm.resetFields()
|
}
|
this.selectDimissionType = 1
|
this.$emit('close')
|
}
|
}
|
}
|
</script>
|
|
<style scoped>
|
</style>
|