<template>
|
<el-dialog v-model="visible" title="员工转正" width="600px" destroy-on-close>
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="110px">
|
<el-form-item label="员工编号" prop="staffNo">
|
<el-input v-model="form.staffNo" disabled />
|
</el-form-item>
|
<el-form-item label="员工姓名" prop="staffName">
|
<el-input v-model="form.staffName" disabled />
|
</el-form-item>
|
<el-form-item label="当前岗位" prop="currentPost">
|
<el-input v-model="form.currentPost" disabled />
|
</el-form-item>
|
<el-form-item label="转正日期" prop="regularDate">
|
<el-date-picker
|
v-model="form.regularDate"
|
value-format="YYYY-MM-DD"
|
type="date"
|
placeholder="请选择转正日期"
|
style="width: 100%"
|
/>
|
</el-form-item>
|
<el-form-item label="试用评估" prop="assessmentResult">
|
<el-select v-model="form.assessmentResult" placeholder="请选择评估结果" style="width: 100%">
|
<el-option label="通过" value="通过" />
|
<el-option label="延期" value="延期" />
|
<el-option label="不通过" value="不通过" />
|
</el-select>
|
</el-form-item>
|
<el-form-item v-if="form.assessmentResult === '延期'" label="延期月份数" prop="delayMonths">
|
<el-input-number v-model="form.delayMonths" :min="1" :max="24" :step="1" style="width: 100%" />
|
</el-form-item>
|
<el-form-item label="备注" prop="remark">
|
<el-input v-model="form.remark" type="textarea" :rows="3" maxlength="200" show-word-limit />
|
</el-form-item>
|
</el-form>
|
<template #footer>
|
<el-button @click="visible = false">取消</el-button>
|
<el-button type="primary" :loading="loading" @click="submit">确认</el-button>
|
</template>
|
</el-dialog>
|
</template>
|
|
<script setup>
|
import {reactive, ref} from "vue";
|
import dayjs from "dayjs";
|
import {ElMessage} from "element-plus";
|
import {staffRegularize} from "@/api/personnelManagement/employeeRecord.js";
|
|
const emit = defineEmits(["success"]);
|
const visible = ref(false);
|
const loading = ref(false);
|
const formRef = ref();
|
const form = reactive({
|
id: undefined,
|
staffNo: "",
|
staffName: "",
|
currentPost: "",
|
regularDate: "",
|
assessmentResult: "通过",
|
delayMonths: undefined,
|
remark: "",
|
});
|
const validateDelayMonths = (rule, value, callback) => {
|
if (form.assessmentResult !== "延期") {
|
callback();
|
return;
|
}
|
if (!value) {
|
callback(new Error("请选择延期月份数"));
|
return;
|
}
|
callback();
|
};
|
const validateRegularDate = (rule, value, callback) => {
|
if (form.assessmentResult === "延期") {
|
callback();
|
return;
|
}
|
if (!value) {
|
callback(new Error("请选择转正日期"));
|
return;
|
}
|
callback();
|
};
|
const rules = {
|
regularDate: [{validator: validateRegularDate, trigger: "change"}],
|
assessmentResult: [{required: true, message: "请选择试用评估", trigger: "change"}],
|
delayMonths: [{validator: validateDelayMonths, trigger: "change"}],
|
};
|
|
const openDialog = (row) => {
|
form.id = row.id;
|
form.staffNo = row.staffNo || "";
|
form.staffName = row.staffName || "";
|
form.currentPost = row.postJob || "";
|
form.regularDate = dayjs().format("YYYY-MM-DD");
|
form.assessmentResult = "通过";
|
form.delayMonths = undefined;
|
form.remark = "";
|
visible.value = true;
|
};
|
|
const submit = () => {
|
formRef.value?.validate(async (valid) => {
|
if (!valid) return;
|
loading.value = true;
|
try {
|
await staffRegularize({
|
...form,
|
regularDate: form.assessmentResult === "延期" ? undefined : form.regularDate,
|
delayMonths: form.assessmentResult === "延期" ? form.delayMonths : undefined,
|
staffState: 1,
|
});
|
ElMessage.success("转正成功");
|
visible.value = false;
|
emit("success");
|
} finally {
|
loading.value = false;
|
}
|
});
|
};
|
|
defineExpose({
|
openDialog,
|
});
|
</script>
|
|
<style scoped></style>
|