lululu 1 napja
szülő
commit
1b72412e1f

+ 2 - 0
ruoyi-admin/src/main/resources/application.yml

@@ -105,6 +105,8 @@ mybatis:
   mapperLocations: classpath*:mapper/**/*Mapper.xml
   # 加载全局的配置文件
   configLocation: classpath:mybatis/mybatis-config.xml
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 
 # PageHelper分页插件
 pagehelper:

+ 1 - 1
ruoyi-meeting/src/main/java/com/ruoyi/controller/MembersController.java

@@ -75,7 +75,7 @@ public class MembersController extends BaseController
     @PreAuthorize("@ss.hasPermi('members:members:add')")
     @Log(title = "入会人员关联表", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody Members members)
+    public AjaxResult add(@RequestBody List<Members> members)
     {
         return toAjax(membersService.insertMembers(members));
     }

+ 14 - 2
ruoyi-meeting/src/main/java/com/ruoyi/domain/Meeting.java

@@ -57,8 +57,8 @@ public class Meeting extends BaseEntity
     private String roomDetail;
 
     /** 提前进场时间(当日具体时间) */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "提前进场时间(当日具体时间)", width = 30, dateFormat = "yyyy-MM-dd")
+    @JsonFormat(pattern = "HH:mm")
+    @Excel(name = "提前进场时间(当日具体时间)", width = 30, dateFormat = "HH:mm")
     private Date enterTime;
 
     /** 入会人员id(外键入会人员表) */
@@ -108,9 +108,21 @@ public class Meeting extends BaseEntity
     @Excel(name = "发布时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date meetingTime;
 
+    @TableField
+    private List<TopicLibrary> topicList;
+
     /** 删除标识 */
     private Long delFlag;
 
+
+    public List<TopicLibrary> getTopicList() {
+        return topicList;
+    }
+
+    public void setTopicList(List<TopicLibrary> topicList) {
+        this.topicList = topicList;
+    }
+
     public MeetingRoom getMeetingRoom() {
         return meetingRoom;
     }

+ 2 - 2
ruoyi-meeting/src/main/java/com/ruoyi/domain/MeetingTopic.java

@@ -42,12 +42,12 @@ public class MeetingTopic extends BaseEntity
     {
         return meetingId;
     }
-    public void setTopicId(Long topicId) 
+    public void setTopicId(Long topicId)
     {
         this.topicId = topicId;
     }
 
-    public Long getTopicId() 
+    public Long getTopicId()
     {
         return topicId;
     }

+ 2 - 2
ruoyi-meeting/src/main/java/com/ruoyi/domain/Members.java

@@ -42,12 +42,12 @@ public class Members extends BaseEntity
     {
         return membersRole;
     }
-    public void setMembersName(String membersName) 
+    public void setMembersName(String membersName)
     {
         this.membersName = membersName;
     }
 
-    public String getMembersName() 
+    public String getMembersName()
     {
         return membersName;
     }

+ 11 - 0
ruoyi-meeting/src/main/java/com/ruoyi/domain/TopicLibrary.java

@@ -70,6 +70,17 @@ public class TopicLibrary extends BaseEntity
     @Excel(name = "议题状态")
     private Long topicState;
 
+    @Excel(name = "入会人员id(外键入会人员表)")
+    private String membersId;
+
+    public String getMembersId() {
+        return membersId;
+    }
+
+    public void setMembersId(String membersId) {
+        this.membersId = membersId;
+    }
+
     public List<Members> getMembers() {
         return members;
     }

+ 3 - 1
ruoyi-meeting/src/main/java/com/ruoyi/mapper/MeetingMapper.java

@@ -1,6 +1,8 @@
 package com.ruoyi.mapper;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.domain.Meeting;
 
 /**
@@ -9,7 +11,7 @@ import com.ruoyi.domain.Meeting;
  * @author ruoyi
  * @date 2025-10-14
  */
-public interface MeetingMapper 
+public interface MeetingMapper extends BaseMapper<Meeting>
 {
     /**
      * 查询会议表

+ 3 - 1
ruoyi-meeting/src/main/java/com/ruoyi/mapper/MeetingTopicMapper.java

@@ -1,6 +1,8 @@
 package com.ruoyi.mapper;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.domain.MeetingTopic;
 
 /**
@@ -9,7 +11,7 @@ import com.ruoyi.domain.MeetingTopic;
  * @author lu
  * @date 2025-10-15
  */
-public interface MeetingTopicMapper 
+public interface MeetingTopicMapper extends BaseMapper<MeetingTopic>
 {
     /**
      * 查询会议议题关联表

+ 9 - 2
ruoyi-meeting/src/main/java/com/ruoyi/mapper/MembersMapper.java

@@ -1,7 +1,11 @@
 package com.ruoyi.mapper;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.domain.Members;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 入会人员关联表Mapper接口
@@ -9,7 +13,7 @@ import com.ruoyi.domain.Members;
  * @author lu
  * @date 2025-10-15
  */
-public interface MembersMapper 
+public interface MembersMapper extends BaseMapper<Members>
 {
     /**
      * 查询入会人员关联表
@@ -33,7 +37,7 @@ public interface MembersMapper
      * @param members 入会人员关联表
      * @return 结果
      */
-    public int insertMembers(Members members);
+//    public int insertMembers(Members members);
 
     /**
      * 修改入会人员关联表
@@ -58,4 +62,7 @@ public interface MembersMapper
      * @return 结果
      */
     public int deleteMembersByMembersIds(Long[] membersIds);
+
+    int insertMembers(@Param("members") List<Members> members);
+
 }

+ 3 - 1
ruoyi-meeting/src/main/java/com/ruoyi/mapper/TopicLibraryMapper.java

@@ -1,6 +1,8 @@
 package com.ruoyi.mapper;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.domain.TopicLibrary;
 
 /**
@@ -9,7 +11,7 @@ import com.ruoyi.domain.TopicLibrary;
  * @author lu
  * @date 2025-10-14
  */
-public interface TopicLibraryMapper 
+public interface TopicLibraryMapper extends BaseMapper<TopicLibrary>
 {
     /**
      * 查询议题库

+ 1 - 1
ruoyi-meeting/src/main/java/com/ruoyi/service/IMembersService.java

@@ -33,7 +33,7 @@ public interface IMembersService
      * @param members 入会人员关联表
      * @return 结果
      */
-    public int insertMembers(Members members);
+    public int insertMembers(List<Members> members);
 
     /**
      * 修改入会人员关联表

+ 74 - 1
ruoyi-meeting/src/main/java/com/ruoyi/service/impl/MeetingServiceImpl.java

@@ -1,11 +1,20 @@
 package com.ruoyi.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
+
+import com.ruoyi.domain.MeetingTopic;
+import com.ruoyi.domain.Members;
+import com.ruoyi.domain.TopicLibrary;
+import com.ruoyi.mapper.MeetingTopicMapper;
+import com.ruoyi.mapper.MembersMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.mapper.MeetingMapper;
 import com.ruoyi.domain.Meeting;
 import com.ruoyi.service.IMeetingService;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 会议表Service业务层处理
@@ -19,6 +28,12 @@ public class MeetingServiceImpl implements IMeetingService
     @Autowired
     private MeetingMapper meetingMapper;
 
+    @Autowired
+    private MeetingTopicMapper meetingTopicMapper;
+
+    @Autowired
+    private MembersMapper membersMapper;
+
     /**
      * 查询会议表
      * 
@@ -49,12 +64,70 @@ public class MeetingServiceImpl implements IMeetingService
      * @param meeting 会议表
      * @return 结果
      */
+    @Transactional
     @Override
     public int insertMeeting(Meeting meeting)
     {
-        return meetingMapper.insertMeeting(meeting);
+        List<Members> members = meeting.getMembers();
+        if (members != null && !members.isEmpty()) {
+            // 插入成员并获取生成的ID
+            membersMapper.insertMembers(members);
+
+            // 验证成员ID是否已生成
+            System.out.println("Members after insert:");
+            for (Members member : members) {
+                System.out.println("Member ID: " + member.getMembersId());
+            }
+
+            // 收集成员ID,以逗号分隔
+            StringBuilder memberIds = new StringBuilder();
+            for (int i = 0; i < members.size(); i++) {
+                if (i > 0) {
+                    memberIds.append(",");
+                }
+                memberIds.append(members.get(i).getMembersId());
+            }
+
+            // 设置members_id字段
+            meeting.setMembersId(memberIds.toString());
+            System.out.println("memberIds:"+memberIds.toString());
+        }
+
+        // 插入会议并获取生成的会议ID
+        int result = meetingMapper.insertMeeting(meeting);
+        System.out.println("Meeting ID after insert: " + meeting.getMeetingId());
+
+        // 处理议题关联 - 从 topicList 中获取 topicId
+        List<TopicLibrary> topicList = meeting.getTopicList();
+        if (topicList != null && !topicList.isEmpty()) {
+            StringBuilder topicIds = new StringBuilder();
+            for (int i = 0; i < topicList.size(); i++) {
+                if (i > 0) {
+                    topicIds.append(",");
+                }
+                topicIds.append(topicList.get(i).getTopicId());
+            }
+
+            // 保持原有的议题关联插入逻辑
+            for (TopicLibrary topic : topicList) {
+                MeetingTopic meetingTopic = new MeetingTopic();
+                meetingTopic.setMeetingId(meeting.getMeetingId());
+                meetingTopic.setTopicId(topic.getTopicId());
+                meetingTopicMapper.insertMeetingTopic(meetingTopic);
+            }
+
+            // 在处理完所有议题关联后,设置topicId并更新会议记录
+            meeting.setTopicId(topicIds.toString());
+            // 更新会议记录以保存topicId信息
+            meetingMapper.updateMeeting(meeting);
+        }
+
+
+        return result;
     }
 
+
+
     /**
      * 修改会议表
      * 

+ 1 - 1
ruoyi-meeting/src/main/java/com/ruoyi/service/impl/MembersServiceImpl.java

@@ -50,7 +50,7 @@ public class MembersServiceImpl implements IMembersService
      * @return 结果
      */
     @Override
-    public int insertMembers(Members members)
+    public int insertMembers(List<Members> members)
     {
         return membersMapper.insertMembers(members);
     }

+ 28 - 0
ruoyi-meeting/src/main/java/com/ruoyi/service/impl/TopicLibraryServiceImpl.java

@@ -1,11 +1,16 @@
 package com.ruoyi.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
+
+import com.ruoyi.domain.Members;
+import com.ruoyi.mapper.MembersMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.mapper.TopicLibraryMapper;
 import com.ruoyi.domain.TopicLibrary;
 import com.ruoyi.service.ITopicLibraryService;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 议题库Service业务层处理
@@ -19,6 +24,9 @@ public class TopicLibraryServiceImpl implements ITopicLibraryService
     @Autowired
     private TopicLibraryMapper topicLibraryMapper;
 
+    @Autowired
+    private MembersMapper membersMapper;
+
     /**
      * 查询议题库
      * 
@@ -49,12 +57,32 @@ public class TopicLibraryServiceImpl implements ITopicLibraryService
      * @param topicLibrary 议题库
      * @return 结果
      */
+    @Transactional
     @Override
     public int insertTopicLibrary(TopicLibrary topicLibrary)
     {
+        List<Members> members = topicLibrary.getMembers();
+        if (members != null && !members.isEmpty()) {
+            // 插入成员并获取生成的ID
+            membersMapper.insertMembers(members);
+
+            // 收集成员ID,以逗号分隔
+            StringBuilder memberIds = new StringBuilder();
+            for (int i = 0; i < members.size(); i++) {
+                if (i > 0) {
+                    memberIds.append(",");
+                }
+                memberIds.append(members.get(i).getMembersId());
+            }
+
+            // 设置members_id字段
+            topicLibrary.setMembersId(memberIds.toString());
+        }
+
         return topicLibraryMapper.insertTopicLibrary(topicLibrary);
     }
 
+
     /**
      * 修改议题库
      * 

+ 2 - 0
ruoyi-meeting/src/main/resources/mapper/library/TopicLibraryMapper.xml

@@ -50,6 +50,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="report != null">report,</if>
             <if test="delFlag != null">del_flag,</if>
             <if test="topicState != null">topic_state,</if>
+            <if test="membersId != null">members_id,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="topicName != null and topicName != ''">#{topicName},</if>
@@ -63,6 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="report != null">#{report},</if>
             <if test="delFlag != null">#{delFlag},</if>
             <if test="topicState != null">#{topicState},</if>
+            <if test="membersId != null">#{membersId},</if>
          </trim>
     </insert>
 

+ 3 - 3
ruoyi-meeting/src/main/resources/mapper/meeting/MeetingMapper.xml

@@ -22,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="maintenance"    column="maintenance"    />
         <result property="checkOrganization"    column="check_organization"    />
         <result property="selectText"    column="select_text"    />
-        <result property="topicId"    column="topic_id"    />
+        <result property="topicId"    column="topic_id"   javaType="String" />
         <result property="meetingTime"    column="meeting_time"    />
         <result property="remark"    column="remark"    />
         <result property="delFlag"    column="del_flag"    />
@@ -68,7 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                  LEFT JOIN meeting_topic mt ON m.meeting_id = mt.meeting_id
                  LEFT JOIN topic_library tl ON mt.topic_id = tl.topic_id
                  LEFT JOIN members ms ON m.meeting_id = ms.members_id
-        WHERE m.del_flag = 0
+
     </sql>
 
     <select id="selectMeetingList" parameterType="Meeting" resultMap="MeetingResult">
@@ -86,7 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     
     <select id="selectMeetingByMeetingId" parameterType="Long" resultMap="MeetingResult">
         <include refid="selectMeetingVo"/>
-        where m.meeting_id = #{meetingId}
+        where m.meeting_id = #{meetingId} and m.del_flag = 0
     </select>
 
     <insert id="insertMeeting" parameterType="Meeting" useGeneratedKeys="true" keyProperty="meetingId">

+ 9 - 12
ruoyi-meeting/src/main/resources/mapper/members/MembersMapper.xml

@@ -14,6 +14,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select members_id, members_role, members_name from members
     </sql>
 
+
+    <insert id="insertMembers" useGeneratedKeys="true" keyProperty="membersId" keyColumn="members_id">
+        INSERT INTO members(members_role, members_name)
+        VALUES
+        <foreach collection="members" item="item" separator=",">
+            (#{item.membersRole}, #{item.membersName})
+        </foreach>
+    </insert>
+
     <select id="selectMembersList" parameterType="Members" resultMap="MembersResult">
         <include refid="selectMembersVo"/>
         <where>  
@@ -25,18 +34,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where members_id = #{membersId}
     </select>
 
-    <insert id="insertMembers" parameterType="Members" useGeneratedKeys="true" keyProperty="membersId">
-        insert into members
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="membersRole != null">members_role,</if>
-            <if test="membersName != null">members_name,</if>
-         </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="membersRole != null">#{membersRole},</if>
-            <if test="membersName != null">#{membersName},</if>
-         </trim>
-    </insert>
-
     <update id="updateMembers" parameterType="Members">
         update members
         <trim prefix="SET" suffixOverrides=",">

+ 1 - 1
ruoyi-meeting/src/main/resources/mapper/topic/MeetingTopicMapper.xml

@@ -7,7 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <resultMap type="MeetingTopic" id="MeetingTopicResult">
         <result property="id"    column="id"    />
         <result property="meetingId"    column="meeting_id"    />
-        <result property="topicId"    column="topic_id"    />
+        <result property="topicId"    column="topic_id"   javaType="Long"/>
     </resultMap>
 
     <sql id="selectMeetingTopicVo">

+ 97 - 70
ruoyi-ui/src/views/meeting/meet/index.vue

@@ -184,7 +184,7 @@
     />
 
     <!-- 添加或修改会议列表对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="120px" label-position="left">
         <el-form-item label="会议类型" prop="meetingType">
           <el-select v-model="form.meetingType" placeholder="请选择会议类型">
@@ -209,24 +209,30 @@
         <el-form-item label="会议名称" prop="meetingName">
           <el-input v-model="form.meetingName" placeholder="请输入会议名称" />
         </el-form-item>
-        <el-form-item label="会议开始时间" prop="startTime">
-          <el-date-picker clearable
-            v-model="form.startTime"
-            type="datetime"
-            value-format="yyyy-MM-dd HH:mm"
-            format="yyyy-MM-dd HH:mm"
-            placeholder="请选择会议开始时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="会议结束时间" prop="endTime">
-          <el-date-picker clearable
-            v-model="form.endTime"
-            type="datetime"
-            value-format="yyyy-MM-dd HH:mm"
-            format="yyyy-MM-dd HH:mm"
-            placeholder="请选择会议结束时间">
-          </el-date-picker>
-        </el-form-item>
+        <el-row :gutter="20">
+          <el-col :span="12"> 
+            <el-form-item label="会议开始时间" prop="startTime">
+              <el-date-picker clearable
+                v-model="form.startTime"
+                type="datetime"
+                value-format="yyyy-MM-dd HH:mm"
+                format="yyyy-MM-dd HH:mm"
+                placeholder="请选择会议开始时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col> 
+          <el-col :span="12"> 
+            <el-form-item label="会议结束时间" prop="endTime">
+              <el-date-picker clearable
+                v-model="form.endTime"
+                type="datetime"
+                value-format="yyyy-MM-dd HH:mm"
+                format="yyyy-MM-dd HH:mm"
+                placeholder="请选择会议结束时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col> 
+        </el-row>
         <el-form-item label="会议室" prop="roomId">
           <el-input v-model="form.roomId" placeholder="请输入会议室" />
         </el-form-item>
@@ -245,7 +251,7 @@
             <div v-for="(item, index) in form.members" :key="index" class="attendee-item">
               <!-- 角色选择(字典) -->
               <el-select
-                v-model="item.role"
+                v-model="item.membersRole"
                 placeholder="请选择角色"
                 style="width: 120px; margin-right: 10px;"
                 clearable
@@ -260,10 +266,10 @@
 
               <!-- 用户选择(树形多选) -->
               <treeselect
-                v-model="item.userIds"
+                v-model="item.membersName"
                 :options="deptOptions"
                 :normalizer="normalizer"
-                :multiple="true"
+                :multiple="false"
                 :disable-branch-nodes="true"
                 placeholder="请选择员工"
                 style="width: 300px; margin-right: 10px;"
@@ -286,28 +292,33 @@
             />
           </div>
         </el-form-item>
-        <el-form-item label="会议签到" prop="meetingCheck">
-          <el-radio-group v-model="form.meetingCheck">
-            <el-radio label="1">是</el-radio>
-            <el-radio label="0">否</el-radio>
-          </el-radio-group>
-        </el-form-item>
-
+        <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="会议签到" prop="meetingCheck">
+            <el-radio-group v-model="form.meetingCheck">
+              <el-radio label="1">是</el-radio>
+              <el-radio label="0">否</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="会议通知" prop="meetingNotice">
+            <el-switch
+              v-model="form.meetingNotice"
+              active-value="1"
+              inactive-value="0"
+              active-text="启用"
+              inactive-text="禁用"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
         <el-form-item label="签到模式" prop="checkmode" v-if="form.meetingCheck === '1'">
           <el-radio-group v-model="form.checkmode">
             <el-radio label="0">点击签到</el-radio>
             <el-radio label="1">手写签到</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="会议通知" prop="meetingNotice">
-          <el-switch
-            v-model="form.meetingNotice"
-            active-value="1"
-            inactive-value="0"
-            active-text="启用"
-            inactive-text="禁用"
-          />
-        </el-form-item>
         <el-form-item label="通知内容" prop="noticeText">
           <el-input v-model="form.noticeText" placeholder="请输入会议签到" />
         </el-form-item>
@@ -318,7 +329,7 @@
           <el-cascader
             v-model="form.checkOrganization"
             :options="userTreeOptions"
-            :props="{ multiple: true, 
+            :props="{ multiple: false, 
                       checkStrictly: true }"
             placeholder="请选择承办组织"
             style="width: 300px; margin-right: 10px;"
@@ -409,7 +420,7 @@
 
                 <!-- 内容详情(展开后显示) -->
                 <div v-show="topic.expanded" class="topic-details">
-                  <p> <strong>议题密码:</strong>{{ topic.topicName || '无' }}</p>
+                  <p> <strong>议题名称:</strong>{{ topic.topicName || '无' }}</p>
                 </div>
               </div>
             </div>
@@ -445,6 +456,7 @@
         style="width: 100%"
         @selection-change="handleTopicSelectionChange"
         border
+        :row-key="row => row.topicId"
       >
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column label="议题名称" prop="topicName" />
@@ -505,7 +517,7 @@
           <div class="attendees-container">
             <div v-for="(item, index) in formTopic.members" :key="index" class="attendee-item">
               <el-select
-                v-model="item.role"
+                v-model="item.membersRole"
                 placeholder="请选择角色"
                 style="width: 120px; margin-right: 10px;"
                 clearable
@@ -519,10 +531,10 @@
               </el-select>
 
               <treeselect
-                v-model="item.userIds"
-                :options="deptOptions"
+                v-model="item.membersName"
+                :options="deptOptionsli"
                 :normalizer="normalizer"
-                :multiple="true"
+                :multiple="false"
                 :disable-branch-nodes="true"
                 placeholder="请选择员工"
                 style="width: 300px; margin-right: 10px;"
@@ -577,6 +589,7 @@ export default {
       meetingList: [],
       userTreeOptions: [], // 用户树形数据,需从接口获取
       deptOptions: [],
+      deptOptionsli:[],
       fileList: [],
       topicDialogVisible: false,
       topicManageVisible: false,
@@ -596,7 +609,9 @@ export default {
         topicText: '',
         filePath: '',
         fileName: '',
-        members: []
+        members: [],
+        topicState:'1',
+        membersId: null
       },
       topicList: [],
       topic:null,
@@ -622,7 +637,7 @@ export default {
       form: {
         meetingId: null,
         meetingType: null,
-        meetingState: null,
+        meetingState: 2,
         meetingName: null,
         startTime: null,
         endTime: null,
@@ -638,7 +653,7 @@ export default {
         checkOrganization: null,
         selectText: null,
         meetingTime: this.getCurrentDateTime(),
-        delFlag: null,
+        delFlag: 0,
         remark: null,
         topicId: null,
         topicList: []
@@ -696,7 +711,7 @@ export default {
   methods: {
     // 添加议题与会人员
     addTopicMember() {
-      this.formTopic.members.push({ role: null, userIds: [] });
+      this.formTopic.members.push({ membersRole: null, membersName: null });
     },
 
     // 删除议题与会人员
@@ -728,7 +743,7 @@ export default {
 
     // 预览文件
     previewFile(topic) {
-      const url = `/meeting/library/download/${topic.filePath}`;
+      const url = `/library/download/${topic.filePath}`;
       window.open(url, '_blank');
     },
 
@@ -754,9 +769,9 @@ export default {
 
     // 多选处理
     handleTopicSelectionChange(selection) {
-      this.selectedTopics = selection;
-      this.topicMultiple = !selection.length;
-      this.topicSingle = selection.length !== 1;
+      this.selectedTopics = selection || []; // 防止 null
+      this.topicMultiple = this.selectedTopics.length === 0;
+      this.topicSingle = this.selectedTopics.length !== 1;
     },
 
     // 新增议题
@@ -841,7 +856,8 @@ export default {
         topicText: item.topicText,
         filePath: item.filePath,
         fileName: item.fileName,
-        members: item.members || []
+        members: item.members || [],
+        topicState: item.topicState
       }));
       // 添加到本地 topicList
       this.form.topicList.push(...selected);
@@ -858,7 +874,8 @@ export default {
         topicText: '',
         filePath: '',
         fileName: '',
-        members: [{ role: null, userIds: [] }] // 默认一条
+        members: [{ membersRole: null, membersName: null }] ,// 默认一条
+        topicState: '1'
       };
       this.topicModalTitle = title;
       this.$nextTick(() => {
@@ -895,25 +912,34 @@ export default {
       this.handleTopicSearch();
     },
 
-    // 处理选中变化
-    handleTopicSelectionChange(selection) {
-      this.selectedTopics = selection;
-    },
-
     // 确认选择议题
-    confirmTopicSelect() {
-      if (this.selectedTopics.length === 0) {
+    async confirmTopicSelect() {
+      if (!this.selectedTopics || this.selectedTopics.length === 0) {
         this.$message.warning('请至少选择一个议题');
         return;
       }
 
-      // 将选中的议题 ID 添加到 form.topicId
-      const topicIds = this.selectedTopics.map(item => item.topicId);
-      this.form.topicId = topicIds.join(',');
-      console.log(this.form.topicId);
+      if (this.selectedTopics.length > 1) {
+        this.$message.warning('暂不支持多选,请选择单个议题');
+        return;
+      }
 
-      this.topicDialogVisible = false;
-      this.$message.success('已成功添加议题');
+      try {
+        const topics = await Promise.all(
+          this.selectedTopics.map(item =>
+            getLibrary(item.topicId).then(res => ({
+              ...res.data,
+              expanded: false
+            }))
+          )
+        );
+        this.form.topicList.push(...topics);
+        this.topicDialogVisible = false;
+        this.$message.success('已成功添加议题');
+      } catch (error) {
+        this.$message.error('获取议题失败,请检查网络或联系管理员');
+        console.error(error);
+      }
     },
     handleTopicLibrary() {
       this.handleLibrary();
@@ -931,6 +957,7 @@ export default {
       });
       listDept().then(response => {
         this.deptOptions = this.handleTree(response.data, 'deptId')
+        this.deptOptionsli = this.deptOptions
       })
     },
     handleTree(data, idField) {
@@ -965,7 +992,7 @@ export default {
       return tree;
     },
     addAttendee() {
-      this.form.members.push({ role: null, userIds: [] });
+      this.form.members.push({ membersRole: null, membersName: null });
     },
     removeAttendee(index) {
       if (this.form.members.length > 1) {
@@ -991,7 +1018,7 @@ export default {
       this.form = {
         meetingId: null,
         meetingType: null,
-        meetingState: null,
+        meetingState: 2,
         meetingName: null,
         startTime: null,
         endTime: null,
@@ -1007,7 +1034,7 @@ export default {
         checkOrganization: null,
         selectText: null,
         meetingTime: this.getCurrentDateTime(),
-        delFlag: null,
+        delFlag: 0,
         remark: null,
         topicId: null,
         topicList: []