Merge branch 'main' of https://dd3skj.picp.vip/zhaoxinyu/hmc_gbhd
# Conflicts: # frontend/src/pages/activity/team-form/index.vue
This commit is contained in:
+6
@@ -5,6 +5,7 @@ import com.budwk.app.client.module.activity.service.ClientItemService;
|
|||||||
import com.budwk.app.client.module.activity.vo.ClientItemSignUpVO;
|
import com.budwk.app.client.module.activity.vo.ClientItemSignUpVO;
|
||||||
import com.budwk.app.module.activity.models.ActGroupUser;
|
import com.budwk.app.module.activity.models.ActGroupUser;
|
||||||
import com.budwk.app.module.activity.models.Activity;
|
import com.budwk.app.module.activity.models.Activity;
|
||||||
|
import com.budwk.app.module.activity.models.ActivityItem;
|
||||||
import com.budwk.app.module.activity.models.ActivityItemUser;
|
import com.budwk.app.module.activity.models.ActivityItemUser;
|
||||||
import com.budwk.app.web.commons.auth.satoken.StpClientUtil;
|
import com.budwk.app.web.commons.auth.satoken.StpClientUtil;
|
||||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
@@ -30,6 +31,11 @@ public class ClientItemServiceImpl extends BaseServiceImpl<ActivityItemUser> imp
|
|||||||
if (activity.getItemEndTime().isBefore(LocalDateTime.now())) {
|
if (activity.getItemEndTime().isBefore(LocalDateTime.now())) {
|
||||||
throw new RuntimeException("项目报名已结束!");
|
throw new RuntimeException("项目报名已结束!");
|
||||||
}
|
}
|
||||||
|
//查询报名项目
|
||||||
|
ActivityItem activityItem = dao().fetch(ActivityItem.class, Cnd.where(ActivityItem::getId, "=", signVO.getItemId()));
|
||||||
|
if (activityItem.getNum() > 0 && signVO.getUserList().size() != activityItem.getNum()) {
|
||||||
|
throw new RuntimeException("报名人数不正确!");
|
||||||
|
}
|
||||||
//找到自己的团队
|
//找到自己的团队
|
||||||
ActGroupUser groupUser = dao().fetch(ActGroupUser.class,
|
ActGroupUser groupUser = dao().fetch(ActGroupUser.class,
|
||||||
Cnd.where(ActGroupUser::getActivityId, "=", signVO.getActivityId())
|
Cnd.where(ActGroupUser::getActivityId, "=", signVO.getActivityId())
|
||||||
|
|||||||
@@ -46,6 +46,11 @@ public class ActivityItem extends BaseModel {
|
|||||||
@ColDefine(type = ColType.INT)
|
@ColDefine(type = ColType.INT)
|
||||||
private Integer num;
|
private Integer num;
|
||||||
|
|
||||||
|
@Comment("是否团体报名")
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.BOOLEAN)
|
||||||
|
private Boolean isTeamApply;
|
||||||
|
|
||||||
@Comment("排序")
|
@Comment("排序")
|
||||||
@Column
|
@Column
|
||||||
@ColDefine(type = ColType.INT)
|
@ColDefine(type = ColType.INT)
|
||||||
|
|||||||
@@ -20,12 +20,26 @@ const itemForm = {
|
|||||||
<el-input v-model="row.rule" placeholder="请输入评分规则"></el-input>
|
<el-input v-model="row.rule" placeholder="请输入评分规则"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="图片">
|
<el-table-column label="是否团队合作">
|
||||||
|
<template #default="{row}">
|
||||||
|
<el-radio-group v-model="row.isTeamApply" size="medium" @change="row.num=0">
|
||||||
|
<el-radio-button :label="true">是</el-radio-button>
|
||||||
|
<el-radio-button :label="false">否</el-radio-button>
|
||||||
|
</el-radio-group>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="报名人数">
|
||||||
|
<template #default="{row}">
|
||||||
|
<el-input-number v-model="row.num" :disabled="row.isTeamApply"
|
||||||
|
placeholder="请输入报名人数"></el-input-number>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- <el-table-column label="图片">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
{{row.img}}
|
{{row.img}}
|
||||||
<image-upload v-model="row.img" :max-count="1"></image-upload>
|
<image-upload v-model="row.img" :max-count="1"></image-upload>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>-->
|
||||||
<el-table-column label="操作" fixed="right" width="100px">
|
<el-table-column label="操作" fixed="right" width="100px">
|
||||||
<template #default="{$index}">
|
<template #default="{$index}">
|
||||||
<el-button type="text" class="text-danger" @click="removeRow($index)">删除</el-button>
|
<el-button type="text" class="text-danger" @click="removeRow($index)">删除</el-button>
|
||||||
@@ -62,7 +76,7 @@ const itemForm = {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
addRow() {
|
addRow() {
|
||||||
this.form.tableData.push({})
|
this.form.tableData.push({isTeamApply:false,applyNum:0})
|
||||||
},
|
},
|
||||||
removeRow(index) {
|
removeRow(index) {
|
||||||
this.form.tableData.splice(index, 1)
|
this.form.tableData.splice(index, 1)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
:key="project.id"
|
:key="project.id"
|
||||||
class="project-card"
|
class="project-card"
|
||||||
:class="{'project-card--registered': registrationStatus.get(project.id)?.length}"
|
:class="{'project-card--registered': registrationStatus.get(project.id)?.length}"
|
||||||
@click="selectProject(project.id)"
|
@click="selectProject(project)"
|
||||||
>
|
>
|
||||||
<view class="project-card__content">
|
<view class="project-card__content">
|
||||||
<view class="project-card__title">{{ project.name }}</view>
|
<view class="project-card__title">{{ project.name }}</view>
|
||||||
@@ -36,7 +36,6 @@
|
|||||||
</view>-->
|
</view>-->
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
|
||||||
</template>
|
</template>
|
||||||
<view v-else style="flex: 1;display: flex;justify-content: center;align-items: center">
|
<view v-else style="flex: 1;display: flex;justify-content: center;align-items: center">
|
||||||
<t-empty v-if="actOptions && actOptions.length === 0"
|
<t-empty v-if="actOptions && actOptions.length === 0"
|
||||||
@@ -45,6 +44,7 @@
|
|||||||
style="flex: 1">
|
style="flex: 1">
|
||||||
</t-empty>
|
</t-empty>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<t-popup v-model:visible="showMemberPicker" placement="bottom" destroy-on-close>
|
<t-popup v-model:visible="showMemberPicker" placement="bottom" destroy-on-close>
|
||||||
<view class="member-picker">
|
<view class="member-picker">
|
||||||
<view class="picker-header">
|
<view class="picker-header">
|
||||||
@@ -54,6 +54,14 @@
|
|||||||
|
|
||||||
<view class="picker-subtitle" v-if="selectedItemId">
|
<view class="picker-subtitle" v-if="selectedItemId">
|
||||||
{{ itemOptions.find(p => p.id === selectedItemId)?.name }}
|
{{ itemOptions.find(p => p.id === selectedItemId)?.name }}
|
||||||
|
|
||||||
|
<view v-if="itemOptions.find(p => p.id === selectedItemId)?.isTeamApply">
|
||||||
|
此项目是团队协作需要全体成员参与
|
||||||
|
</view>
|
||||||
|
<view v-else>
|
||||||
|
此项目需【{{itemOptions.find(p => p.id === selectedItemId)?.num}}】名成员参与
|
||||||
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="member-list">
|
<view class="member-list">
|
||||||
@@ -66,7 +74,7 @@
|
|||||||
:value="member.userId"
|
:value="member.userId"
|
||||||
:label="member.userName+'-'+member.sex"
|
:label="member.userName+'-'+member.sex"
|
||||||
:content="member.unitName"
|
:content="member.unitName"
|
||||||
:disabled="!isSelfLeader"
|
:disabled="!isSelfLeader||team.isTeamApply"
|
||||||
icon-size="20px"
|
icon-size="20px"
|
||||||
/>
|
/>
|
||||||
</view>
|
</view>
|
||||||
@@ -206,14 +214,19 @@ const fetchRegistrationStatus = () => {
|
|||||||
return acc;
|
return acc;
|
||||||
}, new Map());
|
}, new Map());
|
||||||
registrationStatus.value = resultMap;
|
registrationStatus.value = resultMap;
|
||||||
console.log(resultMap)
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 点击的当前项目
|
||||||
|
const team = ref({})
|
||||||
// 选择项目
|
// 选择项目
|
||||||
const selectProject = (projectId) => {
|
const selectProject = (project) => {
|
||||||
selectedItemId.value = projectId;
|
selectedItemId.value = project.id;
|
||||||
selectedMemberIds.value = selectedMemberList.value.filter(v => v.itemId === projectId).map(v => v.userId)
|
team.value=project
|
||||||
|
if (project.isTeamApply){
|
||||||
|
selectedMemberIds.value = teamMembers.value.map(v => v.userId)
|
||||||
|
}else{
|
||||||
|
selectedMemberIds.value = selectedMemberList.value.filter(v => v.itemId === project.id).map(v => v.userId)
|
||||||
|
}
|
||||||
showMemberPicker.value = true;
|
showMemberPicker.value = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user