diff --git a/src/main/java/io/v/nutz/zhgh/activity/controller/school/ActivityApplyController.java b/src/main/java/io/v/nutz/zhgh/activity/controller/school/ActivityApplyController.java index 9131e27..1d8a4fb 100644 --- a/src/main/java/io/v/nutz/zhgh/activity/controller/school/ActivityApplyController.java +++ b/src/main/java/io/v/nutz/zhgh/activity/controller/school/ActivityApplyController.java @@ -1,17 +1,24 @@ package io.v.nutz.zhgh.activity.controller.school; +import cn.afterturn.easypoi.entity.ImageEntity; import cn.wizzer.framework.base.Result; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.data.PictureRenderData; +import com.deepoove.poi.policy.HackLoopTableRenderPolicy; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.SimpleService; import io.v.nutz.base.service.ViService; import io.v.nutz.base.utils.DateUtil; +import io.v.nutz.base.utils.OfficeTemplateUtil; import io.v.nutz.base.utils.Vi; import io.v.nutz.sys.models.Sys_file; import io.v.nutz.sys.models.Sys_unit; import io.v.nutz.sys.models.Sys_user; import io.v.nutz.sys.services.SysUserService; +import io.v.nutz.web.commons.base.Globals; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.activity.models.*; import io.v.nutz.zhgh.activity.services.ActivitySchoolApplyService; @@ -19,7 +26,9 @@ import io.v.nutz.zhgh.activity.services.ActivitySchoolService; import io.v.nutz.zhgh.activity.services.ActivitySchoolTeamService; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.ddr.poi.html.HtmlRenderPolicy; import org.nutz.aop.interceptor.async.Async; +import org.nutz.boot.starter.ftp.FtpService; import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; @@ -37,6 +46,13 @@ import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; +import javax.imageio.ImageIO; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.stream.Collectors; @@ -70,6 +86,13 @@ public class ActivityApplyController { @Inject("ActivitySchoolEvent") private ViService activitySchoolEventViService; + + @Inject + private OfficeTemplateUtil officeTemplateUtil; + @Inject + private FtpService ftpService; + + @At("") @Ok("beetl:platform/activity/school/ActivityApply.html") @RequiresPermissions("activity.apply") @@ -132,11 +155,8 @@ public class ActivityApplyController { school.personType, school.activityLevel, school.applyType, - school.athleteQualification, - school.registrationMethod, - school.competitionMethod, - school.rewardMethod, - school.precautions, + school.isSign, + school.eventNotification, au.files promiseBookFiles, (SELECT count( 1 ) FROM activity_school_apply app WHERE app.activityId = school.id AND app.`status` = 2 ) apply_num, (SELECT count( 1 ) FROM activity_school_apply app WHERE app.activityId = school.id AND ( app.applyUser = @userid OR app.userId = @userid )) > 0 applyed, @@ -824,14 +844,15 @@ public class ActivityApplyController { asa.sex, asa.identity, asa.`status`, + asa.applyUserSign, us.username applyUserName FROM `activity_school_apply` asa LEFT JOIN sys_user us ON asa.applyUser = us.id WHERE asa.activityId=@activityId and asa.eventId=@eventId and asa.activityUnionId=@activityUnionId ORDER BY asa.applyUser - """).setParam("activityId",activityId).setParam("eventId", eventId).setParam("activityUnionId", getUnionId()); - return activitySchoolApplyService.listMap(sql); + """).setParam("activityId", activityId).setParam("eventId", eventId).setParam("activityUnionId", getUnionId()); + return activitySchoolApplyService.listMap(sql); } @@ -867,5 +888,43 @@ public class ActivityApplyController { return null; } + @At + @Ok(("void")) + @RequiresPermissions("activity.apply") + public void doExport(String activityId, HttpServletResponse response) { + try { + ActivitySchool school = simpleService.dao().fetch(ActivitySchool.class, activityId); + List schoolApplyList = simpleService.dao().query(ActivitySchoolApply.class, + Cnd.where("activityId", "=", activityId) + .and("status", "=", 2) + .and("applyUserSign", "is not", null)); + + List signList = new ArrayList<>(); + for (int i = 0; i < schoolApplyList.size(); i++) { + ActivitySchoolApply apply = schoolApplyList.get(i); + ByteArrayOutputStream signOs = new ByteArrayOutputStream(); + ftpService.download(apply.getApplyUserSign(), signOs); + ByteArrayInputStream bais = new ByteArrayInputStream(signOs.toByteArray()); + BufferedImage bufferImg = ImageIO.read(bais); + + /*byte[] bytes = Base64.getDecoder().decode(bufferImg.toByteArray()); + signList.add(NutMap.NEW().addv("sign", new PictureRenderData(70, 30, ".png", bytes)));*/ + } + + HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy(); + Configure config = Configure.newBuilder().bind("signList", policy).build(); + HashMap map = new HashMap<>(); + map.put("activityName", school.getName()); + map.put("signList", signList); + response.addHeader("Content-Type", "application/octet-stream"); + response.addHeader("Content-Disposition", "attachment; filename=\"" + new String((school.getName() + "自愿参赛责任及风险告知书").getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx"); + ServletOutputStream outputStream = response.getOutputStream(); + XWPFTemplate.compile(officeTemplateUtil.getPath("activity_fxtzs"), config).render(map).writeAndClose(outputStream); + } catch (Exception e) { + e.printStackTrace(); + } + + + } } diff --git a/src/main/java/io/v/nutz/zhgh/activity/models/ActivityMobileSignUpParam.java b/src/main/java/io/v/nutz/zhgh/activity/models/ActivityMobileSignUpParam.java index 657a43e..42b3041 100644 --- a/src/main/java/io/v/nutz/zhgh/activity/models/ActivityMobileSignUpParam.java +++ b/src/main/java/io/v/nutz/zhgh/activity/models/ActivityMobileSignUpParam.java @@ -17,4 +17,6 @@ public class ActivityMobileSignUpParam { private List userIds; + private String applyUserSign; + } diff --git a/src/main/java/io/v/nutz/zhgh/activity/models/ActivitySchool.java b/src/main/java/io/v/nutz/zhgh/activity/models/ActivitySchool.java index 6fb7afe..828126a 100644 --- a/src/main/java/io/v/nutz/zhgh/activity/models/ActivitySchool.java +++ b/src/main/java/io/v/nutz/zhgh/activity/models/ActivitySchool.java @@ -200,4 +200,10 @@ public class ActivitySchool extends BaseModel implements Serializable { @Comment("是否开启") @ColDefine(type = ColType.BOOLEAN) private Boolean isDisabled; + + @Column + @Comment("是否需要签字") + @Default("0") + @ColDefine(type = ColType.BOOLEAN) + private Boolean isSign; } diff --git a/src/main/java/io/v/nutz/zhgh/activity/models/ActivitySchoolApply.java b/src/main/java/io/v/nutz/zhgh/activity/models/ActivitySchoolApply.java index 1a071be..5fb1533 100644 --- a/src/main/java/io/v/nutz/zhgh/activity/models/ActivitySchoolApply.java +++ b/src/main/java/io/v/nutz/zhgh/activity/models/ActivitySchoolApply.java @@ -173,12 +173,18 @@ public class ActivitySchoolApply implements Serializable { @Excel(name = "姓名", width = 20) @ColDefine(type = ColType.VARCHAR, width = 50) private String username; + @Column @Comment("电话") @Excel(name = "手机号码", width = 20) @ColDefine(type = ColType.VARCHAR, width = 50) private String mobile; + @Column + @Comment("报名签字") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String applyUserSign; + @Excel(name = "身份证号", width = 20) private String idCard; diff --git a/src/main/java/io/v/nutz/zhgh/mobile/activity/Sports/mobileActivityListController.java b/src/main/java/io/v/nutz/zhgh/mobile/activity/Sports/mobileActivityListController.java index bdc1ffa..84a7f66 100644 --- a/src/main/java/io/v/nutz/zhgh/mobile/activity/Sports/mobileActivityListController.java +++ b/src/main/java/io/v/nutz/zhgh/mobile/activity/Sports/mobileActivityListController.java @@ -163,6 +163,8 @@ public class mobileActivityListController { school.applyEndTime, school.applyType, school.activityGroupId, + school.isSign, + school.precautions, eve.allName, eve.isInterest, eve.projectType, @@ -262,7 +264,7 @@ public class mobileActivityListController { @ViReturn @RequiresAuthentication public Object doTeamSignUp(ActivityMobileSignUpParam param) { - mobileActivityApplyService.doTeamSignUp(param.getActivityId(), param.getUserIds(), param.getEventId(), param.getTeamId(), param.getTeamName()); + mobileActivityApplyService.doTeamSignUp(param.getActivityId(), param.getUserIds(), param.getEventId(), param.getTeamId(), param.getTeamName(),param.getApplyUserSign()); return null; } diff --git a/src/main/java/io/v/nutz/zhgh/mobile/activity/Sports/service/MobileActivityApplyService.java b/src/main/java/io/v/nutz/zhgh/mobile/activity/Sports/service/MobileActivityApplyService.java index 33e8dc9..03ae152 100644 --- a/src/main/java/io/v/nutz/zhgh/mobile/activity/Sports/service/MobileActivityApplyService.java +++ b/src/main/java/io/v/nutz/zhgh/mobile/activity/Sports/service/MobileActivityApplyService.java @@ -7,5 +7,5 @@ import java.util.List; public interface MobileActivityApplyService extends BaseService { void doDeleteApply(String activityId, String eventId); - void doTeamSignUp(String activityId, List userIds, String eventId, String teamId, String teamName); + void doTeamSignUp(String activityId, List userIds, String eventId, String teamId, String teamName,String applyUserSign); } diff --git a/src/main/java/io/v/nutz/zhgh/mobile/activity/Sports/service/impl/MobileActivityApplyServiceImpl.java b/src/main/java/io/v/nutz/zhgh/mobile/activity/Sports/service/impl/MobileActivityApplyServiceImpl.java index de86ccc..5356d00 100644 --- a/src/main/java/io/v/nutz/zhgh/mobile/activity/Sports/service/impl/MobileActivityApplyServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/mobile/activity/Sports/service/impl/MobileActivityApplyServiceImpl.java @@ -39,16 +39,16 @@ public class MobileActivityApplyServiceImpl extends BaseServiceImpl userIds, String eventId, String teamId, String teamName) { + public void doTeamSignUp(String activityId, List userIds, String eventId, String teamId, String teamName, String applyUserSign) { List schoolApplyArrayList = new ArrayList<>(); userIds.forEach(i -> { - ActivitySchoolApply schoolApply = getApply(activityId, eventId, i, teamId, teamName); + ActivitySchoolApply schoolApply = getApply(activityId, eventId, i, teamId, teamName, applyUserSign); schoolApplyArrayList.add(schoolApply); }); insert(schoolApplyArrayList); } - public ActivitySchoolApply getApply(String activityId, String eventId, String userId, String teamId, String teamName) { + public ActivitySchoolApply getApply(String activityId, String eventId, String userId, String teamId, String teamName, String applyUserSign) { ActivitySchool activitySchool = dao().fetch(ActivitySchool.class, activityId); User user = dao().fetch(User.class, Cnd.where("id", "=", userId)); ActivityBasicUnit basicUnit = dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", user.getUnitid())); @@ -82,6 +82,7 @@ public class MobileActivityApplyServiceImpl extends BaseServiceImpl - + 基层工会报名 @@ -202,6 +202,14 @@ + + + + 需要 + 不需要 + + + @@ -225,43 +233,41 @@ -
+
-
+
-
+
-
+
-
+ +
+
+ + +
- - - -
-
-
-
{ - this.initEditor() - }) - }, async eventChange(val) { const data = this.checkedEventInfo.find((v) => v.eventId === val) const resp = await $.get("/platform/activity/school/info/mange/getEventData", { id: val }) @@ -990,9 +991,7 @@ module.exports = { }, prev() { this.active-- - this.$nextTick(() => { - this.initEditor() - }) + }, getArrDifference(arr1, arr2) { return arr1.concat(arr2).filter(function(v, i, arr) { @@ -1096,7 +1095,6 @@ module.exports = { if (this.$refs["activityForm"]) { this.$refs["activityForm"].resetFields() } - this.initEditor() const data = await this.getActivityCode(40001) this.form = { planId: "", @@ -1105,6 +1103,7 @@ module.exports = { eventsIds: [], unitJointly: [], applyType: 2, + isSign: false, activityCode: data, activityLevel: 40001 } @@ -1166,9 +1165,6 @@ module.exports = { this.checkedEventInfo.unshift(item) } - this.$nextTick(async () => { - this.initEditor() - }) } }, async doOperate() { @@ -1328,20 +1324,7 @@ module.exports = { form.time = undefined } }, - initEditor() { - let keys = ["athleteQualification", "registrationMethod", "competitionMethod", "rewardMethod", "precautions", "eventNotification"] - keys.forEach((key) => { - $("#" + key).html("") - editors[key] = new E("#" + key) - editors[key].config.onchange = (html) => { - this.form[key] = html - } - editors[key].create() - if (this.form[key]) { - editors[key].txt.html(this.form[key]) - } - }) - }, + isLeaderChange() { this.$set(this.eventForm, "leanderNum", 1) this.$set(this.eventForm, "coachNum", 0) diff --git a/src/main/resources/views/mobile/activity/Sports/activityEventList.html b/src/main/resources/views/mobile/activity/Sports/activityEventList.html index 2169197..9aad284 100644 --- a/src/main/resources/views/mobile/activity/Sports/activityEventList.html +++ b/src/main/resources/views/mobile/activity/Sports/activityEventList.html @@ -144,7 +144,8 @@ layout("/mobile/platform.html"){ - + 已报名人员: +
+
+ 签字 +
+
+ +
+
+
添加队友
- +
+ + + 自愿参赛责任及风险告知书 + +
提 交
+ @@ -260,6 +277,9 @@ layout("/mobile/platform.html"){ + +
+
{ - // - // }); - // return - // } + if (this.activityData.isSign && !this.applyUserSign) { + this.$dialog.alert({ + title: "温馨提示", + message: "请签字后再提交!" + }).then(() => { + + }) + return + } + if (this.activityData.isSign && !this.formData.isCy) { + this.$dialog.alert({ + title: "温馨提示", + message: "请先阅读自愿参赛责任及风险告知书!" + }).then(() => { + + }) + return + } const { athletesMaxNum, @@ -443,7 +474,9 @@ layout("/mobile/platform.html"){ eventId: this.formData.eventId, teamId: this.formData.teamId, teamName: this.formData.teamName, - userIds: JSON.stringify(userIds) + userIds: JSON.stringify(userIds), + applyUserSign: this.applyUserSign + }) await this.onRefresh() this.teamSignUpShow = false @@ -567,6 +600,7 @@ layout("/mobile/platform.html"){ restrictRegNumber } = o this.projectType = projectType + this.activityData = o this.formData.activityId = activityId this.formData.eventId = eventId this.formData.isTeamSignUp = isTeamSignUp @@ -691,6 +725,7 @@ layout("/mobile/platform.html"){ //如果是组队报名 if (isTeamSignUp) { + this.registerList = [] this.formData.isMenWomen = isMenWomen if (this.registerList.length === 0) { this.registerList.push({ diff --git a/src/main/resources/views/mobile/activity/Sports/activityList.html b/src/main/resources/views/mobile/activity/Sports/activityList.html index ffa4504..0569814 100644 --- a/src/main/resources/views/mobile/activity/Sports/activityList.html +++ b/src/main/resources/views/mobile/activity/Sports/activityList.html @@ -80,30 +80,7 @@ layout("/mobile/platform.html"){ description="暂无数据"> -
-
运动员资格
-
-
- -
-
报名方法
-
-
- -
-
竞赛方法
-
-
- -
-
奖励方法
-
-
- -
-
注意事项
-
-
+
进入报名 diff --git a/src/main/resources/views/platform/activity/school/ActivityApply.html b/src/main/resources/views/platform/activity/school/ActivityApply.html index c33afc0..a22f470 100644 --- a/src/main/resources/views/platform/activity/school/ActivityApply.html +++ b/src/main/resources/views/platform/activity/school/ActivityApply.html @@ -235,17 +235,17 @@ layout("/layouts/platform.html"){ .format('YYYY/MM/DD HH:mm')}} 至 {{moment(item.applyEndTime).format('YYYY/MM/DD HH:mm')}} -
+
- 上传参赛承诺书 + 上传风险告知书
- +
@@ -729,8 +729,6 @@ layout("/layouts/platform.html"){ - - @@ -744,7 +742,7 @@ layout("/layouts/platform.html"){ 审核不通过
+ + + @@ -1263,7 +1281,7 @@ layout("/layouts/platform.html"){ promiseBookFileList: [], isPromiseBookFileView: true, - promiseBookDialogVisible: false, + promiseBookDialogVisible: false } }, filters: { @@ -1279,9 +1297,12 @@ layout("/layouts/platform.html"){ "delete_info": httpVueLoader("/components/activity/school/DeleteInfo.vue") }, methods: { + doExport(){ + window.open("/platform/activity/apply/doExport?activityId=" + this.activityData2.id) + }, async doPromiseBook() { if (this.promiseBookFileList && this.promiseBookFileList.length === 0) { - this.notifyWarning('请先上传参赛承诺书') + this.notifyWarning("请先上传参赛承诺书") return } const resp = await $.post(loc() + "/doPromiseBook", { @@ -2040,7 +2061,7 @@ layout("/layouts/platform.html"){ eventId: this.eventData.eventId, projectType: this.projectType, data: JSON.stringify(this.appliedData), - activityId: this.pageForm.activityId, + activityId: this.pageForm.activityId } ) @@ -2065,7 +2086,7 @@ layout("/layouts/platform.html"){ eventId: this.eventData.eventId, projectType: this.projectType, data: JSON.stringify(this.appliedData), - activityId: this.pageForm.activityId, + activityId: this.pageForm.activityId } ) @@ -2324,7 +2345,7 @@ layout("/layouts/platform.html"){ this.applyedTabLoading = true //如果项目等于单项 debugger - if (this.eventData.projectType === '1') { + if (this.eventData.projectType === "1") { this.appliedData3 = applyed.filter(v => { return v.teamId == this.team })