<template>
|
<el-dialog title="工作经历" append-to-body :visible.sync="dialogVisible" width="50%" @close="handleClose">
|
<el-form
|
ref="workExperienceForm"
|
:model="formData"
|
:rules="rules"
|
label-position="right"
|
label-width="120px"
|
>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="姓名" prop="empName">
|
<el-input v-model="formData.empName" :disabled="empInfoDisabled">
|
<el-button v-if="!empInfoDisabled" slot="append" icon="el-icon-search" @click="$emit('select-employee')" />
|
</el-input>
|
</el-form-item>
|
<el-form-item label="身份证号码" prop="certificateNumb">
|
<el-input v-model="formData.certificateNumb" :disabled="empInfoDisabled" />
|
</el-form-item>
|
<el-form-item label="性别" prop="sex">
|
<el-select v-model="formData.sex" placeholder="请选择性别" :disabled="empInfoDisabled">
|
<el-option
|
v-for="dict in sexOptions"
|
:key="dict.dicItemCode"
|
:label="dict.dicItemName"
|
:value="dict.dicItemCode"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="员工编号" prop="empNumb">
|
<el-input v-model="formData.empNumb" :disabled="empInfoDisabled" />
|
</el-form-item>
|
<el-form-item label="部门(护卫点)" prop="allDeptName">
|
<el-input v-model="formData.allDeptName" :disabled="empInfoDisabled" />
|
</el-form-item>
|
<el-form-item label="岗位" prop="jobName">
|
<el-input v-model="formData.jobName" :disabled="empInfoDisabled" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="工作单位" prop="workUnit">
|
<el-input v-model="formData.workUnit" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="开始日期" prop="beginDate">
|
<el-date-picker
|
v-model="formData.beginDate"
|
type="date"
|
value-format="yyyy-MM-dd"
|
placeholder="年-月-日"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="结束日期" prop="endDate">
|
<el-date-picker
|
v-model="formData.endDate"
|
type="date"
|
value-format="yyyy-MM-dd"
|
placeholder="年-月-日"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="主要工作内容" prop="jobContent">
|
<el-input v-model="formData.jobContent" type="textarea" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button type="primary" @click="handleSave">保 存</el-button>
|
<el-button v-if="isAdd && showContinueButton" type="primary" @click="handleSaveContinue">保存并继续新增</el-button>
|
</div>
|
</el-dialog>
|
</template>
|
|
<script>
|
export default {
|
name: 'WorkExperienceEdit',
|
props: {
|
visible: {
|
type: Boolean,
|
default: false
|
},
|
isAdd: {
|
type: Boolean,
|
default: true
|
},
|
editData: {
|
type: Object,
|
default: () => ({})
|
},
|
sexOptions: {
|
type: Array,
|
default: () => []
|
},
|
showContinueButton: {
|
type: Boolean,
|
default: false
|
},
|
empInfoDisabled: {
|
type: Boolean,
|
default: true
|
}
|
},
|
data() {
|
return {
|
formData: this.getEmptyForm(),
|
rules: {
|
workUnit: [{ required: true, message: '请输入工作单位', trigger: 'blur' }, {
|
max: 128,
|
message: '长度不超过128个字符',
|
trigger: 'blur'
|
}],
|
beginDate: [{ required: true, message: '请选择开始时间', trigger: 'change' }],
|
endDate: [{ required: true, message: '请选择结束时间', trigger: 'change' }],
|
jobContent: [{ max: 512, message: '长度不超过512个字符', trigger: 'blur' }]
|
}
|
}
|
},
|
computed: {
|
dialogVisible: {
|
get() {
|
return this.visible
|
},
|
set(val) {
|
this.$emit('update:visible', val)
|
}
|
}
|
},
|
watch: {
|
visible(val) {
|
if (val && !this.isAdd && this.editData) {
|
this.formData = { ...this.getEmptyForm(), ...this.editData }
|
} else if (val && this.isAdd) {
|
this.formData = { ...this.getEmptyForm(), ...this.editData }
|
}
|
},
|
editData: {
|
deep: true,
|
handler(val) {
|
if (this.visible && val) {
|
this.formData = { ...this.formData, ...val }
|
}
|
}
|
}
|
},
|
methods: {
|
getEmptyForm() {
|
return {
|
workExperienceId: '',
|
empId: '',
|
empNumb: '',
|
empName: '',
|
certificateNumb: '',
|
sex: '',
|
deptId: '',
|
deptName: '',
|
allDeptName: '',
|
JobId: '',
|
jobName: '',
|
workUnit: '',
|
beginDate: '',
|
endDate: '',
|
jobContent: '',
|
empStatus: 0,
|
version: ''
|
}
|
},
|
handleSave() {
|
this.$refs.workExperienceForm.validate((valid) => {
|
if (valid) {
|
if (this.isAdd) {
|
this.$post('hr/empWorkExperience', { ...this.formData }).then(() => {
|
this.$message({
|
message: this.$t('tips.createSuccess'),
|
type: 'success'
|
})
|
this.dialogVisible = false
|
this.$emit('success')
|
})
|
} else {
|
this.$put('hr/empWorkExperience', { ...this.formData }).then(() => {
|
this.$message({
|
message: this.$t('tips.updateSuccess'),
|
type: 'success'
|
})
|
this.dialogVisible = false
|
this.$emit('success')
|
})
|
}
|
}
|
})
|
},
|
handleSaveContinue() {
|
this.$refs.workExperienceForm.validate((valid) => {
|
if (valid && this.isAdd) {
|
this.formData.delFlag = '2'
|
this.$post('hr/empWorkExperience', { ...this.formData }).then(() => {
|
this.$message({
|
message: this.$t('tips.createSuccess'),
|
type: 'success'
|
})
|
this.$refs.workExperienceForm.resetFields()
|
this.formData = this.getEmptyForm()
|
this.$emit('continue')
|
})
|
}
|
})
|
},
|
handleClose() {
|
if (this.$refs.workExperienceForm) {
|
this.$refs.workExperienceForm.resetFields()
|
}
|
this.formData = this.getEmptyForm()
|
this.$emit('close')
|
}
|
}
|
}
|
</script>
|
|
<style scoped>
|
</style>
|