From 377dbafc184309693afb2052db3e09fc91976b8b Mon Sep 17 00:00:00 2001 From: zhangrui Date: Mon, 20 Apr 2026 15:21:27 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=8A=A0=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=9A=E5=BB=BA=E8=AE=AE=E6=84=8F=E8=A7=81=E8=AE=A8=E8=AE=BA?= =?UTF-8?q?=E7=BB=84=202=E3=80=81=E4=BB=A3=E8=A1=A8=E5=9B=A2=E7=AE=A1?= =?UTF-8?q?=E7=90=86=EF=BC=9A=E8=AE=BE=E7=BD=AE=E8=81=94=E7=BB=9C=E4=BA=BA?= =?UTF-8?q?=EF=BC=88=E9=9D=A2=E5=90=91=E5=85=A8=E6=A0=A1=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/controller/SysUnionController.java | 2 +- .../TeacherCongressDelegationController.java | 4 +- ...cherCongressDiscussionGroupController.java | 254 ++++++++++++++++++ .../Teacher_congress_discussion_group.java | 67 +++++ ...herCongressDiscussionGroupInsertParam.java | 33 +++ ...acherCongressDiscussionGroupPageParam.java | 18 ++ ...herCongressDiscussionGroupUpdateParam.java | 14 + .../teachercongress/delegation/headForm.js | 1 - .../teachercongress/discussiongroup/auForm.js | 241 +++++++++++++++++ .../discussiongroup/index.html | 155 +++++++++++ 10 files changed, 785 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/controller/TeacherCongressDiscussionGroupController.java create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/models/Teacher_congress_discussion_group.java create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/param/TeacherCongressDiscussionGroupInsertParam.java create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/param/TeacherCongressDiscussionGroupPageParam.java create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/param/TeacherCongressDiscussionGroupUpdateParam.java create mode 100644 src/main/resources/views/platform/zhgh/democratic/teachercongress/discussiongroup/auForm.js create mode 100644 src/main/resources/views/platform/zhgh/democratic/teachercongress/discussiongroup/index.html diff --git a/src/main/java/com/budwk/app/sys/controller/SysUnionController.java b/src/main/java/com/budwk/app/sys/controller/SysUnionController.java index f013d718..17abf012 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysUnionController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysUnionController.java @@ -457,7 +457,7 @@ public class SysUnionController { @Ok("json:{ignoreNull:true}") @SaCheckPermission("sys.manager.union") public Result listUnion(@Valid String unionId, @Valid String keyWord) { - Sql sql = Sqls.create("select id,loginname,username,unitName,unionName,sex from vw_user $condition"); + Sql sql = Sqls.create("select id,loginname,username,unitName,unionName,sex,mobile from vw_user $condition"); Cnd cnd = Cnd.NEW(); cnd.andEX(View_user::getUnionId, "=", unionId); SqlExpressionGroup seg = new SqlExpressionGroup(); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegation/controller/TeacherCongressDelegationController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegation/controller/TeacherCongressDelegationController.java index 13677eb4..538628bb 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegation/controller/TeacherCongressDelegationController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegation/controller/TeacherCongressDelegationController.java @@ -271,8 +271,8 @@ public class TeacherCongressDelegationController { public Result notHeadUser(@Valid String sessionId, @Valid String delegationId, String keyWord) { Sql sql = Sqls.create("select userId,loginName,userName,unitName from teacher_congress_delegate $condition"); Cnd cnd = Cnd.NEW(); - cnd.and("delegationId", "=", delegationId); - cnd.and("sessionId", "=", sessionId); + cnd.andEX("delegationId", "=", delegationId); + cnd.andEX("sessionId", "=", sessionId); SqlExpressionGroup seg = new SqlExpressionGroup(); seg.orLike("loginName", keyWord); seg.orLike("userName", keyWord); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/controller/TeacherCongressDiscussionGroupController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/controller/TeacherCongressDiscussionGroupController.java new file mode 100644 index 00000000..e197d176 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/controller/TeacherCongressDiscussionGroupController.java @@ -0,0 +1,254 @@ +package com.budwk.app.zhgh.democratic.teachercongress.discussiongroup.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.service.BaseService; +import com.budwk.app.sys.views.View_user; +import com.budwk.app.zhgh.democratic.teachercongress.discussiongroup.models.Teacher_congress_discussion_group; +import com.budwk.app.zhgh.democratic.teachercongress.discussiongroup.param.TeacherCongressDiscussionGroupInsertParam; +import com.budwk.app.zhgh.democratic.teachercongress.discussiongroup.param.TeacherCongressDiscussionGroupPageParam; +import com.budwk.app.zhgh.democratic.teachercongress.discussiongroup.param.TeacherCongressDiscussionGroupUpdateParam; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.entity.Record; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.ioc.aop.Aop; +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.POST; + +import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; + +@IocBean +@At("/platform/teacherCongress/discussionGroup") +@Ok("json:full") +public class TeacherCongressDiscussionGroupController { + + @Inject + private Dao dao; + + @Inject + private BaseService baseService; + + @At("") + @Ok("beetl:/platform/zhgh/democratic/teachercongress/discussiongroup/index.html") + @SaCheckPermission("tc.discussion.group") + public void index() { + } + + @At + @POST + @SaCheckPermission("tc.discussion.group") + public Result pageData(@Valid TeacherCongressDiscussionGroupPageParam pageParam) { + Sql sql = Sqls.create(""" + SELECT + tcdg.*, + tcs.fullName AS sessionName, + vu.mobile AS recorderUserMobile, + su.username AS createdByName + FROM teacher_congress_discussion_group tcdg + LEFT JOIN teacher_congress_session tcs ON tcs.id = tcdg.sessionId + LEFT JOIN vw_user vu ON vu.id = tcdg.recorderUserId + LEFT JOIN sys_user su ON su.id = tcdg.createdBy + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("tcdg.delFlag", "=", false); + if (StrUtil.isNotBlank(pageParam.getSessionId())) { + cnd.and("tcdg.sessionId", "=", pageParam.getSessionId()); + } + if (StrUtil.isNotBlank(pageParam.getSearchKeyword())) { + if ("name".equals(pageParam.getSearchName())) { + cnd.and("tcdg.name", "like", "%" + pageParam.getSearchKeyword() + "%"); + } else { + cnd.and("tcdg.code", "like", "%" + pageParam.getSearchKeyword() + "%"); + } + } + if (StrUtil.isNotBlank(pageParam.getRecorderUserName())) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + seg.orLike("tcdg.recorderUserName", pageParam.getRecorderUserName()); + seg.orLike("tcdg.recorderUserCode", pageParam.getRecorderUserName()); + cnd.and(seg); + } + if (StrUtil.isNotBlank(pageParam.getDelegationCode())) { + cnd.and("tcdg.delegationCodes", "like", "%" + pageParam.getDelegationCode() + "%"); + } + if (StrUtil.isBlank(pageParam.getPageOrderName())) { + cnd.desc("tcdg.createdAt"); + } + sql.setCondition(cnd); + Pagination pagination = baseService.listPageMap(pageParam.getPageNumber(), pageParam.getPageSize(), sql); + return Result.success(pagination); + } + + @At + @SaCheckPermission("tc.discussion.group") + public Result findOne(@Valid String id) { + Sql sql = Sqls.create(""" + SELECT + tcdg.*, + tcs.fullName AS sessionName, + su.username AS createdByName, + vu.id AS recorderUserId, + vu.loginname AS recorderUserCode, + vu.username AS recorderUserName, + vu.mobile AS recorderUserMobile + FROM teacher_congress_discussion_group tcdg + LEFT JOIN teacher_congress_session tcs ON tcs.id = tcdg.sessionId + LEFT JOIN sys_user su ON su.id = tcdg.createdBy + LEFT JOIN vw_user vu ON vu.id = tcdg.recorderUserId + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("tcdg.id", "=", id); + cnd.and("tcdg.delFlag", "=", false); + sql.setCondition(cnd); + sql.setCallback(Sqls.callback.record()); + dao.execute(sql); + Record record = sql.getObject(Record.class); + if (record == null) { + return Result.success(null); + } + record.put("delegationCodeList", parseJsonArray(record.getString("delegationCodes"))); + record.put("delegationNameList", parseJsonArray(record.getString("delegationNames"))); + return Result.success(record); + } + + @At + @SaCheckPermission("tc.discussion.group") + public Result recorderOptions(String keyword) { + Cnd cnd = Cnd.NEW(); + if (StrUtil.isNotBlank(keyword)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + seg.orLike("username", keyword); + seg.orLike("loginname", keyword); + cnd.and(seg); + } + cnd.asc("loginname"); + cnd.limit(1, 20); + List users = dao.query(View_user.class, cnd); + return Result.success(users); + } + + @At + @SaCheckPermission("tc.discussion.group") + public Result delegationOptions(@Valid String sessionId, String keyword) { + Sql sql = Sqls.create(""" + SELECT + id, + code, + name + FROM teacher_congress_delegation + $condition + ORDER BY CAST(code AS UNSIGNED), code ASC + """); + Cnd cnd = Cnd.NEW(); + cnd.and("sessionId", "=", sessionId); + cnd.and("delFlag", "=", false); + if (StrUtil.isNotBlank(keyword)) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + seg.orLike("code", keyword); + seg.orLike("name", keyword); + cnd.and(seg); + } + cnd.limit(1, 50); + sql.setCondition(cnd); + sql.setCallback(Sqls.callback.records()); + dao.execute(sql); + return Result.success(sql.getList(Record.class)); + } + + @At + @SaCheckPermission("tc.discussion.group") + @SLog(tag = "discussion group", msg = "insert") + public Result insert(@Valid TeacherCongressDiscussionGroupInsertParam param) { + if (hasSameCode(param.getCode(), param.getSessionId(), null)) { + return Result.error("discussion group code already exists"); + } + Teacher_congress_discussion_group discussionGroup = buildEntity(param, new Teacher_congress_discussion_group()); + dao.insert(discussionGroup); + return Result.success(); + } + + @At + @SaCheckPermission("tc.discussion.group") + @SLog(tag = "discussion group", msg = "update") + public Result update(@Valid TeacherCongressDiscussionGroupUpdateParam param) { + if (hasSameCode(param.getCode(), param.getSessionId(), param.getId())) { + return Result.error("discussion group code already exists"); + } + Teacher_congress_discussion_group discussionGroup = dao.fetch(Teacher_congress_discussion_group.class, param.getId()); + if (discussionGroup == null) { + return Result.error("data not found"); + } + buildEntity(param, discussionGroup); + dao.updateIgnoreNull(discussionGroup); + return Result.success(); + } + + @At + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("tc.discussion.group") + @SLog(tag = "discussion group", msg = "delete") + public Result delete(@Valid String id) { + dao.delete(Teacher_congress_discussion_group.class, id); + return Result.success(); + } + + private boolean hasSameCode(String code, String sessionId, String excludeId) { + Cnd cnd = Cnd.where("code", "=", code).and("sessionId", "=", sessionId).and("delFlag", "=", false); + if (StrUtil.isNotBlank(excludeId)) { + cnd.and("id", "<>", excludeId); + } + return dao.count(Teacher_congress_discussion_group.class, cnd) > 0; + } + + private Teacher_congress_discussion_group buildEntity(TeacherCongressDiscussionGroupInsertParam param, + Teacher_congress_discussion_group discussionGroup) { + discussionGroup.setSessionId(param.getSessionId()); + discussionGroup.setCode(StrUtil.trim(param.getCode())); + discussionGroup.setName(StrUtil.trim(param.getName())); + discussionGroup.setRecorderUserId(param.getRecorderUserId()); + discussionGroup.setRecorderUserCode(StrUtil.trim(param.getRecorderUserCode())); + discussionGroup.setRecorderUserName(StrUtil.trim(param.getRecorderUserName())); + discussionGroup.setDelegationCodes(param.getDelegationCodes()); + discussionGroup.setDelegationNames(param.getDelegationNames()); + return discussionGroup; + } + + private List parseJsonArray(String json) { + List result = new ArrayList<>(); + if (StrUtil.isBlank(json)) { + return result; + } + String content = StrUtil.trim(json); + if (content.startsWith("[")) { + content = content.substring(1); + } + if (content.endsWith("]")) { + content = content.substring(0, content.length() - 1); + } + if (StrUtil.isBlank(content)) { + return result; + } + for (String item : content.split(",")) { + String value = StrUtil.trim(item); + value = StrUtil.removePrefix(value, "\""); + value = StrUtil.removeSuffix(value, "\""); + if (StrUtil.isNotBlank(value)) { + result.add(value); + } + } + return result; + } +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/models/Teacher_congress_discussion_group.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/models/Teacher_congress_discussion_group.java new file mode 100644 index 00000000..e2945ba4 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/models/Teacher_congress_discussion_group.java @@ -0,0 +1,67 @@ +package com.budwk.app.zhgh.democratic.teachercongress.discussiongroup.models; + +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.ColDefine; +import org.nutz.dao.entity.annotation.ColType; +import org.nutz.dao.entity.annotation.Column; +import org.nutz.dao.entity.annotation.Comment; +import org.nutz.dao.entity.annotation.Name; +import org.nutz.dao.entity.annotation.Table; +import org.nutz.dao.entity.annotation.TableMeta; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("teacher_congress_discussion_group") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("教代会建议意见讨论组") +public class Teacher_congress_discussion_group extends BaseModel { + + @Name + @Comment("id") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column + @Comment("讨论组编码") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String code; + + @Column + @Comment("讨论组名称") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String name; + + @Column + @Comment("记录人ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String recorderUserId; + + @Column + @Comment("记录人工号") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String recorderUserCode; + + @Column + @Comment("记录人姓名") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String recorderUserName; + + @Column + @Comment("代表团编码JSON") + @ColDefine(type = ColType.TEXT) + private String delegationCodes; + + @Column + @Comment("代表团名称JSON") + @ColDefine(type = ColType.TEXT) + private String delegationNames; +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/param/TeacherCongressDiscussionGroupInsertParam.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/param/TeacherCongressDiscussionGroupInsertParam.java new file mode 100644 index 00000000..9b7f36b4 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/param/TeacherCongressDiscussionGroupInsertParam.java @@ -0,0 +1,33 @@ +package com.budwk.app.zhgh.democratic.teachercongress.discussiongroup.param; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class TeacherCongressDiscussionGroupInsertParam { + + @NotBlank(message = "届次不能为空") + private String sessionId; + + @NotBlank(message = "讨论组编码不能为空") + private String code; + + @NotBlank(message = "讨论组名称不能为空") + private String name; + + @NotBlank(message = "记录人不能为空") + private String recorderUserId; + + @NotBlank(message = "记录人工号不能为空") + private String recorderUserCode; + + @NotBlank(message = "记录人姓名不能为空") + private String recorderUserName; + + @NotBlank(message = "代表团不能为空") + private String delegationCodes; + + @NotBlank(message = "代表团不能为空") + private String delegationNames; +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/param/TeacherCongressDiscussionGroupPageParam.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/param/TeacherCongressDiscussionGroupPageParam.java new file mode 100644 index 00000000..7ac12f09 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/param/TeacherCongressDiscussionGroupPageParam.java @@ -0,0 +1,18 @@ +package com.budwk.app.zhgh.democratic.teachercongress.discussiongroup.param; + +import com.budwk.app.base.param.PageForm; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class TeacherCongressDiscussionGroupPageParam extends PageForm { + + private String sessionId; + + private String searchName; + + private String recorderUserName; + + private String delegationCode; +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/param/TeacherCongressDiscussionGroupUpdateParam.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/param/TeacherCongressDiscussionGroupUpdateParam.java new file mode 100644 index 00000000..cac5520a --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/discussiongroup/param/TeacherCongressDiscussionGroupUpdateParam.java @@ -0,0 +1,14 @@ +package com.budwk.app.zhgh.democratic.teachercongress.discussiongroup.param; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; + +@Data +@EqualsAndHashCode(callSuper = true) +public class TeacherCongressDiscussionGroupUpdateParam extends TeacherCongressDiscussionGroupInsertParam { + + @NotBlank(message = "ID不能为空") + private String id; +} diff --git a/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegation/headForm.js b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegation/headForm.js index b02ed9d0..42716326 100644 --- a/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegation/headForm.js +++ b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegation/headForm.js @@ -36,7 +36,6 @@ const HEAD_FORM_TEMPLATE = { + + + + + + + + + + + + + + + + + + + + + + + + + + + `, + data() { + return { + dialogFormVisible: false, + delegationLoading: false, + formData: {}, + selectedRecorder: null, + selectedDelegations: [], + recorderOptions: [], + delegationOptions: [], + sessionOptions: [], + formRules: { + sessionId: [{ required: true, message: "教代会届次不能为空", trigger: ["change", "blur"] }], + code: [{ required: true, message: "讨论组编码不能为空", trigger: ["change", "blur"] }], + name: [{ required: true, message: "讨论组名称不能为空", trigger: ["change", "blur"] }], + recorderUserId: [{ required: true, message: "记录人不能为空", trigger: ["change", "blur"] }], + delegationCodes: [{ required: true, message: "代表团不能为空", trigger: ["change", "blur"] }] + } + } + }, + methods: { + onOpen(id, sessionId) { + this.dialogFormVisible = true + this.formData = {} + this.selectedRecorder = null + this.selectedDelegations = [] + this.recorderOptions = [] + this.delegationOptions = [] + this.listSession(() => { + if (id) { + this.loadDetail(id) + } else { + this.formData = { + sessionId: sessionId || "", + code: "", + name: "", + recorderUserId: "", + recorderUserCode: "", + recorderUserName: "", + delegationCodes: "", + delegationNames: "" + } + this.$nextTick(() => { + this.$refs.formRef && this.$refs.formRef.clearValidate() + }) + if (this.formData.sessionId) { + this.remoteSearchDelegation("") + } + } + }) + }, + loadDetail(id) { + this.$axios.post("/platform/teacherCongress/discussionGroup/findOne", { id }).then((res) => { + if (res.code === 0) { + const data = res.data || {} + this.formData = { + id: data.id || "", + sessionId: data.sessionid || "", + code: data.code || "", + name: data.name || "", + recorderUserId: data.recorderuserid || "", + recorderUserCode: data.recorderusercode || "", + recorderUserName: data.recorderusername || "", + delegationCodes: data.delegationcodes || "", + delegationNames: data.delegationnames || "" + } + if (this.formData.sessionid && data.sessionname) { + const hasSession = this.sessionOptions.some((item) => item.id === this.formData.sessionid) + if (!hasSession) { + this.sessionOptions = this.sessionOptions.concat([{ + id: this.formData.sessionid, + fullName: data.sessionname + }]) + } + } + this.selectedRecorder = { + id: this.formData.recorderUserId, + loginname: this.formData.recorderUserCode, + username: this.formData.recorderUserName, + mobile: data.recorderusermobile || "" + } + this.recorderOptions = this.formData.recorderUserId ? [this.selectedRecorder] : [] + const codes = Array.isArray(data.delegationCodeList) ? data.delegationCodeList : this.parseJsonArray(this.formData.delegationCodes) + const names = Array.isArray(data.delegationNameList) ? data.delegationNameList : this.parseJsonArray(this.formData.delegationNames) + this.selectedDelegations = codes.map((code, index) => ({ + code, + name: names[index] || "" + })) + this.delegationOptions = this.selectedDelegations.slice() + if (data.sessionid) { + this.remoteSearchDelegation("") + } + this.$nextTick(() => { + this.$refs.formRef && this.$refs.formRef.clearValidate() + }) + } + }) + }, + listSession(callback) { + this.$axios.post("/platform/teacherCongress/common/listOpenSession").then((res) => { + if (res.code === 0) { + this.sessionOptions = res.data || [] + callback && callback() + } + }) + }, + onSessionChange() { + this.selectedDelegations = [] + this.delegationOptions = [] + this.formData.delegationCodes = "" + this.formData.delegationNames = "" + this.remoteSearchDelegation("") + }, + remoteSearchDelegation(keyword) { + if (!this.formData.sessionId) { + this.delegationOptions = this.selectedDelegations.slice() + return + } + this.delegationLoading = true + this.$axios.post("/platform/teacherCongress/discussionGroup/delegationOptions", { + sessionId: this.formData.sessionId, + keyword + }).then((res) => { + if (res.code === 0) { + this.delegationOptions = this.mergeOptions(this.selectedDelegations, res.data || [], "code") + } + }).finally(() => { + this.delegationLoading = false + }) + }, + mergeOptions(current, incoming, key) { + const map = new Map() + ;(incoming || []).concat(current || []).forEach((item) => { + if (item && item[key]) { + if (!map.has(item[key])) { + map.set(item[key], item) + } + } + }) + return Array.from(map.values()) + }, + onRecorderChange(userId) { + const componentOptions = this.$refs.recorderUserSelect && this.$refs.recorderUserSelect.options ? this.$refs.recorderUserSelect.options : [] + this.recorderOptions = this.mergeOptions(this.recorderOptions, componentOptions, "id") + const user = this.recorderOptions.find((item) => item.id === userId) + this.selectedRecorder = user || null + this.formData.recorderUserId = user ? user.id : "" + this.formData.recorderUserCode = user ? user.loginname : "" + this.formData.recorderUserName = user ? user.username : "" + }, + parseJsonArray(value) { + if (!value) { + return [] + } + try { + const result = JSON.parse(value) + return Array.isArray(result) ? result : [] + } catch (e) { + return [] + } + }, + doSubmit() { + this.formData.delegationCodes = JSON.stringify(this.selectedDelegations.map((item) => item.code)) + this.formData.delegationNames = JSON.stringify(this.selectedDelegations.map((item) => item.name)) + this.$refs.formRef.validate((valid) => { + if (valid) { + this.$axios.post( + "/platform/teacherCongress/discussionGroup" + (this.formData.id ? "/update" : "/insert"), + this.formData + ).then((res) => { + if (res.code === 0) { + this.dialogFormVisible = false + this.$message.success(res.msg) + this.$emit("refresh") + } + }) + } + }) + } + } +} diff --git a/src/main/resources/views/platform/zhgh/democratic/teachercongress/discussiongroup/index.html b/src/main/resources/views/platform/zhgh/democratic/teachercongress/discussiongroup/index.html new file mode 100644 index 00000000..d9e39cd4 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/teachercongress/discussiongroup/index.html @@ -0,0 +1,155 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 新增 + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +