From 0c0811f0f9675f3b613a334a3489352d316364dd Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Fri, 19 Sep 2025 08:34:51 +0800 Subject: [PATCH 1/2] commit --- .../controller/ClientGroupController.java | 18 ++- .../controller/ActScoreEnterController.java | 10 +- .../controller/ActScoreEntryController.java | 18 ++- .../activity/models/ActItemGroupScore.java | 5 + .../module/activity/models/ActRankScore.java | 1 + .../app/module/activity/models/ActUser.java | 5 + .../module/activity/models/ActivityItem.java | 1 + .../main/resources/templates/scoreEnter.xlsx | Bin 11163 -> 11215 bytes .../platform/activity/scoreEnter/index.html | 21 ++- .../platform/activity/scoreEntry/index.html | 15 +- .../activity/registration-form/index.vue | 150 ++++++++++-------- .../src/pages/activity/team-form/index.vue | 2 +- frontend/src/pages/activity/team/index.vue | 96 +++++++---- 13 files changed, 225 insertions(+), 117 deletions(-) diff --git a/backend/src/main/java/com/budwk/app/client/module/activity/controller/ClientGroupController.java b/backend/src/main/java/com/budwk/app/client/module/activity/controller/ClientGroupController.java index 34c773d..51c163c 100644 --- a/backend/src/main/java/com/budwk/app/client/module/activity/controller/ClientGroupController.java +++ b/backend/src/main/java/com/budwk/app/client/module/activity/controller/ClientGroupController.java @@ -118,7 +118,12 @@ public class ClientGroupController { @At("/apply-leader/?") @AdaptBy(type = JsonAdaptor.class) @SaCheckLogin(type = StpClientUtil.TYPE) - public Result applyLeader(Long groupId) { + public synchronized Result applyLeader(Long groupId) { + int count = clientActivityService.dao().count(ActGroupUser.class, Cnd.where(ActGroupUser::getGroupId, "=", groupId) + .and(ActGroupUser::getIsLeader, "=", 1)); + if (count > 0){ + return Result.error("该团队已有队长!"); + } clientActivityService.dao().update(ActGroupUser.class, Chain.make("isLeader", true), Cnd.where(ActGroupUser::getGroupId, "=", groupId) @@ -126,6 +131,17 @@ public class ClientGroupController { return Result.success(); } + @At("/cancel-leader/?") + @AdaptBy(type = JsonAdaptor.class) + @SaCheckLogin(type = StpClientUtil.TYPE) + public synchronized Result cancelLeader(Long groupId) { + clientActivityService.dao().update(ActGroupUser.class, + Chain.make("isLeader", false), + Cnd.where(ActGroupUser::getGroupId, "=", groupId) + .and(ActGroupUser::getUserId, "=", StpClientUtil.STP.getLoginIdAsLong())); + return Result.success(); + } + @At("/list-team/?") @SaCheckLogin(type = StpClientUtil.TYPE) public Result listTeam(Long activityId) { diff --git a/backend/src/main/java/com/budwk/app/module/activity/controller/ActScoreEnterController.java b/backend/src/main/java/com/budwk/app/module/activity/controller/ActScoreEnterController.java index 123be7d..72ceb46 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/controller/ActScoreEnterController.java +++ b/backend/src/main/java/com/budwk/app/module/activity/controller/ActScoreEnterController.java @@ -167,6 +167,7 @@ public class ActScoreEnterController { List listMap = activityService.listMap(sql); List itemList = activityService.dao().query(ActivityItem.class, Cnd.where(ActivityItem::getActivityId, "=", activityId).asc(ActivityItem::getSort)); itemList.forEach(item -> { + item.setCjName("成绩"); item.setScoreName("得分"); item.setRankingName("名次"); }); @@ -181,10 +182,12 @@ public class ActScoreEnterController { Map itemListMap = new HashMap<>(); itemList.forEach(item -> { itemListMap.put("name",item.getName()); - itemListMap.put("scoreName","成绩"); + itemListMap.put("cjName","成绩"); itemListMap.put("rankingName","名次"); - itemListMap.put("scoreVal","t." + item.getName() + ".score"); + itemListMap.put("scoreName","积分"); + itemListMap.put("cjVal","t." + item.getName() + ".cj"); itemListMap.put("rankingVal","t." + item.getName() + ".ranking"); + itemListMap.put("scoreVal","t." + item.getName() + ".score"); itemLists.add(itemListMap); }); for (int j = 0; j < listMap.size(); j++) { @@ -198,8 +201,9 @@ public class ActScoreEnterController { ActItemGroupScore itemGroupScore = scoreList.stream().filter(score -> score.getGroupId().equals(group.getLong("id")) && score.getItemId().equals(item.getId())).findFirst().orElse(null); - group.put("score", itemGroupScore.getScore()); + group.put("cj", itemGroupScore.getCj()); group.put("ranking", itemGroupScore.getRanking()); + group.put("score", itemGroupScore.getScore()); } } } diff --git a/backend/src/main/java/com/budwk/app/module/activity/controller/ActScoreEntryController.java b/backend/src/main/java/com/budwk/app/module/activity/controller/ActScoreEntryController.java index 21cf7ae..adb5056 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/controller/ActScoreEntryController.java +++ b/backend/src/main/java/com/budwk/app/module/activity/controller/ActScoreEntryController.java @@ -95,15 +95,21 @@ public class ActScoreEntryController { @At("/save-score") @SaCheckPermission("activity.group") @ApiOperation(value = "保存成绩", nickname = "/save-score", httpMethod = "POST") - public Result saveScore(@Param("scores") ActItemGroupScore[] actItemGroupScore) { + public Result saveScore(@Param("scores") ActItemGroupScore[] actItemGroupScore, @Param("activityId") String activityId) { // 更新分数和名次 dao.updateIgnoreNull(actItemGroupScore); - // 更新总得分 -// ActGroup actGroup = dao.fetch(ActGroup.class, actItemGroupScore.getGroupId()); -// BigDecimal newTotalScore = actGroup.getTotalScore().add(actItemGroupScore.getScore()); -// actGroup.setTotalScore(newTotalScore); -// dao.update(actGroup); + //查询这个活动所有成绩 + List scoreList = dao.query(ActItemGroupScore.class, Cnd.where(ActItemGroupScore::getActivityId, "=", activityId)); + for (ActItemGroupScore score : actItemGroupScore) { + Long groupId = score.getGroupId(); + //在找出这个队伍下面所有的分数 + List groupScoreList = scoreList.stream().filter(itemScore -> itemScore.getGroupId().equals(groupId)).toList(); + BigDecimal totalScore = groupScoreList.stream() + .map(ActItemGroupScore::getScore) // 提取每个 score(BigDecimal) + .reduce(BigDecimal.ZERO, BigDecimal::add); + dao.update(ActGroup.class, Chain.make("totalScore", totalScore), Cnd.where(ActGroup::getId, "=", groupId)); + } return Result.success(); } diff --git a/backend/src/main/java/com/budwk/app/module/activity/models/ActItemGroupScore.java b/backend/src/main/java/com/budwk/app/module/activity/models/ActItemGroupScore.java index ff4bab3..31a963f 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/models/ActItemGroupScore.java +++ b/backend/src/main/java/com/budwk/app/module/activity/models/ActItemGroupScore.java @@ -47,4 +47,9 @@ public class ActItemGroupScore extends BaseModel { @Comment("队伍排名") @ColDefine(type = ColType.VARCHAR, width = 50) private String ranking; + + @Column + @Comment("成绩") + @ColDefine(type = ColType.VARCHAR, width = 20) + private String cj; } diff --git a/backend/src/main/java/com/budwk/app/module/activity/models/ActRankScore.java b/backend/src/main/java/com/budwk/app/module/activity/models/ActRankScore.java index 5c76790..f0d5302 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/models/ActRankScore.java +++ b/backend/src/main/java/com/budwk/app/module/activity/models/ActRankScore.java @@ -27,4 +27,5 @@ public class ActRankScore extends BaseModel { @ColDefine(customType = "decimal", width = 10, precision = 2) private BigDecimal score; + } diff --git a/backend/src/main/java/com/budwk/app/module/activity/models/ActUser.java b/backend/src/main/java/com/budwk/app/module/activity/models/ActUser.java index c1a69cc..e822f4b 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/models/ActUser.java +++ b/backend/src/main/java/com/budwk/app/module/activity/models/ActUser.java @@ -166,4 +166,9 @@ public class ActUser extends BaseModel { @Default("0") private Boolean isParty; + @Column + @Comment("体重KG") + @ColDefine(type = ColType.DOUBLE) + private Double weight; + } diff --git a/backend/src/main/java/com/budwk/app/module/activity/models/ActivityItem.java b/backend/src/main/java/com/budwk/app/module/activity/models/ActivityItem.java index 79fa38c..eac6708 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/models/ActivityItem.java +++ b/backend/src/main/java/com/budwk/app/module/activity/models/ActivityItem.java @@ -60,6 +60,7 @@ public class ActivityItem extends BaseModel { @Column @ColDefine(type = ColType.INT) private Integer sort; + private String cjName; private String scoreName; private String rankingName; private String scoreVal; diff --git a/backend/src/main/resources/templates/scoreEnter.xlsx b/backend/src/main/resources/templates/scoreEnter.xlsx index 6880a0e272c5daf9e0733da2eaa14f2bf2575aba..a8f200b0fde772efffe2ce15fe4826cfa7a3d7f8 100644 GIT binary patch delta 5598 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 delta 5586 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 diff --git a/backend/src/main/resources/views/platform/activity/scoreEnter/index.html b/backend/src/main/resources/views/platform/activity/scoreEnter/index.html index 15b5a85..6ae0f75 100644 --- a/backend/src/main/resources/views/platform/activity/scoreEnter/index.html +++ b/backend/src/main/resources/views/platform/activity/scoreEnter/index.html @@ -42,25 +42,28 @@ layout("/layouts/platform_1.html"){ 打开成绩大屏 导出 - + - + - + - + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -78,9 +77,10 @@ - + + :rules="[{required:true,message: '请输入姓名'}]"> @@ -89,74 +89,83 @@ + + + + :rules="[{required:true,message: '请输入职务'}]"> + :rules="[{required:true,message: '请输入身份证号码'},{idcard:true, message: '请输入正确的身份证号码'}]"> + :rules="[{required:true,message: '请输入联系电话'},{telnumber:true, message: '请输入正确的联系电话'}]"> + :rules="[{required:true,message: '请选择是否住宿'}]"> + :rules="[{required:true,message: '请选择是否为联系人'}]"> - + - + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -182,7 +191,7 @@ shape="round" @click="onSubmit" > - {{ isSignUp ? '重新提交报名信息' : '提交报名'}} + {{ isSignUp ? '重新提交报名信息' : '提交报名' }} @@ -202,13 +211,14 @@ - + 取消 - + {{ canConfirmAgreement ? '确定并报名' : `请阅读(${agreementCountdown}秒)` }} @@ -225,7 +235,9 @@ 重要提醒 - 请务必准确填写手机号码和身份证号码,信息有误将导致现场签到失败,影响您的正常使用。 + + 请务必准确填写手机号码和身份证号码,信息有误将导致现场签到失败,影响您的正常使用。 + @@ -244,7 +256,7 @@ import {onLoad} from "@dcloudio/uni-app"; import {useUserStore} from "@/store"; const request = useRequest() -const userStore= useUserStore() +const userStore = useUserStore() // 当前选中的选项卡索引 const activeTabIndex = ref(0) @@ -339,16 +351,16 @@ function scrollFormToTop() { // 引导部分 const guideCurrent = ref(-1) const guideSteps = [ - { - element:()=> document.querySelector('.header-add-btn'), - title: '添加活动报名人员', - placement: 'top' - }, - { - element:()=> document.querySelector('.footer'), - title: '提交报名信息', - placement: 'top' - } + { + element: () => document.querySelector('.header-add-btn'), + title: '添加活动报名人员', + placement: 'top' + }, + { + element: () => document.querySelector('.footer'), + title: '提交报名信息', + placement: 'top' + } ] // 报名信息 @@ -377,7 +389,7 @@ onLoad(async (option) => { await getIsSignUp() await getAgreement() // 没报名进行引导 - if(!formData.value.userList || formData.value.userList.length === 0){ + if (!formData.value.userList || formData.value.userList.length === 0) { guideCurrent.value = 0 // 默认是本人的信息 formData.value.userList.push({ @@ -406,7 +418,7 @@ async function getAgreement() { if (code === 0 && data) { agreementContent.value = data } - }catch (e){ + } catch (e) { console.error(e) } } @@ -905,8 +917,12 @@ function closeNoticePopup() { } @keyframes fadeIn { - from { opacity: 0.6; } - to { opacity: 1; } + from { + opacity: 0.6; + } + to { + opacity: 1; + } } .user-actions { @@ -1023,7 +1039,7 @@ function closeNoticePopup() { height: 44px; } -::v-deep .t-form__label--required::before{ +::v-deep .t-form__label--required::before { position: absolute; left: 8px; color: #ee0a24; diff --git a/frontend/src/pages/activity/team-form/index.vue b/frontend/src/pages/activity/team-form/index.vue index cc05601..62a4a84 100644 --- a/frontend/src/pages/activity/team-form/index.vue +++ b/frontend/src/pages/activity/team-form/index.vue @@ -47,7 +47,7 @@ diff --git a/frontend/src/pages/activity/team/index.vue b/frontend/src/pages/activity/team/index.vue index 96db3ad..103caa0 100644 --- a/frontend/src/pages/activity/team/index.vue +++ b/frontend/src/pages/activity/team/index.vue @@ -10,10 +10,10 @@
- - - - + + + +
{{ team.groupName }}
@@ -24,23 +24,23 @@
- +
成员:{{ team.groupUsers?.length }}
- +
- +
排名:{{ team.totalRank ? team.totalRank : '--' }}
- +
@@ -80,19 +80,29 @@
-
-
- -
-
-
您是队长
-
拥有团队所有管理权限
+
+
+
+ +
+
+
您是队长
+
拥有团队所有管理权限
+
+
+ + 取消成为队长 +
- +
您是普通成员
@@ -104,7 +114,7 @@
- +
您是普通成员
@@ -125,7 +135,7 @@ @@ -161,10 +171,10 @@ {{ userInfo.userName }} - {{userInfo.sex}} - {{userInfo.phone}} - {{userInfo.position}} - {{userInfo.unitName}} + {{ userInfo.sex }} + {{ userInfo.phone }} + {{ userInfo.position }} + {{ userInfo.unitName }} @@ -214,6 +224,35 @@ const actChange = (val) => { getListAct() } +// 取消成为队长 +const cancelLeader = async () => { + // 弹出确认框 + Dialog.confirm({ + title: '温馨提示', + content: '确定要取消队长身份吗?', + confirmBtn: '确认取消', + cancelBtn: '再想想', + onConfirm: async () => { + try { + const {code, msg} = await useRequest().post('/client/group/cancel-leader/' + team.value.id); + if (code === 0) { + await getTeamInfo(); + Toast({message: '取消成功', theme: 'success'}); + } else { + await getTeamInfo(); + Toast({message: msg, theme: 'error'}); + } + } catch (e) { + Toast({message: e.message || '操作失败', theme: 'error'}); + } + }, + onCancel: () => { + // 用户取消,可选提示或什么都不做 + // Toast({ message: '已取消操作', theme: 'warning' }); + }, + }); +}; + // 申请成为队长 const onLeaderConfirm = async () => { try { @@ -224,6 +263,7 @@ const onLeaderConfirm = async () => { Toast({message: '申请成功', theme: 'success'}); leaderConfirmVisible.value = false } else { + await getTeamInfo(); Toast({message: msg, theme: 'error'}); } } catch (e) { @@ -241,7 +281,7 @@ const getTeamInfo = async () => { try { const {code, msg, data} = await useRequest().post('/client/group/info/' + pageForm.actId); if (code === 0) { - if(data){ + if (data) { team.value = data team.value.teamIsLeader = !!team.value.groupUsers.find(t => t.isLeader) } @@ -618,18 +658,16 @@ onLoad(() => { width: 40px; height: 40px; border-radius: 20px; - background: linear-gradient(120deg, #ff5f5c, #ff8c8a); + //background: linear-gradient(120deg, #ff5f5c, #ff8c8a); display: flex; align-items: center; justify-content: center; margin-right: 12px; - box-shadow: 0 4px 12px rgba(255, 95, 92, 0.2); + //box-shadow: 0 4px 12px rgba(255, 95, 92, 0.2); + color: #ff5f5c; + font-size: 22px; } -.role-icon i { - font-size: 20px; - color: white; -} .role-info { flex: 1; From 48a3b7dcfff8830930e77a2b307d8d1aa2d1f90b Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Fri, 19 Sep 2025 08:53:43 +0800 Subject: [PATCH 2/2] commit --- .../views/platform/activity/scoreEnter/index.html | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/backend/src/main/resources/views/platform/activity/scoreEnter/index.html b/backend/src/main/resources/views/platform/activity/scoreEnter/index.html index 6ae0f75..38b3b58 100644 --- a/backend/src/main/resources/views/platform/activity/scoreEnter/index.html +++ b/backend/src/main/resources/views/platform/activity/scoreEnter/index.html @@ -42,14 +42,16 @@ layout("/layouts/platform_1.html"){ 打开成绩大屏 导出 - + - + - + @@ -59,7 +61,7 @@ layout("/layouts/platform_1.html"){ {{scope.row[item.id]['totalRank']}} - + @@ -94,7 +96,7 @@ layout("/layouts/platform_1.html"){ }, methods: { doExport() { - window.open("/platform/activity/scoreEnter/doExport?activityId=" + this.pageForm.activityId ) + window.open("/platform/activity/scoreEnter/doExport?activityId=" + this.pageForm.activityId) }, // 格式化名称 formatName(name) { @@ -222,7 +224,7 @@ layout("/layouts/platform_1.html"){ } console.log(this.tableData) }, - openBigScreen(){ + openBigScreen() { window.open("/platform/activity/bigScreen?activityId=" + this.pageForm.activityId) } },