diff --git a/src/main/java/com/budwk/app/sys/controller/SysUnionController.java b/src/main/java/com/budwk/app/sys/controller/SysUnionController.java index 1928b45a..1fb564a2 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysUnionController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysUnionController.java @@ -408,16 +408,30 @@ public class SysUnionController { } if (isAdmin) { - // 如果是管理员,直接加角色 - sysRoleService.clear("sys_user_role", Cnd.where("roleId", "=", role.getId()).and("userId", "=", userId).and("unionId", "=", unionId)); - sysRoleService.insert("sys_user_role", Chain.make("roleId", role.getId()).add("userId", userId).add("unionId", unionId)); - sysRoleService.clearCache(); - sysUserService.clearCache(); + // 如果是管理员,直接同步分工会干部角色;非管理员等待校工会审核通过后同步。 +// sysRoleService.clear("sys_user_role", Cnd.where("roleId", "=", role.getId()).and("userId", "=", userId).and("unionId", "=", unionId)); +// sysRoleService.insert("sys_user_role", Chain.make("roleId", role.getId()).add("userId", userId).add("unionId", unionId)); +// sysRoleService.clearCache(); +// sysUserService.clearCache(); + sysUnionService.syncBranchUnionCadreRole(unionCadre); } return Result.success(); } + @At + @ApiOperation("同步分工会干部角色") + @SaCheckPermission("sys.manager.union") + @Aop(TransAop.READ_COMMITTED) + public Result syncBranchUnionCadreRole(String id) { + Sys_union_cadre unionCadre = dao.fetch(Sys_union_cadre.class, id); + if (Lang.isEmpty(unionCadre)) { + return Result.error("未找到分工会干部记录"); + } + sysUnionService.syncBranchUnionCadreRole(unionCadre); + return Result.success(); + } + @At @ApiOperation("删除分工会人员角色") @SaCheckPermission("sys.manager.union.branchOfficer") diff --git a/src/main/java/com/budwk/app/sys/interceptor/SysUnionSchoolAuditInterceptor.java b/src/main/java/com/budwk/app/sys/interceptor/SysUnionSchoolAuditInterceptor.java index 39de1e1f..1b2f20e5 100644 --- a/src/main/java/com/budwk/app/sys/interceptor/SysUnionSchoolAuditInterceptor.java +++ b/src/main/java/com/budwk/app/sys/interceptor/SysUnionSchoolAuditInterceptor.java @@ -6,12 +6,8 @@ import com.budwk.app.flow.engine.FlowInterceptor; import com.budwk.app.flow.engine.core.Execution; import com.budwk.app.flow.engine.core.ServiceContext; import com.budwk.app.flow.enums.ProcessSubmitTypeEnum; -import com.budwk.app.sys.models.Sys_role; import com.budwk.app.sys.models.Sys_union_cadre; -import com.budwk.app.sys.services.SysRoleService; -import com.budwk.app.sys.services.SysUserService; -import org.nutz.dao.Chain; -import org.nutz.dao.Cnd; +import com.budwk.app.sys.services.SysUnionService; /** * @version 1.0 @@ -26,27 +22,25 @@ public class SysUnionSchoolAuditInterceptor implements FlowInterceptor { @Override public void intercept(Execution execution) { // 是否审核通过 - boolean submitType = execution.getArgs().getInt("submitType").equals(ProcessSubmitTypeEnum.AGREE.getCode()); + Integer submitTypeCode = execution.getArgs().getInt(FlowConst.SUBMIT_TYPE); + boolean submitType = ProcessSubmitTypeEnum.AGREE.getCode().equals(submitTypeCode); if (submitType) { // 审核通过,添加相应的角色 String formDataStr = execution.getArgs().getStr(FlowConst.FORM_DATA); - SysRoleService sysRoleService = ServiceContext.find(SysRoleService.class); - SysUserService sysUserService = ServiceContext.find(SysUserService.class); + SysUnionService sysUnionService = ServiceContext.find(SysUnionService.class); // 表单数据 Sys_union_cadre unionBean = JSONUtil.toBean(formDataStr, Sys_union_cadre.class); - // 清除对应角色然后再新增 - Sys_role role = sysRoleService.getByCode(unionBean.getRoleCode()); - sysRoleService.clear("sys_user_role", Cnd.where("roleId", "=", role.getId()) - .and("userId", "=", unionBean.getUserId()).and("unionId", "=", unionBean.getUnionId())); - sysRoleService.insert("sys_user_role", Chain.make("roleId", role.getId()) - .add("userId", unionBean.getUserId()).add("unionId", unionBean.getUnionId())); - - // 清除缓存 - sysRoleService.clearCache(); - sysUserService.clearCache(); + // 原直接写角色逻辑保留,统一改由 service 同步干部角色。 +// Sys_role role = sysRoleService.getByCode(unionBean.getRoleCode()); +// sysRoleService.clear("sys_user_role", Cnd.where("roleId", "=", role.getId()) +// .and("userId", "=", unionBean.getUserId()).and("unionId", "=", unionBean.getUnionId())); +// sysRoleService.insert("sys_user_role", Chain.make("roleId", role.getId()) +// .add("userId", unionBean.getUserId()).add("unionId", unionBean.getUnionId())); + // 校工会审核通过后,同步干部对应的系统角色,供根目录主席列和权限判断读取。 + sysUnionService.syncBranchUnionCadreRole(unionBean); } // 未审核通过,不作操作 } diff --git a/src/main/java/com/budwk/app/sys/models/Sys_user.java b/src/main/java/com/budwk/app/sys/models/Sys_user.java index 870c2045..7c362f33 100644 --- a/src/main/java/com/budwk/app/sys/models/Sys_user.java +++ b/src/main/java/com/budwk/app/sys/models/Sys_user.java @@ -279,6 +279,12 @@ public class Sys_user extends BaseModel implements Serializable { @Default(value = "0") private Boolean member; + @Column + @Comment("是否缴费") + @ColDefine(type = ColType.BOOLEAN) + @Default(value = "0") + private Boolean memberFeePaid; + @Column @Comment("会员加入时间") @ColDefine(type = ColType.DATETIME) diff --git a/src/main/java/com/budwk/app/sys/services/SysUnionService.java b/src/main/java/com/budwk/app/sys/services/SysUnionService.java index 302a4769..20e55e88 100644 --- a/src/main/java/com/budwk/app/sys/services/SysUnionService.java +++ b/src/main/java/com/budwk/app/sys/services/SysUnionService.java @@ -2,6 +2,12 @@ package com.budwk.app.sys.services; import com.budwk.app.base.service.BaseService; import com.budwk.app.sys.models.Sys_union; +import com.budwk.app.sys.models.Sys_union_cadre; public interface SysUnionService extends BaseService { + + /** + * 根据分工会干部记录同步系统角色,保证干部表和用户角色表保持一致。 + */ + void syncBranchUnionCadreRole(Sys_union_cadre unionCadre); } diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java index 4d50a81a..4d74a992 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java @@ -153,39 +153,41 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService } /** - * 批量补充会员角色,已存在会员角色的用户不重复插入。 + * 批量补充指定角色,已存在该角色的用户不重复插入。 */ - private void addMemberRolesIfAbsent(List userIds, Sys_role memberRole) { - if (Lang.isEmpty(userIds) || memberRole == null) { - return; + private int addRoleIfAbsent(List userIds, Sys_role role, String roleName) { + if (Lang.isEmpty(userIds) || role == null) { + return 0; } List distinctUserIds = userIds.stream().filter(Objects::nonNull).distinct().toList(); if (distinctUserIds.isEmpty()) { - return; + return 0; } - List existingRoles = dao.query(Sys_user_role.class, - Cnd.where("roleId", "=", memberRole.getId()).and("userId", "in", distinctUserIds)); - Set existingUserIds = existingRoles.stream().map(Sys_user_role::getUserId).collect(Collectors.toSet()); - List roleList = distinctUserIds.stream() - .filter(id -> !existingUserIds.contains(id)) - .map(id -> { - Sys_user_role userRole = new Sys_user_role(); - userRole.setRoleId(memberRole.getId()); - userRole.setUserId(id); - return userRole; - }) - .collect(Collectors.toList()); - if (roleList.isEmpty()) { - return; - } - List> batches = ListUtil.split(roleList, 500); - batches.forEach(batch -> { - try { - dao.fastInsert(batch); - } catch (Exception e) { - log.error("批量添加会员角色异常", e); + int insertCount = 0; + for (List userIdBatch : ListUtil.split(distinctUserIds, 500)) { + List existingRoles = dao.query(Sys_user_role.class, + Cnd.where("roleId", "=", role.getId()).and("userId", "in", userIdBatch)); + Set existingUserIds = existingRoles.stream().map(Sys_user_role::getUserId).collect(Collectors.toSet()); + List roleList = userIdBatch.stream() + .filter(id -> !existingUserIds.contains(id)) + .map(id -> { + Sys_user_role userRole = new Sys_user_role(); + userRole.setRoleId(role.getId()); + userRole.setUserId(id); + return userRole; + }) + .collect(Collectors.toList()); + if (roleList.isEmpty()) { + continue; } - }); + try { + dao.fastInsert(roleList); + insertCount += roleList.size(); + } catch (Exception e) { + log.error("批量添加{}角色异常", roleName, e); + } + } + return insertCount; } /** @@ -297,6 +299,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService }, executorService); updateTasks.add(insertTask); + /* // 异步处理公共角色分配 if (!needInitUserList.isEmpty()) { CompletableFuture roleTask = CompletableFuture.runAsync(() -> { @@ -326,6 +329,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService }, executorService); // 不等待角色分配完成 } + */ } // 2. 更新现有用户 - 使用批量处理 @@ -358,6 +362,18 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService return "更新失败: " + e.getMessage(); } + // 全量更新后统一补齐角色:所有人补公共角色,所有会员补会员角色;仅新增缺失角色,不删除、不重复插入。 + List latestUsers = dao.query(Sys_user.class, Cnd.NEW()); + List allUserIds = latestUsers.stream().map(Sys_user::getId).filter(Objects::nonNull).toList(); + List memberUserIds = latestUsers.stream() + .filter(user -> Boolean.TRUE.equals(user.getMember())) + .map(Sys_user::getId) + .filter(Objects::nonNull) + .toList(); + int publicRoleAddCount = addRoleIfAbsent(allUserIds, publicRole, "公共"); + int memberRoleAddCount = addRoleIfAbsent(memberUserIds, memberRole, "会员"); + log.info("全量更新补齐角色完成,新增公共角色{}个,新增会员角色{}个", publicRoleAddCount, memberRoleAddCount); + // 3. 异步添加历史记录 - 不等待完成 if (Lang.isNotEmpty(histories)) { executorService.execute(() -> { @@ -374,19 +390,19 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService }); } + /* // 4. 异步添加会员角色 - 不等待完成 if (Lang.isNotEmpty(addMemberUserIds)) { executorService.execute(() -> { try { log.info("添加会员角色: {} 个", addMemberUserIds.size()); - addMemberRolesIfAbsent(addMemberUserIds, memberRole); + addRoleIfAbsent(addMemberUserIds, memberRole, "会员"); } catch (Exception e) { log.error("添加会员角色异常", e); } }); } - /* // 5. 异步移除会员角色 - 不等待完成 if (Lang.isNotEmpty(removeMemberUserIds)) { executorService.execute(() -> { @@ -419,7 +435,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService log.info("全量更新用户数据完成,耗时: {} 毫秒", (endTime - startTime)); return "更新完成: 新增用户 " + needInitUserList.size() + " 个, 更新用户 " + needDoUpdateList.size() - + " 个, 待添加会员 " + addMemberUserIds.size() + " 个, 待移除会员 " + removeMemberUserIds.size() + " 个"; + + " 个, 新增公共角色 " + publicRoleAddCount + " 个, 新增会员角色 " + memberRoleAddCount + " 个"; } /** diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysUnionServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysUnionServiceImpl.java index 71a760ce..7503dd8b 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysUnionServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysUnionServiceImpl.java @@ -1,14 +1,64 @@ package com.budwk.app.sys.services.impl; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.exception.BaseException; import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.sys.models.Sys_role; import com.budwk.app.sys.models.Sys_union; +import com.budwk.app.sys.models.Sys_union_cadre; +import com.budwk.app.sys.models.Sys_user_role; +import com.budwk.app.sys.services.SysRoleService; import com.budwk.app.sys.services.SysUnionService; +import com.budwk.app.sys.services.SysUserService; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; import org.nutz.dao.Dao; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; @IocBean(args = {"refer:dao"}) public class SysUnionServiceImpl extends BaseServiceImpl implements SysUnionService { + + @Inject + private SysRoleService sysRoleService; + + @Inject + private SysUserService sysUserService; + public SysUnionServiceImpl(Dao dao) { super(dao); } + + /** + * 分工会干部审核通过后,需要同时维护 sys_user_role,否则根目录分工会主席列和实际权限都会取不到角色。 + */ + @Override + @Aop(TransAop.READ_COMMITTED) + public void syncBranchUnionCadreRole(Sys_union_cadre unionCadre) { + if (unionCadre == null || StrUtil.hasBlank(unionCadre.getUserId(), unionCadre.getUnionId(), unionCadre.getRoleCode())) { + throw new BaseException("分工会干部角色同步失败,干部记录缺少用户、工会或角色信息"); + } + Sys_role role = sysRoleService.fetch(Cnd.where(Sys_role::getCode, "=", unionCadre.getRoleCode())); + if (Lang.isEmpty(role)) { + throw new BaseException("分工会干部角色同步失败,未找到{}对应的系统角色", unionCadre.getRoleCode()); + } + + Cnd roleCnd = Cnd.where(Sys_user_role::getRoleId, "=", role.getId()) + .and(Sys_user_role::getUserId, "=", unionCadre.getUserId()) + .and(Sys_user_role::getUnionId, "=", unionCadre.getUnionId()); + dao().clear(Sys_user_role.class, roleCnd); + + if (Boolean.TRUE.equals(unionCadre.getIsJoin())) { + Sys_user_role userRole = new Sys_user_role(); + userRole.setRoleId(role.getId()); + userRole.setUserId(unionCadre.getUserId()); + userRole.setUnionId(unionCadre.getUnionId()); + dao().insert(userRole); + } + + sysRoleService.clearCache(); + sysUserService.clearCache(); + } } diff --git a/src/main/java/com/budwk/app/sys/views/View_user.java b/src/main/java/com/budwk/app/sys/views/View_user.java index fc28b178..5d016858 100644 --- a/src/main/java/com/budwk/app/sys/views/View_user.java +++ b/src/main/java/com/budwk/app/sys/views/View_user.java @@ -108,6 +108,9 @@ public class View_user { @Column private Integer member; + @Column + private Boolean memberFeePaid; + @Column private Integer memberOrigin; diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberInfoGroupController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberInfoGroupController.java index 3ff2d154..f8a197ee 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberInfoGroupController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberInfoGroupController.java @@ -102,6 +102,28 @@ public class MemberInfoGroupController { memberInfoService.exportMember(pageForm, response); } + @At + @SaCheckPermission("member.info.group") + public Result toggleMemberFeePaid(String userId) { + try { + return Result.success(memberInfoService.toggleMemberFeePaid(userId)); + } catch (Exception e) { + e.printStackTrace(); + return Result.error(e.getMessage()); + } + } + + @At + @SaCheckPermission("member.info.group") + public Result batchSetMemberFeePaid(MemberInfoPageForm pageForm) { + try { + return Result.success(memberInfoService.batchSetMemberFeePaid(pageForm)); + } catch (Exception e) { + e.printStackTrace(); + return Result.error(e.getMessage()); + } + } + @At @Ok("void") diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberInfoPageForm.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberInfoPageForm.java index ee526896..ff7ead94 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberInfoPageForm.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberInfoPageForm.java @@ -74,6 +74,9 @@ public class MemberInfoPageForm extends PageForm { @ApiModelProperty("会员状态") private Integer memberStatus; + @ApiModelProperty("是否缴费") + private Boolean memberFeePaid; + @ApiModelProperty("职位") private String position; @@ -118,9 +121,9 @@ public class MemberInfoPageForm extends PageForm { // 权限判断 if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) { - // 分工会主席只能查看本人所在单位会员,避免无分工会人员被 unionId 空值兜底查出。 + // 分工会主席查看本人所在分工会下的会员,覆盖该分工会包含的全部单位。 if (AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) { - cnd.and(prefix + "unitId", "=", SecurityUtil.getUnitId()); + cnd.and(prefix + "unionId", "=", SecurityUtil.getUnionId()); } else { cnd.and(prefix + "unionId", "=", SecurityUtil.getUnionId()); } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberInfoService.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberInfoService.java index 9b76e766..b0d5b33b 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberInfoService.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberInfoService.java @@ -61,6 +61,22 @@ public interface MemberInfoService extends BaseService { */ void exportMember(MemberInfoPageForm pageForm, HttpServletResponse response); + /** + * 切换指定会员的缴费状态 + * + * @param userId 会员用户ID + * @return 切换后的缴费状态,true 表示已缴费,false 表示未缴费 + */ + Boolean toggleMemberFeePaid(String userId); + + /** + * 按当前会员列表筛选条件批量设置为已缴费 + * + * @param pageForm 会员列表筛选条件 + * @return 本次设置为已缴费的会员数量 + */ + int batchSetMemberFeePaid(MemberInfoPageForm pageForm); + /** * 导入会员数据处理 diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberInfoServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberInfoServiceImpl.java index 6c31ca9b..27487342 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberInfoServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberInfoServiceImpl.java @@ -101,14 +101,18 @@ public class MemberInfoServiceImpl extends BaseServiceImpl implements DATE_FORMAT(u.teachingTime, '%Y-%m-%d') AS teachingTime, DATE_FORMAT(u.expectedLeaveSchoolDate, '%Y-%m-%d') AS expectedLeaveSchoolDate, u.member, + IFNULL(su.memberFeePaid, 0) AS memberFeePaid, DATE_FORMAT(u.postDoctoralJoinDate, '%Y-%m-%d') AS postDoctoralJoinDate FROM vw_user u + LEFT JOIN sys_user su ON su.id = u.id $condition """); Cnd cnd = Cnd.NEW(); - cnd.and("member", "=", true); + cnd.and("u.member", "=", true); pageForm.buildSearch(cnd, "u."); + cnd.andEX("su.memberFeePaid", "=", pageForm.getMemberFeePaid()); + cnd.asc("u.id"); sql.setCondition(cnd); return sql; } @@ -266,6 +270,37 @@ public class MemberInfoServiceImpl extends BaseServiceImpl implements CommonDownloadUtil.download("会员档案表.xlsx", workbook, response); } + @Override + @Aop(TransAop.READ_COMMITTED) + public Boolean toggleMemberFeePaid(String userId) { + if (StrUtil.isBlank(userId)) { + throw new RuntimeException("会员用户ID不能为空"); + } + Sys_user user = dao().fetch(Sys_user.class, userId); + if (user == null) { + throw new RuntimeException("会员用户不存在"); + } + Boolean memberFeePaid = !Boolean.TRUE.equals(user.getMemberFeePaid()); + dao().update(Sys_user.class, Chain.make("memberFeePaid", memberFeePaid), Cnd.where("id", "=", userId)); + return memberFeePaid; + } + + @Override + @Aop(TransAop.READ_COMMITTED) + public int batchSetMemberFeePaid(MemberInfoPageForm pageForm) { + Sql sql = getSql(pageForm); + List list = listMap(sql); + List userIds = list.stream() + .map(row -> row.getString("id")) + .filter(StrUtil::isNotBlank) + .toList(); + if (Lang.isEmpty(userIds)) { + return 0; + } + dao().update(Sys_user.class, Chain.make("memberFeePaid", true), Cnd.where("id", "in", userIds)); + return userIds.size(); + } + @Aop(TransAop.READ_COMMITTED) @Override diff --git a/src/main/resources/views/platform/sys/union/branchUnionCadreAudit.js b/src/main/resources/views/platform/sys/union/branchUnionCadreAudit.js index a57ae2ff..45b5336e 100644 --- a/src/main/resources/views/platform/sys/union/branchUnionCadreAudit.js +++ b/src/main/resources/views/platform/sys/union/branchUnionCadreAudit.js @@ -127,10 +127,22 @@ const branchUnionCadreAudit = { ...this.formData, submitType: val }) + }).then((res) => { + // 审核通过后同步分工会角色,避免干部表有记录但根目录主席列和权限角色为空。 + if (res.code === 0 && val === 1) { + return this.$axios.post("/platform/sys/union/syncBranchUnionCadreRole", { + id: row.id + }).then((syncRes) => { + return syncRes.code === 0 ? res : syncRes + }) + } + return res }).then((res) => { if (res.code === 0) { this.$message.success(res.msg) this.doSearch() + } else { + this.$message.error(res.msg) } }).finally(() => { loading.close() diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/info/common/commonQuery.js b/src/main/resources/views/platform/zhgh/staffmanage/member/info/common/commonQuery.js index 64f84fba..c465a9dc 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/info/common/commonQuery.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/info/common/commonQuery.js @@ -45,6 +45,12 @@ const COMMON_QUERY = { + + + + + + `, store, @@ -68,6 +74,7 @@ const COMMON_QUERY = { userStates: [], personTypes: [], preparedBys: [], + memberFeePaid: null, } } }, diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/info/group/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/info/group/index.html index b6e569e2..bd0b8c71 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/info/group/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/info/group/index.html @@ -10,6 +10,7 @@ layout("/layouts/platform.html"){ + 一键设置已缴费 导入会员 - + @@ -127,7 +133,7 @@ layout("/layouts/platform.html"){ { prop: "political", label: "政治面貌", width: 120, sortable: true}, { prop: "userState", label: "在职状态", width: 120, sortable: true }, { prop: "personType", label: "教职工类别", width: 120, sortable: true }, - { prop: "preparedBy", label: "编制类别", width: 120, sortable: true }, + { prop: "preparedBy", label: "编制类别", width: 120, sortable: true, checked: 0 }, { prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 }, { prop: "unionName", label: "所属工会", width: 120, sortable: true }, { prop: "unitName", label: "所属单位", width: 120, sortable: true }, @@ -168,6 +174,39 @@ layout("/layouts/platform.html"){ } this.pageData() }, + isMemberFeePaid(row) { + return row.memberFeePaid === true || row.memberFeePaid === 1 || row.memberFeePaid === "1" + }, + toggleMemberFeePaid(row) { + this.$axios.post(loc() + "/toggleMemberFeePaid", { userId: row.id }) + .then((data) => { + if (data.code === 0) { + this.$set(row, "memberFeePaid", data.data) + this.$message.success(data.data ? "已设置为已缴费" : "已设置为未缴费") + } else { + this.$message.error(data.msg) + } + }) + }, + batchSetMemberFeePaid() { + this.$confirm("确认将当前筛选条件下的会员设置为已缴费吗?", "提示", { type: "warning" }) + .then(() => { + const pageForm = clone(this.pageForm) + pageForm.userStates = JSON.stringify(this.pageForm.userStates) + pageForm.personTypes = JSON.stringify(this.pageForm.personTypes) + pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys) + return this.$axios.post(loc() + "/batchSetMemberFeePaid", pageForm) + }) + .then((data) => { + if (data.code === 0) { + this.$message.success("已设置" + data.data + "人") + this.pageData() + } else { + this.$message.error(data.msg) + } + }) + .catch(() => {}) + }, exportMember() { const pageForm = clone(this.pageForm) pageForm.userStates = JSON.stringify(this.pageForm.userStates)