This commit is contained in:
2025-04-03 10:30:01 +08:00
parent 6a09a764ec
commit a1091d846a
6 changed files with 133 additions and 10 deletions
@@ -8,6 +8,7 @@ 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.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;
@@ -28,6 +29,7 @@ import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.lang.Lang;
import org.nutz.lang.Strings;
import org.nutz.lang.util.NutMap;
@@ -135,6 +137,7 @@ public class ActivityApplyController {
school.competitionMethod,
school.rewardMethod,
school.precautions,
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,
(SELECT COUNT(1) FROM activity_school_apply app WHERE app.activityId=school.id AND app.unionId=@unionId AND app.unionLeader=TRUE) LeaderCount,
@@ -142,6 +145,7 @@ public class ActivityApplyController {
FROM
activity_school school
LEFT JOIN activity_basic_settings ba ON ba.`code` = school.activityLevel
LEFT JOIN activity_union au ON au.activityId=school.id AND au.unionId=@unionId
$condition
""").setParam("userid", ShiroUtil.getPrincipalProperty("id")).setParam("unionId", getUnionId());
@@ -851,5 +855,17 @@ public class ActivityApplyController {
return Result.success();
}
@At
@ViReturn
@RequiresPermissions("activity.apply")
public Object doPromiseBook(@Param("promiseBookFileList") String promiseBookFileList, @Param("activityId") String activityId) {
ActivityUnion activityUnion = new ActivityUnion();
activityUnion.setActivityId(activityId);
activityUnion.setUnionId(getUnionId());
activityUnion.setFiles(Json.fromJsonAsList(Sys_file.class, promiseBookFileList));
simpleService.insert(activityUnion);
return null;
}
}
@@ -144,7 +144,7 @@ public class ActivityInfoManageController {
@RequiresPermissions("activity.school.info")
public Object doAdd(@Param(value = "data", required = false) ActivitySchool activitySchool, @Param(value = "events", required = false) ActivitySchoolEvent[] events) {
List<ActivityBasicUnion> activityBasicUnions = activitySchoolService.dao().query(ActivityBasicUnion.class, Cnd.where("isEnable", "=", true));
// List<ActivityBasicUnion> activityBasicUnions = activitySchoolService.dao().query(ActivityBasicUnion.class, Cnd.where("isEnable", "=", true));
ActivityBasicUnit activityBasicUnit = activitySchoolService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", ShiroUtil.getUnitId()));
if (activitySchool.getActivityLevel() == 40002) {
@@ -154,13 +154,13 @@ public class ActivityInfoManageController {
String id = activitySchoolService.doAdd(activitySchool, events);
activityBasicUnions.forEach(v -> {
/* activityBasicUnions.forEach(v -> {
ActivityUnion activityUnion = new ActivityUnion();
activityUnion.setActivityId(id);
activityUnion.setUnionname(v.getUnionname());
activitySchoolService.insert(activityUnion);
});
*/
List<Sys_file> image = activitySchool.getImage();
ActivityTissue activityTissue = new ActivityTissue();
@@ -27,6 +27,7 @@ import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.AdaptBy;
import org.nutz.mvc.annotation.At;
@@ -162,11 +163,15 @@ public class ActivityReadingController {
if (!activityLevel.equals("40003")) {
List<ActivityBasicUnion> unions = sysUnionService.dao().query(ActivityBasicUnion.class, unionCnd);
List<ActivityUnion> activityUnions = sysUnionService.dao().query(ActivityUnion.class, Cnd.where("activityId", "=", id));
for (ActivityBasicUnion union : unions) {
String unionId = union.getId();
NutMap map = new NutMap();
ActivityUnion activityUnion = activityUnions.stream().filter(a -> a.getUnionId().equals(unionId)).findFirst().orElse(null);
List<NutMap> applyList = applies.stream().filter(v -> {
return v.getString("activityUnionId").equals(unionId);
}).collect(Collectors.toList());
@@ -175,6 +180,7 @@ public class ActivityReadingController {
map.setv("unioncode", union.getUnioncode());
map.setv("num", applyList.size());
map.setv("apply", applyList);
map.setv("promiseBookFiles", Lang.isNotEmpty(activityUnion) ? activityUnion.getFiles() : new ArrayList<>());
apply.add(map);
}
@@ -1,9 +1,12 @@
package io.v.nutz.zhgh.activity.models;
import io.v.nutz.sys.models.Sys_file;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
import java.util.List;
/**
* TODO
*
@@ -12,7 +15,6 @@ import org.nutz.dao.interceptor.annotation.PrevInsert;
*/
@Data
@Table
@Comment("活动工会")
public class ActivityUnion {
@Column
@@ -35,4 +37,15 @@ public class ActivityUnion {
private String activityId;
@Column
@Comment("工会id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String unionId;
@Column
@Comment("活动id")
@ColDefine(type = ColType.MYSQL_JSON)
private List<Sys_file> files;
}
@@ -236,9 +236,16 @@ layout("/layouts/platform.html"){
{{moment(item.applyEndTime).format('YYYY/MM/DD HH:mm')}}
</div>
<div class="text item">
<span style="color: gray">活动时间:</span>
<div style="display: flex;justify-content: flex-end">
<el-button @click.stop="openPromiseBook(item)"
size="mini"
type="primary">
上传参赛承诺书
</el-button>
</div>
<!-- <span style="color: gray">活动时间:</span>
{{moment(item.startTime).format('YYYY/MM/DD HH:mm')}} 至
{{moment(item.endTime).format('YYYY/MM/DD HH:mm')}}
{{moment(item.endTime).format('YYYY/MM/DD HH:mm')}}-->
</div>
</div>
</el-card>
@@ -1110,6 +1117,26 @@ layout("/layouts/platform.html"){
</span>
</el-dialog>
<el-dialog
:close-on-click-modal="false"
:visible.sync="promiseBookDialogVisible"
title="参赛承诺书"
width="30%"
>
<file-upload :files.sync="promiseBookFileList" :view="isPromiseBookFileView"
card="isPromiseBookFileView">
</file-upload>
<span v-if="isPromiseBookFileView&&promiseBookFileList&&promiseBookFileList.length===0">
暂无承诺书
</span>
<span class="dialog-footer" slot="footer">
<el-button @click="promiseBookDialogVisible = false" type="primary">关 闭</el-button>
<el-button @click="doPromiseBook" type="primary"
v-if="!isPromiseBookFileView">提 交</el-button>
</span>
</el-dialog>
</div>
<script>
@@ -1232,7 +1259,11 @@ layout("/layouts/platform.html"){
],
activityNoticeDialog: false,
dshApplyUserList: [],
dshSelectionIds: []
dshSelectionIds: [],
promiseBookFileList: [],
isPromiseBookFileView: true,
promiseBookDialogVisible: false,
}
},
filters: {
@@ -1248,6 +1279,33 @@ layout("/layouts/platform.html"){
"delete_info": httpVueLoader("/components/activity/school/DeleteInfo.vue")
},
methods: {
async doPromiseBook() {
if (this.promiseBookFileList && this.promiseBookFileList.length === 0) {
this.notifyWarning('请先上传参赛承诺书')
return
}
const resp = await $.post(loc() + "/doPromiseBook", {
promiseBookFileList: JSON.stringify(this.promiseBookFileList),
activityId: this.activityData2.id
})
if (resp.code === 0) {
await this.activityInfoData()
this.promiseBookDialogVisible = false
this.notifySuccess(resp.msg)
}
},
openPromiseBook(row) {
if (moment().valueOf() < moment(row.applyStartTime).valueOf() || moment().valueOf() > moment(row.applyEndTime).valueOf()) {
this.isPromiseBookFileView = true
} else {
this.isPromiseBookFileView = false
}
this.activityData2 = row
if (row.promiseBookFiles) {
this.promiseBookFileList = JSON.parse(row.promiseBookFiles)
}
this.promiseBookDialogVisible = true
},
doAuditApplyUser(status) {
if (this.dshSelectionIds && this.dshSelectionIds.length === 0) {
this.$notify({
@@ -150,13 +150,17 @@ layout("/layouts/platform.html"){
<div slot="header" class="clearfix">
<el-row :gutter="20">
<el-col :span="2">{{tabIdx + 1}}</el-col>
<el-col :span="4">{{pageForm.year}}</el-col>
<el-col :span="2">{{pageForm.year}}</el-col>
<el-col :span="6">
{{isDisPlayCode?'('+app.unioncode+')':null}}{{app.unionname}}
</el-col>
<el-col :span="6">{{pageForm.activityName || '暂无'}}</el-col>
<el-col :span="2">{{app.num |money}} 人</el-col>
<el-col :span="4">{{app.num |money}} 人({{(app.promiseBookFiles&&app.promiseBookFiles.length>0)?'已上传承诺书':'未上传'}})</el-col>
<el-col :span="4">
<el-button @click="openPromiseBook(app)"
style="float: right; padding: 3px 5px"
type="text">查看承诺书
</el-button>
<el-button style="float: right; padding: 3px 5px"
@click="$set(app,'show',!app.show)" type="text">
{{app.show?'折叠':'展开'}}
@@ -596,6 +600,23 @@ layout("/layouts/platform.html"){
<el-button :loading="importLoading" @click="doImport" type="primary">确定</el-button>
</span>
</el-dialog>
<el-dialog
:append-to-body="false"
:close-on-click-modal="false"
:visible.sync="promiseBookDialogVisible"
title="参赛承诺书"
width="30%"
>
<file-upload :files="promiseBookFileList" view v-if="promiseBookFileList&&promiseBookFileList.length>0">
</file-upload>
<span v-if="promiseBookFileList&&promiseBookFileList.length===0">
暂无承诺书
</span>
<span class="dialog-footer" slot="footer">
<el-button @click="promiseBookDialogVisible = false" type="primary">关 闭</el-button>
</span>
</el-dialog>
</div>
<script>
@@ -643,7 +664,12 @@ layout("/layouts/platform.html"){
projectTypeList: [
{ id: "1", name: "单项" },
{ id: "2", name: "团体" }
]
],
fileList: [],
fileVisible: false,
promiseBookFileList: [],
promiseBookDialogVisible: false,
}
},
components: {
@@ -664,6 +690,10 @@ layout("/layouts/platform.html"){
}
},
methods: {
openPromiseBook(row) {
this.promiseBookFileList = row.promiseBookFiles
this.promiseBookDialogVisible = true
},
doImport() {
if (!this.importData.fileList.length) {
this.notifyWarning("请选择文件!")