省级互助保障修改

This commit is contained in:
=
2025-09-29 16:31:11 +08:00
parent 57357568c2
commit 85501dfc49
14 changed files with 370 additions and 199 deletions
@@ -20,7 +20,9 @@ import com.budwk.app.flow.service.FlowCommonService;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.staffbenefit.maternityLeave.models.MaternityLeave;
import com.budwk.app.zhgh.staffbenefit.mutualInsurance.model.MutualInsuranceProject;
import com.budwk.app.zhgh.staffbenefit.mutualInsurance.model.MutualInsuranceUserInfo;
import com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceProjectService;
import com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -67,6 +69,8 @@ public class MutualInsuranceApplyController {
@Inject
private FlowCommonService flowCommonService;
@Inject
private MutualInsuranceProjectService mutualInsuranceProjectService;
@Inject
private MutualInsuranceUserService mutualInsuranceUserService;
@At("/index")
@@ -86,6 +90,7 @@ public class MutualInsuranceApplyController {
@SLog(tag = "生育休假-休假申请", msg = "保存休假申请")
public Result save(@Param("data") MutualInsuranceUserInfo mutualInsuranceUserInfo) {
if (StrUtil.isBlank(mutualInsuranceUserInfo.getId())) mutualInsuranceUserInfo.setApplyTime(new Date());
mutualInsuranceUserInfo.setIsSubmit("未提交");
dao.insertOrUpdate(mutualInsuranceUserInfo);
return Result.success();
}
@@ -95,37 +100,11 @@ public class MutualInsuranceApplyController {
@SaCheckPermission(value = {"mutualInsurance.apply", "h5.mutualInsurance.apply"}, mode = SaMode.OR)
public Result submit(@Param("data") MutualInsuranceUserInfo mutualInsuranceUserInfo) {
if (StrUtil.isBlank(mutualInsuranceUserInfo.getId())) mutualInsuranceUserInfo.setApplyTime(new Date());
mutualInsuranceUserInfo.setIsSubmit("已提交");
dao.insertOrUpdate(mutualInsuranceUserInfo);
// 开启流程实例
Dict args = Dict.create();
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
args.set(FlowConst.FORM_DATA, mutualInsuranceUserInfo);
ProcessInstance instance = flowEngine.startProcessInstanceByKey("SJHZBZ", mutualInsuranceUserInfo.getId(), SecurityUtil.getUserId(), args);
// 自动完成第一个申请任务
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
for (ProcessTask task : doingTaskList) {
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
}
return Result.success();
}
@At
@ApiOperation("重新提交申请")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission(value = {"mutualInsurance.apply", "h5.mutualInsurance.apply"}, mode = SaMode.OR)
public Result submitAgain(@Param("data") MutualInsuranceUserInfo mutualInsuranceUserInfo, @Param("taskId") Long taskId) {
if (StrUtil.isBlank(mutualInsuranceUserInfo.getId())) mutualInsuranceUserInfo.setApplyTime(new Date());
dao.insertOrUpdate(mutualInsuranceUserInfo);
Dict dict = Dict.create();
dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId);
dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode());
flowCommonService.executeTask(dict);
return Result.success();
}
@At
@SaCheckLogin
@@ -133,6 +112,17 @@ public class MutualInsuranceApplyController {
return Result.success(baseService.dao().fetch(MutualInsuranceUserInfo.class, id));
}
@At
@ApiOperation("查询事项列表")
@SaCheckPermission(value = {"mutualInsurance.apply", "h5.mutualInsurance.apply"}, mode = SaMode.OR)
public Result listProject(Integer year){
Cnd cnd = Cnd.NEW();
cnd.andEX("`year`", "=", year == null ? DateUtil.thisYear() : year);
cnd.and("isOpen", "=", true);
List<MutualInsuranceProject> query = mutualInsuranceProjectService.query(cnd);
return Result.success(query);
}
@At
@ApiOperation("获取受助人")
@SaCheckPermission("mutualInsurance.apply")
@@ -119,7 +119,7 @@ public class MutualInsuranceCollectController {
}
// 只查询流程实例状态为20的数据(已完成状态)
cnd.and("ins.state", "=", 20);
// cnd.and("ins.state", "=", 20);
cnd.desc("info.applyTime");
sql.setCondition(cnd);
@@ -2,18 +2,35 @@ package com.budwk.app.zhgh.staffbenefit.mutualInsurance.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.NumberChineseFormatter;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.base.utils.SysOfficeTemplateUtil;
import com.budwk.app.flow.engine.FlowEngine;
import com.budwk.app.flow.entity.ProcessTask;
import com.budwk.app.flow.vo.ProcessTaskVO;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.web.commons.base.Globals;
import com.budwk.app.zhgh.activity.declarereimbursement.vo.ActivityBudgetVO;
import com.budwk.app.zhgh.staffbenefit.mutualInsurance.model.MutualInsuranceUserInfo;
import com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceUserService;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.aop.Aop;
@@ -24,6 +41,14 @@ import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
/**
* @version 1.0
* @Author zzr
@@ -39,9 +64,13 @@ import org.nutz.mvc.annotation.Param;
@Slf4j
public class MutualInsuranceMineController {
@Inject
private Dao dao;
@Inject
private FlowEngine flowEngine;
@Inject
private SysOfficeTemplateUtil sysOfficeTemplateUtil;
@Inject
private MutualInsuranceUserService mutualInsuranceUserService;
@At("/index")
@@ -49,6 +78,7 @@ public class MutualInsuranceMineController {
@SaCheckPermission("mutualInsurance.mine")
public void index() {
}
@At("/h5")
@Ok("beetl:/platform/zhghh5/staffbenefit/mutualInsurance/mine/index.html")
@SaCheckPermission("h5.mutualInsurance.mine")
@@ -100,10 +130,38 @@ public class MutualInsuranceMineController {
@ApiOperation("删除")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission(value = {"mutualInsurance.mine", "h5.mutualInsurance.mine"}, mode = SaMode.OR)
@SLog( tag = "删除工会报销", msg = "删除工会报销")
@SLog(tag = "删除工会报销", msg = "删除工会报销")
public Result delete(@Param("id") String id) {
mutualInsuranceUserService.delete(id);
flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id);
return Result.success();
}
@At
@Ok("void")
@SaCheckPermission("mutualInsurance.mine")
@SLog(tag = "省级互助保障", msg = "导出给付申请书")
public void doExportApply(@Valid String id, HttpServletResponse response) {
MutualInsuranceUserInfo info = dao.fetch(MutualInsuranceUserInfo.class, id);
Map<String, Object> docData = BeanUtil.beanToMap(info);
String dangerEvent = sysOfficeTemplateUtil.convertRichTextToDocText(info.getDangerEvent());
dangerEvent = dangerEvent.trim().replaceAll("^<p>", "").replaceAll("</p>$", "");
docData.put("dangerEvent", dangerEvent);
docData.put("isRenewal", info.getIsRenewal() ? "" : "×");
docData.put("guaranteedStartTime", DateUtil.format(info.getGuaranteedStartTime(), "yyyy-MM-dd"));
docData.put("guaranteedEndTime", DateUtil.format(info.getGuaranteedEndTime(), "yyyy-MM-dd"));
docData.put("dangerTime", DateUtil.format(info.getDangerTime(), "yyyy-MM-dd HH:mm:ss"));
docData.put("applyTime", DateUtil.format(info.getApplyTime(), "yyyy年MM月dd日"));
String fileName = Globals.AppName + "" + info.getProjectName() + "】给付申请书.docx";
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate("mutual_insurance_user_info")).render(docData).writeAndClose(byteArrayOutputStream);
CommonDownloadUtil.download(fileName, byteArrayOutputStream.toByteArray(), response);
} catch (IOException e) {
log.error("给付申请书表导出失败,id:{},错误信息:{}", id, e.getMessage());
}
}
}
@@ -105,19 +105,6 @@ public class MutualInsuranceProjectController {
return Result.success();
}
@At
@ApiOperation("查询事项列表")
@SaCheckPermission(value = {"mutualInsurance.project", "h5.mutualInsurance.project"}, mode = SaMode.OR)
public Result listProject(Integer year){
Cnd cnd = Cnd.NEW();
cnd.andEX("`year`", "=", year == null ? DateUtil.thisYear() : year);
cnd.and("isOpen", "=", true);
List<MutualInsuranceProject> query = mutualInsuranceProjectService.query(cnd);
return Result.success(query);
}
@At
@SaCheckPermission(value = {"mutualInsurance.project", "h5.mutualInsurance.project"}, mode = SaMode.OR)
public Result findOne(String id){
@@ -4,6 +4,7 @@ import com.budwk.app.base.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
import java.io.Serializable;
import java.util.Date;
@@ -20,11 +21,10 @@ import java.util.Date;
@Comment("个人信息")
public class MutualInsuranceUserInfo extends BaseModel implements Serializable {
@Column
@Name
@Comment("id")
@ColDefine(type = ColType.VARCHAR, width = 32)
@Prev(els = {@EL("uuid()")})
@PrevInsert(uu32 = true)
private String id;
@Column
@@ -68,25 +68,10 @@ public class MutualInsuranceUserInfo extends BaseModel implements Serializable {
private String loginName;
@Column
@Comment("姓名")
@Comment("申请人")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String userName;
@Column
@Comment("性别")
@ColDefine(type = ColType.VARCHAR, width = 4)
private String sex;
@Column
@Comment("手机号")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String mobile;
@Column
@Comment("身份证件号")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String idCard;
@Column
@Comment("所属单位Id")
@ColDefine(type = ColType.VARCHAR, width = 32)
@@ -108,19 +93,90 @@ public class MutualInsuranceUserInfo extends BaseModel implements Serializable {
private String unionName;
@Column
@Comment("在职状态(年度在岗,不在岗,有个时间范围,在某个时间之后退休的不能参加)")
@Comment("年龄")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String insuranceUserState;
private String age;
@Column
@Comment("不在岗时间")
@ColDefine(type = ColType.VARCHAR, width = 50)
private Date noDutyTime;
@Comment("性别")
@ColDefine(type = ColType.VARCHAR, width = 4)
private String sex;
@Column
@Comment("医保状态")
@Comment("手机号")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String medicalInsuranceState;
private String mobile;
@Column
@Comment("身份证件号")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String idCard;
@Column
@Comment("住址")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String address;
@Column
@Comment("计划书号码")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String planNumber;
@Column
@Comment("是否续保")
@ColDefine(type = ColType.BOOLEAN)
@Default("0")
private Boolean isRenewal;
@Column
@Comment("保障开始时间")
@ColDefine(type = ColType.DATE)
private Date guaranteedStartTime;
@Column
@Comment("保障结束时间")
@ColDefine(type = ColType.DATE)
private Date guaranteedEndTime;
@Column
@Comment("出险时间")
@ColDefine(type = ColType.DATE)
private Date dangerTime;
@Column
@Comment("出险地点")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String dangerAddress;
@Column
@Comment("出险原因、经过、结果")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String dangerEvent;
@Column
@Comment("开户名")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String bankUserName;
@Column
@Comment("开户支行")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String bankOfDeposit;
@Column
@Comment("银行卡账号")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String bankCardNumber;
@Column
@Comment("赔付金额")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String amount;
@Column
@Comment("是否提交")
@ColDefine(type = ColType.VARCHAR, width = 200)
private String isSubmit;
@Column
@Comment("签字")
@@ -183,7 +183,7 @@ layout("/layouts/platform.html"){
office: [{ required: true, message: '请输入办证机关', trigger: 'blur' }],
honorFiles: [{ required: true, message: '请上传独生子女父母光荣证', trigger: 'change' }],
retireFiles: [{ required: true, message: '请上传退休证', trigger: 'change' }],
sign: [{ required: true, message: '请签字', trigger: 'change' }],
//sign: [{ required: true, message: '请签字', trigger: 'change' }],
declarationAgreed: [{ required: true, message: '请勾选申报理由', trigger: 'change', type: 'enum', enum: [true] }]
},
}
@@ -5,7 +5,7 @@ layout("/layouts/platform.html"){
<guava ref="guava">
<template>
<el-card shadow="never">
<snaker-start slot="header" label="省级互助保障" define_key="SJHZBZ"></snaker-start>
<snaker-start slot="header" label="省级互助保障" define_key="SJHZBZ" ></snaker-start>
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="140px" label-position="right"
label-suffix="">
<el-row :gutter="20">
@@ -104,34 +104,105 @@ layout("/layouts/platform.html"){
</el-col>
<el-col :span="12">
<el-form-item prop="medicalInsuranceState" label="医保状态">
<dict-select v-model="formData.medicalInsuranceState" code="USER_MEDICINE" style="width: 100%"></dict-select>
<el-form-item prop="age" label="年龄">
<el-input v-model="formData.age" placeholder="请输入年龄"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="insuranceUserState" label="在职状态">
<el-select clearable placeholder="请选择在职状态"
style="width: 100%;"
v-model="formData.insuranceUserState">
<el-option :label="item.name" :value="item.code" :key="item.code"
v-for="item in dict.type.USER_STATE"></el-option>
<el-form-item prop="planNumber" label="计划书号码">
<el-input v-model="formData.planNumber" placeholder="请输入计划书号码"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="isRenewal" label="是否续保">
<el-select v-model="formData.isRenewal" placeholder="请选择是否续保" style="width: 100%">
<el-option label="是" value="1"></el-option>
<el-option label="否" value="0"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="noDutyTime" label="不在岗时间">
<el-form-item prop="guaranteedStartTime" label="保障开始时间">
<el-date-picker
v-model="formData.noDutyTime"
v-model="formData.guaranteedStartTime"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
clearable
placeholder="请选择保障开始时间"
@change="calculateEndTime">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="guaranteedEndTime" label="保障结束时间">
<el-date-picker
v-model="formData.guaranteedEndTime"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
clearable
placeholder="请选择保障结束时间"
:readonly="true">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="dangerTime" label="出险时间">
<el-date-picker
v-model="formData.dangerTime"
type="datetime"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm"
clearable
placeholder="请选择不在岗时间">
placeholder="请选择出险时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="dangerAddress" label="出险地点">
<el-input v-model="formData.dangerAddress" placeholder="请输入出险地点"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="address" label="住址">
<el-input v-model="formData.address" placeholder="请输入住址"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="bankUserName" label="开户名">
<el-input v-model="formData.bankUserName" placeholder="请输入开户名"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="bankOfDeposit" label="开户支行">
<el-input v-model="formData.bankOfDeposit" placeholder="请输入开户支行"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="bankCardNumber" label="银行卡账号">
<el-input v-model="formData.bankCardNumber" placeholder="请输入银行卡账号"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="出险原因、经过、结果" prop="content">
<text-editor v-model="formData.dangerEvent"></text-editor>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="sign" label="签字">
<pc-signature v-model="formData.sign"></pc-signature>
@@ -222,6 +293,7 @@ layout("/layouts/platform.html"){
this.$set(this.formData, 'nation', user.nation);
this.$set(this.formData, 'birthday', user.birthday);
this.$set(this.formData, 'mobile', user.mobile);
this.$set(this.formData, 'idCard', user.idCard);
} else {
// 替他人申请,清空被帮助人信息
this.$set(this.formData, 'proxyUserId', user.id);
@@ -238,20 +310,11 @@ layout("/layouts/platform.html"){
this.$set(this.formData, 'nation', null);
this.$set(this.formData, 'birthday', null);
this.$set(this.formData, 'mobile', null);
// 清空年龄和身份证号
this.$set(this.formData, 'idCard', null);
}
},
// 查询受助人
queryRecipients(key) {
this.$axios.get("/platform/mutualInsurance/apply/queryRecipients", {
params: { key }
}).then(res => {
if (res.code === 0) {
this.subsidizedList = res.data;
}
});
},
// 用户选择变化
async userChange() {
const user = this.subsidizedList.find(item => item.id === this.formData.userId);
@@ -266,6 +329,7 @@ layout("/layouts/platform.html"){
this.$set(this.formData, 'unionName', user.unionName);
this.$set(this.formData, 'birthday', user.birthday);
this.$set(this.formData, 'mobile', user.mobile);
this.$set(this.formData, 'idCard', user.idCard);
} else {
this.$set(this.formData, 'userId', null);
this.$set(this.formData, 'userName', null);
@@ -277,11 +341,40 @@ layout("/layouts/platform.html"){
this.$set(this.formData, 'unionName', null);
this.$set(this.formData, 'birthday', null);
this.$set(this.formData, 'mobile', null);
this.$set(this.formData, 'idCard', null);
}
},
// 修改 calculateEndTime 方法中的模板字符串部分
calculateEndTime(startDate) {
if (startDate) {
const start = new Date(startDate);
const end = new Date(start);
end.setFullYear(start.getFullYear() + 1);
// 格式化为 yyyy-MM-dd (转义反引号)
const year = end.getFullYear();
const month = String(end.getMonth() + 1).padStart(2, '0');
const day = String(end.getDate()).padStart(2, '0');
this.$set(this.formData, 'guaranteedEndTime', year + '-' + month + '-' + day);
} else {
this.$set(this.formData, 'guaranteedEndTime', null);
}
},
// 查询受助人
queryRecipients(key) {
this.$axios.get("/platform/mutualInsurance/apply/queryRecipients", {
params: { key }
}).then(res => {
if (res.code === 0) {
this.subsidizedList = res.data;
}
});
},
// 保存
onSave() {
this.$confirm("您确定保存吗?", "提示", {
this.$confirm("您确定保存吗?(提交后方可打印)", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
@@ -312,7 +405,7 @@ layout("/layouts/platform.html"){
const isValid = await this.validateBeforeSubmit();
if (!isValid) return;
this.$confirm("您确定要提交吗?", "提示", {
this.$confirm("您确定要提交吗?(需准备证明材料、伤残、入、出院记录、病理报告或交通事故责任认定书等)", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
@@ -327,27 +420,6 @@ layout("/layouts/platform.html"){
})
})
},
// 再次提交
async onFinishTask() {
const isValid = await this.validateBeforeSubmit();
if (!isValid) return;
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post('/platform/mutualInsurance/apply/submitAgain', {
data: JSON.stringify(this.formData),
taskId: GetQueryString("taskId")
}).then(res => {
if (res.code === 0) {
this.$message.success("提交成功")
commonUtil.pjaxPush('/platform/mutualInsurance/mine/index')
}
})
})
},
onView() {
this.$refs.guava.view(() => {
this.$refs.projectInfoRef.onOpen(this.formData.projectId)
@@ -364,7 +436,7 @@ layout("/layouts/platform.html"){
},
async listProject() {
const currentYear = new Date().getFullYear().toString();
const resp = await $.post('/platform/mutualInsurance/project/listProject', {year: currentYear})
const resp = await $.post('/platform/mutualInsurance/apply/listProject', {year: currentYear})
if (resp.code === 0) {
this.projectList = resp.data
if (resp.data && resp.data.length > 0) {
@@ -62,18 +62,11 @@ layout("/layouts/platform.html"){
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
<el-table-column prop="userName" label="职工姓名"></el-table-column>
<el-table-column prop="sex" label="性别"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column prop="unionName" label="所属工会"></el-table-column>
<el-table-column prop="unitName" label="所属单位"></el-table-column>
<el-table-column prop="insuranceUserState" label="在职状态"></el-table-column>
<el-table-column prop="medicalInsuranceState" label="医保状态"></el-table-column>
<el-table-column prop="projectName" label="所属事项" width="300px"></el-table-column>
<el-table-column prop="applyTime" label="申请时间"></el-table-column>
<el-table-column prop="taskName" label="当前节点"></el-table-column>·
<el-table-column prop="instanceState" label="流程状态">
<template slot-scope="{row}">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
size="small"></enum-tag>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="300px">
<template slot-scope="{row}">
<el-button @click="onView(row)" size="mini" type="primary">查看</el-button>
@@ -160,7 +153,7 @@ layout("/layouts/platform.html"){
}
try {
// 修改为互助保障项目的查询接口
const res = await this.$axios.post("/platform/mutualInsurance/project/listProject", {
const res = await this.$axios.post("/platform/mutualInsurance/apply/listProject", {
year: this.pageForm.year
});
if (res.code === 0) {
@@ -11,65 +11,36 @@ const userInfo = {
<el-descriptions-item label="申请模式">{{ viewData.mode}}</el-descriptions-item>
<el-descriptions-item label="填写人姓名">{{ viewData.proxyUserName }}</el-descriptions-item>
<el-descriptions-item label="填写人工号">{{ viewData.proxyLoginName }}</el-descriptions-item>
<el-descriptions-item label="姓名">{{viewData.userName}}</el-descriptions-item>
<el-descriptions-item label="申请人">{{viewData.userName}}</el-descriptions-item>
<el-descriptions-item label="工号">{{viewData.loginName}}</el-descriptions-item>
<el-descriptions-item label="所属单位">{{viewData.unitName}}</el-descriptions-item>
<el-descriptions-item label="所属工会">{{viewData.unionName}}</el-descriptions-item>
<el-descriptions-item label="性别">{{viewData.sex}}</el-descriptions-item>
<el-descriptions-item label="手机号">{{viewData.mobile}}</el-descriptions-item>
<el-descriptions-item label="身份证号">{{viewData.idCard}}</el-descriptions-item>
<el-descriptions-item label="医保状态" >{{viewData.medicalInsuranceState}}</el-descriptions-item>
<el-descriptions-item label="在职状态">{{viewData.insuranceUserState}}</el-descriptions-item>
<el-descriptions-item label="不在岗时间">{{viewData.noDutyTime}}</el-descriptions-item>
<el-descriptions-item label="年龄">{{viewData.age}}</el-descriptions-item>
<el-descriptions-item label="计划书号码">{{viewData.planNumber}}</el-descriptions-item>
<el-descriptions-item label="是否续保">{{viewData.isRenewal}}</el-descriptions-item>
<el-descriptions-item label="保障开始时间">{{viewData.guaranteedStartTime}}</el-descriptions-item>
<el-descriptions-item label="保障结束时间">{{viewData.guaranteedEndTime}}</el-descriptions-item>
<el-descriptions-item label="出险时间">{{viewData.dangerTime}}</el-descriptions-item>
<el-descriptions-item label="出险地点">{{viewData.dangerAddress}}</el-descriptions-item>
<el-descriptions-item label="住址">{{viewData.address}}</el-descriptions-item>
<el-descriptions-item label="开户名">{{viewData.bankUserName}}</el-descriptions-item>
<el-descriptions-item label="开户支行">{{viewData.bankOfDeposit}}</el-descriptions-item>
<el-descriptions-item label="银行卡账号" >{{viewData.bankCardNumber}}</el-descriptions-item>
<el-descriptions-item label="赔付金额" :span="2">{{viewData.amount}}</el-descriptions-item>
<el-descriptions-item label="出险原因、经过、结果" :span="2">{{viewData.dangerEvent}}</el-descriptions-item>
<el-descriptions-item label="签字" >
<el-image v-if="viewData.sign"
:src="viewData.sign"
class="signature-image"
style="height: 60px"
style="height: 60px"
></el-image>
<span v-else>暂无</span>
</el-descriptions-item>
</el-descriptions>
<template v-for="task in doneTasks">
<div class="mt10">
<div class="process-title">{{ task.displayName }}</div>
<el-descriptions border class="flow-task-form" :column="3" :key="task.id"
v-if="task.ext.isFirstTaskNode">
<el-descriptions-item label="申请用户">{{ task.ext.initiatorName
}}({{task.ext.initiatorAccount}})
</el-descriptions-item>
<el-descriptions-item label="申请时间">{{ task.finishTime }}</el-descriptions-item>
<el-descriptions-item label="办理结果">
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
:value="task.ext.submitType"></dict-tag>
</el-descriptions-item>
</el-descriptions>
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else>
<el-descriptions-item label="办理用户">{{ task.taskFormData.userName
}}({{task.taskFormData.loginName}})
</el-descriptions-item>
<el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>
<el-descriptions-item label="办理结果">
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
:value="task.ext.submitType"></dict-tag>
</el-descriptions-item>
<el-descriptions-item label="办理意见" :span="3" v-if="!task.ext.isFirstTaskNode">{{
task.taskFormData.opinion }}
</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"
style="height: 60px"
></el-image>
<span v-else>暂无</span>
</el-descriptions-item>
</el-descriptions>
</div>
</template>
<slot></slot>
<snaker-chart ref="snakerChartRef"></snaker-chart>
</div>
`,
@@ -98,6 +69,17 @@ const userInfo = {
this.$axios.post('/platform/mutualInsurance/apply/findOne', {id: this.row.id}).then((res) => {
if (res.code === 0) {
this.viewData = res.data
// 格式化日期只显示年月日
if (this.viewData.guaranteedStartTime) {
this.viewData.guaranteedStartTime = this.viewData.guaranteedStartTime.substring(0, 10);
}
if (this.viewData.guaranteedEndTime) {
this.viewData.guaranteedEndTime = this.viewData.guaranteedEndTime.substring(0, 10);
}
// 去除 dangerEvent 字段的 <p> 标签
if (this.viewData.dangerEvent) {
this.viewData.dangerEvent = this.viewData.dangerEvent.replace(/^<p>/, '').replace(/<\/p>$/, '');
}
}
})
},
@@ -17,25 +17,17 @@ layout("/layouts/platform.html"){
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
<el-table-column prop="userName" label="职工姓名"></el-table-column>
<el-table-column prop="sex" label="性别"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column prop="unionName" label="所属工会"></el-table-column>
<el-table-column prop="unitName" label="所属单位"></el-table-column>
<el-table-column prop="insuranceUserState" label="在职状态"></el-table-column>
<el-table-column prop="medicalInsuranceState" label="医保状态"></el-table-column>
<el-table-column prop="projectName" label="所属事项" width="300px"></el-table-column>
<el-table-column prop="applyTime" label="申请时间"></el-table-column>
<el-table-column prop="taskName" label="当前节点"></el-table-column>·
<el-table-column prop="instanceState" label="流程状态">
<template slot-scope="{row}">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
size="small"></enum-tag>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="300px">
<template slot-scope="{row}">
<el-button @click="onView(row)" size="mini" type="primary">查看</el-button>
<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="onEdit(row)" size="mini" type="primary" v-if="row.isSubmit =='未提交'">编辑</el-button>
<el-button @click="onDelete(row.id)" size="mini" type="danger" >删除</el-button>
<el-button @click="doExportApply(row)" size="mini" type="primary" v-if="row.isSubmit =='已提交'">申请表导出</el-button>
</template>
</el-table-column>
</el-table>
@@ -68,6 +60,10 @@ layout("/layouts/platform.html"){
}
,
methods: {
// 导出示例
doExportApply(row){
this.$downLoad('/platform/mutualInsurance/mine/doExportApply?id=' + row.id)
},
onView(row) {
this.$refs.guava.view(()=>{
this.$refs.userInfoInfoRef.onOpen(row)
@@ -202,7 +202,7 @@ layout("/layouts/platform.html"){
}
try {
// 修改为互助保障项目的查询接口
const res = await this.$axios.post("/platform/mutualInsurance/project/listProject", {
const res = await this.$axios.post("/platform/mutualInsurance/apply/listProject", {
year: this.pageForm.year
});
if (res.code === 0) {
@@ -202,7 +202,7 @@ layout("/layouts/platform.html"){
}
try {
// 修改为互助保障项目的查询接口
const res = await this.$axios.post("/platform/mutualInsurance/project/listProject", {
const res = await this.$axios.post("/platform/mutualInsurance/apply/listProject", {
year: this.pageForm.year
});
if (res.code === 0) {
@@ -202,7 +202,7 @@ layout("/layouts/platform.html"){
}
try {
// 修改为互助保障项目的查询接口
const res = await this.$axios.post("/platform/mutualInsurance/project/listProject", {
const res = await this.$axios.post("/platform/mutualInsurance/apply/listProject", {
year: this.pageForm.year
});
if (res.code === 0) {
@@ -73,18 +73,51 @@ layout("/layouts/platform_h5.html"){
</van-cell-group>
<van-cell-group title="假期类型" class="form-section">
<van-field label="陪产假" v-model="formData.withLeave" placeholder="请输入天数" type="number"
<van-field label="陪产假" v-model="formData.withLeave" readonly type="number"
v-if="isMale" required></van-field>
<van-field label="育儿假" v-model="formData.parentalLeave" placeholder="请输入天数" type="number"
<van-field label="育儿假" v-model="formData.parentalLeave" readonly type="number"
v-if="isMale" required></van-field>
<van-field label="产假" v-model="formData.maternityLeave" placeholder="请输入天数" type="number"
v-if="isFemale" required></van-field>
<van-field label="延长假" v-model="formData.extendLeave" placeholder="请输入天数" type="number"
v-if="isFemale" required></van-field>
<van-field label="多胞胎" v-model="formData.birthsLeave" placeholder="请输入天数" type="number"
v-if="isFemale" required></van-field>
<van-field label="难产假" v-model="formData.difficultLeave" placeholder="请输入天数" type="number"
v-if="isFemale" required></van-field>
<!-- 替换原有的多胞胎和难产假输入框 -->
<van-field
v-if="isFemale"
label="多胞胎"
v-model="formData.birthsLeave"
readonly
placeholder="请选择天数"
@click="showBirthsLeavePicker = true"
clickable
></van-field>
<van-popup position="bottom" round v-model:show="showBirthsLeavePicker">
<van-picker
:columns="[{value: 15, text: '15天'}]"
@cancel="showBirthsLeavePicker = false"
@confirm="onBirthsLeaveConfirm"
show-toolbar
></van-picker>
</van-popup>
<van-field
v-if="isFemale"
label="难产假"
v-model="formData.difficultLeave"
readonly
placeholder="请选择天数"
@click="showDifficultLeavePicker = true"
clickable
></van-field>
<van-popup position="bottom" round v-model:show="showDifficultLeavePicker">
<van-picker
:columns="[{value: 15, text: '15天'}]"
@cancel="showDifficultLeavePicker = false"
@confirm="onDifficultLeaveConfirm"
show-toolbar
></van-picker>
</van-popup>
<van-field label="寒假" v-model="formData.winterLeave" placeholder="请输入天数"
type="number" ></van-field>
<van-field label="暑假" v-model="formData.summerLeave" placeholder="请输入天数"
@@ -180,6 +213,8 @@ layout("/layouts/platform_h5.html"){
showStartTimePicker: false,
showEndTimePicker: false,
showChildrenBirthdayPicker: false,
showBirthsLeavePicker: false,
showDifficultLeavePicker: false,
minDate: new Date(1950, 0, 1), // 设置最小日期为1950年1月1日
maxDate: new Date(2040, 12, 31), // 设置最大日期为2040年12月31日
// 表单验证规则
@@ -193,8 +228,6 @@ layout("/layouts/platform_h5.html"){
parentalLeave: [{ required: true, message: '请输入育儿假天数' }],
maternityLeave: [{ required: true, message: '请输入产假天数' }],
extendLeave: [{ required: true, message: '请输入延长假天数' }],
birthsLeave: [{ required: true, message: '请输入多胞胎天数' }],
difficultLeave: [{ required: true, message: '请输入难产假天数' }],
startTime: [{ required: true, message: '请选择休假开始时间' }],
endTime: [{ required: true, message: '请选择休假结束时间' }],
childrenBirthday: [{ required: true, message: '请选择子女出生日期' }]
@@ -370,12 +403,6 @@ layout("/layouts/platform_h5.html"){
if (!this.formData.extendLeave && this.formData.extendLeave !== 0) {
errors.push('请输入延长假天数');
}
if (!this.formData.birthsLeave && this.formData.birthsLeave !== 0) {
errors.push('请输入多胞胎天数');
}
if (!this.formData.difficultLeave && this.formData.difficultLeave !== 0) {
errors.push('请输入难产假天数');
}
}
if (!this.formData.startTime) {
@@ -467,6 +494,16 @@ layout("/layouts/platform_h5.html"){
this.showChildrenBirthdayPicker = false;
},
onBirthsLeaveConfirm(value) {
this.$set(this.formData, "birthsLeave", value.value);
this.showBirthsLeavePicker = false;
},
onDifficultLeaveConfirm(value) {
this.$set(this.formData, "difficultLeave", value.value);
this.showDifficultLeavePicker = false;
},
onLoverNationConfirm(o) {
this.$set(this.formData, "loverNationName", o.text); // 显示名称
this.$set(this.formData, "loverNation", o.value); // 字典值