feat: 添加离职申请表

This commit is contained in:
caoqianming 2025-11-09 22:37:18 +08:00
parent 714ab23cd6
commit 84e447527a
2 changed files with 122 additions and 68 deletions

View File

@ -1,15 +1,18 @@
<template> <template>
<el-container>
<el-main class="nopadding">
<el-form label-width="80px" :model="formData" style="padding: 20px;"> <el-form label-width="80px" :model="formData" style="padding: 20px;">
<el-form-item label="员工信息" required> <el-form-item label="员工信息" required>
{{ formData.employee_name }}{{ formData.belong_dept_name }} - {{ formData.post_name }} {{ formData.employee_name }}{{ formData.belong_dept_name }} - {{ formData.post_name }}
</el-form-item> </el-form-item>
<el-form-item label="离职日期" required> <el-form-item label="离职日期" required>
<el-date-picker <el-date-picker
v-model="formData.resign_date" v-model="formData.end_date"
type="date" type="date"
placeholder="预计离职日期" placeholder="预计离职日期"
style="width: 100%;" style="width: 100%;"
:readonly="mode === 'show'" value-format="YYYY-MM-DD"
:readonly="localMode === 'show'"
></el-date-picker> ></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="离职原因" required> <el-form-item label="离职原因" required>
@ -18,58 +21,109 @@
:rows="4" :rows="4"
v-model="formData.reason" v-model="formData.reason"
placeholder="请输入离职原因" placeholder="请输入离职原因"
:readonly="mode === 'show'" :readonly="localMode === 'show'"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item> </el-form>
<el-footer>
<ticketd_b <ticketd_b
:workflow_key="'resignation'" :workflow_key="'wf_resignation'"
:title="formData.employee_name + '的离职申请'" :title="ticketTitle"
:t_id="formData.id" :t_id="formData.id"
:ticket_="formData.ticket_" :ticket_="formData.ticket_"
@success="()=>{$emit('success')}" @success="$emit('success', localMode)"
:submit_b_func="submit_b_func" :submit_b_func="submit_b_func"
ref="ticketd_b" ref="ticketd_b"
></ticketd_b> ></ticketd_b>
</el-form-item> </el-footer>
</el-form> </el-main>
<el-aside width="20%" v-if="formData.ticket_">
<ticketd :ticket_="formData.ticket_" @success="$emit('success')"></ticketd>
</el-aside>
</el-container>
</template> </template>
<script setup>
import { ref, onMounted, defineProps } from 'vue' <script>
import ticketd_b from "@/views/wf/ticketd_b.vue"; import ticketd_b from "@/views/wf/ticketd_b.vue";
import ticketd from '@/views/wf/ticketd.vue' import ticketd from '@/views/wf/ticketd.vue'
import API from '@/api'
import TOOL from "@/utils/tool.js";
const props = defineProps({ export default {
mode: { type: String, default: 'show' }, name: 'ResignationForm',
t_id: { type: String, default: "" }, components: {
}); ticketd_b,
const formData = ref({}); ticketd
const mode = ref(props.mode); },
onMounted(async () =>{ props: {
if(props.t_id){ mode: {
getTid(); type: String,
}else{ default: 'show'
let res = await API.hrm.employee.read.req(); },
formData.value.employee_name = res.name; t_id: {
formData.value.belong_dept_name = res.belong_dept_name; type: String,
formData.value.post_name = res.post_name; default: ""
formData.value.employee = res.id; }
},
data() {
return {
formData: {
employee_name: ""
},
localMode: this.mode,
ticketTitle: "离职申请"
}
},
watch: {
mode(newVal) {
this.localMode = newVal;
}
},
mounted() {
if (this.t_id) {
this.getTid();
} else {
this.initFormData();
}
},
methods: {
async initFormData() {
try {
let res = await this.$API.hrm.employee.read.req();
this.formData.employee_name = res.name;
this.formData.belong_dept_name = res.belong_dept_name;
this.formData.post_name = res.post_name;
this.formData.employee = res.id;
this.localMode = "add";
} catch (error) {
console.error('初始化表单数据失败:', error);
}
},
async getTid() {
try {
let res = await this.$API.hrm.resignation.item.req(this.t_id);
this.formData = res;
if (res.ticket_ && res.ticket_.state_.type == 1 && res.create_by == this.$TOOL.data.get("USER_INFO").id) {
this.localMode = "edit";
}
} catch (error) {
console.error('获取离职数据失败:', error);
}
},
async submit_b_func() {
if (this.localMode == "add") {
try {
let res = await this.$API.hrm.resignation.create.req(this.formData);
this.ticketTitle = this.formData.employee_name + "的离职申请";
this.formData.id = res.id;
return res.id;
} catch (error) {
console.error('提交离职申请失败:', error);
throw error;
}
} else if (this.localMode == "edit") {
this.$message.error("不支持编辑");
throw new Error("不支持编辑");
} }
})
const getTid = async () => {
let res = await API.hrm.resignation.item.req(props.t_id);
formData.value = res;
if(res.ticket_.state_.type == 1 && res.create_by == TOOL.data.get("USER_INFO").id ) {
mode.value = "edit";
}else{
mode.value = "show";
} }
};
const submit_b_func = async ()=>{
if (mode.value == "add") {
await API.hrm.resignation.create.req(formData.value);
} }
} }
</script> </script>

View File

@ -68,7 +68,7 @@
<el-footer> <el-footer>
<el-button @click="$emit('closed')" style="margin-right: 4px">取消</el-button> <el-button @click="$emit('closed')" style="margin-right: 4px">取消</el-button>
<ticketd_b <ticketd_b
:workflow_key="'mroombooking.create'" :workflow_key="'booking'"
:title="form.title+'-会议室预定'" :title="form.title+'-会议室预定'"
:t_id="form.id" :t_id="form.id"
:ticket_="form.ticket_" :ticket_="form.ticket_"