生育休假申请修改,新增工会干部培训
This commit is contained in:
+144
-18
@@ -74,17 +74,17 @@ layout("/layouts/platform_h5.html"){
|
||||
|
||||
<van-cell-group title="假期类型" class="form-section">
|
||||
<van-field label="陪产假" v-model="formData.withLeave" placeholder="请输入天数" type="number"
|
||||
v-if="formData.sex === '男性' || formData.sex === '男'" required></van-field>
|
||||
v-if="isMale" required></van-field>
|
||||
<van-field label="育儿假" v-model="formData.parentalLeave" placeholder="请输入天数" type="number"
|
||||
v-if="formData.sex === '男性' || formData.sex === '男'" required></van-field>
|
||||
v-if="isMale" required></van-field>
|
||||
<van-field label="产假" v-model="formData.maternityLeave" placeholder="请输入天数" type="number"
|
||||
v-if="formData.sex === '女性' || formData.sex === '女'" required></van-field>
|
||||
v-if="isFemale" required></van-field>
|
||||
<van-field label="延长假" v-model="formData.extendLeave" placeholder="请输入天数" type="number"
|
||||
v-if="formData.sex === '女性' || formData.sex === '女'" required></van-field>
|
||||
v-if="isFemale" required></van-field>
|
||||
<van-field label="多胞胎" v-model="formData.birthsLeave" placeholder="请输入天数" type="number"
|
||||
v-if="formData.sex === '女性' || formData.sex === '女'" required></van-field>
|
||||
v-if="isFemale" required></van-field>
|
||||
<van-field label="难产假" v-model="formData.difficultLeave" placeholder="请输入天数" type="number"
|
||||
v-if="formData.sex === '女性' || formData.sex === '女'" required></van-field>
|
||||
v-if="isFemale" required></van-field>
|
||||
<van-field label="寒假" v-model="formData.winterLeave" placeholder="请输入天数"
|
||||
type="number" required></van-field>
|
||||
<van-field label="暑假" v-model="formData.summerLeave" placeholder="请输入天数"
|
||||
@@ -180,8 +180,8 @@ layout("/layouts/platform_h5.html"){
|
||||
showStartTimePicker: false,
|
||||
showEndTimePicker: false,
|
||||
showChildrenBirthdayPicker: false,
|
||||
minDate: new Date(1950, 0, 1), // 设置最小日期为2000年1月1日
|
||||
maxDate: new Date(2040, 12, 31), // 设置最大日期为2030年12月31日
|
||||
minDate: new Date(1950, 0, 1), // 设置最小日期为1950年1月1日
|
||||
maxDate: new Date(2040, 12, 31), // 设置最大日期为2040年12月31日
|
||||
// 表单验证规则
|
||||
formRules: {
|
||||
loverName: [{ required: true, message: '请输入爱人姓名' }],
|
||||
@@ -225,9 +225,91 @@ layout("/layouts/platform_h5.html"){
|
||||
// 同时更新 formData.leaveDays,以便保存到后端
|
||||
this.$set(this.formData, 'leaveDays', total);
|
||||
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: {
|
||||
// 格式化日期为 yyyy-MM-dd 格式
|
||||
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');
|
||||
this.$set(this.formData, 'endTime', year + '-' + month + '-' + day);
|
||||
}
|
||||
}
|
||||
},
|
||||
async onSave() {
|
||||
// 保存时不需要验证,直接提交数据
|
||||
this.$axios.post("/platform/maternityLeave/apply/save", {data: JSON.stringify(this.formData)})
|
||||
@@ -298,7 +380,7 @@ layout("/layouts/platform_h5.html"){
|
||||
}
|
||||
}
|
||||
|
||||
// 所人性别都需要填写的字段
|
||||
// 所有人需要填写的字段
|
||||
if (!this.formData.winterLeave && this.formData.winterLeave !== 0) {
|
||||
errors.push('请输入寒假天数');
|
||||
}
|
||||
@@ -373,26 +455,26 @@ layout("/layouts/platform_h5.html"){
|
||||
});
|
||||
},
|
||||
|
||||
// 出生日期确认事件
|
||||
// 出生日期确认事件 - 格式化为 yyyy-MM-dd
|
||||
onLoverBirthdayConfirm(value) {
|
||||
this.$set(this.formData, "loverBirthday", this.$moment(value).format("YYYY-MM-DD"));
|
||||
this.$set(this.formData, "loverBirthday", this.formatDate(value));
|
||||
this.showLoverBirthdayPicker = false;
|
||||
},
|
||||
// 休假开始时间确认事件
|
||||
// 休假开始时间确认事件 - 格式化为 yyyy-MM-dd
|
||||
onStartTimeConfirm(value) {
|
||||
this.$set(this.formData, "startTime", this.$moment(value).format("YYYY-MM-DD"));
|
||||
this.$set(this.formData, "startTime", this.formatDate(value));
|
||||
this.showStartTimePicker = false;
|
||||
},
|
||||
|
||||
// 休假结束时间确认事件
|
||||
// 休假结束时间确认事件 - 格式化为 yyyy-MM-dd
|
||||
onEndTimeConfirm(value) {
|
||||
this.$set(this.formData, "endTime", this.$moment(value).format("YYYY-MM-DD"));
|
||||
this.$set(this.formData, "endTime", this.formatDate(value));
|
||||
this.showEndTimePicker = false;
|
||||
},
|
||||
|
||||
// 子女出生日期确认事件
|
||||
// 子女出生日期确认事件 - 格式化为 yyyy-MM-dd
|
||||
onChildrenBirthdayConfirm(value) {
|
||||
this.$set(this.formData, "childrenBirthday", this.$moment(value).format("YYYY-MM-DD"));
|
||||
this.$set(this.formData, "childrenBirthday", this.formatDate(value));
|
||||
this.showChildrenBirthdayPicker = false;
|
||||
},
|
||||
|
||||
@@ -435,6 +517,31 @@ layout("/layouts/platform_h5.html"){
|
||||
this.$set(this.formData, "loverNation", matched.value)
|
||||
}
|
||||
}
|
||||
|
||||
// 格式化所有日期字段,确保不包含时分秒
|
||||
const dateFields = ['birthday', 'loverBirthday', 'startTime', 'endTime', 'childrenBirthday'];
|
||||
dateFields.forEach(field => {
|
||||
if (this.formData[field]) {
|
||||
this.$set(this.formData, field, this.formatDate(this.formData[field]));
|
||||
}
|
||||
});
|
||||
|
||||
// 根据性别设置默认值
|
||||
if (this.isMale) {
|
||||
// 男性默认设置
|
||||
if (!this.formData.withLeave) this.$set(this.formData, 'withLeave', 15);
|
||||
if (!this.formData.parentalLeave) this.$set(this.formData, 'parentalLeave', 10);
|
||||
// 男性默认产假和延长假为0
|
||||
if (!this.formData.maternityLeave) this.$set(this.formData, 'maternityLeave', 0);
|
||||
if (!this.formData.extendLeave) this.$set(this.formData, 'extendLeave', 0);
|
||||
} else if (this.isFemale) {
|
||||
// 女性默认设置
|
||||
if (!this.formData.maternityLeave) this.$set(this.formData, 'maternityLeave', 98);
|
||||
if (!this.formData.extendLeave) this.$set(this.formData, 'extendLeave', 60);
|
||||
// 女性默认陪产假和育儿假为0
|
||||
if (!this.formData.withLeave) this.$set(this.formData, 'withLeave', 0);
|
||||
if (!this.formData.parentalLeave) this.$set(this.formData, 'parentalLeave', 0);
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
@@ -448,8 +555,27 @@ layout("/layouts/platform_h5.html"){
|
||||
this.$set(this.formData, "unionName", user.union.name)
|
||||
this.$set(this.formData, "sex", user.sex)
|
||||
this.$set(this.formData, "nation", user.nation)
|
||||
this.$set(this.formData, "birthday", user.birthday)
|
||||
this.$set(this.formData, "birthday", this.formatDate(user.birthday)) // 格式化日期
|
||||
this.$set(this.formData, "mobile", user.mobile)
|
||||
|
||||
// 根据性别设置默认值
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
+32
-6
@@ -3,17 +3,17 @@ const MATERNITY_LEAVE_INFO = {
|
||||
/*language=HTML*/`
|
||||
<van-action-sheet v-model="visible" title="查看详情">
|
||||
<div class="detail-container">
|
||||
<van-cell-group title="人员信息">
|
||||
<van-cell-group title="人员信息">
|
||||
<van-cell title="职工姓名">{{ viewData.userName }}</van-cell>
|
||||
<van-cell title="性别">{{ viewData.sex }}</van-cell>
|
||||
<van-cell title="民族">{{ viewData.nation }}</van-cell>
|
||||
<van-cell title="出生年月">{{ viewData.birthday }}</van-cell>
|
||||
<van-cell title="出生年月">{{ formatDate(viewData.birthday) }}</van-cell>
|
||||
<van-cell title="单位">{{ viewData.unitName }}</van-cell>
|
||||
<van-cell title="电话">{{ viewData.mobile }}</van-cell>
|
||||
<van-cell title="爱人姓名">{{ viewData.loverName }}</van-cell>
|
||||
<van-cell title="性别">{{ viewData.loverSex }}</van-cell>
|
||||
<van-cell title="民族">{{ viewData.loverNation }}</van-cell>
|
||||
<van-cell title="出生年月">{{ viewData.loverBirthday }}</van-cell>
|
||||
<van-cell title="出生年月">{{ formatDate(viewData.loverBirthday) }}</van-cell>
|
||||
<van-cell title="单位">{{ viewData.loverUnitName }}</van-cell>
|
||||
</van-cell-group>
|
||||
|
||||
@@ -27,11 +27,12 @@ const MATERNITY_LEAVE_INFO = {
|
||||
<van-cell title="寒假">{{ viewData.winterLeave }}</van-cell>
|
||||
<van-cell title="暑假">{{ viewData.summerLeave }}</van-cell>
|
||||
<van-cell title="合计">{{ viewData.leaveDays }}</van-cell>
|
||||
<van-cell title="休假时间起">{{ viewData.startTime }}</van-cell>
|
||||
<van-cell title="休假时间止">{{ viewData.endTime }}</van-cell>
|
||||
<van-cell title="子女出生日">{{ viewData.childrenBirthday }}</van-cell>
|
||||
<van-cell title="休假时间起">{{ formatDate(viewData.startTime) }}</van-cell>
|
||||
<van-cell title="休假时间止">{{ formatDate(viewData.endTime) }}</van-cell>
|
||||
<van-cell title="子女出生日">{{ formatDate(viewData.childrenBirthday) }}</van-cell>
|
||||
</van-cell-group>
|
||||
|
||||
|
||||
<template v-for="(task,index) in doneTasks">
|
||||
<div class="process-title">
|
||||
{{ task.displayName }}
|
||||
@@ -88,6 +89,31 @@ const MATERNITY_LEAVE_INFO = {
|
||||
}
|
||||
},
|
||||
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
|
||||
this.visible = true
|
||||
|
||||
Reference in New Issue
Block a user