生育休假申请修改,新增工会干部培训

This commit is contained in:
=
2025-09-23 16:00:16 +08:00
parent c3db9628fd
commit 033ceba110
28 changed files with 3012 additions and 49 deletions
@@ -12,7 +12,8 @@ layout("/layouts/platform.html"){
<el-descriptions-item label="职工姓名">{{formData.userName}}</el-descriptions-item>
<el-descriptions-item label="性别">{{formData.sex}}</el-descriptions-item>
<el-descriptions-item label="民族">{{formData.nation}}</el-descriptions-item>
<el-descriptions-item label="出生年月" >{{formData.birthday}}</el-descriptions-item>
<!-- 修改出生年月的显示方式 -->
<el-descriptions-item label="出生年月">{{formatDate(formData.birthday)}}</el-descriptions-item>
<el-descriptions-item label="工作单位" >{{formData.unitName}}</el-descriptions-item>
<el-descriptions-item label="电话" >{{formData.mobile}}</el-descriptions-item>
@@ -60,41 +61,45 @@ layout("/layouts/platform.html"){
<table-tool label="假期类别"></table-tool>
<el-descriptions :column="2" border>
<el-descriptions-item label="陪产假" v-if="formData.sex === '男性' || formData.sex === '男'">
<el-descriptions-item label="陪产假" v-if="isMale">
<el-form-item label="陪产假" prop="withLeave">
<el-input v-model="formData.withLeave" placeholder="请输入陪产天数"
type="number"></el-input>
type="number" :disabled="true"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="育儿假" v-if="formData.sex === '男性' || formData.sex === '男'">
<el-descriptions-item label="育儿假" v-if="isMale">
<el-form-item label="育儿假" prop="parentalLeave">
<el-input v-model="formData.parentalLeave" placeholder="请输入育儿假天数"
type="number"></el-input>
type="number" :disabled="true"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="产假" v-if="formData.sex === '女性' || formData.sex === '女'">
<el-descriptions-item label="产假" v-if="isFemale">
<el-form-item label="产假" prop="maternityLeave">
<el-input v-model="formData.maternityLeave" placeholder="请输入产假天数"
type="number"></el-input>
type="number" :disabled="true"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="延长假" v-if="formData.sex === '女性' || formData.sex === '女'">
<el-descriptions-item label="延长假" v-if="isFemale">
<el-form-item label="延长假" prop="extendLeave">
<el-input v-model="formData.extendLeave" placeholder="请输入延长假天数"
type="number"></el-input>
type="number" :disabled="true"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="多胞胎" v-if="formData.sex === '女性' || formData.sex === '女'">
<el-descriptions-item label="多胞胎" v-if="isFemale">
<el-form-item label="多胞胎" prop="birthsLeave">
<el-input v-model="formData.birthsLeave" placeholder="请输入多胞胎天数"
type="number"></el-input>
<el-select v-model="formData.birthsLeave" placeholder="请选择多胞胎天数"
clearable style="width: 100%">
<el-option label="15" :value="15"></el-option>
</el-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="难产假" v-if="formData.sex === '女性' || formData.sex === '女'">
<el-descriptions-item label="难产假" v-if="isFemale">
<el-form-item label="难产假" prop="difficultLeave">
<el-input v-model="formData.difficultLeave" placeholder="请输入难产假天数"
type="number"></el-input>
<el-select v-model="formData.difficultLeave" placeholder="请选择难产假天数"
clearable style="width: 100%">
<el-option label="15" :value="15"></el-option>
</el-select>
</el-form-item>
</el-descriptions-item>
@@ -198,14 +203,92 @@ layout("/layouts/platform.html"){
});
return total;
}
},
// 是否为男性
isMale() {
return this.formData.sex === '男性' || this.formData.sex === '男';
},
// 是否为女性
isFemale() {
return this.formData.sex === '女性' || this.formData.sex === '女';
},
},
watch: {
totalLeaveDays(newVal) {
this.$set(this.formData, 'leaveDays', newVal);
// 当合计天数或开始时间变化时,自动计算结束时间
this.calculateEndTime();
},
'formData.startTime'() {
// 当开始时间变化时,自动计算结束时间
this.calculateEndTime();
},
// 监听性别变化,设置默认值
isMale(newVal) {
if (newVal) {
// 男性默认设置
this.$set(this.formData, 'loverSex', '女性');
this.$set(this.formData, 'withLeave', 15);
this.$set(this.formData, 'parentalLeave', 10);
}
},
isFemale(newVal) {
if (newVal) {
// 女性默认设置
this.$set(this.formData, 'loverSex', '男性');
this.$set(this.formData, 'maternityLeave', 98);
this.$set(this.formData, 'extendLeave', 60);
}
}
},
methods: {
// 添加日期格式化方法
formatDate(date) {
if (!date) return '';
// 如果已经是 yyyy-MM-dd 格式,直接返回
if (typeof date === 'string' && /^\d{4}-\d{2}-\d{2}/.test(date)) {
// 如果包含时间,只取日期部分
if (date.length > 10) {
return date.substring(0, 10);
}
return date;
}
// 否则转换为 yyyy-MM-dd 格式
try {
const d = new Date(date);
if (isNaN(d.getTime())) {
return date;
}
const year = d.getFullYear();
const month = String(d.getMonth() + 1).padStart(2, '0');
const day = String(d.getDate()).padStart(2, '0');
return year + '-' + month + '-' + day;
} catch (e) {
return date;
}
},
// 计算休假时间止
calculateEndTime() {
// 如果是男性,则不自动计算结束时间
if (this.isMale) {
return;
}
if (this.formData.startTime && this.formData.leaveDays) {
const startDate = new Date(this.formData.startTime);
if (!isNaN(startDate.getTime())) {
// 创建新的日期对象,避免修改原始日期
const endDate = new Date(startDate);
// 添加天数(leaveDays - 1,因为包含开始日期)
endDate.setDate(endDate.getDate() + this.formData.leaveDays - 1);
// 格式化为 yyyy-MM-dd
const year = endDate.getFullYear();
const month = String(endDate.getMonth() + 1).padStart(2, '0');
const day = String(endDate.getDate()).padStart(2, '0');
// 使用字符串拼接代替模板字符串,避免与Beetl冲突
this.$set(this.formData, 'endTime', year + '-' + month + '-' + day);
}
}
},
// 保存
onSave() {
this.$confirm("您确定保存吗?", "提示", {
@@ -301,9 +384,27 @@ layout("/layouts/platform.html"){
birthday: birthday,
mobile:mobile
}
console.log('FormData birthday:', this.formData.birthday);
// 根据性别设置默认值
if (this.isMale) {
// 男性默认设置
this.$set(this.formData, 'loverSex', '女性');
this.$set(this.formData, 'withLeave', 15);
this.$set(this.formData, 'parentalLeave', 10);
// 男性默认产假和延长假为0,因为男性不休产假
this.$set(this.formData, 'maternityLeave', 0);
this.$set(this.formData, 'extendLeave', 0);
} else if (this.isFemale) {
// 女性默认设置
this.$set(this.formData, 'loverSex', '男性');
this.$set(this.formData, 'maternityLeave', 98);
this.$set(this.formData, 'extendLeave', 60);
// 女性默认陪产假和育儿假为0
this.$set(this.formData, 'withLeave', 0);
this.$set(this.formData, 'parentalLeave', 0);
}
}
}
},
created() {
@@ -10,15 +10,13 @@ const maternityLeaveInfo = {
<el-descriptions-item label="职工姓名">{{viewData.userName}}</el-descriptions-item>
<el-descriptions-item label="性别">{{viewData.sex}}</el-descriptions-item>
<el-descriptions-item label="民族">{{viewData.nation}}</el-descriptions-item>
<el-descriptions-item label="出生年月">{{viewData.birthday}}</el-descriptions-item>
<el-descriptions-item label="单位">{{viewData.unitName}}</el-descriptions-item>
<el-descriptions-item label="出生年月">{{formatDate(viewData.birthday)}}</el-descriptions-item> <el-descriptions-item label="单位">{{viewData.unitName}}</el-descriptions-item>
<el-descriptions-item label="电话">{{viewData.mobile}}</el-descriptions-item>
<el-descriptions-item label="爱人姓名">{{viewData.loverName}}</el-descriptions-item>
<el-descriptions-item label="性别">{{viewData.loverSex}}</el-descriptions-item>
<el-descriptions-item label="民族">{{viewData.loverNation}}</el-descriptions-item>
<el-descriptions-item label="出生年月">{{viewData.loverBirthday}}</el-descriptions-item>
<el-descriptions-item label="单位" span="2">{{viewData.loverUnitName}}</el-descriptions-item>
<el-descriptions-item label="出生年月">{{formatDate(viewData.loverBirthday)}}</el-descriptions-item> <el-descriptions-item label="单位" span="2">{{viewData.loverUnitName}}</el-descriptions-item>
</el-descriptions>
<table-tool label="假期类型"></table-tool>
<el-descriptions :column="2" border class="flow-task-form">
@@ -43,10 +41,10 @@ const maternityLeaveInfo = {
<el-descriptions-item label="寒假">{{viewData.winterLeave}}</el-descriptions-item>
<el-descriptions-item label="暑假">{{viewData.summerLeave}}</el-descriptions-item>
<el-descriptions-item label="合计" :span="2">{{viewData.leaveDays}}</el-descriptions-item>
<el-descriptions-item label="休假时间起">{{viewData.startTime}}</el-descriptions-item>
<el-descriptions-item label="休假时间止">{{viewData.endTime}}</el-descriptions-item>
<el-descriptions-item label="子女出生日">{{viewData.childrenBirthday}}</el-descriptions-item>
<el-descriptions-item label="休假时间起">{{formatDate(viewData.startTime)}}</el-descriptions-item>
<el-descriptions-item label="休假时间止">{{formatDate(viewData.endTime)}}</el-descriptions-item>
<el-descriptions-item label="子女出生日">{{formatDate(viewData.childrenBirthday)}}</el-descriptions-item>
</el-descriptions>
<template v-for="task in doneTasks">
@@ -101,6 +99,31 @@ const maternityLeaveInfo = {
}
},
methods: {
// 添加日期格式化方法
formatDate(date) {
if (!date) return '';
// 如果已经是 yyyy-MM-dd 格式,直接返回
if (typeof date === 'string' && /^\d{4}-\d{2}-\d{2}/.test(date)) {
// 如果包含时间,只取日期部分
if (date.length > 10) {
return date.substring(0, 10);
}
return date;
}
// 否则转换为 yyyy-MM-dd 格式
try {
const d = new Date(date);
if (isNaN(d.getTime())) {
return date;
}
const year = d.getFullYear();
const month = String(d.getMonth() + 1).padStart(2, '0');
const day = String(d.getDate()).padStart(2, '0');
return year + '-' + month + '-' + day;
} catch (e) {
return date;
}
},
// 打开
onOpen(row) {
this.row = row
@@ -35,6 +35,7 @@ layout("/layouts/platform.html"){
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
</el-button>
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onDelete(row.id)" size="mini" type="danger">删除</el-button>
<el-button @click="doExportApply(row)" size="mini" type="primary">申请表导出</el-button>
</template>
</el-table-column>
</el-table>
@@ -69,6 +70,10 @@ layout("/layouts/platform.html"){
}
,
methods: {
// 导出示例
doExportApply(row){
this.$downLoad('/platform/maternityLeave/mine/doExportApply?id=' + row.id)
},
onView(row) {
this.$refs.guava.view(()=>{
this.$refs.maternityLeaveInfoRef.onOpen(row)