فهرست منبع

“三重一大”制度

lizeyu 9 ماه پیش
والد
کامیت
3d6f8761fa
23فایلهای تغییر یافته به همراه1557 افزوده شده و 25 حذف شده
  1. 25 0
      lib/数据更新脚本.txt
  2. 58 7
      src/main/java/com/ghsc/partybuild/controller/partyLife/MeetingController.java
  3. 3 0
      src/main/java/com/ghsc/partybuild/mapper/PartyLifeMeetingCQuery.java
  4. 24 0
      src/main/java/com/ghsc/partybuild/mapper/PfPartylifemeetingScydMapper.java
  5. 330 0
      src/main/java/com/ghsc/partybuild/model/PfPartylifemeetingScydExample.java
  6. 23 0
      src/main/java/com/ghsc/partybuild/model/PfPartylifemeetingScydKey.java
  7. 39 7
      src/main/java/com/ghsc/partybuild/service/impl/partyLife/MeetingServiceImpl.java
  8. 1 2
      src/main/java/com/ghsc/partybuild/service/partyLife/MeetingService.java
  9. 9 0
      src/main/java/com/ghsc/partybuild/vo/PartyLifeMeetingScydlVo.java
  10. 2 0
      src/main/java/com/ghsc/partybuild/vo/PartyLifeMeetingVo.java
  11. 1 0
      src/main/resources/generatorConfig.xml
  12. 7 1
      src/main/resources/mapping/PartyLifeMeetingCQuery.xml
  13. 145 0
      src/main/resources/mapping/PfPartylifemeetingScydMapper.xml
  14. 5 5
      src/main/resources/static/app/js/service.js
  15. 39 0
      src/main/resources/static/app/main/app.js
  16. 2 2
      src/main/resources/static/app/main/partylife/meeting/edit.js
  17. 1 1
      src/main/resources/static/app/main/partylife/meeting/list.html
  18. 81 0
      src/main/resources/static/app/main/partylife/scyd/detail.html
  19. 53 0
      src/main/resources/static/app/main/partylife/scyd/detail.js
  20. 164 0
      src/main/resources/static/app/main/partylife/scyd/edit.html
  21. 191 0
      src/main/resources/static/app/main/partylife/scyd/edit.js
  22. 183 0
      src/main/resources/static/app/main/partylife/scyd/list.html
  23. 171 0
      src/main/resources/static/app/main/partylife/scyd/list.js

+ 25 - 0
lib/数据更新脚本.txt

@@ -34,3 +34,28 @@ 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 ('873f7565-0dd8-4a1c-877a-06f6e2900011', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '4806821b-b18e-11ec-829d-7085c2a99990', NULL, 1, 'home.pf_meetingEdit5', '编辑民主集中制', NULL, NULL, NULL, 0, 0, NULL);
 INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('873f7565-0dd8-4a1c-877a-06f6e2900022', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '4806821b-b18e-11ec-829d-7085c2a99990', NULL, 2, 'home.pf_meetingAdd5', '新增民主集中制', NULL, NULL, NULL, 0, 0, NULL);
 INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('873f7565-0dd8-4a1c-877a-06f6e2900033', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '4806821b-b18e-11ec-829d-7085c2a99990', NULL, 3, 'home.pf_meetingDetail5', '查看民主集中制详情', NULL, NULL, NULL, 0, 0, NULL);
+
+
+-- 组织生活会议 “三重一大”副表
+CREATE TABLE `pf_partylifemeeting_scyd`  (
+  `partyLifeMeetingId` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '会议id',
+  `scydType` int NOT NULL COMMENT '“三重一大”类别  1-重大事项决策、2-重要干部任免、3-重大项目投资决策、4-大额资金使用',
+  PRIMARY KEY (`partyLifeMeetingId`,`scydType`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+
+INSERT INTO `cf_dictionary` (`DICTIONARYID`, `DICKEY`, `DICVALUE`, `DICTYPEKEY`, `DICTYPE`, `APPLICATIONID`, `DICNOTE`, `OPERATETIME`, `OPERATESTATE`, `SYNCSTATE`) VALUES ('23f5e615-b16a-11ec-829d-7085c2a00003', 6, '“三重一大”制度', 'PartyLifeMeetingType', 2, 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', NULL, '2022-04-01 15:45:10', 'a', 'n');
+
+INSERT INTO `cf_dictionary` (`DICTIONARYID`, `DICKEY`, `DICVALUE`, `DICTYPEKEY`, `DICTYPE`, `APPLICATIONID`, `DICNOTE`, `OPERATETIME`, `OPERATESTATE`, `SYNCSTATE`) VALUES ('23f5e615-b16a-11ec-0001-7085c2a00003', 1, '重大事项决策', 'scydType', 2, 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', NULL, '2022-04-01 15:45:10', 'a', 'n');
+INSERT INTO `cf_dictionary` (`DICTIONARYID`, `DICKEY`, `DICVALUE`, `DICTYPEKEY`, `DICTYPE`, `APPLICATIONID`, `DICNOTE`, `OPERATETIME`, `OPERATESTATE`, `SYNCSTATE`) VALUES ('23f5e615-b16a-11ec-0002-7085c2a00003', 2, '重要干部任免', 'scydType', 2, 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', NULL, '2022-04-01 15:45:10', 'a', 'n');
+INSERT INTO `cf_dictionary` (`DICTIONARYID`, `DICKEY`, `DICVALUE`, `DICTYPEKEY`, `DICTYPE`, `APPLICATIONID`, `DICNOTE`, `OPERATETIME`, `OPERATESTATE`, `SYNCSTATE`) VALUES ('23f5e615-b16a-11ec-0003-7085c2a00003', 3, '重大项目投资决策', 'scydType', 2, 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', NULL, '2022-04-01 15:45:10', 'a', 'n');
+INSERT INTO `cf_dictionary` (`DICTIONARYID`, `DICKEY`, `DICVALUE`, `DICTYPEKEY`, `DICTYPE`, `APPLICATIONID`, `DICNOTE`, `OPERATETIME`, `OPERATESTATE`, `SYNCSTATE`) VALUES ('23f5e615-b16a-11ec-0004-7085c2a00003', 4, '大额资金使用', 'scydType', 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 ('4806821b-b18e-11ec-829d-7085c2a99991', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', 'c4516fca-2dd8-4373-9be8-1df510c8e5e1', NULL, 2, 'home.pf_scydMeetingList', '“三重一大”制度', NULL, NULL, NULL, 1, 0, NULL);
+INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('873f7565-0dd8-4a1c-877a-06f6e2900111', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '4806821b-b18e-11ec-829d-7085c2a99991', NULL, 1, 'home.pf_scydMeetingEdit', '编辑“三重一大”制度', NULL, NULL, NULL, 0, 0, NULL);
+INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('873f7565-0dd8-4a1c-877a-06f6e2900122', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '4806821b-b18e-11ec-829d-7085c2a99991', NULL, 2, 'home.pf_scydMeetingAdd', '新增“三重一大”制度', NULL, NULL, NULL, 0, 0, NULL);
+INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('873f7565-0dd8-4a1c-877a-06f6e2900133', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '4806821b-b18e-11ec-829d-7085c2a99991', NULL, 3, 'home.pf_scydMeetingDetail', '查看“三重一大”制度详情', NULL, NULL, NULL, 0, 0, NULL);
+
+
+

+ 58 - 7
src/main/java/com/ghsc/partybuild/controller/partyLife/MeetingController.java

@@ -4,7 +4,6 @@ import com.fasterxml.jackson.core.type.TypeReference;
 import com.github.pagehelper.PageInfo;
 import com.ghsc.partybuild.controller.jsonmodel.RequsetData;
 import com.ghsc.partybuild.model.CfDictionary;
-import com.ghsc.partybuild.model.PfPartylifemeeting;
 import com.ghsc.partybuild.service.DictionaryService;
 import com.ghsc.partybuild.service.UserService;
 import com.ghsc.partybuild.service.partyLife.MeetingService;
@@ -39,17 +38,17 @@ public class MeetingController {
 
     @ResponseBody
     @GetMapping("/getList")
-    public RequsetData<PageInfo<PartyLifeMeetingVo>> getList(int pageindex, int pagesize, 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) {
+    public RequsetData<PageInfo<PartyLifeMeetingVo>> getList(int pageindex, int pagesize, Integer 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) {
         RequsetData<PageInfo<PartyLifeMeetingVo>> result = new RequsetData<>();
-        result.setItem(meetingService.getList(pageindex, pagesize, partyLifeMeetingType, dzzdm, title, startDate,endDate));
+        result.setItem(meetingService.getList(pageindex, pagesize, partyLifeMeetingType, null, dzzdm, title, startDate,endDate));
         return result;
     }
 
     @ResponseBody
     @GetMapping("/getUserAddressList")
-    public RequsetData<List<String>> getUserAddressList(String userId) {
+    public RequsetData<List<String>> getUserAddressList() {
         RequsetData<List<String>> res = new RequsetData<>();
-        res.setItem(meetingService.getUserAddressList(userId));
+        res.setItem(meetingService.getUserAddressList(userService.getLoginUser().getUserid()));
         return res;
     }
 
@@ -124,7 +123,7 @@ public class MeetingController {
     @RequestMapping(value = "/export", method = RequestMethod.GET)
     public void exportLeaderTeam(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, dzzdm, title, startDate,endDate).getList();
+        List<PartyLifeMeetingVo> dataList = meetingService.getList(1, 10000, partyLifeMeetingType, null, dzzdm, title, startDate,endDate).getList();
         List<CfDictionary> typeList = dictionaryService.getDictionaryListByDicTypeKey("PartyLifeMeetingType");
 
         ExcelHelper excelHelper = new ExcelHelper();
@@ -138,7 +137,7 @@ public class MeetingController {
         List<String> titles = new ArrayList();
         titles.add("序号");
         titles.add("所属党组织");
-        titles.add("会议主题");
+        titles.add("会议名称");
         titles.add("会议时间");
         titles.add("会议地点");
         titles.add("主持人");
@@ -170,4 +169,56 @@ public class MeetingController {
 
         excelHelper.exportExcel(response, excelTitle + "导出.xlsx", data);
     }
+
+    @RequestMapping(value = "/exportScyd", method = RequestMethod.GET)
+    public void exportScyd(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.getScydtypenames().replace("<br />", ""));
+            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);
+    }
 }

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

@@ -1,6 +1,7 @@
 package com.ghsc.partybuild.mapper;
 
 import com.ghsc.partybuild.vo.PartyLifeMeetingPersonnelVo;
+import com.ghsc.partybuild.vo.PartyLifeMeetingScydlVo;
 import com.ghsc.partybuild.vo.PartyLifeMeetingVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -13,4 +14,6 @@ public interface PartyLifeMeetingCQuery {
     List<String> selectAddressList(String userId);
 
     List<PartyLifeMeetingPersonnelVo> selectMeetingPersonnelList(String partyLifeMeetingId);
+
+    List<PartyLifeMeetingScydlVo> selectMeetingScydList(String partyLifeMeetingId);
 }

+ 24 - 0
src/main/java/com/ghsc/partybuild/mapper/PfPartylifemeetingScydMapper.java

@@ -0,0 +1,24 @@
+package com.ghsc.partybuild.mapper;
+
+import com.ghsc.partybuild.model.PfPartylifemeetingScydExample;
+import com.ghsc.partybuild.model.PfPartylifemeetingScydKey;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface PfPartylifemeetingScydMapper {
+    long countByExample(PfPartylifemeetingScydExample example);
+
+    int deleteByExample(PfPartylifemeetingScydExample example);
+
+    int deleteByPrimaryKey(PfPartylifemeetingScydKey key);
+
+    int insert(PfPartylifemeetingScydKey record);
+
+    int insertSelective(PfPartylifemeetingScydKey record);
+
+    List<PfPartylifemeetingScydKey> selectByExample(PfPartylifemeetingScydExample example);
+
+    int updateByExampleSelective(@Param("record") PfPartylifemeetingScydKey record, @Param("example") PfPartylifemeetingScydExample example);
+
+    int updateByExample(@Param("record") PfPartylifemeetingScydKey record, @Param("example") PfPartylifemeetingScydExample example);
+}

+ 330 - 0
src/main/java/com/ghsc/partybuild/model/PfPartylifemeetingScydExample.java

@@ -0,0 +1,330 @@
+package com.ghsc.partybuild.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PfPartylifemeetingScydExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public PfPartylifemeetingScydExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andPartylifemeetingidIsNull() {
+            addCriterion("partyLifeMeetingId is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPartylifemeetingidIsNotNull() {
+            addCriterion("partyLifeMeetingId is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPartylifemeetingidEqualTo(String value) {
+            addCriterion("partyLifeMeetingId =", value, "partylifemeetingid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPartylifemeetingidNotEqualTo(String value) {
+            addCriterion("partyLifeMeetingId <>", value, "partylifemeetingid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPartylifemeetingidGreaterThan(String value) {
+            addCriterion("partyLifeMeetingId >", value, "partylifemeetingid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPartylifemeetingidGreaterThanOrEqualTo(String value) {
+            addCriterion("partyLifeMeetingId >=", value, "partylifemeetingid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPartylifemeetingidLessThan(String value) {
+            addCriterion("partyLifeMeetingId <", value, "partylifemeetingid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPartylifemeetingidLessThanOrEqualTo(String value) {
+            addCriterion("partyLifeMeetingId <=", value, "partylifemeetingid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPartylifemeetingidLike(String value) {
+            addCriterion("partyLifeMeetingId like", value, "partylifemeetingid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPartylifemeetingidNotLike(String value) {
+            addCriterion("partyLifeMeetingId not like", value, "partylifemeetingid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPartylifemeetingidIn(List<String> values) {
+            addCriterion("partyLifeMeetingId in", values, "partylifemeetingid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPartylifemeetingidNotIn(List<String> values) {
+            addCriterion("partyLifeMeetingId not in", values, "partylifemeetingid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPartylifemeetingidBetween(String value1, String value2) {
+            addCriterion("partyLifeMeetingId between", value1, value2, "partylifemeetingid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPartylifemeetingidNotBetween(String value1, String value2) {
+            addCriterion("partyLifeMeetingId not between", value1, value2, "partylifemeetingid");
+            return (Criteria) this;
+        }
+
+        public Criteria andScydtypeIsNull() {
+            addCriterion("scydType is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScydtypeIsNotNull() {
+            addCriterion("scydType is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScydtypeEqualTo(Integer value) {
+            addCriterion("scydType =", value, "scydtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andScydtypeNotEqualTo(Integer value) {
+            addCriterion("scydType <>", value, "scydtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andScydtypeGreaterThan(Integer value) {
+            addCriterion("scydType >", value, "scydtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andScydtypeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("scydType >=", value, "scydtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andScydtypeLessThan(Integer value) {
+            addCriterion("scydType <", value, "scydtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andScydtypeLessThanOrEqualTo(Integer value) {
+            addCriterion("scydType <=", value, "scydtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andScydtypeIn(List<Integer> values) {
+            addCriterion("scydType in", values, "scydtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andScydtypeNotIn(List<Integer> values) {
+            addCriterion("scydType not in", values, "scydtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andScydtypeBetween(Integer value1, Integer value2) {
+            addCriterion("scydType between", value1, value2, "scydtype");
+            return (Criteria) this;
+        }
+
+        public Criteria andScydtypeNotBetween(Integer value1, Integer value2) {
+            addCriterion("scydType not between", value1, value2, "scydtype");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 23 - 0
src/main/java/com/ghsc/partybuild/model/PfPartylifemeetingScydKey.java

@@ -0,0 +1,23 @@
+package com.ghsc.partybuild.model;
+
+public class PfPartylifemeetingScydKey {
+    private String partylifemeetingid;
+
+    private Integer scydtype;
+
+    public String getPartylifemeetingid() {
+        return partylifemeetingid;
+    }
+
+    public void setPartylifemeetingid(String partylifemeetingid) {
+        this.partylifemeetingid = partylifemeetingid == null ? null : partylifemeetingid.trim();
+    }
+
+    public Integer getScydtype() {
+        return scydtype;
+    }
+
+    public void setScydtype(Integer scydtype) {
+        this.scydtype = scydtype;
+    }
+}

+ 39 - 7
src/main/java/com/ghsc/partybuild/service/impl/partyLife/MeetingServiceImpl.java

@@ -1,19 +1,17 @@
 package com.ghsc.partybuild.service.impl.partyLife;
 
 import com.ghsc.partybuild.mapper.PfPartylifemeetingPersonnelMapper;
-import com.ghsc.partybuild.model.PfPartylifemeetingPersonnel;
-import com.ghsc.partybuild.model.PfPartylifemeetingPersonnelExample;
+import com.ghsc.partybuild.mapper.PfPartylifemeetingScydMapper;
+import com.ghsc.partybuild.model.*;
+import com.ghsc.partybuild.vo.PartyLifeMeetingScydlVo;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ghsc.partybuild.mapper.PartyLifeMeetingCQuery;
 import com.ghsc.partybuild.mapper.PfPartylifemeetingMapper;
-import com.ghsc.partybuild.model.PfPartylifemeeting;
-import com.ghsc.partybuild.model.PfPartylifemeetingExample;
 import com.ghsc.partybuild.service.DictionaryService;
 import com.ghsc.partybuild.service.partyLife.MeetingService;
 import com.ghsc.partybuild.util.DateUtils;
 import com.ghsc.partybuild.util.StringUtils;
-import com.ghsc.partybuild.vo.LeaderTeamVo;
 import com.ghsc.partybuild.vo.PartyLifeMeetingVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -21,6 +19,7 @@ import org.springframework.stereotype.Service;
 import java.util.Date;
 import java.util.List;
 import java.util.UUID;
+import java.util.stream.Collectors;
 
 @Service("pfMeetingService")
 public class MeetingServiceImpl implements MeetingService {
@@ -29,6 +28,8 @@ public class MeetingServiceImpl implements MeetingService {
     @Autowired
     private PfPartylifemeetingPersonnelMapper pfPartylifemeetingPersonnelMapper;
     @Autowired
+    private PfPartylifemeetingScydMapper pfPartylifemeetingScydMapper;
+    @Autowired
     private PartyLifeMeetingCQuery partyLifeMeetingCQuery;
     @Autowired
     private DictionaryService dictionaryService;
@@ -38,9 +39,19 @@ public class MeetingServiceImpl implements MeetingService {
     private DateUtils dateUtils;
 
     @Override
-    public PageInfo<PartyLifeMeetingVo> getList(int pageIndex, int pageSize, int partyLifeMeetingType, String dzzdm, String title, Date startDate, Date endDate){
+    public PageInfo<PartyLifeMeetingVo> getList(int pageIndex, int pageSize, Integer partyLifeMeetingType, String id, String dzzdm, String title, Date startDate, Date endDate){
         PageHelper.startPage(pageIndex, pageSize);
         List<PartyLifeMeetingVo> list = partyLifeMeetingCQuery.selectMeetingList(partyLifeMeetingType, null, dzzdm, title, startDate, endDate);
+
+        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()));
+            }
+        });
+
         PageInfo<PartyLifeMeetingVo> result = new PageInfo(list);
         return result;
     }
@@ -55,7 +66,7 @@ public class MeetingServiceImpl implements MeetingService {
         if (stringUtils.IsNullOrEmpty(id))
             return null;
 
-        List<PartyLifeMeetingVo> list = partyLifeMeetingCQuery.selectMeetingList(null, id, null, null, null, null);
+        List<PartyLifeMeetingVo> list = getList(1,999999, null, id, null, null, null, null).getList();
         PartyLifeMeetingVo data = list.size() > 0 ? list.get(0) : null;
         if(data != null){
             data.setPersonnellist(partyLifeMeetingCQuery.selectMeetingPersonnelList(data.getPartylifemeetingid()));
@@ -97,6 +108,7 @@ public class MeetingServiceImpl implements MeetingService {
             result = pfPartylifemeetingMapper.updateByPrimaryKey(data);
         }
 
+        //出席人员
         PfPartylifemeetingPersonnelExample perExp = new PfPartylifemeetingPersonnelExample();
         perExp.or().andPartylifemeetingidEqualTo(data.getPartylifemeetingid());
         pfPartylifemeetingPersonnelMapper.deleteByExample(perExp);
@@ -115,6 +127,22 @@ public class MeetingServiceImpl implements MeetingService {
             });
         }
 
+        //'“三重一大”制度'
+        if(data.getPartylifemeetingtype() == 6){
+            PfPartylifemeetingScydExample scydExp = new PfPartylifemeetingScydExample();
+            scydExp.or().andPartylifemeetingidEqualTo(data.getPartylifemeetingid());
+            pfPartylifemeetingScydMapper.deleteByExample(scydExp);
+            if(data.getScydtypes().size() > 0){
+                data.getScydtypes().forEach(key ->{
+                    PfPartylifemeetingScydKey scydModel = new PfPartylifemeetingScydKey();
+                    scydModel.setPartylifemeetingid(data.getPartylifemeetingid());
+                    scydModel.setScydtype(key);
+
+                    pfPartylifemeetingScydMapper.insert(scydModel);
+                });
+            }
+        }
+
         return result;
     }
 
@@ -127,6 +155,10 @@ public class MeetingServiceImpl implements MeetingService {
         perExp.or().andPartylifemeetingidIn(meetingIdList);
         pfPartylifemeetingPersonnelMapper.selectByExample(perExp);
 
+        PfPartylifemeetingScydExample scydExp = new PfPartylifemeetingScydExample();
+        scydExp.or().andPartylifemeetingidIn(meetingIdList);
+        pfPartylifemeetingScydMapper.deleteByExample(scydExp);
+
         return pfPartylifemeetingMapper.deleteByExample(exp);
     }
 }

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

@@ -1,14 +1,13 @@
 package com.ghsc.partybuild.service.partyLife;
 
 import com.github.pagehelper.PageInfo;
-import com.ghsc.partybuild.model.PfPartylifemeeting;
 import com.ghsc.partybuild.vo.PartyLifeMeetingVo;
 
 import java.util.Date;
 import java.util.List;
 
 public interface MeetingService {
-    PageInfo<PartyLifeMeetingVo> getList(int pageIndex, int pageSize, int partyLifeMeetingType, String dzzdm, String title, Date startDate, Date endDate);
+    PageInfo<PartyLifeMeetingVo> getList(int pageIndex, int pageSize, Integer partyLifeMeetingType, String id, String dzzdm, String title, Date startDate, Date endDate);
 
     List<String> getUserAddressList(String userId);
 

+ 9 - 0
src/main/java/com/ghsc/partybuild/vo/PartyLifeMeetingScydlVo.java

@@ -0,0 +1,9 @@
+package com.ghsc.partybuild.vo;
+
+import com.ghsc.partybuild.model.PfPartylifemeetingScydKey;
+import lombok.Data;
+
+@Data
+public class PartyLifeMeetingScydlVo extends PfPartylifemeetingScydKey {
+    private String scydtypename;
+}

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

@@ -12,4 +12,6 @@ public class PartyLifeMeetingVo extends PfPartylifemeeting {
     private Integer absentcount;//缺勤人数
     private Integer attendance;//出席人员数量
     public List<PartyLifeMeetingPersonnelVo> personnellist;
+    private String scydtypenames; //“三重一大”类别
+    private List<Integer> scydtypes; //“三重一大”类别
 }

+ 1 - 0
src/main/resources/generatorConfig.xml

@@ -265,5 +265,6 @@
         <table schema="" tableName="pf_partylifemeeting_personnel"></table>
 
         -->
+        <table schema="" tableName="pf_partylifemeeting_scyd"></table>
     </context>
 </generatorConfiguration>

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

@@ -45,8 +45,14 @@
                pp.createTime, pp.createUserId, pp.updateTime, pp.updateUserId, u.XM, u.RYJBXXBS,
                case when pp.isAbsenteeism=1 then '缺勤' else '出勤' end as isAbsenteeismName
         from pf_partylifemeeting_personnel pp
-                 left join VM_RYJBXX u on pp.rybm = u.rybm
+        left join VM_RYJBXX u on pp.rybm = u.rybm
         where pp.partyLifeMeetingId = #{partyLifeMeetingId}
         order by pp.createTime
     </select>
+    <select id="selectMeetingScydList" resultType="com.ghsc.partybuild.vo.PartyLifeMeetingScydlVo">
+        select a.partyLifeMeetingId,a.scydType,b.DICVALUE as scydTypeName
+        from pf_partylifemeeting_scyd a
+        inner join cf_dictionary b on b.DICTYPEKEY='scydType' and a.scydType = b.DICKEY
+        where a.partyLifeMeetingId = #{partyLifeMeetingId}
+    </select>
 </mapper>

+ 145 - 0
src/main/resources/mapping/PfPartylifemeetingScydMapper.xml

@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ghsc.partybuild.mapper.PfPartylifemeetingScydMapper">
+  <resultMap id="BaseResultMap" type="com.ghsc.partybuild.model.PfPartylifemeetingScydKey">
+    <id column="partyLifeMeetingId" jdbcType="VARCHAR" property="partylifemeetingid" />
+    <id column="scydType" jdbcType="INTEGER" property="scydtype" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    partyLifeMeetingId, scydType
+  </sql>
+  <select id="selectByExample" parameterType="com.ghsc.partybuild.model.PfPartylifemeetingScydExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from pf_partylifemeeting_scyd
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="com.ghsc.partybuild.model.PfPartylifemeetingScydKey">
+    delete from pf_partylifemeeting_scyd
+    where partyLifeMeetingId = #{partylifemeetingid,jdbcType=VARCHAR}
+      and scydType = #{scydtype,jdbcType=INTEGER}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.ghsc.partybuild.model.PfPartylifemeetingScydExample">
+    delete from pf_partylifemeeting_scyd
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.ghsc.partybuild.model.PfPartylifemeetingScydKey">
+    insert into pf_partylifemeeting_scyd (partyLifeMeetingId, scydType)
+    values (#{partylifemeetingid,jdbcType=VARCHAR}, #{scydtype,jdbcType=INTEGER})
+  </insert>
+  <insert id="insertSelective" parameterType="com.ghsc.partybuild.model.PfPartylifemeetingScydKey">
+    insert into pf_partylifemeeting_scyd
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="partylifemeetingid != null">
+        partyLifeMeetingId,
+      </if>
+      <if test="scydtype != null">
+        scydType,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="partylifemeetingid != null">
+        #{partylifemeetingid,jdbcType=VARCHAR},
+      </if>
+      <if test="scydtype != null">
+        #{scydtype,jdbcType=INTEGER},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.ghsc.partybuild.model.PfPartylifemeetingScydExample" resultType="java.lang.Long">
+    select count(*) from pf_partylifemeeting_scyd
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update pf_partylifemeeting_scyd
+    <set>
+      <if test="record.partylifemeetingid != null">
+        partyLifeMeetingId = #{record.partylifemeetingid,jdbcType=VARCHAR},
+      </if>
+      <if test="record.scydtype != null">
+        scydType = #{record.scydtype,jdbcType=INTEGER},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update pf_partylifemeeting_scyd
+    set partyLifeMeetingId = #{record.partylifemeetingid,jdbcType=VARCHAR},
+      scydType = #{record.scydtype,jdbcType=INTEGER}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+</mapper>

+ 5 - 5
src/main/resources/static/app/js/service.js

@@ -1703,11 +1703,11 @@ success:提升是否成功
                 }
 
                 scope.$watch('ngModel.selectdata.FileRefID', function (newval, oldval) {
-
-                    $bsfiles.loadItems(scope.ngModel).then(function (isupload) {
-                        scope.isupload = isupload;
-                    });
-
+                    if(newval){
+                        $bsfiles.loadItems(scope.ngModel).then(function (isupload) {
+                            scope.isupload = isupload;
+                        });
+                    }
                 });
 
                 //监视页数变化

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

@@ -3106,6 +3106,45 @@
                     return $ocLazyLoad.load('../main/partylife/meeting/detail.js?' + window.sysVersion);
                 }]
             }
+        }).state("home.pf_scydMeetingList", {
+            url: "pf_scydMeetingList",
+            params: { "partyLifeMeetingType": 6 },
+            templateUrl: "../main/partylife/scyd/list.html?" + window.sysVersion,
+            controller: "pf_scydMeetingListCtrl",
+            resolve: {
+                load: ['$ocLazyLoad', function ($ocLazyLoad) {
+                    return $ocLazyLoad.load('../main/partylife/scyd/list.js?' + window.sysVersion);
+                }]
+            }
+        }).state("home.pf_scydMeetingEdit", {
+            url: "pf_scydMeetingEdit",
+            params: { "partyLifeMeetingType": 6 },
+            templateUrl: "../main/partylife/scyd/edit.html?" + window.sysVersion,
+            controller: "pf_scydMeetingEditCtrl",
+            resolve: {
+                load: ['$ocLazyLoad', function ($ocLazyLoad) {
+                    return $ocLazyLoad.load('../main/partylife/scyd/edit.js?' + window.sysVersion);
+                }]
+            }
+        }).state("home.pf_scydMeetingAdd", {
+            url: "pf_scydMeetingAdd",
+            params: { "partyLifeMeetingType": 6 },
+            templateUrl: "../main/partylife/scyd/edit.html?" + window.sysVersion,
+            controller: "pf_scydMeetingEditCtrl",
+            resolve: {
+                load: ['$ocLazyLoad', function ($ocLazyLoad) {
+                    return $ocLazyLoad.load('../main/partylife/scyd/edit.js?' + window.sysVersion);
+                }]
+            }
+        }).state("home.pf_scydMeetingDetail", {
+            url: "pf_scydMeetingDetail",
+            templateUrl: "../main/partylife/scyd/detail.html?" + window.sysVersion,
+            controller: "pf_scydMeetingDetailCtrl",
+            resolve: {
+                load: ['$ocLazyLoad', function ($ocLazyLoad) {
+                    return $ocLazyLoad.load('../main/partylife/scyd/detail.js?' + window.sysVersion);
+                }]
+            }
         }).state("register", {
             url: "/register",
             templateUrl: "../main/partyUser/admit/register/edit.html?" + window.sysVersion,

+ 2 - 2
src/main/resources/static/app/main/partylife/meeting/edit.js

@@ -106,7 +106,7 @@
             }
         };
 
-        $scope.getAddressList = function () {
+        $scope.getUserAddressList = function () {
             $http({
                 method: 'get',
                 url: '../../api/partylife/meeting/getUserAddressList',
@@ -163,6 +163,6 @@
         };
 
         $scope.getData();
-        $scope.getAddressList();
+        $scope.getUserAddressList();
     });
 })(angular);

+ 1 - 1
src/main/resources/static/app/main/partylife/meeting/list.html

@@ -28,7 +28,7 @@
                                         </div>
                                     </div>
                                     <div class="col-lg-2 col-md-2 dj-label">
-                                        <label>会议主题</label>
+                                        <label>会议名称</label>
                                     </div>
                                     <div class="col-lg-2 col-md-2">
                                         <div class="form-group">

+ 81 - 0
src/main/resources/static/app/main/partylife/scyd/detail.html

@@ -0,0 +1,81 @@
+<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.title}}</td>
+                            <th>会议时间</th>
+                            <td>{{dataModel.meetingdate | date:'yyyy-MM-dd'}}</td>
+                        </tr>
+                        <tr>
+                            <th>主持人</th>
+                            <td>{{dataModel.compere}}</td>
+                            <th>会议地址</th>
+                            <td>{{dataModel.address}}</td>
+                        </tr>
+                        <tr>
+                            <th>“三重一大”类别</th>
+                            <td colspan="5">
+                                <div style="float: left;position: relative;display: inline-block;margin: 0px 0px 0px 5px;"
+                                     ng-repeat="it in scydTypeList">
+                                    <input type="checkbox" ng-model="it.checked" disabled
+                                           id="{{pageId}}_scydcheckbox_{{it.dickey}}"/>
+                                    <label for="{{pageId}}_scydcheckbox_{{it.dickey}}">{{it.dicvalue}}</label>
+                                </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>
+                        <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>

+ 53 - 0
src/main/resources/static/app/main/partylife/scyd/detail.js

@@ -0,0 +1,53 @@
+(function ($app) {
+    $app.module('gtPartyApp').controller('pf_scydMeetingDetailCtrl', 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.scydTypeList = [];//“三重一大”类别
+
+        $scope.loadScydTypes=function(){
+            $http({
+                method: 'get',
+                url: '../../api/dictionary/getDictionaryListByDicTypeKey',
+                params: {dicTypeKey: 'scydType'}
+            }).then(function (result) {
+                $scope.scydTypeList = result.data;
+                $scope.scydTypeList.filter(x=>$scope.dataModel.scydtypes.findIndex(scyd=>scyd==x.dickey)>=0).map(x=>x.checked=true);
+            }, 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.reqFileModel.selectdata.FileRefID = $scope.dataModel.partylifemeetingid;
+
+                $scope.loadScydTypes();
+            }, function (resp) {
+                $scope.showMsg('错误', '服务器错误:' + resp.data);
+            });
+        };
+
+        $scope.getData();
+
+        $scope.reqFileModel = {
+            selectdata: {FileRefID: '', pageindex: 1, pagesize: 10, ptotal: 0},//查询参数:FileRefID为文件关联ID
+            filetype: 71,//文件类型
+            items: [],//列表数据地址
+            readonly: true,//是否只能查看
+            title: '附件',
+            addFileButton: '上传'
+        };
+
+        $scope.pagechange = function () {
+            $bsRouterState.$closeTab($scope);
+        };
+    });
+})(angular);

+ 164 - 0
src/main/resources/static/app/main/partylife/scyd/edit.html

@@ -0,0 +1,164 @@
+<titlemenu></titlemenu>
+<div class="dj-card">
+    <div class="dj-body" activate-input activate-select>
+        <div class="card">
+                <form class="form-horizontal" role="form" id="editForm"
+                      name="editForm" ng-submit="save(editForm.$valid)" novalidate>
+                    <div class="dj-formtable">
+                        <table class="dj-table dj-table3">
+                            <tr>
+                                <th>所属党组织</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.editForm.partyname.$invalid &&  this.editForm.$submitted"
+                                          class="error">必填.</span>
+                                </td>
+                                <th>会议名称</th>
+                                <td ng-class="{ 'has-error' : this.editForm.title.$invalid &&  this.editForm.$submitted}">
+                                    <input type="text" class="form-control" name="title" autocomplete="off" autoclose="true"
+                                           ng-model="dataModel.title" ng-required="true"/>
+                                    <span ng-show="this.editForm.title.$invalid &&  this.editForm.$submitted"
+                                          class="error">必填.</span>
+                                </td>
+                                <th>会议时间</th>
+                                <td ng-class="{ 'has-error' : this.editForm.meetingdate.$invalid &&  this.editForm.$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.editForm.meetingdate.$invalid &&  this.editForm.$submitted"
+                                          class="error">必填.</span>
+                                </td>
+                            </tr>
+                            <tr>
+                                <th>主持人</th>
+                                <td ng-class="{ 'has-error' : this.editForm.compere.$invalid &&  this.editForm.$submitted}">
+                                    <input type="text" class="form-control" name="compere"
+                                           autocomplete="off" autoclose="true" ng-model="dataModel.compere"/>
+                                </td>
+                                <th>会议地址</th>
+                                <td colspan="3" ng-class="{ 'has-error' : this.editForm.address.$invalid &&  this.editForm.$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.editForm.address.$invalid &&  this.editForm.$submitted}">
+                                            <input type="text" name="address"
+                                                   ng-model="dataModel.address"
+                                                   maxlength="1000" autocomplete="off" autoclose="true"
+                                                   class="form-control"/>
+                                        </div>
+                                        <span ng-show="this.editForm.address.$invalid &&  this.editForm.$submitted"
+                                              class="error">必填.</span>
+                                    </div>
+                                </td>
+                            </tr>
+                            <tr>
+                                <th style="width: 5%;">“三重一大”类别</th>
+                                <td colspan="5">
+                                    <div style="float: left;position: relative;display: inline-block;margin: 0px 0px 0px 5px;"
+                                         ng-repeat="it in scydTypeList">
+                                        <input type="checkbox" ng-model="it.checked"
+                                               id="{{pageId}}_scydcheckbox_{{it.dickey}}"/>
+                                        <label for="{{pageId}}_scydcheckbox_{{it.dickey}}">{{it.dicvalue}}</label>
+                                    </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}}"></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="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">
+                                    <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="editForm">保存</button>
+                    </div>
+                </form>
+        </div>
+    </div>
+</div>

+ 191 - 0
src/main/resources/static/app/main/partylife/scyd/edit.js

@@ -0,0 +1,191 @@
+(function ($app) {
+    $app.module('gtPartyApp').controller('pf_scydMeetingEditCtrl', 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.scydTypeList = [];//“三重一大”类别
+
+        $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: {}
+            }).then(function (result) {
+                $scope.addressList = result.data.item;
+            }, function (resp) {
+
+            });
+        };
+
+        $scope.loadScydTypes=function(){
+            $http({
+                method: 'get',
+                url: '../../api/dictionary/getDictionaryListByDicTypeKey',
+                params: {dicTypeKey: 'scydType'}
+            }).then(function (result) {
+                $scope.scydTypeList = result.data;
+                $scope.scydTypeList.filter(x=>$scope.dataModel.scydtypes.findIndex(scyd=>scyd==x.dickey)>=0).map(x=>x.checked=true);
+            }, 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;
+
+                $scope.getUserAddressList();
+                $scope.loadScydTypes();
+            }, function (resp) {
+                $scope.showMsg('错误', '服务器错误:' + resp.data);
+            });
+        };
+
+        $scope.save = function (isflag) {
+            if (isflag) {
+
+                $scope.dataModel.scydtypes = $scope.scydTypeList.filter(x=>x.checked==true).map(m=>m.dickey);
+                if($scope.dataModel.scydtypes.length==0){
+                    $scope.showMsg('提示', '请选择“三重一大”类别!');
+                    return false;
+                }
+
+                $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_scydMeetingListCtrl', 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/scyd/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="name" 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><span ng-bind-html="it.scydtypenames"></span></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>

+ 171 - 0
src/main/resources/static/app/main/partylife/scyd/list.js

@@ -0,0 +1,171 @@
+(function ($app) {
+    $app.module('gtPartyApp').controller('pf_scydMeetingListCtrl', 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 = "scydMeetingList";
+        $scope.tabNameAdd = "home.pf_scydMeetingAdd";
+        $scope.tabNameEdit = "home.pf_scydMeetingEdit";
+        $scope.tabNameDetail = "home.pf_scydMeetingDetail";
+
+        //定义数据集合
+        $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_scydMeetingListCtrl') {
+                $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/exportScyd' + 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();
+        // $scope.getPartyLifeMeetingTypeList();
+    });
+})(angular);