commit
This commit is contained in:
+19
-2
@@ -13,8 +13,10 @@ import org.nutz.dao.Sqls;
|
|||||||
import org.nutz.dao.sql.Sql;
|
import org.nutz.dao.sql.Sql;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.json.Json;
|
||||||
import org.nutz.mvc.annotation.At;
|
import org.nutz.mvc.annotation.At;
|
||||||
import org.nutz.mvc.annotation.Ok;
|
import org.nutz.mvc.annotation.Ok;
|
||||||
|
import org.nutz.mvc.annotation.POST;
|
||||||
import org.nutz.mvc.annotation.Param;
|
import org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -26,7 +28,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@IocBean
|
@IocBean
|
||||||
@At("/platform/trainSingUp/manage/activity/add")
|
@At("/platform/trainSingUp/manage/activity")
|
||||||
public class TrainSignUpActivityAddController {
|
public class TrainSignUpActivityAddController {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@@ -35,12 +37,27 @@ public class TrainSignUpActivityAddController {
|
|||||||
@Inject
|
@Inject
|
||||||
private Dao dao;
|
private Dao dao;
|
||||||
|
|
||||||
@At("")
|
@At("/add")
|
||||||
@RequiresPermissions("trainSingUp.manage.activity.add")
|
@RequiresPermissions("trainSingUp.manage.activity.add")
|
||||||
@Ok("beetl:/platform/trainSingUp/manage/activity_add.html")
|
@Ok("beetl:/platform/trainSingUp/manage/activity_add.html")
|
||||||
public void add() {
|
public void add() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ViReturn
|
||||||
|
@Ok("json:full")
|
||||||
|
@POST
|
||||||
|
@RequiresPermissions("trainSingUp.manage.activity.add")
|
||||||
|
public Object doHandle(@Param(value = "data", required = false) String data) {
|
||||||
|
TrainSignUpActivity activity = Json.fromJson(TrainSignUpActivity.class, data);
|
||||||
|
if (StrUtil.isBlank(activity.getId())) {
|
||||||
|
trainSignUpActivityManageService.add(activity, null);
|
||||||
|
} else {
|
||||||
|
trainSignUpActivityManageService.edit(activity);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
@Ok("json:full")
|
@Ok("json:full")
|
||||||
|
|||||||
+7
-9
@@ -6,7 +6,6 @@ import io.v.nutz.base.dao.CndPlus;
|
|||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
import io.v.nutz.sys.models.Sys_dict;
|
import io.v.nutz.sys.models.Sys_dict;
|
||||||
import io.v.nutz.sys.services.SysDictService;
|
import io.v.nutz.sys.services.SysDictService;
|
||||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpActivity;
|
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpActivity;
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpActivityCourse;
|
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpActivityCourse;
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpType;
|
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpType;
|
||||||
@@ -57,19 +56,16 @@ public class TrainSignUpActivityApplyController {
|
|||||||
public Object activityData(@Param(value = "year", required = false) Integer year,
|
public Object activityData(@Param(value = "year", required = false) Integer year,
|
||||||
@Param(value = "activityType", required = false) Integer activityType) {
|
@Param(value = "activityType", required = false) Integer activityType) {
|
||||||
CndPlus cnd = CndPlus.create();
|
CndPlus cnd = CndPlus.create();
|
||||||
|
cnd.and("isDisabled", "=", false);
|
||||||
cnd.andEX("`year`", "=", year);
|
cnd.andEX("`year`", "=", year);
|
||||||
//查询报名中
|
//查询报名中
|
||||||
if (activityType == 2) {
|
if (activityType == 2) {
|
||||||
cnd.and(new Static("now() > activitySignUpStartTime and now() < activitySignUpEndTime"));
|
cnd.and(new Static("now() > activitySignUpStartTime and now() < activitySignUpEndTime"));
|
||||||
}//查询已结束的
|
}//查询已结束的
|
||||||
else if (activityType == 3) {
|
else if (activityType == 3) {
|
||||||
cnd.and(new Static("now() > activityEndTime"));
|
cnd.and(new Static("now() > activitySignUpEndTime"));
|
||||||
}
|
}
|
||||||
|
cnd.desc("activityStartTime");
|
||||||
if(ShiroUtil.hasRole("H04") && !ShiroUtil.hasAnyRoles("sysadmin, A06")) {
|
|
||||||
cnd.and("activityMode", "=", 2).and("opBy", "=", ShiroUtil.getPlatformUid());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<TrainSignUpActivity> trainSignUpActivities = trainSignUpActivityService.query(cnd);
|
List<TrainSignUpActivity> trainSignUpActivities = trainSignUpActivityService.query(cnd);
|
||||||
Map<String, String> trainSignUpTypeMap = dictService.getSubListByCode("trainSignUpType").stream().collect(Collectors.toMap(Sys_dict::getCode, Sys_dict::getName));
|
Map<String, String> trainSignUpTypeMap = dictService.getSubListByCode("trainSignUpType").stream().collect(Collectors.toMap(Sys_dict::getCode, Sys_dict::getName));
|
||||||
trainSignUpActivities.forEach(v->v.setTrainType(trainSignUpTypeMap.get(v.getTrainType())));
|
trainSignUpActivities.forEach(v->v.setTrainType(trainSignUpTypeMap.get(v.getTrainType())));
|
||||||
@@ -112,7 +108,7 @@ public class TrainSignUpActivityApplyController {
|
|||||||
CndPlus cnd = CndPlus.create();
|
CndPlus cnd = CndPlus.create();
|
||||||
cnd.andEX("type.id","=",courseTypeId);
|
cnd.andEX("type.id","=",courseTypeId);
|
||||||
cnd.and("tsuc.activityId","=",activityId);
|
cnd.and("tsuc.activityId","=",activityId);
|
||||||
cnd.asc("tsuc.orderNum");
|
cnd.asc("type.code");
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
|
|
||||||
Pagination pagination = trainSignUpActivityService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
Pagination pagination = trainSignUpActivityService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
@@ -125,7 +121,9 @@ public class TrainSignUpActivityApplyController {
|
|||||||
AtomicInteger hasRegisterNum = new AtomicInteger();
|
AtomicInteger hasRegisterNum = new AtomicInteger();
|
||||||
List<TrainSignUpUser> signUpUsers = trainSignUpActivityService.dao().query(TrainSignUpUser.class, Cnd.where("courseId", "=", c.getString("id")));
|
List<TrainSignUpUser> signUpUsers = trainSignUpActivityService.dao().query(TrainSignUpUser.class, Cnd.where("courseId", "=", c.getString("id")));
|
||||||
signUpUsers.forEach(item -> {
|
signUpUsers.forEach(item -> {
|
||||||
|
if(type.getSelfAddFamily()) {
|
||||||
hasRegisterNum.getAndIncrement();
|
hasRegisterNum.getAndIncrement();
|
||||||
|
}
|
||||||
if(type.getIsBringFamily() && type.getIsAddFamily()) {
|
if(type.getIsBringFamily() && type.getIsAddFamily()) {
|
||||||
List<NutMap> mapList = item.getMobileColumnsValue();
|
List<NutMap> mapList = item.getMobileColumnsValue();
|
||||||
if(Lang.isNotEmpty(mapList)) {
|
if(Lang.isNotEmpty(mapList)) {
|
||||||
@@ -138,7 +136,7 @@ public class TrainSignUpActivityApplyController {
|
|||||||
});
|
});
|
||||||
c.put("hasRegisterNum",hasRegisterNum.get());
|
c.put("hasRegisterNum",hasRegisterNum.get());
|
||||||
//当前用户是否报过
|
//当前用户是否报过
|
||||||
c.put("isSign",trainSignUpActivityService.isSignCourseByUser(c.getString("id"), (String) ShiroUtil.getPrincipalProperty("id")));
|
c.put("isSign",trainSignUpActivityService.isSignCourseByUser(c.getString("id"), (String) io.v.nutz.web.commons.utils.ShiroUtil.getPrincipalProperty("id")));
|
||||||
});
|
});
|
||||||
return pagination;
|
return pagination;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-9
@@ -2,12 +2,11 @@ package io.v.nutz.zhgh.trainSignUp.controller.manage;
|
|||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import io.v.nutz.base.annontation.ViReturn;
|
import io.v.nutz.base.annontation.ViReturn;
|
||||||
import io.v.nutz.base.utils.DateUtil;
|
|
||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
|
import io.v.nutz.base.utils.DateUtil;
|
||||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||||
import io.v.nutz.zhgh.data.model.MatchConditionStructure;
|
import io.v.nutz.zhgh.data.model.MatchConditionStructure;
|
||||||
import io.v.nutz.zhgh.data.service.MatchConditionStructureService;
|
import io.v.nutz.zhgh.data.service.MatchConditionStructureService;
|
||||||
import io.v.nutz.zhgh.mobileHome.service.MobileHomeService;
|
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.*;
|
import io.v.nutz.zhgh.trainSignUp.models.*;
|
||||||
import io.v.nutz.zhgh.trainSignUp.service.TrainSignUpActivityService;
|
import io.v.nutz.zhgh.trainSignUp.service.TrainSignUpActivityService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -44,7 +43,6 @@ public class TrainSignUpActivityController {
|
|||||||
@Inject
|
@Inject
|
||||||
private MatchConditionStructureService matchConditionStructureService;
|
private MatchConditionStructureService matchConditionStructureService;
|
||||||
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private Dao dao;
|
private Dao dao;
|
||||||
|
|
||||||
@@ -76,7 +74,6 @@ public class TrainSignUpActivityController {
|
|||||||
@RequiresPermissions("trainSingUp.manage.activity")
|
@RequiresPermissions("trainSingUp.manage.activity")
|
||||||
public Object doDelete(String id) {
|
public Object doDelete(String id) {
|
||||||
Trans.exec(() -> {
|
Trans.exec(() -> {
|
||||||
TrainSignUpActivity activity = trainSignUpActivityManageService.fetch(id);
|
|
||||||
trainSignUpActivityManageService.delete(id);
|
trainSignUpActivityManageService.delete(id);
|
||||||
dao.clear(TrainSignUpCourse.class, Cnd.where("activityId", "=", id));
|
dao.clear(TrainSignUpCourse.class, Cnd.where("activityId", "=", id));
|
||||||
dao.clear(TrainSignUpActivityCourse.class, Cnd.where("activityId", "=", id));
|
dao.clear(TrainSignUpActivityCourse.class, Cnd.where("activityId", "=", id));
|
||||||
@@ -93,13 +90,9 @@ public class TrainSignUpActivityController {
|
|||||||
@Ok("json:full")
|
@Ok("json:full")
|
||||||
@POST
|
@POST
|
||||||
@RequiresPermissions("trainSingUp.manage.activity")
|
@RequiresPermissions("trainSingUp.manage.activity")
|
||||||
public Object doHandle(@Param("data") String data, @Param("flag") Boolean flag) {
|
public Object doHandle(@Param("data") String data) {
|
||||||
TrainSignUpActivity activity = Json.fromJson(TrainSignUpActivity.class, data);
|
TrainSignUpActivity activity = Json.fromJson(TrainSignUpActivity.class, data);
|
||||||
activity.setActivityMode(ShiroUtil.hasAnyRoles("sysadmin, A06") ? 1 : 2);
|
|
||||||
activity.setDisabled(!flag);
|
|
||||||
|
|
||||||
if (StrUtil.isBlank(activity.getId())) {
|
if (StrUtil.isBlank(activity.getId())) {
|
||||||
activity.setOpBy(ShiroUtil.getPlatformUid());
|
|
||||||
trainSignUpActivityManageService.add(activity, null);
|
trainSignUpActivityManageService.add(activity, null);
|
||||||
} else {
|
} else {
|
||||||
trainSignUpActivityManageService.edit(activity);
|
trainSignUpActivityManageService.edit(activity);
|
||||||
|
|||||||
+2
-2
@@ -3,11 +3,11 @@ package io.v.nutz.zhgh.trainSignUp.controller.manage;
|
|||||||
import cn.hutool.core.util.EnumUtil;
|
import cn.hutool.core.util.EnumUtil;
|
||||||
import cn.wizzer.framework.base.Result;
|
import cn.wizzer.framework.base.Result;
|
||||||
import io.v.nutz.base.annontation.ViReturn;
|
import io.v.nutz.base.annontation.ViReturn;
|
||||||
|
import io.v.nutz.base.dao.CndPlus;
|
||||||
import io.v.nutz.base.page.Pagination;
|
import io.v.nutz.base.page.Pagination;
|
||||||
|
import io.v.nutz.base.query.PageForm;
|
||||||
import io.v.nutz.base.service.BaseService;
|
import io.v.nutz.base.service.BaseService;
|
||||||
import io.v.nutz.base.utils.PageUtil;
|
import io.v.nutz.base.utils.PageUtil;
|
||||||
import io.v.nutz.base.dao.CndPlus;
|
|
||||||
import io.v.nutz.base.query.PageForm;
|
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.TrainMobileSignColumn;
|
import io.v.nutz.zhgh.trainSignUp.models.TrainMobileSignColumn;
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpType;
|
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpType;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|||||||
+7
-7
@@ -11,8 +11,8 @@ import cn.hutool.core.date.DateUtil;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.wizzer.framework.base.Result;
|
import cn.wizzer.framework.base.Result;
|
||||||
import io.v.nutz.base.annontation.ViReturn;
|
import io.v.nutz.base.annontation.ViReturn;
|
||||||
import io.v.nutz.base.service.BaseService;
|
|
||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
|
import io.v.nutz.base.service.BaseService;
|
||||||
import io.v.nutz.base.utils.ViTool;
|
import io.v.nutz.base.utils.ViTool;
|
||||||
import io.v.nutz.sys.models.Sys_user;
|
import io.v.nutz.sys.models.Sys_user;
|
||||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||||
@@ -226,10 +226,10 @@ public class TrainSignUpUserAdjustController {
|
|||||||
|
|
||||||
TrainSignUpActivity activity = dao.fetch(TrainSignUpActivity.class, activityId);
|
TrainSignUpActivity activity = dao.fetch(TrainSignUpActivity.class, activityId);
|
||||||
|
|
||||||
if(DateUtil.compare(new Date(), activity.getActivitySignUpStartTime(), "yyyy-MM-dd HH:mm:ss") < 0) {
|
/*if(DateUtil.compare(new Date(), activity.getActivitySignUpStartTime(), "yyyy-MM-dd HH:mm:ss") < 0) {
|
||||||
return Result.error("报名未开始");
|
return Result.error("报名未开始");
|
||||||
}
|
}
|
||||||
/*if(DateUtil.compare(new Date(), activity.getActivitySignUpEndTime(), "yyyy-MM-dd HH:mm:ss") > 0) {
|
if(DateUtil.compare(new Date(), activity.getActivitySignUpEndTime(), "yyyy-MM-dd HH:mm:ss") > 0) {
|
||||||
return Result.error("报名已结束");
|
return Result.error("报名已结束");
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
@@ -244,11 +244,11 @@ public class TrainSignUpUserAdjustController {
|
|||||||
for (SignUser sign : signUser) {
|
for (SignUser sign : signUser) {
|
||||||
Sys_user sysUser = dao.fetch(Sys_user.class, Cnd.where("loginname", "=", sign.getLoginname()));
|
Sys_user sysUser = dao.fetch(Sys_user.class, Cnd.where("loginname", "=", sign.getLoginname()));
|
||||||
if(sysUser != null) {
|
if(sysUser != null) {
|
||||||
if(!isSingle && courseMap.get(sign.getCourseName()) == null) {
|
/*if(!isSingle && courseMap.get(sign.getCourseName()) == null) {
|
||||||
sign.setErrMsg("分活动/培训班名称有误");
|
sign.setErrMsg("分活动/培训班名称有误");
|
||||||
continue;
|
continue;
|
||||||
}
|
}*/
|
||||||
String courseId = isSingle ? importCourseId : courseMap.get(sign.getCourseName());
|
String courseId = importCourseId;
|
||||||
/*if(StrUtil.isNotBlank(course.getConditionStructureId())) {
|
/*if(StrUtil.isNotBlank(course.getConditionStructureId())) {
|
||||||
NutMap nutMap = trainSignUpActivityService.validConditionStructure(course.getConditionStructureId());
|
NutMap nutMap = trainSignUpActivityService.validConditionStructure(course.getConditionStructureId());
|
||||||
if(!nutMap.getBoolean("flag")) {
|
if(!nutMap.getBoolean("flag")) {
|
||||||
@@ -290,7 +290,7 @@ public class TrainSignUpUserAdjustController {
|
|||||||
Sys_user sysUser = dao.fetch(Sys_user.class, Cnd.where("loginname", "=", item.getLoginname()));
|
Sys_user sysUser = dao.fetch(Sys_user.class, Cnd.where("loginname", "=", item.getLoginname()));
|
||||||
TrainSignUpUser trainSignUpUser = new TrainSignUpUser();
|
TrainSignUpUser trainSignUpUser = new TrainSignUpUser();
|
||||||
trainSignUpUser.setActivityId(activityId);
|
trainSignUpUser.setActivityId(activityId);
|
||||||
trainSignUpUser.setCourseId(isSingle ? importCourseId : courseMap.get(item.getCourseName()));
|
trainSignUpUser.setCourseId(importCourseId);
|
||||||
trainSignUpUser.setUserId(sysUser.getId());
|
trainSignUpUser.setUserId(sysUser.getId());
|
||||||
trainSignUpUser.setMobile(sysUser.getMobile());
|
trainSignUpUser.setMobile(sysUser.getMobile());
|
||||||
trainSignUpUser.setSignUpTime(new Date());
|
trainSignUpUser.setSignUpTime(new Date());
|
||||||
|
|||||||
+2
-5
@@ -6,9 +6,8 @@ import cn.afterturn.easypoi.excel.export.ExcelExportService;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.wizzer.framework.base.Result;
|
import cn.wizzer.framework.base.Result;
|
||||||
import io.v.nutz.base.annontation.ViReturn;
|
import io.v.nutz.base.annontation.ViReturn;
|
||||||
import io.v.nutz.base.utils.PageUtil;
|
|
||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
import io.v.nutz.base.utils.PageUtil;
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpActivity;
|
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpActivity;
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpCourse;
|
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpCourse;
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpUser;
|
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpUser;
|
||||||
@@ -71,9 +70,6 @@ public class TrainSignUpUserBlackListManage {
|
|||||||
cnd.andEX("tsuu.activityId", "=", activityId);
|
cnd.andEX("tsuu.activityId", "=", activityId);
|
||||||
cnd.andEX("tsuu.courseId", "=", courseId);
|
cnd.andEX("tsuu.courseId", "=", courseId);
|
||||||
cnd.andEX("act.year", "=", year);
|
cnd.andEX("act.year", "=", year);
|
||||||
if(ShiroUtil.hasRole("H04") && !ShiroUtil.hasAnyRoles("sysadmin, A06")) {
|
|
||||||
cnd.and("activityMode", "=", 2).and("act.opBy", "=", ShiroUtil.getPlatformUid());
|
|
||||||
}
|
|
||||||
if (StrUtil.isNotBlank(userKeyWord)) {
|
if (StrUtil.isNotBlank(userKeyWord)) {
|
||||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||||
cnd.and(seg.andLike("u.username", userKeyWord).orLike("u.loginname", userKeyWord));
|
cnd.and(seg.andLike("u.username", userKeyWord).orLike("u.loginname", userKeyWord));
|
||||||
@@ -81,6 +77,7 @@ public class TrainSignUpUserBlackListManage {
|
|||||||
if(Strings.isNotBlank(pageForm.getPageOrderName()) && Strings.isNotBlank(pageForm.getPageOrderBy())){
|
if(Strings.isNotBlank(pageForm.getPageOrderName()) && Strings.isNotBlank(pageForm.getPageOrderBy())){
|
||||||
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return trainSignUpBlackListService.pageData(pageForm, cnd, activityId, courseId);
|
return trainSignUpBlackListService.pageData(pageForm, cnd, activityId, courseId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+95
-7
@@ -7,10 +7,7 @@ import io.v.nutz.base.annontation.ViReturn;
|
|||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||||
import io.v.nutz.zhgh.data.service.MatchConditionStructureService;
|
import io.v.nutz.zhgh.data.service.MatchConditionStructureService;
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpActivity;
|
import io.v.nutz.zhgh.trainSignUp.models.*;
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpCourse;
|
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpUser;
|
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpUserCourse;
|
|
||||||
import io.v.nutz.zhgh.trainSignUp.service.TrainSignUpActivityService;
|
import io.v.nutz.zhgh.trainSignUp.service.TrainSignUpActivityService;
|
||||||
import org.apache.shiro.authz.annotation.RequiresAuthentication;
|
import org.apache.shiro.authz.annotation.RequiresAuthentication;
|
||||||
import org.nutz.dao.Chain;
|
import org.nutz.dao.Chain;
|
||||||
@@ -22,8 +19,7 @@ import org.nutz.ioc.loader.annotation.IocBean;
|
|||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
import org.nutz.mvc.annotation.*;
|
import org.nutz.mvc.annotation.*;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -105,6 +101,36 @@ public class MTrainSignUpActivityController {
|
|||||||
public Object doSignUp(TrainSignUpUser trainSignUpUser) {
|
public Object doSignUp(TrainSignUpUser trainSignUpUser) {
|
||||||
try {
|
try {
|
||||||
lock.lock();
|
lock.lock();
|
||||||
|
boolean courseByUser = trainSignUpActivityService.isSignCourseByUser(trainSignUpUser.getCourseId(), ShiroUtil.getPlatformUid());
|
||||||
|
if(courseByUser) {
|
||||||
|
return Result.error("您已报过该活动");
|
||||||
|
}
|
||||||
|
//判断人数
|
||||||
|
int number = 0;
|
||||||
|
TrainSignUpCourse course = trainSignUpActivityService.dao().fetch(TrainSignUpCourse.class, trainSignUpUser.getCourseId());
|
||||||
|
TrainSignUpType type = trainSignUpActivityService.dao().fetch(TrainSignUpType.class, course.getCourseType());
|
||||||
|
if(type != null) {
|
||||||
|
if(type.getIsBringFamily() && type.getIsAddFamily()) {
|
||||||
|
List<NutMap> mobileColumnsValue = trainSignUpUser.getMobileColumnsValue();
|
||||||
|
NutMap map = mobileColumnsValue.stream().filter(o -> "xdqsrs".equals(o.getString("columnCode"))).findAny().orElse(null);
|
||||||
|
number = map != null ? map.getInt("columnValue") : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean signFull = trainSignUpActivityService.isSignFull(trainSignUpUser.getCourseId(), number);
|
||||||
|
if(signFull) {
|
||||||
|
return Result.error("当前报名人数已满");
|
||||||
|
}
|
||||||
|
boolean signFullByUnionId = trainSignUpActivityService.isSignFullByUnionId(trainSignUpUser.getCourseId(), number);
|
||||||
|
if(signFullByUnionId) {
|
||||||
|
return Result.error("该活动您所在的分工会名额已报满");
|
||||||
|
}
|
||||||
|
|
||||||
|
TrainSignUpActivity activity = trainSignUpActivityService.fetch(trainSignUpUser.getActivityId());
|
||||||
|
Map<Boolean, String> childNumber = this.getChildNumber(activity, trainSignUpUser);
|
||||||
|
if (childNumber.containsKey(false)) {
|
||||||
|
return Result.error(childNumber.get(false));
|
||||||
|
}
|
||||||
|
|
||||||
trainSignUpActivityService.doSignUp(trainSignUpUser);
|
trainSignUpActivityService.doSignUp(trainSignUpUser);
|
||||||
return Result.success("报名成功");
|
return Result.success("报名成功");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -204,7 +230,7 @@ public class MTrainSignUpActivityController {
|
|||||||
return Result.error("报名未开始");
|
return Result.error("报名未开始");
|
||||||
}
|
}
|
||||||
if(DateUtil.compare(new Date(), activity.getActivitySignUpEndTime(), "yyyy-MM-dd HH:mm:ss") > 0) {
|
if(DateUtil.compare(new Date(), activity.getActivitySignUpEndTime(), "yyyy-MM-dd HH:mm:ss") > 0) {
|
||||||
return Result.error("报名已结束");
|
return Result.error("报名已结束,请致电校工会咨询,联系电话:85913629");
|
||||||
}
|
}
|
||||||
if(StrUtil.isNotBlank(cndId)) {
|
if(StrUtil.isNotBlank(cndId)) {
|
||||||
NutMap nutMap = trainSignUpActivityService.validConditionStructure(cndId);
|
NutMap nutMap = trainSignUpActivityService.validConditionStructure(cndId);
|
||||||
@@ -233,6 +259,12 @@ public class MTrainSignUpActivityController {
|
|||||||
if(signFullByUnionId) {
|
if(signFullByUnionId) {
|
||||||
return Result.error("该活动您所在的分工会名额已报满");
|
return Result.error("该活动您所在的分工会名额已报满");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Map<Boolean, String> childNumber = this.getChildNumber(activity, null);
|
||||||
|
if (childNumber.containsKey(false)) {
|
||||||
|
return Result.error(childNumber.get(false));
|
||||||
|
}
|
||||||
|
|
||||||
if(course.getReserveMode() == 2 && currentFamilyNumber == null) {
|
if(course.getReserveMode() == 2 && currentFamilyNumber == null) {
|
||||||
//课程已报人数
|
//课程已报人数
|
||||||
List<TrainSignUpUser> signUpUsers = dao.query(TrainSignUpUser.class, Cnd.where("courseId", "=", courseId));
|
List<TrainSignUpUser> signUpUsers = dao.query(TrainSignUpUser.class, Cnd.where("courseId", "=", courseId));
|
||||||
@@ -250,6 +282,62 @@ public class MTrainSignUpActivityController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Map<Boolean, String> getChildNumber(TrainSignUpActivity activity, TrainSignUpUser trainSignUpUser) {
|
||||||
|
//临时活动的逻辑
|
||||||
|
List<String> stringList = List.of("06aaf4fd9db94bf9be2a27a1ab486a20", "6faec5acb6264bb6a4395aee03804269", "f9c532d86c89474f9d61c8374539e521");
|
||||||
|
if(stringList.contains(activity.getId())) {
|
||||||
|
List<TrainSignUpUser> upUsers = trainSignUpActivityService.dao().query(TrainSignUpUser.class,
|
||||||
|
Cnd.where("activityId", "in", stringList)
|
||||||
|
.and("userId", "=", ShiroUtil.getPlatformUid()));
|
||||||
|
if(upUsers.size() >= 2) {
|
||||||
|
return Map.of(false, "江小娃系列活动只能报2个班");
|
||||||
|
}
|
||||||
|
//孩子数量
|
||||||
|
List<NutMap> childList = upUsers.stream()
|
||||||
|
.flatMap(o -> o.getMobileColumnsValue().stream())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
long count = childList.stream().filter(o -> o.getString("columnCode").contains("NM") && StrUtil.isNotBlank(o.getString("columnValue"))).count();
|
||||||
|
if(trainSignUpUser != null) {
|
||||||
|
|
||||||
|
//获取当前填写的孩子数量
|
||||||
|
List<NutMap> mobileColumnsValue = trainSignUpUser.getMobileColumnsValue();
|
||||||
|
|
||||||
|
//判断孩子姓名有没有重复
|
||||||
|
List<String> hasSignName = new ArrayList<>();
|
||||||
|
childList.forEach(o -> {
|
||||||
|
if(o.getString("columnCode").contains("NM") && StrUtil.isNotBlank(o.getString("columnValue"))) {
|
||||||
|
hasSignName.add(o.getString("columnValue"));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
List<String> currentSignName = mobileColumnsValue.stream().map(o -> {
|
||||||
|
if (o.getString("columnCode").contains("NM") && StrUtil.isNotBlank(o.getString("columnValue"))) {
|
||||||
|
return o.getString("columnValue");
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}).filter(StrUtil::isNotBlank).collect(Collectors.toList());
|
||||||
|
|
||||||
|
boolean hasDuplicates = new HashSet<>(currentSignName).size() < currentSignName.size();
|
||||||
|
if(hasDuplicates) {
|
||||||
|
return Map.of(false, "孩子姓名不能重复");
|
||||||
|
}
|
||||||
|
for (String o : currentSignName) {
|
||||||
|
if(hasSignName.contains(o)) {
|
||||||
|
return Map.of(false, "不能报名,【" + o + "】已经在其他年级组报名了");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
long currentChild = mobileColumnsValue.stream().filter(o -> o.getString("columnCode").contains("NM") && StrUtil.isNotBlank(o.getString("columnValue"))).count();
|
||||||
|
count += currentChild;
|
||||||
|
}
|
||||||
|
if(count > 2) {
|
||||||
|
return Map.of(false, "江小娃系列活动只能上报2个孩子");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Map.of(true, "");
|
||||||
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@Ok("json:full")
|
@Ok("json:full")
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
|||||||
+9
-1
@@ -111,6 +111,14 @@ public class TrainSignUpActivityStatisticsController {
|
|||||||
return trainSignUpActivityStatisticsService.registerUserList(courseId);
|
return trainSignUpActivityStatisticsService.registerUserList(courseId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ViReturn
|
||||||
|
@Ok("json:full")
|
||||||
|
@RequiresPermissions("trainSingUp.statistics.activity")
|
||||||
|
public Object getTaleColumnInfo(@Param(value = "courseId") String courseId) {
|
||||||
|
return trainSignUpActivityStatisticsService.getTaleColumnInfo(courseId);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 培训班上课签到信息
|
* 培训班上课签到信息
|
||||||
*
|
*
|
||||||
@@ -194,7 +202,7 @@ public class TrainSignUpActivityStatisticsController {
|
|||||||
TrainSignUpCourse course = courseMap.get(k);
|
TrainSignUpCourse course = courseMap.get(k);
|
||||||
//查询课程类型
|
//查询课程类型
|
||||||
TrainSignUpType trainSignUpType = dao.fetch(TrainSignUpType.class, Cnd.where("id", "=", course.getCourseType()));
|
TrainSignUpType trainSignUpType = dao.fetch(TrainSignUpType.class, Cnd.where("id", "=", course.getCourseType()));
|
||||||
dao.fetchLinks(trainSignUpType, "^trainMobileSignColumnList$");
|
dao.fetchLinks(trainSignUpType, "^trainMobileSignColumnList$", Cnd.NEW().asc("columnIndex"));
|
||||||
|
|
||||||
ExcelExportService service = new ExcelExportService();
|
ExcelExportService service = new ExcelExportService();
|
||||||
ExportParams userExportParams = new ExportParams();
|
ExportParams userExportParams = new ExportParams();
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package io.v.nutz.zhgh.trainSignUp.models;
|
package io.v.nutz.zhgh.trainSignUp.models;
|
||||||
|
|
||||||
import cn.wizzer.framework.base.model.BaseModel;
|
import cn.wizzer.framework.base.model.BaseModel;
|
||||||
|
import io.v.nutz.sys.models.Sys_file;
|
||||||
import io.v.nutz.zhgh.data.model.MatchConditionStructure;
|
import io.v.nutz.zhgh.data.model.MatchConditionStructure;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
@@ -76,14 +77,14 @@ public class TrainSignUpActivity extends BaseModel implements Serializable {
|
|||||||
private Integer limitNum;
|
private Integer limitNum;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
@ColDefine(type = ColType.MYSQL_JSON)
|
||||||
@Comment("活动封面")
|
@Comment("活动封面")
|
||||||
private String cover;
|
private Sys_file cover;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
@ColDefine(type = ColType.MYSQL_JSON)
|
||||||
@Comment("微信群二维码")
|
@Comment("微信群二维码")
|
||||||
private String wechat;
|
private Sys_file wechat;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@ColDefine(type = ColType.BOOLEAN)
|
@ColDefine(type = ColType.BOOLEAN)
|
||||||
@@ -127,21 +128,4 @@ public class TrainSignUpActivity extends BaseModel implements Serializable {
|
|||||||
@Comment("活动类型")
|
@Comment("活动类型")
|
||||||
@Default("1")
|
@Default("1")
|
||||||
private Integer activityMode;
|
private Integer activityMode;
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.INT, width = 10)
|
|
||||||
@Comment("是否推送移动端(0.不推送,1.推送活动列表,2.推送大图)")
|
|
||||||
@Default("0")
|
|
||||||
private Integer pushHome;
|
|
||||||
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@Comment("任务id")
|
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
|
||||||
private String taskId;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@Comment("是否启用积分系统")
|
|
||||||
@ColDefine(type = ColType.BOOLEAN)
|
|
||||||
private Boolean isIntegral;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,12 @@ public class TrainSignUpType extends BaseModel implements Serializable {
|
|||||||
@ColDefine(type = ColType.BOOLEAN)
|
@ColDefine(type = ColType.BOOLEAN)
|
||||||
private Boolean isAddFamily;
|
private Boolean isAddFamily;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("本人纳入总人数")
|
||||||
|
@ColDefine(type = ColType.BOOLEAN)
|
||||||
|
@Default("1")
|
||||||
|
private Boolean selfAddFamily;
|
||||||
|
|
||||||
@Many(field = "typeId")
|
@Many(field = "typeId")
|
||||||
private List<TrainMobileSignColumn> trainMobileSignColumnList;
|
private List<TrainMobileSignColumn> trainMobileSignColumnList;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -33,6 +33,8 @@ public interface TrainSignUpActivityStatisticsService extends ViService<TrainSig
|
|||||||
*/
|
*/
|
||||||
List<NutMap> registerUserList(String courseId);
|
List<NutMap> registerUserList(String courseId);
|
||||||
|
|
||||||
|
List<NutMap> getTaleColumnInfo(String courseId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 该课程下的报名人员信息
|
* 该课程下的报名人员信息
|
||||||
*
|
*
|
||||||
|
|||||||
+32
-39
@@ -1,12 +1,10 @@
|
|||||||
package io.v.nutz.zhgh.trainSignUp.service.impl;
|
package io.v.nutz.zhgh.trainSignUp.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.wizzer.framework.page.Pagination;
|
import cn.wizzer.framework.page.Pagination;
|
||||||
import io.v.nutz.base.service.impl.ViServiceImpl;
|
|
||||||
import io.v.nutz.base.utils.MsgApi;
|
|
||||||
import io.v.nutz.base.utils.Vi;
|
|
||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
|
import io.v.nutz.base.service.impl.ViServiceImpl;
|
||||||
|
import io.v.nutz.base.utils.Vi;
|
||||||
import io.v.nutz.sys.models.Sys_user;
|
import io.v.nutz.sys.models.Sys_user;
|
||||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||||
import io.v.nutz.zhgh.data.constant.ConditionalOperational;
|
import io.v.nutz.zhgh.data.constant.ConditionalOperational;
|
||||||
@@ -57,9 +55,6 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
@Inject
|
@Inject
|
||||||
private MatchConditionStructureService matchConditionStructureService;
|
private MatchConditionStructureService matchConditionStructureService;
|
||||||
|
|
||||||
@Inject
|
|
||||||
private MsgApi msgApi;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
public void add(TrainSignUpActivity activity, TrainSignUpCourse course) {
|
public void add(TrainSignUpActivity activity, TrainSignUpCourse course) {
|
||||||
@@ -69,7 +64,6 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
activity.setConditionStructureId(null);
|
activity.setConditionStructureId(null);
|
||||||
activity.setConditionStructure(null);
|
activity.setConditionStructure(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
dao().insert(activity);
|
dao().insert(activity);
|
||||||
List<TrainSignUpCourse> courseList = activity.getCourseList();
|
List<TrainSignUpCourse> courseList = activity.getCourseList();
|
||||||
courseList.forEach(v -> {
|
courseList.forEach(v -> {
|
||||||
@@ -132,6 +126,7 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
//原来的上课时间
|
//原来的上课时间
|
||||||
List<TrainSignUpActivityCourse> oldActCourseTimeList = dao().query(TrainSignUpActivityCourse.class, Cnd.where("activityId", "=", activity.getId()));
|
List<TrainSignUpActivityCourse> oldActCourseTimeList = dao().query(TrainSignUpActivityCourse.class, Cnd.where("activityId", "=", activity.getId()));
|
||||||
|
|
||||||
|
|
||||||
update(activity);
|
update(activity);
|
||||||
|
|
||||||
List<TrainSignUpTypeLimit> typeLimits = activity.getTypeLimits();
|
List<TrainSignUpTypeLimit> typeLimits = activity.getTypeLimits();
|
||||||
@@ -154,7 +149,7 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
dao().insertOrUpdate(v);
|
dao().insertOrUpdate(v);
|
||||||
|
|
||||||
List<TrainSignUpActivityCourse> courseTimeList = v.getCourseTimeList();
|
List<TrainSignUpActivityCourse> courseTimeList = v.getCourseTimeList();
|
||||||
if (courseTimeList != null) {
|
if(courseTimeList != null) {
|
||||||
courseTimeList.forEach(x -> {
|
courseTimeList.forEach(x -> {
|
||||||
x.setActivityId(activity.getId());
|
x.setActivityId(activity.getId());
|
||||||
x.setCourseId(v.getId());
|
x.setCourseId(v.getId());
|
||||||
@@ -184,7 +179,7 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
//现在的上课时间
|
//现在的上课时间
|
||||||
List<String> nowCourseTimeListId = new ArrayList<>();
|
List<String> nowCourseTimeListId = new ArrayList<>();
|
||||||
activity.getCourseList().stream().forEach(v -> {
|
activity.getCourseList().stream().forEach(v -> {
|
||||||
if (v.getCourseTimeList() != null) {
|
if(v.getCourseTimeList() != null) {
|
||||||
nowCourseTimeListId.addAll(v.getCourseTimeList().stream().map(x -> x.getId()).collect(Collectors.toList()));
|
nowCourseTimeListId.addAll(v.getCourseTimeList().stream().map(x -> x.getId()).collect(Collectors.toList()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -251,18 +246,21 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
List<TrainSignUpCourse> courseList = activity.getCourseList();
|
List<TrainSignUpCourse> courseList = activity.getCourseList();
|
||||||
|
|
||||||
courseList.forEach(c -> {
|
courseList.forEach(c -> {
|
||||||
TrainSignUpType type = dao().fetch(TrainSignUpType.class, StrUtil.isNotBlank(c.getCourseType()) ? c.getCourseType() : "");
|
if(StrUtil.isNotBlank(c.getCourseType())) {
|
||||||
|
TrainSignUpType type = dao().fetch(TrainSignUpType.class, c.getCourseType());
|
||||||
dao().fetchLinks(c, "^(courseTimeList)$", Cnd.NEW().asc("courseStartTime"));
|
dao().fetchLinks(c, "^(courseTimeList)$", Cnd.NEW().asc("courseStartTime"));
|
||||||
//已报人数
|
//已报人数
|
||||||
AtomicInteger hasRegisterNum = new AtomicInteger();
|
AtomicInteger hasRegisterNum = new AtomicInteger();
|
||||||
List<TrainSignUpUser> signUpUsers = dao().query(TrainSignUpUser.class, Cnd.where("courseId", "=", c.getId()));
|
List<TrainSignUpUser> signUpUsers = dao().query(TrainSignUpUser.class, Cnd.where("courseId", "=", c.getId()));
|
||||||
signUpUsers.forEach(item -> {
|
signUpUsers.forEach(item -> {
|
||||||
|
if(type.getSelfAddFamily()) {
|
||||||
hasRegisterNum.getAndIncrement();
|
hasRegisterNum.getAndIncrement();
|
||||||
if (type.getIsBringFamily() && type.getIsAddFamily()) {
|
}
|
||||||
|
if(type.getIsBringFamily() && type.getIsAddFamily()) {
|
||||||
List<NutMap> mapList = item.getMobileColumnsValue();
|
List<NutMap> mapList = item.getMobileColumnsValue();
|
||||||
if (Lang.isNotEmpty(mapList)) {
|
if(Lang.isNotEmpty(mapList)) {
|
||||||
NutMap nutMap = mapList.stream().filter(o -> "xdqsrs".equals(o.getString("columnCode"))).findAny().orElse(null);
|
NutMap nutMap = mapList.stream().filter(o -> "xdqsrs".equals(o.getString("columnCode"))).findAny().orElse(null);
|
||||||
if (nutMap != null) {
|
if(nutMap != null) {
|
||||||
hasRegisterNum.addAndGet(nutMap.getInt("columnValue"));
|
hasRegisterNum.addAndGet(nutMap.getInt("columnValue"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -271,6 +269,7 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
c.setHasRegisterNum(hasRegisterNum.get());
|
c.setHasRegisterNum(hasRegisterNum.get());
|
||||||
//当前用户是否报过
|
//当前用户是否报过
|
||||||
c.setIsSign(isSignCourseByUser(c.getId(), (String) ShiroUtil.getPrincipalProperty("id")));
|
c.setIsSign(isSignCourseByUser(c.getId(), (String) ShiroUtil.getPrincipalProperty("id")));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
return Lang.obj2nutmap(activity);
|
return Lang.obj2nutmap(activity);
|
||||||
}
|
}
|
||||||
@@ -304,10 +303,10 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
// case 3 -> cnd.and(new Static(" ((activityEndTime > '%s' and activityStartTime < '%s') or (activitySignUpEndTime > '%s' and activitySignUpStartTime < '%s'))"
|
// case 3 -> cnd.and(new Static(" ((activityEndTime > '%s' and activityStartTime < '%s') or (activitySignUpEndTime > '%s' and activitySignUpStartTime < '%s'))"
|
||||||
// .formatted(dateTime, dateTime, dateTime, dateTime)));
|
// .formatted(dateTime, dateTime, dateTime, dateTime)));
|
||||||
}
|
}
|
||||||
if ("my".equals(type)) {
|
if("my".equals(type)) {
|
||||||
cnd.and(new Static("id in (select activityId from train_sign_up_user where userId = '%s')".formatted(ShiroUtil.getPrincipalProperty("id"))));
|
cnd.and(new Static("id in (select activityId from train_sign_up_user where userId = '%s')".formatted(ShiroUtil.getPrincipalProperty("id"))));
|
||||||
}
|
}
|
||||||
cnd.and("isDisabled", "=", 0);
|
cnd.and("isDisabled","=",0);
|
||||||
cnd.orderBy("activityEndTime", "desc");
|
cnd.orderBy("activityEndTime", "desc");
|
||||||
cnd.orderBy("isDisabled", "desc");
|
cnd.orderBy("isDisabled", "desc");
|
||||||
Pagination pagination = listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
|
Pagination pagination = listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
|
||||||
@@ -326,19 +325,17 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
@Override
|
@Override
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
public void doSignUp(TrainSignUpUser trainSignUpUser) throws Exception {
|
public void doSignUp(TrainSignUpUser trainSignUpUser) throws Exception {
|
||||||
|
String userId = (String) ShiroUtil.getPrincipalProperty("id");
|
||||||
|
|
||||||
//查询课程
|
//查询课程
|
||||||
TrainSignUpCourse course = dao().fetch(TrainSignUpCourse.class, trainSignUpUser.getCourseId());
|
TrainSignUpCourse course = dao().fetch(TrainSignUpCourse.class, trainSignUpUser.getCourseId());
|
||||||
//查询活动
|
|
||||||
TrainSignUpActivity activity = dao().fetch(TrainSignUpActivity.class, Cnd.where("id", "=", course.getActivityId()));
|
|
||||||
|
|
||||||
//如果这个课程的预留名额方式为报名人数不变
|
//如果这个课程的预留名额方式为报名人数不变
|
||||||
if (course.getReserveMode() == 2) {
|
if(course.getReserveMode() == 2) {
|
||||||
//如果当前报名+已报小于这个课程限制人数
|
//如果当前报名+已报小于这个课程限制人数
|
||||||
//课程已报人数
|
//课程已报人数
|
||||||
List<TrainSignUpUser> signUpUsers = dao().query(TrainSignUpUser.class, Cnd.where("courseId", "=", trainSignUpUser.getCourseId()));
|
List<TrainSignUpUser> signUpUsers = dao().query(TrainSignUpUser.class, Cnd.where("courseId", "=", trainSignUpUser.getCourseId()));
|
||||||
int hasRegisterNum = signUpUsers.size() + 1;//+1是算自己
|
int hasRegisterNum = signUpUsers.size() + 1;//+1是算自己
|
||||||
if (hasRegisterNum > course.getCoursePeopleNumber()) {
|
if(hasRegisterNum > course.getCoursePeopleNumber()) {
|
||||||
trainSignUpUser.setState(2);
|
trainSignUpUser.setState(2);
|
||||||
} else {
|
} else {
|
||||||
trainSignUpUser.setState(1);
|
trainSignUpUser.setState(1);
|
||||||
@@ -348,17 +345,12 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(StrUtil.isBlank(trainSignUpUser.getUserId())) {
|
if(StrUtil.isBlank(trainSignUpUser.getUserId())) {
|
||||||
trainSignUpUser.setUserId((String) ShiroUtil.getPrincipalProperty("id"));
|
trainSignUpUser.setUserId(userId);
|
||||||
}
|
}
|
||||||
trainSignUpUser.setSignUpTime(new Date());
|
trainSignUpUser.setSignUpTime(new Date());
|
||||||
|
|
||||||
dao().insert(trainSignUpUser);
|
dao().insert(trainSignUpUser);
|
||||||
asyncInsertUserCourse(trainSignUpUser.getActivityId(), trainSignUpUser.getCourseId(), trainSignUpUser.getUserId());
|
asyncInsertUserCourse(trainSignUpUser.getActivityId(), trainSignUpUser.getCourseId(), userId);
|
||||||
|
|
||||||
String username = ShiroUtil.getPlatformUsername();
|
|
||||||
String description = username + "老师您好,您已成功报名(" + activity.getActivityName() + course.getCourseName() +"),请您按时参加";
|
|
||||||
// msgApi.sendWxMsg("活动报名通知", "", "text", description, List.of(ShiroUtil.getPlatformLoginname()), null);
|
|
||||||
// msgApi.sendWxMsg("");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Async
|
@Async
|
||||||
@@ -419,18 +411,18 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
//已经报名人数,这是教职工的
|
//已经报名人数,这是教职工的
|
||||||
List<NutMap> signUpUsers = listMap(sql);
|
List<NutMap> signUpUsers = listMap(sql);
|
||||||
int hasRegisterNum = signUpUsers.size() + 1;//+1是算自己
|
int hasRegisterNum = signUpType.getSelfAddFamily() ? signUpUsers.size() + 1 : 0;//+1是算自己
|
||||||
//课程已报人数(携带的家属)
|
//课程已报人数(携带的家属)
|
||||||
int hasFamilyNum = 0;
|
int hasFamilyNum = 0;
|
||||||
//如果携带家属,并且纳入人数,则mdzz
|
//如果携带家属,并且纳入人数,则mdzz
|
||||||
if (signUpType.getIsAddFamily() && signUpType.getIsBringFamily()) {
|
if(signUpType.getIsAddFamily() && signUpType.getIsBringFamily()) {
|
||||||
//如果携带家属,已报人数=教职工+每个教职工携带的家属
|
//如果携带家属,已报人数=教职工+每个教职工携带的家属
|
||||||
AtomicInteger num = new AtomicInteger();
|
AtomicInteger num = new AtomicInteger();
|
||||||
signUpUsers.forEach(item -> {
|
signUpUsers.forEach(item -> {
|
||||||
List<NutMap> mapList = item.getAsList("", NutMap.class);
|
List<NutMap> mapList = item.getAsList("", NutMap.class);
|
||||||
if (Lang.isNotEmpty(mapList)) {
|
if(Lang.isNotEmpty(mapList)) {
|
||||||
NutMap nutMap = mapList.stream().filter(o -> "xdqsrs".equals(o.getString("columnCode"))).findAny().orElse(null);
|
NutMap nutMap = mapList.stream().filter(o -> "xdqsrs".equals(o.getString("columnCode"))).findAny().orElse(null);
|
||||||
if (nutMap != null) {
|
if(nutMap != null) {
|
||||||
num.addAndGet(nutMap.getInt("columnValue"));
|
num.addAndGet(nutMap.getInt("columnValue"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -451,17 +443,18 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
int coursePeopleNumber = course.getCoursePeopleNumber();
|
int coursePeopleNumber = course.getCoursePeopleNumber();
|
||||||
//课程已报人数
|
//课程已报人数
|
||||||
List<TrainSignUpUser> signUpUsers = dao().query(TrainSignUpUser.class, Cnd.where("courseId", "=", courseId));
|
List<TrainSignUpUser> signUpUsers = dao().query(TrainSignUpUser.class, Cnd.where("courseId", "=", courseId));
|
||||||
int hasRegisterNum = signUpUsers.size() + 1;//+1是算自己
|
//如果本人纳入总人数,则正常,但是如果不纳入,统计报名人数的时候就不算
|
||||||
|
int hasRegisterNum = type.getSelfAddFamily() ? signUpUsers.size() + 1 : 0;//+1是算自己
|
||||||
//课程已报人数(携带的家属)
|
//课程已报人数(携带的家属)
|
||||||
int hasFamilyNum = 0;
|
int hasFamilyNum = 0;
|
||||||
//如果这个类型携带家属并且计入总人数
|
//如果这个类型携带家属并且计入总人数
|
||||||
if (type.getIsBringFamily() && type.getIsAddFamily()) {
|
if(type.getIsBringFamily() && type.getIsAddFamily()) {
|
||||||
AtomicInteger num = new AtomicInteger();
|
AtomicInteger num = new AtomicInteger();
|
||||||
signUpUsers.forEach(item -> {
|
signUpUsers.forEach(item -> {
|
||||||
List<NutMap> mapList = item.getMobileColumnsValue();
|
List<NutMap> mapList = item.getMobileColumnsValue();
|
||||||
if (Lang.isNotEmpty(mapList)) {
|
if(Lang.isNotEmpty(mapList)) {
|
||||||
NutMap nutMap = mapList.stream().filter(o -> "xdqsrs".equals(o.getString("columnCode"))).findAny().orElse(null);
|
NutMap nutMap = mapList.stream().filter(o -> "xdqsrs".equals(o.getString("columnCode"))).findAny().orElse(null);
|
||||||
if (nutMap != null) {
|
if(nutMap != null) {
|
||||||
num.addAndGet(nutMap.getInt("columnValue"));
|
num.addAndGet(nutMap.getInt("columnValue"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -469,10 +462,10 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
hasFamilyNum = num.get() + (currentFamilyNumber != null ? currentFamilyNumber : 0);//currentFamilyNumber是当前报名时填的家属人数
|
hasFamilyNum = num.get() + (currentFamilyNumber != null ? currentFamilyNumber : 0);//currentFamilyNumber是当前报名时填的家属人数
|
||||||
}
|
}
|
||||||
//如果预留名额模式是报名人数减少
|
//如果预留名额模式是报名人数减少
|
||||||
if (course.getReserveMode() == 1) {
|
if(course.getReserveMode() == 1) {
|
||||||
//如果已报人数+预留人数+当前报名(自己)+家属 > 总人数
|
//如果已报人数+预留人数+当前报名(自己)+家属 > 总人数
|
||||||
return (hasRegisterNum + course.getCourseReservedNumber() + hasFamilyNum) > coursePeopleNumber;
|
return (hasRegisterNum + course.getCourseReservedNumber() + hasFamilyNum) > coursePeopleNumber;
|
||||||
} else {//如果预留名额模式是报名人数不变
|
}else {//如果预留名额模式是报名人数不变
|
||||||
//如果已报人数+当前报名(自己)+家属 > 总人数+预留人数
|
//如果已报人数+当前报名(自己)+家属 > 总人数+预留人数
|
||||||
return (hasRegisterNum + hasFamilyNum) > (coursePeopleNumber + course.getCourseReservedNumber());
|
return (hasRegisterNum + hasFamilyNum) > (coursePeopleNumber + course.getCourseReservedNumber());
|
||||||
}
|
}
|
||||||
@@ -506,7 +499,7 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl<TrainSignUpAct
|
|||||||
return true;
|
return true;
|
||||||
} else if (activity.getRestrictLimit() == 2) {
|
} else if (activity.getRestrictLimit() == 2) {
|
||||||
TrainSignUpTypeLimit trainSignUpTypeLimit = dao().fetch(TrainSignUpTypeLimit.class, Cnd.where("typeId", "=", courseType).and("activityId", "=", activityId));
|
TrainSignUpTypeLimit trainSignUpTypeLimit = dao().fetch(TrainSignUpTypeLimit.class, Cnd.where("typeId", "=", courseType).and("activityId", "=", activityId));
|
||||||
if (trainSignUpTypeLimit == null) {
|
if(trainSignUpTypeLimit == null) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//此类型的班最多可报几项
|
//此类型的班最多可报几项
|
||||||
|
|||||||
+63
-4
@@ -1,23 +1,31 @@
|
|||||||
package io.v.nutz.zhgh.trainSignUp.service.impl;
|
package io.v.nutz.zhgh.trainSignUp.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.wizzer.framework.page.Pagination;
|
import cn.wizzer.framework.page.Pagination;
|
||||||
import io.v.nutz.base.utils.Vi;
|
|
||||||
import io.v.nutz.base.dao.CndPlus;
|
import io.v.nutz.base.dao.CndPlus;
|
||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
import io.v.nutz.base.service.impl.ViServiceImpl;
|
import io.v.nutz.base.service.impl.ViServiceImpl;
|
||||||
|
import io.v.nutz.base.utils.Vi;
|
||||||
|
import io.v.nutz.zhgh.trainSignUp.models.TrainMobileSignColumn;
|
||||||
|
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpCourse;
|
||||||
|
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpType;
|
||||||
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpUser;
|
import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpUser;
|
||||||
import io.v.nutz.zhgh.trainSignUp.service.TrainSignUpActivityStatisticsService;
|
import io.v.nutz.zhgh.trainSignUp.service.TrainSignUpActivityStatisticsService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
import org.nutz.dao.Sqls;
|
import org.nutz.dao.Sqls;
|
||||||
import org.nutz.dao.sql.Sql;
|
import org.nutz.dao.sql.Sql;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
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.nutz.lang.util.NutMap;
|
||||||
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -42,6 +50,9 @@ public class TrainSignUpActivityStatisticsServiceImpl extends ViServiceImpl<Trai
|
|||||||
tsuc.coursePeopleNumber,
|
tsuc.coursePeopleNumber,
|
||||||
tsuc.courseReservedNumber,
|
tsuc.courseReservedNumber,
|
||||||
type.lxname as courseType,
|
type.lxname as courseType,
|
||||||
|
type.isBringFamily,
|
||||||
|
type.isAddFamily,
|
||||||
|
type.selfAddFamily,
|
||||||
tsuc.courseLocation,
|
tsuc.courseLocation,
|
||||||
tsuc.courseInstructor,
|
tsuc.courseInstructor,
|
||||||
tsuc.reserveMode,
|
tsuc.reserveMode,
|
||||||
@@ -56,7 +67,32 @@ public class TrainSignUpActivityStatisticsServiceImpl extends ViServiceImpl<Trai
|
|||||||
ORDER BY tsuc.orderNum
|
ORDER BY tsuc.orderNum
|
||||||
""");
|
""");
|
||||||
sql.setParam("activityId", activityId);
|
sql.setParam("activityId", activityId);
|
||||||
return list(pageForm, sql);
|
|
||||||
|
Pagination list = list(pageForm, sql);
|
||||||
|
List<NutMap> listMap = list.getList(NutMap.class);
|
||||||
|
|
||||||
|
//找活动报的人
|
||||||
|
List<TrainSignUpUser> upUsers = dao().query(TrainSignUpUser.class, Cnd.where("activityId", "=", activityId));
|
||||||
|
Map<String, List<TrainSignUpUser>> signUsers = upUsers.stream().collect(Collectors.groupingBy(TrainSignUpUser::getCourseId));
|
||||||
|
|
||||||
|
for (NutMap item : listMap) {
|
||||||
|
AtomicReference<Integer> familyCount = new AtomicReference<>(0);
|
||||||
|
List<TrainSignUpUser> users = signUsers.get(item.getString("id"));
|
||||||
|
if (Lang.isNotEmpty(users)) {
|
||||||
|
users.forEach(u -> {
|
||||||
|
List<NutMap> mobileColumnsValue = u.getMobileColumnsValue();
|
||||||
|
if (Lang.isNotEmpty(mobileColumnsValue)) {
|
||||||
|
NutMap nutMap = mobileColumnsValue.stream().filter(o -> "xdqsrs".equals(o.getString("columnCode"))).findFirst().orElse(null);
|
||||||
|
if (nutMap != null) {
|
||||||
|
familyCount.updateAndGet(v -> v + (StrUtil.isNotBlank(nutMap.getString("columnValue")) ? nutMap.getInt("columnValue") : 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
item.setv("familyCount", familyCount.get());
|
||||||
|
}
|
||||||
|
list.setList(listMap);
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -70,7 +106,8 @@ public class TrainSignUpActivityStatisticsServiceImpl extends ViServiceImpl<Trai
|
|||||||
u.sex,
|
u.sex,
|
||||||
u.mobile,
|
u.mobile,
|
||||||
tsuu.signUpTime,
|
tsuu.signUpTime,
|
||||||
tsuu.state
|
tsuu.state,
|
||||||
|
tsuu.mobileColumnsValue
|
||||||
FROM
|
FROM
|
||||||
train_sign_up_user tsuu
|
train_sign_up_user tsuu
|
||||||
LEFT JOIN `user` u ON u.id = tsuu.userId
|
LEFT JOIN `user` u ON u.id = tsuu.userId
|
||||||
@@ -80,7 +117,29 @@ public class TrainSignUpActivityStatisticsServiceImpl extends ViServiceImpl<Trai
|
|||||||
CndPlus cnd = new CndPlus();
|
CndPlus cnd = new CndPlus();
|
||||||
cnd.andEx("tsuu.courseId", "=", courseId);
|
cnd.andEx("tsuu.courseId", "=", courseId);
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
return listMap(sql);
|
List<NutMap> list = listMap(sql);
|
||||||
|
list.forEach(o -> {
|
||||||
|
if(StrUtil.isNotBlank(o.getString("mobileColumnsValue"))) {
|
||||||
|
List<NutMap> mobileColumnsValue = Json.fromJsonAsList(NutMap.class, o.getString("mobileColumnsValue"));
|
||||||
|
if(Lang.isNotEmpty(mobileColumnsValue)) {
|
||||||
|
mobileColumnsValue.forEach(m -> {
|
||||||
|
o.put(m.getString("columnCode"), m.getString("columnValue"));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<NutMap> getTaleColumnInfo(String courseId) {
|
||||||
|
TrainSignUpCourse course = dao().fetch(TrainSignUpCourse.class, courseId);
|
||||||
|
TrainSignUpType upType = dao().fetch(TrainSignUpType.class, course.getCourseType());
|
||||||
|
dao().fetchLinks(upType, "trainMobileSignColumnList", Cnd.NEW().asc("columnIndex"));
|
||||||
|
|
||||||
|
List<TrainMobileSignColumn> columnList = upType.getTrainMobileSignColumnList();
|
||||||
|
List<NutMap> columnTableList = columnList.stream().map(o -> NutMap.NEW().setv("label", o.getColumnName()).setv("prop", o.getColumnCode())).collect(Collectors.toList());
|
||||||
|
return columnTableList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -241,7 +241,7 @@ layout("/mobile/platform.html"){
|
|||||||
style="position: absolute; left: 77%; top: 58%;"
|
style="position: absolute; left: 77%; top: 58%;"
|
||||||
src="/assets/mobile/svg/train/sign_up.svg"></image>
|
src="/assets/mobile/svg/train/sign_up.svg"></image>
|
||||||
|
|
||||||
<div @click="trainClick(o)" v-if="activityStatus === '1'"
|
<div @click="trainClick(o)" v-if="activityStatus === '1' && o.isMobileSign"
|
||||||
style="text-align: center; line-height: 40px; width: 40px; height: 40px;display: inline-block; font-size: 14px;
|
style="text-align: center; line-height: 40px; width: 40px; height: 40px;display: inline-block; font-size: 14px;
|
||||||
position: absolute; right: -10px; top: 8%; background-color: #00c698; border-radius: 7px; color: white">
|
position: absolute; right: -10px; top: 8%; background-color: #00c698; border-radius: 7px; color: white">
|
||||||
签到
|
签到
|
||||||
@@ -528,7 +528,7 @@ layout("/mobile/platform.html"){
|
|||||||
cancel(o) {
|
cancel(o) {
|
||||||
vant.Dialog.confirm({
|
vant.Dialog.confirm({
|
||||||
title: '温馨提示',
|
title: '温馨提示',
|
||||||
message: "您确定要<span style='color: red'>取消【" + o.courseName + "】</span>吗?",
|
message: "您确定要<span style='color: red'>取消【" + o.courseName + "】</span>吗?\n一旦确认,可不能反悔了哟!",
|
||||||
confirmButtonColor: '#1867b0',
|
confirmButtonColor: '#1867b0',
|
||||||
}).then(async () => {
|
}).then(async () => {
|
||||||
const resp = await $.post('/platform/mobile/trainSignUpActivity/cancelSignUp', {
|
const resp = await $.post('/platform/mobile/trainSignUpActivity/cancelSignUp', {
|
||||||
@@ -611,7 +611,7 @@ layout("/mobile/platform.html"){
|
|||||||
|
|
||||||
vant.Dialog.confirm({
|
vant.Dialog.confirm({
|
||||||
title: '温馨提示',
|
title: '温馨提示',
|
||||||
message: '您选择了【' + this.choose.courseName + '】\n的报名,是否确认?',
|
message: '您选择了【' + this.choose.courseName + '】\n一旦确认,可不能反悔了哟',
|
||||||
confirmButtonColor: '#1867b0',
|
confirmButtonColor: '#1867b0',
|
||||||
}).then(async () => {
|
}).then(async () => {
|
||||||
const toast = vant.Toast.loading({
|
const toast = vant.Toast.loading({
|
||||||
@@ -632,7 +632,7 @@ layout("/mobile/platform.html"){
|
|||||||
const resp = await $.post('/platform/mobile/trainSignUpActivity/doSignUp', this.formData)
|
const resp = await $.post('/platform/mobile/trainSignUpActivity/doSignUp', this.formData)
|
||||||
vant.Toast(resp.msg)
|
vant.Toast(resp.msg)
|
||||||
if (resp.code === 0) {
|
if (resp.code === 0) {
|
||||||
this.pageData()
|
await this.pageData()
|
||||||
this.joinPopup = false
|
this.joinPopup = false
|
||||||
}
|
}
|
||||||
toast.clear()
|
toast.clear()
|
||||||
|
|||||||
@@ -110,9 +110,9 @@ layout("/mobile/platform.html"){
|
|||||||
</div>
|
</div>
|
||||||
<div @click="welfareClick(o)">
|
<div @click="welfareClick(o)">
|
||||||
<div>
|
<div>
|
||||||
<van-image :src="CREATE_PREVIEW_URL(o.cover)"
|
<van-image :src="CREATE_PREVIEW_URL(o.cover.id)"
|
||||||
style="display: contents"
|
style="display: contents"
|
||||||
v-if="o.cover"></van-image>
|
v-if="o.cover && o.cover.filepath"></van-image>
|
||||||
<van-image src=""
|
<van-image src=""
|
||||||
style="display: contents"
|
style="display: contents"
|
||||||
v-else></van-image>
|
v-else></van-image>
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ layout("/layouts/platform.html"){
|
|||||||
let map = null
|
let map = null
|
||||||
let marker = null
|
let marker = null
|
||||||
let geocoder = null
|
let geocoder = null
|
||||||
|
let E = window.wangEditor
|
||||||
const vue = new Vue({
|
const vue = new Vue({
|
||||||
el: '#app',
|
el: '#app',
|
||||||
components: {
|
components: {
|
||||||
@@ -53,7 +54,6 @@ layout("/layouts/platform.html"){
|
|||||||
fromEdit: '',
|
fromEdit: '',
|
||||||
formData: {
|
formData: {
|
||||||
notice: false,
|
notice: false,
|
||||||
isIntegral: false,
|
|
||||||
courseList: [
|
courseList: [
|
||||||
{courseName: '1', courseTimeList: [], isMobileSign: false, isReceiveGift: false, reserveMode: 1},
|
{courseName: '1', courseTimeList: [], isMobileSign: false, isReceiveGift: false, reserveMode: 1},
|
||||||
{courseName: '2', courseTimeList: [], isMobileSign: false, isReceiveGift: false, reserveMode: 1}
|
{courseName: '2', courseTimeList: [], isMobileSign: false, isReceiveGift: false, reserveMode: 1}
|
||||||
@@ -66,7 +66,6 @@ layout("/layouts/platform.html"){
|
|||||||
limitNum: 1,
|
limitNum: 1,
|
||||||
typeLimits: [],
|
typeLimits: [],
|
||||||
activityMode: 1,
|
activityMode: 1,
|
||||||
pushHome: 0,
|
|
||||||
},
|
},
|
||||||
pickerOptions: {
|
pickerOptions: {
|
||||||
disabledDate(time) {
|
disabledDate(time) {
|
||||||
@@ -232,7 +231,7 @@ layout("/layouts/platform.html"){
|
|||||||
this.unionLimitIndex = index
|
this.unionLimitIndex = index
|
||||||
this.setUpUnionLimitDialog = true
|
this.setUpUnionLimitDialog = true
|
||||||
if (!this.formData.courseList[this.unionLimitIndex].unionLimit || this.formData.courseList[this.unionLimitIndex].unionLimit.length === 0) {
|
if (!this.formData.courseList[this.unionLimitIndex].unionLimit || this.formData.courseList[this.unionLimitIndex].unionLimit.length === 0) {
|
||||||
const resp = await $.get('/platform/trainSingUp/manage/activity/add/getUnionLimit', {activityScopeId: this.formData.activityGroupId})
|
const resp = await $.get('/platform/trainSingUp/manage/activity/getUnionLimit', {activityScopeId: this.formData.activityGroupId})
|
||||||
if (resp.code === 0) {
|
if (resp.code === 0) {
|
||||||
this.$set(this.formData.courseList[this.unionLimitIndex], 'unionLimit', resp.data)
|
this.$set(this.formData.courseList[this.unionLimitIndex], 'unionLimit', resp.data)
|
||||||
}
|
}
|
||||||
@@ -396,7 +395,7 @@ layout("/layouts/platform.html"){
|
|||||||
const courseValid = this.formData.courseList.some((v, i) => {
|
const courseValid = this.formData.courseList.some((v, i) => {
|
||||||
const basicValid = v.courseName && v.coursePeopleNumber && v.campus
|
const basicValid = v.courseName && v.coursePeopleNumber && v.campus
|
||||||
&& v.courseLocation && v.courseInstructor && v.courseType
|
&& v.courseLocation && v.courseInstructor && v.courseType
|
||||||
const timeValid = v.courseTimeList.length > 0 && v.courseTimeList.every(x => {
|
const timeValid = v.courseTimeList && v.courseTimeList.length > 0 && v.courseTimeList.every(x => {
|
||||||
return x.courseStartTime && x.courseEndTime && (x.courseStartTime < x.courseEndTime)
|
return x.courseStartTime && x.courseEndTime && (x.courseStartTime < x.courseEndTime)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -436,13 +435,18 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
//cloneData.conditionStructure.conditions = cloneData.conditionStructure.conditions.filter(v => v.field && v.fieldObj && v.operational && v.value)
|
//cloneData.conditionStructure.conditions = cloneData.conditionStructure.conditions.filter(v => v.field && v.fieldObj && v.operational && v.value)
|
||||||
|
|
||||||
cloneData.activitySignUpStartTime = cloneData.activitySignTime !== undefined ? cloneData.activitySignTime[0] : null
|
if (cloneData.cover && cloneData.cover.length > 0) {
|
||||||
cloneData.activitySignUpEndTime = cloneData.activitySignTime !== undefined ? cloneData.activitySignTime[1] : null
|
cloneData.cover = cloneData.cover[0]
|
||||||
cloneData.activityStartTime = cloneData.activityTime !== undefined ? cloneData.activityTime[0] : null
|
|
||||||
cloneData.activityEndTime = cloneData.activityTime !== undefined ? cloneData.activityTime[1] : null
|
|
||||||
if(cloneData.activityStartTime !== undefined && cloneData.activityStartTime !== null) {
|
|
||||||
cloneData.year = new Date(cloneData.activityStartTime).getFullYear()
|
|
||||||
}
|
}
|
||||||
|
if (cloneData.wechat && cloneData.wechat.length > 0) {
|
||||||
|
cloneData.wechat = cloneData.wechat[0]
|
||||||
|
}
|
||||||
|
cloneData.activitySignUpStartTime = cloneData.activitySignTime[0]
|
||||||
|
cloneData.activitySignUpEndTime = cloneData.activitySignTime[1]
|
||||||
|
cloneData.activityStartTime = cloneData.activityTime[0]
|
||||||
|
cloneData.activityEndTime = cloneData.activityTime[1]
|
||||||
|
cloneData.year = new Date(cloneData.activityStartTime).getFullYear()
|
||||||
|
|
||||||
/*const limitNumArray = []
|
/*const limitNumArray = []
|
||||||
this.formData.typeLimits.forEach(item => {
|
this.formData.typeLimits.forEach(item => {
|
||||||
limitNumArray.push({
|
limitNumArray.push({
|
||||||
@@ -463,7 +467,7 @@ layout("/layouts/platform.html"){
|
|||||||
})
|
})
|
||||||
cloneData.typeLimits = limitNumArray
|
cloneData.typeLimits = limitNumArray
|
||||||
|
|
||||||
const resp = await $.post('/platform/trainSingUp/manage/activity/doHandle', {data: JSON.stringify(cloneData), flag: flag})
|
const resp = await $.post('/platform/trainSingUp/manage/activity/doHandle', {data: JSON.stringify(cloneData)})
|
||||||
if (resp.code === 0) {
|
if (resp.code === 0) {
|
||||||
this.$notify({
|
this.$notify({
|
||||||
title: '成功',
|
title: '成功',
|
||||||
@@ -481,9 +485,24 @@ layout("/layouts/platform.html"){
|
|||||||
if (id) {
|
if (id) {
|
||||||
const resp = await $.get('/platform/trainSingUp/manage/activity/findOne', {id})
|
const resp = await $.get('/platform/trainSingUp/manage/activity/findOne', {id})
|
||||||
if (resp.code === 0) {
|
if (resp.code === 0) {
|
||||||
|
if (resp.data.cover) {
|
||||||
|
resp.data.cover = [resp.data.cover]
|
||||||
|
}
|
||||||
|
if (resp.data.wechat) {
|
||||||
|
resp.data.wechat = [resp.data.wechat]
|
||||||
|
}
|
||||||
this.formData = resp.data
|
this.formData = resp.data
|
||||||
const type = this.trainTypeList.find(o => o.code === this.formData.trainType)
|
const type = this.trainTypeList.find(o => o.code === this.formData.trainType)
|
||||||
this.trainType = type ? type.name : '培训班'
|
this.trainType = type ? type.name : '培训班'
|
||||||
|
this.$nextTick(() => {
|
||||||
|
$("#introduce").html("")
|
||||||
|
var editor = new E("#introduce")
|
||||||
|
editor.config.onchange = (html) => {
|
||||||
|
this.formData.introduce = html.replace(/<p\><\/p>/g, '')
|
||||||
|
}
|
||||||
|
editor.create()
|
||||||
|
editor.txt.html(resp.data.introduce)
|
||||||
|
})
|
||||||
|
|
||||||
this.formData.courseList.forEach(item => {
|
this.formData.courseList.forEach(item => {
|
||||||
const type = this.courseTypeList.find(o => o.id === item.courseType)
|
const type = this.courseTypeList.find(o => o.id === item.courseType)
|
||||||
@@ -495,6 +514,15 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
$("#introduce").html("")
|
||||||
|
var editor = new E("#introduce")
|
||||||
|
editor.config.onchange = (html) => {
|
||||||
|
this.formData.introduce = html.replace(/<p\><\/p>/g, '')
|
||||||
|
}
|
||||||
|
editor.create()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async initCnd() {
|
async initCnd() {
|
||||||
@@ -564,7 +592,7 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
//获取培训班报名人数
|
//获取培训班报名人数
|
||||||
async getRegisterUserCount(courseId) {
|
async getRegisterUserCount(courseId) {
|
||||||
const resp = await $.post('/platform/trainSingUp/manage/activity/add/getRegisterUserCount', {courseId})
|
const resp = await $.post('/platform/trainSingUp/manage/activity/getRegisterUserCount', {courseId})
|
||||||
return resp.code === 0 ? resp.data : 0
|
return resp.code === 0 ? resp.data : 0
|
||||||
},
|
},
|
||||||
setSignUpCondition() {
|
setSignUpCondition() {
|
||||||
@@ -656,16 +684,16 @@ layout("/layouts/platform.html"){
|
|||||||
this.trainType = type ? type.name : ''
|
this.trainType = type ? type.name : ''
|
||||||
},
|
},
|
||||||
async getHistoricalActList() {
|
async getHistoricalActList() {
|
||||||
const resp = await $.post('/platform/trainSingUp/manage/activity/add/getHistoricalActList', {})
|
const resp = await $.post('/platform/trainSingUp/manage/activity/getHistoricalActList', {})
|
||||||
return resp.data
|
return resp.data
|
||||||
},
|
},
|
||||||
async historicalActChange(val) {
|
async historicalActChange(val) {
|
||||||
const resp = await $.get('/platform/trainSingUp/manage/activity/findOne', {id: val})
|
const resp = await $.get('/platform/trainSingUp/manage/activity/findOne', {id: val})
|
||||||
if (resp.code === 0) {
|
if (resp.code === 0) {
|
||||||
// resp.data.cover = [resp.data.cover]
|
resp.data.cover = [resp.data.cover]
|
||||||
// if (resp.data.wechat) {
|
if (resp.data.wechat) {
|
||||||
// resp.data.wechat = [resp.data.wechat]
|
resp.data.wechat = [resp.data.wechat]
|
||||||
// }
|
}
|
||||||
this.formData = resp.data
|
this.formData = resp.data
|
||||||
const type = this.trainTypeList.find(o => o.code === this.formData.trainType)
|
const type = this.trainTypeList.find(o => o.code === this.formData.trainType)
|
||||||
this.trainType = type ? type.name : '培训班'
|
this.trainType = type ? type.name : '培训班'
|
||||||
@@ -708,15 +736,9 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
conditionStructure(val) {
|
conditionStructure(val) {
|
||||||
|
console.log(val)
|
||||||
this.formData.courseList[this.userScopeIndex].conditionStructure = val
|
this.formData.courseList[this.userScopeIndex].conditionStructure = val
|
||||||
},
|
},
|
||||||
'formData.activityGroupId': {
|
|
||||||
async handler(newVal, oldVal) {
|
|
||||||
this.activityGroupList = await getActivityGroup()
|
|
||||||
this.userScopeDialog = false
|
|
||||||
},
|
|
||||||
deep: true
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -188,15 +188,12 @@ layout("/layouts/platform.html"){
|
|||||||
<div slot="header" class="clearfix"
|
<div slot="header" class="clearfix"
|
||||||
style="font-size: 16px;padding: 5px 0"
|
style="font-size: 16px;padding: 5px 0"
|
||||||
@click="openApply(item)">
|
@click="openApply(item)">
|
||||||
<el-tooltip class="item" effect="dark" :content="item.NAME"
|
<div style="width: 88%; white-space: nowrap; overflow: hidden; display: inline-block; text-overflow: ellipsis">
|
||||||
placement="top-start">
|
{{item.activityName}}
|
||||||
|
</div>
|
||||||
<span v-if="item.activityName.length<=10">{{item.activityName}}</span>
|
|
||||||
<span v-else>{{item.activityName.substr(0,10)}}...</span>
|
|
||||||
</el-tooltip>
|
|
||||||
<el-button @click="openApply(item)" class="reserve_btn"
|
<el-button @click="openApply(item)" class="reserve_btn"
|
||||||
type="text">
|
type="text">
|
||||||
请选择活动报名
|
报名
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div @click="openApply(item)">
|
<div @click="openApply(item)">
|
||||||
@@ -226,14 +223,13 @@ layout("/layouts/platform.html"){
|
|||||||
</div>
|
</div>
|
||||||
<div class="text e-item">
|
<div class="text e-item">
|
||||||
<span style="color: gray">报名时间:</span>
|
<span style="color: gray">报名时间:</span>
|
||||||
{{moment(item.activitySignUpStartTime)
|
{{moment(item.activitySignUpStartTime).format('YYYY/MM/DD HH:mm')}} 至
|
||||||
.format('MM/DD HH:mm')}} 至
|
{{moment(item.activitySignUpEndTime).format('YYYY/MM/DD HH:mm')}}
|
||||||
{{moment(item.activitySignUpEndTime).format('MM/DD HH:mm')}}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="text item">
|
<div class="text item">
|
||||||
<span style="color: gray">活动时间:</span>
|
<span style="color: gray">活动时间:</span>
|
||||||
{{moment(item.activityStartTime).format('MM/DD HH:mm')}} 至
|
{{moment(item.activityStartTime).format('YYYY/MM/DD HH:mm')}} 至
|
||||||
{{moment(item.activityEndTime).format('MM/DD HH:mm')}}
|
{{moment(item.activityEndTime).format('YYYY/MM/DD HH:mm')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -241,7 +237,7 @@ layout("/layouts/platform.html"){
|
|||||||
</el-row>
|
</el-row>
|
||||||
</el-carousel-item>
|
</el-carousel-item>
|
||||||
</el-carousel>
|
</el-carousel>
|
||||||
<el-empty v-else description="暂无数据"></el-empty>
|
<el-empty description="暂无数据" v-else></el-empty>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-card shadow="never" class="mt10">
|
<el-card shadow="never" class="mt10">
|
||||||
@@ -250,7 +246,7 @@ layout("/layouts/platform.html"){
|
|||||||
<template #label_end>
|
<template #label_end>
|
||||||
<div class="search-item-option">
|
<div class="search-item-option">
|
||||||
<el-select v-model="pageForm.courseTypeId"
|
<el-select v-model="pageForm.courseTypeId"
|
||||||
:placeholder="'请选择' + trainType + '类型'"
|
:placeholder="'请选择' + trainType"
|
||||||
filterable clearable
|
filterable clearable
|
||||||
style="width: 100%;margin-bottom: 5px;margin-left: 10px"
|
style="width: 100%;margin-bottom: 5px;margin-left: 10px"
|
||||||
@change="doSearch">
|
@change="doSearch">
|
||||||
@@ -371,6 +367,7 @@ layout("/layouts/platform.html"){
|
|||||||
<!--选择框-->
|
<!--选择框-->
|
||||||
<template v-else-if="['SELECT'].includes(column.columnFormType) && ['VARCHAR','TEXT','INT'].includes(column.columnType)">
|
<template v-else-if="['SELECT'].includes(column.columnFormType) && ['VARCHAR','TEXT','INT'].includes(column.columnType)">
|
||||||
<el-select v-model="column.columnValue"
|
<el-select v-model="column.columnValue"
|
||||||
|
clearable
|
||||||
:placeholder="'请选择' + column.columnName"
|
:placeholder="'请选择' + column.columnName"
|
||||||
style="width: 100%">
|
style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -422,12 +419,12 @@ layout("/layouts/platform.html"){
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="开始时间" prop="courseStartTime">
|
<el-table-column label="开始时间" prop="courseStartTime">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
{{moment(row.courseStartTime).format('HH:MM')}}
|
{{moment(row.courseStartTime).format('HH:mm')}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="结束时间" prop="courseEndTime">
|
<el-table-column label="结束时间" prop="courseEndTime">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
{{moment(row.courseEndTime).format('HH:MM')}}
|
{{moment(row.courseEndTime).format('HH:mm')}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -559,7 +556,7 @@ layout("/layouts/platform.html"){
|
|||||||
const data = this.trainSignUpActivity
|
const data = this.trainSignUpActivity
|
||||||
const now = moment().valueOf()
|
const now = moment().valueOf()
|
||||||
if (now < moment(data.activitySignUpStartTime).valueOf() || now > moment(data.activitySignUpEndTime).valueOf()) {
|
if (now < moment(data.activitySignUpStartTime).valueOf() || now > moment(data.activitySignUpEndTime).valueOf()) {
|
||||||
this.$message.warning('此活动不在报名时间内')
|
this.$message.warning('报名已结束,请致电校工会咨询,联系电话:85913629')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const scopeUser = await getScopeUser(data.activityGroupId);
|
const scopeUser = await getScopeUser(data.activityGroupId);
|
||||||
|
|||||||
@@ -3,16 +3,15 @@
|
|||||||
<el-row :gutter="20" type="flex" v-if="fromEdit !== 'edit'">
|
<el-row :gutter="20" type="flex" v-if="fromEdit !== 'edit'">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="是否沿用之前活动" prop="use">
|
<el-form-item label="是否沿用之前活动" prop="use">
|
||||||
<el-radio-group v-model="use" size="medium">
|
<el-radio-group v-model="use">
|
||||||
<el-radio-button :label="true" border>沿用之前活动</el-radio-button>
|
<el-radio :label="true">沿用之前活动</el-radio>
|
||||||
<el-radio-button :label="false" border>不沿用之前活动</el-radio-button>
|
<el-radio :label="false">不沿用之前活动</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12" v-if="use">
|
||||||
<el-form-item label="往期活动" prop="historicalAct">
|
<el-form-item label="往期活动" prop="historicalAct">
|
||||||
<el-select v-model="historicalAct" placeholder="请选择往期活动"
|
<el-select v-model="historicalAct" placeholder="请选择往期活动"
|
||||||
:disabled="!use"
|
|
||||||
style="width: 100%" @change="historicalActChange">
|
style="width: 100%" @change="historicalActChange">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in historicalActList"
|
v-for="item in historicalActList"
|
||||||
@@ -31,7 +30,7 @@
|
|||||||
<el-input maxlength="50" v-model="formData.activityName"></el-input>
|
<el-input maxlength="50" v-model="formData.activityName"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="6">
|
||||||
<el-form-item :label="trainType + '通知'" prop="notice">
|
<el-form-item :label="trainType + '通知'" prop="notice">
|
||||||
<el-radio-group v-model="formData.notice" size="medium">
|
<el-radio-group v-model="formData.notice" size="medium">
|
||||||
<el-radio-button :label="true" border>通知</el-radio-button>
|
<el-radio-button :label="true" border>通知</el-radio-button>
|
||||||
@@ -39,42 +38,15 @@
|
|||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!--<el-col :span="12">
|
<el-col :span="6">
|
||||||
<el-form-item label="是否启用积分系统" prop="isIntegral">
|
|
||||||
<el-radio-group size="medium" v-model="formData.isIntegral">
|
|
||||||
<el-radio-button :label="false">不启用</el-radio-button>
|
|
||||||
<el-radio-button :label="true">启用</el-radio-button>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>-->
|
|
||||||
</el-row>
|
|
||||||
<!--<el-row :gutter="20" type="flex">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="是否推送移动端" prop="pushHome">
|
|
||||||
<el-radio-group v-model="formData.pushHome" size="medium">
|
|
||||||
<el-radio-button :label="0">不推送</el-radio-button>
|
|
||||||
<el-radio-button :label="1">推送列表</el-radio-button>
|
|
||||||
<el-radio-button :label="2">推送大图</el-radio-button>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<!–<el-col :span="12">
|
|
||||||
<el-form-item :label="trainType + '通知'" prop="notice">
|
|
||||||
<el-radio-group v-model="formData.notice" size="medium">
|
|
||||||
<el-radio-button :label="true" border>通知</el-radio-button>
|
|
||||||
<el-radio-button :label="false" border>不通知</el-radio-button>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>–>
|
|
||||||
<!–<el-col :span="6">
|
|
||||||
<el-form-item label="活动类型" prop="activityMode">
|
<el-form-item label="活动类型" prop="activityMode">
|
||||||
<el-radio-group v-model="formData.activityMode" size="medium">
|
<el-radio-group v-model="formData.activityMode" size="medium">
|
||||||
<el-radio-button :label="1" border>校工会</el-radio-button>
|
<el-radio-button :label="1" border>校工会</el-radio-button>
|
||||||
<el-radio-button :label="2" border>分工会</el-radio-button>
|
<el-radio-button :label="2" border>分工会</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>–>
|
</el-col>
|
||||||
</el-row>-->
|
</el-row>
|
||||||
<el-row :gutter="20" type="flex">
|
<el-row :gutter="20" type="flex">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item :rules="{required:true,message: '请选择起止时间', trigger: 'blur'}" label="活动时间"
|
<el-form-item :rules="{required:true,message: '请选择起止时间', trigger: 'blur'}" label="活动时间"
|
||||||
@@ -139,29 +111,34 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-form-item :rules="{required:true,message: '请输入活动介绍', trigger: 'blur'}" label="活动介绍" prop="introduce">
|
<el-form-item :rules="{required:true,message: '请输入活动介绍', trigger: 'blur'}" label="活动介绍" prop="introduce">
|
||||||
<text-editor v-model="formData.introduce" ></text-editor>
|
<!--<el-input
|
||||||
|
:autosize="{ minRows: 5, maxRows: 10}"
|
||||||
|
placeholder="请输入活动介绍"
|
||||||
|
type="textarea"
|
||||||
|
v-model="formData.introduce">
|
||||||
|
</el-input>-->
|
||||||
|
<!--<div id="introduce"></div>-->
|
||||||
|
<text-editor v-model="formData.introduce"></text-editor>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-row :gutter="20" type="flex">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="封面图片" prop="cover" :rules="{required:true,message: '请上传活动移动端封面图片', trigger: 'blur'}">
|
<el-form-item label="封面图片" prop="cover" :rules="{required:true,message: '请上传活动移动端封面图片', trigger: 'blur'}">
|
||||||
<image-Upload ref="coverFileUpload" :height="70"
|
<el-col :span="12">
|
||||||
:width="140" :limit="1"
|
<file-upload ref="coverFileUpload" :files.sync="formData.cover" :max="1" :type="['jpg','jpeg','png','JPG','JPEG','PNG']">
|
||||||
:file-type="['jpg','jpeg','png','JPG','JPEG','PNG']"
|
<template #el-upload__tip>
|
||||||
:file-size="10"
|
<div class="el-upload__tip" slot="tip">请上传一张jpg/png/jpeg等格式,且不大于2M的照片</div>
|
||||||
v-model="formData.cover"></image-Upload>
|
</template>
|
||||||
</el-form-item>
|
</file-upload>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="微信群二维码" prop="wechat">
|
<el-form-item label="微信群二维码" prop="wechat">
|
||||||
<image-Upload :height="70"
|
<file-upload :files.sync="formData.wechat" :max="1" :type="['jpg','jpeg','png','JPG','JPEG','PNG']">
|
||||||
:width="140" :limit="1"
|
<template #el-upload__tip>
|
||||||
:file-type="['jpg','jpeg','png','JPG','JPEG','PNG']"
|
<div slot="tip" class="el-upload__tip">请上传一张jpg/png/jpeg等格式,且不大于2M的照片</div>
|
||||||
:file-size="10"
|
</template>
|
||||||
v-model="formData.wechat"></image-Upload>
|
</file-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-form-item>
|
||||||
|
|
||||||
<vi-title2 :title="trainType + '信息'">
|
<vi-title2 :title="trainType + '信息'">
|
||||||
<template #func>
|
<template #func>
|
||||||
|
|||||||
@@ -94,6 +94,12 @@ layout("/layouts/platform.html"){
|
|||||||
<el-radio :label="false" border>不纳入</el-radio>
|
<el-radio :label="false" border>不纳入</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item v-if="formData.isBringFamily === true" prop="selfAddFamily" label="本人纳入总人数">
|
||||||
|
<el-radio-group v-model="formData.selfAddFamily">
|
||||||
|
<el-radio :label="true" border>纳入</el-radio>
|
||||||
|
<el-radio :label="false" border>不纳入</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<vi-title2 title="报名填写字段">
|
<vi-title2 title="报名填写字段">
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ layout("/layouts/platform.html"){
|
|||||||
<table-tool :app="this" label="人员调整">
|
<table-tool :app="this" label="人员调整">
|
||||||
<template #func>
|
<template #func>
|
||||||
<el-button type="primary" @click="openImport(null)" size="small">
|
<el-button type="primary" @click="openImport(null)" size="small">
|
||||||
批量导入
|
批量调整
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</table-tool>
|
</table-tool>
|
||||||
@@ -89,6 +89,15 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column label="已报名人数" prop="registerNum" sortable align="center" header-align="center"
|
<el-table-column label="已报名人数" prop="registerNum" sortable align="center" header-align="center"
|
||||||
show-overflow-tooltip>
|
show-overflow-tooltip>
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
|
<template v-if="row.isAddFamily && row.isBringFamily">
|
||||||
|
<el-link v-if="row.selfAddFamily" @click="openView(row)" type="primary">
|
||||||
|
{{row.registerNum + '家属(' + row.familyCount + ')'}}
|
||||||
|
</el-link>
|
||||||
|
<el-link v-else @click="openView(row)" type="primary">
|
||||||
|
{{row.familyCount}}
|
||||||
|
</el-link>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
<el-link v-if="row.reserveMode === 1" @click="openView(row)" type="primary">
|
<el-link v-if="row.reserveMode === 1" @click="openView(row)" type="primary">
|
||||||
{{row.registerNum + row.courseReservedNumber}}
|
{{row.registerNum + row.courseReservedNumber}}
|
||||||
</el-link>
|
</el-link>
|
||||||
@@ -96,6 +105,7 @@ layout("/layouts/platform.html"){
|
|||||||
{{row.registerNum}}
|
{{row.registerNum}}
|
||||||
</el-link>
|
</el-link>
|
||||||
</template>
|
</template>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="操作" width="150px">
|
<el-table-column label="操作" width="150px">
|
||||||
@@ -121,7 +131,7 @@ layout("/layouts/platform.html"){
|
|||||||
</el-input>
|
</el-input>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group tool-button mt5">
|
<div class="btn-group tool-button mt5">
|
||||||
<el-select v-model="registerForm.unionId" clearable filterable placeholder="请选择院级工会"
|
<el-select v-model="registerForm.unionId" clearable filterable placeholder="请选择分工会"
|
||||||
@change="getUnitList()">
|
@change="getUnitList()">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in unionList"
|
v-for="item in unionList"
|
||||||
@@ -332,8 +342,7 @@ layout("/layouts/platform.html"){
|
|||||||
const f = this.tempFileList[0]
|
const f = this.tempFileList[0]
|
||||||
formData.append("file", f.raw, f.raw.name)
|
formData.append("file", f.raw, f.raw.name)
|
||||||
formData.append("activityId", this.pageForm.activityId)
|
formData.append("activityId", this.pageForm.activityId)
|
||||||
formData.append("importCourseId", this.importRow ? this.importRow.id : '')
|
formData.append("importCourseId", this.importRow.id)
|
||||||
formData.append("isSingle", this.isSingle)
|
|
||||||
const loading = this.$loading({
|
const loading = this.$loading({
|
||||||
lock: true,
|
lock: true,
|
||||||
text: '数据提交中...',
|
text: '数据提交中...',
|
||||||
|
|||||||
@@ -81,6 +81,15 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column label="已报名人数" prop="registerNum" sortable align="center" header-align="center"
|
<el-table-column label="已报名人数" prop="registerNum" sortable align="center" header-align="center"
|
||||||
show-overflow-tooltip>
|
show-overflow-tooltip>
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
|
<template v-if="row.isAddFamily && row.isBringFamily">
|
||||||
|
<el-link v-if="row.selfAddFamily" @click="openView(row)" type="primary">
|
||||||
|
{{row.registerNum + '家属(' + row.familyCount + ')'}}
|
||||||
|
</el-link>
|
||||||
|
<el-link v-else @click="openView(row)" type="primary">
|
||||||
|
{{row.familyCount}}
|
||||||
|
</el-link>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
<el-link v-if="row.reserveMode === 1" @click="openView(row)" type="primary">
|
<el-link v-if="row.reserveMode === 1" @click="openView(row)" type="primary">
|
||||||
{{row.registerNum + row.courseReservedNumber}}
|
{{row.registerNum + row.courseReservedNumber}}
|
||||||
</el-link>
|
</el-link>
|
||||||
@@ -88,6 +97,7 @@ layout("/layouts/platform.html"){
|
|||||||
{{row.registerNum}}
|
{{row.registerNum}}
|
||||||
</el-link>
|
</el-link>
|
||||||
</template>
|
</template>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="150px">
|
<el-table-column label="操作" width="150px">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
@@ -110,6 +120,7 @@ layout("/layouts/platform.html"){
|
|||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
columnTable: [],
|
||||||
activityList: [],
|
activityList: [],
|
||||||
pageForm: {
|
pageForm: {
|
||||||
year: new Date().getFullYear().toString(),
|
year: new Date().getFullYear().toString(),
|
||||||
@@ -134,6 +145,15 @@ layout("/layouts/platform.html"){
|
|||||||
{label: '报名时间', prop: 'signUpTime'},
|
{label: '报名时间', prop: 'signUpTime'},
|
||||||
{label: '报名状态', prop: 'state'},
|
{label: '报名状态', prop: 'state'},
|
||||||
],
|
],
|
||||||
|
cloneTableColumns: [
|
||||||
|
{label: '姓名', prop: 'username'},
|
||||||
|
{label: '工号', prop: 'loginname'},
|
||||||
|
{label: '单位', prop: 'unitname'},
|
||||||
|
{label: '分工会', prop: 'unionname'},
|
||||||
|
{label: '联系方式', prop: 'mobile'},
|
||||||
|
{label: '报名时间', prop: 'signUpTime'},
|
||||||
|
{label: '报名状态', prop: 'state'},
|
||||||
|
],
|
||||||
userSignInfo: {},
|
userSignInfo: {},
|
||||||
trainType: '培训班',
|
trainType: '培训班',
|
||||||
trainTypeList: [],
|
trainTypeList: [],
|
||||||
@@ -173,6 +193,11 @@ layout("/layouts/platform.html"){
|
|||||||
this.registerUserTableData = resp_register.data
|
this.registerUserTableData = resp_register.data
|
||||||
const resp_signInfo = await $.get(loc() + '/getSignInfo', {courseId: row.id})
|
const resp_signInfo = await $.get(loc() + '/getSignInfo', {courseId: row.id})
|
||||||
this.userSignInfo = resp_signInfo.data
|
this.userSignInfo = resp_signInfo.data
|
||||||
|
const resp_columnInfo = await $.get(loc() + '/getTaleColumnInfo', {courseId: row.id})
|
||||||
|
if(resp_columnInfo.data) {
|
||||||
|
this.registerUserTableColumns = []
|
||||||
|
this.registerUserTableColumns = this.cloneTableColumns.concat(resp_columnInfo.data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
|
|||||||
Reference in New Issue
Block a user