huminmin
昨天 80a2014c36cec818464a9c7f090eadf0b4a14b8c
社保方案保险类型和基数必填
已修改1个文件
34 ■■■■ 文件已修改
src/views/personnelManagement/socialSecuritySet/components/formDia.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/socialSecuritySet/components/formDia.vue
@@ -90,7 +90,9 @@
                    </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
@@ -103,7 +105,9 @@
                      </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="根据基本工资缴纳"
@@ -113,14 +117,16 @@
                                  :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="请输入"
@@ -259,10 +265,13 @@
    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 => {
@@ -289,6 +298,21 @@
    }
  };
  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,