zouyu
13 小时以前 32f10392ab00b07e85c0b4229037c30af7c3f28e
src/views/personnelManagement/payrollManagement/components/formDia.vue
@@ -10,35 +10,35 @@
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="月份:" prop="payDate">
                     <el-date-picker
                        v-model="form.payDate"
                        type="month"
                        value-format="YYYY-MM-DD"
                        format="YYYY-MM"
                        placeholder="请选择月份"
                        clearable
                        :disabled="operationType === 'edit'"
                        style="width: 100%"
                     />
              <el-date-picker
                  v-model="form.payDate"
                  type="month"
                  value-format="YYYY-MM-DD"
                  format="YYYY-MM"
                  placeholder="请选择月份"
                  clearable
                  :disabled="operationType === 'edit'"
                  style="width: 100%"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="姓名:" prop="staffId">
                     <el-select v-model="form.staffId" placeholder="请选择人员" style="width: 100%" @change="handleSelect" :disabled="operationType === 'edit'">
                        <el-option
                           v-for="item in personList"
                           :key="item.id"
                           :label="item.staffName"
                           :value="item.id"
                        />
                     </el-select>
              <el-select v-model="form.staffId" placeholder="请选择人员" style="width: 100%" @change="handleSelect" :disabled="operationType === 'edit'">
                <el-option
                    v-for="item in personList"
                    :key="item.id"
                    :label="item.staffName"
                    :value="item.id"
                />
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="应出勤天数:" prop="shouldAttendedNum">
                     <el-input v-model="form.shouldAttendedNum" placeholder="请输入" clearable type="number"/>
              <el-input v-model="form.shouldAttendedNum" placeholder="请输入" clearable type="number"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
@@ -110,48 +110,48 @@
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="社保公司:" prop="socialSecurityCompanies">
                     <el-input v-model="form.socialSecurityCompanies" :precision="0" :step="1" style="width: 100%" type="number"/>
              <el-input v-model="form.socialSecurityCompanies" :precision="0" :step="1" style="width: 100%" type="number"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="社保合计:" prop="socialSecurityTotal">
                     <el-input v-model="form.socialSecurityTotal" :precision="0" :step="1" style="width: 100%" type="number"/>
              <el-input v-model="form.socialSecurityTotal" :precision="0" :step="1" style="width: 100%" type="number"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="公积金个人:" prop="providentFundIndividuals">
                     <el-input v-model="form.providentFundIndividuals" :precision="0" :step="1" style="width: 100%" type="number"/>
              <el-input v-model="form.providentFundIndividuals" :precision="0" :step="1" style="width: 100%" type="number"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="公积金公司:" prop="providentFundCompany">
                     <el-input v-model="form.providentFundCompany" :precision="0" :step="1" style="width: 100%" type="number"/>
              <el-input v-model="form.providentFundCompany" :precision="0" :step="1" style="width: 100%" type="number"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="公积金合计:" prop="providentFundTotal">
                     <el-input v-model="form.providentFundTotal" :precision="0" :step="1" style="width: 100%" type="number"/>
              <el-input v-model="form.providentFundTotal" :precision="0" :step="1" style="width: 100%" type="number"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="应税工资:" prop="taxableWaget">
                     <el-input v-model="form.taxableWaget" :precision="0" :step="1" style="width: 100%" type="number"/>
              <el-input v-model="form.taxableWaget" :precision="0" :step="1" style="width: 100%" type="number"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="个人所得税:" prop="personalIncomeTax">
                     <el-input v-model="form.personalIncomeTax" :step="0.1" style="width: 100%" type="number"/>
              <el-input v-model="form.personalIncomeTax" :step="0.1" style="width: 100%" type="number"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="实发工资:" prop="actualWages">
                     <el-input v-model="form.actualWages" style="width: 100%" type="number"/>
              <el-input v-model="form.actualWages" style="width: 100%" type="number"/>
            </el-form-item>
          </el-col>
        </el-row>
@@ -168,8 +168,8 @@
<script setup>
import {ref} from "vue";
import {getStaffJoinInfo, getStaffOnJob, staffJoinAdd, staffJoinUpdate} from "@/api/personnelManagement/onboarding.js";
import {compensationAdd, compensationUpdate} from "@/api/personnelManagement/payrollManagement.js";
import {staffOnJobInfo, staffOnJobListPage} from "@/api/personnelManagement/staffOnJob.js";
const { proxy } = getCurrentInstance()
const emit = defineEmits(['close'])
@@ -177,54 +177,54 @@
const operationType = ref('')
const data = reactive({
  form: {
      payDate: "",
    payDate: "",
    staffId: "",
      name: "",
      shouldAttendedNum: "",
      actualAttendedNum: "",
      basicSalary: "",
      postSalary: "",
      deductionAbsenteeism: "",
      sickLeaveDeductions: "",
      deductionPersonalLeave: "",
      forgetClockDeduct: "",
      performanceScore: "",
      performancePay: "",
      payableWages: "",
      socialSecurityIndividuals: "",
      socialSecurityCompanies: "",
      socialSecurityTotal: "",
      providentFundIndividuals: "",
      providentFundCompany: "",
      providentFundTotal: "",
      taxableWaget: "",
      personalIncomeTax: "",
      actualWages: "",
    name: "",
    shouldAttendedNum: "",
    actualAttendedNum: "",
    basicSalary: "",
    postSalary: "",
    deductionAbsenteeism: "",
    sickLeaveDeductions: "",
    deductionPersonalLeave: "",
    forgetClockDeduct: "",
    performanceScore: "",
    performancePay: "",
    payableWages: "",
    socialSecurityIndividuals: "",
    socialSecurityCompanies: "",
    socialSecurityTotal: "",
    providentFundIndividuals: "",
    providentFundCompany: "",
    providentFundTotal: "",
    taxableWaget: "",
    personalIncomeTax: "",
    actualWages: "",
  },
  rules: {
      payDate: [{ required: true, message: "请选择", trigger: "change" },],
      staffId: [{ required: true, message: "请选择", trigger: "change" },],
    payDate: [{ required: true, message: "请选择", trigger: "change" },],
    staffId: [{ required: true, message: "请选择", trigger: "change" },],
    staffName: [{ required: true, message: "请输入", trigger: "blur" }],
      shouldAttendedNum: [{ required: true, message: "请输入", trigger: "blur" }],
      actualAttendedNum: [{ required: true, message: "请输入", trigger: "blur" }],
      basicSalary: [{ required: true, message: "请输入", trigger: "blur" }],
      postSalary: [{ required: true, message: "请输入", trigger: "blur" }],
      deductionAbsenteeism: [{ required: true, message: "请输入", trigger: "blur" }],
      sickLeaveDeductions: [{ required: true, message: "请输入", trigger: "blur" }],
      deductionPersonalLeave: [{ required: true, message: "请输入", trigger: "blur" }],
      forgetClockDeduct: [{ required: true, message: "请输入", trigger: "blur" }],
      performanceScore: [{ required: true, message: "请输入", trigger: "blur" }],
      performancePay: [{ required: true, message: "请输入", trigger: "blur" }],
      payableWages: [{ required: true, message: "请输入", trigger: "blur" }],
      socialSecurityIndividuals: [{ required: true, message: "请输入", trigger: "blur" }],
      socialSecurityCompanies: [{ required: true, message: "请输入", trigger: "blur" }],
      socialSecurityTotal: [{ required: true, message: "请输入", trigger: "blur" }],
      providentFundIndividuals: [{ required: true, message: "请输入", trigger: "blur" }],
      providentFundCompany: [{ required: true, message: "请输入", trigger: "blur" }],
      providentFundTotal: [{ required: true, message: "请输入", trigger: "blur" }],
      taxableWaget: [{ required: true, message: "请输入", trigger: "blur" }],
      personalIncomeTax: [{ required: true, message: "请输入", trigger: "blur" }],
      actualWages: [{ required: true, message: "请输入", trigger: "blur" }],
    shouldAttendedNum: [{ required: true, message: "请输入", trigger: "blur" }],
    actualAttendedNum: [{ required: true, message: "请输入", trigger: "blur" }],
    basicSalary: [{ required: true, message: "请输入", trigger: "blur" }],
    postSalary: [{ required: true, message: "请输入", trigger: "blur" }],
    deductionAbsenteeism: [{ required: true, message: "请输入", trigger: "blur" }],
    sickLeaveDeductions: [{ required: true, message: "请输入", trigger: "blur" }],
    deductionPersonalLeave: [{ required: true, message: "请输入", trigger: "blur" }],
    forgetClockDeduct: [{ required: true, message: "请输入", trigger: "blur" }],
    performanceScore: [{ required: true, message: "请输入", trigger: "blur" }],
    performancePay: [{ required: true, message: "请输入", trigger: "blur" }],
    payableWages: [{ required: true, message: "请输入", trigger: "blur" }],
    socialSecurityIndividuals: [{ required: true, message: "请输入", trigger: "blur" }],
    socialSecurityCompanies: [{ required: true, message: "请输入", trigger: "blur" }],
    socialSecurityTotal: [{ required: true, message: "请输入", trigger: "blur" }],
    providentFundIndividuals: [{ required: true, message: "请输入", trigger: "blur" }],
    providentFundCompany: [{ required: true, message: "请输入", trigger: "blur" }],
    providentFundTotal: [{ required: true, message: "请输入", trigger: "blur" }],
    taxableWaget: [{ required: true, message: "请输入", trigger: "blur" }],
    personalIncomeTax: [{ required: true, message: "请输入", trigger: "blur" }],
    actualWages: [{ required: true, message: "请输入", trigger: "blur" }],
  },
});
const { form, rules } = toRefs(data);
@@ -234,27 +234,23 @@
const openDialog = (type, row) => {
  operationType.value = type;
  dialogFormVisible.value = true;
  staffOnJobListPage({
    current: -1,
    size: -1,
    staffState: 1
  }).then(res => {
    personList.value = res.data.records || []
  getStaffOnJob().then(res => {
    personList.value = res.data
  })
   form.value = {}
  form.value = {}
  if (operationType.value === 'edit') {
    staffOnJobInfo(row.staffId).then(res => {
         form.value = {...row}
         form.value.payDate = form.value.payDate + '-01'
    getStaffJoinInfo(row.id).then(res => {
      form.value = {...row}
      form.value.payDate = form.value.payDate + '-01'
    })
  }
}
const handleSelect = (value) => {
   console.log('value', value)
   const index = personList.value.findIndex(row => row.id === value)
   if (index > -1) {
      form.value.name = personList.value[index].staffName
   }
  console.log('value', value)
  const index = personList.value.findIndex(row => row.id === value)
  if (index > -1) {
    form.value.name = personList.value[index].staffName
  }
}
// 提交产品表单
const submitForm = () => {
@@ -262,12 +258,12 @@
    if (valid) {
      form.value.staffState = 1
      if (operationType.value === "add") {
            compensationAdd(form.value).then(res => {
        compensationAdd(form.value).then(res => {
          proxy.$modal.msgSuccess("提交成功");
          closeDia();
        })
      } else {
            compensationUpdate(form.value).then(res => {
        compensationUpdate(form.value).then(res => {
          proxy.$modal.msgSuccess("提交成功");
          closeDia();
        })
@@ -280,20 +276,20 @@
  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;
@@ -316,4 +312,4 @@
<style scoped>
</style>
</style>