src/views/personnelManagement/onboarding/components/formDia.vue
@@ -36,8 +36,10 @@
        </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 label="岗位:" prop="deptPositionId">
              <el-select v-model="form.deptPositionId" filterable placeholder="请选择岗位" :loading="positionLoading" clearable>
                <el-option v-for="p in positionOptions" :key="p.id" :label="p.name || p.label" :value="p.id" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
@@ -59,11 +61,6 @@
          </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%"/>
@@ -88,11 +85,11 @@
              <el-input v-model="form.emergencyContactPhone" placeholder="请输入" clearable/>
            </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-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">
@@ -105,6 +102,7 @@
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
                           @change="calculateContractTerm"
              />
            </el-form-item>
          </el-col>
@@ -118,6 +116,7 @@
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
                           @change="calculateContractTerm"
              />
            </el-form-item>
          </el-col>
@@ -134,24 +133,28 @@
</template>
<script setup>
import {ref} from "vue";
import {ref, reactive, toRefs, getCurrentInstance, onMounted} from "vue";
import {getStaffJoinInfo, staffJoinAdd, staffJoinUpdate} from "@/api/personnelManagement/onboarding.js";
const { proxy } = getCurrentInstance()
import {deptPositionListPage} from "@/api/lavorissce/issue";
const {proxy} = getCurrentInstance()
const emit = defineEmits(['close'])
const dialogFormVisible = ref(false);
const operationType = ref('')
const positionOptions = ref([])
const positionLoading = ref(false)
const data = reactive({
  form: {
    staffNo: "",
    staffName: "",
    sex: "",
    nativePlace: "",
    postJob: "",
    deptPositionId: "",
    adress: "",
    firstStudy: "",
    profession: "",
    identityCard: "",
    age: 0,
    phone: "",
    emergencyContact: "",
@@ -162,38 +165,51 @@
    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" }],
    staffNo: [{required: true, message: "请输入", trigger: "blur"},],
    staffName: [{required: true, message: "请输入", trigger: "blur"}],
    sex: [{required: true, message: "请输入", trigger: "blur"}],
    nativePlace: [{required: true, message: "请输入", trigger: "blur"}],
    deptPositionId: [{required: true, message: "请输入", trigger: "blur"}],
    adress: [{required: true, message: "请输入", trigger: "blur"}],
    firstStudy: [{required: true, message: "请输入", trigger: "blur"}],
    profession: [{required: true, message: "请输入", trigger: "blur"}],
    age: [{required: true, message: "请输入", trigger: "blur"}],
    phone: [{required: true, message: "请输入", trigger: "blur"}],
    emergencyContact: [{required: false, message: "请输入", trigger: "blur"}],
    emergencyContactPhone: [{required: false, message: "请输入", trigger: "blur"}],
    contractTerm: [{required: true, message: "请输入", trigger: "blur"}],
    contractStartTime: [{required: true, message: "请输入", trigger: "blur"}],
    contractEndTime: [{required: false, message: "请输入", trigger: "blur"}],
  },
});
const { form, rules } = toRefs(data);
const {form, rules} = toRefs(data);
async function loadPositions() {
  try {
    positionLoading.value = true
    const res = await deptPositionListPage({pageNum: -1, pageSize:-1})
    positionOptions.value = res?.data?.records || res?.data || []
  } finally {
    positionLoading.value = false
  }
}
// 打开弹框
const openDialog = (type, row) => {
  operationType.value = type;
  dialogFormVisible.value = true;
  loadPositions()
  if (operationType.value === 'edit') {
    getStaffJoinInfo(row.id).then(res => {
      form.value = {...res.data}
      // 编辑时也计算一次合同年限
      // calculateContractTerm();
      calculateContractTerm();
    })
  } else {
    form.value.id = ''
  }
}
// 提交产品表单
const submitForm = () => {
  proxy.$refs.formRef.validate(valid => {