基金会员
This commit is contained in:
+8
-1
@@ -1,6 +1,7 @@
|
||||
package com.budwk.app.zhgh.dayofficework.fund.member.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
@@ -39,8 +40,14 @@ public class FundMemberBranchUnionApprovalController {
|
||||
|
||||
}
|
||||
|
||||
@At("/h5")
|
||||
@Ok("beetl:/platform/zhghh5/dayofficework/fund/member/branchUnionApproval/index.html")
|
||||
@SaCheckPermission("h5.fundMember.branchUnionApproval")
|
||||
public void h5() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("fundMember.branchUnionApproval")
|
||||
@SaCheckPermission(value = {"fundMember.branchUnionApproval", "h5.fundMember.branchUnionApproval"}, mode = SaMode.OR)
|
||||
public Result pageData(PageForm pageForm, String taskId, String searchKeyword, Integer year, boolean approval) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
|
||||
+81
-8
@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||
import com.budwk.app.base.utils.SysOfficeTemplateUtil;
|
||||
@@ -31,9 +32,10 @@ import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@IocBean
|
||||
@At("/platform/fundMember/common")
|
||||
@@ -72,9 +74,12 @@ public class FundMemberCommonController {
|
||||
FundMemberApply fundMember = dao.fetch(FundMemberApply.class, id);
|
||||
Map<String, Object> docData = BeanUtil.beanToMap(fundMember);
|
||||
|
||||
docData.put("birthday", DateUtil.format(fundMember.getBirthday(), "yyyy年MM月dd日"));
|
||||
docData.put("joinWorkTime", DateUtil.format(fundMember.getJoinWorkTime(), "yyyy年MM月dd日"));
|
||||
docData.put("retireTime", DateUtil.format(fundMember.getRetireTime(), "yyyy年MM月dd日"));
|
||||
docData.put("birthday", formatDate(fundMember.getBirthday(), "yyyy年MM月"));
|
||||
docData.put("joinWorkTime", formatDate(fundMember.getJoinWorkTime(), "yyyy年MM月dd日"));
|
||||
docData.put("retireTime", formatDate(fundMember.getRetireTime(), "yyyy年MM月dd日"));
|
||||
docData.put("submitTime", formatDate(fundMember.getSubmitTime(), "yyyy年MM月dd日"));
|
||||
docData.put("unionName", StrUtil.nullToEmpty(fundMember.getUnionName()));
|
||||
docData.put("familyMembers", buildFamilyMembers(fundMember.getFamilies()));
|
||||
if (StrUtil.isNotBlank(fundMember.getAvatar())) {
|
||||
docData.put("avatar", sysOfficeTemplateUtil.createPictureRenderData(fundMember.getAvatar()));
|
||||
}
|
||||
@@ -88,19 +93,87 @@ public class FundMemberCommonController {
|
||||
doneTaskVos.add(taskVO);
|
||||
}
|
||||
|
||||
// 按任务节点分组
|
||||
Map<String, List<ProcessTaskVO>> taskGroups = doneTaskVos.stream().collect(Collectors.groupingBy(ProcessTaskVO::getDisplayName));
|
||||
docData.putAll(taskGroups);
|
||||
// 按模板约定输出分工会、校工会审核信息,fgh、xgh 可在模板中直接使用 date 和 opinion 子字段。
|
||||
putApprovalData(docData, doneTaskVos, List.of("fgh", "ltx"), "fgh");
|
||||
putApprovalData(docData, doneTaskVos, List.of("xgh"), "xgh");
|
||||
|
||||
Configure configure = Configure.builder().build();
|
||||
|
||||
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
|
||||
XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate("fundMember"), configure).render(docData).writeAndClose(byteArrayOutputStream);
|
||||
XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate("fundMemberApply"), configure).render(docData).writeAndClose(byteArrayOutputStream);
|
||||
CommonDownloadUtil.download(fundMember.getUserName() + "的医疗互助“爱心”基金入会申请表.docx", byteArrayOutputStream.toByteArray(), response);
|
||||
} catch (Exception e) {
|
||||
log.error("导出word异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化导出日期,空日期以空字符串输出,避免 Word 模板显示 null。
|
||||
*
|
||||
* @param date 日期
|
||||
* @param pattern Word 模板展示格式
|
||||
* @return 格式化后的日期文本
|
||||
*/
|
||||
private String formatDate(Date date, String pattern) {
|
||||
return date == null ? "" : DateUtil.format(date, pattern);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将家庭成员列表转换为 Word 模板单元格可直接展示的多行文本。
|
||||
*
|
||||
* @param families 家庭成员列表
|
||||
* @return 序号、姓名、年龄、与本人关系组成的多行文本
|
||||
*/
|
||||
private String buildFamilyMembers(List<JSONObject> families) {
|
||||
if (families == null || families.isEmpty()) {
|
||||
return "";
|
||||
}
|
||||
StringBuilder content = new StringBuilder();
|
||||
for (int index = 0; index < families.size(); index++) {
|
||||
JSONObject family = families.get(index);
|
||||
if (family == null) {
|
||||
continue;
|
||||
}
|
||||
if (content.length() > 0) {
|
||||
content.append(System.lineSeparator());
|
||||
}
|
||||
String sequence = StrUtil.blankToDefault(family.getStr("sequence"), String.valueOf(index + 1));
|
||||
content.append(sequence).append("、")
|
||||
.append(StrUtil.nullToEmpty(family.getStr("name"))).append(",")
|
||||
.append(StrUtil.nullToEmpty(family.getStr("age"))).append("岁,")
|
||||
.append(StrUtil.nullToEmpty(family.getStr("relation")));
|
||||
}
|
||||
return content.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 从指定流程节点中取最后一次已办记录,组装 Word 模板所需的审核日期与意见。
|
||||
*
|
||||
* @param docData 模板数据
|
||||
* @param doneTasks 已办流程任务
|
||||
* @param taskNames 对应的流程任务名称
|
||||
* @param templateKey 模板对象名称,例如 fgh、xgh
|
||||
*/
|
||||
private void putApprovalData(Map<String, Object> docData, List<ProcessTaskVO> doneTasks, List<String> taskNames, String templateKey) {
|
||||
Map<String, Object> approval = new HashMap<>();
|
||||
approval.put("date", "");
|
||||
approval.put("opinion", "");
|
||||
ProcessTaskVO latestTask = null;
|
||||
for (ProcessTaskVO task : doneTasks) {
|
||||
if (!taskNames.contains(task.getTaskName())) {
|
||||
continue;
|
||||
}
|
||||
if (latestTask == null || (task.getCreatedAt() != null
|
||||
&& (latestTask.getCreatedAt() == null || task.getCreatedAt() > latestTask.getCreatedAt()))) {
|
||||
latestTask = task;
|
||||
}
|
||||
}
|
||||
if (latestTask != null) {
|
||||
approval.put("date", formatDate(latestTask.getFinishTime(), "yyyy年MM月dd日"));
|
||||
approval.put("opinion", StrUtil.nullToEmpty(latestTask.getTaskFormData().getStr("tf_opinion")));
|
||||
}
|
||||
docData.put(templateKey, approval);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+11
-2
@@ -1,6 +1,7 @@
|
||||
package com.budwk.app.zhgh.dayofficework.fund.member.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.result.Result;
|
||||
@@ -44,8 +45,14 @@ public class FundMemberMineController {
|
||||
|
||||
}
|
||||
|
||||
@At("/h5")
|
||||
@Ok("beetl:/platform/zhghh5/dayofficework/fund/member/mine/index.html")
|
||||
@SaCheckPermission("h5.fundMember.mine")
|
||||
public void h5() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("fundMember.mine")
|
||||
@SaCheckPermission(value = {"fundMember.mine", "h5.fundMember.mine"}, mode = SaMode.OR)
|
||||
public Result pageData(Integer pageNumber, Integer pageSize, String searchKeyword, Integer year) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
@@ -76,13 +83,15 @@ public class FundMemberMineController {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("YEAR(info.submitTime)", "=", year);
|
||||
cnd.and("info.createdBy", "=", SecurityUtil.getUserId());
|
||||
// 同一流程任务存在多个参与人时,按申请主表主键合并,避免我的申请列表出现重复记录。
|
||||
cnd.groupBy("info.id");
|
||||
sql.setCondition(cnd);
|
||||
Pagination<NutMap> pagination = fundMemberService.listPageMap(pageNumber, pageSize, sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("fundMember.mine")
|
||||
@SaCheckPermission(value = {"fundMember.mine", "h5.fundMember.mine"}, mode = SaMode.OR)
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@ApiOperation("删除")
|
||||
@SLog(tag = "基金会员-我的申请", msg = "删除")
|
||||
|
||||
+8
-2
@@ -79,10 +79,16 @@ public class FundMemberQueryController {
|
||||
u.userState,
|
||||
u.preparedBy,
|
||||
u.personType,
|
||||
u.aidFundMemberType,
|
||||
COALESCE(NULLIF(u.aidFundMemberType, ''),
|
||||
(SELECT applyInfo.aidFundMemberType
|
||||
FROM fund_member_apply applyInfo
|
||||
WHERE applyInfo.loginName = u.loginName
|
||||
AND applyInfo.isJoin = 1
|
||||
ORDER BY applyInfo.submitTime DESC
|
||||
LIMIT 1)) AS aidFundMemberType,
|
||||
u.unitName,
|
||||
u.unionName,
|
||||
(SELECT changeTime FROM fund_member_change_record WHERE loginName = u.loginName AND isJoin = 1 ORDER BY changeTime DESC limit 1) joinTime
|
||||
(SELECT changeTime FROM fund_member_change_record WHERE loginName = u.loginName AND isJoin = 1 ORDER BY changeTime DESC LIMIT 1) AS joinTime
|
||||
FROM
|
||||
vw_user u
|
||||
$condition
|
||||
|
||||
+8
-1
@@ -1,6 +1,7 @@
|
||||
package com.budwk.app.zhgh.dayofficework.fund.member.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
@@ -39,8 +40,14 @@ public class FundMemberSchoolUnionApprovalController {
|
||||
|
||||
}
|
||||
|
||||
@At("/h5")
|
||||
@Ok("beetl:/platform/zhghh5/dayofficework/fund/member/schoolUnionApproval/index.html")
|
||||
@SaCheckPermission("h5.fundMember.schoolUnionApproval")
|
||||
public void h5() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("fundMember.schoolUnionApproval")
|
||||
@SaCheckPermission(value = {"fundMember.schoolUnionApproval", "h5.fundMember.schoolUnionApproval"}, mode = SaMode.OR)
|
||||
public Result pageData(PageForm pageForm, String unionId, Integer year, boolean approval) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
|
||||
+27
-8
@@ -1,6 +1,7 @@
|
||||
package com.budwk.app.zhgh.dayofficework.fund.member.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
@@ -50,8 +51,14 @@ public class FundMemberWriteController {
|
||||
|
||||
}
|
||||
|
||||
@At("/h5")
|
||||
@Ok("beetl:/platform/zhghh5/dayofficework/fund/member/write/index.html")
|
||||
@SaCheckPermission("h5.fundMember.write")
|
||||
public void h5() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("fundMember.write")
|
||||
@SaCheckPermission(value = {"fundMember.write", "h5.fundMember.write"}, mode = SaMode.OR)
|
||||
@ApiOperation("保存申请")
|
||||
@SLog(tag = "建言献策-填写申请", msg = "保存申请")
|
||||
public Result save(@Param("data") FundMemberApply fundMember) {
|
||||
@@ -64,11 +71,12 @@ public class FundMemberWriteController {
|
||||
|
||||
|
||||
@At
|
||||
@SaCheckPermission("fundMember.write")
|
||||
@SaCheckPermission(value = {"fundMember.write", "h5.fundMember.write"}, mode = SaMode.OR)
|
||||
@ApiOperation("提交申请")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SLog(tag = "基金会员-填写申请", msg = "提交申请")
|
||||
public Result submit(@Param("data") FundMemberApply fundMember) {
|
||||
fundMemberService.validateCurrentUserNotFundMember();
|
||||
if (StrUtil.isBlank(fundMember.getId())) {
|
||||
fundMemberService.validateApply();
|
||||
}
|
||||
@@ -80,7 +88,7 @@ public class FundMemberWriteController {
|
||||
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
||||
args.set(FlowConst.FORM_DATA, fundMember);
|
||||
args.set(FlowConst.TASK_FORM_DATA_PREFIX + "userState", fundMember.getUserState());
|
||||
ProcessInstance instance = flowEngine.startProcessInstanceByKey("FUND_MEMBER", fundMember.getId(), SecurityUtil.getUserId(), args);
|
||||
ProcessInstance instance = flowEngine.startProcessInstanceByKey("JJHY", fundMember.getId(), SecurityUtil.getUserId(), args);
|
||||
|
||||
// 自动完成第一个申请任务
|
||||
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
|
||||
@@ -91,11 +99,12 @@ public class FundMemberWriteController {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("fundMember.write")
|
||||
@SaCheckPermission(value = {"fundMember.write", "h5.fundMember.write"}, mode = SaMode.OR)
|
||||
@ApiOperation("重新提交申请")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SLog(tag = "基金会员-填写申请", msg = "重新提交申请")
|
||||
public Result submitAgain(@Param("data") FundMemberApply fundMember, @Param("taskId") Long taskId) {
|
||||
fundMemberService.validateCurrentUserNotFundMember();
|
||||
if (StrUtil.isBlank(fundMember.getId())) {
|
||||
fundMemberService.validateApply();
|
||||
}
|
||||
@@ -109,7 +118,7 @@ public class FundMemberWriteController {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("fundMember.write")
|
||||
@SaCheckPermission(value = {"fundMember.write", "fundMember.mine", "fundMember.branchUnionApproval", "fundMember.schoolUnionApproval", "h5.fundMember.write", "h5.fundMember.mine", "h5.fundMember.branchUnionApproval", "h5.fundMember.schoolUnionApproval"}, mode = SaMode.OR)
|
||||
@ApiOperation("获取申请信息")
|
||||
public Result info(@Param("id") String id) {
|
||||
FundMemberApply box = dao.fetch(FundMemberApply.class, id);
|
||||
@@ -118,10 +127,20 @@ public class FundMemberWriteController {
|
||||
|
||||
|
||||
@At
|
||||
@SaCheckPermission("fundMember.write")
|
||||
@SaCheckPermission(value = {"fundMember.write", "h5.fundMember.write"}, mode = SaMode.OR)
|
||||
@ApiOperation("获取当前用户基金会员状态")
|
||||
public Result memberStatus() {
|
||||
return Result.success(fundMemberService.isCurrentUserFundMember());
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission(value = {"fundMember.write", "h5.fundMember.write"}, mode = SaMode.OR)
|
||||
@ApiOperation("校验是否有申请在流程中")
|
||||
public Result validateApply(){
|
||||
fundMemberService.validateApply();
|
||||
return Result.success();
|
||||
boolean isFundMember = fundMemberService.isCurrentUserFundMember();
|
||||
if (!isFundMember) {
|
||||
fundMemberService.validateApply();
|
||||
}
|
||||
return Result.success(isFundMember);
|
||||
}
|
||||
}
|
||||
|
||||
+2
@@ -32,6 +32,8 @@ public class FundMemberPassInterceptor implements FlowInterceptor {
|
||||
// 添加到变更记录
|
||||
FundMemberChangeRecord record = BeanUtil.copyProperties(fundMemberApply, FundMemberChangeRecord.class, "id");
|
||||
record.setId(null);
|
||||
// 后置拦截器只在入会申请审核通过后执行,明确标记为加入记录,供台账展示加入时间。
|
||||
record.setIsJoin(true);
|
||||
record.setChangeOrigin("流程申请");
|
||||
record.setChangeTime(new Date());
|
||||
dao.insert(record);
|
||||
|
||||
+28
-1
@@ -1,6 +1,7 @@
|
||||
package com.budwk.app.zhgh.dayofficework.fund.member.models;
|
||||
|
||||
import cn.afterturn.easypoi.excel.annotation.Excel;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.budwk.app.base.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@@ -8,6 +9,7 @@ import org.nutz.dao.entity.annotation.*;
|
||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Table("fund_member_apply")
|
||||
@@ -48,7 +50,7 @@ public class FundMemberApply extends BaseModel {
|
||||
private String idCard;
|
||||
|
||||
@Column
|
||||
@Comment("参加工作时间")
|
||||
@Comment("入职时间")
|
||||
@ColDefine(type = ColType.DATE)
|
||||
private Date joinWorkTime;
|
||||
|
||||
@@ -67,6 +69,21 @@ public class FundMemberApply extends BaseModel {
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
private String address;
|
||||
|
||||
@Column
|
||||
@Comment("籍贯")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
private String nativePlace;
|
||||
|
||||
@Column
|
||||
@Comment("学历")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String education;
|
||||
|
||||
@Column
|
||||
@Comment("健康状况")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 200)
|
||||
private String healthStatus;
|
||||
|
||||
@Column
|
||||
@Comment("手机号码")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
@@ -77,6 +94,16 @@ public class FundMemberApply extends BaseModel {
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String homePhone;
|
||||
|
||||
@Column
|
||||
@Comment("家庭主要成员")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<JSONObject> families;
|
||||
|
||||
@Column
|
||||
@Comment("备注")
|
||||
@ColDefine(type = ColType.VARCHAR, customType = "text")
|
||||
private String remark;
|
||||
|
||||
@Column
|
||||
@Comment("照片")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
|
||||
+13
@@ -10,6 +10,18 @@ public interface FundMemberService extends BaseService<FundMemberApply> {
|
||||
*/
|
||||
void validateApply();
|
||||
|
||||
/**
|
||||
* 判断当前登录用户是否为基金会员。
|
||||
*
|
||||
* @return 当前用户是基金会员时返回 true
|
||||
*/
|
||||
boolean isCurrentUserFundMember();
|
||||
|
||||
/**
|
||||
* 校验当前登录用户不是基金会员,避免重复发起入会申请。
|
||||
*/
|
||||
void validateCurrentUserNotFundMember();
|
||||
|
||||
/**
|
||||
* 修改大病基金会员类别。
|
||||
*
|
||||
@@ -17,4 +29,5 @@ public interface FundMemberService extends BaseService<FundMemberApply> {
|
||||
* @param aidFundMemberType 大病基金会员类别
|
||||
*/
|
||||
void updateAidFundMemberType(String loginName, String aidFundMemberType);
|
||||
|
||||
}
|
||||
|
||||
+16
@@ -23,6 +23,7 @@ public class FundMemberServiceImpl extends BaseServiceImpl<FundMemberApply> impl
|
||||
|
||||
@Override
|
||||
public void validateApply() {
|
||||
validateCurrentUserNotFundMember();
|
||||
FundMemberApply apply = dao().fetch(FundMemberApply.class,
|
||||
Cnd.where(FundMemberApply::getLoginName, "=", SecurityUtil.getUserLoginname())
|
||||
.and("isJoin", "=", 1)
|
||||
@@ -39,6 +40,20 @@ public class FundMemberServiceImpl extends BaseServiceImpl<FundMemberApply> impl
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCurrentUserFundMember() {
|
||||
Sys_user user = dao().fetch(Sys_user.class,
|
||||
Cnd.where(Sys_user::getLoginname, "=", SecurityUtil.getUserLoginname()));
|
||||
return user != null && Boolean.TRUE.equals(user.getAidFundMember());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void validateCurrentUserNotFundMember() {
|
||||
if (isCurrentUserFundMember()) {
|
||||
throw new RuntimeException("您已是基金会员,无需重复申请");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateAidFundMemberType(String loginName, String aidFundMemberType) {
|
||||
if (StrUtil.isBlank(loginName)) {
|
||||
@@ -51,4 +66,5 @@ public class FundMemberServiceImpl extends BaseServiceImpl<FundMemberApply> impl
|
||||
Chain.make("aidFundMemberType", aidFundMemberType),
|
||||
Cnd.where(Sys_user::getLoginname, "=", loginName).and(Sys_user::getAidFundMember, "=", 1));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-6
@@ -26,12 +26,7 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||
<el-table-column prop="loginName" label="工号"></el-table-column>
|
||||
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||
<el-table-column prop="isJoin" label="申请类型">
|
||||
<template slot-scope="{row}">
|
||||
<el-tag v-if="row.isJoin" size="small">加入</el-tag>
|
||||
<el-tag v-else size="small" type="danger">退出</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="aidFundMemberType" label="会员类别"></el-table-column>
|
||||
<el-table-column prop="submitTime" label="申请时间"></el-table-column>
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
|
||||
@@ -1,66 +1,61 @@
|
||||
const fundMemberInfo = {
|
||||
template: /*language=HTML*/ `
|
||||
<div>
|
||||
<div class="process-title">
|
||||
申请信息
|
||||
<el-link type="primary" @click="openChart" v-if="row && row.instanceId">点击查看流程图</el-link>
|
||||
</div>
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="姓名">{{viewData.userName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="工号">{{viewData.loginName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="会员类别">{{viewData.aidFundMemberType}}</el-descriptions-item>
|
||||
<el-descriptions-item label="在职状态">{{viewData.userState}}</el-descriptions-item>
|
||||
<el-descriptions-item label="所属工会">{{viewData.unionName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="所属单位">{{viewData.unitName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">{{viewData.sex}}</el-descriptions-item>
|
||||
<el-descriptions-item label="出生年月">{{viewData.birthday}}</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号码">{{viewData.idCard}}</el-descriptions-item>
|
||||
<el-descriptions-item label="参加工作时间">{{viewData.joinWorkTime}}</el-descriptions-item>
|
||||
<el-descriptions-item label="退休时间">{{viewData.retireTime}}</el-descriptions-item>
|
||||
<el-descriptions-item label="家庭住址">{{viewData.address}}</el-descriptions-item>
|
||||
<el-descriptions-item label="手机电话">{{viewData.mobile}}</el-descriptions-item>
|
||||
<el-descriptions-item label="住宅号码">{{viewData.homePhone}}</el-descriptions-item>
|
||||
<el-descriptions-item label="照片">
|
||||
<img :src="viewData.avatar" alt="" style="width: 120px;height: 150px" v-if="viewData.avatar">
|
||||
</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="办理意见" v-if="!task.ext.isFirstTaskNode">{{
|
||||
task.taskFormData.opinion }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<slot></slot>
|
||||
|
||||
<snaker-chart ref="snakerChartRef"></snaker-chart>
|
||||
</div>
|
||||
`,
|
||||
template: /*language=HTML*/ [
|
||||
'<div>',
|
||||
' <div class="process-title">',
|
||||
' 申请信息',
|
||||
' <el-link type="primary" @click="openChart" v-if="row && row.instanceId">点击查看流程图</el-link>',
|
||||
' </div>',
|
||||
' <el-descriptions :column="2" border>',
|
||||
' <el-descriptions-item label="姓名">{{ viewData.userName || \'-\' }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="工号">{{ viewData.loginName || \'-\' }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="出生年月">{{ viewData.birthday || \'-\' }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="性别">{{ viewData.sex || \'-\' }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="籍贯">{{ viewData.nativePlace || \'-\' }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="家庭住址">{{ viewData.address || \'-\' }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="健康状况">{{ viewData.healthStatus || \'-\' }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="学历">{{ viewData.education || \'-\' }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="联系电话">{{ viewData.mobile || \'-\' }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="入职时间">{{ viewData.joinWorkTime || \'-\' }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="身份证号码" :span="2">{{ viewData.idCard || \'-\' }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="会员类别">{{ viewData.aidFundMemberType || \'-\' }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="退休时间">{{ viewData.retireTime || \'-\' }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="家庭主要成员" :span="2">',
|
||||
' <el-table :data="viewData.families || []" border size="small">',
|
||||
' <el-table-column label="序号" width="80" align="center">',
|
||||
' <template slot-scope="scope">{{ scope.row.sequence || scope.$index + 1 }}</template>',
|
||||
' </el-table-column>',
|
||||
' <el-table-column prop="name" label="姓名" min-width="160"></el-table-column>',
|
||||
' <el-table-column prop="age" label="年龄" width="120"></el-table-column>',
|
||||
' <el-table-column prop="relation" label="与本人关系" min-width="180"></el-table-column>',
|
||||
' </el-table>',
|
||||
' </el-descriptions-item>',
|
||||
' <el-descriptions-item label="备注" :span="2">{{ viewData.remark || \'-\' }}</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="办理意见" v-if="!task.ext.isFirstTaskNode">{{ task.taskFormData.opinion }}</el-descriptions-item>',
|
||||
' </el-descriptions>',
|
||||
' </div>',
|
||||
' </template>',
|
||||
' <slot></slot>',
|
||||
' <snaker-chart ref="snakerChartRef"></snaker-chart>',
|
||||
'</div>'
|
||||
].join(''),
|
||||
store,
|
||||
dicts: ["PROCESS_TASK_SUBMIT_TYPE"],
|
||||
data(){
|
||||
|
||||
@@ -17,12 +17,7 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||
<el-table-column prop="loginName" label="工号"></el-table-column>
|
||||
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||
<el-table-column prop="isJoin" label="申请类型">
|
||||
<template slot-scope="{row}">
|
||||
<el-tag v-if="row.isJoin" size="small">加入</el-tag>
|
||||
<el-tag v-else size="small" type="danger">退出</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="aidFundMemberType" label="会员类别"></el-table-column>
|
||||
<el-table-column prop="submitTime" label="申请时间"></el-table-column>
|
||||
<el-table-column prop="taskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
@@ -34,7 +29,6 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column label="操作" fixed="right" width="300px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button @click="exportDocx(row.id)" size="mini" type="primary">导出</el-button>
|
||||
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onEdit(row)"
|
||||
size="mini" type="primary">
|
||||
编辑
|
||||
@@ -42,9 +36,10 @@ layout("/layouts/platform.html"){
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
<!-- v-if="row.taskKey === 'startTask' || !row.instanceId"-->
|
||||
<el-button @click="onDelete(row.id)"
|
||||
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onDelete(row.id)"
|
||||
size="mini" type="danger">删除
|
||||
</el-button>
|
||||
<el-button @click="exportDocx(row.id)" size="mini" type="primary">导出</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
+1
-6
@@ -37,12 +37,7 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column prop="loginName" label="工号"></el-table-column>
|
||||
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||
<el-table-column prop="unionName" label="所属工会"></el-table-column>
|
||||
<el-table-column prop="isJoin" label="申请类型">
|
||||
<template slot-scope="{row}">
|
||||
<el-tag v-if="row.isJoin" size="small">加入</el-tag>
|
||||
<el-tag v-else size="small" type="danger">退出</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="aidFundMemberType" label="会员类别"></el-table-column>
|
||||
<el-table-column prop="submitTime" label="申请时间"></el-table-column>
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
|
||||
+183
-38
@@ -4,7 +4,8 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<el-card shadow="never">
|
||||
<snaker-start slot="header" label="基金会员入会申请" define_key="FUND_MEMBER"></snaker-start>
|
||||
<snaker-start slot="header" label="基金会员入会申请" define_key="JJHY"></snaker-start>
|
||||
<el-alert v-if="isFundMember" title="您已是基金会员,无需重复申请。" type="warning" :closable="false" show-icon class="mb20"></el-alert>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="120px">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
@@ -43,8 +44,8 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份证号码" prop="idCard">
|
||||
<el-input v-model="formData.idCard" placeholder="请输入身份证号码"></el-input>
|
||||
<el-form-item label="籍贯" prop="nativePlace">
|
||||
<el-input v-model="formData.nativePlace" placeholder="请输入籍贯"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@@ -56,16 +57,51 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="参加工作时间" prop="joinWorkTime">
|
||||
<el-form-item label="健康状况" prop="healthStatus">
|
||||
<el-input v-model="formData.healthStatus" maxlength="200" placeholder="请输入健康状况"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="学历" prop="education">
|
||||
<dict-select v-model="formData.education" placeholder="请选择学历" code="USER_EDUCATION" style="width: 100%"></dict-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系电话" prop="mobile">
|
||||
<el-input v-model="formData.mobile" placeholder="请输入联系电话" maxlength="11"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="入职时间" prop="joinWorkTime">
|
||||
<el-date-picker
|
||||
v-model="formData.joinWorkTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="选择参加工作时间"
|
||||
placeholder="选择入职时间"
|
||||
style="width: 100%"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份证号码" prop="idCard">
|
||||
<el-input v-model="formData.idCard" placeholder="请输入身份证号码"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会员类别" prop="aidFundMemberType">
|
||||
<dict-select v-model="formData.aidFundMemberType" placeholder="请选择会员类别"
|
||||
code="USER_AID_FUND_MEMBER_TYPE" style="width: 100%"></dict-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="退休时间" prop="retireTime">
|
||||
<el-date-picker
|
||||
@@ -79,28 +115,54 @@ layout("/layouts/platform.html"){
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!--
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会员类别" prop="aidFundMemberType">
|
||||
<dict-select v-model="formData.aidFundMemberType" placeholder="请选择会员类别"
|
||||
code="USER_AID_FUND_MEMBER_TYPE" style="width: 100%"></dict-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="手机号码" prop="mobile">
|
||||
<el-input v-model="formData.mobile" placeholder="请输入手机号码" maxlength="11"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="住宅号码" prop="homePhone">
|
||||
<el-input v-model="formData.homePhone" placeholder="请输入住宅电话" maxlength="20"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
-->
|
||||
|
||||
<el-form-item label="家庭主要成员" prop="families" required>
|
||||
<el-table :data="formData.families" border size="small">
|
||||
<el-table-column label="序号" width="80" align="center">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.sequence }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="姓名" min-width="160">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="scope.row.name" maxlength="50" placeholder="请输入姓名"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="年龄" width="160">
|
||||
<template slot-scope="scope">
|
||||
<el-input-number v-model="scope.row.age" :min="0" :max="150" :precision="0" controls-position="right" style="width: 100%"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="与本人关系" min-width="180">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="scope.row.relation" maxlength="50" placeholder="请输入与本人关系"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="150" align="center">
|
||||
<template slot="header">
|
||||
<el-button type="primary" size="mini" @click="addFamily">添加成员</el-button>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-button type="danger" size="mini" icon="el-icon-delete" @click="removeFamily(scope.$index)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" type="textarea" :rows="3" maxlength="500" show-word-limit placeholder="请输入备注"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<!--
|
||||
<el-form-item label="照 片">
|
||||
<file-upload
|
||||
style="--upload-width: 150px;--upload-height:176px"
|
||||
@@ -111,6 +173,7 @@ layout("/layouts/platform.html"){
|
||||
upload_result_type="url"
|
||||
></file-upload>
|
||||
</el-form-item>
|
||||
-->
|
||||
|
||||
<!-- <el-form-item>-->
|
||||
<!-- <el-checkbox v-model="isAgree">-->
|
||||
@@ -121,8 +184,8 @@ layout("/layouts/platform.html"){
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end" class="mt20">
|
||||
<!-- <el-button type="primary" plain @click="onSave">保存</el-button>-->
|
||||
<el-button type="primary" @click="onSubmit" v-if="!taskId">提交申请</el-button>
|
||||
<el-button type="primary" @click="onFinishTask" v-else>提交申请</el-button>
|
||||
<el-button type="primary" @click="onSubmit" v-if="!taskId && !isFundMember">提交申请</el-button>
|
||||
<el-button type="primary" @click="onFinishTask" v-if="taskId && !isFundMember">提交申请</el-button>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</div>
|
||||
@@ -135,7 +198,14 @@ layout("/layouts/platform.html"){
|
||||
return {
|
||||
bizId: GetQueryString("bizId"),
|
||||
taskId: GetQueryString("taskId"),
|
||||
formData: {},
|
||||
isFundMember: false,
|
||||
formData: {
|
||||
families: [],
|
||||
nativePlace: "",
|
||||
education: "",
|
||||
healthStatus: "",
|
||||
remark: ""
|
||||
},
|
||||
formRules: {
|
||||
userName: [{required: true, message: '请输入姓名', trigger: 'blur'}],
|
||||
loginName: [{required: true, message: '请输入工资号', trigger: 'blur'}],
|
||||
@@ -149,7 +219,10 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
],
|
||||
address: [{required: true, message: '请输入家庭住址', trigger: 'blur'}],
|
||||
joinWorkTime: [{required: true, message: '请选择参加工作时间', trigger: 'blur'}],
|
||||
nativePlace: [{required: true, message: '请输入籍贯', trigger: 'blur'}],
|
||||
healthStatus: [{required: true, message: '请输入健康状况', trigger: 'blur'}],
|
||||
education: [{required: true, message: '请选择学历', trigger: 'change'}],
|
||||
joinWorkTime: [{required: true, message: '请选择入职时间', trigger: 'blur'}],
|
||||
retireTime: [{required: false, message: '请选择退休时间', trigger: 'blur'}],
|
||||
aidFundMemberType: [{required: true, message: '请选择会员类别', trigger: 'change'}],
|
||||
mobile: [{required: true, message: '请输入手机号码', trigger: 'blur'},
|
||||
@@ -172,6 +245,63 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 确保家庭成员字段始终为可响应式数组,兼容旧申请数据。
|
||||
ensureFamilies() {
|
||||
if (!Array.isArray(this.formData.families)) {
|
||||
this.$set(this.formData, "families", [])
|
||||
}
|
||||
},
|
||||
|
||||
// 按当前行顺序重置家庭成员序号,避免删除成员后出现断号。
|
||||
resetFamilySequence() {
|
||||
this.ensureFamilies()
|
||||
this.formData.families.forEach((family, index) => {
|
||||
this.$set(family, "sequence", index + 1)
|
||||
})
|
||||
},
|
||||
|
||||
// 添加一名家庭成员并自动设置序号。
|
||||
addFamily() {
|
||||
this.ensureFamilies()
|
||||
this.formData.families.push({
|
||||
sequence: this.formData.families.length + 1,
|
||||
name: "",
|
||||
age: null,
|
||||
relation: ""
|
||||
})
|
||||
},
|
||||
|
||||
// 删除指定家庭成员后重排序号。
|
||||
removeFamily(index) {
|
||||
this.ensureFamilies()
|
||||
this.formData.families.splice(index, 1)
|
||||
this.resetFamilySequence()
|
||||
},
|
||||
|
||||
// 提交前校验家庭主要成员的必填信息。
|
||||
validateFamilies() {
|
||||
this.resetFamilySequence()
|
||||
if (this.formData.families.length === 0) {
|
||||
this.$message.error("请至少添加一名家庭主要成员")
|
||||
return false
|
||||
}
|
||||
for (const family of this.formData.families) {
|
||||
if (!family.name || !String(family.name).trim()) {
|
||||
this.$message.error("请填写第" + family.sequence + "位家庭成员的姓名")
|
||||
return false
|
||||
}
|
||||
if (family.age === null || family.age === undefined || family.age === "") {
|
||||
this.$message.error("请填写第" + family.sequence + "位家庭成员的年龄")
|
||||
return false
|
||||
}
|
||||
if (!family.relation || !String(family.relation).trim()) {
|
||||
this.$message.error("请填写第" + family.sequence + "位家庭成员与本人的关系")
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
},
|
||||
|
||||
// 保存
|
||||
// onSave() {
|
||||
// this.$confirm("您确定保存吗?", "提示", {
|
||||
@@ -192,6 +322,7 @@ layout("/layouts/platform.html"){
|
||||
onSubmit() {
|
||||
this.$refs.formRef.validate(valid => {
|
||||
if (!valid) return
|
||||
if (!this.validateFamilies()) return
|
||||
// if (!this.isAgree) {
|
||||
// this.$message.error("请先阅读并同意《南昌大学教职工医疗互助“爱心”基金管理办法》")
|
||||
// return
|
||||
@@ -214,19 +345,22 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
|
||||
onFinishTask() {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post('/platform/fundMember/write/submitAgain', {
|
||||
data: JSON.stringify(this.formData),
|
||||
taskId: GetQueryString("taskId")
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("提交成功")
|
||||
commonUtil.pjaxPush('/platform/fundMember/mine')
|
||||
}
|
||||
this.$refs.formRef.validate(valid => {
|
||||
if (!valid || !this.validateFamilies()) return
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post('/platform/fundMember/write/submitAgain', {
|
||||
data: JSON.stringify(this.formData),
|
||||
taskId: GetQueryString("taskId")
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("提交成功")
|
||||
commonUtil.pjaxPush('/platform/fundMember/mine')
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
@@ -238,10 +372,11 @@ layout("/layouts/platform.html"){
|
||||
this.$axios.post("/platform/fundMember/write/info", {id: this.bizId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.formData = res.data
|
||||
this.resetFamilySequence()
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const {username, loginname, sex, birthday, mobile, union, userState, idCard} = this.$store.state.user
|
||||
const {username, loginname, sex, birthday, mobile, union, userState, idCard, education} = this.$store.state.user
|
||||
this.formData = {
|
||||
userName: username,
|
||||
loginName: loginname,
|
||||
@@ -251,7 +386,12 @@ layout("/layouts/platform.html"){
|
||||
unionId: union?.id,
|
||||
unionName: union?.name,
|
||||
userState: userState,
|
||||
idCard: idCard
|
||||
idCard: idCard,
|
||||
nativePlace: "",
|
||||
education: education || "",
|
||||
healthStatus: "",
|
||||
remark: "",
|
||||
families: []
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -259,6 +399,11 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
created() {
|
||||
this.init()
|
||||
this.$axios.post('/platform/fundMember/write/memberStatus').then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$set(this, "isFundMember", Boolean(res.data))
|
||||
}
|
||||
})
|
||||
if(!this.bizId){
|
||||
this.$axios.post('/platform/fundMember/write/validateApply')
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user