From 3dcf833e7af86310e6b6b95005ea8f74bdc94d5d Mon Sep 17 00:00:00 2001 From: "@jyuhsin" <729757837@qq.com> Date: Wed, 27 Aug 2025 17:21:42 +0800 Subject: [PATCH] commit --- .../com/budwk/app/sys/models/SysHoliday.java | 38 +++ .../app/task/job/holiday/HolidayJob.java | 54 ++++ .../ClubAuditManagerController.java | 2 +- .../ClubSchoolAuditReportController.java | 2 +- .../ClubSchoolAuditRuleController.java | 2 +- .../site/controller/SiteApplyController.java | 252 +++++++++++++++++- ...troller.java => SiteManageController.java} | 12 +- .../site/controller/SiteMineController.java | 127 +++++++++ .../site/controller/SiteRecordController.java | 108 ++++++++ .../SiteSchoolUnionAuditController.java | 118 ++++++++ .../dayofficework/site/model/SiteApply.java | 11 + .../site/service/SiteApplyService.java | 4 + .../service/impl/SiteApplyServiceImpl.java | 42 +++ ...ndolenceBranchUnionApprovalController.java | 2 +- .../controller/CondolenceMineController.java | 9 +- .../controller/CondolenceReadController.java | 1 + ...ndolenceSchoolUnionApprovalController.java | 2 +- .../zhgh/club/evaluate/apply/index.html | 33 +-- .../zhgh/club/infoManage/change/index.html | 34 +-- .../club/infoManage/refreshReport/index.html | 32 ++- .../club/infoManage/ruleUpdate/index.html | 32 ++- .../platform/zhgh/club/join/apply/index.html | 32 ++- .../zhgh/dayofficework/site/apply/apply.js | 208 ++++++++++++++- .../zhgh/dayofficework/site/apply/index.html | 17 +- .../dayofficework/site/common/applyInfo.js | 94 +++++++ .../zhgh/dayofficework/site/manage/index.html | 2 +- .../zhgh/dayofficework/site/mine/index.html | 184 +++++++++++++ .../zhgh/dayofficework/site/record/index.html | 153 +++++++++++ .../site/schoolUnionAudit/index.html | 214 +++++++++++++++ .../staffbenefit/condolence/apply/index.html | 32 ++- .../condolence/branchUnionApproval/index.html | 4 +- .../staffbenefit/condolence/mine/index.html | 4 +- .../staffbenefit/condolence/read/index.html | 4 +- .../condolence/schoolUnionApproval/index.html | 4 +- 34 files changed, 1745 insertions(+), 124 deletions(-) create mode 100644 src/main/java/com/budwk/app/sys/models/SysHoliday.java create mode 100644 src/main/java/com/budwk/app/task/job/holiday/HolidayJob.java rename src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/{SiteInfoController.java => SiteManageController.java} (94%) create mode 100644 src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteMineController.java create mode 100644 src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteRecordController.java create mode 100644 src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteSchoolUnionAuditController.java create mode 100644 src/main/resources/views/platform/zhgh/dayofficework/site/common/applyInfo.js create mode 100644 src/main/resources/views/platform/zhgh/dayofficework/site/mine/index.html create mode 100644 src/main/resources/views/platform/zhgh/dayofficework/site/record/index.html create mode 100644 src/main/resources/views/platform/zhgh/dayofficework/site/schoolUnionAudit/index.html diff --git a/src/main/java/com/budwk/app/sys/models/SysHoliday.java b/src/main/java/com/budwk/app/sys/models/SysHoliday.java new file mode 100644 index 00000000..26bcc7ef --- /dev/null +++ b/src/main/java/com/budwk/app/sys/models/SysHoliday.java @@ -0,0 +1,38 @@ +package com.budwk.app.sys.models; + +import lombok.Data; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +/** + * @Author: JyuHsin + * @Date: 2024/6/6 15:33 + * @Version: v1.0.0 + * @Description: TODO + **/ +@Data +@Table("sys_holiday") +public class SysHoliday { + + @Name + @ColDefine + @Column + @PrevInsert(uu32 = true) + @Comment("id") + private String id; + + @ColDefine(type = ColType.VARCHAR, width = 20) + @Comment("名称") + @Column + private String name; + + @ColDefine(type = ColType.VARCHAR, width = 20) + @Comment("日期") + @Column + private String day; + + @ColDefine(type = ColType.VARCHAR, width = 20) + @Comment("周几") + @Column + private String week; +} diff --git a/src/main/java/com/budwk/app/task/job/holiday/HolidayJob.java b/src/main/java/com/budwk/app/task/job/holiday/HolidayJob.java new file mode 100644 index 00000000..58e52fb9 --- /dev/null +++ b/src/main/java/com/budwk/app/task/job/holiday/HolidayJob.java @@ -0,0 +1,54 @@ +package com.budwk.app.task.job.holiday; + +import cn.hutool.http.HttpUtil; +import com.budwk.app.sys.models.SysHoliday; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.json.Json; +import org.nutz.lang.Lang; +import org.nutz.lang.util.NutMap; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: JyuHsin + * @Date: 2024/6/6 15:16 + * @Version: v1.0.0 + * @Description: 获取所有节假日,每年执行一次 + **/ +@IocBean +public class HolidayJob implements Job { + + private static final String URL = "https://timor.tech/api/holiday/year?type=Y"; + + @Inject + private Dao dao; + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + NutMap resMap = Json.fromJson(NutMap.class, HttpUtil.get(URL)); + if(resMap.getInt("code") == 0) { + NutMap holidayMap = resMap.getAs("type", NutMap.class); + List result = new ArrayList<>(); + holidayMap.keySet().forEach(k -> { + NutMap day = (NutMap) holidayMap.get(k); + if(day.getInt("type") == 2) { + SysHoliday h = new SysHoliday(); + h.setDay(k); + h.setName(day.getString("name")); + h.setWeek(day.getString("week")); + result.add(h); + } + }); + if(Lang.isNotEmpty(result)) { + dao.insert(result); + } + } + } + +} diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubAuditManagerController.java b/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubAuditManagerController.java index 3d26daeb..386b7f9e 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubAuditManagerController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubAuditManagerController.java @@ -63,7 +63,7 @@ public class ClubAuditManagerController { ins.id AS instanceId, ins.businessNo, ins.state instanceState, - ins.variable instanceVariale, + ins.variable instanceVariable, ins.processDefineId instanceProcessDefineId, t.id taskId, t.taskName AS taskKey, diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubSchoolAuditReportController.java b/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubSchoolAuditReportController.java index bc7224db..dd10e477 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubSchoolAuditReportController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubSchoolAuditReportController.java @@ -51,7 +51,7 @@ public class ClubSchoolAuditReportController { ins.id AS instanceId, ins.businessNo, ins.state instanceState, - ins.variable instanceVariale, + ins.variable instanceVariable, ins.processDefineId instanceProcessDefineId, t.id taskId, t.taskName AS taskKey, diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubSchoolAuditRuleController.java b/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubSchoolAuditRuleController.java index d5ff8cf8..c9fddbd0 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubSchoolAuditRuleController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubSchoolAuditRuleController.java @@ -51,7 +51,7 @@ public class ClubSchoolAuditRuleController { ins.id AS instanceId, ins.businessNo, ins.state instanceState, - ins.variable instanceVariale, + ins.variable instanceVariable, ins.processDefineId instanceProcessDefineId, t.id taskId, t.taskName AS taskKey, diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteApplyController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteApplyController.java index 3d697f30..a1a0b582 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteApplyController.java @@ -1,29 +1,52 @@ package com.budwk.app.zhgh.dayofficework.site.controller; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Dict; import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.flow.constant.FlowConst; +import com.budwk.app.flow.engine.FlowEngine; +import com.budwk.app.flow.entity.ProcessInstance; +import com.budwk.app.flow.entity.ProcessTask; +import com.budwk.app.flow.enums.ProcessInstanceStateEnum; +import com.budwk.app.flow.enums.ProcessSubmitTypeEnum; +import com.budwk.app.flow.service.FlowCommonService; +import com.budwk.app.sys.models.SysHoliday; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.dayofficework.site.model.SiteApply; import com.budwk.app.zhgh.dayofficework.site.model.SiteInfo; import com.budwk.app.zhgh.dayofficework.site.model.SiteType; import com.budwk.app.zhgh.dayofficework.site.service.SiteApplyService; import com.budwk.app.zhgh.dayofficework.site.service.SiteInfoService; -import com.budwk.app.zhgh.dayofficework.site.service.SiteTypeService; +import com.budwk.app.zhgh.staffbenefit.condolence.model.Condolence; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; 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.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -48,6 +71,10 @@ public class SiteApplyController { private SiteApplyService applyService; @Inject private SiteInfoService infoService; + @Inject + private FlowEngine flowEngine; + @Inject + private FlowCommonService flowCommonService; @At("") @SaCheckPermission("site.apply") @@ -56,7 +83,7 @@ public class SiteApplyController { @At @ApiOperation("分页查询") - @SaCheckPermission("site.type") + @SaCheckPermission("site.apply") public Result pageData(PageForm pageForm, @Param("year") Integer year, @Param("type") String type) { @@ -86,4 +113,225 @@ public class SiteApplyController { } return Result.success(pagination); } + + @At + @ApiOperation("新增/修改场地预约") + @SaCheckPermission("site.apply") + @SLog(type = "site", tag = "新增/修改场地预约", msg = "新增/修改场地预约") + public Result submit(@Param("data") SiteApply siteApply, @Param("days") String[] days) { + Map validate = applyService.validateApply(siteApply, days[0]); + if(validate.containsKey(false)) { + return Result.error(validate.get(false)); + } + siteApply.setApplyDay(days[0]); + dao.insertOrUpdate(siteApply); + + // 开启流程实例 + Dict args = Dict.create(); + args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode()); + args.set(FlowConst.FORM_DATA, siteApply); + ProcessInstance instance = flowEngine.startProcessInstanceByKey("CDYY", siteApply.getId(), SecurityUtil.getUserId(), args); + + // 自动完成第一个申请任务 + List doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null); + for (ProcessTask task : doingTaskList) { + flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args); + } + return Result.success(); + } + + @At + @ApiOperation("重新提交申请") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("site.apply") + public Result submitAgain(@Param("data") SiteApply siteApply, + @Param("days") String[] days, + @Param("taskId") String taskId) { + Map validate = applyService.validateApply(siteApply, days[0]); + if(validate.containsKey(false)) { + return Result.error(validate.get(false)); + } + siteApply.setApplyDay(days[0]); + dao.insertOrUpdate(siteApply); + + Dict dict = Dict.create(); + dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId); + dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode()); + flowCommonService.executeTask(dict); + return Result.success(); + } + + @At + @ApiOperation("查询可以预约的日期") + @SaCheckPermission("site.apply") + public Result queryAllowTime(String siteId, String startTime, String endTime) { + if(StrUtil.isBlank(siteId)) { + return Result.success(new ArrayList<>()); + } + // 转化对象 + DateTime startDate = DateUtil.parseDate(startTime); + Date endDate = DateUtil.parseDate(endTime); + // 获取区间内的每一天 + List fullDateList = DateUtil.rangeToList(startDate, endDate, DateField.DAY_OF_MONTH); + + // 查询场地 + SiteInfo siteInfo = infoService.fetch(siteId); + List openHours = siteInfo.getOpenHours(); + List weekNumList = openHours.stream().map(o -> o.getInt("weekNum")).distinct().toList(); + + // 查询节假日 + List holidayList = null; + if(siteInfo.getFilterHolidays()) { + List holidays = dao.query(SysHoliday.class, Cnd.where("year(day)", "=", DateUtil.thisYear())); + holidayList = holidays.stream().map(SysHoliday::getDay).collect(Collectors.toList()); + } + + List result = new ArrayList<>(); + //循环时间段 + for (DateTime day : fullDateList) { + if(Lang.isNotEmpty(holidayList) && holidayList.contains(DateUtil.formatDate(day))) { + continue; + } + //先判断星期 + int week = day.dayOfWeek() - 1; + if(weekNumList.contains(week)) { + result.add(DateUtil.format(day, "yyyy-MM-dd")); + } + } + return Result.success(result); + } + + @At + @ApiOperation("查询可以预约的时间") + @SaCheckPermission("site.apply") + public Result queryTimesByDay(String siteId, String day) { + //获取场地 + SiteInfo siteInfo = infoService.fetch(siteId); + List openHours = siteInfo.getOpenHours(); + Integer maxNum = siteInfo.getMaxNum(); + + //获取星期 + DateTime dateTime = DateUtil.parse(day); + int week = dateTime.dayOfWeek() - 1; + + List result = new ArrayList<>(); + //这个是满足星期的所有时间 + List mapList = openHours.stream().filter(o -> o.getInt("weekNum") == week).toList(); + + for (NutMap nutMap : mapList) { + String startTime = nutMap.getString("startTime"); + String endTime = nutMap.getString("endTime"); + double timeUnit = nutMap.getDouble("timeUnit"); + if(timeUnit == 0) { + result.add(NutMap.NEW().addv("startTime", startTime).addv("endTime", endTime)); + } else { + // 构造起始时间 + DateTime start = DateUtil.parse(startTime, "HH:mm"); + DateTime end = DateUtil.parse(endTime, "HH:mm"); + DateTime current = start; + while (DateUtil.compare(current, end) < 0) { + DateTime next = DateUtil.offsetSecond(current, (int) (timeUnit * 3600)); + // 如果超过结束时间,则使用 endTime + if (DateUtil.compare(next, end) > 0) { + result.add(NutMap.NEW().addv("startTime", DateUtil.format(current, "HH:mm")).addv("endTime", DateUtil.format(end, "HH:mm"))); + break; + } else { + result.add(NutMap.NEW().addv("startTime", DateUtil.format(current, "HH:mm")).addv("endTime", DateUtil.format(next, "HH:mm"))); + } + current = next; + } + } + } + + // 获取当前时间的时分 + String nowTimeStr = DateUtil.format(DateUtil.date(), "HH:mm"); + DateTime nowTime = DateUtil.parseTimeToday(nowTimeStr); + + for (NutMap nutMap : result) { + String startTimeStr = nutMap.getString("startTime"); + String endTimeStr = nutMap.getString("endTime"); + if (day.equals(DateUtil.today())) { + DateTime startTime = DateUtil.parseTimeToday(startTimeStr); + // 计算时间差(单位:分钟) + long diffMinutes = Math.abs(DateUtil.between(nowTime, startTime, DateUnit.MINUTE)); + // 相差不足4小时 + if (nowTime.getTime() > startTime.getTime() || diffMinutes <= 240) { + nutMap.addv("disabled", true); + nutMap.addv("tooltip", "不可预约"); + continue; + } + } + if(!this.isTimeInRange(siteInfo, day, startTimeStr, endTimeStr)) { + nutMap.addv("disabled", true); + nutMap.addv("tooltip", "不可预约"); + continue; + } + + Sql sql = Sqls.create(""" + select + sa.* + from + site_apply sa + left join wf_process_instance ins on ins.businessNo = sa.id + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and(SiteApply::getSiteId, "=", siteId); + cnd.and(SiteApply::getApplyDay, "=", day); + cnd.and(SiteApply::getStartTime, "=", startTimeStr); + cnd.and(SiteApply::getEndTime, "=", endTimeStr); + + List stateList = List.of(ProcessInstanceStateEnum.DOING.getCode(), ProcessInstanceStateEnum.FINISHED.getCode(), ProcessInstanceStateEnum.PENDING.getCode()); + cnd.and(ProcessInstance::getState, "in", stateList); + sql.setCondition(cnd); + List applyList = applyService.listEntity(sql); + + int count = Lang.isNotEmpty(applyList) ? applyList.stream().mapToInt(SiteApply::getJoinCount).sum() : 0; + if(count >= maxNum) { + nutMap.addv("disabled", true); + nutMap.addv("tooltip", "已约满"); + } + long hasReserve = applyList.stream().filter(o -> o.getApplyUserId().equals(SecurityUtil.getUserId())).count(); + if(hasReserve > 0) { + nutMap.addv("disabled", true); + nutMap.addv("tooltip", "已预约"); + } + } + return Result.success(result); + } + + public boolean isTimeInRange(SiteInfo site, String day, String startTime, String endTime) { + startTime = day + " " + startTime + ":00"; + endTime = day + " " + endTime + ":00"; + List timeRanges = site.getNotApplyTimeList(); + for (NutMap range : timeRanges) { + // 将时间范围转换为完整的日期时间 + String startRange = range.getString("date") + " " + range.getString("startTime") + ":00"; + String endRange = range.getString("date") + " " + range.getString("endTime")+ ":00"; + + DateTime start = DateUtil.parseDateTime(startRange); + DateTime end = DateUtil.parseDateTime(endRange); + + if(StrUtil.isNotBlank(startTime)) { + DateTime targetTime = DateUtil.parseDateTime(startTime); + if (targetTime.isAfterOrEquals(start) && targetTime.isBeforeOrEquals(end)) { + return false; + } + } + if(StrUtil.isNotBlank(endTime)) { + DateTime targetTime = DateUtil.parseDateTime(endTime); + if (targetTime.isAfterOrEquals(start) && targetTime.isBeforeOrEquals(end)) { + return false; + } + } + if(StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) { + DateTime startTargetTime = DateUtil.parseDateTime(startTime); + DateTime endTargetTime = DateUtil.parseDateTime(endTime); + if(startTargetTime.isBeforeOrEquals(start) && endTargetTime.isAfterOrEquals(end)) { + return false; + } + } + } + return true; + } } diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteInfoController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteManageController.java similarity index 94% rename from src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteInfoController.java rename to src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteManageController.java index 088ebdc5..f854cddb 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteInfoController.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteManageController.java @@ -16,8 +16,6 @@ import io.swagger.annotations.ApiOperation; 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.dao.util.cri.SqlExpressionGroup; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; @@ -42,7 +40,7 @@ import java.util.stream.Collectors; @Ok("json:full") @Api(tags = "场地管理") @At("/platform/site/manage") -public class SiteInfoController { +public class SiteManageController { @Inject private Dao dao; @@ -111,4 +109,12 @@ public class SiteInfoController { List list = infoService.query(Cnd.where(SiteInfo::getState, "=", true).desc(SiteInfo::getSortNum)); return Result.success(list); } + + @At + @ApiOperation("查询单个场地") + @SaCheckLogin + public Result info(String id) { + SiteInfo info = infoService.fetch(id); + return Result.success(info); + } } diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteMineController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteMineController.java new file mode 100644 index 00000000..5336d334 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteMineController.java @@ -0,0 +1,127 @@ +package com.budwk.app.zhgh.dayofficework.site.controller; + +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.flow.engine.FlowEngine; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.dayofficework.site.model.SiteApply; +import com.budwk.app.zhgh.dayofficework.site.service.SiteApplyService; +import com.budwk.app.zhgh.staffbenefit.condolence.model.Condolence; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.ioc.aop.Aop; +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; + +/** + * @ClassName SiteMineController + * @Author JyuHsin + * @Date 2025/8/27 15:49 + * @Version 1.0 + * @Description TODO + */ +@Slf4j +@IocBean +@Ok("json:full") +@Api(tags = "场地我的预约") +@At("/platform/site/mine") +public class SiteMineController { + + @Inject + private Dao dao; + @Inject + private FlowEngine flowEngine; + @Inject + private SiteApplyService applyService; + + @At("") + @Ok("beetl:/platform/zhgh/dayofficework/site/mine/index.html") + @SaCheckLogin + public void index() {} + + @At + @ApiOperation("分页查询") + @SaCheckPermission("site.mine") + public Result pageData(PageForm pageForm, + @Param("year") Integer year, + @Param("siteType") String siteType, + @Param("siteId") String siteId) { + Sql sql = Sqls.create(""" + SELECT + info.*, + si.name as siteName, + ins.id AS instanceId, + ins.businessNo, + ins.state instanceState, + ins.variable instanceVariable, + ins.processDefineId instanceProcessDefineId, + t.id taskId, + t.taskName AS taskKey, + t.displayName taskName, + t.taskType, + t.performType taskPerformType, + t.taskState, + t.finishTime, + t.taskParentId, + t.variable taskVariable, + IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke, + (select MAX(id) from wf_process_task where processInstanceId = ins.id and taskName = 'startTask') AS startTaskId + FROM + site_apply info + LEFT JOIN site_info si ON info.siteId = si.id + 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 wf_process_task_actor ta ON ta.processTaskId = t.id + $condition + """); + Cnd cnd = Cnd.NEW(); + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + seg.or(SiteApply::getApplyUserName, "like", "%" + pageForm.getSearchKeyword() + "%"); + seg.or(SiteApply::getApplyLoginName, "like", "%" + pageForm.getSearchKeyword() + "%"); + cnd.and(seg); + } + cnd.andEX("year(info.applyDay)", "=", year); + cnd.andEX("si.typeId", "=", siteType); + cnd.andEX("info.siteId", "=", siteId); + cnd.and("info.createdBy", "=", SecurityUtil.getUserId()); + + if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } else { + cnd.desc("info.createdAt"); + } + + sql.setCondition(cnd); + Pagination pagination = applyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + @At + @ApiOperation("删除") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("site.mine") + @SLog(type = "site", tag = "删除场地预约", msg = "删除场地预约") + public Result delete(@Param("id") String id) { + applyService.delete(id); + flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id); + return Result.success(); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteRecordController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteRecordController.java new file mode 100644 index 00000000..3926c5ba --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteRecordController.java @@ -0,0 +1,108 @@ +package com.budwk.app.zhgh.dayofficework.site.controller; + +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.constant.RoleConstant; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.web.commons.auth.utils.AuthUtil; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.dayofficework.site.model.SiteApply; +import com.budwk.app.zhgh.dayofficework.site.service.SiteApplyService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +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.dao.util.cri.SqlExpressionGroup; +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; + +/** + * @ClassName SiteRecordController + * @Author JyuHsin + * @Date 2025/8/27 16:58 + * @Version 1.0 + * @Description TODO + */ +@Slf4j +@IocBean +@Ok("json:full") +@Api(tags = "场地预约查询") +@At("/platform/site/record") +public class SiteRecordController { + + @Inject + private Dao dao; + @Inject + private SiteApplyService applyService; + + @At("") + @Ok("beetl:/platform/zhgh/dayofficework/site/record/index.html") + @SaCheckLogin + public void index() {} + + @At + @ApiOperation("分页查询") + @SaCheckPermission("site.mine") + public Result pageData(PageForm pageForm, + @Param("year") Integer year, + @Param("siteType") String siteType, + @Param("siteId") String siteId) { + Sql sql = Sqls.create(""" + SELECT + info.*, + si.name as siteName, + ins.id AS instanceId, + ins.state instanceState, + ins.processDefineId instanceProcessDefineId, + t.displayName taskName + FROM + site_apply info + LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id + LEFT JOIN ( + SELECT + processInstanceId, + displayName, + createdAt, + ROW_NUMBER() OVER (PARTITION BY processInstanceId ORDER BY createdAt DESC) AS rn + FROM wf_process_task + ) t ON t.processInstanceId = ins.id AND t.rn = 1 + LEFT JOIN site_info si ON info.siteId = si.id + $condition + """); + Cnd cnd = Cnd.NEW(); + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + seg.or(SiteApply::getApplyUserName, "like", "%" + pageForm.getSearchKeyword() + "%"); + seg.or(SiteApply::getApplyLoginName, "like", "%" + pageForm.getSearchKeyword() + "%"); + cnd.and(seg); + } + cnd.andEX("year(info.applyDay)", "=", year); + cnd.andEX("si.typeId", "=", siteType); + cnd.andEX("info.siteId", "=", siteId); + cnd.and("info.createdBy", "=", SecurityUtil.getUserId()); + + if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) { + cnd.and("info.applyUnionId", "=", SecurityUtil.getUnionId()); + } + + if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } else { + cnd.desc("info.createdAt"); + } + sql.setCondition(cnd); + Pagination pageVO = applyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pageVO); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteSchoolUnionAuditController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteSchoolUnionAuditController.java new file mode 100644 index 00000000..2f8acbce --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/site/controller/SiteSchoolUnionAuditController.java @@ -0,0 +1,118 @@ +package com.budwk.app.zhgh.dayofficework.site.controller; + +import cn.dev33.satoken.annotation.SaCheckLogin; +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.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.flow.enums.ProcessTaskStateEnum; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.dayofficework.site.model.SiteApply; +import com.budwk.app.zhgh.dayofficework.site.service.SiteApplyService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +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.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +import java.util.List; + +/** + * @ClassName SiteSchoolUnionAuditController + * @Author JyuHsin + * @Date 2025/8/27 16:42 + * @Version 1.0 + * @Description TODO + */ +@IocBean +@At("/platform/site/schoolUnionAudit") +@Api("场地预约校工会审核") +@Ok("json:full") +public class SiteSchoolUnionAuditController { + + @Inject + private SiteApplyService applyService; + + @At("") + @Ok("beetl:/platform/zhgh/dayofficework/site/schoolUnionAudit/index.html") + @SaCheckLogin + public void index() {} + + @At + @ApiOperation("分页查询") + @SaCheckPermission("site.schoolUnionAudit") + public Result pageData(PageForm pageForm, + @Param("year") Integer year, + @Param("siteType") String siteType, + @Param("siteId") String siteId, + @Param("approval") Boolean approval) { + Sql sql = Sqls.create(""" + SELECT + info.*, + si.name as siteName, + ins.id AS instanceId, + ins.businessNo, + ins.state instanceState, + ins.variable instanceVariable, + ins.processDefineId instanceProcessDefineId, + t.id taskId, + t.taskName AS taskKey, + t.displayName taskName, + t.taskType, + t.performType taskPerformType, + t.taskState, + t.finishTime, + t.taskParentId, + t.variable taskVariable, + IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName, + IF(rt.id IS NOT NULL, 1, 0) AS canRevoke + FROM + wf_process_task t + LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId + LEFT JOIN site_apply info ON info.id = ins.businessNo + LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id + LEFT JOIN site_info si ON info.siteId = si.id + LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10 + LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10 + $condition + """); + Cnd cnd = Cnd.NEW(); + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + seg.or(SiteApply::getApplyUserName, "like", "%" + pageForm.getSearchKeyword() + "%"); + seg.or(SiteApply::getApplyLoginName, "like", "%" + pageForm.getSearchKeyword() + "%"); + cnd.and(seg); + } + cnd.andEX("year(info.applyDay)", "=", year); + cnd.andEX("si.typeId", "=", siteType); + cnd.andEX("info.siteId", "=", siteId); + + cnd.and("t.taskName", "=", "c8c03407-cf26-4e0b-82f1-b2afc9c79996"); + cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); + + if (approval) { + cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode())); + } else { + cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); + } + + if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } else { + cnd.desc("info.createdAt"); + } + cnd.groupBy("t.id"); + sql.setCondition(cnd); + Pagination pageVO = applyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pageVO); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/site/model/SiteApply.java b/src/main/java/com/budwk/app/zhgh/dayofficework/site/model/SiteApply.java index 325ae2e6..643eacac 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/site/model/SiteApply.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/site/model/SiteApply.java @@ -47,11 +47,22 @@ public class SiteApply extends BaseModel { @ColDefine(type = ColType.VARCHAR, width = 30) private String applyLoginName; + @Column + @Comment("预约人单位id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String applyUnitId; + + @Column @Comment("预约人单位") @ColDefine(type = ColType.VARCHAR, width = 60) private String applyUnitName; + @Column + @Comment("预约人工会id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String applyUnionId; + @Column @Comment("预约人工会") @ColDefine(type = ColType.VARCHAR, width = 60) diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/site/service/SiteApplyService.java b/src/main/java/com/budwk/app/zhgh/dayofficework/site/service/SiteApplyService.java index af1c1592..df9a2e39 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/site/service/SiteApplyService.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/site/service/SiteApplyService.java @@ -3,6 +3,8 @@ package com.budwk.app.zhgh.dayofficework.site.service; import com.budwk.app.base.service.BaseService; import com.budwk.app.zhgh.dayofficework.site.model.SiteApply; +import java.util.Map; + /** * @ClassName SiteApplyService * @Author JyuHsin @@ -11,4 +13,6 @@ import com.budwk.app.zhgh.dayofficework.site.model.SiteApply; * @Description TODO */ public interface SiteApplyService extends BaseService { + + Map validateApply(SiteApply apply, String day); } diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/site/service/impl/SiteApplyServiceImpl.java b/src/main/java/com/budwk/app/zhgh/dayofficework/site/service/impl/SiteApplyServiceImpl.java index cb617889..73babb5d 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/site/service/impl/SiteApplyServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/site/service/impl/SiteApplyServiceImpl.java @@ -1,12 +1,22 @@ package com.budwk.app.zhgh.dayofficework.site.service.impl; import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.flow.entity.ProcessInstance; +import com.budwk.app.flow.enums.ProcessInstanceStateEnum; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.dayofficework.site.model.SiteApply; +import com.budwk.app.zhgh.dayofficework.site.model.SiteInfo; import com.budwk.app.zhgh.dayofficework.site.service.SiteApplyService; 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.IocBean; +import java.util.List; +import java.util.Map; + /** * @ClassName SiteApplyServiceImpl * @Author JyuHsin @@ -21,4 +31,36 @@ public class SiteApplyServiceImpl extends BaseServiceImpl implements public SiteApplyServiceImpl(Dao dao) { super(dao); } + + @Override + public Map validateApply(SiteApply apply, String day) { + SiteInfo siteInfo = dao().fetch(SiteInfo.class, apply.getSiteId()); + Sql sql = Sqls.create(""" + select + sa.* + from + site_apply sa + left join wf_process_instance ins on ins.businessNo = sa.id + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and(SiteApply::getSiteId, "=", apply.getSiteId()); + cnd.and(SiteApply::getApplyDay, "=", day); + cnd.and(SiteApply::getStartTime, "=", apply.getStartTime()); + cnd.and(SiteApply::getEndTime, "=", apply.getEndTime()); + + List stateList = List.of(ProcessInstanceStateEnum.DOING.getCode(), ProcessInstanceStateEnum.FINISHED.getCode(), ProcessInstanceStateEnum.PENDING.getCode()); + cnd.and(ProcessInstance::getState, "in", stateList); + sql.setCondition(cnd); + List applyList = listEntity(sql); + long hasReserve = applyList.stream().filter(o -> o.getApplyUserId().equals(SecurityUtil.getUserId())).count(); + if(hasReserve > 0) { + return Map.of(false, "您已预约该时间段"); + } + int count = applyList.stream().mapToInt(SiteApply::getJoinCount).sum(); + if((count + apply.getJoinCount()) > siteInfo.getMaxNum()) { + return Map.of(false, "预约人数已满"); + } + return Map.of(true, ""); + } } diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceBranchUnionApprovalController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceBranchUnionApprovalController.java index cf28a781..feec2d3a 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceBranchUnionApprovalController.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceBranchUnionApprovalController.java @@ -59,7 +59,7 @@ public class CondolenceBranchUnionApprovalController { ins.id AS instanceId, ins.businessNo, ins.state instanceState, - ins.variable instanceVariale, + ins.variable instanceVariable, ins.processDefineId instanceProcessDefineId, t.id taskId, t.taskName AS taskKey, diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceMineController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceMineController.java index a1bb6976..c86f3477 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceMineController.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceMineController.java @@ -8,6 +8,7 @@ import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.PageUtil; import com.budwk.app.flow.engine.FlowEngine; import com.budwk.app.sys.views.View_user; import com.budwk.app.web.commons.auth.utils.AuthUtil; @@ -98,7 +99,13 @@ public class CondolenceMineController { cnd.andEX("year(info.createTime)", "=", year); cnd.andEX("info.type", "=", type); cnd.and("info.createdBy", "=", SecurityUtil.getUserId()); - cnd.desc("info.createTime"); + + if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } else { + cnd.desc("info.createTime"); + } + sql.setCondition(cnd); Pagination pagination = condolenceService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); return Result.success(pagination); diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceReadController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceReadController.java index ff3717d7..8c75efe2 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceReadController.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceReadController.java @@ -77,6 +77,7 @@ public class CondolenceReadController { ins.id AS instanceId, type.name as typeName, ins.state instanceState, + ins.processDefineId instanceProcessDefineId, t.displayName taskName FROM condolence info diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceSchoolUnionApprovalController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceSchoolUnionApprovalController.java index 46a301d0..e5710026 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceSchoolUnionApprovalController.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/condolence/controller/CondolenceSchoolUnionApprovalController.java @@ -61,7 +61,7 @@ public class CondolenceSchoolUnionApprovalController { ins.id AS instanceId, ins.businessNo, ins.state instanceState, - ins.variable instanceVariale, + ins.variable instanceVariable, ins.processDefineId instanceProcessDefineId, t.id taskId, t.taskName AS taskKey, diff --git a/src/main/resources/views/platform/zhgh/club/evaluate/apply/index.html b/src/main/resources/views/platform/zhgh/club/evaluate/apply/index.html index 273544c0..13e5a19d 100644 --- a/src/main/resources/views/platform/zhgh/club/evaluate/apply/index.html +++ b/src/main/resources/views/platform/zhgh/club/evaluate/apply/index.html @@ -156,22 +156,25 @@ layout("/layouts/platform.html"){ } } }, - onFinishTask() { - this.$confirm("您确定要提交吗?", "提示", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(() => { - this.$axios.post('/platform/club/evaluate/apply/submitAgain', { - data: JSON.stringify(this.formData), - taskId: GetQueryString("taskId") - }).then(res => { - if (res.code === 0) { - this.$message.success(res.msg) - window.location.href = '/platform/club/evaluate/mine' - } + async onFinishTask() { + const valid = await this.$refs["form"].validate() + if (valid) { + this.$confirm("您确定要提交吗?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }).then(() => { + this.$axios.post('/platform/club/evaluate/apply/submitAgain', { + data: JSON.stringify(this.formData), + taskId: GetQueryString("taskId") + }).then(res => { + if (res.code === 0) { + this.$message.success(res.msg) + window.location.href = '/platform/club/evaluate/mine' + } + }) }) - }) + } }, async initData() { this.$set(this.formData, "applyStartYear", new Date().getFullYear() - 1 + "") diff --git a/src/main/resources/views/platform/zhgh/club/infoManage/change/index.html b/src/main/resources/views/platform/zhgh/club/infoManage/change/index.html index 0b910211..efa2c8c0 100644 --- a/src/main/resources/views/platform/zhgh/club/infoManage/change/index.html +++ b/src/main/resources/views/platform/zhgh/club/infoManage/change/index.html @@ -208,21 +208,25 @@ layout("/layouts/platform.html"){ }) }, onFinishTask() { - this.$confirm("您确定要提交吗?", "提示", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(() => { - this.$axios.post('/platform/club/infoManage/change/submitAgain', { - data: JSON.stringify(this.formData), - taskId: this.taskId - }).then(res => { - if (res.code === 0) { - this.pageData() - this.$message.success(res.msg) - this.$refs.guava.index() - } - }) + this.$refs.formRef.validate((valid) => { + if (valid) { + this.$confirm("您确定要提交吗?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }).then(() => { + this.$axios.post('/platform/club/infoManage/change/submitAgain', { + data: JSON.stringify(this.formData), + taskId: this.taskId + }).then(res => { + if (res.code === 0) { + this.pageData() + this.$message.success(res.msg) + this.$refs.guava.index() + } + }) + }) + } }) }, onView(row) { diff --git a/src/main/resources/views/platform/zhgh/club/infoManage/refreshReport/index.html b/src/main/resources/views/platform/zhgh/club/infoManage/refreshReport/index.html index 5dfde838..84b40242 100644 --- a/src/main/resources/views/platform/zhgh/club/infoManage/refreshReport/index.html +++ b/src/main/resources/views/platform/zhgh/club/infoManage/refreshReport/index.html @@ -180,21 +180,25 @@ layout("/layouts/platform.html"){ }) }, onFinishTask() { - this.$confirm("您确定要提交吗?", "提示", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(() => { - this.$axios.post('/platform/club/infoManage/refreshReport/submitAgain', { - data: JSON.stringify(this.formData), - taskId: this.taskId - }).then(res => { - if (res.code === 0) { - this.pageData() - this.$message.success(res.msg) - this.$refs.guava.index() + this.$refs.formRef.validate((valid) => { + if (valid) { + this.$confirm("您确定要提交吗?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }).then(() => { + this.$axios.post('/platform/club/infoManage/refreshReport/submitAgain', { + data: JSON.stringify(this.formData), + taskId: this.taskId + }).then(res => { + if (res.code === 0) { + this.pageData() + this.$message.success(res.msg) + this.$refs.guava.index() + } + }) + }) } - }) }) }, onView(row) { diff --git a/src/main/resources/views/platform/zhgh/club/infoManage/ruleUpdate/index.html b/src/main/resources/views/platform/zhgh/club/infoManage/ruleUpdate/index.html index 334039d1..1e03c659 100644 --- a/src/main/resources/views/platform/zhgh/club/infoManage/ruleUpdate/index.html +++ b/src/main/resources/views/platform/zhgh/club/infoManage/ruleUpdate/index.html @@ -180,21 +180,25 @@ layout("/layouts/platform.html"){ }) }, onFinishTask() { - this.$confirm("您确定要提交吗?", "提示", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(() => { - this.$axios.post('/platform/club/infoManage/ruleUpdate/submitAgain', { - data: JSON.stringify(this.formData), - taskId: this.taskId - }).then(res => { - if (res.code === 0) { - this.pageData() - this.$message.success(res.msg) - this.$refs.guava.index() + this.$refs.formRef.validate((valid) => { + if (valid) { + this.$confirm("您确定要提交吗?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }).then(() => { + this.$axios.post('/platform/club/infoManage/ruleUpdate/submitAgain', { + data: JSON.stringify(this.formData), + taskId: this.taskId + }).then(res => { + if (res.code === 0) { + this.pageData() + this.$message.success(res.msg) + this.$refs.guava.index() + } + }) + }) } - }) }) }, onView(row) { diff --git a/src/main/resources/views/platform/zhgh/club/join/apply/index.html b/src/main/resources/views/platform/zhgh/club/join/apply/index.html index 79d09cfe..0180825f 100644 --- a/src/main/resources/views/platform/zhgh/club/join/apply/index.html +++ b/src/main/resources/views/platform/zhgh/club/join/apply/index.html @@ -189,24 +189,22 @@ layout("/layouts/platform.html"){ }) }, onFinishTask() { - this.$confirm("您确定要提交吗?", "提示", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(() => { - if (!this.isAgree) { - this.$message.warning("请先阅读并同意协议") - return - } - this.$axios.post('/platform/club/join/apply/submit/submitAgain', { - data: JSON.stringify(this.formData), - taskId: GetQueryString("taskId") - }).then(res => { - if (res.code === 0) { - this.$message.success(res.msg) - location.href = '/platform/club/join/mine' + this.$refs.formRef.validate((valid) => { + if (valid) { + if (!this.isAgree) { + this.$message.warning("请先阅读并同意协议") + return } - }) + this.$axios.post('/platform/club/join/apply/submit/submitAgain', { + data: JSON.stringify(this.formData), + taskId: GetQueryString("taskId") + }).then(res => { + if (res.code === 0) { + this.$message.success(res.msg) + location.href = '/platform/club/join/mine' + } + }) + } }) }, checkApplyClub(val) { diff --git a/src/main/resources/views/platform/zhgh/dayofficework/site/apply/apply.js b/src/main/resources/views/platform/zhgh/dayofficework/site/apply/apply.js index fe99da71..636d7bbf 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/site/apply/apply.js +++ b/src/main/resources/views/platform/zhgh/dayofficework/site/apply/apply.js @@ -10,7 +10,7 @@ const apply = {