<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="originPost">
|
<el-input v-model="form.originPost" disabled />
|
</el-form-item>
|
<el-form-item label="新岗位" prop="targetPost">
|
<el-input v-model="form.targetPost" placeholder="请输入新岗位" />
|
</el-form-item>
|
<el-form-item label="调岗日期" prop="transferDate">
|
<el-date-picker
|
v-model="form.transferDate"
|
value-format="YYYY-MM-DD"
|
type="date"
|
placeholder="请选择调岗日期"
|
style="width: 100%"
|
/>
|
</el-form-item>
|
<el-form-item label="调岗类型" prop="transferType">
|
<el-select v-model="form.transferType" placeholder="请选择调岗类型" style="width: 100%">
|
<el-option label="平调" value="平调" />
|
<el-option label="晋升" value="晋升" />
|
<el-option label="降级" value="降级" />
|
<el-option label="临时调岗" value="临时调岗" />
|
</el-select>
|
</el-form-item>
|
<el-form-item label="调岗原因" prop="transferReason">
|
<el-input v-model="form.transferReason" 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 {staffTransferPost} 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: "",
|
originPost: "",
|
targetPost: "",
|
transferDate: "",
|
transferType: "",
|
transferReason: "",
|
});
|
const rules = {
|
targetPost: [{required: true, message: "请输入新岗位", trigger: "blur"}],
|
transferDate: [{required: true, message: "请选择调岗日期", trigger: "change"}],
|
transferType: [{required: true, message: "请选择调岗类型", trigger: "change"}],
|
transferReason: [{required: true, message: "请输入调岗原因", trigger: "blur"}],
|
};
|
|
const openDialog = (row) => {
|
form.id = row.id;
|
form.staffNo = row.staffNo || "";
|
form.staffName = row.staffName || "";
|
form.originPost = row.postJob || "";
|
form.targetPost = "";
|
form.transferDate = dayjs().format("YYYY-MM-DD");
|
form.transferType = "";
|
form.transferReason = "";
|
visible.value = true;
|
};
|
|
const submit = () => {
|
formRef.value?.validate(async (valid) => {
|
if (!valid) return;
|
loading.value = true;
|
try {
|
await staffTransferPost({
|
...form,
|
});
|
ElMessage.success("调岗成功");
|
visible.value = false;
|
emit("success");
|
} finally {
|
loading.value = false;
|
}
|
});
|
};
|
|
defineExpose({
|
openDialog,
|
});
|
</script>
|
|
<style scoped></style>
|