生育休假、独生子女父母退休移动端

This commit is contained in:
=
2025-09-19 09:37:26 +08:00
parent d377676758
commit 90f37ef369
27 changed files with 2708 additions and 79 deletions
@@ -120,16 +120,8 @@ layout("/layouts/platform.html"){
placeholder="请输入办证机关"></el-input>
</el-form-item>
</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-form-item prop="honorFiles" label="独生子女父母光荣证">
<file-upload :upload_number="5" :value.sync="formData.honorFiles"
@@ -176,9 +168,23 @@ layout("/layouts/platform.html"){
taskId: GetQueryString("taskId"),
formData: {},
formRules: {
declarationAgreed: [
{ required: true, message: '请勾选申报理由', trigger: 'change' }
]
userName: [{ required: true, message: '职工姓名不能为空', trigger: 'blur' }],
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] }]
},
}
},
@@ -195,59 +201,105 @@ layout("/layouts/platform.html"){
if (res.code === 0) {
this.$message.success(res.msg)
window.location.href = '/platform/dsznfmtx/mine/index'
//commonUtil.pjaxPush('/platform/dsznfmtx/mine/index')
}
})
})
},
// 提交
onSubmit() {
this.$refs.formRef.validate((valid) => {
if (valid) {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post('/platform/dsznfmtx/apply/submit', {
data: JSON.stringify(this.formData)
}).then(res => {
if (res.code === 0) {
this.$message.success("提交成功")
window.location.href = '/platform/dsznfmtx/mine/index'
}
})
})
} else {
this.$message.error('请完善表单信息并勾选申报理由');
return false;
}
// 提交验证
validateBeforeSubmit() {
return new Promise((resolve) => {
this.$refs.formRef.validate((valid) => {
if (valid) {
resolve(true);
} else {
this.$message.error('请完善表单信息并勾选申报理由');
resolve(false);
}
});
});
},
// 再次提交
onFinishTask() {
this.$refs.formRef.validate((valid) => {
if (valid) {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post('/platform/dsznfmtx/apply/submitAgain', {
data: JSON.stringify(this.formData),
taskId: GetQueryString("taskId")
}).then(res => {
if (res.code === 0) {
this.$message.success("提交成功")
window.location.href = '/platform/dsznfmtx/mine/index'
}
})
})
} else {
this.$message.error('请完善表单信息并勾选申报理由');
return 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("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post('/platform/dsznfmtx/apply/submit', {
data: JSON.stringify(this.formData)
}).then(res => {
if (res.code === 0) {
this.$message.success("提交成功")
window.location.href = '/platform/dsznfmtx/mine/index'
}
})
})
},
// 再次提交
async onFinishTask() {
const isValid = await this.validateBeforeSubmit();
if (!isValid) return;
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post('/platform/dsznfmtx/apply/submitAgain', {
data: JSON.stringify(this.formData),
taskId: GetQueryString("taskId")
}).then(res => {
if (res.code === 0) {
this.$message.success("提交成功")
window.location.href = '/platform/dsznfmtx/mine/index'
}
})
})
},
async findOne(id) {
const resp = await $.get('/platform/dsznfmtx/apply/findOne', {id})
@@ -273,9 +325,7 @@ layout("/layouts/platform.html"){
sex: sex,
birthday: birthday,
}
}
}
},
created() {
@@ -285,6 +335,7 @@ layout("/layouts/platform.html"){
</script>
<!--#
}
#-->
@@ -86,7 +86,7 @@ layout("/layouts/platform.html"){
//分页数据
mixins: [initTableMixins],
components: {
"dsznfmtx-info": dsznfmtxInfo
"dsznfmtx-info": DSZNFMTX_INFO
},
data() {
return {
@@ -1,4 +1,4 @@
const dsznfmtxInfo = {
const DSZNFMTX_INFO = {
template: /*language=HTML*/ `
<div>
<div class="process-title">
@@ -17,7 +17,7 @@ const dsznfmtxInfo = {
<el-descriptions-item label="工作单位" :span="2">{{viewData.loverUnitName}}</el-descriptions-item>
<el-descriptions-item label="结婚日期">{{viewData.marryTime}}</el-descriptions-item>
<el-descriptions-item label="子女出生日">{{viewData.childrenBirthday}}</el-descriptions-item>
<el-descriptions-item label="领独生子女证时间">{{viewData.startTime}}</el-descriptions-item>
<el-descriptions-item label="领独生子女证时间">{{viewData.getCertificateTime}}</el-descriptions-item>
<el-descriptions-item label="独生子女光荣证号">{{viewData.childrenGraceNumber}}</el-descriptions-item>
<el-descriptions-item label="办证机关">{{viewData.office}}</el-descriptions-item>
<el-descriptions-item label="奖励金额">{{viewData.bonus}}</el-descriptions-item>
@@ -34,7 +34,7 @@ layout("/layouts/platform.html"){
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onEdit(row)" size="mini" type="primary">编辑</el-button>
<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="onDelete(row.id)" size="mini" type="danger">删除</el-button>
</template>
</el-table-column>
</el-table>
@@ -57,7 +57,7 @@ layout("/layouts/platform.html"){
//分页数据
mixins: [initTableMixins],
components: {
"dsznfmtx-info": dsznfmtxInfo
"dsznfmtx-info": DSZNFMTX_INFO
},
data() {
return {
@@ -88,6 +88,9 @@ layout("/layouts/platform.html"){
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item>
<!-- <el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">-->
<!-- <pc-signature v-model="consolidationFormData.approvalSignature"></pc-signature>-->
<!-- </el-form-item>-->
</el-form>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
@@ -99,6 +102,19 @@ layout("/layouts/platform.html"){
</dsznfmtx-info>
</template>
</guava>
<el-dialog title="输入奖励金额" :visible.sync="bonusDialogVisible" width="400px">
<el-form label-width="80px">
<el-form-item label="奖励金额">
<el-input v-model="bonusFormData.bonus" placeholder="请输入奖励金额">
<template slot="append"></template>
</el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelBonusInput">取 消</el-button>
<el-button type="primary" @click="confirmBonusInput">确 定</el-button>
</div>
</el-dialog>
</div>
@@ -111,7 +127,7 @@ layout("/layouts/platform.html"){
//分页数据
mixins: [initTableMixins],
components: {
"dsznfmtx-info": dsznfmtxInfo
"dsznfmtx-info": DSZNFMTX_INFO
},
data() {
return {
@@ -124,6 +140,13 @@ layout("/layouts/platform.html"){
unionOptions: [],
unitOptions: [],
userOptions: [],
// 奖励金额输入对话框相关数据
bonusDialogVisible: false,
bonusFormData: {
bonus: ''
},
currentRow: null,
currentSubmitType: null
}
}
,
@@ -140,6 +163,7 @@ layout("/layouts/platform.html"){
processTaskId: row.taskId,
taskName: row.curTaskName
}
this.currentRow = row;
this.$refs.dsznfmtxInfoRef.onOpen(row)
})
},
@@ -157,7 +181,77 @@ layout("/layouts/platform.html"){
})
})
},
// 显示奖励金额输入对话框
showBonusInputDialog(submitType) {
this.currentSubmitType = submitType;
this.bonusFormData.bonus = '';
this.bonusDialogVisible = true;
},
// 确认奖励金额输入并提交
confirmBonusInput() {
if (!this.bonusFormData.bonus) {
this.$message.warning('请输入奖励金额');
return;
}
// 验证金额格式
const bonusPattern = /^([0-9]*[.]{0,1}[0-9]{0,2})$/;
if (!bonusPattern.test(this.bonusFormData.bonus)) {
this.$message.warning('请输入有效的金额格式');
return;
}
this.bonusDialogVisible = false;
// 调用申请页面的保存方法来更新奖励金额
this.saveBonusAndApprove();
},
// 取消奖励金额输入
cancelBonusInput() {
this.bonusDialogVisible = false;
},
// 保存奖励金额并执行审批
// 保存奖励金额并执行审批
saveBonusAndApprove() {
// 先获取完整的申请数据
this.$axios.post('/platform/dsznfmtx/apply/findOne', {id: this.currentRow.id}).then(res => {
if (res.code === 0) {
// 获取完整的数据后,更新奖励金额
const fullData = res.data;
fullData.bonus = this.bonusFormData.bonus;
// 调用申请页面的保存方法,传递完整数据
this.$axios.post('/platform/dsznfmtx/apply/save', {data: JSON.stringify(fullData)}).then(saveRes => {
if (saveRes.code === 0) {
// 保存成功后执行审批操作
this.executeTaskAction(this.currentSubmitType);
} else {
this.$message.error(saveRes.msg || '保存奖励金额失败');
}
}).catch(error => {
this.$message.error('保存奖励金额失败');
console.error('保存奖励金额失败:', error);
});
} else {
this.$message.error(res.msg || '获取申请数据失败');
}
}).catch(error => {
this.$message.error('获取申请数据失败');
console.error('获取申请数据失败:', error);
});
},
handleTaskAction(val) {
// 如果是同意申请操作(val=1),需要先输入奖励金额
if (val === 1) {
this.showBonusInputDialog(val);
return;
}
// 其他操作直接执行
this.executeTaskAction(val);
},
// 执行任务操作
executeTaskAction(val) {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
@@ -170,9 +264,9 @@ layout("/layouts/platform.html"){
})
}).then((res) => {
if (res.code === 0) {
this.$refs.guava.index()
this.$message.success(res.msg)
this.doSearch()
this.$refs.guava.index();
this.$message.success(res.msg);
this.doSearch();
}
})
})
@@ -86,6 +86,9 @@ layout("/layouts/platform.html"){
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item>
<!-- <el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">-->
<!-- <pc-signature v-model="consolidationFormData.approvalSignature"></pc-signature>-->
<!-- </el-form-item>-->
</el-form>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
@@ -109,7 +112,7 @@ layout("/layouts/platform.html"){
//分页数据
mixins: [initTableMixins],
components: {
"dsznfmtx-info": dsznfmtxInfo
"dsznfmtx-info": DSZNFMTX_INFO
},
data() {
return {
@@ -172,7 +172,16 @@ layout("/layouts/platform.html"){
bizId: GetQueryString("bizId"),
taskId: GetQueryString("taskId"),
formData: {},
formRules: {},
formRules: {
loverName: [{ required: true, message: '请输入爱人姓名', trigger: 'blur' }],
loverSex: [{ required: true, message: '请选择爱人性别', trigger: 'change' }],
loverNation: [{ required: true, message: '请选择爱人民族', trigger: 'change' }],
loverBirthday: [{ required: true, message: '请选择爱人出生年月', trigger: 'change' }],
loverUnitName: [{ required: true, message: '请输入爱人工作单位', trigger: 'blur' }],
startTime: [{ required: true, message: '请选择休假开始时间', trigger: 'change' }],
endTime: [{ required: true, message: '请选择休假结束时间', trigger: 'change' }],
childrenBirthday: [{ required: true, message: '请选择子女出生日期', trigger: 'change' }]
},
}
},
computed: {
@@ -216,8 +225,24 @@ layout("/layouts/platform.html"){
})
})
},
// 提交验证
validateBeforeSubmit() {
return new Promise((resolve) => {
this.$refs.formRef.validate((valid) => {
if (valid) {
resolve(true);
} else {
this.$message.error('请完善必填信息');
resolve(false);
}
});
});
},
// 提交
onSubmit() {
async onSubmit() {
const isValid = await this.validateBeforeSubmit();
if (!isValid) return;
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
@@ -234,7 +259,10 @@ layout("/layouts/platform.html"){
})
},
// 再次提交
onFinishTask() {
async onFinishTask() {
const isValid = await this.validateBeforeSubmit();
if (!isValid) return;
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
@@ -289,6 +317,7 @@ layout("/layouts/platform.html"){
</script>
<!--#
}
#-->
@@ -87,6 +87,9 @@ layout("/layouts/platform.html"){
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item>
<el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<pc-signature v-model="consolidationFormData.approvalSignature"></pc-signature>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
@@ -86,6 +86,9 @@ layout("/layouts/platform.html"){
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item>
<el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<pc-signature v-model="consolidationFormData.approvalSignature"></pc-signature>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button>