<template>
|
<el-dialog title="意外险案件" append-to-body :visible.sync="dialogVisible" width="50%" @close="handleClose">
|
<el-form
|
ref="accidentCasesForm"
|
: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="injuredTime">
|
<el-date-picker
|
v-model="formData.injuredTime"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
type="datetime"
|
placeholder="选择受伤时间"
|
/>
|
</el-form-item>
|
<el-form-item label="受伤部位" prop="injuredPart">
|
<el-input v-model="formData.injuredPart" />
|
</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="受伤地点">
|
<el-input v-model="formData.injuredAddress" />
|
</el-form-item>
|
<el-form-item label="意外险诊断">
|
<el-input v-model="formData.injuredDiacrisis" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="受伤经过描述" prop="injuredDescribe">
|
<el-input v-model="formData.injuredDescribe" type="textarea" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="就诊医院" prop="hospitalName">
|
<el-input v-model="formData.hospitalName" />
|
</el-form-item>
|
<el-form-item label="是否住院" prop="hospitalizatioFlag">
|
<el-select v-model="formData.hospitalizatioFlag" placeholder="是否住院">
|
<el-option
|
v-for="dict in hospitalizatioFlagOptions"
|
:key="dict.dicItemCode"
|
:label="dict.dicItemName"
|
:value="dict.dicItemCode"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="报案时间">
|
<el-date-picker
|
v-model="formData.reprotTime"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
type="datetime"
|
placeholder="选择报案时间"
|
/>
|
</el-form-item>
|
<el-form-item label="递交人">
|
<el-input v-model="formData.sbumitBy" />
|
</el-form-item>
|
<el-form-item label="保险赔付费用" prop="innsureFee">
|
<el-input v-model="formData.innsureFee" />
|
</el-form-item>
|
<el-form-item label="人事处理时间">
|
<el-date-picker
|
v-model="formData.hrDoDate"
|
value-format="yyyy-MM-dd"
|
type="date"
|
placeholder="选择人事处理时间"
|
/>
|
</el-form-item>
|
|
<el-form-item label="案结时间" prop="settleDate">
|
<el-date-picker
|
v-model="formData.settleDate"
|
value-format="yyyy-MM-dd"
|
type="date"
|
placeholder="选择案结时间"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="就诊科室">
|
<el-input v-model="formData.treatmentName" />
|
</el-form-item>
|
<el-form-item label="床号">
|
<el-input v-model="formData.bedNumb" />
|
</el-form-item>
|
<el-form-item label="递交资料时间">
|
<el-date-picker
|
v-model="formData.submitTime"
|
value-format="yyyy-MM-dd"
|
type="date"
|
placeholder="选择递交资料时间"
|
/>
|
</el-form-item>
|
<el-form-item label="医疗总费用" prop="expensesFee">
|
<el-input v-model="formData.expensesFee" />
|
</el-form-item>
|
<el-form-item label="报单号">
|
<el-input v-model="formData.expenseReport" />
|
</el-form-item>
|
<el-form-item label="状态" prop="settleStatus">
|
<el-select v-model="formData.settleStatus" placeholder="">
|
<el-option
|
v-for="dict in settleStatusOptions"
|
:key="dict.dicItemCode"
|
:label="dict.dicItemName"
|
:value="dict.dicItemCode"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="备注">
|
<el-input v-model="formData.remark" />
|
</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: 'AccidentInsuranceEdit',
|
props: {
|
visible: {
|
type: Boolean,
|
default: false
|
},
|
isAdd: {
|
type: Boolean,
|
default: true
|
},
|
editData: {
|
type: Object,
|
default: () => ({})
|
},
|
sexOptions: {
|
type: Array,
|
default: () => []
|
},
|
hospitalizatioFlagOptions: {
|
type: Array,
|
default: () => []
|
},
|
settleStatusOptions: {
|
type: Array,
|
default: () => []
|
},
|
showContinueButton: {
|
type: Boolean,
|
default: false
|
},
|
empInfoDisabled: {
|
type: Boolean,
|
default: true
|
}
|
},
|
data() {
|
return {
|
formData: this.getEmptyForm(),
|
rules: {
|
injuredTime: [{ required: true, message: '请选择受伤时间', trigger: 'blur' }],
|
injuredPart: [{ required: true, message: '请输入受伤部位', trigger: 'blur' }, {
|
max: 40,
|
message: '长度不超过40个字符',
|
trigger: 'blur'
|
}],
|
injuredAddress: [{ required: true, message: '请输入受伤地点', trigger: 'blur' }, {
|
max: 64,
|
message: '长度不超过64个字符',
|
trigger: 'blur'
|
}],
|
injuredDescribe: [{ required: true, message: '请输入受伤经过描述', trigger: 'blur' }, {
|
max: 512,
|
message: '长度不超过512个字符',
|
trigger: 'blur'
|
}],
|
hospitalName: [{ required: true, message: '请输入就诊医院', trigger: 'blur' }, {
|
max: 40,
|
message: '长度不超过40个字符',
|
trigger: 'blur'
|
}],
|
hospitalizatioFlag: [{ required: true, message: '请选择是否住院', trigger: 'blur' }],
|
innsureFee: [{ required: true, message: '请输入保险赔付费用', trigger: 'blur' }],
|
expensesFee: [{ required: true, message: '请输入医疗总费用', trigger: 'blur' }],
|
settleDate: [{ required: true, message: '请选择案结时间', trigger: 'change' }],
|
injuredDiacrisis: [{ max: 256, message: '长度不超过256个字符', trigger: 'blur' }],
|
sbumitBy: [{ max: 40, message: '长度不超过40个字符', trigger: 'blur' }],
|
expenseReport: [{ max: 40, message: '长度不超过40个字符', trigger: 'blur' }],
|
remark: [{ 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) {
|
const data = { ...this.editData }
|
data.hospitalizatioFlag = '' + data.hospitalizatioFlag
|
data.settleStatus = '' + data.settleStatus
|
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 {
|
accidentId: '',
|
empId: '',
|
empNumb: '',
|
empName: '',
|
sex: '',
|
certificateNumb: '',
|
deptId: '',
|
deptName: '',
|
allDeptName: '',
|
JobId: '',
|
jobName: '',
|
injuredTime: '',
|
injuredAddress: '',
|
injuredPart: '',
|
injuredDiacrisis: '',
|
injuredDescribe: '',
|
hospitalName: '',
|
treatmentName: '',
|
hospitalizatioFlag: '',
|
bedNumb: '',
|
reprotTime: '',
|
submitTime: '',
|
sbumitBy: '',
|
expensesFee: '',
|
expenseReport: '',
|
innsureFee: '',
|
hrDoDate: '',
|
settleDate: '',
|
settleStatus: '',
|
remark: '',
|
delFlag: '2',
|
empStatus: 0,
|
version: ''
|
}
|
},
|
handleSave() {
|
this.$refs.accidentCasesForm.validate((valid) => {
|
if (valid) {
|
if (this.isAdd) {
|
this.formData.delFlag = '2'
|
this.$post('hr/empAccidentCases', { ...this.formData }).then(() => {
|
this.$message({
|
message: this.$t('tips.createSuccess'),
|
type: 'success'
|
})
|
this.$emit('success')
|
this.handleClose()
|
})
|
} else {
|
this.$put('hr/empAccidentCases', { ...this.formData }).then(() => {
|
this.$message({
|
message: this.$t('tips.updateSuccess'),
|
type: 'success'
|
})
|
this.$emit('success')
|
this.handleClose()
|
})
|
}
|
}
|
})
|
},
|
handleSaveContinue() {
|
this.$refs.accidentCasesForm.validate((valid) => {
|
if (valid && this.isAdd) {
|
this.formData.delFlag = '2'
|
this.$post('hr/empAccidentCases', { ...this.formData }).then(() => {
|
this.$message({
|
message: this.$t('tips.createSuccess'),
|
type: 'success'
|
})
|
this.$emit('continue')
|
})
|
}
|
})
|
},
|
handleClose() {
|
this.$refs.accidentCasesForm.resetFields()
|
this.formData = this.getEmptyForm()
|
this.dialogVisible = false
|
}
|
}
|
}
|
</script>
|