| | |
| | | </div> |
| | | <el-form-item :prop="'insuranceBenefits.' + index + '.insuranceType'" |
| | | label="保险类型:" |
| | | label-width="100px"> |
| | | label-width="100px" |
| | | :rules="[{ required: true, message: '请选择保险类型', trigger: 'blur' }]" |
| | | > |
| | | <el-select v-model="item.insuranceType" |
| | | placeholder="请选择" |
| | | clearable |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="缴费基数:" |
| | | label-width="100px"> |
| | | label-width="100px" |
| | | :prop="'insuranceBenefits.' + index + '.paymentBase'" |
| | | :rules="[{ validator: validatePaymentBase, trigger: 'blur' }]"> |
| | | <div class="base-salary-wrap"> |
| | | <el-input v-model="item.paymentBase" |
| | | placeholder="根据基本工资缴纳" |
| | |
| | | :disabled="isDetail || item.useBasicSalary" |
| | | @input="handlePaymentBaseInput(item)" /> |
| | | <el-checkbox v-model="item.useBasicSalary" |
| | | @change="handleUseBasicSalaryChange(item)" |
| | | @change="(val) => handleUseBasicSalaryChange(item, index)" |
| | | :disabled="isDetail"> |
| | | 调用基本工资 |
| | | </el-checkbox> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="个人缴费比例:" |
| | | label-width="100px"> |
| | | label-width="100px" |
| | | :prop="'insuranceBenefits.' + index + '.personalRatio'" |
| | | :rules="[{ required: true, message: '请输入个人缴费比例', trigger: 'blur' }]"> |
| | | <div class="personal-ratio-wrap"> |
| | | <el-input v-model="item.personalRatio" |
| | | placeholder="请输入" |
| | |
| | | form.value.insuranceBenefits.splice(index, 1); |
| | | }; |
| | | |
| | | const handleUseBasicSalaryChange = item => { |
| | | const handleUseBasicSalaryChange = (item, index) => { |
| | | if (item.useBasicSalary) { |
| | | item.paymentBase = ""; |
| | | } |
| | | nextTick(() => { |
| | | formRef.value?.validateField(`insuranceBenefits.${index}.paymentBase`); |
| | | }); |
| | | }; |
| | | |
| | | const handlePaymentBaseInput = item => { |
| | |
| | | } |
| | | }; |
| | | |
| | | const validatePaymentBase = (rule, value, callback) => { |
| | | const match = rule.field.match(/insuranceBenefits\.(\d+)\.paymentBase/); |
| | | if (match) { |
| | | const index = parseInt(match[1], 10); |
| | | const item = form.value.insuranceBenefits[index]; |
| | | if (item && !item.useBasicSalary && (!value || value === "")) { |
| | | callback(new Error("请输入缴费基数")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | |
| | | const resetForm = () => { |
| | | form.value = { |
| | | id: undefined, |