From e4485d7b027e8deac11ad39651423db0203d5bb9 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Thu, 13 Aug 2026 08:39:26 +0800 Subject: [PATCH] commit --- .../controller/FlowTodoCenterController.java | 39 +- .../app/flow/entity/ProcessInstance.java | 5 + .../budwk/app/flow/entity/ProcessTask.java | 5 + .../app/sys/controller/SysHomeController.java | 13 +- .../app/sys/controller/SysRoleController.java | 22 +- .../sys/controller/SysUnionController.java | 23 +- .../app/sys/services/SysUnitService.java | 11 + .../app/sys/services/SysUserService.java | 9 + .../sys/services/impl/SysUnitServiceImpl.java | 19 + .../sys/services/impl/SysUserServiceImpl.java | 111 ++- ...roposalQueryCollectProgressController.java | 19 + .../ProposalQueryComprehensiveController.java | 126 +-- .../ProposalQueryDelegationController.java | 86 +-- .../ProposalQueryUnitReplyController.java | 139 +--- .../ProposalQueryYearReportController.java | 1 + ...oposalUnderTakeSatisfactionController.java | 127 +-- .../ProposalCommitteeFilingController.java | 11 + .../ProposalDelegationController.java | 12 - .../ProposalFeedbackEvaluationController.java | 11 - .../transact/ProposalSecondedController.java | 11 + .../ProposalUnderTakeReplyController.java | 11 - .../ProposalCaseFilingInterceptor.java | 6 +- .../proposal/models/ProposalReplyUnit.java | 3 + .../ProposalQueryComprehensiveParam.java | 32 +- .../proposal/param/ProposalSearchParam.java | 23 +- .../ProposalCommitteeFilingService.java | 9 + .../service/ProposalSecondedService.java | 8 + .../service/common/ProposalCommonService.java | 98 +++ .../common/ProposalCommonServiceImpl.java | 725 +++++++++++++++++- .../ProposalCommitteeFilingServiceImpl.java | 123 +++ ...roposalCommitteeFilingUnitServiceImpl.java | 119 ++- .../impl/ProposalExportServiceImpl.java | 76 +- .../impl/ProposalSecondedServiceImpl.java | 31 + .../models/Teacher_congress_delegate.java | 3 + .../TeacherCongressSessionServiceImpl.java | 4 + .../plugins/sysUserAuditOpinion/index.vue | 15 +- .../resources/views/layouts/platform.html | 38 +- .../sys/union/branchUnionPartUnitManage.js | 8 +- .../activity/culture/common/auditActivity.js | 6 +- .../declare/branchunion/index.html | 6 +- .../declare/clubprincipal/index.html | 6 +- .../declare/schoolprincipal/index.html | 6 +- .../declare/schoolunion/index.html | 6 +- .../reimbursement/branchunion/index.html | 6 +- .../reimbursement/clubprincipal/index.html | 6 +- .../deputySchoolUnion/index.html | 6 +- .../reimbursement/schoolFinance/index.html | 6 +- .../reimbursement/schoolprincipal/index.html | 6 +- .../reimbursement/schoolunion/index.html | 6 +- .../leadthought/branchunionaudit/index.html | 6 +- .../leadthought/schoolunionaudit/index.html | 6 +- .../zhgh/club/evaluate/clubAudit/index.html | 6 +- .../zhgh/club/evaluate/schoolAudit/index.html | 6 +- .../evaluate/schoolLeaderAudit/index.html | 6 +- .../zhgh/club/examine/clubAudit/index.html | 6 +- .../zhgh/club/examine/schoolAudit/index.html | 6 +- .../club/examine/schoolLeaderAudit/index.html | 6 +- .../club/infoManage/auditManager/index.html | 6 +- .../infoManage/schoolAuditReport/index.html | 6 +- .../infoManage/schoolAuditRule/index.html | 6 +- .../zhgh/club/join/clubApproval/index.html | 6 +- .../club/join/schoolUnionApproval/index.html | 6 +- .../zhgh/club/register/clubConfirm/index.html | 6 +- .../zhgh/club/register/officeAudit/index.html | 6 +- .../register/schoolLeaderAudit/index.html | 6 +- .../zhgh/club/register/schoolReply/index.html | 6 +- .../Tour/schoolUnionApproval/index.html | 6 +- .../Tour/unionApproval/index.html | 6 +- .../article/branchUnionApproval/index.html | 6 +- .../article/clubApproval/index.html | 6 +- .../dayofficework/article/examine/index.html | 6 +- .../article/firstExamine/index.html | 6 +- .../article/schoolUnionApproval/index.html | 6 +- .../cadreTraining/schoolAudit/index.html | 6 +- .../schoolAudit/index.html | 6 +- .../unionAudit/index.html | 6 +- .../evaluation/branchUnionApproval/index.html | 6 +- .../evaluation/schoolUnionApproval/index.html | 6 +- .../member/branchUnionApproval/index.html | 6 +- .../member/schoolUnionApproval/index.html | 6 +- .../meeting/delegationApproval/index.html | 6 +- .../meeting/schoolUnionApproval/index.html | 6 +- .../activityBudget/schoolAudit/index.html | 6 +- .../activityBudget/schoolPrincipal/index.html | 6 +- .../outlayReimburse/clubAudit/index.html | 6 +- .../outlayReimburse/clubZxAudit/index.html | 6 +- .../outlayReimburse/schoolCnAudit/index.html | 6 +- .../outlayReimburse/schoolKjAudit/index.html | 6 +- .../outlayReimburse/schoolZxAudit/index.html | 6 +- .../outlayReimburse/unionAudit/index.html | 6 +- .../site/schoolUnionAudit/index.html | 6 +- .../siteCug/schoolUnionAudit/index.html | 6 +- .../certifierUserSign/index.html | 4 +- .../unionReimburse/review/index.html | 6 +- .../declaration/organizationAudit.html | 2 +- .../workershome/declaration/schoolAudit.html | 2 +- .../workershome/info/schoolAudit.html | 6 +- .../material/approval/index.html | 6 +- .../meeting/approval/index.html | 6 +- .../proposal/export/comprehensive/index.html | 56 +- .../proposal/query/collectProgress/index.html | 60 +- .../proposal/query/comprehensive/index.html | 49 +- .../proposal/query/delegation/index.html | 37 +- .../proposal/query/history/index.html | 4 +- .../proposal/query/underTakeReply/index.html | 84 +- .../query/underTakeSatisfaction/index.html | 56 +- .../proposal/query/yearReport/index.html | 56 +- .../proposal/senior/basic/index.html | 50 +- .../proposal/senior/delete/index.html | 49 +- .../proposal/senior/expediting/index.html | 42 +- .../proposal/senior/feedback/index.html | 49 +- .../proposal/senior/type/index.html | 49 +- .../proposal/transact/caseCheck/index.html | 6 +- .../proposal/transact/commissioner/index.html | 2 +- .../transact/committeeFiling/index.html | 53 +- .../transact/committeeFiling/merge.js | 51 +- .../transact/committeeFilingUnit/index.html | 65 +- .../proposal/transact/control/index.html | 18 +- .../proposal/transact/delegation/index.html | 16 +- .../proposal/transact/feedback/index.html | 23 +- .../proposal/transact/preAudit/index.html | 6 +- .../transact/schoolLeaderApproval/index.html | 4 +- .../proposal/transact/seconded/index.html | 12 +- .../proposal/transact/suggestion/index.html | 2 +- .../transact/unSubmitQuery/index.html | 8 +- .../proposal/transact/unitRead/index.html | 2 +- .../proposal/transact/unitReply/index.html | 22 +- .../tc/transact/committeeFiling/index.html | 6 +- .../transact/committeeFilingUnit/index.html | 4 +- .../tc/transact/delegation/index.html | 6 +- .../transact/schoolLeaderApproval/index.html | 4 +- .../tc/transact/seconded/index.html | 4 +- .../tc/transact/unitRead/index.html | 2 +- .../tc/transact/unitReply/index.html | 2 +- .../wc/transact/committeeFiling/index.html | 6 +- .../transact/committeeFilingUnit/index.html | 4 +- .../wc/transact/delegation/index.html | 6 +- .../transact/schoolLeaderApproval/index.html | 4 +- .../wc/transact/seconded/index.html | 4 +- .../wc/transact/unitRead/index.html | 2 +- .../wc/transact/unitReply/index.html | 2 +- .../democratic/suggestionBox/xgh/index.html | 6 +- .../delegate/push/dwSjAudit.html | 4 +- .../condolence/branchUnionApproval/index.html | 6 +- .../schoolPrincipalApproval/index.html | 6 +- .../condolence/schoolUnionApproval/index.html | 6 +- .../branchunionapproval/index.html | 6 +- .../schoolunionapproval/index.html | 6 +- .../unionLeaderApproval/index.html | 6 +- .../dsznfmtx/schoolAudit/index.html | 6 +- .../dsznfmtx/unionAudit/index.html | 6 +- .../schoolAudit/index.html | 6 +- .../maternityLeave/schoolAudit/index.html | 6 +- .../maternityLeave/unionAudit/index.html | 6 +- .../aidFund/foundationAudit/index.html | 2 +- .../aidFund/retirementAudit/index.html | 4 +- .../aidFund/unionAudit/index.html | 4 +- .../medical/foundationAudit/index.html | 6 +- .../medical/retirementAudit/index.html | 6 +- .../medical/schoolHospitalAudit/index.html | 6 +- .../medical/statistics/index.html | 6 +- .../medical/unionAudit/index.html | 6 +- .../apply/branchunionapproval/index.html | 6 +- .../apply/schoolunionapproval/index.html | 6 +- .../apply/uniongroupapproval/index.html | 6 +- .../member/branch/audit/index.html | 6 +- .../member/change/branchunionaudit/index.html | 6 +- .../member/change/schoolunionaudit/index.html | 6 +- .../member/change/uniongroupaudit/index.html | 6 +- .../member/school/audit/index.html | 6 +- .../zhghh5/club/clubApproval/index.html | 4 +- .../club/schoolUnionApproval/index.html | 4 +- .../schoolAudit/index.html | 4 +- .../unionAudit/index.html | 4 +- .../meeting/delegationApproval/index.html | 4 +- .../meeting/schoolUnionApproval/index.html | 4 +- .../outlayReimburse/clubAudit/index.html | 4 +- .../outlayReimburse/clubZxAudit/index.html | 4 +- .../outlayReimburse/schoolCnAudit/index.html | 4 +- .../outlayReimburse/schoolKjAudit/index.html | 4 +- .../outlayReimburse/schoolZxAudit/index.html | 4 +- .../outlayReimburse/unionAudit/index.html | 4 +- .../site/schoolUnionAudit/index.html | 4 +- .../siteCug/schoolUnionAudit/index.html | 4 +- .../tour/schoolUnionApproval/index.html | 4 +- .../tour/unionApproval/index.html | 4 +- .../certifierUserSign/index.html | 2 +- .../unionReimburse/review/index.html | 4 +- .../proposal/query/comprehensive/index.html | 16 +- .../proposal/transact/commissioner/index.html | 9 +- .../proposal/transact/delegation/index.html | 11 +- .../transact/feedbackEvaluation/index.html | 19 +- .../transact/schoolLeaderApproval/index.html | 9 +- .../proposal/transact/seconded/index.html | 15 +- .../proposal/transact/suggestion/index.html | 9 +- .../proposal/transact/unitReply/index.html | 16 +- .../transact/viceDelegation/index.html | 7 +- .../tc/transact/delegation/index.html | 4 +- .../tc/transact/seconded/index.html | 2 +- .../wc/transact/delegation/index.html | 4 +- .../wc/transact/seconded/index.html | 2 +- .../democratic/suggestionBox/xgh/index.html | 4 +- .../condolence/branchUnionApproval/index.html | 4 +- .../schoolPrincipalApproval/index.html | 4 +- .../condolence/schoolUnionApproval/index.html | 4 +- .../branchunionapproval/index.html | 4 +- .../schoolunionapproval/index.html | 4 +- .../unionLeaderApproval/index.html | 4 +- .../dsznfmtx/schoolAudit/index.html | 4 +- .../dsznfmtx/unionAudit/index.html | 4 +- .../maternityLeave/schoolAudit/index.html | 4 +- .../maternityLeave/unionAudit/index.html | 4 +- .../aidFund/foundationAudit/index.html | 2 +- .../aidFund/retirementAudit/index.html | 4 +- .../aidFund/unionAudit/index.html | 4 +- .../apply/branchunionapproval/index.html | 4 +- .../apply/schoolunionapproval/index.html | 4 +- .../apply/uniongroupapproval/index.html | 4 +- 218 files changed, 2471 insertions(+), 1427 deletions(-) diff --git a/src/main/java/com/budwk/app/flow/controller/FlowTodoCenterController.java b/src/main/java/com/budwk/app/flow/controller/FlowTodoCenterController.java index e2b9850a..f0da0ce0 100644 --- a/src/main/java/com/budwk/app/flow/controller/FlowTodoCenterController.java +++ b/src/main/java/com/budwk/app/flow/controller/FlowTodoCenterController.java @@ -12,6 +12,8 @@ import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.dao.util.cri.Static; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.json.Json; @@ -51,7 +53,8 @@ public class FlowTodoCenterController { t.h5FormKey, t.createdAt, t.finishTime, - t.variable, + t.variable AS taskVariable, + ins.variable, ins.state AS instanceState, ins.id AS instanceId, ins.businessNo, @@ -66,7 +69,14 @@ public class FlowTodoCenterController { $condition """); Cnd cnd = Cnd.NEW(); - cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); + // 普通待办仍按进行中任务查询;提案进入团长审核后,补充展示尚未附议的已废弃 second 任务。 + SqlExpressionGroup todoTaskGroup = Cnd.exps("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); + SqlExpressionGroup proposalSecondGroup = Cnd.exps("t.taskState", "=", ProcessTaskStateEnum.ABANDON.getCode()) + .and("t.taskName", "=", "second") + .and(new Static("EXISTS (SELECT 1 FROM proposal_second ps WHERE ps.proposalId = ins.businessNo AND ps.seconderId = ta.actorId AND ps.isAgree IS NULL)")) + .and(new Static("EXISTS (SELECT 1 FROM wf_process_task dt WHERE dt.processInstanceId = t.processInstanceId AND dt.taskName = 'delegation' AND dt.taskState = 10)")); + todoTaskGroup.or(proposalSecondGroup); + cnd.and(todoTaskGroup); cnd.and("ta.actorId", "=", SecurityUtil.getUserId()); cnd.andEX("def.category", "=", category); if (StrUtil.isNotBlank(searchKeyword)) { @@ -96,7 +106,8 @@ public class FlowTodoCenterController { t.h5FormKey, t.createdAt, t.finishTime, - t.variable, + t.variable AS taskVariable, + ins.variable, ins.state AS instanceState, ins.id AS instanceId, ins.businessNo, @@ -223,7 +234,27 @@ public class FlowTodoCenterController { LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id WHERE ta.actorId = @userId - AND t.taskState = 10 + AND ( + t.taskState = 10 + OR ( + t.taskState = 99 + AND t.taskName = 'second' + AND EXISTS ( + SELECT 1 + FROM proposal_second ps + WHERE ps.proposalId = (SELECT businessNo FROM wf_process_instance WHERE id = t.processInstanceId) + AND ps.seconderId = ta.actorId + AND ps.isAgree IS NULL + ) + AND EXISTS ( + SELECT 1 + FROM wf_process_task dt + WHERE dt.processInstanceId = t.processInstanceId + AND dt.taskName = 'delegation' + AND dt.taskState = 10 + ) + ) + ) """); todoSql.setParam("userId", SecurityUtil.getUserId()); todoSql.setCallback(Sqls.callback.integer()); diff --git a/src/main/java/com/budwk/app/flow/entity/ProcessInstance.java b/src/main/java/com/budwk/app/flow/entity/ProcessInstance.java index 8720fab6..b96aedcf 100644 --- a/src/main/java/com/budwk/app/flow/entity/ProcessInstance.java +++ b/src/main/java/com/budwk/app/flow/entity/ProcessInstance.java @@ -6,7 +6,9 @@ import lombok.Setter; import org.nutz.dao.entity.annotation.Column; import org.nutz.dao.entity.annotation.Comment; import org.nutz.dao.entity.annotation.Id; +import org.nutz.dao.entity.annotation.Index; import org.nutz.dao.entity.annotation.Table; +import org.nutz.dao.entity.annotation.TableIndexes; import java.io.Serializable; import java.util.Date; @@ -22,6 +24,9 @@ import java.util.Date; @Getter @Setter @Table("wf_process_instance") +@TableIndexes({ + @Index(name = "INDEX_WF_PROCESS_INSTANCE_BUSINESS_NO", fields = {"businessNo"}, unique = false) +}) @Comment("流程实例") public class ProcessInstance extends BaseModel { diff --git a/src/main/java/com/budwk/app/flow/entity/ProcessTask.java b/src/main/java/com/budwk/app/flow/entity/ProcessTask.java index 406361b1..b4e634df 100644 --- a/src/main/java/com/budwk/app/flow/entity/ProcessTask.java +++ b/src/main/java/com/budwk/app/flow/entity/ProcessTask.java @@ -6,7 +6,9 @@ import lombok.Setter; import org.nutz.dao.entity.annotation.Column; import org.nutz.dao.entity.annotation.Comment; import org.nutz.dao.entity.annotation.Id; +import org.nutz.dao.entity.annotation.Index; import org.nutz.dao.entity.annotation.Table; +import org.nutz.dao.entity.annotation.TableIndexes; import java.io.Serializable; import java.util.Date; @@ -19,6 +21,9 @@ import java.util.Date; @Getter @Setter @Table("wf_process_task") +@TableIndexes({ + @Index(name = "INDEX_WF_PROCESS_TASK_INSTANCE_STATE", fields = {"processInstanceId", "taskState"}, unique = false) +}) @Comment("流程任务") public class ProcessTask extends BaseModel { diff --git a/src/main/java/com/budwk/app/sys/controller/SysHomeController.java b/src/main/java/com/budwk/app/sys/controller/SysHomeController.java index ed8a0e9e..13258155 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysHomeController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysHomeController.java @@ -154,10 +154,15 @@ public class SysHomeController { .and(Sys_menu::getPlatform, "=", platform) ); List menus = sysUserService.getMenus(SecurityUtil.getUserId()); - List allMenuIds = menus.stream().map(Sys_menu::getId).toList(); + Set allMenuIds = menus.stream().map(Sys_menu::getId).collect(Collectors.toSet()); + Set allParentMenuIds = menus.stream() + .map(Sys_menu::getParentId) + .filter(StrUtil::isNotBlank) + .collect(Collectors.toSet()); List sysMenus = list.stream() - // 推荐项必须同时属于当前用户已授权菜单,避免首页展示无权限入口。 - .filter(menu -> allMenuIds.contains(menu.getId())) + // 应用有已授权子菜单,或根菜单自身有链接且已授权时,才允许在首页展示入口。 + .filter(menu -> allParentMenuIds.contains(menu.getId()) + || (StrUtil.isNotBlank(menu.getHref()) && allMenuIds.contains(menu.getId()))) .sorted(Comparator.comparing(Sys_menu::getLocation, Comparator.nullsLast(Integer::compareTo)) .thenComparing(Sys_menu::getId)) .toList(); @@ -175,7 +180,7 @@ public class SysHomeController { .and(Sys_menu::getPlatform, "=", platform) ); List menus = sysUserService.getMenus(SecurityUtil.getUserId()); - List allMenuIds = menus.stream().map(Sys_menu::getId).toList(); + Set allMenuIds = menus.stream().map(Sys_menu::getId).collect(Collectors.toSet()); List sysMenus = list.stream() // 推荐项必须同时属于当前用户已授权菜单,避免首页展示无权限入口。 .filter(menu -> allMenuIds.contains(menu.getId())) diff --git a/src/main/java/com/budwk/app/sys/controller/SysRoleController.java b/src/main/java/com/budwk/app/sys/controller/SysRoleController.java index b46c9ee8..082d7c62 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysRoleController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysRoleController.java @@ -42,6 +42,7 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * Created by wizzer on 2016/6/28. @@ -554,20 +555,13 @@ public class SysRoleController { @Ok("json:full") @SaCheckLogin public Result getRoleNames(){ - Sql sql = Sqls.create(""" - SELECT - GROUP_CONCAT(DISTINCT sr.`name`) roleNames - FROM - `sys_user_role` sur - LEFT JOIN sys_role sr ON sr.id = sur.roleId - WHERE - sur.userId = @userId - ORDER BY - sr.sort DESC - """).setParam("userId", SecurityUtil.getUserId()); - sql.setCallback(Sqls.callback.map()); - sysRoleService.dao().execute(sql); - return Result.success(sql.getResult()); + // 首页只展示当前有效角色,历史教代会届次角色仍保留数据但不参与当前身份展示。 + String roleNames = sysUserService.getEffectiveRoles(SecurityUtil.getUserId()).stream() + .map(Sys_role::getName) + .filter(StrUtil::isNotBlank) + .distinct() + .collect(Collectors.joining(",")); + return Result.success(NutMap.NEW().addv("roleNames", roleNames)); } 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 60154bdb..7e2f49e4 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysUnionController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysUnionController.java @@ -624,22 +624,21 @@ public class SysUnionController { } + /** + * 分页查询当前分工会的组成单位。 + * + * @param pageForm 分页和查询参数;pageNumber 为页码,pageSize 为每页条数,searchKeyword 为单位编码或名称 + * @param unionId 分工会ID,不能为空 + * @return Result;data 为 Pagination,list 是当前页单位列表,totalCount 是符合条件的单位总数 + */ @At @ApiOperation("分工会组成单位分页") @SaCheckPermission("sys.manager.union") - public Result branchUnionPartUnitPageData(PageForm pageForm, String unionId) { - Cnd cnd = Cnd.NEW(); - cnd.and("unionId", "=", unionId); - if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { - SqlExpressionGroup seg = new SqlExpressionGroup(); - seg.orLike("`name`", pageForm.getSearchKeyword()); - seg.orLike("unitcode", pageForm.getSearchKeyword()); - cnd.and(seg); + public Result branchUnionPartUnitPageData(@Valid PageForm pageForm, String unionId) { + if (StrUtil.isBlank(unionId)) { + return Result.error("分工会参数不能为空"); } - cnd.desc("unitcode"); - - List list = dao.query(Sys_unit.class, cnd); - return Result.success(list); + return Result.success(sysUnitService.pageBranchUnionPartUnits(pageForm, unionId)); } @At diff --git a/src/main/java/com/budwk/app/sys/services/SysUnitService.java b/src/main/java/com/budwk/app/sys/services/SysUnitService.java index 257cd73c..1214da97 100644 --- a/src/main/java/com/budwk/app/sys/services/SysUnitService.java +++ b/src/main/java/com/budwk/app/sys/services/SysUnitService.java @@ -1,5 +1,7 @@ package com.budwk.app.sys.services; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.param.PageForm; import com.budwk.app.base.service.BaseService; import com.budwk.app.sys.models.Sys_unit; @@ -7,6 +9,15 @@ import com.budwk.app.sys.models.Sys_unit; * Created by wizzer on 2016/12/22. */ public interface SysUnitService extends BaseService { + /** + * 分页查询指定分工会的组成单位。 + * + * @param pageForm 分页和查询参数;pageNumber 为页码,pageSize 为每页条数,searchKeyword 为单位编码或名称 + * @param unionId 分工会ID,用于限制只查询当前分工会的组成单位 + * @return 分页结果;list 为当前页单位数据,totalCount 为符合条件的单位总数 + */ + Pagination pageBranchUnionPartUnits(PageForm pageForm, String unionId); + /** * 保存单位 * diff --git a/src/main/java/com/budwk/app/sys/services/SysUserService.java b/src/main/java/com/budwk/app/sys/services/SysUserService.java index 2cce57f7..b4c46229 100644 --- a/src/main/java/com/budwk/app/sys/services/SysUserService.java +++ b/src/main/java/com/budwk/app/sys/services/SysUserService.java @@ -6,6 +6,7 @@ import com.budwk.app.base.exception.BaseException; import com.budwk.app.base.exception.UnknownAccountException; import com.budwk.app.base.service.BaseService; import com.budwk.app.sys.models.Sys_menu; +import com.budwk.app.sys.models.Sys_role; import com.budwk.app.sys.models.Sys_user; import javax.servlet.http.HttpServletRequest; @@ -31,6 +32,14 @@ public interface SysUserService extends BaseService { */ List getRoleCodeList(Sys_user user); + /** + * 查询用户当前有效的角色。普通角色始终有效,教代会届次角色仅保留最新创建届次的数据。 + * + * @param userId 用户ID + * @return 当前有效的系统角色列表,按角色排序倒序返回 + */ + List getEffectiveRoles(String userId); + /** * 获取用户的菜单 diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysUnitServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysUnitServiceImpl.java index 953e0142..f805b307 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysUnitServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysUnitServiceImpl.java @@ -2,6 +2,8 @@ package com.budwk.app.sys.services.impl; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.constant.RedisConstant; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.param.PageForm; import com.budwk.app.base.service.impl.BaseServiceImpl; import com.budwk.app.sys.models.Sys_unit; import com.budwk.app.sys.services.SysUnitService; @@ -10,6 +12,7 @@ import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; +import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.Strings; @@ -26,6 +29,22 @@ public class SysUnitServiceImpl extends BaseServiceImpl implements Sys super(dao); } + /** + * 按单位编码或名称筛选当前分工会的组成单位,并按单位编码倒序分页。 + */ + @Override + public Pagination pageBranchUnionPartUnits(PageForm pageForm, String unionId) { + Cnd cnd = Cnd.where("unionId", "=", unionId); + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + SqlExpressionGroup keywordCondition = new SqlExpressionGroup(); + keywordCondition.orLike("`name`", pageForm.getSearchKeyword()); + keywordCondition.orLike("unitcode", pageForm.getSearchKeyword()); + cnd.and(keywordCondition); + } + cnd.desc("unitcode"); + return listPage(pageForm.getPageNumber(), pageForm.getPageSize(), Sys_unit.class, cnd); + } + /** * 新增单位 * diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java index 63a91406..54b4e1c7 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java @@ -65,18 +65,13 @@ public class SysUserServiceImpl extends BaseServiceImpl implements Sys private RedisService redisService; @Override - @CacheResult(cacheKey = "${userId}_getPermissionList") + @CacheResult(cacheKey = "${userId}_getPermissionList_currentSession") public List getPermissionList(String userId) { - Sys_user user = this.fetch(userId); - if (user == null) { - return new ArrayList<>(); - } - this.fetchLinks(user, "roles"); - if (user.getRoles() == null) { + if (this.fetch(userId) == null) { return new ArrayList<>(); } List permissionList = new ArrayList(); - for (Sys_role role : user.getRoles()) { + for (Sys_role role : getEffectiveRoles(userId)) { if (!role.isDisabled()) { permissionList.addAll(sysRoleService.getPermissionList(role)); } @@ -92,16 +87,64 @@ public class SysUserServiceImpl extends BaseServiceImpl implements Sys * @param user * @return */ - @CacheResult(cacheKey = "${user.id}_getRoleCodeList") + @CacheResult(cacheKey = "${user.id}_getRoleCodeList_currentSession") public List getRoleCodeList(Sys_user user) { - dao().fetchLinks(user, "roles"); List roleNameList = new ArrayList(); - for (Sys_role role : user.getRoles()) { + for (Sys_role role : getEffectiveRoles(user.getId())) { if (!role.isDisabled()) roleNameList.add(role.getCode()); } return roleNameList; } + /** + * 查询用户当前有效角色。tcSessionId 为空的普通角色不受届次影响;教代会角色只认创建时间最新的届次。 + * 历史届次关系继续保存在 sys_user_role 中,以便删除最新届次后自动恢复上一届身份。 + * + * @param userId 用户ID + * @return 当前有效的角色实体列表 + */ + @Override + public List getEffectiveRoles(String userId) { + Sql sql = Sqls.create(""" + SELECT DISTINCT + sr.* + FROM + sys_role sr + INNER JOIN sys_user_role userRole ON userRole.roleId = sr.id + WHERE + userRole.userId = @userId + AND ( + userRole.tcSessionId IS NULL + OR userRole.tcSessionId = '' + OR userRole.tcSessionId = ( + SELECT tcs.id + FROM teacher_congress_session tcs + ORDER BY tcs.createdAt DESC, tcs.id DESC + LIMIT 1 + ) + ) + ORDER BY sr.sort DESC, sr.id + """); + sql.setParam("userId", userId); + sql.setCallback(Sqls.callback.entities()); + sql.setEntity(dao().getEntity(Sys_role.class)); + dao().execute(sql); + return sql.getList(Sys_role.class); + } + + /** + * 查询用户当前有效且已启用的角色ID,供菜单和按钮权限查询统一复用。 + * + * @param userId 用户ID + * @return 有效角色ID列表 + */ + private List getEnabledEffectiveRoleIds(String userId) { + return getEffectiveRoles(userId).stream() + .filter(role -> !role.isDisabled()) + .map(Sys_role::getId) + .toList(); + } + /** * 获取用户菜单 * @@ -161,8 +204,12 @@ public class SysUserServiceImpl extends BaseServiceImpl implements Sys */ // @CacheResult(cacheKey = "${userId}_getMenus") public List getMenus(String userId) { - Sql sql = Sqls.create("select distinct a.* from sys_menu a,sys_role_menu b where a.id=b.menuId and " + " b.roleId in(select c.roleId from sys_user_role c,sys_role d where c.roleId=d.id and c.userId=@userId and d.disabled=@f) and a.disabled=@f and a.showit=@t and a.type='menu' order by a.location ASC,a.path asc"); - sql.params().set("userId", userId); + List roleIds = getEnabledEffectiveRoleIds(userId); + if (roleIds.isEmpty()) { + return new ArrayList<>(); + } + Sql sql = Sqls.create("select distinct a.* from sys_menu a,sys_role_menu b where a.id=b.menuId and " + " b.roleId in(@roleIds) and a.disabled=@f and a.showit=@t and a.type='menu' order by a.location ASC,a.path asc"); + sql.params().set("roleIds", roleIds); sql.params().set("f", false); sql.params().set("t", true); return sysMenuService.listEntity(sql); @@ -176,8 +223,12 @@ public class SysUserServiceImpl extends BaseServiceImpl implements Sys */ // @CacheResult(cacheKey = "${userId}_getMenusAndButtons") public List getMenusAndButtons(String userId) { - Sql sql = Sqls.create("select distinct a.* from sys_menu a,sys_role_menu b where a.id=b.menuId and " + " b.roleId in(select c.roleId from sys_user_role c,sys_role d where c.roleId=d.id and c.userId=@userId and d.disabled=@f) and a.disabled=@f order by a.location ASC,a.path asc"); - sql.params().set("userId", userId); + List roleIds = getEnabledEffectiveRoleIds(userId); + if (roleIds.isEmpty()) { + return new ArrayList<>(); + } + Sql sql = Sqls.create("select distinct a.* from sys_menu a,sys_role_menu b where a.id=b.menuId and " + " b.roleId in(@roleIds) and a.disabled=@f order by a.location ASC,a.path asc"); + sql.params().set("roleIds", roleIds); sql.params().set("f", false); return sysMenuService.listEntity(sql); } @@ -193,10 +244,14 @@ public class SysUserServiceImpl extends BaseServiceImpl implements Sys * @param userId * @return */ - @CacheResult(cacheKey = "${userId}_getDatas") + @CacheResult(cacheKey = "${userId}_getDatas_currentSession") public List getDatas(String userId) { - Sql sql = Sqls.create("select distinct a.* from sys_menu a,sys_role_menu b where a.id=b.menuId and " + " b.roleId in(select c.roleId from sys_user_role c,sys_role d where c.roleId=d.id and c.userId=@userId and d.disabled=@f) and a.disabled=@f and a.type='data' order by a.location ASC,a.path asc"); - sql.params().set("userId", userId); + List roleIds = getEnabledEffectiveRoleIds(userId); + if (roleIds.isEmpty()) { + return new ArrayList<>(); + } + Sql sql = Sqls.create("select distinct a.* from sys_menu a,sys_role_menu b where a.id=b.menuId and " + " b.roleId in(@roleIds) and a.disabled=@f and a.type='data' order by a.location ASC,a.path asc"); + sql.params().set("roleIds", roleIds); sql.params().set("f", false); return sysMenuService.listEntity(sql); } @@ -230,10 +285,14 @@ public class SysUserServiceImpl extends BaseServiceImpl implements Sys * @param pid * @return */ - @CacheResult(cacheKey = "${userId}_${pid}_getRoleMenus") + @CacheResult(cacheKey = "${userId}_${pid}_getRoleMenus_currentSession") public List getRoleMenus(String userId, String pid) { - Sql sql = Sqls.create("select distinct a.* from sys_menu a,sys_role_menu b where a.id=b.menuId and " + "$m and b.roleId in(select c.roleId from sys_user_role c,sys_role d where c.roleId=d.id and c.userId=@userId and d.disabled=@f) and a.disabled=@f order by a.location ASC,a.path asc"); - sql.params().set("userId", userId); + List roleIds = getEnabledEffectiveRoleIds(userId); + if (roleIds.isEmpty()) { + return new ArrayList<>(); + } + Sql sql = Sqls.create("select distinct a.* from sys_menu a,sys_role_menu b where a.id=b.menuId and " + "$m and b.roleId in(@roleIds) and a.disabled=@f order by a.location ASC,a.path asc"); + sql.params().set("roleIds", roleIds); sql.params().set("f", false); if (Strings.isNotBlank(pid)) { sql.vars().set("m", "a.parentId='" + pid + "'"); @@ -249,10 +308,14 @@ public class SysUserServiceImpl extends BaseServiceImpl implements Sys * @param pid * @return */ - @CacheResult(cacheKey = "${userId}_${pid}_hasChildren") + @CacheResult(cacheKey = "${userId}_${pid}_hasChildren_currentSession") public boolean hasChildren(String userId, String pid) { - Sql sql = Sqls.create("select count(*) from sys_menu a,sys_role_menu b where a.id=b.menuId and " + "$m and b.roleId in(select c.roleId from sys_user_role c,sys_role d where c.roleId=d.id and c.userId=@userId and d.disabled=@f) and a.disabled=@f order by a.location ASC,a.path asc"); - sql.params().set("userId", userId); + List roleIds = getEnabledEffectiveRoleIds(userId); + if (roleIds.isEmpty()) { + return false; + } + Sql sql = Sqls.create("select count(*) from sys_menu a,sys_role_menu b where a.id=b.menuId and " + "$m and b.roleId in(@roleIds) and a.disabled=@f order by a.location ASC,a.path asc"); + sql.params().set("roleIds", roleIds); sql.params().set("f", false); if (Strings.isNotBlank(pid)) { sql.vars().set("m", "a.parentId='" + pid + "'"); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryCollectProgressController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryCollectProgressController.java index 3f1e5809..7fe350d7 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryCollectProgressController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryCollectProgressController.java @@ -1,6 +1,7 @@ package com.budwk.app.zhgh.democratic.proposal.controller.query; import cn.dev33.satoken.annotation.SaCheckPermission; +import com.budwk.app.base.param.ExportTableColumns; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.result.Result; import com.budwk.app.zhgh.democratic.proposal.param.ProposalQueryComprehensiveParam; @@ -15,6 +16,7 @@ import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.util.ArrayList; import java.util.List; @@ -51,6 +53,23 @@ public class ProposalQueryCollectProgressController { return Result.success(pagination); } + /** + * 按征集进度页面筛选条件及当前可见字段导出 Excel。 + * + * @param pageForm 页面筛选和排序参数 + * @param tableColumns 当前可见字段,顺序即导出列顺序 + * @param response HTTP 响应,返回 XSSF Excel + */ + @At + @Ok("void") + @SaCheckPermission("proposal.query.collectProgress") + @ApiOperation(value = "自定义导出征集进度") + public void exportCustomAsExcel(@Valid @Param("pageForm") ProposalQueryComprehensiveParam pageForm, + @Param("tableColumns") ExportTableColumns[] tableColumns, + HttpServletResponse response) { + proposalCommonService.exportCollectProgressAsExcel(pageForm, tableColumns, response); + } + @At @ApiOperation(value = "获取征集状态") @SaCheckPermission("proposal.query.collectProgress") diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryComprehensiveController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryComprehensiveController.java index 7c6fbb82..cd682c97 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryComprehensiveController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryComprehensiveController.java @@ -1,21 +1,13 @@ package com.budwk.app.zhgh.democratic.proposal.controller.query; import cn.dev33.satoken.annotation.SaCheckPermission; -import cn.hutool.core.util.ArrayUtil; -import cn.hutool.core.util.StrUtil; -import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.param.ExportTableColumns; import com.budwk.app.base.result.Result; -import com.budwk.app.base.service.BaseService; -import com.budwk.app.zhgh.democratic.proposal.controller.vo.ProposalInfoPageVO; import com.budwk.app.zhgh.democratic.proposal.param.ProposalQueryComprehensiveParam; import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.nutz.dao.Cnd; -import org.nutz.dao.Sqls; -import org.nutz.dao.sql.Sql; -import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; @@ -24,9 +16,6 @@ import org.nutz.mvc.annotation.Param; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import java.util.Arrays; -import java.util.Map; - @IocBean @At("/platform/proposal/query/comprehensive") @Slf4j @@ -34,25 +23,6 @@ import java.util.Map; @Api(tags = "提案综合查询") public class ProposalQueryComprehensiveController { - /** - * 综合查询表格允许排序的字段映射,值为查询中的真实字段或安全别名。 - */ - private static final Map COMPREHENSIVE_ORDER_COLUMNS = Map.ofEntries( - Map.entry("code", "info.code"), - Map.entry("name", "info.name"), - Map.entry("createUserName", "info.createUserName"), - Map.entry("typeName", "typeName"), - Map.entry("delegationName", "delegationName"), - Map.entry("caseFilingResult", "info.caseFilingResult"), - Map.entry("caseFilingType", "info.caseFilingType"), - Map.entry("merge", "merge"), - Map.entry("undertakeUnits", "undertakeUnitsOrder"), - Map.entry("curTaskName", "curTaskName"), - Map.entry("instanceState", "instanceState") - ); - - @Inject - private BaseService baseService; @Inject private ProposalCommonService proposalCommonService; @@ -66,84 +36,24 @@ public class ProposalQueryComprehensiveController { @SaCheckPermission("proposal.query.comprehensive") @ApiOperation(value = "分页列表") public Result pageData(@Valid @Param("pageForm") ProposalQueryComprehensiveParam pageForm) { - Sql sql = Sqls.create(""" - SELECT - info.*, - IF(mer.proposalId IS NOT NULL, 1, 0) AS merge, - type.name AS typeName, - tcs.fullName AS sessionName, - tcd.`name` AS delegationName, - ins.id AS instanceId, - ins.businessNo, - ins.state instanceState, - ins.variable instanceVariable, - ins.processDefineId instanceProcessDefineId, - t.displayName curTaskName, - GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 1 THEN pru.unitName END) AS masterUnitName, - GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames, - GROUP_CONCAT(DISTINCT pru.unitName ORDER BY pru.isMaster DESC, pru.unitName) AS undertakeUnitsOrder - FROM - proposal_info info - LEFT JOIN proposal_type type on type.id = info.typeId - LEFT JOIN proposal_merge mer ON mer.proposalId = info.id - LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId - LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId - LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName - LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id - LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10 - LEFT JOIN proposal_reply_unit pru ON pru.proposalId = info.id - LEFT JOIN wf_process_task replyTask on replyTask.processInstanceId = ins.id - $condition - """); -// AND replyTask.taskState = 20 AND replyTask.taskName in ('master_reply','slave_reply','opinion_master_reply') - Cnd cnd = Cnd.NEW(); - if (ArrayUtil.isNotEmpty(pageForm.getOrigins()) && StrUtil.isNotBlank(pageForm.getCommonKeyword())) { - SqlExpressionGroup seg = new SqlExpressionGroup(); + return Result.success(proposalCommonService.queryComprehensive(pageForm)); + } - // 案名 - if (ArrayUtil.contains(pageForm.getOrigins(), "name")) { - for (String keyword : pageForm.getCommonKeyword().split(" ")) { - seg.orLike("info.name", keyword); - } - } - - // 案由 - if (ArrayUtil.contains(pageForm.getOrigins(), "brief")) { - for (String keyword : pageForm.getCommonKeyword().split(" ")) { - seg.orLike("info.brief", keyword); - } - } - - // 提案人 - if (ArrayUtil.contains(pageForm.getOrigins(), "createUserName")) { - for (String keyword : pageForm.getCommonKeyword().split(" ")) { - seg.orLike("info.createUserName", keyword); - seg.orLike("info.createUserLoginName", keyword); - } - } - - // 答复内容 - if (ArrayUtil.contains(pageForm.getOrigins(), "answer")) { - for (String keyword : pageForm.getCommonKeyword().split(" ")) { - seg.orLike("JSON_EXTRACT(replyTask.variable,'$.tf_opinion')", keyword); - } - } - - if (!seg.isEmpty()) { - cnd.and(seg); - } - } - - if (StrUtil.isNotBlank(pageForm.getUnderTakeUnitId())) { - cnd.andEX("pru.unitId", "=", pageForm.getUnderTakeUnitId()); - } - ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm); - cnd.groupBy("info.id"); - // 综合查询包含多表字段及聚合别名,只允许白名单字段进入排序条件。 - proposalCommonService.applySafePageOrder(cnd, pageForm, COMPREHENSIVE_ORDER_COLUMNS); - sql.setCondition(cnd); - Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); - return Result.success(pagination); + /** + * 按综合查询页面当前筛选条件和列设置导出 Excel。 + * + * @param pageForm 页面筛选及排序参数 + * @param tableColumns 列设置中当前可见的字段,顺序即 Excel 列顺序 + * @param response HTTP 响应,返回 XSSF 格式的 Excel 文件 + */ + @At + @Ok("void") + @SaCheckPermission("proposal.query.comprehensive") + @ApiOperation(value = "自定义导出综合查询列表") + public void exportCustomAsExcel(@Valid @Param("pageForm") ProposalQueryComprehensiveParam pageForm, + @Param("tableColumns") ExportTableColumns[] tableColumns, + HttpServletResponse response) { + proposalCommonService.exportComprehensiveAsExcel(pageForm, tableColumns, response); } @At diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryDelegationController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryDelegationController.java index 3ef367a3..862d75be 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryDelegationController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryDelegationController.java @@ -1,14 +1,11 @@ package com.budwk.app.zhgh.democratic.proposal.controller.query; import cn.dev33.satoken.annotation.SaCheckPermission; -import cn.hutool.core.util.StrUtil; import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.param.ExportTableColumns; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; import com.budwk.app.base.service.BaseService; -import com.budwk.app.sys.models.Sys_dict; -import com.budwk.app.sys.services.SysDictService; -import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.zhgh.democratic.proposal.param.ProposalSearchParam; import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService; import io.swagger.annotations.Api; @@ -21,10 +18,10 @@ import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; import java.util.Map; @IocBean @@ -34,15 +31,6 @@ import java.util.Map; @Api(tags = "代表团提案统计") public class ProposalQueryDelegationController { - /** - * 代表团汇总表固定列的安全排序映射,动态立案结果列在查询时追加。 - */ - private static final Map DELEGATION_SUMMARY_ORDER_COLUMNS = Map.of( - "dbtName", "dbt.name", - "TOTAL", "TOTAL", - "caseRate", "caseRateOrder" - ); - /** * 代表团提案明细表允许排序的字段映射。 */ @@ -62,10 +50,6 @@ public class ProposalQueryDelegationController { @Inject private ProposalCommonService proposalCommonService; - @Inject - private SysDictService sysDictService; - - @At("") @Ok("beetl:/platform/zhgh/democratic/proposal/query/delegation/index.html") @SaCheckPermission("proposal.query.delegation") @@ -77,48 +61,26 @@ public class ProposalQueryDelegationController { @ApiOperation("代表团提案统计") @SaCheckPermission("proposal.query.delegation") public Result pageData(PageForm pageForm, String sessionId) { - // 统计必须明确限定届次,空参数不能退化为跨届次汇总,避免页面异步初始化时展示错误数据。 - if (StrUtil.isBlank(sessionId)) { - return Result.success(List.of()); - } - List dictList = sysDictService.getSubListByCode("PROPOSAL_CASE_FILING_RESULT"); - Sql sql = Sqls.create(""" - SELECT - dbt.id, - dbt.`name` AS dbtName, - (select count(1) from proposal_info info where info.delegationId = dbt.id and info.sessionId = dbt.sessionId ) as TOTAL, - (select count(1) from proposal_info info where info.delegationId = dbt.id and info.sessionId = dbt.sessionId and info.isSubmit = 1 ) as SUBMIT_COUNT - $resultSql, - (select count(1) from proposal_info info where info.delegationId = dbt.id and info.sessionId = dbt.sessionId and info.caseFilingResult = @confirmFiling) - / NULLIF((select count(1) from proposal_info info where info.delegationId = dbt.id and info.sessionId = dbt.sessionId), 0) AS caseRateOrder - FROM - teacher_congress_delegation dbt - $condition - """); - Map summaryOrderColumns = new HashMap<>(DELEGATION_SUMMARY_ORDER_COLUMNS); - List resultSqlParts = new ArrayList<>(); - for (Sys_dict dict : dictList) { - String resultCode = dict.getCode(); - // 动态别名和立案结果编码仅允许字母、数字和下划线;变量替换后新增的 @ 参数不会被 Nutz 再次解析, - // 因此这里使用已校验的字典编码字面量,确保统计条件能正确传递给数据库。 - if (StrUtil.isBlank(resultCode) || !resultCode.matches("[A-Za-z0-9_]+")) { - continue; - } - resultSqlParts.add(", (select count(1) from proposal_info info where info.delegationId = dbt.id and info.sessionId = dbt.sessionId and info.caseFilingResult = '" + resultCode + "') AS `" + resultCode + "`"); - summaryOrderColumns.put(resultCode, "`" + resultCode + "`"); - } - sql.setVar("resultSql", String.join("", resultSqlParts)); - sql.setParam("confirmFiling", "CONFIRM_FILING"); - Cnd cnd = Cnd.NEW(); - cnd.andEX("dbt.sessionId", "=", sessionId); - if (!AuthUtil.hasRoleOr("SYSADMIN", "SCHOOL_UNION_ADMIN")) { - } - // 未选择排序时保留原有代表团编码升序,选择后仅应用白名单字段。 - if (!proposalCommonService.applySafePageOrder(cnd, pageForm, summaryOrderColumns)) { - cnd.asc("dbt.`code`"); - } - sql.setCondition(cnd); - return Result.success(baseService.listMap(sql)); + return Result.success(proposalCommonService.queryDelegationStatistics(pageForm, sessionId)); + } + + /** + * 按当前届次、排序及页面可见字段导出代表团统计。 + * + * @param pageForm 页面排序参数 + * @param sessionId 教代会届次ID + * @param tableColumns 当前可见字段 + * @param response HTTP 响应,返回 XSSF Excel + */ + @At + @Ok("void") + @ApiOperation("自定义导出代表团提案统计") + @SaCheckPermission("proposal.query.delegation") + public void exportCustomAsExcel(@Valid @Param("pageForm") PageForm pageForm, + @Param("sessionId") String sessionId, + @Param("tableColumns") ExportTableColumns[] tableColumns, + HttpServletResponse response) { + proposalCommonService.exportDelegationStatisticsAsExcel(pageForm, sessionId, tableColumns, response); } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryUnitReplyController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryUnitReplyController.java index d726b185..c1ca80b3 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryUnitReplyController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryUnitReplyController.java @@ -1,28 +1,19 @@ package com.budwk.app.zhgh.democratic.proposal.controller.query; import cn.dev33.satoken.annotation.SaCheckPermission; +import com.budwk.app.base.param.ExportTableColumns; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; -import com.budwk.app.flow.engine.util.FlowUtil; -import com.budwk.app.flow.entity.ProcessTask; -import com.budwk.app.flow.enums.ProcessTaskStateEnum; -import com.budwk.app.zhgh.democratic.proposal.models.ProposalConfig; -import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo; -import com.budwk.app.zhgh.democratic.proposal.models.ProposalReplyUnit; import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService; import lombok.extern.slf4j.Slf4j; -import org.nutz.dao.Cnd; -import org.nutz.dao.Dao; -import org.nutz.dao.Sqls; -import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; -import java.util.*; -import java.util.stream.Collectors; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; /** * 承办单位办理统计 @@ -33,16 +24,6 @@ import java.util.stream.Collectors; @Ok("json:full") public class ProposalQueryUnitReplyController { - /** - * 承办单位办理统计允许排序的字段白名单。 - */ - private static final Set UNIT_REPLY_ORDER_COLUMNS = Set.of( - "unitName", "sum", "masterSum", "masterReplySum", "masterNoReplySum", - "slaveSum", "slaveReplySum", "slaveNoReplySum" - ); - - @Inject - private Dao dao; @Inject private ProposalCommonService proposalCommonService; @@ -64,94 +45,30 @@ public class ProposalQueryUnitReplyController { * caseFilingResult:立案结果字典值,对应 proposal_info.caseFilingResult,为空时不限制立案结果。 * 返回值:Result.data 中包含 tableData 统计行列表,以及 slaveNeedReply 协办单位是否需要答复配置。 */ - // 提案配置 协办是否需要答复 - ProposalConfig proposalConfig = dao.fetch(ProposalConfig.class, Cnd.NEW()); - boolean slaveNeedReply = proposalConfig.getSlaveUnitNeedReply(); + return Result.success().addData(proposalCommonService.queryUnitReplyStatistics( + pageForm, sessionId, undertakeUnitId, caseFilingResult)); + } - // 当前届次所有的提案ID - Cnd proposalCnd = Cnd.where(ProposalInfo::getSessionId, "=", sessionId); - proposalCnd.andEX(ProposalInfo::getCaseFilingResult, "=", caseFilingResult); - List proposalIds = dao.query(ProposalInfo.class, proposalCnd) - .stream() - .map(ProposalInfo::getId) - .collect(Collectors.toList()); - - if(proposalIds.isEmpty()){ - return Result.success().addData(Map.of("tableData", Collections.EMPTY_LIST, "slaveNeedReply", slaveNeedReply)); - } - - - // 关联所有的实例ID - Sql instSql = Sqls.create("select id from wf_process_instance where businessNo in (@proposalIds)"); - instSql.setParam("proposalIds", proposalIds); - instSql.setCallback(Sqls.callback.strList()); - dao.execute(instSql); - List instIds = instSql.getList(String.class); - - // 提案委员会立案分配的承办单位 - Cnd cnd = Cnd.where(ProposalReplyUnit::getProposalId, "in", proposalIds); - cnd.andEX(ProposalReplyUnit::getUnitId, "=", undertakeUnitId); - List replyUnits = dao.query(ProposalReplyUnit.class, cnd); - - // 承办单位答复记录 - List replyTasks = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "in", instIds).and(ProcessTask::getTaskName, "in", List.of("two_unit_reply","unit_reply","master_reply", "slave_reply", "opinion_master_reply")).and(ProcessTask::getTaskState, "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.DOING.getCode()))); - - // 承办单位 - List tableData = new ArrayList<>(); - - replyUnits.stream().collect(Collectors.groupingBy(ProposalReplyUnit::getUnitCode)).forEach((k, v) -> { - NutMap tableRow = NutMap.NEW(); - tableRow.put("id", k); - v.stream().findAny().ifPresent(item -> { - tableRow.put("unitName", item.getUnitName()); - tableRow.put("unitCode", item.getUnitCode()); - }); - - // 提案总数 - tableRow.put("sum", v.size()); - // 主办提案数 - tableRow.put("masterSum", v.stream().filter(unit -> Objects.equals(unit.getUnitCode(), k) && unit.getIsMaster()).count()); - // 协办提案数 - tableRow.put("slaveSum", v.stream().filter(unit -> Objects.equals(unit.getUnitCode(), k) && !unit.getIsMaster()).count()); - - // 主办提案已答复数 - long masterReplySum = replyTasks.stream().filter(x -> - FlowUtil.variableToNutMap(x.getVariable()).getString("underTakeId", "").equals(k) - && FlowUtil.variableToNutMap(x.getVariable()).getBoolean("underTakeIsMaster") - && x.getTaskState().equals(ProcessTaskStateEnum.FINISHED.getCode()) - ).map(ProcessTask::getProcessInstanceId).distinct().count(); - - // 主办提案未答复数 - long masterNoReplySum = replyTasks.stream().filter(x -> - FlowUtil.variableToNutMap(x.getVariable()).getString("underTakeId", "").equals(k) - && FlowUtil.variableToNutMap(x.getVariable()).getBoolean("underTakeIsMaster") - && x.getTaskState().equals(ProcessTaskStateEnum.DOING.getCode()) - ).map(ProcessTask::getProcessInstanceId).distinct().count(); - - // 协办提案已答复数 - long slaveReplySum = replyTasks.stream().filter(x -> - FlowUtil.variableToNutMap(x.getVariable()).getString("underTakeId", "").equals(k) - && !FlowUtil.variableToNutMap(x.getVariable()).getBoolean("underTakeIsMaster") - && x.getTaskState().equals(ProcessTaskStateEnum.FINISHED.getCode()) - ).map(ProcessTask::getProcessInstanceId).distinct().count(); - - // 协办提案未答复数 - long slaveNoReplySum = replyTasks.stream().filter(x -> - FlowUtil.variableToNutMap(x.getVariable()).getString("underTakeId", "").equals(k) - && !FlowUtil.variableToNutMap(x.getVariable()).getBoolean("underTakeIsMaster") - && x.getTaskState().equals(ProcessTaskStateEnum.DOING.getCode()) - ).map(ProcessTask::getProcessInstanceId).distinct().count(); - - tableRow.put("masterReplySum", masterReplySum); - tableRow.put("masterNoReplySum", masterNoReplySum); - tableRow.put("slaveReplySum", slaveReplySum); - tableRow.put("slaveNoReplySum", slaveNoReplySum); - - tableData.add(tableRow); - }); - - // 统计结果生成后在服务层按白名单字段排序,避免前端字段参与任意业务处理。 - proposalCommonService.sortStatisticsRows(tableData, pageForm, UNIT_REPLY_ORDER_COLUMNS); - return Result.success().addData(Map.of("tableData", tableData, "slaveNeedReply", slaveNeedReply)); + /** + * 按当前筛选条件及页面可见字段导出承办单位办理统计。 + * + * @param pageForm 页面排序参数 + * @param sessionId 教代会届次ID + * @param undertakeUnitId 承办单位ID + * @param caseFilingResult 立案结果编码 + * @param tableColumns 当前可见字段 + * @param response HTTP 响应,返回 XSSF Excel + */ + @At + @Ok("void") + @SaCheckPermission("proposal.query.unitReply") + public void exportCustomAsExcel(@Valid @Param("pageForm") PageForm pageForm, + @Param("sessionId") String sessionId, + @Param("undertakeUnitId") String undertakeUnitId, + @Param("caseFilingResult") String caseFilingResult, + @Param("tableColumns") ExportTableColumns[] tableColumns, + HttpServletResponse response) { + proposalCommonService.exportUnitReplyStatisticsAsExcel(pageForm, sessionId, undertakeUnitId, + caseFilingResult, tableColumns, response); } } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryYearReportController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryYearReportController.java index 2c1e0549..9f5d1c34 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryYearReportController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryYearReportController.java @@ -35,6 +35,7 @@ public class ProposalQueryYearReportController { */ private static final Map YEAR_REPORT_ORDER_COLUMNS = Map.ofEntries( Map.entry("code", "info.code"), + Map.entry("caseFilingCode", "info.caseFilingCode"), Map.entry("name", "info.name"), Map.entry("createUserName", "info.createUserName"), Map.entry("typeName", "typeName"), diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalUnderTakeSatisfactionController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalUnderTakeSatisfactionController.java index 32286e40..e040a830 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalUnderTakeSatisfactionController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalUnderTakeSatisfactionController.java @@ -1,31 +1,19 @@ package com.budwk.app.zhgh.democratic.proposal.controller.query; import cn.dev33.satoken.annotation.SaCheckPermission; -import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.param.ExportTableColumns; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; -import com.budwk.app.flow.engine.util.FlowUtil; -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.sys.models.Sys_dict; -import com.budwk.app.sys.services.SysDictService; -import com.budwk.app.zhgh.democratic.proposal.models.ProposalConfig; -import com.budwk.app.zhgh.democratic.proposal.models.ProposalReplyUnit; import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService; import io.swagger.annotations.Api; -import org.nutz.dao.Cnd; -import org.nutz.dao.Dao; -import org.nutz.dao.Sqls; -import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; -import java.util.*; -import java.util.stream.Collectors; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; @IocBean @At("/platform/proposal/query/underTake/satisfaction") @@ -33,17 +21,6 @@ import java.util.stream.Collectors; @Api(tags = "提案承办单位满意度") public class ProposalUnderTakeSatisfactionController { - /** - * 满意度统计固定列的排序白名单,动态满意度列在查询时追加。 - */ - private static final Set SATISFACTION_ORDER_COLUMNS = Set.of( - "unitName", "sum", "masterSum", "slaveSum" - ); - - @Inject - private Dao dao; - @Inject - private SysDictService sysDictService; @Inject private ProposalCommonService proposalCommonService; @@ -65,80 +42,28 @@ public class ProposalUnderTakeSatisfactionController { @At @SaCheckPermission("proposal.query.underTake.satisfaction") public Result data(PageForm pageForm, String sessionId, String undertakeUnitId) { - List feedbackCodes = sysDictService.getSubListByCode("PROPOSAL_FEEDBACK"); - Set orderColumns = new HashSet<>(SATISFACTION_ORDER_COLUMNS); - // 动态满意度列仅从后端字典加入白名单,不接受前端自行扩展字段。 - feedbackCodes.stream() - .map(Sys_dict::getCode) - .filter(StrUtil::isNotBlank) - .forEach(orderColumns::add); - - // 当前届次所有的提案ID - Sql sql = Sqls.create("select id from proposal_info where sessionId = @sessionId").setParam("sessionId", sessionId); - sql.setCallback(Sqls.callback.strList()); - dao.execute(sql); - List proposalIds = sql.getList(String.class); - - if (proposalIds.isEmpty()) { - return Result.success(Collections.EMPTY_LIST); - } - - // 关联所有的实例ID - Sql instSql = Sqls.create("select id from wf_process_instance where businessNo in (@proposalIds)"); - instSql.setParam("proposalIds", proposalIds); - instSql.setCallback(Sqls.callback.strList()); - dao.execute(instSql); - List instIds = instSql.getList(String.class); - - // 提案委员会立案分配的承办单位 - Cnd cnd = Cnd.where(ProposalReplyUnit::getProposalId, "in", proposalIds); - cnd.andEX(ProposalReplyUnit::getUnitId, "=", undertakeUnitId); - List replyUnits = dao.query(ProposalReplyUnit.class, cnd); - - // 反馈评分记录 -// List feedbackTasks = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "in", instIds) -// .and(ProcessTask::getTaskName, "=", "feedback") -// .and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.FINISHED.getCode())); - - // 承办单位 - List tableData = new ArrayList<>(); - - replyUnits.stream().collect(Collectors.groupingBy(ProposalReplyUnit::getUnitCode)).forEach((k, v) -> { - NutMap tableRow = NutMap.NEW(); - tableRow.put("id", k); - v.stream().findAny().ifPresent(item -> { - tableRow.put("unitName", item.getUnitName()); - tableRow.put("unitCode", item.getUnitCode()); - }); - - // 提案总数 - tableRow.put("sum", v.size()); - // 主办提案数 - tableRow.put("masterSum", v.stream().filter(unit -> Objects.equals(unit.getUnitCode(), k) && unit.getIsMaster()).count()); - // 协办提案数 - tableRow.put("slaveSum", v.stream().filter(unit -> Objects.equals(unit.getUnitCode(), k) && !unit.getIsMaster()).count()); - - // 该单位负责的提案 - List thisUnitProposalIds = v.stream().map(ProposalReplyUnit::getProposalId).toList(); - List instances = dao.query(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", thisUnitProposalIds)); - List thisUnitInstIds = instances.stream().map(ProcessInstance::getId).toList(); - - // 反馈评分记录 - List feedbackTasks = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "in", thisUnitInstIds) - .and(ProcessTask::getTaskName, "=", "feedback") - .and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.FINISHED.getCode())); - - for (Sys_dict code : feedbackCodes) { - long count = feedbackTasks.stream().filter(task -> FlowUtil.variableToNutMap(task.getVariable()).getString("tf_feedback", "").equals(code.getCode())).map(ProcessTask::getProcessInstanceId).distinct().count(); - tableRow.put(code.getCode(), count); - } - tableData.add(tableRow); - }); - - // 汇总完成后在服务层执行白名单排序,数字列按数值顺序处理。 - proposalCommonService.sortStatisticsRows(tableData, pageForm, orderColumns); - return Result.success(tableData); + return Result.success(proposalCommonService.queryUnderTakeSatisfactionStatistics( + pageForm, sessionId, undertakeUnitId)); } - + /** + * 按当前届次、承办单位和页面可见字段导出满意度统计。 + * + * @param pageForm 页面排序参数 + * @param sessionId 教代会届次ID + * @param undertakeUnitId 承办单位ID + * @param tableColumns 当前可见字段 + * @param response HTTP 响应,返回 XSSF Excel + */ + @At + @Ok("void") + @SaCheckPermission("proposal.query.underTake.satisfaction") + public void exportCustomAsExcel(@Valid @Param("pageForm") PageForm pageForm, + @Param("sessionId") String sessionId, + @Param("undertakeUnitId") String undertakeUnitId, + @Param("tableColumns") ExportTableColumns[] tableColumns, + HttpServletResponse response) { + proposalCommonService.exportUnderTakeSatisfactionAsExcel( + pageForm, sessionId, undertakeUnitId, tableColumns, response); + } } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingController.java index f3f487a3..1c28eca4 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingController.java @@ -125,6 +125,17 @@ public class ProposalCommitteeFilingController { proposalCommonService.exportWorkflowList("committeeFiling", pageForm, approval, tableColumns, response); } + @At + @SaCheckPermission("proposal.committeeFiling") + @ApiOperation("执行单案立案审核任务") + @Aop(TransAop.READ_COMMITTED) + public Result executeTask(@Param("data") String data) { + // data 包含流程任务ID、提交类型、立案结果及主协办单位;Service 校验负责人后执行 WF,成功返回统一 Result。 + Dict args = Json.fromJson(Dict.class, data); + proposalCommitteeFilingService.executeFlowTask(args); + return Result.success(); + } + @At @SaCheckPermission("proposal.committeeFiling") @ApiOperation("并案审核") diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalDelegationController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalDelegationController.java index cd024a5a..4b24cf17 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalDelegationController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalDelegationController.java @@ -4,7 +4,6 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; -import com.budwk.app.base.param.ExportTableColumns; import com.budwk.app.base.result.Result; import com.budwk.app.base.service.BaseService; import com.budwk.app.bpm.enums.BpmProcessTaskStatusEnum; @@ -30,10 +29,8 @@ import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; -import org.nutz.mvc.annotation.Param; import javax.validation.Valid; -import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -129,13 +126,4 @@ public class ProposalDelegationController { return Result.success(pagination); } - @At - @Ok("void") - @SaCheckPermission("proposal.delegation") - @ApiOperation("导出列表") - public void exportList(@Valid @Param("pageForm") ProposalSearchParam pageForm, boolean approval, - @Param("tableColumns") ExportTableColumns[] tableColumns, HttpServletResponse response) { - proposalCommonService.exportWorkflowList("delegation", pageForm, approval, tableColumns, response); - } - } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalFeedbackEvaluationController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalFeedbackEvaluationController.java index bef308e3..537882a7 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalFeedbackEvaluationController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalFeedbackEvaluationController.java @@ -5,7 +5,6 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; -import com.budwk.app.base.param.ExportTableColumns; import com.budwk.app.base.result.Result; import com.budwk.app.flow.entity.ProcessTask; import com.budwk.app.flow.enums.ProcessTaskStateEnum; @@ -27,7 +26,6 @@ import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; import javax.validation.Valid; -import javax.servlet.http.HttpServletResponse; import java.util.List; @IocBean @@ -118,15 +116,6 @@ public class ProposalFeedbackEvaluationController { return Result.success(pagination); } - @At - @Ok("void") - @SaCheckPermission("proposal.feedbackEvaluation") - @ApiOperation("导出列表") - public void exportList(@Valid @Param("pageForm") ProposalSearchParam pageForm, boolean approval, - @Param("tableColumns") ExportTableColumns[] tableColumns, HttpServletResponse response) { - proposalCommonService.exportWorkflowList("feedbackEvaluation", pageForm, approval, tableColumns, response); - } - @At @SaCheckPermission("proposal.feedbackEvaluation") @ApiOperation("获取立案信息") diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalSecondedController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalSecondedController.java index e88c210a..ddd1f3c3 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalSecondedController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalSecondedController.java @@ -134,6 +134,9 @@ public class ProposalSecondedController { LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10 + LEFT JOIN wf_process_task dt ON dt.processInstanceId = ins.id + AND dt.taskName = 'delegation' AND dt.taskState = 20 + AND (dt.variable ->> '$.submitType') IN ('1', '2') LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10 LEFT JOIN proposal_info info ON info.id = ins.businessNo LEFT JOIN proposal_second ps ON ps.proposalId = info.id AND ps.seconderId = @seconderId @@ -157,6 +160,8 @@ public class ProposalSecondedController { } else { // 未附议页签只展示当前登录附议人尚未处理的记录。 cnd.and("ps.isAgree", "is", null); + // 团长选择同意或不同意后均截止附议;退回提案人不视为最终审核结果。 + cnd.and("dt.id", "is", null); // 待附议列表只展示两类任务: // 1. invite / second 节点任务 // 2. delegation / committee 节点,且任务状态必须是已废弃(99) @@ -216,6 +221,9 @@ public class ProposalSecondedController { if (Strings.isBlank(proposalId) || Strings.isBlank(taskActorUserId) || taskId == null || submitType == null) { return Result.error("参数错误"); } + if (proposalSecondedService.isDelegationReviewed(proposalId)) { + return Result.error("团长已完成审核,当前提案不能继续附议"); + } // 先定位 wf_process_task,确保本次请求能准确命中需要完成的附议任务,再更新两张业务表。 ProcessTask processTask = this.getSecondTask(taskId, taskActorUserId); @@ -294,6 +302,9 @@ public class ProposalSecondedController { if (args.getLong("processTaskId") == null || Strings.isBlank(proposalId) || Strings.isBlank(taskActorUserId) || submitType == null) { return Result.error("参数错误"); } + if (proposalSecondedService.isDelegationReviewed(proposalId)) { + return Result.error("团长已完成审核,当前提案不能继续附议"); + } flowCommonService.executeTask(args); proposalSecondedService.updateSecondRecord(proposalId, taskActorUserId, opinion, submitType); return Result.success(); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalUnderTakeReplyController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalUnderTakeReplyController.java index 47e4a5d8..53f9cb7c 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalUnderTakeReplyController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalUnderTakeReplyController.java @@ -5,7 +5,6 @@ import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; -import com.budwk.app.base.param.ExportTableColumns; import com.budwk.app.base.result.Result; import com.budwk.app.flow.entity.ProcessTask; import com.budwk.app.flow.enums.ProcessTaskStateEnum; @@ -38,7 +37,6 @@ import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; import javax.validation.Valid; -import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.util.List; @@ -172,15 +170,6 @@ public class ProposalUnderTakeReplyController { return Result.success(pagination); } - @At - @Ok("void") - @SaCheckPermission("proposal.unitReply") - @ApiOperation("导出列表") - public void exportList(@Valid @Param("pageForm") ProposalSearchParam pageForm, boolean approval, - @Param("tableColumns") ExportTableColumns[] tableColumns, HttpServletResponse response) { - proposalCommonService.exportWorkflowList("unitReply", pageForm, approval, tableColumns, response); - } - /** * 承办单位答复节点撤回需要基于整组当前节点判断。 * 只有“当前流程正在办理的节点”和“这条列表记录所属节点”完全一致时,才允许撤回; diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/interceptor/ProposalCaseFilingInterceptor.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/interceptor/ProposalCaseFilingInterceptor.java index 5c3a1553..4a5e8767 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/interceptor/ProposalCaseFilingInterceptor.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/interceptor/ProposalCaseFilingInterceptor.java @@ -73,6 +73,10 @@ public class ProposalCaseFilingInterceptor implements FlowInterceptor { Dict dict = JSONUtil.toBean(processTask.getVariable(), Dict.class); dict.set(FlowConst.TASK_FORM_DATA_PREFIX + "helpunitreply", helpUnitReply); processTask.setVariable(JSONUtil.toJsonStr(dict)); - dao.update(processTask); + /* + * 当前任务对象是在任务完成前加载的,其中 finishTime、operator 仍为空。 + * 这里只更新拦截器实际修改的流程变量,避免整行更新覆盖 WF 已写入的办理时间和办理人。 + */ + dao.update(processTask, "variable"); } } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/models/ProposalReplyUnit.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/models/ProposalReplyUnit.java index 25b72013..f539828a 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/models/ProposalReplyUnit.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/models/ProposalReplyUnit.java @@ -12,6 +12,9 @@ import org.nutz.dao.interceptor.annotation.PrevInsert; @Accessors(chain = true) @Table("proposal_reply_unit") @TableMeta("{'mysql-charset':'utf8mb4'}") +@TableIndexes({ + @Index(name = "INDEX_PROPOSAL_REPLY_UNIT_PROPOSAL_UNIT", fields = {"proposalId", "unitId"}, unique = false) +}) @Comment("提案信息") public class ProposalReplyUnit extends BaseModel { diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/param/ProposalQueryComprehensiveParam.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/param/ProposalQueryComprehensiveParam.java index f3776cfc..db266a56 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/param/ProposalQueryComprehensiveParam.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/param/ProposalQueryComprehensiveParam.java @@ -19,6 +19,8 @@ public class ProposalQueryComprehensiveParam extends PageForm { private String name; @ApiModelProperty(name = "提案编号") private String code; + @ApiModelProperty(name = "立案编号") + private String caseFilingCode; @ApiModelProperty(name = "教代会ID") private String sessionId; @ApiModelProperty(name = "search session id") @@ -61,15 +63,22 @@ public class ProposalQueryComprehensiveParam extends PageForm { @ApiModelProperty(name = "通用关键字") private String commonKeyword; + @ApiModelProperty(name = "提案名称或编号搜索字段,仅支持name、code、caseFilingCode") + private String proposalSearchField; + + @ApiModelProperty(name = "提案名称或编号搜索内容") + private String proposalKeyword; + @ApiModelProperty(name = "搜索关键字") private String createUserKeyword; /** - * 构建通用查询参数 + * 将综合查询参数追加到查询条件中,无返回值,处理结果直接写入 cnd。 * - * @param cnd cnd - * @param searchParam searchParam + * @param cnd 查询条件容器,用于接收届次、名称/编号、提案人、组织及立案条件 + * @param searchParam 页面查询参数;proposalSearchField 传 name、code 或 caseFilingCode, + * proposalKeyword 传对应字段的模糊搜索内容 */ public static void buildSearch(Cnd cnd, ProposalQueryComprehensiveParam searchParam) { if (cnd == null) { @@ -84,6 +93,19 @@ public class ProposalQueryComprehensiveParam extends PageForm { // Isolated single-session filter for pages that should not reuse sessionId semantics. cnd.andEX("info.sessionId", "=", searchParam.getSearchSessionId()); + // 名称/编号组合搜索仅允许三个固定字段,前端提交值不能直接作为SQL字段使用。 + if (StrUtil.isNotBlank(searchParam.getProposalKeyword())) { + String proposalSearchColumn = switch (StrUtil.blankToDefault(searchParam.getProposalSearchField(), "name")) { + case "name" -> "info.name"; + case "code" -> "info.code"; + case "caseFilingCode" -> "info.caseFilingCode"; + default -> null; + }; + if (proposalSearchColumn != null) { + cnd.where().andLike(proposalSearchColumn, searchParam.getProposalKeyword()); + } + } + //提案名称 if (StrUtil.isNotBlank(searchParam.getName())) { cnd.where().andLike("info.name", searchParam.getName()); @@ -92,6 +114,10 @@ public class ProposalQueryComprehensiveParam extends PageForm { if (StrUtil.isNotBlank(searchParam.getCode())) { cnd.where().andLike("info.code", searchParam.getCode()); } + // 立案编号由立案环节生成,支持按已生成编号进行模糊检索。 + if (StrUtil.isNotBlank(searchParam.getCaseFilingCode())) { + cnd.where().andLike("info.caseFilingCode", searchParam.getCaseFilingCode()); + } //代表团ID cnd.andEX("info.delegationId", "=", searchParam.getDelegationId()); if (StrUtil.isNotBlank(searchParam.getCreateUserName())) { diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/param/ProposalSearchParam.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/param/ProposalSearchParam.java index 4694ac8b..0b94239e 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/param/ProposalSearchParam.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/param/ProposalSearchParam.java @@ -24,17 +24,34 @@ public class ProposalSearchParam extends PageForm { private String createUserLoginName; private String createUserKeyword; private String caseFilingResult; + /** 名称/编号组合搜索字段,仅支持 name、code、caseFilingCode。 */ + private String proposalSearchField; + /** 名称/编号组合搜索内容。 */ + private String proposalKeyword; /** - * 构建通用查询参数 + * 将提案列表参数追加到查询条件中,无返回值,处理结果直接写入 cnd。 * - * @param cnd cnd - * @param searchParam searchParam + * @param cnd 查询条件容器,用于接收名称/编号、届次、提案人及立案结果条件 + * @param searchParam 页面查询参数;proposalSearchField 传 name、code 或 caseFilingCode, + * proposalKeyword 传对应字段的模糊搜索内容 */ public static void buildSearch(Cnd cnd, ProposalSearchParam searchParam) { if (cnd == null) { cnd = Cnd.NEW(); } + // 搜索字段通过固定白名单转换,禁止把前端字段名直接用于SQL条件。 + if (StrUtil.isNotBlank(searchParam.getProposalKeyword())) { + String proposalSearchColumn = switch (StrUtil.blankToDefault(searchParam.getProposalSearchField(), "name")) { + case "name" -> "info.name"; + case "code" -> "info.code"; + case "caseFilingCode" -> "info.caseFilingCode"; + default -> null; + }; + if (proposalSearchColumn != null) { + cnd.where().andLike(proposalSearchColumn, searchParam.getProposalKeyword()); + } + } if (StrUtil.isNotBlank(searchParam.getName())) { cnd.where().andLike("info.name", searchParam.getName()); } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/ProposalCommitteeFilingService.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/ProposalCommitteeFilingService.java index e7402f76..2f3138cb 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/ProposalCommitteeFilingService.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/ProposalCommitteeFilingService.java @@ -6,6 +6,15 @@ import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo; public interface ProposalCommitteeFilingService extends BaseService { + /** + * 提案委员会单案立案审核。 + * 正常提交确认立案或工作建议时,先校验所选承办单位是否均已配置负责人,再执行 WF 流程任务。 + * + * @param args 页面提交的流程参数,包括 processTaskId、submitType、tf_caseFilingResult、 + * tf_masterUnitIds、tf_slaveUnitIds 等字段;方法无返回值,校验失败时抛出业务异常 + */ + void executeFlowTask(Dict args); + /** * 提案委员会并案审核。 * diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/ProposalSecondedService.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/ProposalSecondedService.java index fcef3ce8..4edba6aa 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/ProposalSecondedService.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/ProposalSecondedService.java @@ -5,6 +5,14 @@ import com.budwk.app.zhgh.democratic.proposal.models.ProposalSecond; public interface ProposalSecondedService extends BaseService { + /** + * 判断团长是否已经对当前提案作出同意或不同意的审核结果。 + * + * @param proposalId 提案ID,用于定位当前提案对应的最新工作流实例 + * @return true 表示团长已同意或不同意,不能继续附议;false 表示仍可按原流程附议 + */ + boolean isDelegationReviewed(String proposalId); + /** * 仅更新附议表 proposal_second 中当前附议人的附议结果。 * 参数说明: diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonService.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonService.java index 527d3a09..3ee2de78 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonService.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonService.java @@ -174,6 +174,25 @@ public interface ProposalCommonService extends BaseService { */ void updateStateCode(String id, Integer stateCode); + /** + * 分页查询提案综合列表。 + * + * @param pageForm 综合查询页面提交的筛选、排序和分页参数;origins 指定通用关键字的检索范围, + * commonKeyword 为通用关键字,其余字段对应页面各独立筛选项 + * @return Pagination 分页结果,list 中每项包含提案、流程状态、当前节点及承办单位汇总字段 + */ + Pagination queryComprehensive(ProposalQueryComprehensiveParam pageForm); + + /** + * 按综合查询页面当前筛选条件和可见字段导出 Excel。 + * + * @param pageForm 综合查询页面提交的筛选和排序参数;导出全部匹配记录,不受当前分页限制 + * @param tableColumns 列设置中当前可见的字段,数组顺序即 Excel 列顺序 + * @param response HTTP 响应,方法直接输出 XSSF 格式的 Excel 文件 + */ + void exportComprehensiveAsExcel(ProposalQueryComprehensiveParam pageForm, + ExportTableColumns[] tableColumns, HttpServletResponse response); + /** * 查询提案征集进度列表。 * 查询结果与页面既有筛选、排序语义保持一致,内部使用聚合关联避免逐行执行统计子查询。 @@ -183,6 +202,85 @@ public interface ProposalCommonService extends BaseService { */ Pagination queryCollectProgress(ProposalQueryComprehensiveParam pageForm); + /** + * 按征集进度页面当前筛选条件和可见字段导出 Excel。 + * + * @param pageForm 征集进度页面筛选及排序参数,导出全部匹配记录 + * @param tableColumns 列设置中当前可见字段,数组顺序即 Excel 列顺序 + * @param response HTTP 响应,方法直接输出 XSSF Excel + */ + void exportCollectProgressAsExcel(ProposalQueryComprehensiveParam pageForm, + ExportTableColumns[] tableColumns, HttpServletResponse response); + + /** + * 查询指定届次的代表团提案统计。 + * + * @param pageForm 排序参数 + * @param sessionId 教代会届次ID + * @return 代表团统计行,包含动态立案结果数量和立案率计算字段 + */ + List queryDelegationStatistics(PageForm pageForm, String sessionId); + + /** + * 导出代表团提案统计。 + * + * @param pageForm 当前排序参数 + * @param sessionId 教代会届次ID + * @param tableColumns 当前可见统计字段 + * @param response HTTP 响应,方法直接输出 XSSF Excel + */ + void exportDelegationStatisticsAsExcel(PageForm pageForm, String sessionId, + ExportTableColumns[] tableColumns, HttpServletResponse response); + + /** + * 查询承办单位办理统计。 + * + * @param pageForm 排序参数 + * @param sessionId 教代会届次ID + * @param undertakeUnitId 承办单位ID,为空时统计全部单位 + * @param caseFilingResult 立案结果编码,为空时不限制 + * @return NutMap,tableData 为统计行,slaveNeedReply 表示协办单位是否需要答复 + */ + NutMap queryUnitReplyStatistics(PageForm pageForm, String sessionId, + String undertakeUnitId, String caseFilingResult); + + /** + * 导出承办单位办理统计。 + * + * @param pageForm 当前排序参数 + * @param sessionId 教代会届次ID + * @param undertakeUnitId 承办单位ID + * @param caseFilingResult 立案结果编码 + * @param tableColumns 当前可见统计字段 + * @param response HTTP 响应,方法直接输出 XSSF Excel + */ + void exportUnitReplyStatisticsAsExcel(PageForm pageForm, String sessionId, String undertakeUnitId, + String caseFilingResult, ExportTableColumns[] tableColumns, + HttpServletResponse response); + + /** + * 查询承办单位满意度统计。 + * + * @param pageForm 排序参数 + * @param sessionId 教代会届次ID + * @param undertakeUnitId 承办单位ID,为空时统计全部单位 + * @return 满意度统计行,动态满意度字段使用字典编码作为键 + */ + List queryUnderTakeSatisfactionStatistics(PageForm pageForm, String sessionId, + String undertakeUnitId); + + /** + * 导出承办单位满意度统计。 + * + * @param pageForm 当前排序参数 + * @param sessionId 教代会届次ID + * @param undertakeUnitId 承办单位ID + * @param tableColumns 当前可见统计字段 + * @param response HTTP 响应,方法直接输出 XSSF Excel + */ + void exportUnderTakeSatisfactionAsExcel(PageForm pageForm, String sessionId, String undertakeUnitId, + ExportTableColumns[] tableColumns, HttpServletResponse response); + /** * 按提案去重统计指定届次各流程节点的待办和已办数量。 * diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java index c24e380c..2e980dff 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java @@ -82,6 +82,18 @@ import java.util.stream.Collectors; @IocBean(args = {"refer:dao"}) public class ProposalCommonServiceImpl extends BaseServiceImpl implements ProposalCommonService { + /** 确定立案提案的 Word 模板编码。 */ + private static final String PROPOSAL_CONFIRM_FILING_TEMPLATE_CODE = "proposal_confirm_filing"; + + /** 工作建议提案的 Word 模板编码。 */ + private static final String PROPOSAL_SUGGESTION_TEMPLATE_CODE = "proposal_suggestion"; + + /** 不予立案提案的 Word 模板编码。 */ + private static final String PROPOSAL_NOT_TEMPLATE_CODE = "proposal_not"; + + /** 历史提案立案结果为空或无法识别时使用的原 Word 模板编码。 */ + private static final String PROPOSAL_DEFAULT_TEMPLATE_CODE = "proposal"; + /** PC端提案列表页面的排序字段白名单,页面代码由对应Controller固定传入。 */ private static final Map> PROPOSAL_LIST_ORDER_COLUMNS = createProposalListOrderColumns(); @@ -91,6 +103,7 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp /** 征集进度页面允许排序的字段,避免排序参数直接拼接到SQL。 */ private static final Map COLLECT_PROGRESS_ORDER_COLUMNS = Map.ofEntries( Map.entry("code", "info.code"), + Map.entry("caseFilingCode", "info.caseFilingCode"), Map.entry("name", "info.name"), Map.entry("createUserName", "info.createUserName"), Map.entry("delegationName", "delegationName"), @@ -100,6 +113,68 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp Map.entry("instanceState", "instanceState") ); + /** 征集进度页面允许自定义导出的字段及固定表头。 */ + private static final Map COLLECT_PROGRESS_EXPORT_COLUMNS = Map.ofEntries( + Map.entry("code", "提案编号"), + Map.entry("caseFilingCode", "立案编号"), + Map.entry("name", "提案名称"), + Map.entry("createUserName", "提案人"), + Map.entry("delegationName", "代表团"), + Map.entry("inviteCount", "邀请附议人数"), + Map.entry("finishCount", "已附议人数"), + Map.entry("curTaskName", "当前节点"), + Map.entry("instanceState", "流程状态") + ); + + /** 代表团统计固定字段的安全排序映射,动态立案结果字段由后端字典追加。 */ + private static final Map DELEGATION_SUMMARY_ORDER_COLUMNS = Map.of( + "dbtName", "dbt.name", + "TOTAL", "TOTAL", + "caseRate", "caseRateOrder" + ); + + /** 承办单位办理统计允许排序的字段白名单。 */ + private static final Set UNIT_REPLY_ORDER_COLUMNS = Set.of( + "unitName", "sum", "masterSum", "masterReplySum", "masterNoReplySum", + "slaveSum", "slaveReplySum", "slaveNoReplySum" + ); + + /** 满意度统计固定字段的排序白名单,动态满意度字段由后端字典追加。 */ + private static final Set SATISFACTION_ORDER_COLUMNS = Set.of( + "unitName", "sum", "masterSum", "slaveSum" + ); + + /** 综合查询页面允许排序的字段,避免前端排序参数直接进入SQL。 */ + private static final Map COMPREHENSIVE_ORDER_COLUMNS = Map.ofEntries( + Map.entry("code", "info.code"), + Map.entry("caseFilingCode", "info.caseFilingCode"), + Map.entry("name", "info.name"), + Map.entry("createUserName", "info.createUserName"), + Map.entry("typeName", "typeName"), + Map.entry("delegationName", "delegationName"), + Map.entry("caseFilingResult", "info.caseFilingResult"), + Map.entry("caseFilingType", "info.caseFilingType"), + Map.entry("merge", "merge"), + Map.entry("undertakeUnits", "undertakeUnitsOrder"), + Map.entry("curTaskName", "curTaskName"), + Map.entry("instanceState", "instanceState") + ); + + /** 综合查询页面允许自定义导出的字段及固定表头,防止请求伪造页面外字段。 */ + private static final Map COMPREHENSIVE_EXPORT_COLUMNS = Map.ofEntries( + Map.entry("code", "提案编号"), + Map.entry("caseFilingCode", "立案编号"), + Map.entry("name", "提案名称"), + Map.entry("createUserName", "提案人"), + Map.entry("typeName", "提案类别"), + Map.entry("delegationName", "代表团"), + Map.entry("caseFilingResult", "立案结果"), + Map.entry("merge", "是否并案"), + Map.entry("undertakeUnits", "承办单位"), + Map.entry("curTaskName", "当前节点"), + Map.entry("instanceState", "流程状态") + ); + //找出富文本里面上传的图片 static String IMG_SRC_REGEX = "]*src\\s*=\\s*([\"'])(/platform/sys/file/download\\?id=.*?)\\1[^>]*>"; @@ -122,6 +197,223 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp super(dao); } + /** + * 分页查询提案综合列表。 + * 普通查询不关联历史任务表;仅在 origins 包含 answer 且 commonKeyword 非空时, + * 才关联答复任务变量,避免每条提案与全部历史任务产生大量中间结果。 + * + * @param pageForm 综合查询页面的筛选、排序和分页参数 + * @return 包含提案基本信息、流程状态和承办单位汇总字段的分页结果 + */ + @Override + public Pagination queryComprehensive(ProposalQueryComprehensiveParam pageForm) { + boolean searchAnswer = ArrayUtil.contains(pageForm.getOrigins(), "answer") + && StrUtil.isNotBlank(pageForm.getCommonKeyword()); + String answerTaskJoin = searchAnswer + ? "LEFT JOIN wf_process_task replyTask ON replyTask.processInstanceId = ins.id" + : ""; + + Sql sql = Sqls.create(""" + SELECT + info.*, + IF(mer.proposalId IS NOT NULL, 1, 0) AS merge, + type.name AS typeName, + tcs.fullName AS sessionName, + tcd.`name` AS delegationName, + ins.id AS instanceId, + ins.businessNo, + ins.state AS instanceState, + ins.variable AS instanceVariable, + ins.processDefineId AS instanceProcessDefineId, + t.displayName AS curTaskName, + GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 1 THEN pru.unitName END) AS masterUnitName, + GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames, + GROUP_CONCAT(DISTINCT pru.unitName ORDER BY pru.isMaster DESC, pru.unitName) AS undertakeUnitsOrder + FROM proposal_info info + LEFT JOIN proposal_type type ON type.id = info.typeId + LEFT JOIN proposal_merge mer ON mer.proposalId = info.id + LEFT JOIN teacher_congress_session tcs ON tcs.id = info.sessionId + LEFT JOIN teacher_congress_delegation tcd ON tcd.id = info.delegationId + LEFT JOIN teacher_congress_delegate tcde + ON tcde.loginName = info.createUserLoginName AND tcde.sessionId = info.sessionId + LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id + LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10 + LEFT JOIN proposal_reply_unit pru ON pru.proposalId = info.id + %s + $condition + """.formatted(answerTaskJoin)); + Cnd dataCnd = buildComprehensiveCondition(pageForm, searchAnswer); + dataCnd.groupBy("info.id"); + applySafePageOrder(dataCnd, pageForm, COMPREHENSIVE_ORDER_COLUMNS); + sql.setCondition(dataCnd); + + // 总数查询只保留筛选需要的表,不重复执行列表字段聚合和排序。 + String countDelegateJoin = StrUtil.isNotBlank(pageForm.getUnionId()) || StrUtil.isNotBlank(pageForm.getUnitId()) + ? "LEFT JOIN teacher_congress_delegate tcde ON tcde.loginName = info.createUserLoginName AND tcde.sessionId = info.sessionId" + : ""; + String countInstanceJoin = searchAnswer + ? "LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id" + : ""; + String countReplyUnitJoin = StrUtil.isNotBlank(pageForm.getUnderTakeUnitId()) + ? "LEFT JOIN proposal_reply_unit pru ON pru.proposalId = info.id" + : ""; + Sql countSql = Sqls.create(""" + SELECT COUNT(DISTINCT info.id) + FROM proposal_info info + %s + %s + %s + %s + $condition + """.formatted(countDelegateJoin, countInstanceJoin, countReplyUnitJoin, answerTaskJoin)); + countSql.setCondition(buildComprehensiveCondition(pageForm, searchAnswer)); + return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql, countSql); + } + + /** + * 按综合查询页面当前筛选条件和列设置导出 Excel。 + * 查询条件与分页列表共用 buildComprehensiveCondition,确保届次、组织及万能搜索口径一致; + * tableColumns 只决定导出字段和顺序,不参与 SQL 字段拼接。 + * + * @param pageForm 综合查询页面筛选及排序参数,导出不受分页参数限制 + * @param tableColumns 列设置中当前可见字段,数组顺序即 Excel 列顺序 + * @param response HTTP 响应,返回 XSSF 格式的 Excel 文件 + */ + @Override + public void exportComprehensiveAsExcel(ProposalQueryComprehensiveParam pageForm, + ExportTableColumns[] tableColumns, HttpServletResponse response) { + List exportColumns = getComprehensiveExportColumns(tableColumns); + if (exportColumns.isEmpty()) { + throw new BaseException("请至少选择一个导出字段"); + } + + boolean searchAnswer = ArrayUtil.contains(pageForm.getOrigins(), "answer") + && StrUtil.isNotBlank(pageForm.getCommonKeyword()); + String answerTaskJoin = searchAnswer + ? "LEFT JOIN wf_process_task replyTask ON replyTask.processInstanceId = ins.id" + : ""; + Sql sql = Sqls.create(""" + SELECT + info.*, + IF(mer.proposalId IS NOT NULL, 1, 0) AS merge, + type.name AS typeName, + tcs.fullName AS sessionName, + tcd.`name` AS delegationName, + ins.state AS instanceState, + t.displayName AS curTaskName, + GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 1 THEN pru.unitName END) AS masterUnitName, + GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames, + GROUP_CONCAT(DISTINCT pru.unitName ORDER BY pru.isMaster DESC, pru.unitName) AS undertakeUnitsOrder + FROM proposal_info info + LEFT JOIN proposal_type type ON type.id = info.typeId + LEFT JOIN proposal_merge mer ON mer.proposalId = info.id + LEFT JOIN teacher_congress_session tcs ON tcs.id = info.sessionId + LEFT JOIN teacher_congress_delegation tcd ON tcd.id = info.delegationId + LEFT JOIN teacher_congress_delegate tcde + ON tcde.loginName = info.createUserLoginName AND tcde.sessionId = info.sessionId + LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id + LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10 + LEFT JOIN proposal_reply_unit pru ON pru.proposalId = info.id + %s + $condition + """.formatted(answerTaskJoin)); + Cnd cnd = buildComprehensiveCondition(pageForm, searchAnswer); + cnd.groupBy("info.id"); + applySafePageOrder(cnd, pageForm, COMPREHENSIVE_ORDER_COLUMNS); + sql.setCondition(cnd); + List rows = listMap(sql); + if (rows.isEmpty()) { + throw new BaseException("当前筛选条件下没有可导出的提案数据"); + } + convertComprehensiveExportValues(rows); + + List excelColumns = exportColumns.stream() + .map(column -> new ExcelExportEntity(column.getLabel(), column.getProp(), 20)) + .collect(Collectors.toList()); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setTitle("提案综合查询"); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, excelColumns, rows); + CommonDownloadUtil.download("提案综合查询.xlsx", workbook, response); + } + + /** + * 按页面字段白名单过滤导出列,并使用后端固定表头,避免伪造字段或重复字段进入 Excel。 + * + * @param tableColumns 页面提交的当前可见列 + * @return 校验后的导出列,保持页面列设置顺序 + */ + private List getComprehensiveExportColumns(ExportTableColumns[] tableColumns) { + if (ArrayUtil.isEmpty(tableColumns)) { + return List.of(); + } + List exportColumns = new ArrayList<>(); + Set selectedProps = new HashSet<>(); + for (ExportTableColumns column : tableColumns) { + if (column == null || !COMPREHENSIVE_EXPORT_COLUMNS.containsKey(column.getProp()) + || !selectedProps.add(column.getProp())) { + continue; + } + ExportTableColumns safeColumn = new ExportTableColumns(); + safeColumn.setProp(column.getProp()); + safeColumn.setLabel(COMPREHENSIVE_EXPORT_COLUMNS.get(column.getProp())); + exportColumns.add(safeColumn); + } + return exportColumns; + } + + /** 将字典、枚举及组合字段转换为与综合查询列表一致的展示文本。 */ + private void convertComprehensiveExportValues(List rows) { + Map caseFilingResultMap = sysDictService.getSubListByCode("PROPOSAL_CASE_FILING_RESULT") + .stream().collect(Collectors.toMap(Sys_dict::getCode, Sys_dict::getName)); + Map processStateMap = Arrays.stream(ProcessInstanceStateEnum.values()) + .collect(Collectors.toMap(ProcessInstanceStateEnum::getCode, ProcessInstanceStateEnum::getMessage)); + for (NutMap row : rows) { + // 承办单位必须在立案结果转换为中文前拼接,否则无法判断立案与建议两种展示口径。 + row.put("undertakeUnits", formatUndertakeUnits(row)); + row.put("merge", row.getInt("merge", 0) == 1 ? "是" : "否"); + String caseFilingResult = row.getString("caseFilingResult"); + row.put("caseFilingResult", caseFilingResultMap.getOrDefault(caseFilingResult, caseFilingResult)); + Integer instanceState = row.getInt("instanceState"); + row.put("instanceState", processStateMap.getOrDefault(instanceState, row.getString("instanceState"))); + } + } + + /** + * 构建综合列表和总数查询共用的筛选条件,保证分页总数与列表数据范围一致。 + * 通用关键字中的多个词沿用原页面的 OR 关系;未选择检索范围或关键字为空时不追加条件。 + * + * @param pageForm 综合查询页面筛选参数 + * @param searchAnswer 是否需要检索工作流任务变量中的答复内容 + * @return 不包含分组和排序的查询条件 + */ + private Cnd buildComprehensiveCondition(ProposalQueryComprehensiveParam pageForm, boolean searchAnswer) { + Cnd cnd = Cnd.NEW(); + if (ArrayUtil.isNotEmpty(pageForm.getOrigins()) && StrUtil.isNotBlank(pageForm.getCommonKeyword())) { + SqlExpressionGroup keywordCondition = new SqlExpressionGroup(); + for (String keyword : pageForm.getCommonKeyword().split(" ")) { + if (ArrayUtil.contains(pageForm.getOrigins(), "name")) { + keywordCondition.orLike("info.name", keyword); + } + if (ArrayUtil.contains(pageForm.getOrigins(), "brief")) { + keywordCondition.orLike("info.brief", keyword); + } + if (ArrayUtil.contains(pageForm.getOrigins(), "createUserName")) { + keywordCondition.orLike("info.createUserName", keyword); + keywordCondition.orLike("info.createUserLoginName", keyword); + } + if (searchAnswer) { + keywordCondition.orLike("JSON_EXTRACT(replyTask.variable,'$.tf_opinion')", keyword); + } + } + if (!keywordCondition.isEmpty()) { + cnd.and(keywordCondition); + } + } + ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm); + return cnd; + } + /** * 分页查询提案征集进度。 * 附议人数和已附议人数使用分组结果关联,避免原查询对每一条提案重复执行统计子查询; @@ -132,11 +424,48 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp */ @Override public Pagination queryCollectProgress(ProposalQueryComprehensiveParam pageForm) { + Sql sql = buildCollectProgressListSql(pageForm); + + Sql countSql = Sqls.create(""" + SELECT COUNT(DISTINCT info.id) + FROM proposal_info info + LEFT JOIN teacher_congress_delegate tcde ON tcde.loginName = info.createUserLoginName + LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id + LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10 + $condition + """); + countSql.setCondition(buildCollectProgressCondition(pageForm)); + return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql, countSql); + } + + /** + * 按征集进度页面当前筛选条件和可见字段导出全部匹配数据。 + * + * @param pageForm 页面筛选及排序参数 + * @param tableColumns 当前可见字段,顺序即 Excel 列顺序 + * @param response HTTP 响应,直接输出 XSSF Excel + */ + @Override + public void exportCollectProgressAsExcel(ProposalQueryComprehensiveParam pageForm, + ExportTableColumns[] tableColumns, HttpServletResponse response) { + List rows = listMap(buildCollectProgressListSql(pageForm)); + Map processStateMap = Arrays.stream(ProcessInstanceStateEnum.values()) + .collect(Collectors.toMap(ProcessInstanceStateEnum::getCode, ProcessInstanceStateEnum::getMessage)); + for (NutMap row : rows) { + Integer instanceState = row.getInt("instanceState"); + row.put("instanceState", processStateMap.getOrDefault(instanceState, row.getString("instanceState"))); + } + exportRowsAsExcel("提案征集进度", rows, tableColumns, COLLECT_PROGRESS_EXPORT_COLUMNS, response); + } + + /** 构建征集进度分页和导出共用的数据查询,保证两处筛选、分组及排序口径一致。 */ + private Sql buildCollectProgressListSql(ProposalQueryComprehensiveParam pageForm) { Sql sql = Sqls.create(""" SELECT info.id, info.name, info.code, + info.caseFilingCode, info.createUserName, type.NAME AS typeName, tcs.fullName AS sessionName, @@ -170,17 +499,7 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp dataCnd.groupBy("info.id"); applySafePageOrder(dataCnd, pageForm, COLLECT_PROGRESS_ORDER_COLUMNS); sql.setCondition(dataCnd); - - Sql countSql = Sqls.create(""" - SELECT COUNT(DISTINCT info.id) - FROM proposal_info info - LEFT JOIN teacher_congress_delegate tcde ON tcde.loginName = info.createUserLoginName - LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id - LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10 - $condition - """); - countSql.setCondition(buildCollectProgressCondition(pageForm)); - return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql, countSql); + return sql; } /** @@ -244,6 +563,301 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp return cnd; } + /** + * 查询指定届次的代表团提案统计,动态立案结果字段仅使用已校验的后端字典编码。 + * + * @param pageForm 排序参数 + * @param sessionId 教代会届次ID;为空时返回空列表,避免跨届次统计 + * @return 代表团统计行,包含各立案结果数量和立案率排序值 + */ + @Override + public List queryDelegationStatistics(PageForm pageForm, String sessionId) { + if (StrUtil.isBlank(sessionId)) { + return List.of(); + } + List dictList = sysDictService.getSubListByCode("PROPOSAL_CASE_FILING_RESULT"); + Sql sql = Sqls.create(""" + SELECT + dbt.id, + dbt.`name` AS dbtName, + (SELECT COUNT(1) FROM proposal_info info WHERE info.delegationId = dbt.id AND info.sessionId = dbt.sessionId) AS TOTAL, + (SELECT COUNT(1) FROM proposal_info info WHERE info.delegationId = dbt.id AND info.sessionId = dbt.sessionId AND info.isSubmit = 1) AS SUBMIT_COUNT + $resultSql, + (SELECT COUNT(1) FROM proposal_info info WHERE info.delegationId = dbt.id AND info.sessionId = dbt.sessionId AND info.caseFilingResult = @confirmFiling) + / NULLIF((SELECT COUNT(1) FROM proposal_info info WHERE info.delegationId = dbt.id AND info.sessionId = dbt.sessionId), 0) AS caseRateOrder + FROM teacher_congress_delegation dbt + $condition + """); + Map orderColumns = new HashMap<>(DELEGATION_SUMMARY_ORDER_COLUMNS); + List resultSqlParts = new ArrayList<>(); + for (Sys_dict dict : dictList) { + String resultCode = dict.getCode(); + // 动态 SQL 别名和字面量只接受字母、数字、下划线,避免字典异常值进入 SQL 结构。 + if (StrUtil.isBlank(resultCode) || !resultCode.matches("[A-Za-z0-9_]+")) { + continue; + } + resultSqlParts.add(", (SELECT COUNT(1) FROM proposal_info info WHERE info.delegationId = dbt.id AND info.sessionId = dbt.sessionId AND info.caseFilingResult = '" + + resultCode + "') AS `" + resultCode + "`"); + orderColumns.put(resultCode, "`" + resultCode + "`"); + } + sql.setVar("resultSql", String.join("", resultSqlParts)); + sql.setParam("confirmFiling", "CONFIRM_FILING"); + Cnd cnd = Cnd.where("dbt.sessionId", "=", sessionId); + if (!applySafePageOrder(cnd, pageForm, orderColumns)) { + cnd.asc("dbt.`code`"); + } + sql.setCondition(cnd); + return listMap(sql); + } + + /** + * 导出代表团统计,导出字段由页面当前可见列决定,字段名称以服务端字典为准。 + * + * @param pageForm 排序参数 + * @param sessionId 教代会届次ID + * @param tableColumns 当前可见字段 + * @param response HTTP 响应,直接输出 XSSF Excel + */ + @Override + public void exportDelegationStatisticsAsExcel(PageForm pageForm, String sessionId, + ExportTableColumns[] tableColumns, HttpServletResponse response) { + List rows = queryDelegationStatistics(pageForm, sessionId); + for (NutMap row : rows) { + int total = row.getInt("TOTAL", 0); + int confirmFiling = row.getInt("CONFIRM_FILING", 0); + row.put("caseRate", total == 0 ? "" : String.format(Locale.ROOT, "%.2f%%", confirmFiling * 100.0 / total)); + } + Map allowedColumns = new LinkedHashMap<>(); + allowedColumns.put("dbtName", "代表团名称"); + allowedColumns.put("TOTAL", "提案总数"); + for (Sys_dict dict : sysDictService.getSubListByCode("PROPOSAL_CASE_FILING_RESULT")) { + if (StrUtil.isNotBlank(dict.getCode()) && dict.getCode().matches("[A-Za-z0-9_]+")) { + allowedColumns.put(dict.getCode(), dict.getName()); + } + } + allowedColumns.put("caseRate", "立案率"); + exportRowsAsExcel("代表团提案统计", rows, tableColumns, allowedColumns, response); + } + + /** + * 查询承办单位办理统计,返回统计行及协办单位是否需要答复的配置。 + * + * @param pageForm 排序参数 + * @param sessionId 教代会届次ID + * @param undertakeUnitId 承办单位ID,为空时统计全部单位 + * @param caseFilingResult 立案结果编码,为空时不限制 + * @return tableData 为统计行,slaveNeedReply 为协办答复配置 + */ + @Override + public NutMap queryUnitReplyStatistics(PageForm pageForm, String sessionId, + String undertakeUnitId, String caseFilingResult) { + ProposalConfig proposalConfig = dao().fetch(ProposalConfig.class, Cnd.NEW()); + boolean slaveNeedReply = proposalConfig != null && Boolean.TRUE.equals(proposalConfig.getSlaveUnitNeedReply()); + Cnd proposalCnd = Cnd.where(ProposalInfo::getSessionId, "=", sessionId); + proposalCnd.andEX(ProposalInfo::getCaseFilingResult, "=", caseFilingResult); + List proposalIds = dao().query(ProposalInfo.class, proposalCnd).stream() + .map(ProposalInfo::getId).collect(Collectors.toList()); + if (proposalIds.isEmpty()) { + return NutMap.NEW().addv("tableData", List.of()).addv("slaveNeedReply", slaveNeedReply); + } + + Sql instanceSql = Sqls.create("SELECT id FROM wf_process_instance WHERE businessNo IN (@proposalIds)"); + instanceSql.setParam("proposalIds", proposalIds); + instanceSql.setCallback(Sqls.callback.strList()); + dao().execute(instanceSql); + List instanceIds = instanceSql.getList(String.class); + + Cnd replyUnitCnd = Cnd.where(ProposalReplyUnit::getProposalId, "in", proposalIds); + replyUnitCnd.andEX(ProposalReplyUnit::getUnitId, "=", undertakeUnitId); + List replyUnits = dao().query(ProposalReplyUnit.class, replyUnitCnd); + List replyTasks = instanceIds.isEmpty() ? List.of() : dao().query(ProcessTask.class, + Cnd.where(ProcessTask::getProcessInstanceId, "in", instanceIds) + .and(ProcessTask::getTaskName, "in", List.of("two_unit_reply", "unit_reply", "master_reply", "slave_reply", "opinion_master_reply")) + .and(ProcessTask::getTaskState, "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.DOING.getCode()))); + + List tableData = new ArrayList<>(); + replyUnits.stream().collect(Collectors.groupingBy(ProposalReplyUnit::getUnitCode)).forEach((unitCode, units) -> { + NutMap tableRow = NutMap.NEW().addv("id", unitCode); + units.stream().findAny().ifPresent(item -> { + tableRow.put("unitName", item.getUnitName()); + tableRow.put("unitCode", item.getUnitCode()); + }); + tableRow.put("sum", units.size()); + tableRow.put("masterSum", units.stream().filter(unit -> Boolean.TRUE.equals(unit.getIsMaster())).count()); + tableRow.put("slaveSum", units.stream().filter(unit -> !Boolean.TRUE.equals(unit.getIsMaster())).count()); + + long masterReplySum = countUnitReplyTasks(replyTasks, unitCode, true, ProcessTaskStateEnum.FINISHED.getCode()); + long masterNoReplySum = countUnitReplyTasks(replyTasks, unitCode, true, ProcessTaskStateEnum.DOING.getCode()); + long slaveReplySum = countUnitReplyTasks(replyTasks, unitCode, false, ProcessTaskStateEnum.FINISHED.getCode()); + long slaveNoReplySum = countUnitReplyTasks(replyTasks, unitCode, false, ProcessTaskStateEnum.DOING.getCode()); + tableRow.put("masterReplySum", masterReplySum); + tableRow.put("masterNoReplySum", masterNoReplySum); + tableRow.put("slaveReplySum", slaveReplySum); + tableRow.put("slaveNoReplySum", slaveNoReplySum); + tableData.add(tableRow); + }); + sortStatisticsRows(tableData, pageForm, UNIT_REPLY_ORDER_COLUMNS); + return NutMap.NEW().addv("tableData", tableData).addv("slaveNeedReply", slaveNeedReply); + } + + /** 按承办单位、主协办标识和任务状态,对流程实例去重统计答复数量。 */ + private long countUnitReplyTasks(List replyTasks, String unitCode, boolean master, int taskState) { + return replyTasks.stream().filter(task -> { + NutMap variables = FlowUtil.variableToNutMap(task.getVariable()); + return Objects.equals(unitCode, variables.getString("underTakeId", "")) + && master == Boolean.TRUE.equals(variables.getBoolean("underTakeIsMaster")) + && Objects.equals(task.getTaskState(), taskState); + }).map(ProcessTask::getProcessInstanceId).distinct().count(); + } + + /** 按承办单位办理统计页面当前可见字段导出全部统计行。 */ + @Override + public void exportUnitReplyStatisticsAsExcel(PageForm pageForm, String sessionId, String undertakeUnitId, + String caseFilingResult, ExportTableColumns[] tableColumns, + HttpServletResponse response) { + NutMap statistics = queryUnitReplyStatistics(pageForm, sessionId, undertakeUnitId, caseFilingResult); + List rows = statistics.getList("tableData", NutMap.class); + Map allowedColumns = new LinkedHashMap<>(); + allowedColumns.put("unitName", "单位名称"); + allowedColumns.put("sum", "提案总数"); + allowedColumns.put("masterSum", "主办提案数量"); + allowedColumns.put("masterReplySum", "主办已答复"); + allowedColumns.put("masterNoReplySum", "主办未答复"); + allowedColumns.put("slaveSum", "协办提案数量"); + if (statistics.getBoolean("slaveNeedReply", false)) { + allowedColumns.put("slaveReplySum", "协办已答复"); + allowedColumns.put("slaveNoReplySum", "协办未答复"); + } + exportRowsAsExcel("承办单位办理统计", rows, tableColumns, allowedColumns, response); + } + + /** + * 查询承办单位满意度统计,动态满意度字段来自 PROPOSAL_FEEDBACK 字典。 + * + * @param pageForm 排序参数 + * @param sessionId 教代会届次ID + * @param undertakeUnitId 承办单位ID,为空时统计全部单位 + * @return 各承办单位的主协办数量及满意度计数 + */ + @Override + public List queryUnderTakeSatisfactionStatistics(PageForm pageForm, String sessionId, + String undertakeUnitId) { + List feedbackCodes = sysDictService.getSubListByCode("PROPOSAL_FEEDBACK"); + Set orderColumns = new HashSet<>(SATISFACTION_ORDER_COLUMNS); + feedbackCodes.stream().map(Sys_dict::getCode).filter(StrUtil::isNotBlank).forEach(orderColumns::add); + + Sql proposalSql = Sqls.create("SELECT id FROM proposal_info WHERE sessionId = @sessionId"); + proposalSql.setParam("sessionId", sessionId); + proposalSql.setCallback(Sqls.callback.strList()); + dao().execute(proposalSql); + List proposalIds = proposalSql.getList(String.class); + if (proposalIds.isEmpty()) { + return List.of(); + } + + Cnd replyUnitCnd = Cnd.where(ProposalReplyUnit::getProposalId, "in", proposalIds); + replyUnitCnd.andEX(ProposalReplyUnit::getUnitId, "=", undertakeUnitId); + List replyUnits = dao().query(ProposalReplyUnit.class, replyUnitCnd); + List tableData = new ArrayList<>(); + replyUnits.stream().collect(Collectors.groupingBy(ProposalReplyUnit::getUnitCode)).forEach((unitCode, units) -> { + NutMap tableRow = NutMap.NEW().addv("id", unitCode); + units.stream().findAny().ifPresent(item -> { + tableRow.put("unitName", item.getUnitName()); + tableRow.put("unitCode", item.getUnitCode()); + }); + tableRow.put("sum", units.size()); + tableRow.put("masterSum", units.stream().filter(unit -> Boolean.TRUE.equals(unit.getIsMaster())).count()); + tableRow.put("slaveSum", units.stream().filter(unit -> !Boolean.TRUE.equals(unit.getIsMaster())).count()); + + List unitProposalIds = units.stream().map(ProposalReplyUnit::getProposalId).toList(); + List unitInstanceIds = dao().query(ProcessInstance.class, + Cnd.where(ProcessInstance::getBusinessNo, "in", unitProposalIds)).stream() + .map(ProcessInstance::getId).toList(); + List feedbackTasks = unitInstanceIds.isEmpty() ? List.of() : dao().query(ProcessTask.class, + Cnd.where(ProcessTask::getProcessInstanceId, "in", unitInstanceIds) + .and(ProcessTask::getTaskName, "=", "feedback") + .and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.FINISHED.getCode())); + for (Sys_dict feedbackCode : feedbackCodes) { + if (StrUtil.isBlank(feedbackCode.getCode())) { + continue; + } + long count = feedbackTasks.stream().filter(task -> Objects.equals(feedbackCode.getCode(), + FlowUtil.variableToNutMap(task.getVariable()).getString("tf_feedback", ""))) + .map(ProcessTask::getProcessInstanceId).distinct().count(); + tableRow.put(feedbackCode.getCode(), count); + } + tableData.add(tableRow); + }); + sortStatisticsRows(tableData, pageForm, orderColumns); + return tableData; + } + + /** 按满意度统计页面当前可见字段导出全部统计行。 */ + @Override + public void exportUnderTakeSatisfactionAsExcel(PageForm pageForm, String sessionId, String undertakeUnitId, + ExportTableColumns[] tableColumns, HttpServletResponse response) { + List rows = queryUnderTakeSatisfactionStatistics(pageForm, sessionId, undertakeUnitId); + Map allowedColumns = new LinkedHashMap<>(); + allowedColumns.put("unitName", "单位名称"); + allowedColumns.put("sum", "提案总数"); + allowedColumns.put("masterSum", "主办提案数"); + allowedColumns.put("slaveSum", "协办提案数"); + for (Sys_dict feedbackCode : sysDictService.getSubListByCode("PROPOSAL_FEEDBACK")) { + if (StrUtil.isNotBlank(feedbackCode.getCode())) { + allowedColumns.put(feedbackCode.getCode(), feedbackCode.getName()); + } + } + exportRowsAsExcel("承办单位满意度统计", rows, tableColumns, allowedColumns, response); + } + + /** + * 按页面字段白名单校验列定义并输出 Excel,所有统计导出统一使用 XSSF 格式。 + * + * @param title 文件名及工作表标题 + * @param rows 待导出的全部匹配数据 + * @param tableColumns 页面当前可见字段及顺序 + * @param allowedColumns 后端允许字段及规范表头 + * @param response HTTP 响应 + */ + private void exportRowsAsExcel(String title, List rows, ExportTableColumns[] tableColumns, + Map allowedColumns, HttpServletResponse response) { + List exportColumns = getSafeExportColumns(tableColumns, allowedColumns); + if (exportColumns.isEmpty()) { + throw new BaseException("请至少选择一个导出字段"); + } + if (rows == null || rows.isEmpty()) { + throw new BaseException("当前筛选条件下没有可导出的数据"); + } + List excelColumns = exportColumns.stream() + .map(column -> new ExcelExportEntity(column.getLabel(), column.getProp(), 20)) + .collect(Collectors.toList()); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setTitle(title); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, excelColumns, rows); + CommonDownloadUtil.download(title + ".xlsx", workbook, response); + } + + /** 按后端白名单过滤重复或伪造字段,并保留页面列设置顺序。 */ + private List getSafeExportColumns(ExportTableColumns[] tableColumns, + Map allowedColumns) { + if (ArrayUtil.isEmpty(tableColumns)) { + return List.of(); + } + List exportColumns = new ArrayList<>(); + Set selectedProps = new HashSet<>(); + for (ExportTableColumns column : tableColumns) { + if (column == null || !allowedColumns.containsKey(column.getProp()) || !selectedProps.add(column.getProp())) { + continue; + } + ExportTableColumns safeColumn = new ExportTableColumns(); + safeColumn.setProp(column.getProp()); + safeColumn.setLabel(allowedColumns.get(column.getProp())); + exportColumns.add(safeColumn); + } + return exportColumns; + } + /** * 使用业务页面提供的字段白名单构建排序条件,非法字段或非法排序方向将被忽略。 * @@ -306,7 +920,7 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp pages.put("commissioner", orderColumns("code", "info.code", "name", "info.name", "typeName", "type.name", "sessionName", "tcs.fullName", "delegationName", "tcd.name", "CONFIRM_FILING_COUNT", "CONFIRM_FILING_COUNT", "SUGGESTION_COUNT", "SUGGESTION_COUNT", "NOT_COUNT", "NOT_COUNT", "taskName", "taskName", "instanceState", "ins.state")); pages.put("feedbackEvaluation", orderColumns("code", "info.code", "name", "info.name", "typeName", "type.name", "merge", "merge", "curTaskName", "curTaskName", "instanceState", "ins.state")); pages.put("delegation", standardOrderColumns()); - pages.put("control", standardOrderColumns()); + pages.put("control", mergeOrderColumns(standardOrderColumns(), orderColumns("caseFilingCode", "info.caseFilingCode"))); pages.put("schoolLeaderApproval", orderColumns("code", "info.code", "name", "info.name", "typeName", "type.name", "undertakeUnits", "masterUnitName", "merge", "merge", "curTaskName", "curTaskName", "auditUser", "auditUser", "instanceState", "ins.state")); pages.put("committeeFilingUnit", orderColumns("code", "info.code", "name", "info.name", "typeName", "type.name", "sessionName", "tcs.fullName", "caseFilingResult", "info.caseFilingResult", "delegationName", "tcd.name", "curTaskName", "curTaskName", "instanceState", "ins.state")); pages.put("allFinished", orderColumns("code", "info.code", "name", "info.name", "createUserName", "info.createUserName", "typeName", "type.name", "sessionName", "tcs.fullName", "delegationName", "tcd.name", "instanceState", "ins.state")); @@ -318,7 +932,7 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp pages.put("configUnit", orderColumns("name", "t1.name", "code", "t1.code", "unitLeader", "u2.username")); pages.put("configType", orderColumns("name", "name", "code", "code")); pages.put("seniorBasic", seniorOrderColumns()); - pages.put("expediting", orderColumns("code", "info.code", "name", "info.name", "typeName", "type.name", "delegationName", "tcd.name", "caseFilingResult", "info.caseFilingResult", "curTaskName", "curTaskName", "underTakeName", "underTakeName", "taskName", "t.displayName", "actorName", "ta.actorName", "instanceState", "ins.state")); + pages.put("expediting", orderColumns("code", "info.code", "caseFilingCode", "info.caseFilingCode", "name", "info.name", "typeName", "type.name", "delegationName", "tcd.name", "caseFilingResult", "info.caseFilingResult", "curTaskName", "curTaskName", "underTakeName", "underTakeName", "taskName", "t.displayName", "actorName", "ta.actorName", "instanceState", "ins.state")); pages.put("seniorDelete", seniorOrderColumns()); pages.put("seniorFeedback", mergeOrderColumns(seniorOrderColumns(), orderColumns("tf_feedback", "tf_feedback"))); pages.put("seniorType", seniorOrderColumns()); @@ -332,7 +946,7 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp /** 创建高级管理列表共用的字段映射。 */ private static Map seniorOrderColumns() { - return orderColumns("code", "info.code", "name", "info.name", "createUserName", "info.createUserName", "typeName", "type.name", "delegationName", "tcd.name", "caseFilingResult", "info.caseFilingResult", "isConsolidation", "merge", "curTaskName", "curTaskName", "instanceState", "ins.state"); + return orderColumns("code", "info.code", "caseFilingCode", "info.caseFilingCode", "name", "info.name", "createUserName", "info.createUserName", "typeName", "type.name", "delegationName", "tcd.name", "caseFilingResult", "info.caseFilingResult", "isConsolidation", "merge", "curTaskName", "curTaskName", "instanceState", "ins.state"); } /** @@ -732,6 +1346,7 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp SELECT info.name, info.code, + info.caseFilingResult, info.brief, info.measures, info.createUserName, @@ -862,13 +1477,29 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp docData.put("secondedList", secondInfos); docData.put("delegationAuditList", delegationAuditList); + String templateCode = getProposalTemplateCode(docData.getString("caseFilingResult")); try { - XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate("proposal"), config).render(docData).writeAndClose(byteArrayOutputStream); + XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate(templateCode), config).render(docData).writeAndClose(byteArrayOutputStream); } catch (IOException e) { log.error("提案导出失败{},提案id:{}", e.getMessage(), id); } } + /** + * 根据立案结果选择数据库办公模板编码。 + * + * @param caseFilingResult 立案结果字典编码:CONFIRM_FILING、SUGGESTION 或 NOT + * @return 对应的 Word 模板编码;历史空值或未知编码返回 proposal + */ + private String getProposalTemplateCode(String caseFilingResult) { + return switch (StrUtil.nullToEmpty(caseFilingResult)) { + case "CONFIRM_FILING" -> PROPOSAL_CONFIRM_FILING_TEMPLATE_CODE; + case "SUGGESTION" -> PROPOSAL_SUGGESTION_TEMPLATE_CODE; + case "NOT" -> PROPOSAL_NOT_TEMPLATE_CODE; + default -> PROPOSAL_DEFAULT_TEMPLATE_CODE; + }; + } + /** * 将现行工作流节点映射到历史提案表模板使用的区块名称,并按主协办单位拆分办理答复。 * 模板仍使用旧节点名称时,避免已完成的意见和答复因键名不一致而无法渲染。 @@ -879,28 +1510,52 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp */ private void putProposalExportTaskAliases(String proposalId, Map> taskGroups, NutMap docData) { - putTaskAlias(docData, "提案委主任审核", taskGroups.get("校工会预审核")); + /* putTaskAlias(docData, "提案委主任审核", taskGroups.get("校工会预审核")); putTaskAlias(docData, "提案委主任意见", taskGroups.get("提案委员会立案")); - putTaskAlias(docData, "提案委委员审议", taskGroups.get("委员会确认承办单位")); + putTaskAlias(docData, "提案委委员审议", taskGroups.get("委员会确认承办单位"));*/ + putProposalExportFeedbackName(taskGroups.get("反馈评价")); List replyTasks = taskGroups.get("承办单位答复"); if (Lang.isEmpty(replyTasks)) { return; } - Sql masterUnitSql = Sqls.create("SELECT unitName FROM proposal_reply_unit WHERE proposalId = @proposalId AND isMaster = 1") + Sql replyUnitSql = Sqls.create("SELECT unitId, unitName, isMaster FROM proposal_reply_unit WHERE proposalId = @proposalId") .setParam("proposalId", proposalId); - List masterUnitRows = listMap(masterUnitSql); - Set masterUnitNames = masterUnitRows.stream() - .map(row -> row.getString("unitName")) + List replyUnitRows = listMap(replyUnitSql); + Set masterUnitIds = replyUnitRows.stream() + .filter(row -> row.getBoolean("isMaster", false)) + .map(row -> row.getString("unitId")) .filter(StrUtil::isNotBlank) .collect(Collectors.toSet()); + Map replyUnitNameMap = replyUnitRows.stream() + .filter(row -> StrUtil.isNotBlank(row.getString("unitId"))) + .collect(Collectors.toMap(row -> row.getString("unitId"), row -> row.getString("unitName", ""), + (left, right) -> left)); List masterReplyTasks = new ArrayList<>(); List slaveReplyTasks = new ArrayList<>(); for (ProcessTaskVO replyTask : replyTasks) { + Dict taskExt = replyTask.getExt(); Dict taskFormData = replyTask.getTaskFormData(); - String unitName = taskFormData == null ? null : taskFormData.getStr("unitName"); - if (masterUnitNames.contains(unitName)) { + String underTakeId = taskExt == null ? null : taskExt.getStr("underTakeId"); + if (StrUtil.isBlank(underTakeId) && taskFormData != null) { + underTakeId = taskFormData.getStr("unitId"); + } + + /* + * 承办单位名称保存在任务根变量 underTakeName 中,而模板读取 taskFormData.underTakeName。 + * 在本次导出对象中补充 tf_ 前缀字段,由 ProcessTaskVO 转换后即可保持现有模板不变。 + */ + if (taskExt != null) { + String underTakeName = taskExt.getStr("underTakeName"); + if (StrUtil.isBlank(underTakeName)) { + underTakeName = replyUnitNameMap.getOrDefault(underTakeId, ""); + } + taskExt.put("tf_underTakeName", underTakeName); + } + + // 主协办关系按单位ID匹配,避免把任务中的单位ID误当成单位名称后全部归入协办答复。 + if (masterUnitIds.contains(underTakeId)) { masterReplyTasks.add(replyTask); } else { slaveReplyTasks.add(replyTask); @@ -910,6 +1565,28 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp putTaskAlias(docData, "协办单位答复", slaveReplyTasks); } + /** + * 将反馈评价字典编码转换为模板使用的中文名称,仅补充本次导出的任务变量。 + * + * @param feedbackTasks 已完成的反馈评价任务;为空时无需处理 + */ + private void putProposalExportFeedbackName(List feedbackTasks) { + if (Lang.isEmpty(feedbackTasks)) { + return; + } + Map feedbackNameMap = sysDictService.getSubListByCode("PROPOSAL_FEEDBACK").stream() + .filter(item -> StrUtil.isNotBlank(item.getCode())) + .collect(Collectors.toMap(Sys_dict::getCode, Sys_dict::getName, (left, right) -> left)); + for (ProcessTaskVO feedbackTask : feedbackTasks) { + Dict taskExt = feedbackTask.getExt(); + if (taskExt == null) { + continue; + } + String feedbackCode = taskExt.getStr("tf_feedback"); + taskExt.put("tf_feedback_name", feedbackNameMap.getOrDefault(feedbackCode, feedbackCode)); + } + } + /** * 仅在存在已完成任务时写入模板区块,空任务不触发 Word 条件标签。 * @@ -980,7 +1657,7 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp ); if (feedbackTask != null) { info.put(FlowUtil.variableToDict(feedbackTask.getVariable()).getStr("tf_feedback"), "√"); - info.put("tf_feedback", FlowUtil.variableToDict(feedbackTask.getVariable()).getStr("tf_feedback")); + info.put("tf_feedback_name", FlowUtil.variableToDict(feedbackTask.getVariable()).getStr("tf_feedback")); info.put("tf_opinion", FlowUtil.variableToDict(feedbackTask.getVariable()).getStr("tf_opinion")); info.put("tf_phone", FlowUtil.variableToDict(feedbackTask.getVariable()).getStr("tf_phone")); info.put("tf_address", FlowUtil.variableToDict(feedbackTask.getVariable()).getStr("tf_address")); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalCommitteeFilingServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalCommitteeFilingServiceImpl.java index 34b0f4e5..fd434c19 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalCommitteeFilingServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalCommitteeFilingServiceImpl.java @@ -2,14 +2,23 @@ package com.budwk.app.zhgh.democratic.proposal.service.impl; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.budwk.app.base.constant.RoleConstant; +import com.budwk.app.base.exception.BaseException; import com.budwk.app.base.service.impl.BaseServiceImpl; import com.budwk.app.flow.constant.FlowConst; 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.flow.service.ProcessTaskService; +import com.budwk.app.sys.models.Sys_role; +import com.budwk.app.sys.models.Sys_user_role; +import com.budwk.app.sys.services.SysRoleService; import com.budwk.app.zhgh.democratic.proposal.models.ProposalConsolidation; import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo; import com.budwk.app.zhgh.democratic.proposal.models.ProposalMerge; +import com.budwk.app.zhgh.democratic.proposal.models.ProposalUndertake; import com.budwk.app.zhgh.democratic.proposal.service.ProposalCommitteeFilingService; import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService; import org.nutz.aop.interceptor.ioc.TransAop; @@ -20,7 +29,14 @@ import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.random.R; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; @IocBean(args = {"refer:dao"}) public class ProposalCommitteeFilingServiceImpl extends BaseServiceImpl implements ProposalCommitteeFilingService { @@ -31,14 +47,26 @@ public class ProposalCommitteeFilingServiceImpl extends BaseServiceImpl taskIds = (List) args.get("processTaskIds"); List proposalIds = (List) args.get("proposalIds"); @@ -65,6 +93,101 @@ public class ProposalCommitteeFilingServiceImpl extends BaseServiceImpl selectedUnitIds = new LinkedHashSet<>( + getUnitIdList(args, FlowConst.TASK_FORM_DATA_PREFIX + "masterUnitIds")); + if ("CONFIRM_FILING".equals(caseFilingResult)) { + selectedUnitIds.addAll(getUnitIdList(args, FlowConst.TASK_FORM_DATA_PREFIX + "slaveUnitIds")); + } + if (selectedUnitIds.isEmpty()) { + return; + } + + Sys_role unitLeaderRole = sysRoleService.getByCode(RoleConstant.PROPOSAL_UNIT_LEADER); + if (unitLeaderRole == null) { + throw new BaseException("提案承办单位领导角色不存在"); + } + + Map unitMap = dao().query(ProposalUndertake.class, + Cnd.where(ProposalUndertake::getId, "in", selectedUnitIds)) + .stream() + .collect(Collectors.toMap(ProposalUndertake::getId, unit -> unit)); + if (unitMap.size() != selectedUnitIds.size()) { + throw new BaseException("选择的承办单位不存在,请重新选择"); + } + + Set configuredUnitIds = dao().query(Sys_user_role.class, + Cnd.where(Sys_user_role::getRoleId, "=", unitLeaderRole.getId()) + .and(Sys_user_role::getUnderTakeId, "in", selectedUnitIds)) + .stream() + .map(Sys_user_role::getUnderTakeId) + .filter(StrUtil::isNotBlank) + .collect(Collectors.toSet()); + List missingUnitNames = selectedUnitIds.stream() + .filter(unitId -> !configuredUnitIds.contains(unitId)) + .map(unitMap::get) + .map(ProposalUndertake::getName) + .toList(); + if (!missingUnitNames.isEmpty()) { + throw new BaseException(String.join("、", missingUnitNames) + "没有设置负责人!"); + } + } + + /** + * 将页面单位字段统一转换为去空、去重后的单位ID列表,兼容数组、JSON数组字符串和逗号分隔字符串。 + * + * @param args 页面流程参数 + * @param key 需要读取的单位字段名 + * @return 规范化后的单位ID列表 + */ + private List getUnitIdList(Dict args, String key) { + Object value = args.get(key); + if (ObjectUtil.isEmpty(value)) { + return List.of(); + } + + List unitIds = new ArrayList<>(); + if (value instanceof Collection collection) { + collection.forEach(item -> { + if (ObjectUtil.isNotEmpty(item)) { + unitIds.add(String.valueOf(item)); + } + }); + } else if (value instanceof String stringValue) { + if (StrUtil.isBlank(stringValue)) { + return List.of(); + } + if (JSONUtil.isTypeJSONArray(stringValue)) { + unitIds.addAll(JSONUtil.parseArray(stringValue).toList(String.class)); + } else { + Arrays.stream(stringValue.split(",")) + .map(String::trim) + .filter(StrUtil::isNotBlank) + .forEach(unitIds::add); + } + } else { + unitIds.add(String.valueOf(value)); + } + return new ArrayList<>(new LinkedHashSet<>(unitIds)); + } + @Override @Aop(TransAop.READ_COMMITTED) public void revokeTask(Long taskId, String proposalId) { diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalCommitteeFilingUnitServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalCommitteeFilingUnitServiceImpl.java index c8bc59b2..30ab80c3 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalCommitteeFilingUnitServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalCommitteeFilingUnitServiceImpl.java @@ -16,6 +16,7 @@ import com.budwk.app.bpm.models.BpmProcessTask; import com.budwk.app.bpm.service.BpmService; import com.budwk.app.flow.constant.FlowConst; 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.flow.service.ProcessTaskService; import com.budwk.app.sys.models.Sys_user_role; @@ -34,6 +35,8 @@ import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; import org.nutz.dao.util.cri.Static; import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; @@ -87,7 +90,7 @@ public class ProposalCommitteeFilingUnitServiceImpl extends BaseServiceImpl excludedProposalIds) { + private void generateAndNormalizeCaseFilingCode(Dict args, List proposalIds) { String caseFilingResultKey = FlowConst.TASK_FORM_DATA_PREFIX + "caseFilingResult"; String caseFilingCodeKey = FlowConst.TASK_FORM_DATA_PREFIX + "caseFilingCode"; String caseFilingTypeKey = FlowConst.TASK_FORM_DATA_PREFIX + "caseFilingType"; - if (!"CONFIRM_FILING".equals(args.getStr(caseFilingResultKey))) { - args.put(caseFilingCodeKey, ""); + String caseFilingResult = args.getStr(caseFilingResultKey); + if (!"CONFIRM_FILING".equals(caseFilingResult)) { + // 立案类型仅适用于确定立案,切换为其他结果时同步清理历史值。 args.put(caseFilingTypeKey, ""); + } + + Integer submitType = args.getInt(FlowConst.SUBMIT_TYPE); + if (submitType == null) { + submitType = ProcessSubmitTypeEnum.AGREE.getCode(); + args.put(FlowConst.SUBMIT_TYPE, submitType); + } + if (!ProcessSubmitTypeEnum.AGREE.getCode().equals(submitType)) { + args.put(caseFilingCodeKey, ""); return; } - String caseFilingCode = StrUtil.trim(args.getStr(caseFilingCodeKey)); - if (StrUtil.isBlank(caseFilingCode)) { - throw new BaseException("立案编号不能为空"); + String codePrefix = resolveCaseFilingCodePrefix(caseFilingResult); + int currentYear = java.time.LocalDate.now().getYear(); + String codeHead = currentYear + codePrefix; + + /* + * proposal_config 当前是单行配置表,锁定该行可让所有应用实例串行生成流水号。 + * 行锁一直持有到本次 WF 提交事务结束,避免两个审核请求同时读到相同最大值。 + */ + Sql lockSql = Sqls.create("SELECT id FROM proposal_config ORDER BY id LIMIT 1 FOR UPDATE"); + lockSql.setCallback(Sqls.callback.map()); + dao().execute(lockSql); + Map configRow = lockSql.getObject(Map.class); + if (ObjectUtil.isEmpty(configRow)) { + throw new BaseException("提案配置不存在,无法生成立案编号"); } - if (caseFilingCode.length() > 20) { - throw new BaseException("立案编号不能超过20个字符"); - } - Cnd duplicateCondition = Cnd.where("caseFilingCode", "=", caseFilingCode); - if (!ObjectUtil.isEmpty(excludedProposalIds)) { - duplicateCondition.and("id", "not in", excludedProposalIds); - } - if (dao().count(ProposalInfo.class, duplicateCondition) > 0) { - throw new BaseException("立案编号已存在,请重新填写"); + + String reusableCode = findReusableCaseFilingCode(proposalIds, caseFilingResult, codeHead); + if (StrUtil.isNotBlank(reusableCode)) { + args.put(caseFilingCodeKey, reusableCode); + return; } + + Sql maxSequenceSql = Sqls.create(""" + SELECT COALESCE(MAX(CAST(SUBSTRING(caseFilingCode, 6) AS UNSIGNED)), 0) + FROM proposal_info + WHERE caseFilingCode REGEXP @codePattern + """); + maxSequenceSql.setParam("codePattern", "^" + codeHead + "[0-9]{3,}$"); + maxSequenceSql.setCallback(Sqls.callback.integer()); + dao().execute(maxSequenceSql); + int nextSequence = maxSequenceSql.getInt() + 1; + String caseFilingCode = codeHead + String.format("%03d", nextSequence); args.put(caseFilingCodeKey, caseFilingCode); } + /** + * 将立案结果转换成编号前缀,未知结果直接阻止流程提交,避免生成无业务含义的编号。 + * + * @param caseFilingResult 立案结果编码 + * @return 确定立案返回 A、工作建议返回 B、不予立案返回 C + */ + private String resolveCaseFilingCodePrefix(String caseFilingResult) { + return switch (StrUtil.nullToEmpty(caseFilingResult)) { + case "CONFIRM_FILING" -> "A"; + case "SUGGESTION" -> "B"; + case "NOT" -> "C"; + default -> throw new BaseException("立案结果不正确,无法生成立案编号"); + }; + } + + /** + * 流程撤回或重新提交时,复用同一批提案已有的本年同类型编号,避免流水号无意义增长。 + * 只有全部提案的结果和编号完全一致且符合新编号格式时才允许复用。 + * + * @param proposalIds 当前单案或并案提案主键集合 + * @param caseFilingResult 本次选择的立案结果 + * @param codeHead 年份和编号前缀,例如 2026A + * @return 可复用的编号;不存在时返回空字符串 + */ + private String findReusableCaseFilingCode(List proposalIds, String caseFilingResult, String codeHead) { + List proposalInfos = dao().query(ProposalInfo.class, + Cnd.where(ProposalInfo::getId, "in", proposalIds)); + if (proposalInfos.size() != new LinkedHashSet<>(proposalIds).size()) { + return ""; + } + boolean allProposalsMatch = proposalInfos.stream().allMatch(proposalInfo -> + Objects.equals(caseFilingResult, proposalInfo.getCaseFilingResult()) + && StrUtil.isNotBlank(proposalInfo.getCaseFilingCode())); + if (!allProposalsMatch) { + return ""; + } + LinkedHashSet existingCodes = proposalInfos.stream() + .map(ProposalInfo::getCaseFilingCode) + .map(StrUtil::trim) + .collect(Collectors.toCollection(LinkedHashSet::new)); + if (existingCodes.size() != 1) { + return ""; + } + String existingCode = existingCodes.iterator().next(); + return existingCode.matches(codeHead + "\\d{3,}") ? existingCode : ""; + } + /** * old-flow 页面提交后,需要把立案编号、立案结果以及主协办单位同步落业务表。 * 若这次改成“不予立案”等无需承办单位的结果,也要先清掉旧的承办单位记录,避免脏数据残留。 diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java index dd48b3d7..6077bc81 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java @@ -74,7 +74,7 @@ import java.util.zip.ZipOutputStream; public class ProposalExportServiceImpl extends BaseServiceImpl implements ProposalExportService { private static final String WORK_SUGGESTION_SECTION_MARKER = "__WORK_SUGGESTION_SECTION__"; - private static final int UNDERTAKE_UNIT_EXPORT_COLUMN_COUNT = 8; + private static final int UNDERTAKE_UNIT_EXPORT_COLUMN_COUNT = 6; @Inject private ProposalCommonService proposalCommonService; @@ -411,14 +411,14 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp LinkedHashSet masterUnitNames = getUnitNameSet(proposalRow, "masterUnitNames"); LinkedHashSet slaveUnitNames = getUnitNameSet(proposalRow, "slaveUnitNames"); NutMap excelRow = NutMap.NEW() - .addv("code", proposalRow.getString("code")) - .addv("caseFilingCode", proposalRow.getString("caseFilingCode")) + // 承办单位表统一展示为“立案编号”;未生成立案编号的工作建议回退显示提案编号。 + .addv("caseFilingCode", StrUtil.blankToDefault(proposalRow.getString("caseFilingCode"), + proposalRow.getString("code"))) .addv("name", proposalRow.getString("name")) .addv("createUserName", proposalRow.getString("createUserName")) .addv("masterUnitNames", "") .addv("slaveUnitNames", "") - .addv("workSuggestionUnitNames", "") - .addv("remark", ""); + .addv("workSuggestionUnitNames", ""); if ("CONFIRM_FILING".equals(proposalRow.getString("caseFilingResult"))) { excelRow.put("masterUnitNames", String.join(",", masterUnitNames)); excelRow.put("slaveUnitNames", String.join(",", slaveUnitNames)); @@ -432,14 +432,12 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp } if (!suggestionRows.isEmpty()) { filingRows.add(NutMap.NEW() - .addv("code", WORK_SUGGESTION_SECTION_MARKER) - .addv("caseFilingCode", "") + .addv("caseFilingCode", WORK_SUGGESTION_SECTION_MARKER) .addv("name", "") .addv("createUserName", "") .addv("masterUnitNames", "") .addv("slaveUnitNames", "") - .addv("workSuggestionUnitNames", "") - .addv("remark", "")); + .addv("workSuggestionUnitNames", "")); filingRows.addAll(suggestionRows); } return filingRows; @@ -450,14 +448,12 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp */ private Workbook buildUndertakeUnitWorkbook(String title, String unitName, List excelRows) { List exportEntities = new ArrayList<>(); - exportEntities.add(new ExcelExportEntity("提案编号", "code", 18)); exportEntities.add(new ExcelExportEntity("立案编号", "caseFilingCode", 18)); - exportEntities.add(new ExcelExportEntity("提案名称", "name", 45)); + exportEntities.add(new ExcelExportEntity("提案名称", "name", 65)); exportEntities.add(new ExcelExportEntity("提案人", "createUserName", 15)); exportEntities.add(new ExcelExportEntity("主办单位", "masterUnitNames", 28)); exportEntities.add(new ExcelExportEntity("协办单位", "slaveUnitNames", 28)); exportEntities.add(new ExcelExportEntity("工作建议送达单位", "workSuggestionUnitNames", 32)); - exportEntities.add(new ExcelExportEntity("备注", "remark", 20)); for (ExcelExportEntity exportEntity : exportEntities) { exportEntity.setWrap(true); } @@ -468,14 +464,14 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp exportParams.setSecondTitle("(" + unitName + ")"); exportParams.setSheetName("提案承办单位表"); exportParams.setHeaderHeight(30); - exportParams.setHeight((short) 24); + exportParams.setHeight((short) 13); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, excelRows); mergeWorkSuggestionSection(workbook); return workbook; } /** - * 查找工作建议标记行,将八个单元格合并并设置为居中的分组标题。 + * 查找工作建议标记行,将承办单位表的全部单元格合并并设置为居中的分组标题。 */ private void mergeWorkSuggestionSection(Workbook workbook) { Sheet sheet = workbook.getSheetAt(0); @@ -577,47 +573,37 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp @Override public void exportProposalStatisticsAsZip(ProposalQueryComprehensiveParam pageForm, HttpServletResponse response) { - Sql sql = Sqls.create(""" - SELECT - info.id, - info.code, - info.name - FROM - proposal_info info - LEFT JOIN proposal_type type on type.id = info.typeId - LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId - LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId - LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName - $condition - """); - Cnd cnd = Cnd.NEW(); - ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm); - sql.setCondition(cnd); - List list = listMap(sql); + List list = queryProposalBaseList(pageForm); + if (Lang.isEmpty(list)) { + throw new BaseException("当前筛选条件下没有可导出的提案数据"); + } - try { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - ZipOutputStream zipOutputStream = new ZipOutputStream(bos); + try (ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ZipOutputStream zipOutputStream = new ZipOutputStream(bos)) { + Map entryNameCounts = new HashMap<>(); for (NutMap proposalRow : list) { try (ByteArrayOutputStream docxByteArrayOutputStream = new ByteArrayOutputStream()) { proposalCommonService.exportProposalAsDocx(proposalRow.getString("id"), docxByteArrayOutputStream); - ZipEntry zipEntry = new ZipEntry(proposalRow.getString("code") + "-" + sanitizeZipFileName(proposalRow.getString("name")) + ".docx"); + if (docxByteArrayOutputStream.size() == 0) { + throw new BaseException("提案【{}】Word生成失败", proposalRow.getString("code")); + } + ZipEntry zipEntry = new ZipEntry(createUniqueZipDocxEntryName("", proposalRow, entryNameCounts)); zipOutputStream.putNextEntry(zipEntry); docxByteArrayOutputStream.writeTo(zipOutputStream); zipOutputStream.closeEntry(); } catch (IOException e) { - // 处理单个文件生成失败的情况 - throw new RuntimeException("zip entry write failed, proposalId=" + proposalRow.getString("id"), e); + throw new BaseException("提案【{}】写入压缩包失败", proposalRow.getString("code")); } } zipOutputStream.finish(); - zipOutputStream.close(); CommonDownloadUtil.download("提案汇总压缩包.zip", bos.toByteArray(), response); } catch (Exception e) { - e.printStackTrace(); + log.error("批量导出提案表压缩包失败", e); + if (e instanceof BaseException) { + throw (BaseException) e; + } + throw new BaseException("批量导出提案表压缩包失败:{}", e.getMessage()); } - - } @@ -673,7 +659,8 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp LEFT JOIN proposal_type type on type.id = info.typeId LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId - LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName + LEFT JOIN teacher_congress_delegate tcde + ON tcde.loginName = info.createUserLoginName AND tcde.sessionId = info.sessionId LEFT JOIN proposal_reply_unit pru ON pru.proposalId = info.id $condition """); @@ -713,13 +700,14 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp /** * 生成 ZIP 内唯一且合法的 Word 文件名,避免提案名称中的非法字符或重名条目导致整个压缩包缺文件。 * - * @param prefix 文档类型前缀 + * @param prefix 文档类型前缀;为空时直接使用提案编号和名称 * @param proposalRow 提案基础信息 * @param entryNameCounts 已生成的基础文件名及其出现次数 * @return 可以直接用于 ZipEntry 的文件名 */ private String createUniqueZipDocxEntryName(String prefix, NutMap proposalRow, Map entryNameCounts) { - String baseName = sanitizeZipFileName(prefix + "-" + proposalRow.getString("code", "未编号") + "-" + proposalRow.getString("name", "未命名提案")); + String prefixText = StrUtil.isBlank(prefix) ? "" : prefix + "-"; + String baseName = sanitizeZipFileName(prefixText + proposalRow.getString("code", "未编号") + "-" + proposalRow.getString("name", "未命名提案")); int sameNameCount = entryNameCounts.merge(baseName, 1, Integer::sum); return baseName + (sameNameCount > 1 ? "-" + sameNameCount : "") + ".docx"; } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalSecondedServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalSecondedServiceImpl.java index 5f1b204a..06b7f49a 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalSecondedServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalSecondedServiceImpl.java @@ -3,11 +3,17 @@ package com.budwk.app.zhgh.democratic.proposal.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.flow.entity.ProcessInstance; +import com.budwk.app.flow.entity.ProcessTask; +import com.budwk.app.flow.engine.util.FlowUtil; import com.budwk.app.flow.enums.ProcessSubmitTypeEnum; +import com.budwk.app.flow.enums.ProcessTaskStateEnum; import com.budwk.app.zhgh.democratic.proposal.models.ProposalSecond; import com.budwk.app.zhgh.democratic.proposal.service.ProposalSecondedService; +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.IocBean; import org.nutz.lang.Strings; @@ -19,6 +25,31 @@ public class ProposalSecondedServiceImpl extends BaseServiceImpl } @Override + public boolean isDelegationReviewed(String proposalId) { + if (Strings.isBlank(proposalId)) { + return false; + } + // 以提案最新一次流程实例为准;团长同意或不同意均截止附议,退回提案人则允许后续重新邀请附议。 + ProcessInstance processInstance = this.dao().fetch(ProcessInstance.class, + Cnd.where(ProcessInstance::getBusinessNo, "=", proposalId) + .desc(ProcessInstance::getCreatedAt)); + if (processInstance == null) { + return false; + } + return this.dao().query(ProcessTask.class, + Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstance.getId()) + .and(ProcessTask::getTaskName, "=", "delegation") + .and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.FINISHED.getCode())) + .stream() + .anyMatch(task -> { + Integer submitType = FlowUtil.variableToDict(task.getVariable()).getInt("submitType"); + return ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.AGREE.getCode()) + || ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.REJECT.getCode()); + }); + } + + @Override + @Aop(TransAop.READ_COMMITTED) public void updateSecondRecord(String proposalId, String taskActorUserId, String opinion, Integer submitType) { if (Strings.isBlank(proposalId) || Strings.isBlank(taskActorUserId) || submitType == null) { return; diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/models/Teacher_congress_delegate.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/models/Teacher_congress_delegate.java index e40c91b8..8649906f 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/models/Teacher_congress_delegate.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegate/models/Teacher_congress_delegate.java @@ -12,6 +12,9 @@ import org.nutz.dao.interceptor.annotation.PrevInsert; @EqualsAndHashCode(callSuper = true) @Table("teacher_congress_delegate") @TableMeta("{'mysql-charset':'utf8mb4'}") +@TableIndexes({ + @Index(name = "INDEX_TEACHER_CONGRESS_DELEGATE_LOGIN_SESSION", fields = {"loginName", "sessionId"}, unique = false) +}) @Comment("教代会代表") public class Teacher_congress_delegate extends BaseModel { diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/prepare/service/impl/TeacherCongressSessionServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/prepare/service/impl/TeacherCongressSessionServiceImpl.java index 4825c3fb..9a668879 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/prepare/service/impl/TeacherCongressSessionServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/prepare/service/impl/TeacherCongressSessionServiceImpl.java @@ -100,6 +100,10 @@ public class TeacherCongressSessionServiceImpl extends BaseServiceImpl
-
+
常用审核意见:
@@ -11,7 +11,7 @@
- + @@ -40,7 +40,11 @@ module.exports = { name: "index", props: { - value: String + value: String, + showCommonOpinion: { + type: Boolean, + default: true + } }, data() { return { @@ -105,7 +109,10 @@ module.exports = { } }, created() { - this.listOpinion() + // 常用意见为公共可选能力;页面关闭该能力时不再发起无用的初始化查询。 + if (this.showCommonOpinion) { + this.listOpinion() + } } } diff --git a/src/main/resources/views/layouts/platform.html b/src/main/resources/views/layouts/platform.html index 88818ddc..bdce0b94 100644 --- a/src/main/resources/views/layouts/platform.html +++ b/src/main/resources/views/layouts/platform.html @@ -419,25 +419,6 @@ layout("/layouts/v4/baseLayout.html"){ }, defaultSelect() { - // 应用中心点击根菜单时会缓存完整应用信息,根菜单配置了href则应优先进入根菜单页面。 - try { - const rootApp = JSON.parse(window.sessionStorage.getItem("zhgh_sub_app")) - const currentAppId = GetQueryString("appId") - const hasRootHref = rootApp && typeof rootApp.href === "string" && rootApp.href.trim() !== "" - // 校验缓存应用与当前URL一致,避免复用旧标签页缓存时跳转到其他应用。 - if (hasRootHref && String(rootApp.id) === currentAppId) { - this.activeMenuIndex = rootApp.id - this.openedMenus = [] - this.$nextTick(() => { - this.menuSelect(this.activeMenuIndex, this.openedMenus) - commonUtil.pjaxPush(getBaseSubAppPath(rootApp.href)) - }) - return - } - } catch (e) { - // 根菜单缓存缺失或格式异常时,继续使用子菜单href作为默认入口。 - } - // 查找第一个有href的子菜单 function findFirstChildWithHref(menus) { for (const menu of menus) { @@ -479,6 +460,25 @@ layout("/layouts/v4/baseLayout.html"){ tempLink.click() document.body.removeChild(tempLink)*/ }) + return + } + + // 没有已授权的可用子菜单时,才使用当前应用自身配置的地址作为兜底入口。 + try { + const rootApp = JSON.parse(window.sessionStorage.getItem("zhgh_sub_app")) + const currentAppId = GetQueryString("appId") + const hasRootHref = rootApp && typeof rootApp.href === "string" && rootApp.href.trim() !== "" + // 校验缓存应用与当前URL一致,避免复用旧标签页缓存时跳转到其他应用。 + if (hasRootHref && String(rootApp.id) === currentAppId) { + this.activeMenuIndex = rootApp.id + this.openedMenus = [] + this.$nextTick(() => { + this.menuSelect(this.activeMenuIndex, this.openedMenus) + commonUtil.pjaxPush(getBaseSubAppPath(rootApp.href)) + }) + } + } catch (e) { + // 根菜单缓存缺失或格式异常时保持当前页面,不执行无权限地址跳转。 } }, diff --git a/src/main/resources/views/platform/sys/union/branchUnionPartUnitManage.js b/src/main/resources/views/platform/sys/union/branchUnionPartUnitManage.js index 413730bd..bd14e6e9 100644 --- a/src/main/resources/views/platform/sys/union/branchUnionPartUnitManage.js +++ b/src/main/resources/views/platform/sys/union/branchUnionPartUnitManage.js @@ -16,11 +16,12 @@ const branchUnionPartUnitManage = { - - + + + @@ -101,7 +102,8 @@ const branchUnionPartUnitManage = { pageData() { $.get("/platform/sys/union/branchUnionPartUnitPageData", { ...this.pageForm, unionId: this.union_id }).then((res) => { if (res.code === 0) { - this.tableData = res.data + this.tableData = res.data.list + this.pageForm.totalCount = res.data.totalCount } }) } diff --git a/src/main/resources/views/platform/zhgh/activity/culture/common/auditActivity.js b/src/main/resources/views/platform/zhgh/activity/culture/common/auditActivity.js index b902e1a6..4fbe6228 100644 --- a/src/main/resources/views/platform/zhgh/activity/culture/common/auditActivity.js +++ b/src/main/resources/views/platform/zhgh/activity/culture/common/auditActivity.js @@ -122,10 +122,10 @@ const ACTIVITY_CULTURE_AUDIT_ACTIVITY = { - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消
diff --git a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/branchunion/index.html b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/branchunion/index.html index 0585749b..471e1f90 100644 --- a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/branchunion/index.html +++ b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/branchunion/index.html @@ -106,10 +106,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/clubprincipal/index.html b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/clubprincipal/index.html index 7025b60c..449abcfc 100644 --- a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/clubprincipal/index.html +++ b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/clubprincipal/index.html @@ -93,10 +93,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/schoolprincipal/index.html b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/schoolprincipal/index.html index 78726c30..2f0016fb 100644 --- a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/schoolprincipal/index.html +++ b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/schoolprincipal/index.html @@ -113,10 +113,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/schoolunion/index.html b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/schoolunion/index.html index a2a4ccff..c181b220 100644 --- a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/schoolunion/index.html +++ b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/declare/schoolunion/index.html @@ -113,10 +113,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/branchunion/index.html b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/branchunion/index.html index e5e5cf24..3cc4f71b 100644 --- a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/branchunion/index.html +++ b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/branchunion/index.html @@ -126,10 +126,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/clubprincipal/index.html b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/clubprincipal/index.html index 3e66b4db..2f9866f5 100644 --- a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/clubprincipal/index.html +++ b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/clubprincipal/index.html @@ -117,10 +117,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/deputySchoolUnion/index.html b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/deputySchoolUnion/index.html index a026012b..921e4930 100644 --- a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/deputySchoolUnion/index.html +++ b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/deputySchoolUnion/index.html @@ -130,10 +130,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/schoolFinance/index.html b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/schoolFinance/index.html index 241e3826..28875e1e 100644 --- a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/schoolFinance/index.html +++ b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/schoolFinance/index.html @@ -130,10 +130,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/schoolprincipal/index.html b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/schoolprincipal/index.html index 51539301..050c48d2 100644 --- a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/schoolprincipal/index.html +++ b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/schoolprincipal/index.html @@ -131,10 +131,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/schoolunion/index.html b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/schoolunion/index.html index 302f088a..054b5659 100644 --- a/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/schoolunion/index.html +++ b/src/main/resources/views/platform/zhgh/activity/declarereimbursement/reimbursement/schoolunion/index.html @@ -129,10 +129,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/activity/leadthought/branchunionaudit/index.html b/src/main/resources/views/platform/zhgh/activity/leadthought/branchunionaudit/index.html index f51bf0fb..6c737937 100644 --- a/src/main/resources/views/platform/zhgh/activity/leadthought/branchunionaudit/index.html +++ b/src/main/resources/views/platform/zhgh/activity/leadthought/branchunionaudit/index.html @@ -73,10 +73,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/activity/leadthought/schoolunionaudit/index.html b/src/main/resources/views/platform/zhgh/activity/leadthought/schoolunionaudit/index.html index 7b9242cd..9c5e8da2 100644 --- a/src/main/resources/views/platform/zhgh/activity/leadthought/schoolunionaudit/index.html +++ b/src/main/resources/views/platform/zhgh/activity/leadthought/schoolunionaudit/index.html @@ -73,10 +73,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/evaluate/clubAudit/index.html b/src/main/resources/views/platform/zhgh/club/evaluate/clubAudit/index.html index 8023caac..e975abc2 100644 --- a/src/main/resources/views/platform/zhgh/club/evaluate/clubAudit/index.html +++ b/src/main/resources/views/platform/zhgh/club/evaluate/clubAudit/index.html @@ -83,10 +83,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/evaluate/schoolAudit/index.html b/src/main/resources/views/platform/zhgh/club/evaluate/schoolAudit/index.html index 788a66b2..d247503d 100644 --- a/src/main/resources/views/platform/zhgh/club/evaluate/schoolAudit/index.html +++ b/src/main/resources/views/platform/zhgh/club/evaluate/schoolAudit/index.html @@ -83,10 +83,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/evaluate/schoolLeaderAudit/index.html b/src/main/resources/views/platform/zhgh/club/evaluate/schoolLeaderAudit/index.html index de2210c7..dbd38d97 100644 --- a/src/main/resources/views/platform/zhgh/club/evaluate/schoolLeaderAudit/index.html +++ b/src/main/resources/views/platform/zhgh/club/evaluate/schoolLeaderAudit/index.html @@ -83,10 +83,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/examine/clubAudit/index.html b/src/main/resources/views/platform/zhgh/club/examine/clubAudit/index.html index 53156beb..26b29c06 100644 --- a/src/main/resources/views/platform/zhgh/club/examine/clubAudit/index.html +++ b/src/main/resources/views/platform/zhgh/club/examine/clubAudit/index.html @@ -84,10 +84,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/examine/schoolAudit/index.html b/src/main/resources/views/platform/zhgh/club/examine/schoolAudit/index.html index c51a5dc8..f1460df5 100644 --- a/src/main/resources/views/platform/zhgh/club/examine/schoolAudit/index.html +++ b/src/main/resources/views/platform/zhgh/club/examine/schoolAudit/index.html @@ -80,10 +80,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/examine/schoolLeaderAudit/index.html b/src/main/resources/views/platform/zhgh/club/examine/schoolLeaderAudit/index.html index 84db5999..00107078 100644 --- a/src/main/resources/views/platform/zhgh/club/examine/schoolLeaderAudit/index.html +++ b/src/main/resources/views/platform/zhgh/club/examine/schoolLeaderAudit/index.html @@ -86,10 +86,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/infoManage/auditManager/index.html b/src/main/resources/views/platform/zhgh/club/infoManage/auditManager/index.html index c8467f06..ff21fb4f 100644 --- a/src/main/resources/views/platform/zhgh/club/infoManage/auditManager/index.html +++ b/src/main/resources/views/platform/zhgh/club/infoManage/auditManager/index.html @@ -82,10 +82,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/infoManage/schoolAuditReport/index.html b/src/main/resources/views/platform/zhgh/club/infoManage/schoolAuditReport/index.html index 89802a5e..3bbe6171 100644 --- a/src/main/resources/views/platform/zhgh/club/infoManage/schoolAuditReport/index.html +++ b/src/main/resources/views/platform/zhgh/club/infoManage/schoolAuditReport/index.html @@ -79,10 +79,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/infoManage/schoolAuditRule/index.html b/src/main/resources/views/platform/zhgh/club/infoManage/schoolAuditRule/index.html index f2515fd8..3430f328 100644 --- a/src/main/resources/views/platform/zhgh/club/infoManage/schoolAuditRule/index.html +++ b/src/main/resources/views/platform/zhgh/club/infoManage/schoolAuditRule/index.html @@ -79,10 +79,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/join/clubApproval/index.html b/src/main/resources/views/platform/zhgh/club/join/clubApproval/index.html index 1ecb26a5..d2f02fb7 100644 --- a/src/main/resources/views/platform/zhgh/club/join/clubApproval/index.html +++ b/src/main/resources/views/platform/zhgh/club/join/clubApproval/index.html @@ -106,10 +106,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/join/schoolUnionApproval/index.html b/src/main/resources/views/platform/zhgh/club/join/schoolUnionApproval/index.html index 92eade06..6d63c97e 100644 --- a/src/main/resources/views/platform/zhgh/club/join/schoolUnionApproval/index.html +++ b/src/main/resources/views/platform/zhgh/club/join/schoolUnionApproval/index.html @@ -90,10 +90,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/register/clubConfirm/index.html b/src/main/resources/views/platform/zhgh/club/register/clubConfirm/index.html index a7f7ff37..66eac83e 100644 --- a/src/main/resources/views/platform/zhgh/club/register/clubConfirm/index.html +++ b/src/main/resources/views/platform/zhgh/club/register/clubConfirm/index.html @@ -86,10 +86,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/register/officeAudit/index.html b/src/main/resources/views/platform/zhgh/club/register/officeAudit/index.html index e0f13900..96132b35 100644 --- a/src/main/resources/views/platform/zhgh/club/register/officeAudit/index.html +++ b/src/main/resources/views/platform/zhgh/club/register/officeAudit/index.html @@ -86,10 +86,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/register/schoolLeaderAudit/index.html b/src/main/resources/views/platform/zhgh/club/register/schoolLeaderAudit/index.html index 2c0b3181..ca013a83 100644 --- a/src/main/resources/views/platform/zhgh/club/register/schoolLeaderAudit/index.html +++ b/src/main/resources/views/platform/zhgh/club/register/schoolLeaderAudit/index.html @@ -86,10 +86,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/club/register/schoolReply/index.html b/src/main/resources/views/platform/zhgh/club/register/schoolReply/index.html index 2ce60ad5..7384b2b1 100644 --- a/src/main/resources/views/platform/zhgh/club/register/schoolReply/index.html +++ b/src/main/resources/views/platform/zhgh/club/register/schoolReply/index.html @@ -86,10 +86,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/Tour/schoolUnionApproval/index.html b/src/main/resources/views/platform/zhgh/dayofficework/Tour/schoolUnionApproval/index.html index 9e1ddf00..160eb76a 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/Tour/schoolUnionApproval/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/Tour/schoolUnionApproval/index.html @@ -127,10 +127,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/Tour/unionApproval/index.html b/src/main/resources/views/platform/zhgh/dayofficework/Tour/unionApproval/index.html index ac0fa8f6..115edb96 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/Tour/unionApproval/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/Tour/unionApproval/index.html @@ -127,10 +127,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/article/branchUnionApproval/index.html b/src/main/resources/views/platform/zhgh/dayofficework/article/branchUnionApproval/index.html index fe3defea..1f3405bf 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/article/branchUnionApproval/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/article/branchUnionApproval/index.html @@ -70,10 +70,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/article/clubApproval/index.html b/src/main/resources/views/platform/zhgh/dayofficework/article/clubApproval/index.html index fe3defea..1f3405bf 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/article/clubApproval/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/article/clubApproval/index.html @@ -70,10 +70,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/article/examine/index.html b/src/main/resources/views/platform/zhgh/dayofficework/article/examine/index.html index fe3defea..1f3405bf 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/article/examine/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/article/examine/index.html @@ -70,10 +70,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/article/firstExamine/index.html b/src/main/resources/views/platform/zhgh/dayofficework/article/firstExamine/index.html index a5a965b1..106bc4a2 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/article/firstExamine/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/article/firstExamine/index.html @@ -83,7 +83,8 @@ layout("/layouts/platform.html"){ - 取消 + 通过 + 退回到投稿人 退回到分工会 @@ -91,8 +92,7 @@ layout("/layouts/platform.html"){ 退回到社团 - - 通过 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/article/schoolUnionApproval/index.html b/src/main/resources/views/platform/zhgh/dayofficework/article/schoolUnionApproval/index.html index fe3defea..1f3405bf 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/article/schoolUnionApproval/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/article/schoolUnionApproval/index.html @@ -70,10 +70,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/cadreTraining/schoolAudit/index.html b/src/main/resources/views/platform/zhgh/dayofficework/cadreTraining/schoolAudit/index.html index 8915857f..0d7238ff 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/cadreTraining/schoolAudit/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/cadreTraining/schoolAudit/index.html @@ -108,10 +108,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/enrollmentRegistration/schoolAudit/index.html b/src/main/resources/views/platform/zhgh/dayofficework/enrollmentRegistration/schoolAudit/index.html index d0fd722c..87007328 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/enrollmentRegistration/schoolAudit/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/enrollmentRegistration/schoolAudit/index.html @@ -107,10 +107,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/enrollmentRegistration/unionAudit/index.html b/src/main/resources/views/platform/zhgh/dayofficework/enrollmentRegistration/unionAudit/index.html index 8ac11a70..99140343 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/enrollmentRegistration/unionAudit/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/enrollmentRegistration/unionAudit/index.html @@ -91,10 +91,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/evaluation/branchUnionApproval/index.html b/src/main/resources/views/platform/zhgh/dayofficework/evaluation/branchUnionApproval/index.html index b88a48a3..0a470270 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/evaluation/branchUnionApproval/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/evaluation/branchUnionApproval/index.html @@ -82,10 +82,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/evaluation/schoolUnionApproval/index.html b/src/main/resources/views/platform/zhgh/dayofficework/evaluation/schoolUnionApproval/index.html index a250b923..cba95240 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/evaluation/schoolUnionApproval/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/evaluation/schoolUnionApproval/index.html @@ -90,10 +90,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/fund/member/branchUnionApproval/index.html b/src/main/resources/views/platform/zhgh/dayofficework/fund/member/branchUnionApproval/index.html index 59b4967e..6573ab47 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/fund/member/branchUnionApproval/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/fund/member/branchUnionApproval/index.html @@ -66,10 +66,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/fund/member/schoolUnionApproval/index.html b/src/main/resources/views/platform/zhgh/dayofficework/fund/member/schoolUnionApproval/index.html index a3d99525..81ea7c08 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/fund/member/schoolUnionApproval/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/fund/member/schoolUnionApproval/index.html @@ -77,10 +77,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/meeting/delegationApproval/index.html b/src/main/resources/views/platform/zhgh/dayofficework/meeting/delegationApproval/index.html index 89d7daab..e96c6872 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/meeting/delegationApproval/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/meeting/delegationApproval/index.html @@ -87,10 +87,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/meeting/schoolUnionApproval/index.html b/src/main/resources/views/platform/zhgh/dayofficework/meeting/schoolUnionApproval/index.html index 89d7daab..e96c6872 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/meeting/schoolUnionApproval/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/meeting/schoolUnionApproval/index.html @@ -87,10 +87,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/outlay/activityBudget/schoolAudit/index.html b/src/main/resources/views/platform/zhgh/dayofficework/outlay/activityBudget/schoolAudit/index.html index c7c0ddf5..364e8c95 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/outlay/activityBudget/schoolAudit/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/outlay/activityBudget/schoolAudit/index.html @@ -127,10 +127,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/outlay/activityBudget/schoolPrincipal/index.html b/src/main/resources/views/platform/zhgh/dayofficework/outlay/activityBudget/schoolPrincipal/index.html index 2ab2347f..d4356251 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/outlay/activityBudget/schoolPrincipal/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/outlay/activityBudget/schoolPrincipal/index.html @@ -127,10 +127,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/clubAudit/index.html b/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/clubAudit/index.html index c1f1bbe0..61da9cb4 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/clubAudit/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/clubAudit/index.html @@ -91,10 +91,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/clubZxAudit/index.html b/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/clubZxAudit/index.html index 99be8d3a..a51e0489 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/clubZxAudit/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/clubZxAudit/index.html @@ -91,10 +91,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/schoolCnAudit/index.html b/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/schoolCnAudit/index.html index 26530a0d..eb3744bd 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/schoolCnAudit/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/schoolCnAudit/index.html @@ -105,10 +105,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/schoolKjAudit/index.html b/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/schoolKjAudit/index.html index ba3bf2c4..c015fcff 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/schoolKjAudit/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/schoolKjAudit/index.html @@ -123,10 +123,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/schoolZxAudit/index.html b/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/schoolZxAudit/index.html index 3dce1050..54055268 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/schoolZxAudit/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/schoolZxAudit/index.html @@ -123,10 +123,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/unionAudit/index.html b/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/unionAudit/index.html index 527d9fb6..fc745786 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/unionAudit/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/outlay/outlayReimburse/unionAudit/index.html @@ -91,10 +91,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/site/schoolUnionAudit/index.html b/src/main/resources/views/platform/zhgh/dayofficework/site/schoolUnionAudit/index.html index d22428d4..151920e7 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/site/schoolUnionAudit/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/site/schoolUnionAudit/index.html @@ -94,10 +94,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/siteCug/schoolUnionAudit/index.html b/src/main/resources/views/platform/zhgh/dayofficework/siteCug/schoolUnionAudit/index.html index 55d3ba7d..ab34b78e 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/siteCug/schoolUnionAudit/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/siteCug/schoolUnionAudit/index.html @@ -156,10 +156,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/unionReimburse/certifierUserSign/index.html b/src/main/resources/views/platform/zhgh/dayofficework/unionReimburse/certifierUserSign/index.html index f8b75217..b0271b49 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/unionReimburse/certifierUserSign/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/unionReimburse/certifierUserSign/index.html @@ -120,9 +120,9 @@ layout("/layouts/platform.html"){ - 取消 - 退回 同意 + 退回 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/unionReimburse/review/index.html b/src/main/resources/views/platform/zhgh/dayofficework/unionReimburse/review/index.html index 6da08cfb..67ccc711 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/unionReimburse/review/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/unionReimburse/review/index.html @@ -122,10 +122,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/dayofficework/workershome/declaration/organizationAudit.html b/src/main/resources/views/platform/zhgh/dayofficework/workershome/declaration/organizationAudit.html index 28a9b8a9..0fca35fc 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/workershome/declaration/organizationAudit.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/workershome/declaration/organizationAudit.html @@ -113,8 +113,8 @@ layout("/layouts/platform.html"){
- 拒绝 通过 + 拒绝
diff --git a/src/main/resources/views/platform/zhgh/dayofficework/workershome/declaration/schoolAudit.html b/src/main/resources/views/platform/zhgh/dayofficework/workershome/declaration/schoolAudit.html index 07d6b468..6911f030 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/workershome/declaration/schoolAudit.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/workershome/declaration/schoolAudit.html @@ -129,8 +129,8 @@ layout("/layouts/platform.html"){
- 拒绝 通过 + 拒绝
diff --git a/src/main/resources/views/platform/zhgh/dayofficework/workershome/info/schoolAudit.html b/src/main/resources/views/platform/zhgh/dayofficework/workershome/info/schoolAudit.html index d35a817d..c43bbfa4 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/workershome/info/schoolAudit.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/workershome/info/schoolAudit.html @@ -105,12 +105,12 @@ layout("/layouts/platform.html"){
- - 拒绝 - 通过 + + 拒绝 +
diff --git a/src/main/resources/views/platform/zhgh/democratic/grassrootscongress/material/approval/index.html b/src/main/resources/views/platform/zhgh/democratic/grassrootscongress/material/approval/index.html index b661c2a7..11951657 100644 --- a/src/main/resources/views/platform/zhgh/democratic/grassrootscongress/material/approval/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/grassrootscongress/material/approval/index.html @@ -74,10 +74,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 不同意 同意 + 不同意 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/grassrootscongress/meeting/approval/index.html b/src/main/resources/views/platform/zhgh/democratic/grassrootscongress/meeting/approval/index.html index 05b8b031..78fa87f2 100644 --- a/src/main/resources/views/platform/zhgh/democratic/grassrootscongress/meeting/approval/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/grassrootscongress/meeting/approval/index.html @@ -93,10 +93,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回修改 - 不同意 同意 + 不同意 + 退回修改 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/export/comprehensive/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/export/comprehensive/index.html index 8441e7ab..bce380ea 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/export/comprehensive/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/export/comprehensive/index.html @@ -19,41 +19,19 @@ layout("/layouts/platform.html"){ v-for="item in sessionOptions"> - - + + + + + + + + - - - - - - - - + + @@ -199,6 +177,8 @@ layout("/layouts/platform.html"){ businessNo: "", tabActive: "0", pageForm: { + proposalSearchField: "name", + proposalKeyword: "", typeIds: [], caseFilingResults: [], unionId: null, @@ -213,7 +193,7 @@ layout("/layouts/platform.html"){ {label: "届次", prop: "sessionName"}, {label: "代表团", prop: "delegationName"}, {label: "立案结果", prop: "caseFilingResult"}, - {label: "立案类型", prop: "caseFilingType"}, + {label: "立案类型", prop: "caseFilingType", visible: false}, {label: "是否并案", prop: "merge"}, {label: "案由", prop: "brief", visible: false}, {label: "建议措施", prop: "measures", visible: false}, @@ -338,12 +318,15 @@ layout("/layouts/platform.html"){ }, meetingChange(val) { - // 切换届次后旧类别不再适用,需清空选择并加载当前届次类别 + // searchSessionId 是后端列表查询实际使用的单届次筛选参数,需与页面选择保持同步 + this.$set(this.pageForm, "searchSessionId", val) + // 切换届次后旧类别和代表团不再适用,需清空选择并加载当前届次数据 this.$set(this.pageForm, "typeIds", []) this.$set(this, "typeOptions", []) this.listProposalType() this.$set(this.pageForm, "delegationId", null) this.listDelegation() + this.doSearch() }, listDelegation() { this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.pageForm.sessionId}).then((res) => { @@ -358,6 +341,7 @@ layout("/layouts/platform.html"){ this.$set(this, "sessionOptions", res.data) if (this.sessionOptions && this.sessionOptions.length > 0) { this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id) + this.$set(this.pageForm, "searchSessionId", this.sessionOptions[0].id) this.listProposalType() this.listDelegation() this.pageData() diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/query/collectProgress/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/query/collectProgress/index.html index b916e91b..fbfd31c5 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/query/collectProgress/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/query/collectProgress/index.html @@ -17,23 +17,15 @@ layout("/layouts/platform.html"){ v-for="item in sessionOptions"> - - - - - + + + + + + + + - - + + 自定义导出 + + { + if (this.$refs.tableRef) { + this.$refs.tableRef.doLayout() + } + }) + }, + /** 按当前筛选条件和可见字段顺序导出全部征集进度数据。 */ + exportCustomAsExcel() { + var exportColumns = this.tableColumns.filter((item) => item.visible !== false) + if (!exportColumns.length) { + this.$message.warning("请至少选择一个导出字段") + return + } + this.$downLoad(loc() + "/exportCustomAsExcel", { + pageForm: JSON.stringify(this.pageForm), + tableColumns: JSON.stringify(exportColumns) + }) + }, openView(row) { this.$refs.guava.view(() => { this.$refs.infoRef.onOpen(row) diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/query/comprehensive/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/query/comprehensive/index.html index 7ec12165..f2bfcd3a 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/query/comprehensive/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/query/comprehensive/index.html @@ -195,15 +195,18 @@ layout("/layouts/platform.html"){ - - + 自定义导出 + + { + if (this.$refs.tableRef) { + this.$refs.tableRef.doLayout() + } + }) + }, /** * 查询列表按立案结果切换承办单位展示口径: * 立案显示“主办/协办”,作为建议只显示“承办单位”。 @@ -345,6 +362,21 @@ layout("/layouts/platform.html"){ exportDocx(id) { this.$downLoad("/platform/proposal/common/exportProposalAsDocx", {id}) }, + /** + * 按列设置中当前可见的字段顺序导出全部筛选结果; + * 未选择任何数据列时不发起下载,避免生成无表头文件。 + */ + exportCustomAsExcel() { + var exportColumns = this.tableColumns.filter((item) => item.visible !== false) + if (!exportColumns.length) { + this.$message.warning("请至少选择一个导出字段") + return + } + this.$downLoad(loc() + "/exportCustomAsExcel", { + pageForm: JSON.stringify(this.pageForm), + tableColumns: JSON.stringify(exportColumns) + }) + }, tagToggle(key, val) { if (this.pageForm[key].includes(val)) { this.pageForm[key].splice(this.pageForm[key].indexOf(val), 1) @@ -378,8 +410,10 @@ layout("/layouts/platform.html"){ }).then((res) => { if (res.code === 0) { this.sessionOptions = res.data - if (this.sessionOptions) { + if (this.sessionOptions && this.sessionOptions.length > 0) { + // 届次按开始时间倒序返回,首项作为页面默认选中的最新一届。 this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id) + this.$set(this.pageForm, "sessionIds", [this.sessionOptions[0].id]) this.listDelegation() this.pageData() } @@ -401,6 +435,7 @@ layout("/layouts/platform.html"){ this.$businessTool.listUnit(this.pageForm.unionId).then((res) => (this.unitOptions = res)) }, pageData() { + this.tableLoading = true this.$axios .post(loc() + "/pageData", { pageForm: JSON.stringify(this.pageForm) @@ -411,6 +446,10 @@ layout("/layouts/platform.html"){ this.pageForm.totalCount = res.data.totalCount } }) + .finally(() => { + // 无论查询成功或异常都结束加载状态,避免列表持续显示加载动画 + this.tableLoading = false + }) } }, created() { diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/query/delegation/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/query/delegation/index.html index 696ae68a..187065c6 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/query/delegation/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/query/delegation/index.html @@ -13,8 +13,10 @@ layout("/layouts/platform.html"){ - - + 自定义导出 + + { + if (this.$refs.tableRef) { + this.$refs.tableRef.doLayout() + } + }) + }, + /** 按当前届次、排序条件和可见字段导出全部代表团统计。 */ + exportCustomAsExcel() { + var exportColumns = this.tableColumns.filter((item) => item.visible !== false) + if (!exportColumns.length) { + this.$message.warning("请至少选择一个导出字段") + return + } + this.$downLoad(loc() + "/exportCustomAsExcel", { + pageForm: JSON.stringify(this.pageForm), + sessionId: this.sessionId, + tableColumns: JSON.stringify(exportColumns) + }) + }, openView(row) { this.delegationId = row.id this.dialogTitle = row.dbtName + "所属提案" @@ -139,16 +164,18 @@ layout("/layouts/platform.html"){ }, setTableColumnsByProposalResult() { this.$businessTool.getDictOptions("PROPOSAL_CASE_FILING_RESULT").then((data) => { + var columns = this.tableColumns.filter((column) => ["dbtName", "TOTAL"].includes(column.prop)) data.forEach((item) => { - this.tableColumns.push({ + columns.push({ label: item.name, prop: item.code }) }) - this.tableColumns.push({ + columns.push({ label: "立案率", prop: "caseRate" }) + this.$set(this, "tableColumns", columns) }) }, pageData() { diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/query/history/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/query/history/index.html index 237913bc..1563b48b 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/query/history/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/query/history/index.html @@ -26,11 +26,11 @@ layout("/layouts/platform.html"){ style="width: 100%" > - + diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/query/underTakeReply/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/query/underTakeReply/index.html index 840bb1a7..82629285 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/query/underTakeReply/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/query/underTakeReply/index.html @@ -24,19 +24,21 @@ layout("/layouts/platform.html"){ - + + 自定义导出 + + - - - - - - + + + - - - - + + @@ -54,12 +56,69 @@ layout("/layouts/platform.html"){ }, data() { return { + tableColumns: [ + {label: "单位名称", prop: "unitName", width: "400"}, + {label: "提案总数", prop: "sum"}, + {label: "主办提案数量", tableLabel: "提案数量", prop: "masterSum", group: "master"}, + {label: "主办已答复", tableLabel: "已答复", prop: "masterReplySum", group: "master"}, + {label: "主办未答复", tableLabel: "未答复", prop: "masterNoReplySum", group: "master"}, + {label: "协办提案数量", tableLabel: "提案数量", prop: "slaveSum", group: "slave"}, + {label: "协办已答复", tableLabel: "已答复", prop: "slaveReplySum", group: "slave", slaveReply: true}, + {label: "协办未答复", tableLabel: "未答复", prop: "slaveNoReplySum", group: "slave", slaveReply: true} + ], sessionOptions: [], underTakeOptions: [], slaveNeedReply: false } }, + computed: { + normalTableColumns() { + return this.tableColumns.filter((column) => !column.group && column.visible !== false) + }, + masterTableColumns() { + return this.tableColumns.filter((column) => column.group === "master" && column.visible !== false) + }, + slaveTableColumns() { + return this.tableColumns.filter((column) => column.group === "slave" && column.visible !== false) + } + }, methods: { + /** 应用列设置后重新计算多级表头布局,避免隐藏子列后表头宽度残留。 */ + handleTableColumnsChange(columns) { + this.$set(this, "tableColumns", columns) + this.$set(this, "tableKey", new Date().getTime()) + this.$nextTick(() => { + if (this.$refs.tableRef) { + this.$refs.tableRef.doLayout() + } + }) + }, + /** 根据协办答复配置增减可选字段,避免页面和导出出现不可用列。 */ + syncSlaveReplyColumns(slaveNeedReply) { + var columns = this.tableColumns.slice() + if (!slaveNeedReply) { + columns = columns.filter((column) => !column.slaveReply) + } else if (!columns.some((column) => column.slaveReply)) { + columns.push({label: "协办已答复", tableLabel: "已答复", prop: "slaveReplySum", group: "slave", slaveReply: true}) + columns.push({label: "协办未答复", tableLabel: "未答复", prop: "slaveNoReplySum", group: "slave", slaveReply: true}) + } + this.$set(this, "tableColumns", columns) + }, + /** 按当前筛选条件和列设置导出承办单位办理统计。 */ + exportCustomAsExcel() { + var exportColumns = this.tableColumns.filter((column) => column.visible !== false) + if (!exportColumns.length) { + this.$message.warning("请至少选择一个导出字段") + return + } + this.$downLoad(loc() + "/exportCustomAsExcel", { + pageForm: JSON.stringify(this.pageForm), + sessionId: this.pageForm.sessionId, + undertakeUnitId: this.pageForm.undertakeUnitId, + caseFilingResult: this.pageForm.caseFilingResult, + tableColumns: JSON.stringify(exportColumns) + }) + }, meetingChange() { this.doSearch() }, @@ -85,7 +144,8 @@ layout("/layouts/platform.html"){ this.$axios.post(loc() + "/data", this.pageForm).then((res) => { if (res.code === 0) { this.tableData = res.data.tableData - this.slaveNeedReply = res.data.slaveNeedReply + this.$set(this, "slaveNeedReply", res.data.slaveNeedReply) + this.syncSlaveReplyColumns(res.data.slaveNeedReply) } }) } diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/query/underTakeSatisfaction/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/query/underTakeSatisfaction/index.html index 5fda3aab..250605c6 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/query/underTakeSatisfaction/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/query/underTakeSatisfaction/index.html @@ -22,15 +22,14 @@ layout("/layouts/platform.html"){ - + + 自定义导出 + + - - - - - + @@ -47,11 +46,51 @@ layout("/layouts/platform.html"){ }, data() { return { + tableColumns: [ + {label: "单位名称", prop: "unitName", width: "400"}, + {label: "提案总数", prop: "sum"}, + {label: "主办提案数", prop: "masterSum"}, + {label: "协办提案数", prop: "slaveSum"} + ], sessionOptions: [], underTakeOptions: [], } }, methods: { + /** 应用列设置后重新计算动态满意度列的表格布局。 */ + handleTableColumnsChange(columns) { + this.$set(this, "tableColumns", columns) + this.$set(this, "tableKey", new Date().getTime()) + this.$nextTick(() => { + if (this.$refs.tableRef) { + this.$refs.tableRef.doLayout() + } + }) + }, + /** 从后端字典生成满意度列,列设置与统计接口使用同一组字段编码。 */ + setFeedbackTableColumns() { + this.$businessTool.getDictOptions("PROPOSAL_FEEDBACK").then((data) => { + var fixedColumns = this.tableColumns.filter((column) => ["unitName", "sum", "masterSum", "slaveSum"].includes(column.prop)) + data.forEach((item) => { + fixedColumns.push({label: item.name, prop: item.code}) + }) + this.$set(this, "tableColumns", fixedColumns) + }) + }, + /** 按当前筛选条件和可见字段导出承办单位满意度统计。 */ + exportCustomAsExcel() { + var exportColumns = this.tableColumns.filter((column) => column.visible !== false) + if (!exportColumns.length) { + this.$message.warning("请至少选择一个导出字段") + return + } + this.$downLoad(loc() + "/exportCustomAsExcel", { + pageForm: JSON.stringify(this.pageForm), + sessionId: this.pageForm.sessionId, + undertakeUnitId: this.pageForm.undertakeUnitId, + tableColumns: JSON.stringify(exportColumns) + }) + }, meetingChange() { this.doSearch() }, @@ -84,6 +123,7 @@ layout("/layouts/platform.html"){ created() { this.listSession() this.listUnderTake() + this.setFeedbackTableColumns() } }) diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/query/yearReport/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/query/yearReport/index.html index 75c1cf8c..9c0aad60 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/query/yearReport/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/query/yearReport/index.html @@ -17,41 +17,19 @@ layout("/layouts/platform.html"){ - - + + + + + + + + - - - - - - - - + + @@ -83,11 +61,6 @@ layout("/layouts/platform.html"){ - - - - - @@ -97,6 +70,7 @@ layout("/layouts/platform.html"){ + @@ -143,7 +117,7 @@ layout("/layouts/platform.html"){ new Vue({ el: "#app", - dicts: ["PROPOSAL_TYPE", "PROPOSAL_CASE_FILING_RESULT", "PROPOSAL_CASE_FILING_TYPE"], + dicts: ["PROPOSAL_TYPE", "PROPOSAL_CASE_FILING_RESULT"], store, mixins: [initTableMixins], components: { @@ -158,6 +132,8 @@ layout("/layouts/platform.html"){ unionOptions: [], unitOptions: [], pageForm: { + proposalSearchField: "name", + proposalKeyword: "", typeIds: [], caseFilingResults: [], unionId: null, diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/senior/basic/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/senior/basic/index.html index 5467afab..9da50802 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/senior/basic/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/senior/basic/index.html @@ -15,41 +15,19 @@ layout("/layouts/platform.html"){ v-for="item in sessionOptions"> - - + + + + + + + + - - - - - - - - + + @@ -158,7 +136,7 @@ layout("/layouts/platform.html"){ disabled> - + @@ -230,6 +208,8 @@ layout("/layouts/platform.html"){ unitOptions: [], suggestUnitOptions: [], pageForm: { + proposalSearchField: "name", + proposalKeyword: "", types: [], caseFilingResults: [], unionId: null, diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/senior/delete/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/senior/delete/index.html index af809a59..590a2c1f 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/senior/delete/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/senior/delete/index.html @@ -13,41 +13,19 @@ layout("/layouts/platform.html"){ - - + + + + + + + + - - - - - - - - + + @@ -71,6 +49,7 @@ layout("/layouts/platform.html"){ + @@ -126,6 +105,8 @@ layout("/layouts/platform.html"){ unionOptions: [], unitOptions: [], pageForm: { + proposalSearchField: "name", + proposalKeyword: "", types: [], caseFilingResults: [], unionId: null, diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/senior/expediting/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/senior/expediting/index.html index f6f48322..09ddc0cd 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/senior/expediting/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/senior/expediting/index.html @@ -13,31 +13,19 @@ layout("/layouts/platform.html"){ v-for="item in sessionOptions"> - - + + + + + + + + - - - - - - - - + + @@ -134,13 +122,17 @@ layout("/layouts/platform.html"){ }, data() { return { - pageForm: {}, + pageForm: { + proposalSearchField: "name", + proposalKeyword: "" + }, formData: {}, sessionOptions: [], delegationOptions: [], tableColumns: [ {prop: 'code', label: '提案编号'}, + {prop: 'caseFilingCode', label: '立案编号'}, {prop: 'name', label: '提案名称'}, {prop: 'typeName', label: '提案类别'}, {prop: 'delegationName', label: '代表团'}, diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/senior/feedback/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/senior/feedback/index.html index 211d760d..36efa1e2 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/senior/feedback/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/senior/feedback/index.html @@ -15,41 +15,19 @@ layout("/layouts/platform.html"){ v-for="item in sessionOptions"> - - + + + + + + + + - - - - - - - - + + @@ -77,6 +55,7 @@ layout("/layouts/platform.html"){ + @@ -169,6 +148,8 @@ layout("/layouts/platform.html"){ unionOptions: [], unitOptions: [], pageForm: { + proposalSearchField: "name", + proposalKeyword: "", types: [], caseFilingResults: [], unionId: null, diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/senior/type/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/senior/type/index.html index 2d07cae0..7a056091 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/senior/type/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/senior/type/index.html @@ -13,41 +13,19 @@ layout("/layouts/platform.html"){ - - + + + + + + + + - - - - - - - - + + @@ -71,6 +49,7 @@ layout("/layouts/platform.html"){ + @@ -144,6 +123,8 @@ layout("/layouts/platform.html"){ unionOptions: [], unitOptions: [], pageForm: { + proposalSearchField: "name", + proposalKeyword: "", types: [], caseFilingResults: [], unionId: null, diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/caseCheck/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/caseCheck/index.html index 69840198..0003df8e 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/caseCheck/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/caseCheck/index.html @@ -125,10 +125,10 @@ layout("/layouts/platform.html"){ - 返回 - - 同意 + + + 返回 diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/commissioner/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/commissioner/index.html index f2611f15..7cdf8289 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/commissioner/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/commissioner/index.html @@ -101,8 +101,8 @@ layout("/layouts/platform.html"){ - 返回 提交 + 返回 diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFiling/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFiling/index.html index 272d0ca5..e2540ad0 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFiling/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFiling/index.html @@ -170,9 +170,10 @@ layout("/layouts/platform.html"){ - 返回 - 退回到提案人 提交 + 退回到提案人(不审核) + 退回到提案人(审核) + 返回 @@ -243,8 +244,16 @@ layout("/layouts/platform.html"){ /** * “作为建议”不再区分主办/协办,只保留办理单位; * 切到“不予立案”等结果时,同时清空已选单位,避免旧值被误提交。 + * 每次切换立案结果时同步写入对应的默认审核意见,审核人仍可在提交前修改。 + * @param caseFilingResult 当前选择的立案结果编码 */ handleCaseFilingResultChange(caseFilingResult) { + const opinionMap = { + CONFIRM_FILING: "经提案委员会审理,该提案确定立案。", + SUGGESTION: "经提案委员会审理,该提案作为意见建议。", + NOT: "经提案委员会审理,该提案不予立案。" + } + this.$set(this.formData, "tf_opinion", opinionMap[caseFilingResult] || "") if (caseFilingResult !== "CONFIRM_FILING") { this.$set(this.formData, "tf_caseFilingType", "") } @@ -269,6 +278,7 @@ layout("/layouts/platform.html"){ this.formData = { processTaskId: row.taskId, taskName: row.curTaskName, + taskKey: row.taskKey, tf_masterUnitIds: [], tf_slaveUnitIds: [] } @@ -295,22 +305,30 @@ layout("/layouts/platform.html"){ tf_helpunitreply = "NO_HELP_UNIT" } + const params = { + ...this.formData, + tf_masterUnitIds: masterUnitIds, + tf_slaveUnitIds: slaveUnitIds, + submitType: val, + taskName: "startTask", + // 兼容旧流程仍按单个主办单位字段取值的场景,这里保留第一个主办单位ID和名称。 + tf_masterUnitId: masterUnitIds.length ? masterUnitIds[0] : "", + tf_masterUnitName: masterUnitIds.length ? this.underTakeOptions.find(v => v.id === masterUnitIds[0])?.name : "", + tf_masterUnitNames: masterUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name), + tf_masterUnitNameStr: masterUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name).join(","), + tf_slaveUnitNames: slaveUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name), + tf_slaveUnitNameStr: slaveUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name).join(","), + tf_helpunitreply: tf_helpunitreply + } + // 不审核退回时记录来源节点,提案人重新提交后由 WF 直接跳回当前审核节点。 + if (val === 4) { + params.tf_sourceTaskKey = this.formData.taskKey + params.tf_audit = false + } + const loading = createLoading("提交中") - this.$axios.post("/flow/common/executeTask", { - data: JSON.stringify({ - ...this.formData, - tf_masterUnitIds: masterUnitIds, - tf_slaveUnitIds: slaveUnitIds, - submitType: val, - // 兼容旧流程仍按单个主办单位字段取值的场景,这里保留第一个主办单位ID和名称。 - tf_masterUnitId: masterUnitIds.length ? masterUnitIds[0] : "", - tf_masterUnitName: masterUnitIds.length ? this.underTakeOptions.find(v => v.id === masterUnitIds[0])?.name : "", - tf_masterUnitNames: masterUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name), - tf_masterUnitNameStr: masterUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name).join(","), - tf_slaveUnitNames: slaveUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name), - tf_slaveUnitNameStr: slaveUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name).join(","), - tf_helpunitreply: tf_helpunitreply - }) + this.$axios.post("/platform/proposal/committeeFiling/executeTask", { + data: JSON.stringify(params) }).then((res) => { if (res.code === 0) { this.$refs.guava.index() @@ -336,6 +354,7 @@ layout("/layouts/platform.html"){ this.$refs.mergeRef.onOpen(selection, { processTaskIds: selection.map(v => v.taskId), taskName: selection[0].curTaskName, + taskKey: selection[0].taskKey, tf_masterUnitIds: [], tf_slaveUnitIds: [] }) diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFiling/merge.js b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFiling/merge.js index 25debf34..c2b78156 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFiling/merge.js +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFiling/merge.js @@ -78,9 +78,10 @@ const merge = { - 返回 - 退回到提案人 提交 + 退回到提案人(不审核) + 退回到提案人(审核) + 返回 @@ -106,8 +107,16 @@ const merge = { /** * 并案审核与单案审核保持同一口径: * “作为建议”只录入办理单位,不再区分协办单位。 + * 每次切换立案结果时同步写入对应的默认审核意见,审核人仍可在提交前修改。 + * @param caseFilingResult 当前选择的立案结果编码 */ handleCaseFilingResultChange(caseFilingResult) { + const opinionMap = { + CONFIRM_FILING: "经提案委员会审理,该提案确定立案。", + SUGGESTION: "经提案委员会审理,该提案作为意见建议。", + NOT: "经提案委员会审理,该提案不予立案。" + } + this.$set(this.formData, "tf_opinion", opinionMap[caseFilingResult] || "") if (caseFilingResult !== "CONFIRM_FILING") { this.$set(this.formData, "tf_caseFilingType", "") } @@ -160,23 +169,31 @@ const merge = { tf_helpunitreply = "NO_HELP_UNIT" } + const params = { + ...this.formData, + tf_masterUnitIds: masterUnitIds, + tf_slaveUnitIds: slaveUnitIds, + proposalIds: this.selection.map(v => v.id), + submitType: val, + taskName: "startTask", + // 兼容旧流程仍按单个主办单位字段取值的场景,这里保留第一个主办单位ID和名称。 + tf_masterUnitId: masterUnitIds.length ? masterUnitIds[0] : "", + tf_masterUnitName: masterUnitIds.length ? this.underTakeOptions.find(v => v.id === masterUnitIds[0])?.name : "", + tf_masterUnitNames: masterUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name), + tf_masterUnitNameStr: masterUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name).join(','), + tf_slaveUnitNames: slaveUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name), + tf_slaveUnitNameStr: slaveUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name).join(','), + tf_helpunitreply: tf_helpunitreply + } + // 不审核退回时记录来源节点,提案人重新提交后由 WF 直接跳回当前审核节点。 + if (val === 4) { + params.tf_sourceTaskKey = this.formData.taskKey + params.tf_audit = false + } + const loading = createLoading('提交中') this.$axios.post("/platform/proposal/committeeFiling/merge", { - data: JSON.stringify({ - ...this.formData, - tf_masterUnitIds: masterUnitIds, - tf_slaveUnitIds: slaveUnitIds, - proposalIds: this.selection.map(v => v.id), - submitType: val, - // 兼容旧流程仍按单个主办单位字段取值的场景,这里保留第一个主办单位ID和名称。 - tf_masterUnitId: masterUnitIds.length ? masterUnitIds[0] : "", - tf_masterUnitName: masterUnitIds.length ? this.underTakeOptions.find(v => v.id === masterUnitIds[0])?.name : "", - tf_masterUnitNames: masterUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name), - tf_masterUnitNameStr: masterUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name).join(','), - tf_slaveUnitNames: slaveUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name), - tf_slaveUnitNameStr: slaveUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name).join(','), - tf_helpunitreply: tf_helpunitreply - }) + data: JSON.stringify(params) }).then((res) => { if (res.code === 0) { this.$emit('close') diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFilingUnit/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFilingUnit/index.html index fc101a00..186edc45 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFilingUnit/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFilingUnit/index.html @@ -123,14 +123,6 @@ layout("/layouts/platform.html"){ - - - - - 返回 提交 + 返回 diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/unitReply/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/unitReply/index.html index ad3ffac3..a104d5d6 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/unitReply/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/unitReply/index.html @@ -97,10 +97,9 @@ layout("/layouts/platform.html"){ - 导出 - 已审核 - 未审核 + 已答复 + 未答复 @@ -125,7 +124,9 @@ layout("/layouts/platform.html"){ @@ -217,8 +217,8 @@ layout("/layouts/platform.html"){ - 取消 提交 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/committeeFilingUnit/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/committeeFilingUnit/index.html index 9214437c..2475a9b7 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/committeeFilingUnit/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/committeeFilingUnit/index.html @@ -151,8 +151,8 @@ layout("/layouts/platform.html"){ - 取消 提交 + 取消 @@ -224,8 +224,8 @@ layout("/layouts/platform.html"){ - 取消 提交 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/delegation/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/delegation/index.html index 44f5d0b6..f8fc2914 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/delegation/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/delegation/index.html @@ -100,10 +100,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回重新填写 - 建议撤销 同意 + 建议撤销 + 退回重新填写 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/schoolLeaderApproval/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/schoolLeaderApproval/index.html index 50577e91..1ee807e7 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/schoolLeaderApproval/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/schoolLeaderApproval/index.html @@ -127,9 +127,9 @@ layout("/layouts/platform.html"){ - 取消 - 退回重新答复 同意 + 退回重新答复 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/seconded/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/seconded/index.html index 3ea98315..13aec51e 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/seconded/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/seconded/index.html @@ -95,9 +95,9 @@ layout("/layouts/platform.html"){ - 取消 - 拒绝 同意 + 拒绝 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/unitRead/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/unitRead/index.html index f0a52dc3..fbb67690 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/unitRead/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/unitRead/index.html @@ -132,8 +132,8 @@ layout("/layouts/platform.html"){ - 取消 提交 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/unitReply/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/unitReply/index.html index ed7793e1..c6116ce6 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/unitReply/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestion/tc/transact/unitReply/index.html @@ -149,8 +149,8 @@ layout("/layouts/platform.html"){ - 取消 提交 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/committeeFiling/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/committeeFiling/index.html index e8b8d8ba..318d2a0c 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/committeeFiling/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/committeeFiling/index.html @@ -143,9 +143,9 @@ layout("/layouts/platform.html"){ --> - 取消 - 退回重新填写 提交 + 退回重新填写 + 取消 @@ -217,8 +217,8 @@ layout("/layouts/platform.html"){ --> - 取消 提交 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/committeeFilingUnit/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/committeeFilingUnit/index.html index 8be8d806..c25da370 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/committeeFilingUnit/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/committeeFilingUnit/index.html @@ -151,8 +151,8 @@ layout("/layouts/platform.html"){ --> - 取消 提交 + 取消 @@ -224,8 +224,8 @@ layout("/layouts/platform.html"){ --> - 取消 提交 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/delegation/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/delegation/index.html index f738d236..e2e6092d 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/delegation/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/delegation/index.html @@ -100,10 +100,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回重新填写 - 建议撤销 同意 + 建议撤销 + 退回重新填写 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/schoolLeaderApproval/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/schoolLeaderApproval/index.html index 72ee58a9..6157f31f 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/schoolLeaderApproval/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/schoolLeaderApproval/index.html @@ -127,9 +127,9 @@ layout("/layouts/platform.html"){ --> - 取消 - 退回重新答复 同意 + 退回重新答复 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/seconded/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/seconded/index.html index ced43d5b..56a45822 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/seconded/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/seconded/index.html @@ -94,9 +94,9 @@ layout("/layouts/platform.html"){ - 取消 - 拒绝 同意 + 拒绝 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/unitRead/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/unitRead/index.html index bc9cd85c..e15a4c96 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/unitRead/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/unitRead/index.html @@ -132,8 +132,8 @@ layout("/layouts/platform.html"){ - 取消 提交 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/unitReply/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/unitReply/index.html index 0d3c5e41..cb1acfb3 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/unitReply/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestion/wc/transact/unitReply/index.html @@ -149,8 +149,8 @@ layout("/layouts/platform.html"){ --> - 取消 提交 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/suggestionBox/xgh/index.html b/src/main/resources/views/platform/zhgh/democratic/suggestionBox/xgh/index.html index 2ead1007..7f0351a4 100644 --- a/src/main/resources/views/platform/zhgh/democratic/suggestionBox/xgh/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/suggestionBox/xgh/index.html @@ -83,10 +83,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwSjAudit.html b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwSjAudit.html index 76589605..33040f8c 100644 --- a/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwSjAudit.html +++ b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwSjAudit.html @@ -147,9 +147,9 @@ layout("/layouts/platform.html"){ - 取消 - 退回修改 同意 + 退回修改 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/condolence/branchUnionApproval/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/condolence/branchUnionApproval/index.html index 9afd3410..470bd029 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/condolence/branchUnionApproval/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/condolence/branchUnionApproval/index.html @@ -83,10 +83,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/condolence/schoolPrincipalApproval/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/condolence/schoolPrincipalApproval/index.html index 6283e298..1c75344e 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/condolence/schoolPrincipalApproval/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/condolence/schoolPrincipalApproval/index.html @@ -103,10 +103,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/condolence/schoolUnionApproval/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/condolence/schoolUnionApproval/index.html index 6283e298..1c75344e 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/condolence/schoolUnionApproval/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/condolence/schoolUnionApproval/index.html @@ -103,10 +103,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/branchunionapproval/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/branchunionapproval/index.html index 11b121cd..1b32eae8 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/branchunionapproval/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/branchunionapproval/index.html @@ -96,10 +96,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/schoolunionapproval/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/schoolunionapproval/index.html index b4c30f92..1a9cff85 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/schoolunionapproval/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/schoolunionapproval/index.html @@ -124,10 +124,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/unionLeaderApproval/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/unionLeaderApproval/index.html index a6507700..3dfa4a17 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/unionLeaderApproval/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/unionLeaderApproval/index.html @@ -95,10 +95,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/schoolAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/schoolAudit/index.html index 64a693c3..7ce19db0 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/schoolAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/schoolAudit/index.html @@ -94,10 +94,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/unionAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/unionAudit/index.html index 1ee99e82..1774e481 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/unionAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/unionAudit/index.html @@ -94,10 +94,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/excellentRecuperation/schoolAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/excellentRecuperation/schoolAudit/index.html index 025a0c72..c7602542 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/excellentRecuperation/schoolAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/excellentRecuperation/schoolAudit/index.html @@ -106,10 +106,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/schoolAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/schoolAudit/index.html index 9a0d2825..ae099f40 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/schoolAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/schoolAudit/index.html @@ -93,10 +93,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/unionAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/unionAudit/index.html index dbf3fd53..b13d9d81 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/unionAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/maternityLeave/unionAudit/index.html @@ -94,10 +94,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/foundationAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/foundationAudit/index.html index 49de5ac7..927c7bf9 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/foundationAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/foundationAudit/index.html @@ -207,11 +207,11 @@ layout("/layouts/platform.html"){ - 取消 提交 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/retirementAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/retirementAudit/index.html index a7206e77..53dd8462 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/retirementAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/retirementAudit/index.html @@ -96,9 +96,9 @@ layout("/layouts/platform.html"){ - 取消 - 拒绝申请 同意申请 + 拒绝申请 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/unionAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/unionAudit/index.html index 9f028790..6f6707f5 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/unionAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/aidFund/unionAudit/index.html @@ -99,9 +99,9 @@ layout("/layouts/platform.html"){ - 取消 - 拒绝申请 同意申请 + 拒绝申请 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/foundationAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/foundationAudit/index.html index 67c6ad38..23a08404 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/foundationAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/foundationAudit/index.html @@ -192,10 +192,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/retirementAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/retirementAudit/index.html index caa33085..cc2695e4 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/retirementAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/retirementAudit/index.html @@ -76,10 +76,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/schoolHospitalAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/schoolHospitalAudit/index.html index d970d575..65f68f90 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/schoolHospitalAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/schoolHospitalAudit/index.html @@ -108,10 +108,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/statistics/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/statistics/index.html index 03216d14..2355ccfe 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/statistics/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/statistics/index.html @@ -215,10 +215,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/unionAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/unionAudit/index.html index caa33085..cc2695e4 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/unionAudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/medicalMutualAid/medical/unionAudit/index.html @@ -76,10 +76,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 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 4973cb65..0e37bb12 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 @@ -75,10 +75,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/schoolunionapproval/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/schoolunionapproval/index.html index d7c1590e..93881b8e 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/schoolunionapproval/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/schoolunionapproval/index.html @@ -93,10 +93,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/uniongroupapproval/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/uniongroupapproval/index.html index 4a6e30ba..4348f4af 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/uniongroupapproval/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/uniongroupapproval/index.html @@ -76,10 +76,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/branch/audit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/branch/audit/index.html index 030ea8ed..5fe00db9 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/branch/audit/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/branch/audit/index.html @@ -23,10 +23,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回重新填写 - 拒绝 同意 + 拒绝 + 退回重新填写 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchunionaudit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchunionaudit/index.html index b53e2637..d78a8428 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchunionaudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchunionaudit/index.html @@ -63,10 +63,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolunionaudit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolunionaudit/index.html index 2282cd34..92c4f932 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolunionaudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolunionaudit/index.html @@ -66,10 +66,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/uniongroupaudit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/uniongroupaudit/index.html index b0dc5b74..f846e27f 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/uniongroupaudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/uniongroupaudit/index.html @@ -63,10 +63,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人 + 取消 diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/school/audit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/school/audit/index.html index 240a5c9d..c73985df 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/school/audit/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/school/audit/index.html @@ -26,10 +26,10 @@ layout("/layouts/platform.html"){ - 取消 - 退回重新填写 - 拒绝 同意 + 拒绝 + 退回重新填写 + 取消 diff --git a/src/main/resources/views/platform/zhghh5/club/clubApproval/index.html b/src/main/resources/views/platform/zhghh5/club/clubApproval/index.html index 77888f54..52467cff 100644 --- a/src/main/resources/views/platform/zhghh5/club/clubApproval/index.html +++ b/src/main/resources/views/platform/zhghh5/club/clubApproval/index.html @@ -98,9 +98,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 不同意 同意 + 不同意 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/club/schoolUnionApproval/index.html b/src/main/resources/views/platform/zhghh5/club/schoolUnionApproval/index.html index 1e000df1..601ea219 100644 --- a/src/main/resources/views/platform/zhghh5/club/schoolUnionApproval/index.html +++ b/src/main/resources/views/platform/zhghh5/club/schoolUnionApproval/index.html @@ -70,9 +70,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 不同意 同意 + 不同意 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/enrollmentRegistration/schoolAudit/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/enrollmentRegistration/schoolAudit/index.html index 102702b2..ea376ebc 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/enrollmentRegistration/schoolAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/enrollmentRegistration/schoolAudit/index.html @@ -80,9 +80,9 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/enrollmentRegistration/unionAudit/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/enrollmentRegistration/unionAudit/index.html index e510de61..40f7e1b7 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/enrollmentRegistration/unionAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/enrollmentRegistration/unionAudit/index.html @@ -82,9 +82,9 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/meeting/delegationApproval/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/meeting/delegationApproval/index.html index 30bb707b..dae510c7 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/meeting/delegationApproval/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/meeting/delegationApproval/index.html @@ -72,9 +72,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 不同意 同意 + 不同意 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/meeting/schoolUnionApproval/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/meeting/schoolUnionApproval/index.html index e3fc0e37..5ad5be53 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/meeting/schoolUnionApproval/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/meeting/schoolUnionApproval/index.html @@ -72,9 +72,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 不同意 同意 + 不同意 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/clubAudit/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/clubAudit/index.html index 3f3fe9f8..2a44cfe2 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/clubAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/clubAudit/index.html @@ -78,9 +78,9 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/clubZxAudit/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/clubZxAudit/index.html index 8799cd6e..dc661823 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/clubZxAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/clubZxAudit/index.html @@ -78,9 +78,9 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/schoolCnAudit/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/schoolCnAudit/index.html index 56df2d9a..3410434c 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/schoolCnAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/schoolCnAudit/index.html @@ -78,9 +78,9 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/schoolKjAudit/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/schoolKjAudit/index.html index 003a9eb3..adddcab3 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/schoolKjAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/schoolKjAudit/index.html @@ -88,9 +88,9 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/schoolZxAudit/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/schoolZxAudit/index.html index 1e04e8f8..d6243e42 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/schoolZxAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/schoolZxAudit/index.html @@ -78,9 +78,9 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/unionAudit/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/unionAudit/index.html index a2419ebf..de7c423f 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/unionAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/outlayReimburse/unionAudit/index.html @@ -78,9 +78,9 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/site/schoolUnionAudit/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/site/schoolUnionAudit/index.html index 02e06114..2654eebb 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/site/schoolUnionAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/site/schoolUnionAudit/index.html @@ -71,9 +71,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 不同意 同意 + 不同意 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/siteCug/schoolUnionAudit/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/siteCug/schoolUnionAudit/index.html index 2678d571..9955a1f2 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/siteCug/schoolUnionAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/siteCug/schoolUnionAudit/index.html @@ -176,9 +176,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 不同意 同意 + 不同意 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/tour/schoolUnionApproval/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/tour/schoolUnionApproval/index.html index 0acfc6e5..0242e899 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/tour/schoolUnionApproval/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/tour/schoolUnionApproval/index.html @@ -185,9 +185,9 @@ layout("/layouts/platform_h5.html"){
- 退回 - 拒绝 同意 + 拒绝 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/tour/unionApproval/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/tour/unionApproval/index.html index c7a7f446..acce0c76 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/tour/unionApproval/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/tour/unionApproval/index.html @@ -184,9 +184,9 @@ layout("/layouts/platform_h5.html"){
- 退回 - 拒绝 同意 + 拒绝 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/unionReimburse/certifierUserSign/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/unionReimburse/certifierUserSign/index.html index 6de5765e..c57fb0bb 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/unionReimburse/certifierUserSign/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/unionReimburse/certifierUserSign/index.html @@ -83,8 +83,8 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 同意 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/unionReimburse/review/index.html b/src/main/resources/views/platform/zhghh5/dayofficework/unionReimburse/review/index.html index 6798ed38..35b70a9a 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/unionReimburse/review/index.html +++ b/src/main/resources/views/platform/zhghh5/dayofficework/unionReimburse/review/index.html @@ -88,9 +88,9 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/democratic/proposal/query/comprehensive/index.html b/src/main/resources/views/platform/zhghh5/democratic/proposal/query/comprehensive/index.html index 8943065a..17646c3c 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/proposal/query/comprehensive/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/proposal/query/comprehensive/index.html @@ -13,9 +13,9 @@ layout("/layouts/platform_h5.html"){ @search="doSearch" > - + ({ text: v.fullName, value: v.id }))) + // 届次接口按开始时间倒序返回,首条即最新届次;无届次时继续按全部届次查询。 + if (res.data && res.data.length > 0) { + this.$set(this.pageForm, "searchSessionId", res.data[0].id) + } + this.sessionChange() } }) }, listDelegation() { - this.$axios.post("/platform/proposal/common/listDelegation", { sessionId: this.pageForm.sessionId }).then((res) => { + this.$axios.post("/platform/proposal/common/listDelegation", { sessionId: this.pageForm.searchSessionId }).then((res) => { if (res.code === 0) { this.delegationOptions = [ { @@ -192,7 +197,6 @@ layout("/layouts/platform_h5.html"){ } }, created() { - this.pageData() this.listSession() } }) diff --git a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/commissioner/index.html b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/commissioner/index.html index bf86f61d..12ec1d90 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/commissioner/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/commissioner/index.html @@ -107,8 +107,8 @@ layout("/layouts/platform_h5.html"){ >
- 取消 提交 + 取消
@@ -157,10 +157,11 @@ layout("/layouts/platform_h5.html"){ value: null } ].concat(res.data.map((v) => ({text: v.fullName, value: v.id}))) - if (this.sessionOptions.length > 0) { - this.pageForm.sessionId = this.sessionOptions[0].value - this.doSearch() + // 届次接口按开始时间倒序返回,首条即最新届次;无届次时继续按全部届次查询。 + if (res.data && res.data.length > 0) { + this.$set(this.pageForm, "sessionId", res.data[0].id) } + this.doSearch() } }) }, diff --git a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/delegation/index.html b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/delegation/index.html index b3475db5..b02aecb8 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/delegation/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/delegation/index.html @@ -65,9 +65,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 不同意 同意 + 不同意 + 退回
@@ -112,10 +112,11 @@ layout("/layouts/platform_h5.html"){ value: null } ].concat(res.data.map((v) => ({text: v.fullName, value: v.id}))) - if (this.sessionOptions.length > 0) { - this.pageForm.sessionId = this.sessionOptions[0].value - this.doSearch() + // 届次接口按开始时间倒序返回,首条即最新届次;无届次时继续按全部届次查询。 + if (res.data && res.data.length > 0) { + this.$set(this.pageForm, "sessionId", res.data[0].id) } + this.doSearch() } }) }, diff --git a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/feedbackEvaluation/index.html b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/feedbackEvaluation/index.html index a29d3429..efa8c13b 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/feedbackEvaluation/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/feedbackEvaluation/index.html @@ -18,8 +18,8 @@ layout("/layouts/platform_h5.html"){
- - + + @@ -75,9 +75,9 @@ layout("/layouts/platform_h5.html"){
- 取消 提交 + 取消
@@ -165,10 +165,11 @@ layout("/layouts/platform_h5.html"){ value: null } ].concat(res.data.map((v) => ({text: v.fullName, value: v.id}))) - if (this.sessionOptions.length > 0) { - this.pageForm.sessionId = this.sessionOptions[0].value - this.doSearch() + // 届次接口按开始时间倒序返回,首条即最新届次;无届次时继续按全部届次查询。 + if (res.data && res.data.length > 0) { + this.$set(this.pageForm, "sessionId", res.data[0].id) } + this.doSearch() } }) }, diff --git a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/schoolLeaderApproval/index.html b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/schoolLeaderApproval/index.html index e77c4309..49e5fd16 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/schoolLeaderApproval/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/schoolLeaderApproval/index.html @@ -65,8 +65,8 @@ layout("/layouts/platform_h5.html"){ >
- 退回答复 同意答复 + 退回答复
@@ -111,10 +111,11 @@ layout("/layouts/platform_h5.html"){ value: null } ].concat(res.data.map((v) => ({text: v.fullName, value: v.id}))) - if (this.sessionOptions.length > 0) { - this.pageForm.sessionId = this.sessionOptions[0].value - this.doSearch() + // 届次接口按开始时间倒序返回,首条即最新届次;无届次时继续按全部届次查询。 + if (res.data && res.data.length > 0) { + this.$set(this.pageForm, "sessionId", res.data[0].id) } + this.doSearch() } }) }, diff --git a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/seconded/index.html b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/seconded/index.html index 82d66eaf..7e3dab80 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/seconded/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/seconded/index.html @@ -70,12 +70,12 @@ layout("/layouts/platform_h5.html"){
- 不同意 同意 + 不同意
- 不同意 同意 + 不同意
@@ -130,10 +130,11 @@ layout("/layouts/platform_h5.html"){ value: null } ].concat(res.data.map((v) => ({text: v.fullName, value: v.id}))) - if (this.sessionOptions.length > 0) { - this.pageForm.sessionId = this.sessionOptions[0].value - this.doSearch() + // 届次接口按开始时间倒序返回,首条即最新届次;无届次时继续按全部届次查询。 + if (res.data && res.data.length > 0) { + this.$set(this.pageForm, "sessionId", res.data[0].id) } + this.doSearch() } }) }, @@ -162,7 +163,7 @@ layout("/layouts/platform_h5.html"){ await this.$refs.formRef.validate(); this.$dialog.confirm({ title: "提示", - message: "您确定要提交吗?" + message: "提案一旦提交,后续将无法自行修改或撤回。请您在提交前仔细确认。" }).then(() => { this.$axios.post("/platform/proposal/seconded/executeTask", { data: JSON.stringify({ @@ -187,7 +188,7 @@ layout("/layouts/platform_h5.html"){ updateSecond(submitType) { this.$dialog.confirm({ title: "提示", - message: "您确定要提交吗?" + message: "提案一旦提交,后续将无法自行修改或撤回。请您在提交前仔细确认。" }).then(() => { this.$axios.post("/platform/proposal/seconded/updateInfo", { proposalId: this.formData.proposalId, diff --git a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/suggestion/index.html b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/suggestion/index.html index 21f25de7..5cee0ed2 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/suggestion/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/suggestion/index.html @@ -90,8 +90,8 @@ layout("/layouts/platform_h5.html"){ >
- 取消 提交 + 取消
@@ -195,10 +195,11 @@ layout("/layouts/platform_h5.html"){ value: null } ].concat(res.data.map((v) => ({text: v.fullName, value: v.id}))) - if (this.sessionOptions.length > 0) { - this.pageForm.sessionId = this.sessionOptions[0].value - this.doSearch() + // 届次接口按开始时间倒序返回,首条即最新届次;无届次时继续按全部届次查询。 + if (res.data && res.data.length > 0) { + this.$set(this.pageForm, "sessionId", res.data[0].id) } + this.doSearch() } }) }, diff --git a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/unitReply/index.html b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/unitReply/index.html index bb0cc265..561562bf 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/unitReply/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/unitReply/index.html @@ -19,8 +19,8 @@ layout("/layouts/platform_h5.html"){ - - + + @@ -32,7 +32,8 @@ layout("/layouts/platform_h5.html"){ {{row.typeName}} {{row.createUserName}} {{row.delegationName}} - {{row.underTakeName}}({{row.underTakeIsMaster ? '主办' : '协办'}}) + + {{row.underTakeName}}({{row.caseFilingResult === 'SUGGESTION' ? '承办' : (row.underTakeIsMaster ? '主办' : '协办')}}) {{row.curTaskName}} @@ -119,8 +120,8 @@ layout("/layouts/platform_h5.html"){
- 取消 提交 + 取消
@@ -176,10 +177,11 @@ layout("/layouts/platform_h5.html"){ value: null } ].concat(res.data.map((v) => ({text: v.fullName, value: v.id}))) - if (this.sessionOptions.length > 0) { - this.pageForm.sessionId = this.sessionOptions[0].value - this.doSearch() + // 届次接口按开始时间倒序返回,首条即最新届次;无届次时继续按全部届次查询。 + if (res.data && res.data.length > 0) { + this.$set(this.pageForm, "sessionId", res.data[0].id) } + this.doSearch() } }) }, diff --git a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/viceDelegation/index.html b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/viceDelegation/index.html index 2ce5d447..51c1da0c 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/viceDelegation/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/proposal/transact/viceDelegation/index.html @@ -83,10 +83,11 @@ layout("/layouts/platform_h5.html"){ value: null } ].concat(res.data.map((v) => ({text: v.fullName, value: v.id}))) - if (this.sessionOptions.length > 0) { - this.pageForm.sessionId = this.sessionOptions[0].value - this.doSearch() + // 届次接口按开始时间倒序返回,首条即最新届次;无届次时继续按全部届次查询。 + if (res.data && res.data.length > 0) { + this.$set(this.pageForm, "sessionId", res.data[0].id) } + this.doSearch() } }) }, diff --git a/src/main/resources/views/platform/zhghh5/democratic/suggestion/tc/transact/delegation/index.html b/src/main/resources/views/platform/zhghh5/democratic/suggestion/tc/transact/delegation/index.html index b6431597..b8ad8a83 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/suggestion/tc/transact/delegation/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/suggestion/tc/transact/delegation/index.html @@ -76,9 +76,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回重新填写 - 建议撤销 同意 + 建议撤销 + 退回重新填写
diff --git a/src/main/resources/views/platform/zhghh5/democratic/suggestion/tc/transact/seconded/index.html b/src/main/resources/views/platform/zhghh5/democratic/suggestion/tc/transact/seconded/index.html index efd900b0..4d8f1d66 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/suggestion/tc/transact/seconded/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/suggestion/tc/transact/seconded/index.html @@ -59,8 +59,8 @@ layout("/layouts/platform_h5.html"){
- 拒绝 同意 + 拒绝
diff --git a/src/main/resources/views/platform/zhghh5/democratic/suggestion/wc/transact/delegation/index.html b/src/main/resources/views/platform/zhghh5/democratic/suggestion/wc/transact/delegation/index.html index 460f97b8..7b4fd8f5 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/suggestion/wc/transact/delegation/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/suggestion/wc/transact/delegation/index.html @@ -76,9 +76,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回重新填写 - 建议撤销 同意 + 建议撤销 + 退回重新填写
diff --git a/src/main/resources/views/platform/zhghh5/democratic/suggestion/wc/transact/seconded/index.html b/src/main/resources/views/platform/zhghh5/democratic/suggestion/wc/transact/seconded/index.html index 27161ea7..f02a850e 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/suggestion/wc/transact/seconded/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/suggestion/wc/transact/seconded/index.html @@ -70,8 +70,8 @@ layout("/layouts/platform_h5.html"){
- 拒绝 同意 + 拒绝
diff --git a/src/main/resources/views/platform/zhghh5/democratic/suggestionBox/xgh/index.html b/src/main/resources/views/platform/zhghh5/democratic/suggestionBox/xgh/index.html index c836923e..c1b9e7a4 100644 --- a/src/main/resources/views/platform/zhghh5/democratic/suggestionBox/xgh/index.html +++ b/src/main/resources/views/platform/zhghh5/democratic/suggestionBox/xgh/index.html @@ -60,9 +60,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 拒绝 同意 + 拒绝 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/branchUnionApproval/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/branchUnionApproval/index.html index d7931938..b65d14ba 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/branchUnionApproval/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/branchUnionApproval/index.html @@ -72,9 +72,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 不同意 同意 + 不同意 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/schoolPrincipalApproval/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/schoolPrincipalApproval/index.html index 974a2503..b9d9fd99 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/schoolPrincipalApproval/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/schoolPrincipalApproval/index.html @@ -72,9 +72,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 不同意 同意 + 不同意 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/schoolUnionApproval/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/schoolUnionApproval/index.html index abd28fc4..788a9b33 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/schoolUnionApproval/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/condolence/schoolUnionApproval/index.html @@ -72,9 +72,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 不同意 同意 + 不同意 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/difficulthelp/branchunionapproval/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/difficulthelp/branchunionapproval/index.html index d7d0a2c9..f7792a4e 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/difficulthelp/branchunionapproval/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/difficulthelp/branchunionapproval/index.html @@ -72,9 +72,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 拒绝 同意 + 拒绝 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/difficulthelp/schoolunionapproval/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/difficulthelp/schoolunionapproval/index.html index f167581b..3347121c 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/difficulthelp/schoolunionapproval/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/difficulthelp/schoolunionapproval/index.html @@ -101,9 +101,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 拒绝 同意 + 拒绝 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/difficulthelp/unionLeaderApproval/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/difficulthelp/unionLeaderApproval/index.html index 40ade9be..0c09c2f7 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/difficulthelp/unionLeaderApproval/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/difficulthelp/unionLeaderApproval/index.html @@ -83,9 +83,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 拒绝 同意 + 拒绝 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/dsznfmtx/schoolAudit/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/dsznfmtx/schoolAudit/index.html index dc983d56..d264cac6 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/dsznfmtx/schoolAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/dsznfmtx/schoolAudit/index.html @@ -76,9 +76,9 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/dsznfmtx/unionAudit/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/dsznfmtx/unionAudit/index.html index a3966903..6ad35a7f 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/dsznfmtx/unionAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/dsznfmtx/unionAudit/index.html @@ -76,9 +76,9 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/maternityLeave/schoolAudit/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/maternityLeave/schoolAudit/index.html index b02fe117..daec7596 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/maternityLeave/schoolAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/maternityLeave/schoolAudit/index.html @@ -76,9 +76,9 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/maternityLeave/unionAudit/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/maternityLeave/unionAudit/index.html index b60fbff1..9960a553 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/maternityLeave/unionAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/maternityLeave/unionAudit/index.html @@ -76,9 +76,9 @@ layout("/layouts/platform_h5.html"){
- 退回到发起人 - 拒绝申请 同意申请 + 拒绝申请 + 退回到发起人
diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/medicalMutualAid/aidFund/foundationAudit/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/medicalMutualAid/aidFund/foundationAudit/index.html index bf0d7c90..91f06e88 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/medicalMutualAid/aidFund/foundationAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/medicalMutualAid/aidFund/foundationAudit/index.html @@ -108,8 +108,8 @@ layout("/layouts/platform_h5.html"){ >
- 关闭 提交 + 关闭
diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/medicalMutualAid/aidFund/retirementAudit/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/medicalMutualAid/aidFund/retirementAudit/index.html index c8a0f216..69d53bbc 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/medicalMutualAid/aidFund/retirementAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/medicalMutualAid/aidFund/retirementAudit/index.html @@ -76,9 +76,9 @@ layout("/layouts/platform_h5.html"){ >
- 关闭 - 拒绝 同意 + 拒绝 + 关闭
diff --git a/src/main/resources/views/platform/zhghh5/staffbenefit/medicalMutualAid/aidFund/unionAudit/index.html b/src/main/resources/views/platform/zhghh5/staffbenefit/medicalMutualAid/aidFund/unionAudit/index.html index 88c780c9..701c5084 100644 --- a/src/main/resources/views/platform/zhghh5/staffbenefit/medicalMutualAid/aidFund/unionAudit/index.html +++ b/src/main/resources/views/platform/zhghh5/staffbenefit/medicalMutualAid/aidFund/unionAudit/index.html @@ -69,9 +69,9 @@ layout("/layouts/platform_h5.html"){ >
- 关闭 - 拒绝 同意 + 拒绝 + 关闭
diff --git a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/branchunionapproval/index.html b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/branchunionapproval/index.html index fd211ae9..27ae8bac 100644 --- a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/branchunionapproval/index.html +++ b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/branchunionapproval/index.html @@ -61,9 +61,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 拒绝 同意 + 拒绝 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/schoolunionapproval/index.html b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/schoolunionapproval/index.html index bc00ef36..3a907ae5 100644 --- a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/schoolunionapproval/index.html +++ b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/schoolunionapproval/index.html @@ -61,9 +61,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 拒绝 同意 + 拒绝 + 退回
diff --git a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/uniongroupapproval/index.html b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/uniongroupapproval/index.html index eb043919..52193773 100644 --- a/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/uniongroupapproval/index.html +++ b/src/main/resources/views/platform/zhghh5/staffmanage/member/apply/uniongroupapproval/index.html @@ -61,9 +61,9 @@ layout("/layouts/platform_h5.html"){ >
- 退回 - 拒绝 同意 + 拒绝 + 退回