factory_web/src/views/hrm/resignation_form.vue

145 lines
4.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<el-container>
<el-main class="nopadding">
<el-form label-width="80px" :model="formData" style="padding: 20px;">
<el-form-item label="员工信息" required>
{{ formData.employee_name }}{{ formData.belong_dept_name }} - {{ formData.post_name }}
</el-form-item>
<el-form-item label="离职日期" required>
<el-date-picker
v-model="formData.end_date"
type="date"
placeholder="预计离职日期"
style="width: 100%;"
value-format="YYYY-MM-DD"
:readonly="localMode === 'show'"
></el-date-picker>
</el-form-item>
<el-form-item label="离职原因" required>
<el-input
type="textarea"
:rows="4"
v-model="formData.reason"
placeholder="请输入离职原因"
:readonly="localMode === 'show'"
></el-input>
</el-form-item>
</el-form>
<el-footer>
<el-button type="danger"
v-if="localMode=='edit'"
style="margin-right: 4px;"
@click="handleDel"
>删除</el-button>
<ticketd_b
:workflow_key="'wf_resignation'"
:title="ticketTitle"
:t_id="formData.id"
:ticket_="formData.ticket_"
@success="$emit('success', localMode)"
: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>
<script>
import ticketd_b from "@/views/wf/ticketd_b.vue";
import ticketd from '@/views/wf/ticketd.vue'
export default {
name: 'ResignationForm',
components: {
ticketd_b,
ticketd
},
props: {
mode: {
type: String,
default: 'show'
},
t_id: {
type: String,
default: ""
}
},
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);
}
},
handleDel() {
this.$confirm(`确定删除吗?`, "提示", {
type: "warning",
})
.then(()=>{
this.$API.hrm.resignation.delete.req(this.formData.id).then(res=>{
this.$message.success("删除成功");
this.$emit('success');
})
})
},
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>