<template>
|
<el-dialog title="社保申请" append-to-body :visible.sync="dialogVisible" width="50%" @close="handleClose">
|
<el-form
|
ref="insuranceForm"
|
: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-form-item label="社保申请日期" prop="applayDate">
|
<el-date-picker
|
v-model="formData.applayDate"
|
value-format="yyyy-MM-dd"
|
type="date"
|
placeholder="选择社保申请日期"
|
/>
|
</el-form-item>
|
<el-form-item label="社保档位" prop="insuranceGaers">
|
<el-select v-model="formData.insuranceGaers" placeholder="请选择社保档位">
|
<el-option
|
v-for="dict in insuranceGaersOptions"
|
:key="dict.dicItemCode"
|
:label="dict.dicItemName"
|
:value="dict.dicItemCode"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="状态" prop="applayStatus">
|
<el-select v-model="formData.applayStatus" placeholder="请选择状态">
|
<el-option
|
v-for="dict in applayStatusOptions"
|
: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-form-item label="申请人" prop="proposer">
|
<el-input v-model="formData.proposer" />
|
</el-form-item>
|
<el-form-item label="是否已经报告">
|
<el-select v-model="formData.reportStatus" placeholder="是否已经报告">
|
<el-option
|
v-for="dict in reportStatusOptions"
|
:key="dict.dicItemCode"
|
:label="dict.dicItemName"
|
:value="dict.dicItemCode"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="审批人">
|
<el-input v-model="formData.auditor" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="备注">
|
<el-input v-model="formData.remark" 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: 'SocialSecurityEdit',
|
props: {
|
visible: {
|
type: Boolean,
|
default: false
|
},
|
isAdd: {
|
type: Boolean,
|
default: true
|
},
|
editData: {
|
type: Object,
|
default: () => ({})
|
},
|
sexOptions: {
|
type: Array,
|
default: () => []
|
},
|
insuranceGaersOptions: {
|
type: Array,
|
default: () => []
|
},
|
applayStatusOptions: {
|
type: Array,
|
default: () => []
|
},
|
reportStatusOptions: {
|
type: Array,
|
default: () => []
|
},
|
showContinueButton: {
|
type: Boolean,
|
default: false
|
},
|
empInfoDisabled: {
|
type: Boolean,
|
default: true
|
}
|
},
|
data() {
|
return {
|
formData: this.getEmptyForm(),
|
rules: {
|
applayDate: [{ required: true, message: '请选择申请日期', trigger: 'change' }],
|
proposer: [{ required: true, message: '请输入申请人', trigger: 'blur' }, {
|
max: 40,
|
message: '长度不超过40个字符',
|
trigger: 'blur'
|
}],
|
insuranceGaers: [{ required: true, message: '请选择社保档位', trigger: 'change' }],
|
auditor: [{ max: 40, message: '长度不超过40个字符', trigger: 'blur' }],
|
remark: [{ max: 512, message: '长度不超过512个字符', trigger: 'blur' }],
|
applayStatus: [{ required: true, message: '请选择申请状态', trigger: 'change' }]
|
}
|
}
|
},
|
computed: {
|
dialogVisible: {
|
get() {
|
return this.visible
|
},
|
set(val) {
|
this.$emit('update:visible', val)
|
}
|
}
|
},
|
watch: {
|
visible(val) {
|
if (val && !this.isAdd && this.editData) {
|
const data = { ...this.editData }
|
data.reportStatus = data.reportStatus === 0 ? '' : '' + data.reportStatus
|
data.applayStatus = data.applayStatus === 0 ? '' : '' + data.applayStatus
|
this.formData = { ...this.getEmptyForm(), ...data }
|
} 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 {
|
insuranceId: '',
|
empId: '',
|
empNumb: '',
|
empName: '',
|
sex: '',
|
certificateNumb: '',
|
deptId: '',
|
deptName: '',
|
allDeptName: '',
|
JobId: '',
|
jobName: '',
|
applayDate: '',
|
proposer: '',
|
insuranceGaers: '',
|
reportStatus: '',
|
applayStatus: '',
|
auditor: '',
|
delFlag: '2',
|
empStatus: 0,
|
version: '',
|
remark: ''
|
}
|
},
|
handleSave() {
|
this.$refs.insuranceForm.validate((valid) => {
|
if (valid) {
|
if (this.isAdd) {
|
this.formData.delFlag = '2'
|
this.$post('hr/empInsurance', { ...this.formData }).then(() => {
|
this.$message({
|
message: this.$t('tips.createSuccess'),
|
type: 'success'
|
})
|
this.$emit('success')
|
this.handleClose()
|
})
|
} else {
|
this.$put('hr/empInsurance', { ...this.formData }).then(() => {
|
this.$message({
|
message: this.$t('tips.updateSuccess'),
|
type: 'success'
|
})
|
this.$emit('success')
|
this.handleClose()
|
})
|
}
|
}
|
})
|
},
|
handleSaveContinue() {
|
this.$refs.insuranceForm.validate((valid) => {
|
if (valid && this.isAdd) {
|
this.formData.delFlag = '2'
|
this.$post('hr/empInsurance', { ...this.formData }).then(() => {
|
this.$message({
|
message: this.$t('tips.createSuccess'),
|
type: 'success'
|
})
|
this.$emit('continue')
|
})
|
}
|
})
|
},
|
handleClose() {
|
this.$refs.insuranceForm.resetFields()
|
this.formData = this.getEmptyForm()
|
this.dialogVisible = false
|
}
|
}
|
}
|
</script>
|