Browse Source

党政联席会、民主集中制

lizeyu 8 months ago
parent
commit
9d0947ccd0

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

@@ -0,0 +1,36 @@
+--2024.6.26 党政联席会、民主集中制
+
+-- 会议表新增主持人、列会人员、会议主要议程及结果字段
+alter table pf_partylifemeeting add compere varchar(36) NULL COMMENT '主持人';
+alter table pf_partylifemeeting add personnel varchar(500) NULL COMMENT '列会人员';
+alter table pf_partylifemeeting add result varchar(1000) NULL COMMENT '会议主要议程及结果';
+
+CREATE TABLE `pf_partylifemeeting_personnel`  (
+  `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+  `partyLifeMeetingId` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '会议id',
+  `rybm` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '人员编码',
+  `isAbsenteeism` int NULL DEFAULT NULL COMMENT '是否缺勤 0-缺勤;1-出勤',
+  `absenteeismCause` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '缺勤原因',
+  `createTime` datetime NULL DEFAULT NULL,
+  `createUserId` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  `updateTime` datetime NULL DEFAULT NULL,
+  `updateUserId` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+SET FOREIGN_KEY_CHECKS = 1;
+
+-- 字典
+INSERT INTO `cf_dictionary` (`DICTIONARYID`, `DICKEY`, `DICVALUE`, `DICTYPEKEY`, `DICTYPE`, `APPLICATIONID`, `DICNOTE`, `OPERATETIME`, `OPERATESTATE`, `SYNCSTATE`) VALUES ('23f5e615-b16a-11ec-829d-7085c2a00001', 4, '党政联席会', '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-829d-7085c2a00002', 5, '民主集中制', '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 ('4806821b-b18e-11ec-829d-7085c2a9999e', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', 'c4516fca-2dd8-4373-9be8-1df510c8e5e1', NULL, 18, 'home.pf_meetingList4', '党政联席会', 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-06f6e2900001', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '4806821b-b18e-11ec-829d-7085c2a9999e', NULL, 1, 'home.pf_meetingEdit4', '编辑党政联席会', 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-06f6e2900002', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '4806821b-b18e-11ec-829d-7085c2a9999e', NULL, 2, 'home.pf_meetingAdd4', '新增党政联席会', 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-06f6e2900003', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', '4806821b-b18e-11ec-829d-7085c2a9999e', NULL, 3, 'home.pf_meetingDetail4', '查看党政联席会详情', NULL, NULL, NULL, 0, 0, NULL);
+
+INSERT INTO `cf_menu` (`MENUID`, `APPLICATIONID`, `PARENTMENUID`, `MNUSYSTEM`, `MENUORDER`, `MENUNO`, `MENUNAME`, `MENUPROGRAM`, `MENUPIC`, `MENUDESC`, `ISVISIBLE`, `ISLEAF`, `ISBLANK`) VALUES ('4806821b-b18e-11ec-829d-7085c2a99990', 'f0c4fa7f9f3c4fb6bd56aac608b7ad3f', 'c4516fca-2dd8-4373-9be8-1df510c8e5e1', NULL, 1, 'home.pf_meetingList5', '民主集中制', 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-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);

+ 2 - 0
src/main/java/com/ghsc/partybuild/service/impl/partyLife/MeetingServiceImpl.java

@@ -108,6 +108,8 @@ public class MeetingServiceImpl implements MeetingService {
                 perModel.setPartylifemeetingid(data.getPartylifemeetingid());
                 perModel.setIsabsenteeism(item.getIsabsenteeism());
                 perModel.setAbsenteeismcause(item.getAbsenteeismcause());
+                perModel.setCreatetime(new Date());
+                perModel.setCreateuserid(userId);
 
                 pfPartylifemeetingPersonnelMapper.insert(perModel);
             });

+ 14 - 1
src/main/java/com/ghsc/partybuild/util/ExcelHelper.java

@@ -332,7 +332,8 @@ public class ExcelHelper {
 
                 Cell cell = dataRow.createCell(colIndex);
                 if (cellData != null) {
-                    cell.setCellValue(cellData.toString());
+//                    cell.setCellValue(cellData.toString());
+                    setCellValue(cell, cellData);
                 } else {
                     cell.setCellValue("");
                 }
@@ -382,6 +383,18 @@ public class ExcelHelper {
         }
     }
 
+    public void setCellValue(Cell cell, Object value) {
+        if (value instanceof String) {
+            cell.setCellValue((String) value);
+        } else if (value instanceof Double) {
+            cell.setCellValue((Double) value);
+        } else if (value instanceof Integer) {
+            cell.setCellValue((Integer) value);
+        } else if (value instanceof Boolean) {
+            cell.setCellValue((Boolean) value);
+        } // Add more types as needed
+    }
+
     public void exportExcelToTemp(HttpServletResponse response, InputStream is, List<PageItem> pageList, String fileName, PaperSize paperSize, Boolean landscape) throws IOException {
         // 告诉浏览器用什么软件可以打开此文件
         response.setHeader("content-Type", "application/vnd.ms-excel");

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

@@ -6,4 +6,6 @@ import lombok.Data;
 @Data
 public class PartyLifeMeetingPersonnelVo extends PfPartylifemeetingPersonnel {
     private String xm;
+    private String ryjbxxbs;
+    private String isabsenteeismname;
 }

+ 5 - 3
src/main/resources/mapping/PartyLifeMeetingCQuery.xml

@@ -9,8 +9,8 @@
         from pf_partylifemeeting pfm
         inner join zz_zzqkxx p on pfm.partyCode = p.DZZDM
         left join VM_RYJBXX u on pfm.createUserId = u.rybm
-        left join (select partyLifeMeetingId,count(0) as attendance from pf_partylifemeeting_personnel where isAbsenteeism = 1 group by partyLifeMeetingId) p1 on pfm.partyLifeMeetingId = p1.partyLifeMeetingId
-        left join (select partyLifeMeetingId,count(0) as absentCount from pf_partylifemeeting_personnel where isAbsenteeism = 0 group by partyLifeMeetingId) p2 on pfm.partyLifeMeetingId = p2.partyLifeMeetingId
+        left join (select partyLifeMeetingId,count(0) as attendance from pf_partylifemeeting_personnel where isAbsenteeism = 0 group by partyLifeMeetingId) p1 on pfm.partyLifeMeetingId = p1.partyLifeMeetingId
+        left join (select partyLifeMeetingId,count(0) as absentCount from pf_partylifemeeting_personnel where isAbsenteeism = 1 group by partyLifeMeetingId) p2 on pfm.partyLifeMeetingId = p2.partyLifeMeetingId
         where 1=1
         <if test="dzzdm != null and dzzdm != ''">
             and pfm.partyCode like concat('%',#{dzzdm},'%')
@@ -42,9 +42,11 @@
     </select>
     <select id="selectMeetingPersonnelList" resultType="com.ghsc.partybuild.vo.PartyLifeMeetingPersonnelVo">
         select pp.id, pp.partyLifeMeetingId, pp.rybm, pp.isAbsenteeism, pp.absenteeismCause,
-               pp.createTime, pp.createUserId, pp.updateTime, pp.updateUserId, u.XM
+               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
         where pp.partyLifeMeetingId = #{partyLifeMeetingId}
+        order by pp.createTime
     </select>
 </mapper>

+ 46 - 6
src/main/resources/static/app/main/app.js

@@ -3038,8 +3038,9 @@
                     return $ocLazyLoad.load('../main/partylife/meeting/list.js?' + window.sysVersion);
                 }]
             }
-        }).state("home.pf_meetingEdit", {
-            url: "pf_meetingEdit",
+        }).state("home.pf_meetingEdit4", {
+            url: "pf_meetingEdit4",
+            params: { "partyLifeMeetingType": 4 },
             templateUrl: "../main/partylife/meeting/edit.html?" + window.sysVersion,
             controller: "pf_meetingEditCtrl",
             resolve: {
@@ -3047,8 +3048,8 @@
                     return $ocLazyLoad.load('../main/partylife/meeting/edit.js?' + window.sysVersion);
                 }]
             }
-        }).state("home.pf_meetingAdd", {
-            url: "pf_meetingAdd",
+        }).state("home.pf_meetingAdd4", {
+            url: "pf_meetingAdd4",
             params: { "partyLifeMeetingType": 4 },
             templateUrl: "../main/partylife/meeting/edit.html?" + window.sysVersion,
             controller: "pf_meetingEditCtrl",
@@ -3057,8 +3058,47 @@
                     return $ocLazyLoad.load('../main/partylife/meeting/edit.js?' + window.sysVersion);
                 }]
             }
-        }).state("home.pf_meetingDetail", {
-            url: "pf_meetingDetail",
+        }).state("home.pf_meetingDetail4", {
+            url: "pf_meetingDetail4",
+            templateUrl: "../main/partylife/meeting/detail.html?" + window.sysVersion,
+            controller: "pf_meetingDetailCtrl",
+            resolve: {
+                load: ['$ocLazyLoad', function ($ocLazyLoad) {
+                    return $ocLazyLoad.load('../main/partylife/meeting/detail.js?' + window.sysVersion);
+                }]
+            }
+        }).state("home.pf_meetingList5", {
+            url: "pf_meetingList5",
+            params: { "partyLifeMeetingType": 5 },
+            templateUrl: "../main/partylife/meeting/list.html?" + window.sysVersion,
+            controller: "pf_meetingListCtrl",
+            resolve: {
+                load: ['$ocLazyLoad', function ($ocLazyLoad) {
+                    return $ocLazyLoad.load('../main/partylife/meeting/list.js?' + window.sysVersion);
+                }]
+            }
+        }).state("home.pf_meetingEdit5", {
+            url: "pf_meetingEdit5",
+            params: { "partyLifeMeetingType": 5 },
+            templateUrl: "../main/partylife/meeting/edit.html?" + window.sysVersion,
+            controller: "pf_meetingEditCtrl",
+            resolve: {
+                load: ['$ocLazyLoad', function ($ocLazyLoad) {
+                    return $ocLazyLoad.load('../main/partylife/meeting/edit.js?' + window.sysVersion);
+                }]
+            }
+        }).state("home.pf_meetingAdd5", {
+            url: "pf_meetingAdd5",
+            params: { "partyLifeMeetingType": 5 },
+            templateUrl: "../main/partylife/meeting/edit.html?" + window.sysVersion,
+            controller: "pf_meetingEditCtrl",
+            resolve: {
+                load: ['$ocLazyLoad', function ($ocLazyLoad) {
+                    return $ocLazyLoad.load('../main/partylife/meeting/edit.js?' + window.sysVersion);
+                }]
+            }
+        }).state("home.pf_meetingDetail5", {
+            url: "pf_meetingDetail5",
             templateUrl: "../main/partylife/meeting/detail.html?" + window.sysVersion,
             controller: "pf_meetingDetailCtrl",
             resolve: {

+ 63 - 152
src/main/resources/static/app/main/partylife/meeting/detail.html

@@ -1,159 +1,70 @@
-<div class="modal" tabindex="-1" role="dialog">
-    <div class="modal-dialog" style="width: 850px;">
+<titlemenu></titlemenu>
+<div class="dj-card">
+    <div class="dj-body" activate-input activate-select>
         <div class="card">
-            <div class="header" dragable-header>
-                <button type="button" class="close" ng-click="$hide()">&times;</button>
-                <h4 class="modal-title">{{editParams.title}}</h4>
-            </div>
-            <div activate-input activate-select class="body">
-                <form class="form-horizontal" role="form" id="editForm"
-                      name="editForm" ng-submit="save(editForm.$valid)" novalidate>
-                    <div class="dj-formtable">
-                        <table class="dj-table">
-                            <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"
-                                           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"
-                                           ng-model="dataModel.compere"/>
-                                </td>
-                                <th>会议地址</th>
-                                <td colspan="3" ng-class="{ 'has-error' : this.editForm.address.$invalid &&  this.editForm.$submitted}">
-                                    <input type="text" class="form-control" name="address"
-                                           ng-model="dataModel.address" ng-required="true"/>
-                                    <span ng-show="this.editForm.address.$invalid &&  this.editForm.$submitted"
-                                          class="error">必填.</span>
-                                </td>
-                            </tr>
-                            <tr>
-                                <th>列席人员</th>
-                                <td colspan="5">
-                                    <input type="text" name="attendUser" ng-model="dataModel.attenduser"
-                                           class="form-control"/>
-                                </td>
-                            </tr>
-                            <tr>
-                                <th>会议主要议程及结果</th>
-                                <td colspan="5">
-                                   <textarea name="result" ng-model="editNoSigninModal.result"
-                                             class="form-control" rows="3"></textarea>
-                                </td>
-                            </tr>
-                        </table>
-                    </div>
-
-                    <div class="dj-formtable">
-                        <div class="table-responsive list-table-panel">
-                            <div class="list-table-title">
-                                <div class="table-title">
-                                    出席人员列表({{userList.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 userList">
-                                        <th scope="row">{{$index+1}}</th>
-                                        <th>{{it.xm}}</th>
-                                        <th>{{it.isabsenteeism==0?"参加":"未参加"}}
-                                            <input type="checkbox" id="{{it.partylifemeetingid}}_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"/>
-                                        </th>
-                                        <th>
-                                            <textarea name="absenteeismCause" ng-model="it.absenteeismCause"
-                                                      class="form-control" rows="3"></textarea>
-                                        </th>
-                                        <th class="text-center">
-                                            <button class="btn td-btn bg-pink waves-effect"
-                                                    ng-click="deleteUser($index)" title="删除">
-                                                删除
-                                            </button>
-                                        </th>
-                                    </tr>
-                                    <tr ng-if="userList.length<=0">
-                                        <td colspan="7" style="text-align:center">暂无数据</td>
-                                    </tr>
-                                    </tbody>
-                                </table>
+                <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>
+                    </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>
-
-                    <bsfiles ng-model="reqFileModel"/>
-                    <div class="dj-formtable">
-                        <table class="dj-table">
-                            <tr>
-                                <th>列席人员</th>
-                                <td colspan="5">
-                                    <input type="text" name="attendUser" ng-model="dataModel.attenduser"
-                                           class="form-control"/>
-                                </td>
-                            </tr>
-                            <tr>
-                                <th>会议主要议程及结果</th>
-                                <td colspan="5">
-                                   <textarea name="result" ng-model="editNoSigninModal.result"
-                                             class="form-control" rows="3"></textarea>
-                                </td>
-                            </tr>
-                        </table>
-                    </div>
-
-                    <div class="form_foot">
-                        <button type="button" class="btn btn-default" ng-click="$hide()">取消</button>
-                        <button type="submit" class="btn btn-primary" form="editForm">保存</button>
-                    </div>
-                </form>
-            </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>

+ 6 - 50
src/main/resources/static/app/main/partylife/meeting/detail.js

@@ -1,36 +1,13 @@
 (function ($app) {
     $app.module('gtPartyApp').controller('pf_meetingDetailCtrl', function ($scope, $http, $modal, $ocLazyLoad, $alert, $loading, $state, $bsRouterState, AuthUser, $timeout, $excel, $partySelect, $filter) {
-        $scope.editParams = $bsRouterState.$params($scope).params;
+        $scope.editParams = $bsRouterState.$params($scope);
         $scope.dataModel = {};
 
-        //选择党支部
-        $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.partyConfig.selectedText = "";
-                $scope.partyConfig.selectedKey = "";
-            }
-        }, true);
-        $scope.selectParty = function () {
-            $partySelect.showModal();
-        };
-
         $scope.reqFileModel = {
             selectdata: {FileRefID: '', pageindex: 1, pagesize: 10, ptotal: 0},//查询参数:FileRefID为文件关联ID
             filetype: 71,//文件类型
             items: [],//列表数据地址
-            readonly: false,//是否只能查看
+            readonly: true,//是否只能查看
             title: '附件',
             addFileButton: '上传'
         };
@@ -44,37 +21,16 @@
                 }
             }).then(function (result) {
                 $scope.dataModel = result.data.item;
-                $scope.dataModel.partyLifeMeetingType = $scope.editParams.partyLifeMeetingType;
                 $scope.reqFileModel.selectdata.FileRefID = $scope.dataModel.partylifemeetingid;
             }, function (resp) {
                 $scope.showMsg('错误', '服务器错误:' + resp.data);
             });
         };
-        $scope.getData();
 
-        $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.parentLoad();
-                        $scope.$hide();
-                        $scope.$emit("tabReloadData", {name: 'pf_meetingListCtrl', 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);

+ 14 - 20
src/main/resources/static/app/main/partylife/meeting/edit.html

@@ -21,7 +21,7 @@
                                 </td>
                                 <th>会议名称</th>
                                 <td ng-class="{ 'has-error' : this.editForm.title.$invalid &&  this.editForm.$submitted}">
-                                    <input type="text" class="form-control" name="title"
+                                    <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>
@@ -29,8 +29,7 @@
                                 <th>会议时间</th>
                                 <td ng-class="{ 'has-error' : this.editForm.meetingdate.$invalid &&  this.editForm.$submitted}">
                                     <input name="meetingdate" class="form-control"
-                                           autocomplete="off"
-                                           autoclose="true"
+                                           autocomplete="off" autoclose="true"
                                            data-date-format="yyyy-MM-dd" data-date-type="date"
                                            ng-model="dataModel.meetingdate"
                                            placeholder="" bs-datepicker ng-required="true"/>
@@ -42,7 +41,7 @@
                                 <th>主持人</th>
                                 <td ng-class="{ 'has-error' : this.editForm.compere.$invalid &&  this.editForm.$submitted}">
                                     <input type="text" class="form-control" name="compere"
-                                           ng-model="dataModel.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}">
@@ -58,7 +57,7 @@
                                              ng-class="{ 'focused error' : this.editForm.address.$invalid &&  this.editForm.$submitted}">
                                             <input type="text" name="address"
                                                    ng-model="dataModel.address"
-                                                   maxlength="1000"
+                                                   maxlength="1000" autocomplete="off" autoclose="true"
                                                    class="form-control"/>
                                         </div>
                                         <span ng-show="this.editForm.address.$invalid &&  this.editForm.$submitted"
@@ -97,28 +96,25 @@
                                     </thead>
                                     <tbody>
                                     <tr ng-repeat="it in dataModel.personnellist">
-                                        <th scope="row">{{$index+1}}</th>
-                                        <th>{{it.xm}}</th>
-                                        <th>
-<!--                                            <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"/>-->
+                                        <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>
-                                        </th>
-                                        <th>
+                                        </td>
+                                        <td>
                                             <textarea name="absenteeismcause" ng-model="it.absenteeismcause"
                                                       class="form-control" rows="3"></textarea>
-                                        </th>
-                                        <th class="text-center">
+                                        </td>
+                                        <td class="text-center">
                                             <button class="btn td-btn bg-pink waves-effect"
                                                     ng-click="deleteUser($index)" title="删除">
                                                 删除
                                             </button>
-                                        </th>
+                                        </td>
                                     </tr>
                                     <tr ng-if="userList.length<=0">
                                         <td colspan="7" style="text-align:center">暂无数据</td>
@@ -128,15 +124,13 @@
                             </div>
                         </div>
                     </div>
-
-<!--                    <bsfiles ng-model="reqFileModel"/>-->
                     <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"
-                                           class="form-control"/>
+                                           autocomplete="off" autoclose="true" class="form-control"/>
                                 </td>
                             </tr>
                             <tr>
@@ -148,7 +142,7 @@
                             </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>

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

@@ -1,8 +1,9 @@
 (function ($app) {
     $app.module('gtPartyApp').controller('pf_meetingEditCtrl', 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.pageId = "pf_meetingEdit" + $scope.editParams.partyLifeMeetingType;
+        $scope.addressList = [];
 
         $scope.reqFileModel = {
             selectdata: {FileRefID: '', pageindex: 1, pagesize: 10, ptotal: 0},//查询参数:FileRefID为文件关联ID
@@ -73,7 +74,7 @@
                     });
                     let data = [];
                     result.data.item.list.forEach(x=>{
-                        data.push({rybm: x.RYBM, xm: x.XM, isabsenteeism: 0, absenteeismcause: ''});
+                        data.push({rybm: x.RYBM, ryjbxxbs: x.RYJBXXBS, xm: x.XM, isabsenteeism: 0, absenteeismcause: ''});
                     })
                     $scope.dataModel.personnellist = $scope.dataModel.personnellist.concat(data);
 
@@ -85,69 +86,25 @@
                 });
             }
         });
-        // $scope.$watch('dataModel.personnellist', function (newVal) {
-        //      $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.getUserList = function () {
-        //     if ($scope.dataModel.partycode != "" && $scope.dataModel.partycode != null) {
-        //         $http
-        //         ({
-        //             method: 'get',
-        //             url: '../../api/shyk/getMeetingUserList',
-        //             params: {pageindex: 1, pagesize: 10000, meetingId: $scope.dataModel.meetingid}
-        //         }).then(function (result) {
-        //             let data = [];
-        //             result.data.item.list.forEach(x=>{
-        //                 data.push({rybm: x.RYBM, xm: x.XM, isabsenteeism: 0, absenteeismcause: ''});
-        //             })
-        //             $scope.dataModel.personnellist = $scope.dataModel.personnellist.concat(data);
-        //
-        //             if ($scope.dataModel.personnellist.length <= 0 && $scope.dataModel.shyktype != 2) {
-        //                 $scope.syncLoadUser();
-        //             }
-        //         });
-        //     }
-        // };
-        //
-        // //默认加载参会成员
-        // $scope.syncLoadUser = function () {
-        //     $scope.dataModel.personnellist = [];
-        //     $http({
-        //         method: 'get',
-        //         url: "../../api/partyUser/getPartyUserList",
-        //         params: {
-        //             dzzdm: $scope.dataModel.partycode,
-        //             pageindex: 1,
-        //             pagesize: 10000,
-        //             //szdzbdm: $scope.dataModel.shyktype == 2 ? $scope.dataModel.partycode : '',
-        //             ryzt: '2,3' //预备党员,正式党员
-        //         }
-        //     }).then(function (result) {
-        //         let data = [];
-        //         result.data.item.list.forEach(x=>{
-        //             data.push({rybm: x.RYBM, xm: x.XM, isabsenteeism: 0, absenteeismcause: ''});
-        //         })
-        //         $scope.dataModel.personnellist = data;
-        //
-        //     }, function (resp) {
-        //         $scope.showMsg('错误', '服务器错误');
-        //     });
-        // };
-        //
-        // //人员操作
-        // $scope.deleteUser = function (index) {
-        //     if (confirm("请确认是否需要移除参会人员!")) {
-        //         $scope.dataModel.personnellist.splice(index, 1);
-        //     }
-        // };
+        $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.getAddressList = function () {
             $http({

+ 20 - 51
src/main/resources/static/app/main/partylife/meeting/list.js

@@ -5,10 +5,11 @@
         $scope.isShow = false;
         $scope.moreTxt = "更多";
         $scope.partyLifeMeetingType = $state.params.partyLifeMeetingType;
-        $scope.title = "";
         $scope.isAll = false;
         $scope.pageId = "meetingList";
-        $scope.partyLifeMeetingTypeNmme = "";
+        $scope.tabNameAdd = "home.pf_meetingAdd" + $scope.partyLifeMeetingType;
+        $scope.tabNameEdit = "home.pf_meetingEdit" + $scope.partyLifeMeetingType;
+        $scope.tabNameDetail = "home.pf_meetingDetail" + $scope.partyLifeMeetingType;
 
         //定义数据集合
         $scope.dataList = []; //列表数据
@@ -37,23 +38,8 @@
             }
         });
 
-        $scope.getMeetingTypeList = function () {
-            $http({
-                method: 'get',
-                url: '../../api/dictionary/getDictionaryListByDicTypeKey',
-                params: {
-                    dicTypeKey: 'PartyLifeMeetingType'
-                }
-            }).then(function (result) {
-                $scope.partyLifeMeetingTypeNmme = result.data.find(x=>x.dickey == $scope.partyLifeMeetingType).dicvalue;
-            }, function (resp) {
-
-            });
-        };
-        $scope.getMeetingTypeList();
-
         //加载列表数据
-        $scope.getList = function () {
+        $scope.loadData = function () {
             $http
             ({
                 method: 'get', url: '../../api/partylife/meeting/getList', params: $scope.selectparams
@@ -66,7 +52,7 @@
         };
 
         $scope.search = function () {
-            $scope.getList();
+            $scope.loadData();
         };
 
         $scope.selectAll = function () {
@@ -78,35 +64,30 @@
 
         //查看
         $scope.show = function (id) {
-            $bsRouterState.$closeTabName("home.pf_meetingDetail");
+            $bsRouterState.$closeTabName($scope.tabNameDetail);
             $timeout(function () {
-                $bsRouterState.go('home.pf_meetingDetail', {
-                    id: id,
-                    title: $scope.partyLifeMeetingTypeNmme
+                $bsRouterState.go($scope.tabNameDetail, {
+                    id: id
                 });
             }, 100);
         };
 
         //新增
         $scope.add = function () {
-            $bsRouterState.$closeTabName("home.pf_meetingAdd");
+            $bsRouterState.$closeTabName($scope.tabNameAdd);
             $timeout(function () {
-                $bsRouterState.go('home.pf_meetingAdd', {
-                    id: '',
-                    title: $scope.partyLifeMeetingTypeNmme,
-                    partyLifeMeetingType: $scope.partyLifeMeetingType
+                $bsRouterState.go($scope.tabNameAdd, {
+                    id: ''
                 });
             }, 100);
         };
 
         //修改
         $scope.edit = function (id) {
-            $bsRouterState.$closeTabName("home.pf_meetingEdit");
+            $bsRouterState.$closeTabName($scope.tabNameEdit);
             $timeout(function () {
-                $bsRouterState.go('home.pf_meetingEdit', {
-                    id: id,
-                    title: $scope.partyLifeMeetingTypeNmme,
-                    partyLifeMeetingType: $scope.partyLifeMeetingType
+                $bsRouterState.go($scope.tabNameEdit, {
+                    id: id
                 });
             }, 100);
         };
@@ -125,7 +106,7 @@
             if (id)
                 ids.push(id);
             else
-                ids = $scope.dataList.filter(it => it.rowChecked == true).map(it => it.partylifemeetingid);
+                ids = $scope.dataList.filter(it => it.checked == true).map(it => it.partylifemeetingid);
 
             if (ids.length == 0) {
                 $scope.showMsg('消息', "请选择需要删除的数据");
@@ -145,7 +126,7 @@
                     if (result.data.success) {
                         $scope.showMsg('成功', result.data.msg);
                         //重新刷新列表
-                        $scope.getList();
+                        $scope.loadData();
                     } else {
                         $scope.showMsg('失败', result.data.msg);
                     }
@@ -155,21 +136,9 @@
             }
         };
 
-        $scope.getPartyLifeMeetingTypeList = function () {
-            $http({
-                method: 'get',
-                url: '../../api/dictionary/getDictionaryListByDicTypeKey',
-                params: {
-                    dicTypeKey: 'PartyLifeMeetingType'
-                }
-            }).then(function (result) {
-                $scope.title = result.data.filter(it => it.dickey == $scope.partyLifeMeetingType)[0].dicvalue;
-            });
-        };
-
         $scope.$watch("selectparams.pageindex", function (newVal, oldVal) {
             if ($scope.pageInfo.ptotal > 0) {
-                $scope.getList();
+                $scope.loadData();
             }
         });
         $scope.$watch("treeparams.selectdzzdm", function (newVal, oldVal) {
@@ -180,7 +149,7 @@
 
                 $scope.selectparams.dzzdm = $scope.treeparams.selectdzzdm;
 
-                $scope.getList();
+                $scope.loadData();
             }
         });
         $scope.setisunfold = function () {
@@ -196,7 +165,7 @@
             }
         };
 
-        $scope.getList();
-        $scope.getPartyLifeMeetingTypeList();
+        $scope.loadData();
+        // $scope.getPartyLifeMeetingTypeList();
     });
 })(angular);