Merge remote-tracking branch 'origin/main'

This commit is contained in:
那些花儿
2025-09-23 16:18:56 +08:00
43 changed files with 3072 additions and 96 deletions
@@ -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);
}
}
}
},
@@ -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