src/views/personnelManagement/dimission/components/formDia.vue
@@ -9,20 +9,28 @@
      <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 label="姓名:" prop="staffName">
              <!-- <el-input v-model="form.staffName" placeholder="请输入" clearable/> -->
              <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-select>
            </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 label="员工编号:" prop="staffNo">
              <el-input v-model="form.staffNo" placeholder="请输入" clearable disabled/>
            </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-select v-model="form.sex" disabled>
                <el-option label="男" value="男" />
                <el-option label="女" value="女" />
              </el-select>
@@ -30,67 +38,67 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="籍贯:" prop="nativePlace">
              <el-input v-model="form.nativePlace" placeholder="请输入" clearable/>
              <el-input v-model="form.nativePlace" placeholder="请输入" clearable disabled/>
            </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-input v-model="form.postJob" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="家庭住址:" prop="adress">
              <el-input v-model="form.adress" placeholder="请输入" clearable/>
              <el-input v-model="form.adress" placeholder="请输入" clearable disabled/>
            </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-input v-model="form.firstStudy" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="专业:" prop="profession">
              <el-input v-model="form.profession" placeholder="请输入" clearable/>
              <el-input v-model="form.profession" placeholder="请输入" clearable disabled/>
            </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-input v-model="form.identityCard" placeholder="请输入" clearable disabled/>
            </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-input-number v-model="form.age" :precision="0" :step="1" style="width: 100%" disabled/>
            </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-input v-model="form.phone" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="紧急联系人:" prop="emergencyContact">
              <el-input v-model="form.emergencyContact" placeholder="请输入" clearable/>
              <el-input v-model="form.emergencyContact" placeholder="请输入" clearable disabled/>
            </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-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%"/>
              <el-input-number v-model="form.contractTerm" :precision="0" :step="1" style="width: 100%" disabled/>
            </el-form-item>
          </el-col>
        </el-row>
@@ -98,6 +106,7 @@
          <el-col :span="12">
            <el-form-item label="合同开始日期:" prop="contractStartTime">
              <el-date-picker
                        disabled
                  v-model="form.contractStartTime"
                  type="date"
                  placeholder="请选择日期"
@@ -111,6 +120,7 @@
          <el-col :span="12">
            <el-form-item label="合同结束日期:" prop="contractEndTime">
              <el-date-picker
                        disabled
                  v-model="form.contractEndTime"
                  type="date"
                  placeholder="请选择日期"
@@ -119,6 +129,25 @@
                  clearable
                  style="width: 100%"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="离职日期:" prop="leaveDate">
              <el-date-picker v-model="form.leaveDate" 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="leaveReason">
              <el-input v-model="form.leaveReason" placeholder="请输入离职原因" clearable />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="24">
            <el-form-item label="工作交接情况:" prop="handoverInfo">
              <el-input v-model="form.handoverInfo" type="textarea" :rows="3" placeholder="请输入工作交接情况" />
            </el-form-item>
          </el-col>
        </el-row>
@@ -135,7 +164,7 @@
<script setup>
import {ref} from "vue";
import {getStaffJoinInfo, staffJoinAdd, staffJoinUpdate} from "@/api/personnelManagement/onboarding.js";
import {getStaffJoinInfo, staffJoinAdd, staffJoinUpdate,getStaffOnJob} from "@/api/personnelManagement/onboarding.js";
const { proxy } = getCurrentInstance()
const emit = defineEmits(['close'])
@@ -160,6 +189,9 @@
    contractStartTime: "",
    contractEndTime: "",
    staffState: "",
    leaveDate: "",
    leaveReason: "",
    handoverInfo: "",
  },
  rules: {
    staffNo: [{ required: true, message: "请输入", trigger: "blur" },],
@@ -178,12 +210,14 @@
    contractTerm: [{ required: true, message: "请输入", trigger: "blur" }],
    contractStartTime: [{ required: true, message: "请输入", trigger: "blur" }],
    contractEndTime: [{ required: true, message: "请输入", trigger: "blur" }],
    leaveDate: [{ required: true, message: "请选择离职日期", trigger: "change" }],
  },
});
const { form, rules } = toRefs(data);
// 打开弹框
const openDialog = (type, row) => {
  getList()
  operationType.value = type;
  dialogFormVisible.value = true;
  if (operationType.value === 'edit') {
@@ -217,6 +251,58 @@
  dialogFormVisible.value = false;
  emit('close')
};
const personList = ref([]);
/**
 * 获取当前在职人员列表
 */
const getList = () => {
  getStaffOnJob().then(res => {
    personList.value = res.data
  })
};
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
  }
}
defineExpose({
  openDialog,
});