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,75 +1,129 @@
<template> <template>
<el-form label-width="80px" :model="formData" style="padding: 20px;"> <el-container>
<el-form-item label="员工信息" required> <el-main class="nopadding">
{{ formData.employee_name }}{{ formData.belong_dept_name }} - {{ formData.post_name }} <el-form label-width="80px" :model="formData" style="padding: 20px;">
</el-form-item> <el-form-item label="员工信息" required>
<el-form-item label="离职日期" required> {{ formData.employee_name }}{{ formData.belong_dept_name }} - {{ formData.post_name }}
<el-date-picker </el-form-item>
v-model="formData.resign_date" <el-form-item label="离职日期" required>
type="date" <el-date-picker
placeholder="预计离职日期" v-model="formData.end_date"
style="width: 100%;" type="date"
:readonly="mode === 'show'" placeholder="预计离职日期"
></el-date-picker> style="width: 100%;"
</el-form-item> value-format="YYYY-MM-DD"
<el-form-item label="离职原因" required> :readonly="localMode === 'show'"
<el-input ></el-date-picker>
type="textarea" </el-form-item>
:rows="4" <el-form-item label="离职原因" required>
v-model="formData.reason" <el-input
placeholder="请输入离职原因" type="textarea"
:readonly="mode === 'show'" :rows="4"
></el-input> v-model="formData.reason"
</el-form-item> placeholder="请输入离职原因"
<el-form-item> :readonly="localMode === 'show'"
<ticketd_b ></el-input>
:workflow_key="'resignation'" </el-form-item>
:title="formData.employee_name + '的离职申请'" </el-form>
:t_id="formData.id" <el-footer>
:ticket_="formData.ticket_" <ticketd_b
@success="()=>{$emit('success')}" :workflow_key="'wf_resignation'"
:submit_b_func="submit_b_func" :title="ticketTitle"
ref="ticketd_b" :t_id="formData.id"
></ticketd_b> :ticket_="formData.ticket_"
</el-form-item> @success="$emit('success', localMode)"
</el-form> :submit_b_func="submit_b_func"
ref="ticketd_b"
></ticketd_b>
</el-footer>
</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() {
const getTid = async () => { return {
let res = await API.hrm.resignation.item.req(props.t_id); formData: {
formData.value = res; employee_name: ""
if(res.ticket_.state_.type == 1 && res.create_by == TOOL.data.get("USER_INFO").id ) { },
mode.value = "edit"; localMode: this.mode,
}else{ ticketTitle: "离职申请"
mode.value = "show"; }
} },
}; watch: {
const submit_b_func = async ()=>{ mode(newVal) {
if (mode.value == "add") { this.localMode = newVal;
await API.hrm.resignation.create.req(formData.value); }
},
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("不支持编辑");
}
}
} }
} }
</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_"