gaoluyang
2 天以前 0af58ec5acb61a3ac6dbf1af46fe44c485fee341
新增离职-数据展示修改
已添加1个文件
已修改8个文件
772 ■■■■ 文件已修改
src/views/personnelManagement/contractManagement/components/formDia.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/contractManagement/index.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/dimission/components/formDia.vue 299 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/dimission/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/employeeRecord/components/formDia.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/employeeRecord/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/onboarding/components/formDia.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/onboarding/components/formDiaXJHT.vue 393 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/onboarding/index.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/contractManagement/components/formDia.vue
@@ -31,10 +31,10 @@
const dialogFormVisible = ref(false);
const operationType = ref('')
const tableColumn = ref([
  {
    label: "合同年限",
    prop: "contractTerm",
  },
  // {
  //   label: "合同年限",
  //   prop: "contractTerm",
  // },
  {
    label: "合同开始日期",
    prop: "contractStartTime",
src/views/personnelManagement/contractManagement/index.vue
@@ -81,12 +81,9 @@
const data = reactive({
  searchForm: {
    staffName: "",
    entryDate: [
      dayjs().format("YYYY-MM-DD"),
      dayjs().add(1, "day").format("YYYY-MM-DD"),
    ], // å½•入日期
    entryDateStart: dayjs().format("YYYY-MM-DD"),
    entryDateEnd: dayjs().add(1, "day").format("YYYY-MM-DD"),
    entryDate: null, // å½•入日期
    entryDateStart: undefined,
    entryDateEnd: undefined,
  },
});
const { searchForm } = toRefs(data);
@@ -172,10 +169,10 @@
    prop: "emergencyContactPhone",
    width: 150
  },
  {
    label: "合同年限",
    prop: "contractTerm",
  },
  // {
  //   label: "合同年限",
  //   prop: "contractTerm",
  // },
  // {
  //   label: "合同开始日期",
  //   prop: "contractStartTime",
src/views/personnelManagement/dimission/components/formDia.vue
@@ -6,128 +6,149 @@
        width="70%"
        @close="closeDia"
    >
      <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
      <!-- å‘˜å·¥ä¿¡æ¯å±•示区域 -->
      <div class="info-section">
        <div class="info-title">员工信息</div>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="姓名:" prop="staffName">
              <!-- <el-input v-model="form.staffName" placeholder="请输入" clearable/> -->
            <div class="info-item">
              <span class="info-label">姓名:</span>
              <el-select v-model="form.staffName" placeholder="请选择人员" style="width: 100%" @change="handleSelect">
              <el-option
                v-for="item in personList"
                :key="item.id"
                :label="item.staffName"
                :value="item.staffName"
              />
                <el-option
                  v-for="item in personList"
                  :key="item.id"
                  :label="item.staffName"
                  :value="item.staffName"
                />
              </el-select>
            </el-form-item>
            </div>
          </el-col>
          <el-col :span="12">
            <el-form-item label="员工编号:" prop="staffNo">
              <el-input v-model="form.staffNo" placeholder="请输入" clearable disabled/>
            </el-form-item>
            <div class="info-item">
              <span class="info-label">员工编号:</span>
              <span class="info-value">{{ form.staffNo || '-' }}</span>
            </div>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="性别:" prop="sex">
              <el-select v-model="form.sex" disabled>
                <el-option label="男" value="男" />
                <el-option label="女" value="女" />
              </el-select>
            </el-form-item>
            <div class="info-item">
              <span class="info-label">性别:</span>
              <span class="info-value">{{ form.sex || '-' }}</span>
            </div>
          </el-col>
          <el-col :span="12">
            <el-form-item label="籍贯:" prop="nativePlace">
              <el-input v-model="form.nativePlace" placeholder="请输入" clearable disabled/>
            </el-form-item>
            <div class="info-item">
              <span class="info-label">户籍住址:</span>
              <span class="info-value">{{ form.nativePlace || '-' }}</span>
            </div>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="岗位:" prop="postJob">
              <el-input v-model="form.postJob" placeholder="请输入" clearable disabled/>
            </el-form-item>
            <div class="info-item">
              <span class="info-label">岗位:</span>
              <span class="info-value">{{ form.postJob || '-' }}</span>
            </div>
          </el-col>
          <el-col :span="12">
            <el-form-item label="家庭住址:" prop="adress">
              <el-input v-model="form.adress" placeholder="请输入" clearable disabled/>
            </el-form-item>
            <div class="info-item">
              <span class="info-label">现住址:</span>
              <span class="info-value">{{ form.adress || '-' }}</span>
            </div>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="第一学历:" prop="firstStudy">
              <el-input v-model="form.firstStudy" placeholder="请输入" clearable disabled/>
            </el-form-item>
            <div class="info-item">
              <span class="info-label">第一学历:</span>
              <span class="info-value">{{ form.firstStudy || '-' }}</span>
            </div>
          </el-col>
          <el-col :span="12">
            <el-form-item label="专业:" prop="profession">
              <el-input v-model="form.profession" placeholder="请输入" clearable disabled/>
            </el-form-item>
            <div class="info-item">
              <span class="info-label">专业:</span>
              <span class="info-value">{{ form.profession || '-' }}</span>
            </div>
          </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 disabled/>
            </el-form-item>
            <div class="info-item">
              <span class="info-label">身份证号:</span>
              <span class="info-value">{{ form.identityCard || '-' }}</span>
            </div>
          </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%" disabled/>
            </el-form-item>
            <div class="info-item">
              <span class="info-label">年龄:</span>
              <span class="info-value">{{ form.age || '-' }}</span>
            </div>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="联系电话:" prop="phone">
              <el-input v-model="form.phone" placeholder="请输入" clearable disabled/>
            </el-form-item>
            <div class="info-item">
              <span class="info-label">联系电话:</span>
              <span class="info-value">{{ form.phone || '-' }}</span>
            </div>
          </el-col>
          <el-col :span="12">
            <el-form-item label="紧急联系人:" prop="emergencyContact">
              <el-input v-model="form.emergencyContact" placeholder="请输入" clearable disabled/>
            </el-form-item>
            <div class="info-item">
              <span class="info-label">紧急联系人:</span>
              <span class="info-value">{{ form.emergencyContact || '-' }}</span>
            </div>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="紧急联系人联系电话:" prop="emergencyContactPhone">
              <el-input v-model="form.emergencyContactPhone" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
          <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/>
            </el-form-item>
            <div class="info-item">
              <span class="info-label">紧急联系人联系电话:</span>
              <span class="info-value">{{ form.emergencyContactPhone || '-' }}</span>
            </div>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="合同开始日期:" prop="contractStartTime">
            <div class="info-item">
              <span class="info-label">合同开始日期:</span>
              <span class="info-value">{{ form.contractStartTime || '-' }}</span>
            </div>
          </el-col>
          <el-col :span="12">
            <div class="info-item">
              <span class="info-label">合同结束日期:</span>
              <span class="info-value">{{ form.contractEndTime || '-' }}</span>
            </div>
          </el-col>
        </el-row>
      </div>
      <!-- ç¦»èŒä¿¡æ¯å¡«å†™åŒºåŸŸ -->
      <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef" style="margin-top: 20px">
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="离职日期:" prop="dimissionDate">
              <el-date-picker
                                disabled
                  v-model="form.contractStartTime"
                  type="date"
                  placeholder="请选择日期"
                  value-format="YYYY-MM-DD"
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
                v-model="form.dimissionDate"
                type="date"
                placeholder="请选择离职日期"
                value-format="YYYY-MM-DD"
                format="YYYY-MM-DD"
                clearable
                style="width: 100%"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="合同结束日期:" prop="contractEndTime">
              <el-date-picker
                                disabled
                  v-model="form.contractEndTime"
                  type="date"
                  placeholder="请选择日期"
                  value-format="YYYY-MM-DD"
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
            <el-form-item label="离职原因:" prop="dimissionReason">
              <el-input
                v-model="form.dimissionReason"
                type="textarea"
                :rows="3"
                placeholder="请输入离职原因"
                maxlength="500"
                show-word-limit
              />
            </el-form-item>
          </el-col>
@@ -144,7 +165,7 @@
</template>
<script setup>
import {ref} from "vue";
import {ref, reactive, toRefs, getCurrentInstance} from "vue";
import {getStaffJoinInfo, staffJoinAdd, staffJoinUpdate,getStaffOnJob} from "@/api/personnelManagement/onboarding.js";
const { proxy } = getCurrentInstance()
const emit = defineEmits(['close'])
@@ -169,25 +190,14 @@
    contractTerm: 0,
    contractStartTime: "",
    contractEndTime: "",
    dimissionDate: "",
    dimissionReason: "",
    staffState: "",
  },
  rules: {
    staffNo: [{ required: true, message: "请输入", trigger: "blur" },],
    staffName: [{ required: true, message: "请输入", trigger: "blur" }],
    sex: [{ required: true, message: "请输入", trigger: "blur" }],
    nativePlace: [{ required: true, message: "请输入", trigger: "blur" }],
    postJob: [{ required: true, message: "请输入", trigger: "blur" }],
    adress: [{ required: true, message: "请输入", trigger: "blur" }],
    firstStudy: [{ required: true, message: "请输入", trigger: "blur" }],
    profession: [{ required: true, message: "请输入", trigger: "blur" }],
    identityCard: [{ required: true, message: "请输入", trigger: "blur" }],
    age: [{ required: true, message: "请输入", trigger: "blur" }],
    phone: [{ required: true, message: "请输入", trigger: "blur" }],
    emergencyContact: [{ required: true, message: "请输入", trigger: "blur" }],
    emergencyContactPhone: [{ required: true, message: "请输入", trigger: "blur" }],
    contractTerm: [{ required: true, message: "请输入", trigger: "blur" }],
    contractStartTime: [{ required: true, message: "请输入", trigger: "blur" }],
    contractEndTime: [{ required: true, message: "请输入", trigger: "blur" }],
    staffName: [{ required: true, message: "请选择人员", trigger: "change" }],
    dimissionDate: [{ required: true, message: "请选择离职日期", trigger: "change" }],
    dimissionReason: [{ required: true, message: "请输入离职原因", trigger: "blur" }],
  },
});
const { form, rules } = toRefs(data);
@@ -242,43 +252,46 @@
const handleSelect = (val) => {
  let obj = personList.value.find(item => item.staffName === val)
  let {
    sex,
    phone,
    staffNo,
    nativePlace,
    postJob,
    adress,
    firstStudy,
    profession,
    identityCard,
    age,
    emergencyContact,
    emergencyContactPhone,
    contractTerm,
    contractStartTime,
    contractEndTime,
    staffName
  } = obj
  form.value = {
    sex,
    phone,
    staffNo,
    nativePlace,
    postJob,
    adress,
    firstStudy,
    profession,
    identityCard,
    age,
    emergencyContact,
    emergencyContactPhone,
    contractTerm,
    contractStartTime,
    contractEndTime,
    staffName
  if (obj) {
    let {
      sex,
      phone,
      staffNo,
      nativePlace,
      postJob,
      adress,
      firstStudy,
      profession,
      identityCard,
      age,
      emergencyContact,
      emergencyContactPhone,
      contractTerm,
      contractStartTime,
      contractEndTime,
      staffName
    } = obj
    // ä¿ç•™ç¦»èŒæ—¥æœŸå’Œç¦»èŒåŽŸå› ï¼Œåªæ›´æ–°å‘˜å·¥ä¿¡æ¯
    form.value = {
      ...form.value,
      sex,
      phone,
      staffNo,
      nativePlace,
      postJob,
      adress,
      firstStudy,
      profession,
      identityCard,
      age,
      emergencyContact,
      emergencyContactPhone,
      contractTerm,
      contractStartTime,
      contractEndTime,
      staffName
    }
  }
}
defineExpose({
  openDialog,
@@ -286,5 +299,39 @@
</script>
<style scoped>
.info-section {
  background: #f5f7fa;
  padding: 20px;
  border-radius: 8px;
  margin-bottom: 20px;
}
.info-title {
  font-size: 16px;
  font-weight: 600;
  color: #303133;
  margin-bottom: 20px;
  padding-bottom: 10px;
  border-bottom: 1px solid #e4e7ed;
}
.info-item {
  display: flex;
  align-items: center;
  margin-bottom: 16px;
  min-height: 32px;
}
.info-label {
  min-width: 140px;
  color: #606266;
  font-size: 14px;
  font-weight: 500;
}
.info-value {
  flex: 1;
  color: #303133;
  font-size: 14px;
}
</style>
src/views/personnelManagement/dimission/index.vue
@@ -150,10 +150,10 @@
    prop: "emergencyContactPhone",
    width:150
  },
  {
    label: "合同年限",
    prop: "contractTerm",
  },
  // {
  //   label: "合同年限",
  //   prop: "contractTerm",
  // },
  {
    label: "合同开始日期",
    prop: "contractStartTime",
src/views/personnelManagement/employeeRecord/components/formDia.vue
@@ -31,10 +31,10 @@
const dialogFormVisible = ref(false);
const operationType = ref('')
const tableColumn = ref([
  {
    label: "合同年限",
    prop: "contractTerm",
  },
  // {
  //   label: "合同年限",
  //   prop: "contractTerm",
  // },
  {
    label: "合同开始日期",
    prop: "contractStartTime",
src/views/personnelManagement/employeeRecord/index.vue
@@ -140,10 +140,10 @@
    prop: "emergencyContactPhone",
    width:150
  },
  {
    label: "合同年限",
    prop: "contractTerm",
  },
  // {
  //   label: "合同年限",
  //   prop: "contractTerm",
  // },
  // {
  //   label: "合同开始日期",
  //   prop: "contractStartTime",
src/views/personnelManagement/onboarding/components/formDia.vue
@@ -29,7 +29,7 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="籍贯:" prop="nativePlace">
            <el-form-item label="户籍住址:" prop="nativePlace">
              <el-input v-model="form.nativePlace" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
@@ -41,7 +41,7 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="家庭住址:" prop="adress">
            <el-form-item label="现住址:" prop="adress">
              <el-input v-model="form.adress" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
@@ -88,11 +88,11 @@
              <el-input v-model="form.emergencyContactPhone" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
          <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-col :span="12">-->
<!--            <el-form-item label="合同年限:" prop="contractTermcontractTerm">-->
<!--              <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">
@@ -105,7 +105,6 @@
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
                  @change="calculateContractTerm"
              />
            </el-form-item>
          </el-col>
@@ -119,7 +118,6 @@
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
                  @change="calculateContractTerm"
              />
            </el-form-item>
          </el-col>
@@ -192,7 +190,7 @@
    getStaffJoinInfo(row.id).then(res => {
      form.value = {...res.data}
      // ç¼–辑时也计算一次合同年限
      calculateContractTerm();
      // calculateContractTerm();
    })
  }
}
src/views/personnelManagement/onboarding/components/formDiaXJHT.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,393 @@
<template>
  <div>
    <el-dialog
        v-model="dialogFormVisible"
        :title="operationType === 'add' ? '新增入职' : '编辑人员'"
        width="70%"
        @close="closeDia"
    >
      <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="员工编号:" prop="staffNo">
              <el-input v-model="form.staffNo" placeholder="请输入" clearable :disabled="operationType !== 'add'"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="姓名:" prop="staffName">
              <el-input v-model="form.staffName" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="性别:" prop="sex">
              <el-select v-model="form.sex">
                <el-option label="男" value="男" />
                <el-option label="女" value="女" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="户籍住址:" prop="nativePlace">
              <el-input v-model="form.nativePlace" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="岗位:" prop="postJob">
              <el-input v-model="form.postJob" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="现住址:" prop="adress">
              <el-input v-model="form.adress" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="第一学历:" prop="firstStudy">
              <el-input v-model="form.firstStudy" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="专业:" prop="profession">
              <el-input v-model="form.profession" placeholder="请输入" clearable/>
            </el-form-item>
          </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/>
            </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%"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="联系电话:" prop="phone">
              <el-input v-model="form.phone" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="紧急联系人:" prop="emergencyContact">
              <el-input v-model="form.emergencyContact" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="紧急联系人联系电话:" prop="emergencyContactPhone">
              <el-input v-model="form.emergencyContactPhone" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="合同签订日期:" prop="trialStartDate">
              <el-date-picker
                  v-model="form.trialStartDate"
                  type="date"
                  placeholder="请选择日期"
                  value-format="YYYY-MM-DD"
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="24">
            <el-form-item label="劳动合同期限选择:" prop="dateSelect">
              <el-radio-group v-model="form.dateSelect">
                <el-radio :value="'A'">
                  A、有固定期限
                </el-radio>
                <el-radio :value="'B'">
                  B、无固定期限
                </el-radio>
                <el-radio :value="'C'">
                  C、以完成一定工作任务为期限
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30" v-if="showProbationDates">
          <el-col :span="12">
            <el-form-item label="试用期开始日期:" prop="signDate">
              <el-date-picker
                  v-model="form.signDate"
                  type="date"
                  placeholder="请选择日期"
                  value-format="YYYY-MM-DD"
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="试用期结束日期:" prop="trialEndDate">
              <el-date-picker
                  v-model="form.trialEndDate"
                  type="date"
                  placeholder="请选择日期"
                  value-format="YYYY-MM-DD"
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
              />
            </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">
              <el-date-picker
                  v-model="form.contractStartTime"
                  type="date"
                  placeholder="请选择日期"
                  value-format="YYYY-MM-DD"
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12" v-if="showContractEnd">
            <el-form-item label="合同结束日期:" prop="contractEndTime">
              <el-date-picker
                  v-model="form.contractEndTime"
                  type="date"
                  placeholder="请选择日期"
                  value-format="YYYY-MM-DD"
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
              />
            </el-form-item>
          </el-col>
        </el-row>
                <el-row :gutter="30">
                    <el-col :span="12">
                        <el-form-item label="试用期工资:" prop="proSalary">
                            <el-input-number placeholder="请输入试用期工资" :precision="2"
                                                             :step="100"
                                                             :min="0" v-model="form.proSalary" style="width: 100%"/>
                        </el-form-item>
                    </el-col>
                </el-row>
        <el-row :gutter="30">
          <el-col :span="24">
            <el-form-item label="工资报酬:" prop="salarySelect">
              <el-radio-group v-model="form.salarySelect" class="salary-radio-group">
                <el-radio :value="'A'" class="salary-radio-item">
                  A、乙方的工资报酬按照甲方依法制定的规章制度中的内部工资分配办法确定,根据乙方的工作岗位确定其每月工资。
                </el-radio>
                <el-radio :value="'B'" class="salary-radio-item">
                  B、甲方对乙方实行基本工资和绩效工资相结合的内部工资分配办法,乙方的收入包括基本工资、误餐、交通、生活住宿等各项补助,如有变动根据内部工资分配办法调整其工资;绩效工资根据乙方的工作业绩、劳动成果和实际贡献按照内部分配办法考核确定。
                </el-radio>
                <el-radio :value="'C'" class="salary-radio-item">
                  C、甲方实行计件工资制,以甲方接到订单及公司生产计划,按照定额和计件单价,根据乙方完成的业绩,按时足额支付乙方的工资报酬。
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>
                <el-row :gutter="30">
                    <el-col :span="12">
                        <el-form-item label="福利待遇:" prop="remark">
                            <el-input v-model="form.remark" placeholder="请输入" clearable/>
                        </el-form-item>
                    </el-col>
                </el-row>
      </el-form>
      <template #footer>
        <div class="dialog-footer">
          <el-button type="primary" @click="submitForm">确认</el-button>
          <el-button @click="closeDia">取消</el-button>
        </div>
      </template>
    </el-dialog>
  </div>
</template>
<script setup>
import {ref, reactive, toRefs, getCurrentInstance, computed, watch} from "vue";
import {getStaffJoinInfo, staffJoinAdd, staffJoinUpdate} from "@/api/personnelManagement/onboarding.js";
const { proxy } = getCurrentInstance()
const emit = defineEmits(['close'])
const dialogFormVisible = ref(false);
const operationType = ref('')
const data = reactive({
  form: {
    staffNo: "",
    staffName: "",
    sex: "",
    nativePlace: "",
    postJob: "",
    adress: "",
    firstStudy: "",
    profession: "",
    identityCard: "",
    age: 0,
    phone: "",
    emergencyContact: "",
    emergencyContactPhone: "",
    dateSelect: "",
    signDate: "",
    trialEndDate: "",
    proSalary: null,
    trialStartDate: "",
    salarySelect: "",
    // contractTerm: 0,
    contractStartTime: "",
    contractEndTime: "",
    staffState: "",
  },
  rules: {
    staffNo: [{ required: true, message: "请输入", trigger: "blur" },],
    staffName: [{ required: true, message: "请输入", trigger: "blur" }],
    sex: [{ required: true, message: "请输入", trigger: "blur" }],
    nativePlace: [{ required: true, message: "请输入", trigger: "blur" }],
    postJob: [{ required: true, message: "请输入", trigger: "blur" }],
    adress: [{ required: true, message: "请输入", trigger: "blur" }],
    firstStudy: [{ required: true, message: "请输入", trigger: "blur" }],
    profession: [{ required: true, message: "请输入", trigger: "blur" }],
    identityCard: [{ required: true, message: "请输入", trigger: "blur" }],
    age: [{ required: true, message: "请输入", trigger: "blur" }],
    phone: [{ required: true, message: "请输入", trigger: "blur" }],
    emergencyContact: [{ required: true, message: "请输入", trigger: "blur" }],
        remark: [{ required: false, message: "请输入", trigger: "blur" }],
    dateSelect: [{ required: true, message: "请选择劳动合同期限", trigger: "change" }],
    signDate: [{ required: true, message: "请选择", trigger: "change" }],
    trialEndDate: [{ required: true, message: "请选择", trigger: "change" }],
    trialStartDate: [{ required: true, message: "请选择", trigger: "change" }],
    salarySelect: [{ required: true, message: "请选择工资报酬方式", trigger: "change" }],
    // contractTerm: [{ required: true, message: "请输入", trigger: "blur" }],
    contractStartTime: [{ required: true, message: "请输入", trigger: "blur" }],
    contractEndTime: [{ required: true, message: "请输入", trigger: "blur" }],
  },
});
const { form, rules } = toRefs(data);
const showContractEnd = computed(() => form.value.dateSelect === "A");
const showProbationDates = computed(() => form.value.dateSelect === "A" || form.value.dateSelect === "B");
watch(() => form.value.dateSelect, (type) => {
  if (type !== "A") {
    form.value.contractEndTime = "";
  }
  if (type === "C") {
    form.value.signDate = "";
    form.value.trialEndDate = "";
    form.value.proSalary = null;
  }
}, { immediate: true });
// æ‰“开弹框
const openDialog = (type, row) => {
  operationType.value = type;
  dialogFormVisible.value = true;
  if (operationType.value === 'edit') {
    getStaffJoinInfo(row.id).then(res => {
      form.value = {...res.data}
      // ç¼–辑时也计算一次合同年限
      // calculateContractTerm();
    })
  }
}
// æäº¤äº§å“è¡¨å•
const submitForm = () => {
  proxy.$refs.formRef.validate(valid => {
    if (valid) {
      form.value.staffState = 1
      if (operationType.value === "add") {
        staffJoinAdd(form.value).then(res => {
          proxy.$modal.msgSuccess("提交成功");
          closeDia();
        })
      } else {
        staffJoinUpdate(form.value).then(res => {
          proxy.$modal.msgSuccess("提交成功");
          closeDia();
        })
      }
    }
  })
}
// è®¡ç®—合同年限
// 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 = () => {
  proxy.resetForm("formRef");
  dialogFormVisible.value = false;
  emit('close')
};
defineExpose({
  openDialog,
});
</script>
<style scoped>
.salary-radio-group {
  display: flex;
  gap: 12px;
}
.salary-radio-item {
  white-space: normal;
  word-wrap: break-word;
  line-height: 1.6;
  align-items: flex-start;
}
.salary-radio-item :deep(.el-radio__label) {
  white-space: normal;
  word-wrap: break-word;
  line-height: 1.6;
  padding-left: 8px;
}
</style>
src/views/personnelManagement/onboarding/index.vue
@@ -58,6 +58,7 @@
import { Search } from "@element-plus/icons-vue";
import {onMounted, ref} from "vue";
import FormDia from "@/views/personnelManagement/onboarding/components/formDia.vue";
// import FormDia from "@/views/personnelManagement/onboarding/components/formDiaXJHT.vue"; // æ–°ç–†é£Ÿå“å…¬å¸ç”¨çš„表单
import {staffJoinDel, staffJoinListPage} from "@/api/personnelManagement/onboarding.js";
import {ElMessageBox} from "element-plus";
import dayjs from "dayjs";
@@ -105,7 +106,7 @@
    prop: "sex",
  },
  {
    label: "籍贯",
    label: "户籍住址",
    prop: "nativePlace",
  },
  {
@@ -113,7 +114,7 @@
    prop: "postJob",
  },
  {
    label: "家庭住址",
    label: "现住址",
    prop: "adress",
    width:200
  },
@@ -150,10 +151,10 @@
    prop: "emergencyContactPhone",
    width:150
  },
  {
    label: "合同年限",
    prop: "contractTerm",
  },
  // {
  //   label: "合同年限",
  //   prop: "contractTerm",
  // },
  {
    label: "合同开始日期",
    prop: "contractStartTime",