gaoluyang
2025-11-25 30ad33f26a0ba587ed5f03cc155f8eb9f1513ff9
src/views/personnelManagement/onboarding/components/formDiaXJHT.vue
@@ -59,6 +59,11 @@
          </el-col>
        </el-row>
        <el-row :gutter="30">
               <el-col :span="12">
                  <el-form-item label="身份证号:" prop="identityCard">
                     <el-input v-model="form.identityCard" placeholder="请输入身份证号码" clearable maxlength="18" />
                  </el-form-item>
               </el-col>
          <el-col :span="12">
            <el-form-item label="年龄:" prop="age">
              <el-input-number v-model="form.age" :precision="0" :step="1" style="width: 100%"/>
@@ -84,9 +89,9 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="合同签订日期:" prop="trialStartDate">
            <el-form-item label="合同签订日期:" prop="signDate">
              <el-date-picker
                  v-model="form.trialStartDate"
                  v-model="form.signDate"
                  type="date"
                  placeholder="请选择日期"
                  value-format="YYYY-MM-DD"
@@ -116,9 +121,9 @@
        </el-row>
        <el-row :gutter="30" v-if="showProbationDates">
          <el-col :span="12">
            <el-form-item label="试用期开始日期:" prop="signDate">
            <el-form-item label="试用期开始日期:" prop="trialStartDate">
              <el-date-picker
                  v-model="form.signDate"
                  v-model="form.trialStartDate"
                  type="date"
                  placeholder="请选择日期"
                  value-format="YYYY-MM-DD"
@@ -142,13 +147,13 @@
            </el-form-item>
          </el-col>
        </el-row>
<!--        <el-row :gutter="30">-->
<!--          <el-col :span="12">-->
<!--            <el-form-item label="合同年限:" prop="contractTerm">-->
<!--              <el-input-number v-model="form.contractTerm" :precision="0" :step="1" style="width: 100%" :disabled="true"/>-->
<!--            </el-form-item>-->
<!--          </el-col>-->
<!--        </el-row>-->
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="合同年限:" prop="contractTerm">
              <el-input-number v-model="form.contractTerm" :precision="0" :step="1" style="width: 100%" :disabled="true"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="合同开始日期:" prop="contractStartTime">
@@ -160,6 +165,7 @@
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
                           @change="calculateContractTerm"
              />
            </el-form-item>
          </el-col>
@@ -173,6 +179,7 @@
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
                           @change="calculateContractTerm"
              />
            </el-form-item>
          </el-col>
@@ -234,6 +241,7 @@
    staffNo: "",
    staffName: "",
    sex: "",
    identityCard: "",
    nativePlace: "",
    postJob: "",
    adress: "",
@@ -244,20 +252,22 @@
    emergencyContact: "",
    emergencyContactPhone: "",
    dateSelect: "",
    signDate: "",
      trialStartDate: "",
    trialEndDate: "",
    proSalary: null,
    trialStartDate: "",
    signDate: "",
    salarySelect: "",
    // contractTerm: 0,
    contractTerm: 0,
    contractStartTime: "",
    contractEndTime: "",
    staffState: "",
      remark: "无",
  },
  rules: {
    staffNo: [{ required: true, message: "请输入", trigger: "blur" },],
    staffName: [{ required: true, message: "请输入", trigger: "blur" }],
    sex: [{ required: true, message: "请输入", trigger: "blur" }],
    identityCard: [{ required: true, message: "请输入身份证号码", trigger: "blur" }],
    nativePlace: [{ required: true, message: "请输入", trigger: "blur" }],
    postJob: [{ required: true, message: "请输入", trigger: "blur" }],
    adress: [{ required: true, message: "请输入", trigger: "blur" }],
@@ -268,13 +278,14 @@
    emergencyContact: [{ required: true, message: "请输入", trigger: "blur" }],
      remark: [{ required: false, message: "请输入", trigger: "blur" }],
    dateSelect: [{ required: true, message: "请选择劳动合同期限", trigger: "change" }],
    signDate: [{ required: true, message: "请选择", trigger: "change" }],
      trialStartDate: [{ required: true, message: "请选择", trigger: "change" }],
    trialEndDate: [{ required: true, message: "请选择", trigger: "change" }],
    trialStartDate: [{ required: true, message: "请选择", trigger: "change" }],
    signDate: [{ required: true, message: "请选择", trigger: "change" }],
    salarySelect: [{ required: true, message: "请选择工资报酬方式", trigger: "change" }],
    // contractTerm: [{ required: true, message: "请输入", trigger: "blur" }],
    contractTerm: [{ required: true, message: "请输入", trigger: "blur" }],
    contractStartTime: [{ required: true, message: "请输入", trigger: "blur" }],
    contractEndTime: [{ required: true, message: "请输入", trigger: "blur" }],
      proSalary: [{ required: true, message: "请输入", trigger: "blur" }],
  },
});
const { form, rules } = toRefs(data);
@@ -302,7 +313,7 @@
    getStaffJoinInfo(row.id).then(res => {
      form.value = {...res.data}
      // 编辑时也计算一次合同年限
      // calculateContractTerm();
      calculateContractTerm();
    })
  }
}
@@ -326,32 +337,32 @@
  })
}
// 计算合同年限
// const calculateContractTerm = () => {
//   if (form.value.contractStartTime && form.value.contractEndTime) {
//     const startDate = new Date(form.value.contractStartTime);
//     const endDate = new Date(form.value.contractEndTime);
//
//     if (endDate > startDate) {
//       // 计算年份差
//       const yearDiff = endDate.getFullYear() - startDate.getFullYear();
//       const monthDiff = endDate.getMonth() - startDate.getMonth();
//       const dayDiff = endDate.getDate() - startDate.getDate();
//
//       let years = yearDiff;
//
//       // 如果结束日期的月日小于开始日期的月日,则减去1年
//       if (monthDiff < 0 || (monthDiff === 0 && dayDiff < 0)) {
//         years = yearDiff - 1;
//       }
//
//       form.value.contractTerm = Math.max(0, years);
//     } else {
//       form.value.contractTerm = 0;
//     }
//   } else {
//     form.value.contractTerm = 0;
//   }
// };
const calculateContractTerm = () => {
  if (form.value.contractStartTime && form.value.contractEndTime) {
    const startDate = new Date(form.value.contractStartTime);
    const endDate = new Date(form.value.contractEndTime);
    if (endDate > startDate) {
      // 计算年份差
      const yearDiff = endDate.getFullYear() - startDate.getFullYear();
      const monthDiff = endDate.getMonth() - startDate.getMonth();
      const dayDiff = endDate.getDate() - startDate.getDate();
      let years = yearDiff;
      // 如果结束日期的月日小于开始日期的月日,则减去1年
      if (monthDiff < 0 || (monthDiff === 0 && dayDiff < 0)) {
        years = yearDiff - 1;
      }
      form.value.contractTerm = Math.max(0, years);
    } else {
      form.value.contractTerm = 0;
    }
  } else {
    form.value.contractTerm = 0;
  }
};
// 关闭弹框
const closeDia = () => {