From a1547b133e5b9eca2f49b3e31daa6c4a6097febe Mon Sep 17 00:00:00 2001 From: zhangrui Date: Thu, 25 Jun 2026 20:54:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=97=E5=A4=A7=E4=B8=89=E5=8D=81=E5=B9=B4?= =?UTF-8?q?=E6=95=99=E8=81=8C=E5=B7=A5=E7=96=97=E4=BC=91=E5=85=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/sys/controller/SysHomeController.java | 26 ++++- ...achTourBranchUserAssignmentController.java | 14 +-- .../ThirtyTeachTourLedgerController.java | 2 + ...achTourSchoolUserAssignmentController.java | 29 +++-- .../ThirtyTeachTourSettingController.java | 2 +- .../ThirtyTeachTourSignupController.java | 5 + .../ThirtyTeachTourSettingUnionQuota.java | 5 + .../ThirtyTeachTourSettingService.java | 3 +- .../ThirtyTeachTourUserAssignmentService.java | 27 +++-- .../ThirtyTeachTourSettingServiceImpl.java | 51 ++++++++- ...rtyTeachTourUserAssignmentServiceImpl.java | 103 +++++++++++++++--- .../images/thirtyTeachTour/疗休养logo.png | Bin 1384440 -> 1597555 bytes .../views/layouts/v4/home/index.html | 9 +- .../branchUserAssignment/index.html | 45 +++++++- .../schoolUserAssignment/index.html | 48 +++++++- .../ThirtyTeachTour/setting/index.html | 21 ++-- 16 files changed, 328 insertions(+), 62 deletions(-) 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 def3b05b..a4579827 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysHomeController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysHomeController.java @@ -16,6 +16,7 @@ import com.budwk.app.web.commons.base.Globals; import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope; +import com.budwk.app.zhgh.dayofficework.thirtyTeachTour.models.ThirtyTeachTourSetting; import com.budwk.app.zhgh.dayofficework.tour.models.TourSetting; import io.swagger.annotations.ApiOperation; import org.jsoup.Jsoup; @@ -310,7 +311,30 @@ public class SysHomeController { .addv("year", setting.getYear()) .addv("title", setting.getYear() + "暑期疗休养") .addv("imageUrl", imageUrl) - .addv("href", "/platform/tour/signup")); + .addv("href", "/platform/tour/signup") + .addv("vx", 0.028) + .addv("vy", 0.022)); + } + Cnd thirtyTeachCnd = Cnd.where(ThirtyTeachTourSetting::getDelFlag, "=", false) + .and(ThirtyTeachTourSetting::getEnabled, "=", true) + .and(ThirtyTeachTourSetting::getYear, "=", currentYear) + .and(ThirtyTeachTourSetting::getHomeSignupEntryEnabled, "=", true); + thirtyTeachCnd.asc(ThirtyTeachTourSetting::getSortNo); + thirtyTeachCnd.desc(ThirtyTeachTourSetting::getUpdatedAt); + thirtyTeachCnd.desc(ThirtyTeachTourSetting::getCreatedAt); + List thirtyTeachSettings = dao.query(ThirtyTeachTourSetting.class, thirtyTeachCnd); + for (ThirtyTeachTourSetting setting : thirtyTeachSettings) { + // 30年教龄疗休养与暑期疗休养共用首页默认图,但跳转地址和浮动方向保持独立。 + String imageUrl = StrUtil.blankToDefault(setting.getHomeSignupEntryImage(), Globals.AppDomain + "/assets/platform/images/thirtyTeachTour/疗休养logo.png"); + rows.add(NutMap.NEW() + .addv("id", "thirtyTeachTour-" + setting.getId()) + .addv("year", setting.getYear()) + .addv("title", setting.getYear() + "30年教龄疗休养") + .addv("imageUrl", imageUrl) + .addv("href", "/platform/thirtyTeachTour/signup") + .addv("startCorner", "rightTop") + .addv("vx", -0.026) + .addv("vy", 0.024)); } return Result.success(rows); } diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourBranchUserAssignmentController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourBranchUserAssignmentController.java index 4e9c5fa7..cd2fd766 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourBranchUserAssignmentController.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourBranchUserAssignmentController.java @@ -50,10 +50,10 @@ public class ThirtyTeachTourBranchUserAssignmentController { */ @At @SaCheckPermission("thirtyTeachTour.branchUserAssignment") - public Result pageData(PageForm pageForm, Integer year, String settingId, String matterId, - String personType, String keyword) { + public Result pageData(PageForm pageForm, Integer year, String settingId, String matterId, String periodId, + String personType, String keyword) { return Result.success(tourUserAssignmentService.branchAssignmentPage(pageForm, year, settingId, matterId, - personType, keyword)); + periodId, personType, keyword)); } /** @@ -62,10 +62,10 @@ public class ThirtyTeachTourBranchUserAssignmentController { @At @SaCheckPermission("thirtyTeachTour.branchUserAssignment") @Ok("void") - public void exportData(PageForm pageForm, Integer year, String settingId, String matterId, - String personType, String keyword, HttpServletResponse response) { + public void exportData(PageForm pageForm, Integer year, String settingId, String matterId, String periodId, + String personType, String keyword, HttpServletResponse response) { List rows = tourUserAssignmentService.branchAssignmentExportRows(pageForm, year, settingId, matterId, - personType, keyword); + periodId, personType, keyword); ExportParams exportParams = new ExportParams(); exportParams.setSheetName("分工会人员分配"); exportParams.setType(ExcelType.XSSF); @@ -113,7 +113,7 @@ public class ThirtyTeachTourBranchUserAssignmentController { * 查询当前配置下已启用的出行时间段,供人员分配弹窗按钮组使用。 */ @At - @SaCheckPermission("thirtyTeachTour.branchUserAssignment.assign") + @SaCheckPermission("thirtyTeachTour.branchUserAssignment") public Result travelPeriodOptions(String settingId) { return Result.success(tourUserAssignmentService.listBranchEnabledTravelPeriods(settingId)); } diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourLedgerController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourLedgerController.java index e8d86e1e..37f508e2 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourLedgerController.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourLedgerController.java @@ -367,6 +367,7 @@ public class ThirtyTeachTourLedgerController { entities.add(new ExcelExportEntity("携带家属", "familyCountText", 14)); entities.add(new ExcelExportEntity("是否参加", "joinedText", 14)); entities.add(new ExcelExportEntity("报销超出费用", "overCostReimbursedText", 18)); + entities.add(new ExcelExportEntity("图片材料", "photoFiles", 36)); List rows = queryLedgerExportRows(startYear, endYear, keyword, unionId, lineId, travelPeriod, lineType, directFamilyOnly, overCostOnly); @@ -406,6 +407,7 @@ public class ThirtyTeachTourLedgerController { END AS travelPeriod, t.lineType, t.signupTime, + t.photoFiles, IFNULL(f.familyCount, 0) AS familyCount, t.joined, t.overCostReimbursed diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourSchoolUserAssignmentController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourSchoolUserAssignmentController.java index f1e8dfc3..8db4f084 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourSchoolUserAssignmentController.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourSchoolUserAssignmentController.java @@ -51,10 +51,10 @@ public class ThirtyTeachTourSchoolUserAssignmentController { */ @At @SaCheckPermission("thirtyTeachTour.schoolUserAssignment") - public Result pageData(PageForm pageForm, Integer year, String settingId, String matterId, String unionId, - String personType, String keyword, String assignSource, Boolean cancelled) { + public Result pageData(PageForm pageForm, Integer year, String settingId, String matterId, String periodId, + String unionId, String personType, String keyword, String assignSource, Boolean cancelled) { return Result.success(tourUserAssignmentService.schoolAssignmentPage(pageForm, year, settingId, matterId, - unionId, personType, keyword, assignSource, cancelled)); + periodId, unionId, personType, keyword, assignSource, cancelled)); } /** @@ -63,10 +63,11 @@ public class ThirtyTeachTourSchoolUserAssignmentController { @At @SaCheckPermission("thirtyTeachTour.schoolUserAssignment") @Ok("void") - public void exportData(PageForm pageForm, Integer year, String settingId, String matterId, String unionId, - String personType, String keyword, String assignSource, Boolean cancelled, HttpServletResponse response) { + public void exportData(PageForm pageForm, Integer year, String settingId, String matterId, String periodId, + String unionId, String personType, String keyword, String assignSource, Boolean cancelled, + HttpServletResponse response) { List rows = tourUserAssignmentService.schoolAssignmentExportRows(pageForm, year, settingId, matterId, - unionId, personType, keyword, assignSource, cancelled); + periodId, unionId, personType, keyword, assignSource, cancelled); ExportParams exportParams = new ExportParams(); exportParams.setSheetName("校工会人员分配"); exportParams.setType(ExcelType.XSSF); @@ -82,14 +83,15 @@ public class ThirtyTeachTourSchoolUserAssignmentController { @Aop(TransAop.READ_COMMITTED) @SaCheckPermission("thirtyTeachTour.schoolUserAssignment") @SLog(type = "tour", tag = "疗休养校工会人员分配", msg = "发送校工会人员分配提醒") - public Result sendReminder(PageForm pageForm, Integer year, String settingId, String matterId, String unionId, - String personType, String keyword, String assignSource, Boolean cancelled, String content) { + public Result sendReminder(PageForm pageForm, Integer year, String settingId, String matterId, String periodId, + String unionId, String personType, String keyword, String assignSource, + Boolean cancelled, String content) { if (StrUtil.isBlank(content)) { return Result.error("请输入提醒内容"); } try { return Result.success(tourUserAssignmentService.sendSchoolAssignmentReminder(pageForm, year, settingId, - matterId, unionId, personType, keyword, assignSource, cancelled, content)); + matterId, periodId, unionId, personType, keyword, assignSource, cancelled, content)); } catch (IllegalArgumentException e) { return Result.error(e.getMessage()); } @@ -124,6 +126,15 @@ public class ThirtyTeachTourSchoolUserAssignmentController { return Result.success(tourUserAssignmentService.listMatterOptions(settingId)); } + /** + * 查询当前配置下已启用的出行时间段,供校工会人员分配列表筛选使用。 + */ + @At + @SaCheckPermission("thirtyTeachTour.schoolUserAssignment") + public Result travelPeriodOptions(String settingId) { + return Result.success(tourUserAssignmentService.listBranchEnabledTravelPeriods(settingId)); + } + /** * 查询分工会选项,供筛选和候选人员过滤使用。 */ diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourSettingController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourSettingController.java index 91ef1d74..2bc987ea 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourSettingController.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourSettingController.java @@ -155,7 +155,7 @@ public class ThirtyTeachTourSettingController { if (StrUtil.isNotBlank(quotaLimitMessage)) { return Result.error(quotaLimitMessage); } - String periodQuotaLimitMessage = tourSettingService.checkPeriodQuotaLimit(periodQuotas, unionQuotas); + String periodQuotaLimitMessage = tourSettingService.checkPeriodQuotaLimit(tourSetting.getId(), periodQuotas, unionQuotas); if (StrUtil.isNotBlank(periodQuotaLimitMessage)) { return Result.error(periodQuotaLimitMessage); } diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourSignupController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourSignupController.java index 9ada4e3f..acf2caf3 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourSignupController.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/controller/ThirtyTeachTourSignupController.java @@ -1129,6 +1129,11 @@ public class ThirtyTeachTourSignupController { if (scopeResult != null) { return scopeResult; } + String periodPermissionMessage = tourUserAssignmentService.checkSignupAssignmentPeriodPermission( + setting.getId(), matter.getTravelStartTime(), matter.getTravelEndTime()); + if (StrUtil.isNotBlank(periodPermissionMessage)) { + return Result.error(periodPermissionMessage); + } CycleAllowedTimes cycleAllowedTimes = calculateCycleAllowedTimes(matter, setting, oldLedger); if (!cycleAllowedTimes.canApply()) { return Result.error(buildCycleAllowedTimesNotice(cycleAllowedTimes)); diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/models/ThirtyTeachTourSettingUnionQuota.java b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/models/ThirtyTeachTourSettingUnionQuota.java index 7e855195..34d94c8f 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/models/ThirtyTeachTourSettingUnionQuota.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/models/ThirtyTeachTourSettingUnionQuota.java @@ -63,4 +63,9 @@ public class ThirtyTeachTourSettingUnionQuota extends BaseModel implements Seria * 页面展示用实时会员数,不落库。 */ private Integer memberCount; + + /** + * Page-only count of formal users already assigned by school union for this branch union. + */ + private Integer schoolFormalAssignedCount; } diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/service/ThirtyTeachTourSettingService.java b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/service/ThirtyTeachTourSettingService.java index 7123f07d..2b218159 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/service/ThirtyTeachTourSettingService.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/service/ThirtyTeachTourSettingService.java @@ -76,11 +76,12 @@ public interface ThirtyTeachTourSettingService extends BaseService schoolAssignmentPage(PageForm pageForm, Integer year, String settingId, String matterId, - String unionId, String personType, String keyword, String assignSource, - Boolean cancelled); + String periodId, String unionId, String personType, String keyword, + String assignSource, Boolean cancelled); /** * 按校工会人员分配页面当前筛选条件查询导出数据,不做分页截断。 @@ -43,8 +43,8 @@ public interface ThirtyTeachTourUserAssignmentService extends BaseService schoolAssignmentExportRows(PageForm pageForm, Integer year, String settingId, String matterId, - String unionId, String personType, String keyword, String assignSource, - Boolean cancelled); + String periodId, String unionId, String personType, String keyword, + String assignSource, Boolean cancelled); /** * 按校工会人员分配页面当前筛选条件发送报名提醒。 @@ -62,8 +62,8 @@ public interface ThirtyTeachTourUserAssignmentService extends BaseService branchAssignmentPage(PageForm pageForm, Integer year, String settingId, String matterId, - String personType, String keyword); + String periodId, String personType, String keyword); /** * 按分工会人员分配页面当前筛选条件查询导出数据,不做分页截断。 @@ -106,7 +106,7 @@ public interface ThirtyTeachTourUserAssignmentService extends BaseService branchAssignmentExportRows(PageForm pageForm, Integer year, String settingId, String matterId, - String personType, String keyword); + String periodId, String personType, String keyword); /** * 分页查询当前登录人所在分工会可分配候选人,候选人来自疗休养配置的可参加人员范围。 @@ -263,6 +263,17 @@ public interface ThirtyTeachTourUserAssignmentService extends BaseService item != null && StrUtil.isNotBlank(item.getUnionId())) .collect(Collectors.groupingBy(ThirtyTeachTourSettingPeriodQuota::getUnionId, Collectors.summingInt(item -> defaultInt(item.getFormalQuota())))); + Map schoolAssignedCountMap = countSchoolFormalAssignedByUnion(settingId); for (Map.Entry entry : periodQuotaTotalMap.entrySet()) { ThirtyTeachTourSettingUnionQuota unionQuota = unionQuotaMap.get(entry.getKey()); int formalQuota = unionQuota == null ? 0 : defaultInt(unionQuota.getFormalQuota()); - if (entry.getValue() > formalQuota) { + int schoolAssignedCount = schoolAssignedCountMap.getOrDefault(entry.getKey(), 0); + // Time-period quota can only use branch-union quota that has not been occupied by school-union assignment. + int availableFormalQuota = Math.max(formalQuota - schoolAssignedCount, 0); + if (entry.getValue() > availableFormalQuota) { String unionName = unionQuota == null ? "" : unionQuota.getUnionName(); return "分工会【" + StrUtil.blankToDefault(unionName, entry.getKey()) + "】时间段名额合计 " - + entry.getValue() + ",不能大于当前分工会正式名额 " + formalQuota; + + entry.getValue() + ",不能大于扣除校工会已分配后的可分配正式名额 " + availableFormalQuota; } } return ""; } + /** + * Count active formal users assigned by school union, grouped by branch union, for quota validation. + */ + private Map countSchoolFormalAssignedByUnion(String settingId) { + if (StrUtil.isBlank(settingId)) { + return Collections.emptyMap(); + } + Sql sql = Sqls.create(""" + SELECT unionId, COUNT(1) AS assignedCount + FROM thirty_teach_tour_user_assignment + WHERE settingId = @settingId + AND delFlag = 0 + AND assignSource = @assignSource + AND personType = @personType + AND (cancelled IS NULL OR cancelled = 0) + GROUP BY unionId + """); + sql.setParam("settingId", settingId); + sql.setParam("assignSource", ThirtyTeachTourUserAssignment.ASSIGN_SOURCE_SCHOOL_UNION); + sql.setParam("personType", ThirtyTeachTourUserAssignment.PERSON_TYPE_FORMAL); + return listMap(sql).stream() + .filter(row -> StrUtil.isNotBlank(row.getString("unionId"))) + .collect(Collectors.toMap(row -> row.getString("unionId"), row -> defaultInt(row.getInt("assignedCount")), (a, b) -> a)); + } + @Override public void clearUnionQuotas(String settingId) { if (StrUtil.isNotBlank(settingId)) { diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/service/impl/ThirtyTeachTourUserAssignmentServiceImpl.java b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/service/impl/ThirtyTeachTourUserAssignmentServiceImpl.java index a66c1528..4038b41c 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/service/impl/ThirtyTeachTourUserAssignmentServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/thirtyTeachTour/service/impl/ThirtyTeachTourUserAssignmentServiceImpl.java @@ -51,8 +51,8 @@ public class ThirtyTeachTourUserAssignmentServiceImpl extends BaseServiceImpl schoolAssignmentPage(PageForm pageForm, Integer year, String settingId, String matterId, - String unionId, String personType, String keyword, String assignSource, - Boolean cancelled) { + String periodId, String unionId, String personType, String keyword, + String assignSource, Boolean cancelled) { Sql sql = Sqls.create(""" SELECT a.*, @@ -75,6 +75,8 @@ public class ThirtyTeachTourUserAssignmentServiceImpl extends BaseServiceImpl rows = assignmentExportRows(pageForm, year, settingId, matterId, unionId, personType, keyword, assignSource, cancelled); + List rows = assignmentExportRows(pageForm, year, settingId, matterId, unionId, personType, keyword, + assignSource, cancelled, periodId); List receiverIds = rows.stream() .map(row -> row.getString("userId")) .filter(StrUtil::isNotBlank) @@ -144,24 +148,24 @@ public class ThirtyTeachTourUserAssignmentServiceImpl extends BaseServiceImpl branchAssignmentPage(PageForm pageForm, Integer year, String settingId, String matterId, - String personType, String keyword) { + String periodId, String personType, String keyword) { String unionId = SecurityUtil.getUnionId(); if (StrUtil.isBlank(unionId)) { return emptyPagination(pageForm); } - return assignmentPage(pageForm, year, settingId, matterId, unionId, personType, keyword, + return assignmentPage(pageForm, year, settingId, matterId, periodId, unionId, personType, keyword, ThirtyTeachTourUserAssignment.ASSIGN_SOURCE_BRANCH_UNION); } @Override public List branchAssignmentExportRows(PageForm pageForm, Integer year, String settingId, String matterId, - String personType, String keyword) { + String periodId, String personType, String keyword) { String unionId = SecurityUtil.getUnionId(); if (StrUtil.isBlank(unionId)) { return Collections.emptyList(); } List rows = assignmentExportRows(pageForm, year, settingId, matterId, unionId, personType, keyword, - ThirtyTeachTourUserAssignment.ASSIGN_SOURCE_BRANCH_UNION, null); + ThirtyTeachTourUserAssignment.ASSIGN_SOURCE_BRANCH_UNION, null, periodId); fillAssignmentExportText(rows); return rows; } @@ -178,9 +182,15 @@ public class ThirtyTeachTourUserAssignmentServiceImpl extends BaseServiceImpl assignmentExportRows(PageForm pageForm, Integer year, String settingId, String matterId, + String unionId, String personType, String keyword, String assignSource, + Boolean cancelled) { + return assignmentExportRows(pageForm, year, settingId, matterId, unionId, personType, keyword, assignSource, cancelled, null); + } + private List assignmentExportRows(PageForm pageForm, Integer year, String settingId, String matterId, String unionId, String personType, String keyword, String assignSource, - Boolean cancelled) { + Boolean cancelled, String periodId) { Sql sql = Sqls.create(""" SELECT a.*, @@ -204,6 +214,7 @@ public class ThirtyTeachTourUserAssignmentServiceImpl extends BaseServiceImpl { const offset = index * 28 + const backendVx = Number(item.vx) + const backendVy = Number(item.vy) + const startRight = item.startCorner === "rightTop" return Object.assign({}, item, { width: width, height: height, - x: Math.min(bounds.minX + offset, bounds.maxX), + x: startRight ? Math.max(bounds.maxX - offset, bounds.minX) : Math.min(bounds.minX + offset, bounds.maxX), y: Math.min(bounds.minY + offset, bounds.maxY), - vx: (index % 2 === 0 ? 1 : -1) * (0.028 + index * 0.004), - vy: (index % 3 === 0 ? 1 : -1) * (0.022 + index * 0.003) + vx: Number.isFinite(backendVx) && backendVx !== 0 ? backendVx : (index % 2 === 0 ? 1 : -1) * (0.028 + index * 0.004), + vy: Number.isFinite(backendVy) && backendVy !== 0 ? backendVy : (index % 3 === 0 ? 1 : -1) * (0.022 + index * 0.003) }) }) if (this.tourHomeFloatEntries.length > 0) { diff --git a/src/main/resources/views/platform/zhgh/dayofficework/ThirtyTeachTour/branchUserAssignment/index.html b/src/main/resources/views/platform/zhgh/dayofficework/ThirtyTeachTour/branchUserAssignment/index.html index 358622ad..4b8a3b80 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/ThirtyTeachTour/branchUserAssignment/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/ThirtyTeachTour/branchUserAssignment/index.html @@ -26,6 +26,11 @@ layout("/layouts/platform.html"){ + + + + + @@ -69,7 +74,7 @@ layout("/layouts/platform.html"){ - +