From 5f8de5e32b0e8a06c315ba30b802525c116cdced Mon Sep 17 00:00:00 2001 From: "@jyuhsin" <729757837@qq.com> Date: Fri, 24 Oct 2025 17:18:32 +0800 Subject: [PATCH] commit --- .../controller/GuildHallController.java | 11 +- .../GuildHallMeetingController.java | 46 +- .../GuildHallSeatSummaryController.java | 140 +++ .../GuildHallSelectSeatController.java | 97 ++ .../guildhall/models/GuildHallMeeting.java | 5 + .../guildhall/models/GuildHallSeat.java | 8 + .../guildhall/models/GuildHallSeatSelect.java | 53 + .../assets/platform/img/v4/not-image.png | Bin 0 -> 10298 bytes .../plugins/permissionGroup/index.vue | 3 +- .../resources/views/layouts/v4/home/jcdt.js | 7 +- .../zhgh/dayofficework/site/mine/index.html | 2 +- .../zhgh/dayofficework/site/record/index.html | 2 +- .../site/schoolUnionAudit/index.html | 2 +- .../guildhall/{ => manage}/index.html | 0 .../guildhall/{ => manage}/seat.js | 2 +- .../guildhall/meeting/index.html | 36 +- .../guildhall/seatSummary/index.html | 81 ++ .../guildhall/selectSeat/index.html | 837 ++++++++++++++++ .../zhghh5/dayofficework/site/apply/apply.js | 1 + .../guildhall/selectSeat/index.html | 908 ++++++++++++++++++ 20 files changed, 2218 insertions(+), 23 deletions(-) create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallSeatSummaryController.java create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallSelectSeatController.java create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/models/GuildHallSeatSelect.java create mode 100644 src/main/resources/static/assets/platform/img/v4/not-image.png rename src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/{ => manage}/index.html (100%) rename src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/{ => manage}/seat.js (98%) create mode 100644 src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/seatSummary/index.html create mode 100644 src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/selectSeat/index.html create mode 100644 src/main/resources/views/platform/zhghh5/democratic/teachercongress/guildhall/selectSeat/index.html diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallController.java index d330830d..c1a18844 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallController.java @@ -37,7 +37,7 @@ public class GuildHallController { @At("") @SaCheckPermission("guildHall.management") - @Ok("beetl:/platform/zhgh/democratic/teachercongress/guildhall/index.html") + @Ok("beetl:/platform/zhgh/democratic/teachercongress/guildhall/manage/index.html") public void index() { } @@ -90,10 +90,17 @@ public class GuildHallController { return Result.success(dao.fetch(GuildHall.class, id)); } + @At + @SaCheckPermission("guildHall.management") + @ApiOperation("查询会议厅多个") + public Result selectList() { + return Result.success(dao.query(GuildHall.class, Cnd.NEW())); + } + @At @SaCheckPermission("guildHall.management") @ApiOperation("查询座位") - public Result selectSeat(String hallId) { + public Result selectSeatList(String hallId) { List list = dao.query(GuildHallSeat.class, Cnd.where(GuildHallSeat::getHallId, "=", hallId) .asc(GuildHallSeat::getRowNumber).asc(GuildHallSeat::getColNumber)); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallMeetingController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallMeetingController.java index 97461de8..71d10321 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallMeetingController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallMeetingController.java @@ -1,21 +1,33 @@ package com.budwk.app.zhgh.democratic.teachercongress.guildhall.controller; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; +import com.budwk.app.zhgh.democratic.teachercongress.guildhall.models.GuildHall; import com.budwk.app.zhgh.democratic.teachercongress.guildhall.models.GuildHallMeeting; +import com.budwk.app.zhgh.democratic.teachercongress.guildhall.models.GuildHallSeat; +import com.budwk.app.zhgh.democratic.teachercongress.guildhall.models.GuildHallSeatSelect; import com.budwk.app.zhgh.democratic.teachercongress.guildhall.service.GuildHallMeetingService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; +import org.nutz.ioc.aop.Aop; 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.At; import org.nutz.mvc.annotation.Ok; +import java.util.ArrayList; +import java.util.List; + @Api("会议厅会议") @IocBean @At("/platform/guildHall/meeting") @@ -50,17 +62,32 @@ public class GuildHallMeetingController { @SaCheckPermission("guildHall.meeting") @SLog(tag = "会议厅会议", msg = "保存会议厅会议") @ApiOperation("保存会议厅会议") + @Aop(TransAop.READ_COMMITTED) public Result save(GuildHallMeeting meeting) { dao.insert(meeting); - return Result.success(); + List seats = dao.query(GuildHallSeat.class, Cnd.where("hallId", "=", meeting.getHallId())); + List selects = BeanUtil.copyToList(seats, GuildHallSeatSelect.class); + for (GuildHallSeatSelect select : selects) { + select.setMeetingId(meeting.getId()); + } + dao.insert(selects); + return Result.success(); } @At @SaCheckPermission("guildHall.meeting") @SLog(tag = "会议厅会议", msg = "修改会议厅会议") @ApiOperation("修改会议厅会议") + @Aop(TransAop.READ_COMMITTED) public Result update(GuildHallMeeting meeting) { dao.update(meeting); + dao.clear(GuildHallSeatSelect.class, Cnd.where("hallId", "=", meeting.getHallId())); + List seats = dao.query(GuildHallSeat.class, Cnd.where("hallId", "=", meeting.getHallId())); + List selects = BeanUtil.copyToList(seats, GuildHallSeatSelect.class); + for (GuildHallSeatSelect select : selects) { + select.setMeetingId(meeting.getId()); + } + dao.insert(selects); return Result.success(); } @@ -73,4 +100,21 @@ public class GuildHallMeetingController { return Result.success(); } + @At + @SaCheckPermission("guildHall") + @ApiOperation("查询会议") + public Result selectList() { + List results = new ArrayList<>(); + List meetings = dao.query(GuildHallMeeting.class, Cnd.NEW().desc("startTime")); + for (GuildHallMeeting meeting : meetings) { + if(DateUtil.compare(DateUtil.date(), meeting.getEndTime()) > 0) { + continue; + } + NutMap nutMap = Lang.obj2nutmap(meeting); + GuildHall hall = dao.fetch(GuildHall.class, meeting.getHallId()); + nutMap.put("address", hall.getAddress()); + results.add(nutMap); + } + return Result.success(results); + } } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallSeatSummaryController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallSeatSummaryController.java new file mode 100644 index 00000000..4fbe563c --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallSeatSummaryController.java @@ -0,0 +1,140 @@ +package com.budwk.app.zhgh.democratic.teachercongress.guildhall.controller; + +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.date.DateUtil; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.CommonDownloadUtil; +import com.budwk.app.zhgh.democratic.teachercongress.guildhall.models.GuildHall; +import com.budwk.app.zhgh.democratic.teachercongress.guildhall.models.GuildHallMeeting; +import com.budwk.app.zhgh.democratic.teachercongress.guildhall.service.GuildHallService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +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.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; + +/** + * @ClassName GuildHallSeatSummaryController + * @Author JyuHsin + * @Date 2025/10/24 16:25 + * @Version 1.0 + * @Description TODO + */ +@Api("会议选座统计") +@IocBean +@At("/platform/guildHall/seatSummary") +@Ok("json:full") +public class GuildHallSeatSummaryController { + + @Inject + private Dao dao; + @Inject + private GuildHallService guildHallService; + + @At("") + @SaCheckPermission("guildHall.seatSummary") + @Ok("beetl:/platform/zhgh/democratic/teachercongress/guildhall/seatSummary/index.html") + public void index() { + } + + @At + @SaCheckPermission("guildHall.seatSummary") + @ApiOperation("分页查询") + public Result pageData(PageForm pageForm, + @Param(value = "meetingId") String meetingId) { + Sql sql = Sqls.create(""" + SELECT + u.userName, + u.loginName, + u.unitName as unitName, + u.unionName as unionName, + u.mobile, + u.sex, + t1.rowNumber, + t1.colNumber + FROM + `guild_hall_seat_select` t1 + LEFT JOIN `vw_user` u ON u.id = t1.userId + WHERE + t1.userId IS NOT NULL AND t1.meetingId = @meetingId + order by t1.rowNumber ASC,t1.colNumber ASC + """); + sql.setParam("meetingId", meetingId); + Pagination pagination = guildHallService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + @At + @SaCheckPermission("guildHall.seatSummary") + @ApiOperation("查询会议") + public Result listMeeting() { + List meetings = dao.query(GuildHallMeeting.class, Cnd.NEW().desc("startTime")); + return Result.success(meetings); + } + + @At + @Ok("void") + @SaCheckPermission("guildHall.seatSummary") + public void exportExcel(String meetingId, HttpServletResponse response) { + Sql sql = Sqls.create(""" + SELECT + u.userName, + u.loginName, + u.unitName as unitName, + u.unionName as unionName, + u.mobile, + u.sex, + t1.rowNumber, + t1.colNumber, + CONCAT(t1.rowNumber,'排',t1.colNumber,'列') seat + FROM + `guild_hall_seat_select` t1 + LEFT JOIN `vw_user` u ON u.id = t1.userId + WHERE + t1.userId IS NOT NULL AND t1.meetingId = @meetingId + order by t1.rowNumber ASC,t1.colNumber ASC + """); + sql.setParam("meetingId",meetingId); + + List list = guildHallService.listMap(sql); + + List exportEntities = new ArrayList<>(); + exportEntities.add(new ExcelExportEntity("姓名", "userName", 20)); + exportEntities.add(new ExcelExportEntity("工号", "loginName", 20)); + exportEntities.add(new ExcelExportEntity("性别", "sex", 20)); + exportEntities.add(new ExcelExportEntity("单位", "unitName", 20)); + exportEntities.add(new ExcelExportEntity("分工会", "unionName", 20)); + exportEntities.add(new ExcelExportEntity("手机号", "mobile", 20)); + exportEntities.add(new ExcelExportEntity("座位", "seat", 20)); + + try { + ExportParams exportParams = new ExportParams(); + exportParams.setSheetName("选座人员"); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list); + CommonDownloadUtil.download("选座人员.xlsx", workbook, response); + } catch (Exception e) { + e.printStackTrace(); + } + + } +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallSelectSeatController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallSelectSeatController.java new file mode 100644 index 00000000..8e44d0a1 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/controller/GuildHallSelectSeatController.java @@ -0,0 +1,97 @@ +package com.budwk.app.zhgh.democratic.teachercongress.guildhall.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.budwk.app.base.result.Result; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.democratic.teachercongress.guildhall.models.GuildHallMeeting; +import com.budwk.app.zhgh.democratic.teachercongress.guildhall.models.GuildHallSeat; +import com.budwk.app.zhgh.democratic.teachercongress.guildhall.models.GuildHallSeatSelect; +import com.budwk.app.zhgh.democratic.teachercongress.guildhall.service.GuildHallService; +import io.swagger.annotations.Api; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName GuildHallSelectSeatController + * @Author JyuHsin + * @Date 2025/10/24 15:22 + * @Version 1.0 + * @Description TODO + */ +@Api("会议选座") +@IocBean +@At("/platform/guildHall/selectSeat") +@Ok("json:full") +public class GuildHallSelectSeatController { + + @Inject + private Dao dao; + @Inject + private GuildHallService guildHallService; + + @At("") + @SaCheckPermission("guildHall.selectSeat") + @Ok("beetl:/platform/zhgh/democratic/teachercongress/guildhall/selectSeat/index.html") + public void index() { + } + + @At("/h5") + @SaCheckPermission("h5.guildHall.selectSeat") + @Ok("beetl:/platform/zhghh5/democratic/teachercongress/guildhall/selectSeat/index.html") + public void h5Index() { + } + + @At + @SaCheckPermission("guildHall.selectSeat") + public Result loadSeats(@Param("meetingId") String meetingId) { + // 已选择情况 + List selectedSeats = dao.query(GuildHallSeatSelect.class, Cnd.where("meetingId", "=", meetingId)); + + for (GuildHallSeatSelect selectedSeat : selectedSeats) { + if (selectedSeat.getUserId() != null) { + selectedSeat.setIsOccupied(true); + selectedSeat.setOccupiedBy(selectedSeat.getUserId()); + selectedSeat.setIsMine(selectedSeat.getUserId().equals(SecurityUtil.getUserId())); + } else { + selectedSeat.setIsOccupied(false); + selectedSeat.setIsMine(false); + } + } + + // 座位排序 首先按seatRowNum 再按seatColNum + selectedSeats.sort((o1, o2) -> { + int compare = o1.getRowNumber().compareTo(o2.getRowNumber()); + if (compare == 0) { + return o1.getColNumber().compareTo(o2.getColNumber()); + } + return compare; + }); + return Result.success(selectedSeats); + } + + @At + @SaCheckPermission("guildHall.selectSeat") + public Result doSelect(@Param("meetingId") String meetingId, Integer rowNumber, Integer colNumber) { + GuildHallSeatSelect oldSeat = dao.fetch(GuildHallSeatSelect.class, Cnd.where("meetingId", "=", meetingId).and("userId", "=", SecurityUtil.getUserId())); + if(oldSeat != null){ + oldSeat.setUserId(null); + oldSeat.setSelectTime(null); + dao.update(oldSeat); + } + + GuildHallSeatSelect seat = dao.fetch(GuildHallSeatSelect.class, Cnd.where("meetingId", "=", meetingId).and("rowNumber", "=", rowNumber).and("colNumber", "=", colNumber)); + seat.setUserId(SecurityUtil.getUserId()); + seat.setSelectTime(new Date()); + dao.update(seat); + + return Result.success(); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/models/GuildHallMeeting.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/models/GuildHallMeeting.java index 9fd4af72..a8ddb9af 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/models/GuildHallMeeting.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/models/GuildHallMeeting.java @@ -58,4 +58,9 @@ public class GuildHallMeeting extends BaseModel { @ColDefine(type = ColType.INT) private Integer groupId; + @Column + @Comment("会厅Id") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String hallId; + } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/models/GuildHallSeat.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/models/GuildHallSeat.java index f017e899..ca06a019 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/models/GuildHallSeat.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/models/GuildHallSeat.java @@ -7,6 +7,8 @@ import lombok.experimental.Accessors; import org.nutz.dao.entity.annotation.*; import org.nutz.dao.interceptor.annotation.PrevInsert; +import java.util.Date; + @Data @EqualsAndHashCode(callSuper = true) @Table("guild_hall_seat") @@ -39,9 +41,15 @@ public class GuildHallSeat extends BaseModel { @ColDefine(type = ColType.INT) private Integer colNumber; + @Column + @Comment("座位编号") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String seatNumber; + @Column @Comment("是否启用") @ColDefine(type = ColType.BOOLEAN) @Default("1") private Boolean enable; + } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/models/GuildHallSeatSelect.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/models/GuildHallSeatSelect.java new file mode 100644 index 00000000..fcd7c185 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/guildhall/models/GuildHallSeatSelect.java @@ -0,0 +1,53 @@ +package com.budwk.app.zhgh.democratic.teachercongress.guildhall.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +/** + * @ClassName GuildHallSeatSelect + * @Author JyuHsin + * @Date 2025/10/24 15:55 + * @Version 1.0 + * @Description TODO + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Table("guild_hall_seat_select") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("会议厅座位") +@Accessors(chain = true) +@TableIndexes(value = { + @Index(name = "INDEX_GUILD_HALL_SEAT_HALL_ID", fields = "hallId",unique = false) +}) +public class GuildHallSeatSelect extends GuildHallSeat{ + + @Name + @PrevInsert(uu32 = true) + @Comment("ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String id; + + @Column + @Comment("会议id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String meetingId; + + @Column + @Comment("用户id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String userId; + + @Column + @Comment("选座时间") + @ColDefine(type = ColType.DATETIME) + private Date selectTime; + + private Boolean isOccupied; + private String occupiedBy; + private Boolean isMine; +} diff --git a/src/main/resources/static/assets/platform/img/v4/not-image.png b/src/main/resources/static/assets/platform/img/v4/not-image.png new file mode 100644 index 0000000000000000000000000000000000000000..b8748a18506de2d828a2408e229d05ac030d7ff1 GIT binary patch literal 10298 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 w^OOd-pzMB5p3X}C?+xbv;udi+<8%Q;<b%7 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/components/plugins/permissionGroup/index.vue b/src/main/resources/static/components/plugins/permissionGroup/index.vue index f8ae9366..6d68c521 100644 --- a/src/main/resources/static/components/plugins/permissionGroup/index.vue +++ b/src/main/resources/static/components/plugins/permissionGroup/index.vue @@ -48,6 +48,7 @@ module.exports = { - 设置 + 设置 diff --git a/src/main/resources/views/layouts/v4/home/jcdt.js b/src/main/resources/views/layouts/v4/home/jcdt.js index 72252340..eececde8 100644 --- a/src/main/resources/views/layouts/v4/home/jcdt.js +++ b/src/main/resources/views/layouts/v4/home/jcdt.js @@ -8,10 +8,11 @@ const jcdt = {
-
{{item.date}}
+
{{item.date}}
{{item.title}}
- + +
{{item.summary}}
@@ -38,7 +39,7 @@ const jcdt = { style: /*language=CSS*/ ` .jcdt-wrapper { width: 100%; - background-image: url(https://cdgh.ncu.edu.cn/images/index_bg2.png); + background-image: url(/assets/platform/img/v4/home-bg.png); background-size: cover; background-position: center; background-repeat: no-repeat; diff --git a/src/main/resources/views/platform/zhgh/dayofficework/site/mine/index.html b/src/main/resources/views/platform/zhgh/dayofficework/site/mine/index.html index 5e5e2cef..71e3c87f 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/site/mine/index.html +++ b/src/main/resources/views/platform/zhgh/dayofficework/site/mine/index.html @@ -32,7 +32,7 @@ layout("/layouts/platform.html"){ + placeholder="请选择场地类型" filterable clearable> + placeholder="请选择场地类型" filterable clearable> + placeholder="请选择场地类型" filterable clearable> { + this.$axios.post('/platform/guildHall/selectSeatList', {hallId: this.row.id}).then(res => { if (res.code === 0 && res.data && res.data.length > 0) { this.seats = res.data // 根据现有数据计算行列数 diff --git a/src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/meeting/index.html b/src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/meeting/index.html index 54566603..520c9942 100644 --- a/src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/meeting/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/meeting/index.html @@ -9,7 +9,7 @@ layout("/layouts/platform.html"){ - + @@ -31,6 +31,7 @@ layout("/layouts/platform.html"){ + @@ -40,7 +41,7 @@ layout("/layouts/platform.html"){ + placeholder="选择年度" style="width: 100%;"> + + + + + @@ -83,12 +89,14 @@ layout("/layouts/platform.html"){ return { dialogVisible: false, formRules: { - name: [{required: true, message: '请输入名称', trigger: 'blur'}], - year: [{required: true, message: '请选择年度', trigger: 'change'}], - startTime: [{required: true, message: '请选择开始时间', trigger: 'change'}], - endTime: [{required: true, message: '请选择结束时间', trigger: 'change'}], - content: [{required: true, message: '请输入内容', trigger: 'blur'}] - } + name: [{required: true, message: '必填', trigger: 'blur'}], + year: [{required: true, message: '必填', trigger: 'change'}], + startTime: [{required: true, message: '必填', trigger: 'change'}], + endTime: [{required: true, message: '必填', trigger: 'change'}], + hallId: [{required: true, message: '必填', trigger: 'blur'}], + content: [{required: true, message: '必填', trigger: 'blur'}], + }, + hallList: [], } }, methods: { @@ -106,6 +114,7 @@ layout("/layouts/platform.html"){ }, onEdit(row) { this.dialogVisible = true; + row.year = row.year.toString() this.formData = {...row} }, onSave() { @@ -139,13 +148,16 @@ layout("/layouts/platform.html"){ this.$message.success(res.msg) }) }) - } + }, + selectList() { + this.$axios.post('/platform/guildHall/selectList').then(res => { + this.hallList = res.data + }) + }, }, created() { + this.selectList(); this.doSearch(); - setTimeout(() => { - console.log(this.$refs.tableRef.columns) - },2000) } }) diff --git a/src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/seatSummary/index.html b/src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/seatSummary/index.html new file mode 100644 index 00000000..b5b1eafd --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/seatSummary/index.html @@ -0,0 +1,81 @@ + + + +
+ + + + + + + + + + + + + + 导出选座人员 + + + + + + + + + + + + + + + + +
+ + diff --git a/src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/selectSeat/index.html b/src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/selectSeat/index.html new file mode 100644 index 00000000..dc2f2ce3 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/teachercongress/guildhall/selectSeat/index.html @@ -0,0 +1,837 @@ + + + + +
+ + +
+
+

请选择会议

+
+
+
{{ meeting.name }}
+
地点:{{ meeting.address }}
+
时间:{{ meeting.startTime }} 至 {{ meeting.endTime }}
+
+
+ +
+
+ +
+
+

{{ meeting.name }}

+

{{ meeting.startTime + ' 至 ' + meeting.endTime}}

+
+ +
+
+ + +
+
+ + + + + + + 可选座位 +
+
+ + + + + + + 已被占用 +
+
+ + + + + + + 当前选择 +
+
+ + + + + + + 我的座位 +
+
+ + + + + + + 禁用座位 +
+
+ +
+

正在加载座位信息...

+
+ +
+
+ + + + + + + + + + {{ seat.rowNumber }}-{{ seat.colNumber }} +
+
+
+ + +
+
+
+
+ + + + + diff --git a/src/main/resources/views/platform/zhghh5/dayofficework/site/apply/apply.js b/src/main/resources/views/platform/zhghh5/dayofficework/site/apply/apply.js index 74e92736..b2bef3ec 100644 --- a/src/main/resources/views/platform/zhghh5/dayofficework/site/apply/apply.js +++ b/src/main/resources/views/platform/zhghh5/dayofficework/site/apply/apply.js @@ -234,6 +234,7 @@ const apply = { selectTime(item) { if((item.dateStr + ' ' + item.startTime + '-' + item.endTime) !== (this.selected.dateStr + ' ' + this.selected.startTime + '-' + this.selected.endTime)) { this.$set(this.selected, 'day', item.dateStr) + this.$set(this.selected, "dateStr", item.dateStr) this.$set(this.selected, 'startTime', item.startTime) this.$set(this.selected, 'endTime', item.endTime) } else { diff --git a/src/main/resources/views/platform/zhghh5/democratic/teachercongress/guildhall/selectSeat/index.html b/src/main/resources/views/platform/zhghh5/democratic/teachercongress/guildhall/selectSeat/index.html new file mode 100644 index 00000000..3878fb72 --- /dev/null +++ b/src/main/resources/views/platform/zhghh5/democratic/teachercongress/guildhall/selectSeat/index.html @@ -0,0 +1,908 @@ + + + + +
+ + + + +
+ +
+
+
{{ meeting.name }}
+
地点:{{ meeting.address }}
+
时间:{{ meeting.startTime }} 至 {{ meeting.endTime }}
+
+ +
+ + 取消选择 + + + + 确认选择 + +
+
+
+
+ +
+ +
+
{{ meeting.name }}
+
{{ meeting.startTime }} 至 {{ meeting.endTime }}
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
主席台
+
+ + +
+
+ + + + + + + 可选 +
+
+ + + + + + + 占用 +
+
+ + + + + + + 选中 +
+
+ + + + + + + 我的 +
+
+ + + + + + + 禁用 +
+
+ + +
+ + 正在加载座位信息... + + +
+
+
+ + + + + + + {{ seat.rowNumber }}-{{ seat.colNumber }} +
+
+
+
+ + +
+ + + 缩小 + +
+ + {{ Math.round(currentScale * 100) }}% +
+ + + 重置 + + + + 放大 + +
+ + +
+
我的座位
+
{{ myCurrentSeat.rowNumber }}-{{ myCurrentSeat.colNumber }} (第{{ myCurrentSeat.rowNumber }}排第{{ + myCurrentSeat.colNumber }}列) +
+
+
+ + +
+
+
已选择座位
+
{{ selectedSeat.rowNumber }}-{{ selectedSeat.colNumber }} (第{{ selectedSeat.rowNumber }}排第{{ + selectedSeat.colNumber }}列) +
+
+ +
+ + 切换会议 + + + + {{ submitting ? '提交中...' : '确认选座' }} + +
+
+
+ + + +