diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyBranchUnionApprovalController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyBranchUnionApprovalController.java index 24b993b..93f5fce 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyBranchUnionApprovalController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyBranchUnionApprovalController.java @@ -1,6 +1,7 @@ package com.budwk.app.zhgh.staffmanage.member.controller.apply; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.result.Result; @@ -64,7 +65,7 @@ public class MemberApplyBranchUnionApprovalController { @At @ApiOperation("会员入会申请分工会审核列表") - @SaCheckPermission("member.apply.branchUnionApproval") + @SaCheckPermission(value = {"member.apply.branchUnionApproval", "h5.member.apply.branchUnionApproval"}, mode = SaMode.OR) public Result pageData(MemberApplyPageForm pageForm) { Sql sql = Sqls.create(""" SELECT @@ -78,6 +79,7 @@ public class MemberApplyBranchUnionApprovalController { info.personType, info.applyDateTime, info.sign, + info.nativePlace, ins.id AS instanceId, ins.businessNo, ins.state instanceState, @@ -125,7 +127,7 @@ public class MemberApplyBranchUnionApprovalController { } else { cnd.orderBy("info." + pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); } - cnd.groupBy("t.id"); + cnd.groupBy("info.id"); sql.setCondition(cnd); Pagination pagination = memberApplyRecordService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); return Result.success(pagination); diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyController.java index 90899d9..e595e77 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyController.java @@ -1,6 +1,7 @@ package com.budwk.app.zhgh.staffmanage.member.controller.apply; 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; @@ -14,6 +15,7 @@ import com.budwk.app.flow.entity.ProcessTask; import com.budwk.app.flow.enums.ProcessSubmitTypeEnum; import com.budwk.app.flow.service.FlowCommonService; import com.budwk.app.sys.models.Sys_union_group; +import com.budwk.app.sys.models.Sys_user; import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.sys.views.View_user; import com.budwk.app.web.commons.auth.utils.SecurityUtil; @@ -70,7 +72,8 @@ public class MemberApplyController { @At @ApiOperation("保存申请") - @SaCheckPermission("member.apply.submit") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"member.apply.submit", "h5.member.apply.submit"}, mode = SaMode.OR) @SLog(tag = "会员入会申请", msg = "保存申请,申请人: ${args[0].username}") public Result save(@Param("data") MemberApplyRecord memberApplyRecord) { if (StrUtil.isBlank(memberApplyRecord.getId())) { @@ -84,7 +87,7 @@ public class MemberApplyController { @At @ApiOperation("提交申请") @Aop(TransAop.READ_COMMITTED) - @SaCheckPermission("member.apply.submit") + @SaCheckPermission(value = {"member.apply.submit", "h5.member.apply.submit"}, mode = SaMode.OR) @SLog(tag = "会员入会申请", msg = "提交申请,申请人: ${args[0].username}") public Result submit(@Param("data") MemberApplyRecord memberApplyRecord){ if (StrUtil.isBlank(memberApplyRecord.getId())) { @@ -123,7 +126,7 @@ public class MemberApplyController { @At @ApiOperation("重新提交申请") @Aop(TransAop.READ_COMMITTED) - @SaCheckPermission("member.apply.submit") + @SaCheckPermission(value = {"member.apply.submit", "h5.member.apply.submit"}, mode = SaMode.OR) @SLog(tag = "会员入会申请", msg = "重新提交申请,申请人: ${args[0].username}") public Result submitAgain(@Param("data") MemberApplyRecord memberApplyRecord, @Param("taskId") Long taskId) { if (StrUtil.isBlank(memberApplyRecord.getId())) { @@ -159,14 +162,58 @@ public class MemberApplyController { */ @At @ApiOperation("根据id查询申请记录") - @SaCheckPermission("member.apply.submit") + @SaCheckPermission(value = {"member.apply.submit", "h5.member.apply.submit"}, mode = SaMode.OR) public Result findApplyById(String id) { return Result.success(dao.fetch(MemberApplyRecord.class,id)); } + /** + * 根据用户id判断是否允许发起入会申请。 + * + * @param id 用户id;前端选择代申请人员时传入该人员id,个人申请时传当前登录用户id + * @return Dict,包含 canApply 是否允许申请、msg 不允许时的提示信息,以及用户基础信息 + */ + @At + @ApiOperation("根据 userid 查询是否能申请入会") + @SaCheckPermission(value = {"member.apply.submit", "h5.member.apply.submit"}, mode = SaMode.OR) + public Result findOne(String id) { + Sys_user user = dao.fetch(Sys_user.class, Cnd.where("id", "=", id)); + if (user == null) { + return Result.error("用户不存在"); + } + + Dict result = Dict.create(); + result.set("id", user.getId()); + result.set("username", user.getUsername()); + result.set("loginname", user.getLoginname()); + + boolean isAlreadyMember = Boolean.TRUE.equals(user.getMember()); + if (isAlreadyMember) { + result.set("canApply", false); + result.set("msg", "您已是工会会员,无需重复申请"); + return Result.success(result); + } + + long doingProcessCount = dao.count(ProcessInstance.class, + Cnd.where("businessNo", "in", + Sqls.create("SELECT id FROM member_apply_record WHERE userId = @userId") + .setParam("userId", id) + ).and("state", "=", 10) + ); + + if (doingProcessCount > 0) { + result.set("canApply", false); + result.set("msg", "您有一份入会申请流程正在审批中,请勿重复提交"); + return Result.success(result); + } + + result.set("canApply", true); + return Result.success(result); + } + @At - @SaCheckPermission("member.apply.submit") + @SaCheckPermission(value = {"member.apply.submit", "h5.member.apply.submit"}, mode = SaMode.OR) public Result getApplyUserByUnionOperate(@Valid String keyWord){ Sql sql = Sqls.create(""" SELECT @@ -195,7 +242,7 @@ public class MemberApplyController { */ @At @ApiOperation("获取当前登录用户信息") - @SaCheckPermission("member.apply.submit") + @SaCheckPermission(value = {"member.apply.submit", "h5.member.apply.submit"}, mode = SaMode.OR) public Result getSelfUserInfo() { return Result.success(dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()))); } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyMineController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyMineController.java index 15b1c14..ccd5df5 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyMineController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyMineController.java @@ -27,6 +27,7 @@ import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; /** @@ -62,7 +63,7 @@ public class MemberApplyMineController { @At @ApiOperation("会员入会申请,我的申请列表") - @SaCheckPermission("member.apply.mine") + @SaCheckPermission(value = {"member.apply.mine", "h5.member.apply.mine"}, mode = SaMode.OR) public Result pageData(MemberApplyPageForm pageForm) { Sql sql = Sqls.create(""" SELECT @@ -76,6 +77,8 @@ public class MemberApplyMineController { info.personType, info.applyDateTime, info.sign, + info.nativePlace, + info.jobCategory, ins.id AS instanceId, ins.businessNo, ins.state instanceState, @@ -90,6 +93,7 @@ public class MemberApplyMineController { t.finishTime, t.taskParentId, t.variable taskVariable, + GROUP_CONCAT(DISTINCT ta.actorName, '(', ta.actorAccount, ')' ) AS auditUser, IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke, (select MAX(id) from wf_process_task where processInstanceId = ins.id and taskName = 'startTask' AND taskState in (10,20)) AS startTaskId FROM @@ -113,7 +117,7 @@ public class MemberApplyMineController { } else { cnd.orderBy("info." + pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); } - cnd.groupBy("t.id"); + cnd.groupBy("info.id"); sql.setCondition(cnd); Pagination pagination = memberCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); return Result.success().addData(pagination); @@ -123,7 +127,7 @@ public class MemberApplyMineController { @At @ApiOperation("删除入会申请") @Aop(TransAop.READ_COMMITTED) - @SaCheckPermission("member.apply.mine") + @SaCheckPermission(value = {"member.apply.mine", "h5.member.apply.mine"}, mode = SaMode.OR) @SLog(tag = "会员入会申请", msg = "删除入会申请id: ${args[0]}") public Result onDelete(@Valid String id) { dao.clear(MemberApplyRecord.class, Cnd.where("id", "=", id)); @@ -140,9 +144,22 @@ public class MemberApplyMineController { */ @At @ApiOperation("获取申请信息") - @SaCheckPermission(value = {"member.apply.mine", "member.apply.branchUnionApproval", "member.apply.branchUnionApproval", "member.apply.statistics"}, mode = SaMode.OR) + @SaCheckPermission(value = {"member.apply.mine", "h5.member.apply.mine", "member.apply.query", "member.apply.branchUnionApproval", "h5.member.apply.branchUnionApproval", "member.apply.schoolUnionApproval", "h5.member.apply.schoolunionapproval", "member.apply.unionGroupApproval", "h5.member.apply.uniongroupapproval"}, mode = SaMode.OR) public Result findMemberApplyRecord(@Valid String id) { MemberApplyRecord record = dao.fetch(MemberApplyRecord.class, id); return Result.success().addData(record); } + + /** + * 导出入会申请表。 + * + * @param id 入会申请记录id + * @param response docx 文件下载响应 + */ + @At + @Ok("void") + @SaCheckPermission(value = {"member.apply.mine", "h5.member.apply.mine", "member.apply.query", "member.apply.branchUnionApproval", "h5.member.apply.branchUnionApproval", "member.apply.schoolUnionApproval", "h5.member.apply.schoolunionapproval", "member.apply.unionGroupApproval", "h5.member.apply.uniongroupapproval"}, mode = SaMode.OR) + public void exportApplyDocx(String id, HttpServletResponse response) { + memberCommonService.exportApplyDocx(id, response); + } } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplySchoolUnionApprovalController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplySchoolUnionApprovalController.java index eb5377c..d906c19 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplySchoolUnionApprovalController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplySchoolUnionApprovalController.java @@ -1,6 +1,7 @@ package com.budwk.app.zhgh.staffmanage.member.controller.apply; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.annotation.SLog; @@ -78,7 +79,7 @@ public class MemberApplySchoolUnionApprovalController { @At @ApiOperation("会员入会校工会审核列表") - @SaCheckPermission("member.apply.schoolUnionApproval") + @SaCheckPermission(value = {"member.apply.schoolUnionApproval", "h5.member.apply.schoolunionapproval"}, mode = SaMode.OR) public Result pageData(MemberApplyPageForm pageForm) { Sql sql = Sqls.create(""" SELECT @@ -93,6 +94,7 @@ public class MemberApplySchoolUnionApprovalController { info.origin, info.applyDateTime, info.sign, + info.nativePlace, ins.id AS instanceId, ins.businessNo, ins.state instanceState, @@ -138,7 +140,7 @@ public class MemberApplySchoolUnionApprovalController { } else { cnd.orderBy("info." + pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); } - cnd.groupBy("t.id"); + cnd.groupBy("info.id"); sql.setCondition(cnd); Pagination pagination = memberApplyRecordService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); return Result.success(pagination); diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyUnionGroupApprovalController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyUnionGroupApprovalController.java index 4e5d390..e9ae987 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyUnionGroupApprovalController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyUnionGroupApprovalController.java @@ -1,6 +1,7 @@ package com.budwk.app.zhgh.staffmanage.member.controller.apply; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.result.Result; @@ -53,7 +54,7 @@ public class MemberApplyUnionGroupApprovalController { @At @ApiOperation("会员入会申请工会小组审核列表") - @SaCheckPermission("member.apply.unionGroupApproval") + @SaCheckPermission(value = {"member.apply.unionGroupApproval", "h5.member.apply.uniongroupapproval"}, mode = SaMode.OR) public Result pageData(MemberApplyPageForm pageForm) { Sql sql = Sqls.create(""" SELECT diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/statistics/MemberApplyRecordStatisticsController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/statistics/MemberApplyRecordStatisticsController.java deleted file mode 100644 index 2e879d4..0000000 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/statistics/MemberApplyRecordStatisticsController.java +++ /dev/null @@ -1,205 +0,0 @@ -package com.budwk.app.zhgh.staffmanage.member.controller.statistics; - -import cn.afterturn.easypoi.excel.ExcelExportUtil; -import cn.afterturn.easypoi.excel.entity.ExportParams; -import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; -import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; -import cn.dev33.satoken.annotation.SaCheckPermission; -import cn.hutool.core.util.StrUtil; -import com.budwk.app.base.constant.RoleConstant; -import com.budwk.app.base.page.Pagination; -import com.budwk.app.base.result.Result; -import com.budwk.app.base.utils.CommonDownloadUtil; -import com.budwk.app.base.utils.PageUtil; -import com.budwk.app.web.commons.auth.utils.AuthUtil; -import com.budwk.app.web.commons.auth.utils.SecurityUtil; -import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberApplyRecordStatisticsPageForm; -import com.budwk.app.zhgh.staffmanage.member.service.MemberApplyRecordService; -import com.budwk.app.zhgh.staffmanage.member.vo.MemberApplyRecordStatisticsVO; -import org.apache.poi.ss.usermodel.Workbook; -import org.nutz.dao.Cnd; -import org.nutz.dao.Sqls; -import org.nutz.dao.sql.Sql; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.Lang; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; - -import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 会员申请记录查询统计。 - */ -@At("/platform/member/apply/statistics") -@Ok("json:full") -@IocBean -public class MemberApplyRecordStatisticsController { - - private static final Map ORDER_COLUMN_MAP; - - static { - Map orderColumnMap = new HashMap<>(); - orderColumnMap.put("loginName", "info.loginName"); - orderColumnMap.put("userName", "info.userName"); - orderColumnMap.put("unitName", "info.unitName"); - orderColumnMap.put("unionName", "info.unionName"); - orderColumnMap.put("userState", "info.userState"); - orderColumnMap.put("preparedBy", "info.preparedBy"); - orderColumnMap.put("personType", "info.personType"); - orderColumnMap.put("origin", "info.origin"); - orderColumnMap.put("applyDateTime", "info.applyDateTime"); - orderColumnMap.put("instanceState", "ins.state"); - ORDER_COLUMN_MAP = Collections.unmodifiableMap(orderColumnMap); - } - - @Inject - private MemberApplyRecordService memberApplyRecordService; - - @At("") - @Ok("beetl:/platform/zhgh/staffmanage/member/statistics/applyRecord/index.html") - @SaCheckPermission("member.apply.statistics") - public void index() { - } - - /** - * 分页查询会员申请记录统计。 - * - * @param pageForm 查询参数:searchKeyword 传姓名/工号关键字,unionId/unitId 传工会和单位ID数组, - * userStates/personTypes/preparedBys 传人员字典值数组,instanceStates 传流程状态 code 数组, - * startApplyDate/endApplyDate 传申请日期范围;分页和排序使用 PageForm 公共字段 - * @return Result 包装的 Pagination,list 为申请记录,totalCount 为总条数 - */ - @At - @SaCheckPermission("member.apply.statistics") - public Result pageData(MemberApplyRecordStatisticsPageForm pageForm) { - Sql sql = getApplyRecordSql(pageForm); - Pagination pagination = memberApplyRecordService.listPageVO( - pageForm, sql, MemberApplyRecordStatisticsVO.class - ); - return Result.success(pagination); - } - - /** - * 导出会员申请记录统计。 - * - * @param pageForm 查询和导出参数:columns 为前端选择的导出列,prop 对应 MemberApplyRecordStatisticsVO 属性, - * label 为 Excel 表头;其他筛选参数与 pageData 保持一致 - * @param response 文件下载响应,返回 xlsx 格式 Excel 文件 - */ - @At - @Ok("void") - @SaCheckPermission("member.apply.statistics") - public void doExport(MemberApplyRecordStatisticsPageForm pageForm, HttpServletResponse response) { - Sql sql = getApplyRecordSql(pageForm); - List list = memberApplyRecordService.listVO(sql, MemberApplyRecordStatisticsVO.class); - try { - List exportEntities = buildExportColumns(pageForm); - ExportParams exportParams = new ExportParams(); - exportParams.setType(ExcelType.XSSF); - Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list); - CommonDownloadUtil.download("会员申请记录统计.xlsx", workbook, response); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 构建申请记录统计 SQL,当前节点先在子查询中合并,避免一个申请存在多个待办时重复展示。 - */ - private Sql getApplyRecordSql(MemberApplyRecordStatisticsPageForm pageForm) { - Sql sql = Sqls.create("SELECT " + - "info.id, " + - "info.userName, " + - "info.loginName, " + - "info.unitName, " + - "info.unionName, " + - "info.userState, " + - "info.preparedBy, " + - "info.personType, " + - "info.origin, " + - "info.applyDateTime, " + - "CASE WHEN info.sign IS NOT NULL AND info.sign != '' THEN '已签字' ELSE '未签字' END signState, " + - "ins.id AS instanceId, " + - "ins.businessNo, " + - "ins.state AS instanceState, " + - "CASE ins.state " + - "WHEN 10 THEN '进行中' " + - "WHEN 20 THEN '已完成' " + - "WHEN 30 THEN '已撤回' " + - "WHEN 40 THEN '强行终止' " + - "WHEN 45 THEN '已拒绝' " + - "WHEN 50 THEN '挂起' " + - "WHEN 99 THEN '已废弃' " + - "ELSE '未知' END AS instanceStateName, " + - "ins.processDefineId AS instanceProcessDefineId, " + - "IFNULL(nt.curTaskName, '结束') AS curTaskName " + - "FROM member_apply_record info " + - "LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id " + - "LEFT JOIN (SELECT processInstanceId, GROUP_CONCAT(DISTINCT displayName) AS curTaskName " + - "FROM wf_process_task WHERE taskState = 10 GROUP BY processInstanceId) nt ON nt.processInstanceId = ins.id " + - "$condition"); - Cnd cnd = Cnd.NEW(); - MemberApplyRecordStatisticsPageForm.buildSearch(cnd, pageForm); - buildDataScope(cnd); - buildOrder(cnd, pageForm); - sql.setCondition(cnd); - return sql; - } - - /** - * 按当前登录人的角色补充数据范围,避免普通用户通过统计入口看到无权限的申请记录。 - */ - private void buildDataScope(Cnd cnd) { - if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_MEMBER_ADMIN.name())) { - if (AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) { - cnd.and("info.unionId", "=", SecurityUtil.getUnionId()); - } else { - cnd.and("info.userId", "=", SecurityUtil.getUserId()); - } - } - } - - /** - * 仅允许前端按白名单字段排序,避免页面排序字段被拼接成非预期 SQL。 - */ - private void buildOrder(Cnd cnd, MemberApplyRecordStatisticsPageForm pageForm) { - if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy()) - && ORDER_COLUMN_MAP.containsKey(pageForm.getPageOrderName())) { - cnd.orderBy(ORDER_COLUMN_MAP.get(pageForm.getPageOrderName()), PageUtil.getOrder(pageForm.getPageOrderBy())); - } else { - cnd.desc("info.applyDateTime"); - } - } - - /** - * 生成导出列;前端未传列设置时,使用申请记录统计的默认核心字段。 - */ - private List buildExportColumns(MemberApplyRecordStatisticsPageForm pageForm) { - List exportEntities = new ArrayList<>(); - if (Lang.isNotEmpty(pageForm.getColumns())) { - pageForm.getColumns().forEach(column -> { - exportEntities.add(new ExcelExportEntity(column.get("label"), column.get("prop"), 20)); - }); - return exportEntities; - } - exportEntities.add(new ExcelExportEntity("工号", "loginName", 20)); - exportEntities.add(new ExcelExportEntity("姓名", "userName", 20)); - exportEntities.add(new ExcelExportEntity("所属工会", "unionName", 20)); - exportEntities.add(new ExcelExportEntity("所属单位", "unitName", 20)); - exportEntities.add(new ExcelExportEntity("在职状态", "userState", 20)); - exportEntities.add(new ExcelExportEntity("教职工类别", "personType", 20)); - exportEntities.add(new ExcelExportEntity("编制类别", "preparedBy", 20)); - exportEntities.add(new ExcelExportEntity("来源", "origin", 20)); - exportEntities.add(new ExcelExportEntity("申请时间", "applyDateTime", 25)); - exportEntities.add(new ExcelExportEntity("签字状态", "signState", 20)); - exportEntities.add(new ExcelExportEntity("当前节点", "curTaskName", 20)); - exportEntities.add(new ExcelExportEntity("流程状态", "instanceStateName", 20)); - return exportEntities; - } -} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/models/MemberApplyRecord.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/models/MemberApplyRecord.java index d30f06b..7c90305 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/models/MemberApplyRecord.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/models/MemberApplyRecord.java @@ -182,6 +182,16 @@ public class MemberApplyRecord extends BaseModel { @ColDefine(type = ColType.VARCHAR, customType = "text") private String personalData; + @Column + @Comment("特长及获奖情况") + @ColDefine(type = ColType.VARCHAR, customType = "text") + private String specialty; + + @Column + @Comment("婚姻状况") + @ColDefine(type = ColType.VARCHAR, width = 20) + private String marriage; + @Column @Comment("备注") @ColDefine(type = ColType.VARCHAR, width = 255) @@ -223,8 +233,33 @@ public class MemberApplyRecord extends BaseModel { @ColDefine(type = ColType.VARCHAR, width = 100) private String sign; + @Column + @Comment("照片") + @ColDefine(type = ColType.VARCHAR, width = 500) + private String photo; + @Column @Comment("来源,高校编码") @ColDefine(type = ColType.VARCHAR, width = 50) private String origin; + + @Column + @Comment("家庭住址") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String homeAddress; + + @Column + @Comment("来校时间") + @ColDefine(type = ColType.VARCHAR, width = 10) + private String arrivalAtSchoolDate; + + @Column + @Comment("籍贯") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String nativePlace; + + @Column + @Comment("岗位名称") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String jobCategory; } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberApplyRecordStatisticsPageForm.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberApplyRecordStatisticsPageForm.java deleted file mode 100644 index 8a90717..0000000 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberApplyRecordStatisticsPageForm.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.budwk.app.zhgh.staffmanage.member.param.pageform; - -import cn.hutool.core.util.StrUtil; -import com.budwk.app.base.param.PageForm; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.nutz.dao.Cnd; -import org.nutz.dao.util.cri.SqlExpressionGroup; - -import java.util.List; -import java.util.Map; - -/** - * 会员申请记录统计查询参数。 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class MemberApplyRecordStatisticsPageForm extends PageForm { - - @ApiModelProperty("所属工会ID,多个值由前端数组提交") - private List unionId; - - @ApiModelProperty("所属单位ID,多个值由前端数组提交") - private List unitId; - - @ApiModelProperty("在职状态字典值,多个值由前端数组提交") - private List userStates; - - @ApiModelProperty("教职工类别字典值,多个值由前端数组提交") - private List personTypes; - - @ApiModelProperty("编制类别字典值,多个值由前端数组提交") - private List preparedBys; - - @ApiModelProperty("流程实例状态,使用 ProcessInstanceStateEnum 的 code") - private List instanceStates; - - @ApiModelProperty("申请开始时间,格式 yyyy-MM-dd") - private String startApplyDate; - - @ApiModelProperty("申请结束时间,格式 yyyy-MM-dd") - private String endApplyDate; - - @ApiModelProperty("导出列,字段 prop 对应 VO 属性,label 为 Excel 表头") - private List> columns; - - /** - * 组装申请记录统计的公共查询条件。 - * - * @param cnd SQL 条件对象,由调用方继续追加权限、排序等条件 - * @param pageForm 查询参数,包含姓名/工号关键字、工会、单位、人员类别、申请时间和流程状态 - */ - public static void buildSearch(Cnd cnd, MemberApplyRecordStatisticsPageForm pageForm) { - if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { - SqlExpressionGroup seg = new SqlExpressionGroup(); - seg.or("info.loginName", "like", "%" + pageForm.getSearchKeyword() + "%"); - seg.or("info.username", "like", "%" + pageForm.getSearchKeyword() + "%"); - cnd.and(seg); - } - cnd.andEX("info.unionId", "in", pageForm.getUnionId()); - cnd.andEX("info.unitId", "in", pageForm.getUnitId()); - cnd.andEX("info.userState", "in", pageForm.getUserStates()); - cnd.andEX("info.personType", "in", pageForm.getPersonTypes()); - cnd.andEX("info.preparedBy", "in", pageForm.getPreparedBys()); - cnd.andEX("ins.state", "in", pageForm.getInstanceStates()); - if (StrUtil.isNotBlank(pageForm.getStartApplyDate())) { - cnd.and("info.applyDateTime", ">=", pageForm.getStartApplyDate() + " 00:00:00"); - } - if (StrUtil.isNotBlank(pageForm.getEndApplyDate())) { - cnd.and("info.applyDateTime", "<=", pageForm.getEndApplyDate() + " 23:59:59"); - } - } -} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberCommonService.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberCommonService.java index 4b2879d..1f026b0 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberCommonService.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberCommonService.java @@ -10,6 +10,7 @@ import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberManagePageForm import org.nutz.dao.sql.Sql; import org.nutz.lang.util.NutMap; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -115,4 +116,12 @@ public interface MemberCommonService extends BaseService { * @param type 类型: apply or change */ void validateApplyOrChangeIsDoing(String userId, String type); + + /** + * 导出会员入会申请表。 + * + * @param id 入会申请记录id + * @param response docx 文件下载响应 + */ + void exportApplyDocx(String id, HttpServletResponse response); } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java index e93ca2f..ddeaec3 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java @@ -3,6 +3,7 @@ package com.budwk.app.zhgh.staffmanage.member.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HtmlUtil; @@ -10,9 +11,12 @@ import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.exception.BaseException; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.base.utils.SysOfficeTemplateUtil; import com.budwk.app.flow.engine.FlowEngine; import com.budwk.app.flow.entity.ProcessInstance; +import com.budwk.app.flow.entity.ProcessTask; import com.budwk.app.flow.enums.ProcessTaskStateEnum; +import com.budwk.app.flow.vo.ProcessTaskVO; import com.budwk.app.sys.models.*; import com.budwk.app.sys.services.SysDictService; import com.budwk.app.sys.services.SysRoleService; @@ -29,7 +33,19 @@ import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberManagePageForm import com.budwk.app.zhgh.staffmanage.member.service.MemberCommonService; import com.budwk.app.zhgh.staffmanage.specialstaff.model.SpecialStaff; import com.budwk.app.zhgh.welfare.model.WelfareList; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.util.Units; +import org.apache.poi.xwpf.usermodel.LineSpacingRule; +import org.apache.poi.xwpf.usermodel.ParagraphAlignment; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.apache.poi.xwpf.usermodel.XWPFRun; +import org.apache.poi.xwpf.usermodel.XWPFTable; +import org.apache.poi.xwpf.usermodel.XWPFTableCell; +import org.apache.poi.xwpf.usermodel.XWPFTableRow; +import org.ddr.poi.html.HtmlRenderPolicy; import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Chain; import org.nutz.dao.Cnd; @@ -45,7 +61,12 @@ import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.Lang; import org.nutz.lang.random.R; import org.nutz.lang.util.NutMap; +import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDrawing; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @@ -61,12 +82,23 @@ import java.util.stream.Collectors; @Slf4j public class MemberManageServiceImpl extends BaseServiceImpl implements MemberCommonService { + private static final int MEMBER_APPLY_PHOTO_WIDTH_PIXEL = 100; + private static final int MEMBER_APPLY_PHOTO_HEIGHT_PIXEL = 140; + private static final int MEMBER_APPLY_PHOTO_WIDTH_EMU = Units.pixelToEMU(MEMBER_APPLY_PHOTO_WIDTH_PIXEL); + private static final int MEMBER_APPLY_PHOTO_HEIGHT_EMU = Units.pixelToEMU(MEMBER_APPLY_PHOTO_HEIGHT_PIXEL); + private static final int MEMBER_APPLY_PHOTO_SIZE_TOLERANCE_EMU = Units.pixelToEMU(2); + private static final double MEMBER_APPLY_PHOTO_PARAGRAPH_LINE_POINT = MEMBER_APPLY_PHOTO_HEIGHT_PIXEL * 0.75D; + @Inject private SysDictService sysDictService; @Inject private SysRoleService sysRoleService; @Inject private SysUserService sysUserService; + @Inject + private FlowEngine flowEngine; + @Inject + private SysOfficeTemplateUtil sysOfficeTemplateUtil; public MemberManageServiceImpl(Dao dao) { super(dao); @@ -566,4 +598,208 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement } return value.toString(); } + + @Override + public void exportApplyDocx(String id, HttpServletResponse response) { + MemberApplyRecord member = dao().fetch(MemberApplyRecord.class, Cnd.where("id", "=", id)); + if (member == null) { + throw new RuntimeException("会员申请记录不存在"); + } + + Sql sql = Sqls.create(""" + SELECT + info.*, + ins.id AS instanceId + FROM + `member_apply_record` info + LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id + WHERE + info.id = @id + """).setParam("id", id); + sql.setCallback(Sqls.callback.map()); + dao().execute(sql); + NutMap info = (NutMap) sql.getResult(); + + HashMap docData = new HashMap<>(); + docData.put("unitName", member.getUnitName()); + docData.put("time", DateUtil.format(new Date(), "yyyy年MM月dd日")); + docData.put("username", member.getUsername()); + docData.put("sex", member.getSex()); + docData.put("birthday", StrUtil.isNotBlank(member.getBirthday()) ? DateUtil.parse(member.getBirthday()).toString("yyyy-MM-dd") : ""); + docData.put("political", member.getPolitical()); + docData.put("nation", member.getNation()); + docData.put("education", member.getEducation()); + docData.put("nativePlace", member.getNativePlace()); + docData.put("marriage", member.getMarriage()); + docData.put("specialty", buildMemberApplyDocHtml(member.getSpecialty())); + docData.put("jobCategory", member.getJobCategory()); + docData.put("idCard", member.getIdCard()); + docData.put("mobile", member.getMobile()); + docData.put("arrivalAtSchoolDate", StrUtil.isNotBlank(member.getArrivalAtSchoolDate()) ? DateUtil.parse(member.getArrivalAtSchoolDate()).toString("yyyy-MM-dd") : ""); + docData.put("homeAddress", member.getHomeAddress()); + docData.put("personalData", buildMemberApplyDocHtml(member.getPersonalData())); + docData.put("photo", sysOfficeTemplateUtil.createPictureRenderData(MEMBER_APPLY_PHOTO_WIDTH_PIXEL, MEMBER_APPLY_PHOTO_HEIGHT_PIXEL, member.getPhoto())); + docData.put("sign", sysOfficeTemplateUtil.createPictureRenderData(member.getSign())); + docData.put("applyDateTime", member.getApplyDateTime() != null ? DateUtil.format(member.getApplyDateTime(), "yyyy年MM月dd日") : ""); + + // 将家庭成员数组合并为模板中的多行文本。 + if (member.getFamilies() != null && !member.getFamilies().isEmpty()) { + StringBuilder familyStr = new StringBuilder(); + for (int i = 0; i < member.getFamilies().size(); i++) { + NutMap fam = NutMap.WRAP(member.getFamilies().get(i)); + familyStr.append((i + 1)).append(". ") + .append("关系:").append(StrUtil.nullToDefault(fam.getString("relation"), "无")).append(", ") + .append("姓名:").append(StrUtil.nullToDefault(fam.getString("name"), "无")).append(", ") + .append("单位:").append(StrUtil.nullToDefault(fam.getString("unit"), "无")).append(", ") + .append("备注:").append(StrUtil.nullToDefault(fam.getString("remark"), "无")).append("\n"); + } + docData.put("familiesStr", familyStr.toString()); + } else { + docData.put("familiesStr", "无"); + } + + List doneTaskVos = new ArrayList<>(); + Long instanceId = info.getLong("instanceId"); + if (instanceId != null) { + List doneTaskList = flowEngine.processTaskService().getDoneTaskList(instanceId, null); + for (ProcessTask doneTask : doneTaskList) { + ProcessTaskVO taskVO = flowEngine.processTaskService().findById(doneTask.getId()); + doneTaskVos.add(taskVO); + } + } + + // 提取分工会和校工会最后一次审核意见,填充到申请表模板对应区块。 + doneTaskVos.stream().filter(task -> "分工会审核".equals(task.getDisplayName())) + .max(Comparator.comparing(ProcessTaskVO::getCreatedAt)) + .ifPresent(v -> putMemberApplyApproval(docData, "fgh", v)); + doneTaskVos.stream().filter(task -> "校工会审核".equals(task.getDisplayName())) + .max(Comparator.comparing(ProcessTaskVO::getCreatedAt)) + .ifPresent(v -> putMemberApplyApproval(docData, "xgh", v)); + + String fileName = "会员入会申请表_" + member.getUsername() + "_" + DateUtil.format(new Date(), "yyyyMMdd") + ".docx"; + response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8)); + + HtmlRenderPolicy htmlRenderPolicy = new HtmlRenderPolicy(); + htmlRenderPolicy.getConfig().setShowDefaultTableBorderInTableCell(true); + Configure config = Configure.builder() + .bind("personalData", htmlRenderPolicy) + .bind("specialty", htmlRenderPolicy) + .build(); + try { + XWPFTemplate template = XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate("member_apply_form"), config) + .render(docData); + resizeMemberApplyPhotoRow(template.getXWPFDocument()); + template.write(response.getOutputStream()); + } catch (Exception e) { + log.error("导出会员入会申请表失败,ID: {}, 错误信息: {}", id, e.getMessage()); + throw new RuntimeException("导出文件失败", e); + } + } + + /** + * 将流程办理意见转换为模板可渲染的审核信息。 + */ + private void putMemberApplyApproval(HashMap docData, String key, ProcessTaskVO taskVO) { + Dict taskFormData = taskVO.getTaskFormData(); + HashMap approval = new HashMap<>(); + approval.put("date", taskVO.getFinishTime() != null ? DateUtil.format(taskVO.getFinishTime(), "yyyy年MM月dd日") : ""); + approval.put("user", taskFormData != null ? taskFormData.getStr("tf_userName") : ""); + if (taskFormData != null && StrUtil.isNotBlank(taskFormData.getStr("tf_sign"))) { + approval.put("sign", sysOfficeTemplateUtil.createPictureRenderData(taskFormData.getStr("tf_sign"))); + } + approval.put("opinion", taskFormData != null ? taskFormData.getStr("tf_opinion") : ""); + docData.put(key, approval); + } + + /** + * 入会申请导出时统一转为 HTML 片段,历史富文本保留样式,普通文本保留换行。 + */ + private String buildMemberApplyDocHtml(String text) { + if (StrUtil.isBlank(text)) { + return ""; + } + String docText = sysOfficeTemplateUtil.convertRichTextToDocText(text); + if (containsHtmlTag(docText)) { + return docText; + } + String escapeText = HtmlUtil.escape(docText) + .replace("\r\n", "\n") + .replace("\r", "\n") + .replace("\n", "
"); + return "

" + escapeText + "

"; + } + + /** + * 判断内容是否包含 HTML 标签,避免把历史富文本当普通文本转义。 + */ + private boolean containsHtmlTag(String text) { + return StrUtil.isNotBlank(text) && text.matches("(?s).*<\\s*[a-zA-Z][^>]*>.*"); + } + + /** + * 保证导出的会员照片行足够高,避免 Word 裁剪默认内联图片。 + */ + private void resizeMemberApplyPhotoRow(XWPFDocument document) { + if (document == null) { + return; + } + for (XWPFTable table : document.getTables()) { + for (XWPFTableRow row : table.getRows()) { + adjustMemberApplyPhotoParagraph(row); + } + } + } + + /** + * 只匹配会员照片尺寸,避免影响签字图片。 + */ + private boolean adjustMemberApplyPhotoParagraph(XWPFTableRow row) { + if (row == null) { + return false; + } + boolean found = false; + for (XWPFTableCell cell : row.getTableCells()) { + for (XWPFParagraph paragraph : cell.getParagraphs()) { + for (XWPFRun run : paragraph.getRuns()) { + if (runContainsMemberApplyPhoto(run)) { + adjustMemberApplyPhotoParagraphStyle(paragraph); + found = true; + } + } + } + } + return found; + } + + /** + * 调整照片所在段落,确保图片在合并单元格中完整可见。 + */ + private void adjustMemberApplyPhotoParagraphStyle(XWPFParagraph paragraph) { + paragraph.setAlignment(ParagraphAlignment.CENTER); + paragraph.setSpacingBefore(0); + paragraph.setSpacingAfter(0); + paragraph.setSpacingBeforeLines(0); + paragraph.setSpacingAfterLines(0); + paragraph.setSpacingBetween(MEMBER_APPLY_PHOTO_PARAGRAPH_LINE_POINT, LineSpacingRule.AT_LEAST); + } + + private boolean runContainsMemberApplyPhoto(XWPFRun run) { + if (run == null || run.getCTR() == null) { + return false; + } + for (CTDrawing drawing : run.getCTR().getDrawingArray()) { + for (CTInline inline : drawing.getInlineArray()) { + if (inline.getExtent() != null && isMemberApplyPhotoSize(inline.getExtent().getCx(), inline.getExtent().getCy())) { + return true; + } + } + } + return false; + } + + private boolean isMemberApplyPhotoSize(long widthEmu, long heightEmu) { + return Math.abs(widthEmu - MEMBER_APPLY_PHOTO_WIDTH_EMU) <= MEMBER_APPLY_PHOTO_SIZE_TOLERANCE_EMU + && Math.abs(heightEmu - MEMBER_APPLY_PHOTO_HEIGHT_EMU) <= MEMBER_APPLY_PHOTO_SIZE_TOLERANCE_EMU; + } } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/vo/MemberApplyRecordStatisticsVO.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/vo/MemberApplyRecordStatisticsVO.java deleted file mode 100644 index ab4efb3..0000000 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/vo/MemberApplyRecordStatisticsVO.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.budwk.app.zhgh.staffmanage.member.vo; - -import lombok.Data; - -import java.util.Date; - -/** - * 会员申请记录统计返回数据。 - */ -@Data -public class MemberApplyRecordStatisticsVO { - - private String id; - - private String userName; - - private String loginName; - - private String unitName; - - private String unionName; - - private String userState; - - private String preparedBy; - - private String personType; - - private String origin; - - private Date applyDateTime; - - private String signState; - - private String instanceId; - - private String businessNo; - - private Integer instanceState; - - private String instanceStateName; - - private String instanceProcessDefineId; - - private String curTaskName; -} diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/branchunionapproval/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/branchunionapproval/index.html index 6bfc81b..ee4bd11 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/branchunionapproval/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/branchunionapproval/index.html @@ -2,93 +2,98 @@ layout("/layouts/platform.html"){ #-->
- - - - - - - - 已审核 - 未审核 - - - - - - - - - - - - - - - + + + + + + + + 已审核 + 未审核 + + + + + + + + + + + + + + + - + - +
diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/form.html b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/form.html index fc19081..18f29b5 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/form.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/form.html @@ -174,12 +174,7 @@ v-model="formData.isVoluntary">
- 我自愿申请加入学校工会,并委托学校按规定代为扣缴工会会员会费。 - -
-
- - 我将严格遵守工会章程,认真执行工会决议,积极参与工会活动,主动融入“学校健康幸福家”建设,为营造温暖、和谐、奋进的校园氛围贡献力量,以实际行动助力学校各项事业发展。 + 我自愿加入中华全国总工会,遵守工会章程,执行工会决议,积极参加工会活动,为把我国建设成为富强、民主、文明的社会主义国家而努力奋斗。
@@ -367,26 +362,83 @@ handleCancel() { }, - async validateApply() { + validateApply() { if (this.formData.id) { return } - // const resp = await $.post('/platform/member/apply/submit/validateApply') - // if (resp.code === 0 && resp.data > 0) { - // this.$confirm("您有其他入会流程正在进行中,请勿重复申请,如需查看详情,可前往我的申请界面,是否前往?", "提示", { type: "warning" }) - // .then(() => { - // this.member = true - // this.$store.dispatch("pjaxRoute", "/platform/member/apply/mine") - // }) - // .catch(() => { - // this.member = true - // }) - // } }, - async init() { + init() { let user - const resp = await $.post('/platform/member/apply/submit/getSelfUserInfo') - if (resp.code === 0) { + $.post("/platform/member/apply/submit/getSelfUserInfo", {}) + .then((resp) => { + if (resp.code === 0 && resp.data) { + user = resp.data + } else { + user = this.$store.state.user + } + this.member = user.member + if (this.id) { + this.$axios.post("/platform/member/apply/submit/findApplyById", { id: this.id }).then((res) => { + if (res.code === 0) { + this.formData = res.data + } + }) + return + } + const { + id, + username, + loginname, + sex, + nation, + birthday, + political, + education, + academicDegree, + position, + unitId, + unitName, + unit, + unionId, + unionName, + union, + campus, + userState, + personType, + idCard, + mobile, + email, + families, + personalData + } = user + + this.$set(this.formData, "userId", id) + this.$set(this.formData, "username", username) + this.$set(this.formData, "loginname", loginname) + this.$set(this.formData, "birthday", birthday) + this.$set(this.formData, "sex", sex) + this.$set(this.formData, "idCard", idCard) + this.$set(this.formData, "nation", nation) + this.$set(this.formData, "political", political) + this.$set(this.formData, "position", position) + this.$set(this.formData, "education", education) + this.$set(this.formData, "academicDegree", academicDegree) + this.$set(this.formData, "campus", campus) + this.$set(this.formData, "userState", userState) + this.$set(this.formData, "personType", personType) + this.$set(this.formData, "unitName", unit ? unit.name : unitName) + this.$set(this.formData, "unitId", unit ? unit.id : unitId) + this.$set(this.formData, "unionName", union ? union.name : unionName) + this.$set(this.formData, "unionId", union ? union.id : unionId) + + this.$set(this.formData, "mobile", mobile) + this.$set(this.formData, "email", email) + this.$set(this.formData, "families", families ? families : []) + this.$set(this.formData, "personalData", personalData) + }) + .always(() => { + }) + /*if (resp.code === 0) { if (!resp.data) { user = this.$store.state.user } else { @@ -455,12 +507,15 @@ this.$set(this.formData, "families", families ? families : []) this.$set(this.formData, "personalData", personalData) } + */ }, }, - async created() { + created() { this.init() - this.units = await this.$businessTool.listUnit() - await this.validateApply() + this.$businessTool.listUnit().then((data) => { + this.units = data + }) + this.validateApply() } }) diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/index.html index 0aa53f1..7571eca 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/submit/index.html @@ -2,439 +2,536 @@ layout("/layouts/platform.html"){ #-->
- - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + 男性 + 女性 + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - -
- - 我自愿申请加入学校工会,并委托学校按规定代为扣缴工会会员会费。 + + + + + + + + + + + + + + + + + + + + + + +
+ + 我自愿加入中华全国总工会,遵守工会章程,执行工会决议,积极参加工会活动,为把我国建设成为富强、民主、文明的社会主义国家而努力奋斗。 -
-
- - 我将严格遵守工会章程,认真执行工会决议,积极参与工会活动,主动融入“学校健康幸福家”建设,为营造温暖、和谐、奋进的校园氛围贡献力量,以实际行动助力学校各项事业发展。 - -
-
-
-
- - - - - - - - - - 保存 - 提交 - 提交 - - +
+
+
+
+
+
+ + 保存 + 提交 + 提交 + +
- - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - + - - - - - - - + - -
-
-
-
- 家庭主要成员及联系方式 -
-
- -
- - -
-
+ + + + + + + + + + + + + + + + + + + + + - - - + + + + + +
- - -
+ +
+
+
+
+ 家庭主要成员及联系方式 +
+
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
- 我自愿申请加入学校工会,并委托学校按规定代为扣缴工会会员会费。 + 我自愿加入中华全国总工会,遵守工会章程,执行工会决议,积极参加工会活动,为把我国建设成为富强、民主、文明的社会主义国家而努力奋斗。 -
-
- - 我将严格遵守工会章程,认真执行工会决议,积极参与工会活动,主动融入“学校健康幸福家”建设,为营造温暖、和谐、奋进的校园氛围贡献力量,以实际行动助力学校各项事业发展。 - -
-
-
-
- 保存 - 提交 - 提交 -
- +
+
+
+
+ 保存 + 提交 + 提交 +
+