Browse Source

党风廉政建设-听取党风廉政管理

lizeyu 8 months ago
parent
commit
1f424fbee6

+ 19 - 1
lib/数据更新脚本.txt

@@ -119,4 +119,22 @@ INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `
 INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('1f783c90-a760-0000-0003-b24618f90175', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '1f783c90-a760-0000-0000-b24618f90175', NULL, 3, 'home.pf_jljyxxyhdDetail', '查看纪律教育学习月活动详情', '', '', '', 0, 0, 1);
 INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('1f783c90-a760-0000-0002-b24618f90175', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '1f783c90-a760-0000-0000-b24618f90175', NULL, 2, 'home.pf_jljyxxyhdAdd', '新增纪律教育学习月活动', '', '', '', 0, 0, 1);
 INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('1f783c90-a760-0000-0001-b24618f90175', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '1f783c90-a760-0000-0000-b24618f90175', NULL, 1, 'home.pf_jljyxxyhdEdit', '编辑纪律教育学习月活动', '', '', '', 0, 0, 1);
-INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('1f783c90-a760-0000-0000-b24618f90175', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '1f783c90-a760-0000-8946-b24618f90175', NULL, 1, 'home.pf_jljyxxyhdList', '纪律教育学习月活动', '', '', '', 1, 0, 0);
+INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('1f783c90-a760-0000-0000-b24618f90175', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '1f783c90-a760-0000-8946-b24618f90175', NULL, 1, 'home.pf_jljyxxyhdList', '纪律教育学习月活动', '', '', '', 1, 0, 0);
+
+
+
+ -- 2024.7.12 听取党风廉政管理
+alter table pf_partylifemeeting add meetingType int COMMENT '会议类型 meetingType';
+
+INSERT INTO `cf_dictionary` (`DICTIONARYID`, `DICKEY`, `DICVALUE`, `DICTYPEKEY`, `DICTYPE`, `APPLICATIONID`, `DICNOTE`, `OPERATETIME`, `OPERATESTATE`, `SYNCSTATE`) VALUES ('058a7fc0-7417-0001-9999-bdb74a278a72', 1, '听取党风廉政会议', 'meetingType', 2, 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '会议类型', '2019-09-26 15:13:15', 'M', 'N');
+INSERT INTO `cf_dictionary` (`DICTIONARYID`, `DICKEY`, `DICVALUE`, `DICTYPEKEY`, `DICTYPE`, `APPLICATIONID`, `DICNOTE`, `OPERATETIME`, `OPERATESTATE`, `SYNCSTATE`) VALUES ('058a7fc0-7417-0002-9999-bdb74a278a72', 2, '其他党风廉政', 'meetingType', 2, 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '会议类型', '2019-09-26 15:13:15', 'M', 'N');
+
+INSERT INTO `cf_dictionary` (`DICTIONARYID`, `DICKEY`, `DICVALUE`, `DICTYPEKEY`, `DICTYPE`, `APPLICATIONID`, `DICNOTE`, `OPERATETIME`, `OPERATESTATE`, `SYNCSTATE`) VALUES ('23f5e615-b16a-11ec-829d-7085c2a00007', 7, '听取党风廉政管理', 'PartyLifeMeetingType', 2, 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', NULL, '2022-04-01 15:45:10', 'a', 'n');
+
+INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('1f783c90-a760-9999-0003-b24618f90175', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '1f783c90-a760-9999-0000-b24618f90175', NULL, 3, 'home.pf_tqdflzhyMeetingDetail', '查看听取党风廉政管理详情', '', '', '', 0, 0, 1);
+INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('1f783c90-a760-9999-0002-b24618f90175', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '1f783c90-a760-9999-0000-b24618f90175', NULL, 2, 'home.pf_tqdflzhyMeetingAdd', '新增听取党风廉政管理', '', '', '', 0, 0, 1);
+INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('1f783c90-a760-9999-0001-b24618f90175', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '1f783c90-a760-9999-0000-b24618f90175', NULL, 1, 'home.pf_tqdflzhyMeetingEdit', '编辑听取党风廉政管理', '', '', '', 0, 0, 1);
+INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('1f783c90-a760-9999-0000-b24618f90175', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '1f783c90-a760-0000-8946-b24618f90175', NULL, 1, 'home.pf_tqdflzhyMeetingList', '听取党风廉政管理', '', '', '', 1, 0, 0);
+
+
+

+ 54 - 2
src/main/java/com/ghsc/partybuild/controller/partyLife/MeetingController.java

@@ -46,9 +46,9 @@ public class MeetingController {
 
     @ResponseBody
     @GetMapping("/getUserAddressList")
-    public RequsetData<List<String>> getUserAddressList() {
+    public RequsetData<List<String>> getUserAddressList(@RequestParam(required = false) Integer partyLifeMeetingType) {
         RequsetData<List<String>> res = new RequsetData<>();
-        res.setItem(meetingService.getUserAddressList(userService.getLoginUser().getUserid()));
+        res.setItem(meetingService.getUserAddressList(partyLifeMeetingType, userService.getLoginUser().getUserid()));
         return res;
     }
 
@@ -268,4 +268,56 @@ public class MeetingController {
         excelHelper.exportExcel(response, excelTitle + "导出.xlsx", data);
     }
 
+    @RequestMapping(value = "/exportTqdflzhy", method = RequestMethod.GET)
+    public void exportTqdflzhy(HttpServletResponse response, int partyLifeMeetingType, @RequestParam(required = false) String dzzdm, @RequestParam(required = false) String title, @RequestParam(required = false) @DateTimeFormat(pattern = dateTimeFormat) Date startDate, @RequestParam(required = false) @DateTimeFormat(pattern = dateTimeFormat) Date endDate) throws Exception {
+        /**查询数据**/
+        List<PartyLifeMeetingVo> dataList = meetingService.getList(1, 10000, partyLifeMeetingType, null, dzzdm, title, startDate,endDate).getList();
+        List<CfDictionary> typeList = dictionaryService.getDictionaryListByDicTypeKey("PartyLifeMeetingType");
+
+        ExcelHelper excelHelper = new ExcelHelper();
+        ExcelHelper.ExcelData data = excelHelper.new ExcelData();
+
+        String excelTitle = typeList.stream().filter(it->it.getDickey().equals(partyLifeMeetingType)).findFirst().get().getDicvalue();
+
+
+        //列名
+        data.setName(excelTitle);
+        List<String> titles = new ArrayList();
+        titles.add("序号");
+        titles.add("所属党组织");
+        titles.add("类别");
+        titles.add("会议名称");
+        titles.add("时间");
+        titles.add("地点");
+        titles.add("主持人");
+        titles.add("出席人员数量");
+        titles.add("缺勤人员数量");
+        titles.add("创建人");
+        titles.add("创建时间");
+
+        data.setTitles(titles);
+
+        //数据
+        List<List<Object>> rows = new ArrayList();
+        int i = 0;
+        for (PartyLifeMeetingVo item : dataList) {
+            List<Object> row = new ArrayList();
+            row.add(++i);
+            row.add(item.getPartyname());
+            row.add(item.getMeetingtypename());
+            row.add(item.getTitle());
+            row.add(dateUtils.dateToStrFormat(item.getMeetingdate(), "yyyy-MM-dd"));
+            row.add(item.getAddress());
+            row.add(item.getCompere());
+            row.add(item.getAttendance());
+            row.add(item.getAbsentcount());
+            row.add(item.getCreateusername());
+            row.add(dateUtils.dateToStrFormat(item.getCreatetime(), "yyyy-MM-dd HH:mm:ss"));
+            rows.add(row);
+        }
+        data.setRows(rows);
+
+        excelHelper.exportExcel(response, excelTitle + "导出.xlsx", data);
+    }
+
 }

+ 1 - 1
src/main/java/com/ghsc/partybuild/mapper/PartyLifeMeetingCQuery.java

@@ -11,7 +11,7 @@ import java.util.List;
 public interface PartyLifeMeetingCQuery {
     List<PartyLifeMeetingVo> selectMeetingList(@Param("partyLifeMeetingType") Integer partyLifeMeetingType, @Param("id") String id, @Param("dzzdm") String dzzdm, @Param("title") String title, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
 
-    List<String> selectAddressList(String userId);
+    List<String> selectAddressList(Integer partyLifeMeetingType, String userId);
 
     List<PartyLifeMeetingPersonnelVo> selectMeetingPersonnelList(String partyLifeMeetingId);
 

+ 10 - 0
src/main/java/com/ghsc/partybuild/model/PfPartylifemeeting.java

@@ -31,6 +31,8 @@ public class PfPartylifemeeting {
 
     private String compere;
 
+    private Integer meetingtype;
+
     public String getPartylifemeetingid() {
         return partylifemeetingid;
     }
@@ -142,4 +144,12 @@ public class PfPartylifemeeting {
     public void setCompere(String compere) {
         this.compere = compere == null ? null : compere.trim();
     }
+
+    public Integer getMeetingtype() {
+        return meetingtype;
+    }
+
+    public void setMeetingtype(Integer meetingtype) {
+        this.meetingtype = meetingtype;
+    }
 }

+ 60 - 0
src/main/java/com/ghsc/partybuild/model/PfPartylifemeetingExample.java

@@ -1061,6 +1061,66 @@ public class PfPartylifemeetingExample {
             addCriterion("compere not between", value1, value2, "compere");
             return (Criteria) this;
         }
+
+        public Criteria andMeetingtypeIsNull() {
+            addCriterion("meetingType is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMeetingtypeIsNotNull() {
+            addCriterion("meetingType is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMeetingtypeEqualTo(Integer value) {
+            addCriterion("meetingType =", value, "meetingtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andMeetingtypeNotEqualTo(Integer value) {
+            addCriterion("meetingType <>", value, "meetingtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andMeetingtypeGreaterThan(Integer value) {
+            addCriterion("meetingType >", value, "meetingtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andMeetingtypeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("meetingType >=", value, "meetingtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andMeetingtypeLessThan(Integer value) {
+            addCriterion("meetingType <", value, "meetingtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andMeetingtypeLessThanOrEqualTo(Integer value) {
+            addCriterion("meetingType <=", value, "meetingtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andMeetingtypeIn(List<Integer> values) {
+            addCriterion("meetingType in", values, "meetingtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andMeetingtypeNotIn(List<Integer> values) {
+            addCriterion("meetingType not in", values, "meetingtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andMeetingtypeBetween(Integer value1, Integer value2) {
+            addCriterion("meetingType between", value1, value2, "meetingtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andMeetingtypeNotBetween(Integer value1, Integer value2) {
+            addCriterion("meetingType not between", value1, value2, "meetingtype");
+            return (Criteria) this;
+        }
     }
 
     public static class Criteria extends GeneratedCriteria {

+ 4 - 0
src/main/java/com/ghsc/partybuild/service/impl/DictionaryServiceImpl.java

@@ -140,6 +140,10 @@ public class DictionaryServiceImpl implements DictionaryService {
     public CfDictionary getDicByKey(Integer dicKey, List<CfDictionary> dicList) {
         CfDictionary dic = new CfDictionary();
 
+        if(dicKey == null){
+            return dic;
+        }
+
         for (CfDictionary tIt : dicList) {
             /*
             CfDictionary tIt=null;

+ 8 - 3
src/main/java/com/ghsc/partybuild/service/impl/partyLife/MeetingServiceImpl.java

@@ -43,12 +43,15 @@ public class MeetingServiceImpl implements MeetingService {
         PageHelper.startPage(pageIndex, pageSize);
         List<PartyLifeMeetingVo> list = partyLifeMeetingCQuery.selectMeetingList(partyLifeMeetingType, id, dzzdm, title, startDate, endDate);
 
+        List<CfDictionary> meetingTypeList = dictionaryService.getDictionaryListByDicTypeKey("meetingType");
+
         list.forEach(item -> {
-            //'“三重一大”制度'
             if(item.getPartylifemeetingtype() == 6){
                 List<PartyLifeMeetingScydlVo> scydTypeList = partyLifeMeetingCQuery.selectMeetingScydList(item.getPartylifemeetingid());
                 item.setScydtypenames(scydTypeList.stream().map(scyd->scyd.getScydtype().toString()+"."+scyd.getScydtypename()+";<br />").collect(Collectors.joining()));
                 item.setScydtypes(scydTypeList.stream().map(scyd->scyd.getScydtype()).collect(Collectors.toList()));
+            }else if(item.getPartylifemeetingtype() == 7){
+                item.setMeetingtypename(dictionaryService.getDicByKey(item.getMeetingtype(), meetingTypeList).getDicvalue());
             }
         });
 
@@ -57,8 +60,8 @@ public class MeetingServiceImpl implements MeetingService {
     }
 
     @Override
-    public List<String> getUserAddressList(String userId){
-        return partyLifeMeetingCQuery.selectAddressList(userId);
+    public List<String> getUserAddressList(Integer partyLifeMeetingType, String userId){
+            return partyLifeMeetingCQuery.selectAddressList(partyLifeMeetingType, userId);
     }
 
     @Override
@@ -90,6 +93,7 @@ public class MeetingServiceImpl implements MeetingService {
             dbModel.setPersonnel(data.getPersonnel());
             dbModel.setResult(data.getResult());
             dbModel.setCompere(data.getCompere());
+            dbModel.setMeetingtype(data.getMeetingtype());
             dbModel.setCreatetime(new Date());
             dbModel.setCreateuserid(userId);
             dbModel.setUpdatetime(new Date());
@@ -106,6 +110,7 @@ public class MeetingServiceImpl implements MeetingService {
             dbModel.setPersonnel(data.getPersonnel());
             dbModel.setResult(data.getResult());
             dbModel.setCompere(data.getCompere());
+            dbModel.setMeetingtype(data.getMeetingtype());
             dbModel.setUpdatetime(new Date());
             dbModel.setUpdateuserid(userId);
 

+ 1 - 1
src/main/java/com/ghsc/partybuild/service/partyLife/MeetingService.java

@@ -9,7 +9,7 @@ import java.util.List;
 public interface MeetingService {
     PageInfo<PartyLifeMeetingVo> getList(int pageIndex, int pageSize, Integer partyLifeMeetingType, String id, String dzzdm, String title, Date startDate, Date endDate);
 
-    List<String> getUserAddressList(String userId);
+    List<String> getUserAddressList(Integer partyLifeMeetingType, String userId);
 
     PartyLifeMeetingVo getMeetingById(String id);
 

+ 1 - 0
src/main/java/com/ghsc/partybuild/vo/partyLife/PartyLifeMeetingVo.java

@@ -14,4 +14,5 @@ public class PartyLifeMeetingVo extends PfPartylifemeeting {
     public List<PartyLifeMeetingPersonnelVo> personnellist;
     private String scydtypenames; //“三重一大”类别
     private List<Integer> scydtypes; //“三重一大”类别
+    private String meetingtypename; //会议类别
 }

+ 4 - 1
src/main/resources/mapping/PartyLifeMeetingCQuery.xml

@@ -4,7 +4,7 @@
     <select id="selectMeetingList" resultType="com.ghsc.partybuild.vo.partyLife.PartyLifeMeetingVo">
         select pfm.partyLifeMeetingId, pfm.title, pfm.partyCode, pfm.partyLifeMeetingType, pfm.meetingDate,
         pfm.userCount, pfm.address, pfm.createTime, pfm.createUserId, pfm.updateTime, pfm.updateUserId,
-        pfm.personnel, pfm.result, pfm.compere,
+        pfm.personnel, pfm.result, pfm.compere, pfm.meetingtype,
         p.DZZMC as partyName,u.XM as createUserName, IFNULL(p1.attendance, 0) as attendance, IFNULL(p2.absentCount, 0) as absentCount
         from pf_partylifemeeting pfm
         inner join zz_zzqkxx p on pfm.partyCode = p.DZZDM
@@ -40,6 +40,9 @@
         from pf_partylifemeeting c
         where c.CREATEUSERID = #{userId}
           and c.address is not null
+        <if test="partyLifeMeetingType!=null and partyLifeMeetingType!=''">
+            and c.partyLifeMeetingType = #{partyLifeMeetingType}
+        </if>
         group by c.address
         order by max(c.CREATETIME) desc
     </select>

+ 23 - 5
src/main/resources/mapping/PfPartylifemeetingMapper.xml

@@ -16,6 +16,7 @@
     <result column="personnel" jdbcType="VARCHAR" property="personnel" />
     <result column="result" jdbcType="VARCHAR" property="result" />
     <result column="compere" jdbcType="VARCHAR" property="compere" />
+    <result column="meetingType" jdbcType="INTEGER" property="meetingtype" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -77,7 +78,8 @@
   </sql>
   <sql id="Base_Column_List">
     partyLifeMeetingId, title, partyCode, partyLifeMeetingType, meetingDate, userCount, 
-    address, createTime, createUserId, updateTime, updateUserId, personnel, result, compere
+    address, createTime, createUserId, updateTime, updateUserId, personnel, result, compere, 
+    meetingType
   </sql>
   <select id="selectByExample" parameterType="com.ghsc.partybuild.model.PfPartylifemeetingExample" resultMap="BaseResultMap">
     select
@@ -114,12 +116,14 @@
       partyLifeMeetingType, meetingDate, userCount, 
       address, createTime, createUserId, 
       updateTime, updateUserId, personnel, 
-      result, compere)
+      result, compere, meetingType
+      )
     values (#{partylifemeetingid,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, #{partycode,jdbcType=VARCHAR}, 
       #{partylifemeetingtype,jdbcType=INTEGER}, #{meetingdate,jdbcType=DATE}, #{usercount,jdbcType=INTEGER}, 
       #{address,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{createuserid,jdbcType=VARCHAR}, 
       #{updatetime,jdbcType=TIMESTAMP}, #{updateuserid,jdbcType=VARCHAR}, #{personnel,jdbcType=VARCHAR}, 
-      #{result,jdbcType=VARCHAR}, #{compere,jdbcType=VARCHAR})
+      #{result,jdbcType=VARCHAR}, #{compere,jdbcType=VARCHAR}, #{meetingtype,jdbcType=INTEGER}
+      )
   </insert>
   <insert id="insertSelective" parameterType="com.ghsc.partybuild.model.PfPartylifemeeting">
     insert into pf_partylifemeeting
@@ -166,6 +170,9 @@
       <if test="compere != null">
         compere,
       </if>
+      <if test="meetingtype != null">
+        meetingType,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="partylifemeetingid != null">
@@ -210,6 +217,9 @@
       <if test="compere != null">
         #{compere,jdbcType=VARCHAR},
       </if>
+      <if test="meetingtype != null">
+        #{meetingtype,jdbcType=INTEGER},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.ghsc.partybuild.model.PfPartylifemeetingExample" resultType="java.lang.Long">
@@ -263,6 +273,9 @@
       <if test="record.compere != null">
         compere = #{record.compere,jdbcType=VARCHAR},
       </if>
+      <if test="record.meetingtype != null">
+        meetingType = #{record.meetingtype,jdbcType=INTEGER},
+      </if>
     </set>
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -283,7 +296,8 @@
       updateUserId = #{record.updateuserid,jdbcType=VARCHAR},
       personnel = #{record.personnel,jdbcType=VARCHAR},
       result = #{record.result,jdbcType=VARCHAR},
-      compere = #{record.compere,jdbcType=VARCHAR}
+      compere = #{record.compere,jdbcType=VARCHAR},
+      meetingType = #{record.meetingtype,jdbcType=INTEGER}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
     </if>
@@ -330,6 +344,9 @@
       <if test="compere != null">
         compere = #{compere,jdbcType=VARCHAR},
       </if>
+      <if test="meetingtype != null">
+        meetingType = #{meetingtype,jdbcType=INTEGER},
+      </if>
     </set>
     where partyLifeMeetingId = #{partylifemeetingid,jdbcType=VARCHAR}
   </update>
@@ -347,7 +364,8 @@
       updateUserId = #{updateuserid,jdbcType=VARCHAR},
       personnel = #{personnel,jdbcType=VARCHAR},
       result = #{result,jdbcType=VARCHAR},
-      compere = #{compere,jdbcType=VARCHAR}
+      compere = #{compere,jdbcType=VARCHAR},
+      meetingType = #{meetingtype,jdbcType=INTEGER}
     where partyLifeMeetingId = #{partylifemeetingid,jdbcType=VARCHAR}
   </update>
 </mapper>

+ 39 - 0
src/main/resources/static/app/main/app.js

@@ -3179,6 +3179,45 @@
                     return $ocLazyLoad.load('../main/partylife/scyd/detail.js?' + window.sysVersion);
                 }]
             }
+        }).state("home.pf_tqdflzhyMeetingList", {
+            url: "pf_tqdflzhyMeetingList",
+            params: { "partyLifeMeetingType": 7 },
+            templateUrl: "../main/partylife/tqdflzhy/list.html?" + window.sysVersion,
+            controller: "pf_tqdflzhyMeetingListCtrl",
+            resolve: {
+                load: ['$ocLazyLoad', function ($ocLazyLoad) {
+                    return $ocLazyLoad.load('../main/partylife/tqdflzhy/list.js?' + window.sysVersion);
+                }]
+            }
+        }).state("home.pf_tqdflzhyMeetingEdit", {
+            url: "pf_tqdflzhyMeetingEdit",
+            params: { "partyLifeMeetingType": 7 },
+            templateUrl: "../main/partylife/tqdflzhy/edit.html?" + window.sysVersion,
+            controller: "pf_tqdflzhyMeetingEditCtrl",
+            resolve: {
+                load: ['$ocLazyLoad', function ($ocLazyLoad) {
+                    return $ocLazyLoad.load('../main/partylife/tqdflzhy/edit.js?' + window.sysVersion);
+                }]
+            }
+        }).state("home.pf_tqdflzhyMeetingAdd", {
+            url: "pf_tqdflzhyMeetingAdd",
+            params: { "partyLifeMeetingType": 7 },
+            templateUrl: "../main/partylife/tqdflzhy/edit.html?" + window.sysVersion,
+            controller: "pf_tqdflzhyMeetingEditCtrl",
+            resolve: {
+                load: ['$ocLazyLoad', function ($ocLazyLoad) {
+                    return $ocLazyLoad.load('../main/partylife/tqdflzhy/edit.js?' + window.sysVersion);
+                }]
+            }
+        }).state("home.pf_tqdflzhyMeetingDetail", {
+            url: "pf_tqdflzhyMeetingDetail",
+            templateUrl: "../main/partylife/tqdflzhy/detail.html?" + window.sysVersion,
+            controller: "pf_tqdflzhyMeetingDetailCtrl",
+            resolve: {
+                load: ['$ocLazyLoad', function ($ocLazyLoad) {
+                    return $ocLazyLoad.load('../main/partylife/tqdflzhy/detail.js?' + window.sysVersion);
+                }]
+            }
         }).state("home.pf_reportsystemList", {
             url: "pf_reportsystemList",
             templateUrl: "../main/partylife/reportsystem/list.html?" + window.sysVersion,

+ 74 - 0
src/main/resources/static/app/main/partylife/tqdflzhy/detail.html

@@ -0,0 +1,74 @@
+<titlemenu></titlemenu>
+<div class="dj-card">
+    <div class="dj-body" activate-input activate-select>
+        <div class="card">
+                <div class="dj-formtable">
+                    <table class="dj-table dj-table3">
+                        <tr>
+                            <th>所属党组织</th>
+                            <td>{{dataModel.partyname}}</td>
+                            <th>类别</th>
+                            <td>{{dataModel.meetingtypename}}</td>
+                            <th>主持人</th>
+                            <td>{{dataModel.compere}}</td>
+                        </tr>
+                        <tr>
+                            <th>会议时间</th>
+                            <td>{{dataModel.meetingdate | date:'yyyy-MM-dd'}}</td>
+                            <th>会议名称</th>
+                            <td colspan="3">{{dataModel.title}}</td>
+                        </tr>
+                        <tr>
+                            <th>会议地址</th>
+                            <td colspan="5">{{dataModel.address}}</td>
+                        </tr>
+                    </table>
+                </div>
+                <div class="dj-formtable">
+                    <div class="table-responsive list-table-panel">
+                        <div class="list-table-title">
+                            <div class="table-title">
+                                出席人员列表({{dataModel.personnellist.length}}人)
+                            </div>
+                        </div>
+                        <div class="outoflow" style="max-height: 300px;">
+                            <table class="table table-bordered table-striped table-hover js-basic-example dataTable text-nowrap">
+                                <thead>
+                                <tr>
+                                    <th>序号</th>
+                                    <th>姓名</th>
+                                    <th>是否缺勤</th>
+                                    <th>缺勤原因</th>
+                                </tr>
+                                </thead>
+                                <tbody>
+                                <tr ng-repeat="it in dataModel.personnellist">
+                                    <td scope="row">{{$index+1}}</td>
+                                    <td>{{it.xm}}</td>
+                                    <td>{{it.isabsenteeismname}}</td>
+                                    <td style="min-width: 150px !important;word-wrap: break-word;word-break: break-all;white-space: normal;">{{it.absenteeismcause}}</td>
+                                </tr>
+                                <tr ng-if="userList.length<=0">
+                                    <td colspan="7" style="text-align:center">暂无数据</td>
+                                </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                </div>
+                <div class="dj-formtable">
+                    <table class="dj-table">
+                        <tr>
+                            <th style="width: 5%;">列席人员</th>
+                            <td colspan="5">{{dataModel.personnel}}</td>
+                        </tr>
+                        <tr>
+                            <th style="width: 5%;">会议主要议程及结果</th>
+                            <td colspan="5">{{dataModel.result}}</td>
+                        </tr>
+                    </table>
+                </div>
+            <bsfiles ng-model="reqFileModel"/>
+        </div>
+    </div>
+</div>

+ 36 - 0
src/main/resources/static/app/main/partylife/tqdflzhy/detail.js

@@ -0,0 +1,36 @@
+(function ($app) {
+    $app.module('gtPartyApp').controller('pf_tqdflzhyMeetingDetailCtrl', function ($scope, $http, $modal, $ocLazyLoad, $alert, $loading, $state, $bsRouterState, AuthUser, $timeout, $excel, $partySelect, $filter) {
+        $scope.editParams = $bsRouterState.$params($scope);
+        $scope.dataModel = {};
+
+        $scope.reqFileModel = {
+            selectdata: {FileRefID: '', pageindex: 1, pagesize: 10, ptotal: 0},//查询参数:FileRefID为文件关联ID
+            filetype: 71,//文件类型
+            items: [],//列表数据地址
+            readonly: true,//是否只能查看
+            title: '附件',
+            addFileButton: '上传'
+        };
+
+        $scope.getData = function () {
+            $http
+            ({
+                method: 'get', url: "../../api/partylife/meeting/get",
+                params: {
+                    'id': $scope.editParams.id
+                }
+            }).then(function (result) {
+                $scope.dataModel = result.data.item;
+                $scope.reqFileModel.selectdata.FileRefID = $scope.dataModel.partylifemeetingid;
+            }, function (resp) {
+                $scope.showMsg('错误', '服务器错误:' + resp.data);
+            });
+        };
+
+        $scope.pagechange = function () {
+            $bsRouterState.$closeTab($scope);
+        };
+
+        $scope.getData();
+    });
+})(angular);

+ 165 - 0
src/main/resources/static/app/main/partylife/tqdflzhy/edit.html

@@ -0,0 +1,165 @@
+<titlemenu></titlemenu>
+<div class="dj-card">
+    <div class="dj-body" activate-input activate-select>
+        <div class="card">
+                <form class="form-horizontal" role="form" id="tqdflzhyform"
+                      name="tqdflzhyform" ng-submit="save(tqdflzhyform.$valid)" novalidate>
+                    <div class="dj-formtable">
+                        <table class="dj-table dj-table3">
+                            <tr>
+                                <th>所属党组织<span style="color:red;">*</span></th>
+                                <td>
+                                    <div class="input-group input-group-search"
+                                         title="选择党组织" ng-click="selectParty()">
+                                        <input name="partyname" type="text" ng-model="dataModel.partyname"
+                                               class="form-control" ng-required="true"
+                                               ng-disabled="true"/>
+                                        <span class="input-group-addon"><i class="material-icons">search</i></span>
+                                    </div>
+                                    <span ng-show="this.tqdflzhyform.partyname.$invalid &&  this.tqdflzhyform.$submitted"
+                                          class="error">必填.</span>
+                                </td>
+                                <th>类别<span style="color:red;">*</span></th>
+                                <td ng-class="{ 'has-error' : this.tqdflzhyform.meetingtype.$invalid &&  this.tqdflzhyform.$submitted}">
+                                        <select name="meetingtype" ng-model="dataModel.meetingtype" class="form-control"
+                                                ng-options="type.dickey as type.dicvalue for type in meetingTypeList"
+                                                ng-required="true">
+                                            <option value="">--全部--</option>
+                                        </select>
+                                        <span ng-show="this.tqdflzhyform.meetingtype.$invalid &&  this.tqdflzhyform.$submitted"
+                                              class="error">必填.</span>
+                                </td>
+                                <th>主持人</th>
+                                <td ng-class="{ 'has-error' : this.tqdflzhyform.compere.$invalid &&  this.tqdflzhyform.$submitted}">
+                                    <input type="text" class="form-control" name="compere"
+                                           autocomplete="off" autoclose="true" ng-model="dataModel.compere"/>
+                                </td>
+                            </tr>
+                            <tr>
+                                <th>会议时间<span style="color:red;">*</span></th>
+                                <td ng-class="{ 'has-error' : this.tqdflzhyform.meetingdate.$invalid &&  this.tqdflzhyform.$submitted}">
+                                    <input name="meetingdate" class="form-control"
+                                           autocomplete="off" autoclose="true"
+                                           data-date-format="yyyy-MM-dd" data-date-type="date"
+                                           ng-model="dataModel.meetingdate"
+                                           placeholder="" bs-datepicker ng-required="true"/>
+                                    <span ng-show="this.tqdflzhyform.meetingdate.$invalid &&  this.tqdflzhyform.$submitted"
+                                          class="error">必填.</span>
+                                </td>
+                                <th>会议名称<span style="color:red;">*</span></th>
+                                <td colspan="3" ng-class="{ 'has-error' : this.tqdflzhyform.title.$invalid &&  this.tqdflzhyform.$submitted}">
+                                    <input type="text" class="form-control" name="title" autocomplete="off" autoclose="true"
+                                           ng-model="dataModel.title" ng-required="true"/>
+                                    <span ng-show="this.tqdflzhyform.title.$invalid &&  this.tqdflzhyform.$submitted"
+                                          class="error">必填.</span>
+                                </td>
+                            </tr>
+                            <tr>
+                                <th>会议地址</th>
+                                <td colspan="5" ng-class="{ 'has-error' : this.tqdflzhyform.address.$invalid &&  this.tqdflzhyform.$submitted}">
+                                    <div class="form-group" style="margin-bottom: 4px;margin-top: 5px;">
+                                        <div class="form-line select-group" style="padding-bottom: 1px;">
+                                            <select ng-model="dataModel.address"
+                                                    ng-options="type as type for type in addressList"
+                                                    class="form-control"
+                                                    name="addressSelect">
+                                            </select>
+                                        </div>
+                                        <div class="form-line" style="width: 98%;margin-top: -29px;z-index: 9;"
+                                             ng-class="{ 'focused error' : this.tqdflzhyform.address.$invalid &&  this.tqdflzhyform.$submitted}">
+                                            <input type="text" name="address"
+                                                   ng-model="dataModel.address"
+                                                   maxlength="1000" autocomplete="off" autoclose="true"
+                                                   class="form-control"/>
+                                        </div>
+                                        <span ng-show="this.tqdflzhyform.address.$invalid &&  this.tqdflzhyform.$submitted"
+                                              class="error">必填.</span>
+                                    </div>
+                                </td>
+                            </tr>
+                        </table>
+                    </div>
+
+                    <div class="dj-formtable">
+                        <div class="table-responsive list-table-panel">
+                            <div class="list-table-title">
+                                <div class="table-title">
+                                    出席人员列表({{dataModel.personnellist.length}}人)
+                                </div>
+                                <div class="table-tool">
+                                    <button type="button" class="btn btn-primary dropdown-toggle"
+                                            data-dataoptions="selectUserlist" title="新增"
+                                            ng-click="selectUser()"
+                                            bsselectdata-pro>
+                                        新增
+                                    </button>
+                                </div>
+                            </div>
+                            <div class="outoflow" style="max-height: 300px;">
+                                <table class="table table-bordered table-striped table-hover js-basic-example dataTable text-nowrap">
+                                    <thead>
+                                    <tr>
+                                        <th>序号</th>
+                                        <th>姓名</th>
+                                        <th>是否缺勤</th>
+                                        <th>缺勤原因</th>
+                                        <th>操作</th>
+                                    </tr>
+                                    </thead>
+                                    <tbody>
+                                    <tr ng-repeat="it in dataModel.personnellist">
+                                        <td scope="row">{{$index+1}}</td>
+                                        <td>{{it.xm}}</td>
+                                        <td>
+                                            <input type="checkbox" id="{{pageId}}_checkbox_{{$index+1}}"
+                                                   class="filled-in chk-col-red" ng-checked="it.isabsenteeism==1"
+                                                   ng-click="it.isabsenteeism==1?it.isabsenteeism=0:it.isabsenteeism=1"/>
+                                            <label class="checkbox_lable" style="height: 10px;"
+                                                   for="{{pageId}}_checkbox_{{$index+1}}">{{it.isabsenteeism == 1 ? "是" : "否"}}</label>
+                                        </td>
+                                        <td>
+                                            <textarea name="absenteeismcause" ng-model="it.absenteeismcause"
+                                                      class="form-control" rows="3"></textarea>
+                                        </td>
+                                        <td class="text-center">
+                                            <button class="btn td-btn bg-pink waves-effect"
+                                                    ng-click="deleteUser($index)" title="删除">
+                                                删除
+                                            </button>
+                                        </td>
+                                    </tr>
+                                    <tr ng-if="dataModel.personnellist.length<=0">
+                                        <td colspan="7" style="text-align:center">暂无数据</td>
+                                    </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="dj-formtable">
+                        <table class="dj-table">
+                            <tr>
+                                <th style="width: 5%;">列席人员</th>
+                                <td colspan="5">
+                                    <input type="text" name="personnel" ng-model="dataModel.personnel"
+                                           autocomplete="off" autoclose="true" class="form-control"/>
+                                </td>
+                            </tr>
+                            <tr>
+                                <th style="width: 5%;">会议主要议程及结果</th>
+                                <td colspan="5">
+                                   <textarea name="result" ng-model="dataModel.result"
+                                             class="form-control" rows="3"></textarea>
+                                </td>
+                            </tr>
+                        </table>
+                    </div>
+                    <bsfiles ng-model="reqFileModel"/>
+                    <div class="form_foot">
+                        <button type="button" class="btn btn-default" ng-click="pagechange()">取消</button>
+                        <button type="submit" class="btn btn-primary" form="tqdflzhyform">保存</button>
+                    </div>
+                </form>
+        </div>
+    </div>
+</div>

+ 186 - 0
src/main/resources/static/app/main/partylife/tqdflzhy/edit.js

@@ -0,0 +1,186 @@
+(function ($app) {
+    $app.module('gtPartyApp').controller('pf_tqdflzhyMeetingEditCtrl', function ($scope, $http, $modal, $ocLazyLoad, $alert, $loading, $state, $bsRouterState, AuthUser, $timeout, $excel, $partySelect, $filter) {
+        $scope.editParams = $bsRouterState.$params($scope);
+        $scope.pageId = $bsRouterState.tabs.activeTab;
+        $scope.dataModel = {};
+        $scope.addressList = [];
+        $scope.meetingTypeList = [];
+
+        $scope.loadMeetingTypes=function(){
+            $http({
+                method: 'get',
+                url: '../../api/dictionary/getDictionaryListByDicTypeKey',
+                params: {dicTypeKey: 'meetingType'}
+            }).then(function (result) {
+                $scope.meetingTypeList = result.data;
+            }, function (resp) {
+
+            });
+        };
+
+        $scope.reqFileModel = {
+            selectdata: {FileRefID: '', pageindex: 1, pagesize: 10, ptotal: 0},//查询参数:FileRefID为文件关联ID
+            filetype: 71,//文件类型
+            items: [],//列表数据地址
+            readonly: false,//是否只能查看
+            title: '附件',
+            addFileButton: '上传'
+        };
+
+        //选择党支部
+        $scope.partyConfig = {
+            scope: $scope,
+            selectedKey: '',
+            selectedText: '',
+            selectedData: [],
+            isMulti: false,
+            isshowxz: 1
+        };
+        $partySelect.initServer($scope.partyConfig);
+        $scope.$watch("partyConfig.selectedKey", function (newVal, oldVal) {
+            if (newVal) {
+                $scope.dataModel.partycode = $scope.partyConfig.selectedKey;
+                $scope.dataModel.partyname = $scope.partyConfig.selectedText;
+
+                $scope.getUserList();
+                $scope.partyConfig.selectedText = "";
+                $scope.partyConfig.selectedKey = "";
+            }
+        }, true);
+        $scope.selectParty = function () {
+            $partySelect.showModal();
+        };
+
+        //选择会议成员
+        $scope.selectUserlist = {
+            url: "../../api/partyUser/getPartyUserList",
+            title: '人员选择',
+            isMulti: true,
+            selectData: {xm: '姓名', szdzb: '所在组织架构'},
+            columns: {XM: '姓名', XBMC: '性别', JG: '籍贯', DZZMC: '所在组织架构'},
+            selectLabelKey: 'XM',
+            selectValuekey: 'RYJBXXBS',
+            selectedValueData: '',
+            selectedLabeData: '',
+            selectedJData: [],
+            selectParams: {
+                dzzdm: $scope.dataModel.partycode,
+                removeUsers: '',
+                //szdzbdm: $scope.dataModel.shyktype == 2 ? $scope.dataModel.partycode : '',
+                ryzt: '2,3' //预备党员,正式党员
+            }
+        };
+        $scope.$watch('selectUserlist.selectedValueData', function (newVal) {
+            if (newVal != '' && newVal != undefined) {
+                $http({
+                    method: 'get',
+                    url: '../../api/partyUser/getPartyUserList',
+                    params: {
+                        userIds: newVal,
+                        pageindex: 1,
+                        pagesize: 10000
+                    }
+                }).then(function (result) {
+                    $loading.hide();
+                    result.data.item.list.forEach(item => {
+                        item.SIGNINSTATUS = 2;
+                    });
+                    let data = [];
+                    result.data.item.list.forEach(x=>{
+                        data.push({rybm: x.RYBM, ryjbxxbs: x.RYJBXXBS, xm: x.XM, isabsenteeism: 0, absenteeismcause: ''});
+                    })
+                    $scope.dataModel.personnellist = $scope.dataModel.personnellist.concat(data);
+
+                    $scope.selectUserlist.selectedValueData = "";
+                    $scope.selectUserlist.selectedLabeData = "";
+                }, function (resp) {
+                    $loading.hide();
+                    $scope.showMsg('错误', '服务器错误');
+                });
+            }
+        });
+        $scope.$watch('dataModel.personnellist', function (newVal) {
+             if($scope.dataModel.personnellist){
+                 $scope.setRemoveUser();
+             }
+        }, true);
+
+        $scope.setRemoveUser = function () {
+            $scope.selectUserlist.selectParams.removeUsers = "";
+            angular.forEach($scope.dataModel.personnellist, function (val, index) {
+                $scope.selectUserlist.selectParams.removeUsers += val.ryjbxxbs + ','
+            });
+        };
+
+        //人员操作
+        $scope.deleteUser = function (index) {
+            if (confirm("请确认是否需要移除参会人员!")) {
+                $scope.dataModel.personnellist.splice(index, 1);
+            }
+        };
+
+        $scope.getUserAddressList = function () {
+            $http({
+                method: 'get',
+                url: '../../api/partylife/meeting/getUserAddressList',
+                params: {partyLifeMeetingType : $scope.editParams.partyLifeMeetingType}
+            }).then(function (result) {
+                $scope.addressList = result.data.item;
+            }, function (resp) {
+
+            });
+        };
+
+        $scope.getData = function () {
+            $http
+            ({
+                method: 'get', url: "../../api/partylife/meeting/get",
+                params: {
+                    'id': $scope.editParams.id
+                }
+            }).then(function (result) {
+                $scope.dataModel = result.data.item;
+                $scope.dataModel.partylifemeetingtype = $scope.editParams.partyLifeMeetingType;
+                $scope.reqFileModel.selectdata.FileRefID = $scope.dataModel.partylifemeetingid;
+                if(!$scope.dataModel.partycode){
+                    $scope.dataModel.partycode = AuthUser.getUser().DPCode;
+                    $scope.dataModel.partyname = AuthUser.getUser().DPName;
+                }
+                $scope.loadMeetingTypes();
+                $scope.getUserAddressList();
+            }, function (resp) {
+                $scope.showMsg('错误', '服务器错误:' + resp.data);
+            });
+        };
+
+        $scope.save = function (isflag) {
+            if (isflag) {
+                $loading.show();
+                $http({
+                    method: "post",
+                    url: "../../api/partylife/meeting/save",
+                    data: $scope.dataModel
+                }).then(function (result) {
+                    $loading.hide();
+                    if (result.data.success) {
+                        $scope.showMsg('成功', "操作成功");
+                        $scope.pagechange();
+                        //重新刷新列表
+                        $scope.$emit("tabReloadData", {name: 'pf_tqdflzhyMeetingListCtrl', data: 1});
+                    } else {
+                        $scope.showMsg('失败', result.data.msg);
+                    }
+                }, function (resp) {
+                    $loading.hide();
+                    $scope.showMsg('错误', '服务器错误:' + resp.data);
+                });
+            }
+        };
+
+        $scope.pagechange = function () {
+            $bsRouterState.$closeTab($scope);
+        };
+
+        $scope.getData();
+    });
+})(angular);

+ 183 - 0
src/main/resources/static/app/main/partylife/tqdflzhy/list.html

@@ -0,0 +1,183 @@
+<titlemenu></titlemenu>
+<div class="dj-list">
+    <div class="dj-list-body">
+        <div party-tree data-selectdzzdm="treeparams.selectdzzdm" data-selectdzzmc="treeparams.selectdzzmc"
+             data-defaultselected="treeparams.defaultselected" data-isunfold="treeparams.isunfold"></div>
+        <div class="dj-list-content">
+            <div class="card">
+                <div activate-input activate-select class="header search-header">
+                    <div fold-partytree data-isunfold="treeparams.isunfold"></div>
+                    <div class="search-param-panel">
+                        <div class="search-input">
+                            <form class="form-horizontal">
+                                <div class="row clearfix form-inline">
+                                    <div class="col-lg-2 col-md-2 dj-label">
+                                        <label>当前选中组织</label>
+                                    </div>
+                                    <div class="col-lg-2 col-md-2">
+                                        <div class="form-group">
+                                            <div class="form-line">
+                                                <div class="input-group input-group-search">
+                                                    <input name="selectdzzmc" type="text" style="min-width: 90px"
+                                                           ng-model="treeparams.selectdzzmc" class="form-control"
+                                                           ng-disabled="true"/>
+                                                    <span class="input-group-addon"
+                                                          ng-click="setisunfold()">选择</span>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div class="col-lg-2 col-md-2 dj-label">
+                                        <label>会议名称</label>
+                                    </div>
+                                    <div class="col-lg-2 col-md-2">
+                                        <div class="form-group">
+                                            <div class="form-line">
+                                                <input name="title" class="form-control" type="text"
+                                                       ng-keypress="($event.which === 13)?search():0"
+                                                       ng-model="selectparams.title"
+                                                       placeholder=""/>
+
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div class="col-lg-2 col-md-2 dj-label">
+                                        <label>会议时间</label>
+                                    </div>
+                                    <div class="col-lg-2 col-md-2">
+                                        <div class="form-group">
+                                            <div class="form-line">
+                                                <input name="startDate" class="form-control fm-ct-first"
+                                                       autocomplete="off"
+                                                       autoclose="true"
+                                                       data-date-format="yyyy-MM-dd" data-date-type="string"
+                                                       ng-model="selectparams.startDate"
+                                                       ng-change="search()"
+                                                       placeholder="" bs-datepicker/>
+                                                <input name="endDate" class="form-control fm-ct-last"
+                                                       autocomplete="off"
+                                                       autoclose="true"
+                                                       data-date-format="yyyy-MM-dd" data-date-type="string"
+                                                       ng-model="selectparams.endDate"
+                                                       ng-change="search()"
+                                                       placeholder="" bs-datepicker/>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </form>
+                        </div>
+                        <div class="search-btn" style="margin-right: 20px;">
+                            <div style="min-width: 13em">
+                                <button class="btn btn-default1"
+                                        ng-click="search()">查询
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="search-btn" style="margin-right: 20px;">
+                        <div style="float: right">
+                            <button class="btn btn-default1"
+                                    ng-click="add()">新增
+                            </button>
+                            <button class="btn btn-default1"
+                                    ng-click="delete()">删除
+                            </button>
+                            <button class="btn btn-default1"
+                                    ng-click="export()">导出
+                            </button>
+                        </div>
+                    </div>
+                </div>
+                <div class="body">
+                    <div class="zero-list-table-panel">
+                        <div class="zero-source-table-div">
+                            <table class="table table-bordered table-striped table-hover js-basic-example dataTable text-nowrap">
+                                <thead>
+                                <tr>
+                                    <th>
+                                        <input type="checkbox" id="{{pageId}}_md_checkbox_all"
+                                               class="filled-in chk-col-red" ng-checked="isAll==true"
+                                               ng-click="selectAll()"/>
+                                        <label class="checkbox_lable" style="height: 10px;"
+                                               for="{{pageId}}_md_checkbox_all"></label></th>
+                                    <th>序号</th>
+                                    <th>所属党组织</th>
+                                    <th>类别</th>
+                                    <th>会议名称</th>
+                                    <th>时间</th>
+                                    <th>地点</th>
+                                    <th>主持人</th>
+                                    <th>出席人员数量</th>
+                                    <th>缺勤人员数量</th>
+                                    <th>创建人</th>
+                                    <th>创建时间</th>
+                                </tr>
+                                </thead>
+                                <tbody>
+                                <tr ng-repeat="it in dataList">
+                                    <td class="text-center">
+                                        <input type="checkbox" id="{{pageId}}_md_checkbox_{{$index+1}}"
+                                               class="filled-in chk-col-red" ng-checked="it.checked==1"
+                                               ng-click="it.checked==1?it.checked=0:it.checked=1"/>
+                                        <label class="checkbox_lable" style="top:6px;"
+                                               for="{{pageId}}_md_checkbox_{{$index+1}}"></label>
+                                    </td>
+                                    <td scope="row" class="text-center">
+                                        {{selectparams.pagesize*(selectparams.pageindex-1)+$index+1}}
+                                    </td>
+                                    <td>{{it.partyname}}</td>
+                                    <td>{{it.meetingtypename}}</td>
+                                    <td>{{it.title}}</td>
+                                    <td>{{it.meetingdate | date:'yyyy-MM-dd'}}</td>
+                                    <td>{{it.address}}</td>
+                                    <td>{{it.compere}}</td>
+                                    <td>{{it.attendance}}</td>
+                                    <td>{{it.absentcount}}</td>
+                                    <td>{{it.createusername}}</td>
+                                    <td>{{it.createtime | date:'yyyy-MM-dd HH:mm:ss'}}</td>
+                                </tr>
+                                <tr ng-if="dataList.length<=0">
+                                    <td colspan="15" style="text-align:center">暂无数据</td>
+                                </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                        <div class="zero-target-table-div">
+                            <table class="table table-bordered table-striped table-hover js-basic-example dataTable text-nowrap">
+                                <thead>
+                                <tr>
+                                    <th>操作</th>
+                                </tr>
+                                </thead>
+                                <tbody>
+                                <tr ng-repeat="it in dataList" zero-table-height>
+                                    <td>
+                                        <button class="btn td-btn bg-light-green waves-effect"
+                                                ng-click="show(it.partylifemeetingid)"
+                                                title="查看">
+                                            查看
+                                        </button>
+                                        <button
+                                                role-permission-code="brandMgList.btnEdit"
+                                                class="btn td-btn bg-light-green waves-effect"
+                                                ng-click="edit(it.partylifemeetingid)"
+                                                title="修改">
+                                            修改
+                                        </button>
+                                    </td>
+                                </tr>
+                                <tr ng-if="pageInfo.ptotal==0">
+                                    <td colspan="1" style="text-align:center">无</td>
+                                </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                    <pagination data-pageindex="selectparams.pageindex" data-pagesize="selectparams.pagesize"
+                                data-ptotal="pageInfo.ptotal"></pagination>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 170 - 0
src/main/resources/static/app/main/partylife/tqdflzhy/list.js

@@ -0,0 +1,170 @@
+(function ($app) {
+    $app.module('gtPartyApp').controller('pf_tqdflzhyMeetingListCtrl', function ($scope, $http, $modal, $ocLazyLoad, $alert, $loading, $state, $bsRouterState, AuthUser, $timeout, $excel, $partySelect, $filter) {
+        $state.params = $bsRouterState.$params($scope);
+        $scope.loginUserId = AuthUser.getUser().Id;
+        $scope.isShow = false;
+        $scope.moreTxt = "更多";
+        $scope.partyLifeMeetingType = $state.params.partyLifeMeetingType;
+        $scope.isAll = false;
+        $scope.pageId = "meetingList";
+        $scope.tabNameAdd = "home.pf_tqdflzhyMeetingAdd";
+        $scope.tabNameEdit = "home.pf_tqdflzhyMeetingEdit";
+        $scope.tabNameDetail = "home.pf_tqdflzhyMeetingDetail";
+
+        //定义数据集合
+        $scope.dataList = []; //列表数据
+        //组织树参数
+        $scope.treeparams = {
+            isunfold: false,//组织结构树展开收缩
+            selectdzzdm: "",
+            selectdzzmc: "",
+            defaultselected: $state.params.dzzdm
+        };
+        //查询条件
+        $scope.selectparams = {
+            pageindex: 1,
+            pagesize: 10,
+            partyLifeMeetingType: $scope.partyLifeMeetingType,
+            dzzdm: '',
+            title: '',
+            startDate: null,
+            endDate: null
+        };
+        $scope.pageInfo = {ptotal: 0};
+
+        $scope.$on('tabChildReloadData', function (event, data) {
+            if (data.name == 'pf_tqdflzhyMeetingListCtrl') {
+                $scope.loadData();
+            }
+        });
+
+        //加载列表数据
+        $scope.loadData = function () {
+            $http
+            ({
+                method: 'get', url: '../../api/partylife/meeting/getList', params: $scope.selectparams
+            }).then(function (result) {
+                $scope.dataList = result.data.item.list;
+                $scope.pageInfo.ptotal = result.data.item.total;
+            }, function (res) {
+                $scope.showMsg('错误', '服务器错误');
+            });
+        };
+
+        $scope.search = function () {
+            $scope.loadData();
+        };
+
+        $scope.selectAll = function () {
+            $scope.isAll = !$scope.isAll;
+            angular.forEach($scope.dataList, function (item) {
+                item.checked = $scope.isAll ? 1 : 0;
+            });
+        };
+
+        //查看
+        $scope.show = function (id) {
+            $bsRouterState.$closeTabName($scope.tabNameDetail);
+            $timeout(function () {
+                $bsRouterState.go($scope.tabNameDetail, {
+                    id: id
+                });
+            }, 100);
+        };
+
+        //新增
+        $scope.add = function () {
+            $bsRouterState.$closeTabName($scope.tabNameAdd);
+            $timeout(function () {
+                $bsRouterState.go($scope.tabNameAdd, {
+                    id: ''
+                });
+            }, 100);
+        };
+
+        //修改
+        $scope.edit = function (id) {
+            $bsRouterState.$closeTabName($scope.tabNameEdit);
+            $timeout(function () {
+                $bsRouterState.go($scope.tabNameEdit, {
+                    id: id
+                });
+            }, 100);
+        };
+
+        $scope.export = function () {
+            var params = "?1=1";
+            for (var p in $scope.selectparams) {
+                if ($scope.selectparams[p] !== '' && $scope.selectparams[p] !== null)
+                    params += ("&" + p + "=" + encodeURI($scope.selectparams[p]));
+            }
+            window.open('../../api/partylife/meeting/exportTqdflzhy' + params);
+        };
+
+        $scope.delete = function (id) {
+            var ids = [];
+            if (id)
+                ids.push(id);
+            else
+                ids = $scope.dataList.filter(it => it.checked == true).map(it => it.partylifemeetingid);
+
+            if (ids.length == 0) {
+                $scope.showMsg('消息', "请选择需要删除的数据");
+                return false;
+            }
+
+            if (confirm("确定删除?")) {
+                $loading.show();
+                $http({
+                    method: "post",
+                    url: "../../api/partylife/meeting/delete",
+                    data: {
+                        ids: JSON.stringify(ids)
+                    }
+                }).then(function (result) {
+                    $loading.hide();
+                    if (result.data.success) {
+                        $scope.showMsg('成功', result.data.msg);
+                        //重新刷新列表
+                        $scope.loadData();
+                    } else {
+                        $scope.showMsg('失败', result.data.msg);
+                    }
+                }, function (resp) {
+                    $scope.showMsg('错误', '服务器错误');
+                });
+            }
+        };
+
+        $scope.$watch("selectparams.pageindex", function (newVal, oldVal) {
+            if ($scope.pageInfo.ptotal > 0) {
+                $scope.loadData();
+            }
+        });
+        $scope.$watch("treeparams.selectdzzdm", function (newVal, oldVal) {
+            if (newVal != "") {
+                if ($scope.treeparams.defaultselected != "" && $scope.treeparams.defaultselected != null &&
+                    $scope.treeparams.defaultselected != $scope.treeparams.selectdzzdm)
+                    return;
+
+                $scope.selectparams.dzzdm = $scope.treeparams.selectdzzdm;
+
+                $scope.loadData();
+            }
+        });
+        $scope.setisunfold = function () {
+            $scope.treeparams.isunfold = !$scope.treeparams.isunfold;
+            $scope.$emit('menudatas.toggle', !$scope.treeparams.isunfold);
+        };
+        $scope.isShowClick = function () {
+            $scope.isShow = !$scope.isShow;
+            if ($scope.moreTxt == "更多") {
+                $scope.moreTxt = "收起";
+            } else if ($scope.moreTxt == "收起") {
+                $scope.moreTxt = "更多";
+            }
+        };
+
+        $scope.loadData();
+    });
+})(angular);