生育休假、独生子女父母退休

This commit is contained in:
=
2025-09-19 14:08:22 +08:00
parent bd96676929
commit c8c83e5abd
11 changed files with 296 additions and 236 deletions
@@ -120,16 +120,8 @@ layout("/layouts/platform.html"){
placeholder="请输入办证机关"></el-input> placeholder="请输入办证机关"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="奖励金额" prop="bonus">
<el-input type="text" v-model="formData.bonus"
placeholder="请输入奖励金额"></el-input>
</el-form-item>
</el-col>
</el-row> </el-row>
<!-- 以下项目保持单独一行 --> <!-- 以下项目保持单独一行 -->
<el-form-item prop="honorFiles" label="独生子女父母光荣证"> <el-form-item prop="honorFiles" label="独生子女父母光荣证">
<file-upload :upload_number="5" :value.sync="formData.honorFiles" <file-upload :upload_number="5" :value.sync="formData.honorFiles"
@@ -176,9 +168,23 @@ layout("/layouts/platform.html"){
taskId: GetQueryString("taskId"), taskId: GetQueryString("taskId"),
formData: {}, formData: {},
formRules: { formRules: {
declarationAgreed: [ userName: [{ required: true, message: '职工姓名不能为空', trigger: 'blur' }],
{ required: true, message: '请勾选申报理由', trigger: 'change' } sex: [{ required: true, message: '性别不能为空', trigger: 'blur' }],
] birthday: [{ required: true, message: '出生年月不能为空', trigger: 'blur' }],
unitName: [{ required: true, message: '原工作单位不能为空', trigger: 'blur' }],
retireTime: [{ required: true, message: '请选择退休时间', trigger: 'change' }],
loverName: [{ required: true, message: '请输入爱人姓名', trigger: 'blur' }],
loverSex: [{ required: true, message: '请选择爱人性别', trigger: 'change' }],
loverUnitName: [{ required: true, message: '请输入爱人工作单位', trigger: 'blur' }],
marryTime: [{ required: true, message: '请选择结婚日期', trigger: 'change' }],
childrenBirthday: [{ required: true, message: '请选择子女出生日', trigger: 'change' }],
getCertificateTime: [{ required: true, message: '请选择领独生子女证日', trigger: 'change' }],
childrenGraceNumber: [{ required: true, message: '请输入独生子女光荣证号', trigger: 'blur' }],
office: [{ required: true, message: '请输入办证机关', trigger: 'blur' }],
honorFiles: [{ required: true, message: '请上传独生子女父母光荣证', trigger: 'change' }],
retireFiles: [{ required: true, message: '请上传退休证', trigger: 'change' }],
sign: [{ required: true, message: '请签字', trigger: 'change' }],
declarationAgreed: [{ required: true, message: '请勾选申报理由', trigger: 'change', type: 'enum', enum: [true] }]
}, },
} }
}, },
@@ -199,10 +205,66 @@ layout("/layouts/platform.html"){
}) })
}) })
}, },
// 提交 // 提交验证
onSubmit() { validateBeforeSubmit() {
return new Promise((resolve) => {
this.$refs.formRef.validate((valid) => { this.$refs.formRef.validate((valid) => {
if (valid) { if (valid) {
resolve(true);
} else {
this.$message.error('请完善表单信息并勾选申报理由');
resolve(false);
}
});
});
},
// 添加检查是否为退休人员的方法
async checkRetirementStatus() {
try {
const resp = await this.$axios.post('/platform/dsznfmtx/apply/checkRetirementStatus');
// 如果返回code为0且data为true,表示用户是退休人员
if (resp.code === 0 && resp.data === true) {
return true;
}
return false;
} catch (error) {
console.error('检查退休状态失败:', error);
return false;
}
},
// 检查用户是否已申请过
async checkUserApplication() {
try {
const resp = await this.$axios.post('/platform/dsznfmtx/apply/checkUserApplied');
// 如果返回code为0且data为true,表示用户已申请过
if (resp.code === 0 && resp.data === true) {
return true;
}
return false;
} catch (error) {
console.error('检查用户申请状态失败:', error);
return false;
}
},
// 提交
async onSubmit() {
// 检查是否为退休人员
const isRetired = await this.checkRetirementStatus();
if (!isRetired) {
this.$message.warning('您不是退休人员,无法申请此项福利');
return;
}
if (!this.bizId) {
const isApplied = await this.checkUserApplication();
if (isApplied) {
this.$message.warning('您已经提交过申请,不能重复申请');
return;
}
}
const isValid = await this.validateBeforeSubmit();
if (!isValid) return;
this.$confirm("您确定要提交吗?", "提示", { this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
@@ -217,16 +279,12 @@ layout("/layouts/platform.html"){
} }
}) })
}) })
} else {
this.$message.error('请完善表单信息并勾选申报理由');
return false;
}
});
}, },
// 再次提交 // 再次提交
onFinishTask() { async onFinishTask() {
this.$refs.formRef.validate((valid) => { const isValid = await this.validateBeforeSubmit();
if (valid) { if (!isValid) return;
this.$confirm("您确定要提交吗?", "提示", { this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
@@ -242,11 +300,6 @@ layout("/layouts/platform.html"){
} }
}) })
}) })
} else {
this.$message.error('请完善表单信息并勾选申报理由');
return false;
}
});
}, },
async findOne(id) { async findOne(id) {
const resp = await $.get('/platform/dsznfmtx/apply/findOne', {id}) const resp = await $.get('/platform/dsznfmtx/apply/findOne', {id})
@@ -272,9 +325,7 @@ layout("/layouts/platform.html"){
sex: sex, sex: sex,
birthday: birthday, birthday: birthday,
} }
} }
} }
}, },
created() { created() {
@@ -284,6 +335,7 @@ layout("/layouts/platform.html"){
</script> </script>
<!--# <!--#
} }
#--> #-->
@@ -63,6 +63,12 @@ const DSZNFMTX_INFO = {
<el-descriptions-item label="办理意见" v-if="!task.ext.isFirstTaskNode">{{ <el-descriptions-item label="办理意见" v-if="!task.ext.isFirstTaskNode">{{
task.taskFormData.opinion }} task.taskFormData.opinion }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="签字" :span="3" v-if="!task.ext.isFirstTaskNode">
<el-image :src="task.ext.tf_userSign"
v-if="task.ext.tf_userSign"
class="signature-image"></el-image>
<span v-else>暂无</span>
</el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
</template> </template>
@@ -88,9 +88,9 @@ layout("/layouts/platform.html"){
:rules="[{required:true,message:'必填',trigger:['change','blur']}]"> :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea> <user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item> </el-form-item>
<!-- <el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">--> <el-form-item label="电子签名" prop="tf_userSign" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<!-- <pc-signature v-model="consolidationFormData.approvalSignature"></pc-signature>--> <pc-signature v-model="formData.tf_userSign"></pc-signature>
<!-- </el-form-item>--> </el-form-item>
</el-form> </el-form>
<el-row type="flex" justify="end"> <el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button> <el-button @click="$refs.guava.index()" size="small">取消</el-button>
@@ -86,9 +86,9 @@ layout("/layouts/platform.html"){
:rules="[{required:true,message:'必填',trigger:['change','blur']}]"> :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea> <user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item> </el-form-item>
<!-- <el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">--> <el-form-item label="电子签名" prop="tf_userSign" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<!-- <pc-signature v-model="consolidationFormData.approvalSignature"></pc-signature>--> <pc-signature v-model="formData.tf_userSign"></pc-signature>
<!-- </el-form-item>--> </el-form-item>
</el-form> </el-form>
<el-row type="flex" justify="end"> <el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button> <el-button @click="$refs.guava.index()" size="small">取消</el-button>
@@ -111,12 +111,8 @@ layout("/layouts/platform.html"){
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="合计天数" span="2">{{formData.leaveDays}} <el-descriptions-item label="合计天数" span="2">{{formData.leaveDays}}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions>
<table-tool label="休假时间"></table-tool>
<el-descriptions :column="2" border>
<el-descriptions-item label="休假时间起"> <el-descriptions-item label="休假时间起">
<el-form-item label="休假时间起" prop="startTime"> <el-form-item label="休假时间起" prop="startTime">
<el-date-picker type="date" <el-date-picker type="date"
@@ -42,11 +42,8 @@ const maternityLeaveInfo = {
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="寒假">{{viewData.winterLeave}}</el-descriptions-item> <el-descriptions-item label="寒假">{{viewData.winterLeave}}</el-descriptions-item>
<el-descriptions-item label="暑假">{{viewData.summerLeave}}</el-descriptions-item> <el-descriptions-item label="暑假">{{viewData.summerLeave}}</el-descriptions-item>
<el-descriptions-item label="合计">{{viewData.leaveDays}}</el-descriptions-item> <el-descriptions-item label="合计" :span="2">{{viewData.leaveDays}}</el-descriptions-item>
</el-descriptions>
<table-tool label="休假时间"></table-tool>
<el-descriptions :column="2" border class="flow-task-form">
<el-descriptions-item label="休假时间起">{{viewData.startTime}}</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.endTime}}</el-descriptions-item>
<el-descriptions-item label="子女出生日">{{viewData.childrenBirthday}}</el-descriptions-item> <el-descriptions-item label="子女出生日">{{viewData.childrenBirthday}}</el-descriptions-item>
@@ -76,9 +73,15 @@ const maternityLeaveInfo = {
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE" <dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
:value="task.ext.submitType"></dict-tag> :value="task.ext.submitType"></dict-tag>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="办理意见" v-if="!task.ext.isFirstTaskNode">{{ <el-descriptions-item label="办理意见" :span="3" v-if="!task.ext.isFirstTaskNode">{{
task.taskFormData.opinion }} task.taskFormData.opinion }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="签字" :span="3" v-if="!task.ext.isFirstTaskNode">
<el-image :src="task.ext.tf_userSign"
v-if="task.ext.tf_userSign"
class="signature-image"></el-image>
<span v-else>暂无</span>
</el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
</template> </template>
@@ -87,8 +87,8 @@ layout("/layouts/platform.html"){
:rules="[{required:true,message:'必填',trigger:['change','blur']}]"> :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea> <user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item> </el-form-item>
<el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]"> <el-form-item label="电子签名" prop="tf_userSign" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<pc-signature v-model="consolidationFormData.approvalSignature"></pc-signature> <pc-signature v-model="formData.tf_userSign"></pc-signature>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row type="flex" justify="end"> <el-row type="flex" justify="end">
@@ -86,8 +86,8 @@ layout("/layouts/platform.html"){
:rules="[{required:true,message:'必填',trigger:['change','blur']}]"> :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea> <user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item> </el-form-item>
<el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]"> <el-form-item label="电子签名" prop="tf_userSign" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<pc-signature v-model="consolidationFormData.approvalSignature"></pc-signature> <pc-signature v-model="formData.tf_userSign"></pc-signature>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row type="flex" justify="end"> <el-row type="flex" justify="end">
@@ -131,6 +131,7 @@ layout("/layouts/platform.html"){
methods: { methods: {
onView(row) { onView(row) {
this.$refs.guava.view(()=>{ this.$refs.guava.view(()=>{
this.showApprovalForm = false;
this.$refs.maternityLeaveInfoRef.onOpen(row) this.$refs.maternityLeaveInfoRef.onOpen(row)
}) })
}, },
@@ -9,7 +9,7 @@ layout("/layouts/platform_h5.html"){
} }
</style> </style>
<div id="app" v-cloak> <div id="app" v-cloak>
<van-nav-bar title="申请表单" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed z-index="999" <van-nav-bar title="独生子女父母退休申请" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed z-index="999"
class="custom-nav"></van-nav-bar> class="custom-nav"></van-nav-bar>
<div class="form-container"> <div class="form-container">
@@ -101,10 +101,11 @@ layout("/layouts/platform_h5.html"){
></h5-file-upload> ></h5-file-upload>
</template> </template>
</van-field> </van-field>
<!-- <van-cell title="签字" >--> <van-field class="more-text" name="sign" label="">
<!-- <van-image :src="formData.sign"--> <template #input>
<!-- class="signature-image"></van-image>--> <h5-signature v-model="formData.sign" slot="input"></h5-signature>
<!-- </van-cell>--> </template>
</van-field>
</van-cell-group> </van-cell-group>
<van-field name="declarationAgreed" class="declaration-checkbox"> <van-field name="declarationAgreed" class="declaration-checkbox">
@@ -24,10 +24,11 @@ const DSZNFMTX_INFO = {
<van-cell title="退休证"> <van-cell title="退休证">
<file-preview :files="viewData.retireFiles" complete_result></file-preview> <file-preview :files="viewData.retireFiles" complete_result></file-preview>
</van-cell> </van-cell>
<!-- <van-cell title="签字">--> <van-cell title="签字" >
<!-- <van-image :src="viewData.sign" v-if="viewData.sign" class="sign-image"></van-image>--> <van-image :src="viewData.sign"
<!-- <span v-else>暂无签字</span>--> v-if="viewData.sign"
<!-- </van-cell>--> class="signature-image"></van-image>
</van-cell>
</van-cell-group> </van-cell-group>
<template v-for="(task,index) in doneTasks"> <template v-for="(task,index) in doneTasks">
<div class="process-title"> <div class="process-title">
@@ -6,7 +6,7 @@ layout("/layouts/platform_h5.html"){
</style> </style>
<div id="app" v-cloak> <div id="app" v-cloak>
<van-nav-bar title="休假申请" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed z-index="999" <van-nav-bar title="生育休假申请" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed z-index="999"
class="custom-nav"></van-nav-bar> class="custom-nav"></van-nav-bar>
<div class="form-container"> <div class="form-container">