Forráskód Böngészése

Merge branch 'master' of http://39.98.153.250:9080/bowintek/GHSCPartyBuild

82064491C07A712AE32B5B57EC6EF136 8 hónapja
szülő
commit
8de5fc00fc

+ 41 - 5
parth5/parth5/src/app/api/partylife/shyk/index.ts

@@ -15,6 +15,22 @@ export interface reqParams {
   endDate: string;
 }
 
+export interface signInData {
+  meetingId: string,
+  userCode: string,
+  isSignin: any,
+  userId: string,
+  userName: string,
+  userRemark: string
+}
+
+export interface checkInData {
+  meetingId: string,
+  userCode: string,
+  userId: string,
+  userName: string
+}
+
 
 @Injectable({providedIn: 'root'})
 export class SHYKApi {
@@ -52,17 +68,37 @@ export class SHYKApi {
     return this.configService.HttpGetRomote('/appApi/shyk/getHistoryAddressList', {userId: userId});
   }
 
-  save(data: any, topicList: any, userList: any, userId: string, userName: string, isnotify: any, shykstatus: any): Observable<RequsetData> {
+  save(data: any, userList: any, typeList: any, democracyReviewList: any, userId: string, userName: string): Observable<RequsetData> {
     return this.configService.HttpPostRomote('/appApi/shyk/saveMeeting', {
       dataModel: data,
-      topicList: JSON.stringify(topicList),
       userList: JSON.stringify(userList),
+      typeList: JSON.stringify(typeList),
+      democracyReviewList: JSON.stringify(democracyReviewList),
       userId: userId,
-      userName: userName,
-      isnotify: isnotify,
-      shykstatus: shykstatus
+      userName: userName
     });
   }
 
+  getMeetingDemocracyReviewList(meetingId: string): Observable<RequsetData> {
+    return this.configService.HttpGetRomote('/appApi/shyk/getMeetingDemocracyReviewList', {
+      meetingId: meetingId
+    });
+  }
+
+  getMeetingTypeList(meetingId: string): Observable<RequsetData> {
+    return this.configService.HttpGetRomote('/appApi/shyk/getMeetingTypeList', {
+      meetingId: meetingId
+    });
+  }
+
+  signinMeeting(data: signInData) {
+    return this.configService.HttpPostRomote('/appApi/shyk/signinMeeting', data);
+  }
+
+  checkinMeeting(data: checkInData) {
+    return this.configService.HttpPostRomote('/appApi/shyk/checkinMeeting', data)
+  }
+
+
 }
 

+ 46 - 47
parth5/parth5/src/app/views/pages/partylife/shyk/detail/detail.component.html

@@ -9,12 +9,11 @@
 <ion-content>
   <!--会议信息-->
   <form class="form-table">
-    <ion-item>
-      【{{shykTypeName}}】{{dataModel.partyname}}
-    </ion-item>
     <ion-item>
       <ion-label>会议类别</ion-label>
-      <ion-text>{{shykTypeName}}</ion-text>
+      <ion-text>
+        <span *ngFor="let it of meetingTypeList;let last = last">{{it.shykTypeName}}{{last?'':'、'}}</span>
+      </ion-text>
     </ion-item>
     <ion-item>
       <ion-label>会议时间</ion-label>
@@ -26,22 +25,13 @@
       <ion-label>所属组织</ion-label>
       <ion-text>{{dataModel.partyname}}</ion-text>
     </ion-item>
-    <ion-item style="--inner-border-width: 0px 0px 0px 0px;">
-      <ion-label *ngIf="dataModel.shyktype !=4">会议议题
-      </ion-label>
-      <ion-label *ngIf="dataModel.shyktype ==4">会议主题
-      </ion-label>
+    <ion-item>
+      <ion-label>议题</ion-label>
+      <ion-text>{{dataModel.topiccontent}}</ion-text>
     </ion-item>
-    <ion-item class="meeting-yiti">
-      <ion-text>
-        <div *ngFor="let it of topicList;let first=first;let index=index;"
-             ngClass="{{first?'':'meeting-yiti-item'}}" (click)="showTopic(it.MODELID)">
-          <span>{{index + 1}}、{{it.TOPICNAME}}</span>
-          <!--<img *ngIf="it.MODELID!=null && it.MODELID!=''" class="meeting-yiti-showimg"-->
-          <!--src="assets/icon/showlist.svg"/>-->
-          <br>
-        </div>
-      </ion-text>
+    <ion-item>
+      <ion-label>是否第一议题</ion-label>
+      <ion-text>{{dataModel.isfirsttopic ? '是' : '否'}}</ion-text>
     </ion-item>
     <ion-item>
       <ion-label>会议地点</ion-label>
@@ -53,11 +43,11 @@
       <ion-label class="meeting-recorduser">记录人</ion-label>
       <ion-text>{{dataModel.recorduser}}</ion-text>
     </ion-item>
-    <!--<ion-item style="--inner-border-width: 0px 0px 0px 0px;">
+    <ion-item style="--inner-border-width: 0px 0px 0px 0px;">
       <ion-label>会场照片</ion-label>
     </ion-item>
     <app-imglist [(imgOption)]="imgOption1"></app-imglist>
-    <ion-item style="--min-height: 1px;"></ion-item>-->
+    <ion-item style="--min-height: 1px;"></ion-item>
     <ion-item style="--inner-border-width: 0px 0px 0px 0px;">
       <ion-label>相关记录</ion-label>
     </ion-item>
@@ -66,17 +56,6 @@
     <ion-item style="--inner-border-width: 0px 0px 0px 0px;">
       <ion-label>参与人</ion-label>
     </ion-item>
-    <!--<ion-item class="meeting-user">
-      <ion-row class="meeting-user-row" style="margin-left: 10px;margin-bottom: 10px;">
-        <ion-col size="12">
-          <ion-row class="user-item" *ngFor="let us of userList;let last = last">
-            <ion-col size="8">{{us.USERNAME}}</ion-col>
-            <ion-col size="3" (click)="editUserSignin(us)"><span
-              [ngClass]="isEditUser?'user-edit':''">{{us.SIGNINSTATUS==2?"参加":"未参加"}}</span></ion-col>
-          </ion-row>
-        </ion-col>
-      </ion-row>
-    </ion-item>-->
     <ion-grid>
       <ion-row>
         <ion-col size="4">
@@ -85,9 +64,6 @@
         <ion-col size="4">
           状态
         </ion-col>
-        <!--<ion-col size="4" *ngIf="isEditUser">
-          操作
-        </ion-col>-->
       </ion-row>
       <ion-row *ngFor="let us of userList;let last = last">
         <ion-col size="4">
@@ -96,9 +72,6 @@
         <ion-col size="4">
           {{us.SIGNINSTATUS == 2 ? "参加" : "未参加"}}
         </ion-col>
-        <!--<ion-col size="4" class="grid-btn" *ngIf="isEditUser">
-          <span (click)="editUserSignin(us)">修改</span>
-        </ion-col>-->
       </ion-row>
     </ion-grid>
     <ion-item style="--inner-border-width: 0px 0px 0px 0px;margin: 10px 0px;">
@@ -107,14 +80,40 @@
         人,未参加:{{(userList | myfilter:'SIGNINSTATUS':'3').length }}人
       </ion-text>
     </ion-item>
+    <ion-item *ngIf="isEditDemocracyReview()" style="--min-height: 5px;--inner-border-width: 0px 0px 0px 0px;margin: 10px 0px;"></ion-item>
+    <ion-item *ngIf="isEditDemocracyReview()" mode="md">
+      <ion-label style="min-width: 200px !important;">民主评议党员名单({{democracyReviewList.length}}人)
+      </ion-label>
+    </ion-item>
+    <ion-grid *ngIf="isEditDemocracyReview()">
+      <ion-row>
+        <ion-col size="2">
+          姓名
+        </ion-col>
+        <ion-col size="3">
+          开展评议日期
+        </ion-col>
+        <ion-col size="3">
+          结束评议日期
+        </ion-col>
+        <ion-col size="3">
+          评议结果
+        </ion-col>
+      </ion-row>
+      <ion-row *ngFor="let us of democracyReviewList;let idx=index">
+        <ion-col size="2">
+          {{us.userName}}
+        </ion-col>
+        <ion-col size="3">
+          {{us.startdate | date:'yyyy-MM-dd'}}
+        </ion-col>
+        <ion-col size="3">
+          {{us.enddate | date:'yyyy-MM-dd'}}
+        </ion-col>
+        <ion-col size="3">
+          {{us.democracyReviewResultTypeName}}
+        </ion-col>
+      </ion-row>
+    </ion-grid>
   </form>
 </ion-content>
-<ion-footer>
-  <div *ngIf="isEdit" class="toolbar-center"
-       style="text-align: right;">
-    <!--<ion-button *ngIf="isEdit" slot="end" color="danger" mode="ios"
-                (click)="editMeeting()">
-      管理
-    </ion-button>-->
-  </div>
-</ion-footer>

+ 25 - 493
parth5/parth5/src/app/views/pages/partylife/shyk/detail/detail.component.ts

@@ -8,6 +8,9 @@ import {DatePipe} from "@angular/common";
 import {interval} from 'rxjs';
 import {BaseComponent} from "../../../../../comm/base.component";
 import {takeUntil} from "rxjs/operators";
+import {SHYKApi} from "../../../../../api/partylife/shyk";
+import {DictionaryApi} from "../../../../../api/system/dictionary";
+import {AlertModal} from "../../../../../comm/modal/alert";
 
 @Component({
   selector: 'app-detail',
@@ -16,28 +19,10 @@ import {takeUntil} from "rxjs/operators";
 })
 export class DetailComponent extends BaseComponent {
 
-  secondsCounter = interval(10000);//定时器刷新成员签到状态(10秒)
-
-  loading: any = null;
+  democracyReviewType: number = 7;
   userInfo: any = {};//当前用户信息
-
-  webServerHost: string = '';
-
-  getDataUrl: string = '/appApi/shyk/getMeetingById';//获取会议信息url
-  getTopicUrl: string = '/appApi/shyk/getMeetingTopicList';//获取议题url
-  getUserUrl: string = '/appApi/shyk/getMeetingUserList';//获取参会成员url
-
-  saveSigninUrl: string = '/appApi/shyk/signinMeeting';//保存签收信息
-  saveCheckinUrl: string = '/appApi/shyk/checkinMeeting';//保存签到信息
-  saveStudyUrl: string = '/appApi/shyk/saveUserStudy';//保存补学信息
-  clearMessageUrl: string = '/appApi/message/clearMessageByBusinessId';
-  cancelMeetingUrl: string = '/appApi/shyk/cancelMeeting';
-  cancelUserSigninUrl: string = '/appApi/shyk/cancelUserSignin';//取消签收信息
-  cancelUserCheckinUrl: string = '/appApi/shyk/cancelUserCheckin';//取消签到信息
-
   meetingId: string = '';
   dataModel: any = {};//会议信息
-  topicList: any = [];//议题
   userList: any[] = [];//参会成员
   meetingUserModel: any = {};//当前登录人会议信息
   shykTypeName: string = '';//会议类型
@@ -45,15 +30,7 @@ export class DetailComponent extends BaseComponent {
   //页面按钮权限操作
   difftime: any = 0;//会议时间与当前时间差(分钟)
   isEdit: any = false;//是否可编辑(会议状态,已取消的会议不可编辑)
-  isSigin: any = false;//是否可签收
   isChecked: any = false;//是否可签到
-  isStudy: any = false;//是否需要补学
-  isEditStudy: any = false;//是否可填写补学情况
-  isShowimg: any = false;//是否可查看会议照片
-  isQrcode: any = false;//是否能查看会议二维码
-  isCancel: any = false;//是否可取消会议
-  isEditUser: any = false;//是否可操作成员签到
-  isEditRecord: any = false;//是否可录入会议记录
 
   endTime: any;
   beginTime: any;
@@ -73,17 +50,18 @@ export class DetailComponent extends BaseComponent {
     isMulti: true,
     readonly: true
   };
+  democracyReviewList: any = [];
+  meetingTypeList: any = [];
+  democracyReviewResultTypeList: any = [];
 
-  constructor(private router: Router, private routeInfo: ActivatedRoute, private configService: ConfigService, private userService: UserService, public alertController: AlertController,
-              public loadingController: LoadingController, private jsBridgeService: JsBridgeService, private datePipe: DatePipe) {
+  constructor(private router: Router, private routeInfo: ActivatedRoute, private userService: UserService, public alertController: AlertController,
+              public loadingController: LoadingController, private jsBridgeService: JsBridgeService, private datePipe: DatePipe
+    , private shykApi: SHYKApi, private dictionaryApi: DictionaryApi, private alertModal: AlertModal) {
     super();
   }
 
   ngOnInit(): void {
     this.userInfo = this.userService.GetUser();
-    this.configService.GetConfig().subscribe((config) => {
-      this.webServerHost = config.webServerHost;
-    });
     this.routeInfo.queryParams.subscribe(params => {
       this.meetingId = params['id'];
       this.imgOption1.fileRefid = this.meetingId;
@@ -91,498 +69,52 @@ export class DetailComponent extends BaseComponent {
       this.loadData();
     });
 
-    this.secondsCounter.pipe(takeUntil(this.$destory)).subscribe(data => {
-      this.loadUserList();
-    });
   }
 
   loadData() {
-    this.configService.HttpGetRomote(this.getDataUrl, {
-      id: this.meetingId,
-      userId: this.userInfo.userid,
-      userName: this.userInfo.username
-    }).subscribe((data: RequsetData) => {
+    this.shykApi.getData(this.meetingId).subscribe((data: RequsetData) => {
       if (data.success) {
         if (data.item != null) {
           this.dataModel = data.item;
-          if (data.extdata.meetingUser != null) {
-            this.meetingUserModel = data.extdata.meetingUser;
-            if (this.userInfo.userid == this.meetingUserModel.usercode) {
-              this.clearMessage(this.userInfo.userid, 1);
-            }
-          }
-          this.shykTypeName = data.extdata.shykTypeName;
           this.difftime = data.extdata.difftime;
-
-          this.endTime = new Date(this.datePipe.transform(this.dataModel.endtime, "yyyy/MM/dd HH:mm:ss"));
-          /*this.beginTime = new Date(this.datePipe.transform(this.dataModel.begintime, "yyyy/MM/dd HH:mm:ss"));*/
-
-          this.setPermiss();
-
           this.loadUserList();
-          this.loadTopicList();
+          this.getMeetingTypeList();
+          this.getMeetingDemocracyReviewList();
+
         }
       }
     });
   }
 
-  //操作权限设置
-  setPermiss() {
-    this.isEdit = this.dataModel.createuserid == this.userInfo.userid;
-    this.isCancel = this.dataModel.createuserid == this.userInfo.userid;
-    this.isEditUser = this.dataModel.createuserid == this.userInfo.userid;
-    /*this.isEdit = this.dataModel.createuserid == this.userInfo.userid && this.dataModel.shykstatus != 2;
-    //会议开始后可录入会议记录
-    this.isEditRecord = this.dataModel.createuserid == this.userInfo.userid && (this.dataModel.shykstatus == 1 || this.dataModel.shykstatus == 4 || this.dataModel.shykstatus == 5)
-                        && this.difftime <= 0 ;
-    //会议开始前可取消会议
-    this.isCancel = this.isEdit && this.difftime > 0;
-
-    //会议开始时间30分钟前,未签收或已签收参加的可请假(会议发起人不可请假)
-    this.isSigin = this.dataModel.shykstatus != 2 && this.difftime > 30 && (this.meetingUserModel.signinstatus == 1 || this.meetingUserModel.signinstatus == 2)
-      && this.dataModel.createuserid != this.userInfo.userid;
-
-    //会议开始时间前30分钟到会议结束前,未签到的可进行签到
-    this.isChecked = this.dataModel.shykstatus != 2 && this.difftime <= 30 && new Date() <= this.endTime && this.meetingUserModel.checkinstatus == 0;
-
-    //会议开始时间前30分钟到会议结束前,会议发起人或已签到人员可查看二维码
-    this.isQrcode = this.dataModel.shykstatus != 2 && this.difftime <= 30 && new Date() <= this.endTime
-      && (this.dataModel.createuserid == this.userInfo.userid || this.meetingUserModel.checkinstatus == 1);
-
-    //查看图片
-    this.isShowimg = this.dataModel.isuploadimg == 1;
-
-    //已录入会议记录,未参加会议的成员需录入补学情况
-    this.isStudy = this.dataModel.meetingrecordstate == 1 && (this.meetingUserModel.signinstatus == 1 || this.meetingUserModel.signinstatus == 3);
-    this.isEditStudy = (this.meetingUserModel.makeuupstudy == null || this.meetingUserModel.makeuupstudy == '');//未录入补学情况
-
-    //会议开始后可以在后台协助签到,录入会议记录后不允许签到
-    this.isEditUser = this.difftime <= 0
-      //&& this.dataModel.meetingrecordstate != 1
-      && this.dataModel.createuserid == this.userInfo.userid
-      && this.dataModel.shykstatus != 0 && this.dataModel.shykstatus != 2;*/
-
-  }
-
   loadUserList() {
-    this.configService.HttpGetRomote(this.getUserUrl, {
-      pageindex: 1,
-      pagesize: 10000,
-      meetingId: this.meetingId,
-    }).subscribe((data: RequsetData) => {
+    this.shykApi.getMeetingUserList(this.meetingId).subscribe((data: RequsetData) => {
       if (data.success) {
         if (data.item != null) {
           this.userList = data.item.list;
-          /*if (this.dataModel.createuserid != this.userInfo.userid && this.dataModel.partycode.length == this.userService.GetUser().dataDzzdm.length) {
-            this.userList = this.userList.filter(it => it.USERCODE == this.userInfo.userid);
-          }*/
         }
       }
     });
   }
 
-  loadTopicList() {
-    this.configService.HttpGetRomote(this.getTopicUrl, {
-      meetingId: this.meetingId,
-    }).subscribe((data: RequsetData) => {
+  getMeetingTypeList() {
+    this.shykApi.getMeetingTypeList(this.dataModel.meetingid).subscribe((data: RequsetData) => {
       if (data.success) {
-        if (data.item != null) {
-          this.topicList = data.item;
-        }
+        this.meetingTypeList = data.item;
       }
     });
   }
 
-  //签收
-  signin(isback, userId, isSignin, userremark) {
-    this.presentAlertConfirm(isSignin ? "确认参加?" : "确认请假?", () => {
-      this.presentLoading("提交中...").then(val => {
-        this.configService.HttpPostRomote(this.saveSigninUrl, {
-          meetingId: this.dataModel.meetingid,
-          userCode: userId,
-          isSignin: isSignin,
-          userId: this.userInfo.userid,
-          userName: this.userInfo.username,
-          userRemark: !isSignin ? userremark : ""
-        }).subscribe((fdata: RequsetData) => {
-          this.loading.dismiss();
-          if (fdata.success) {
-            if (isback) {
-              this.backPage();
-            } else {
-              this.loadUserList();
-            }
-          }
-          this.presentAlert(fdata.msg);
-        });
-      });
-    });
-  }
-
-  //签到
-  checkin(isback, userId: string) {
-    //验证成功进行签到
-    this.presentLoading("签到中...").then(val => {
-      this.configService.HttpPostRomote(this.saveCheckinUrl, {
-        meetingId: this.dataModel.meetingid,
-        userCode: userId,
-        userId: this.userInfo.userid,
-        userName: this.userInfo.username
-      }).subscribe((fdata: RequsetData) => {
-        this.loading.dismiss();
-        if (fdata.success) {
-          if (isback) {
-            this.backPage();
-          } else {
-            this.loadUserList();
-          }
-        }
-        this.presentAlert(fdata.msg);
-      });
-    });
-  }
-
-  //二维码签到
-  scanQRCode() {
-    this.jsBridgeService.ScanQRCode().subscribe(req => {
-      if (req.success == false) {
-        this.presentAlert(req.error);
-        return false;
-      }
-      if (req.data.qrcode != this.dataModel.meetingid) {
-        this.presentAlert("会议二维码不匹配!");
-        return false;
-      }
-      if (new Date() > this.endTime) {
-        this.presentAlert("请在会议结束前进行签到!");
-        return false;
+  getMeetingDemocracyReviewList() {
+    this.shykApi.getMeetingDemocracyReviewList(this.dataModel.meetingid).subscribe((data: RequsetData) => {
+      if (data.success) {
+        this.democracyReviewList = data.item;
       }
-
-      //验证成功进行签到
-      this.checkin(true, this.userInfo.userid);
-    });
-  }
-
-  //保存补学补课情况
-  saveStudy() {
-    this.presentLoading("提交中...").then(val => {
-      this.configService.HttpPostRomote(this.saveStudyUrl, {
-        meetingId: this.dataModel.meetingid,
-        userCode: this.userInfo.userid,
-        makeuupstudy: this.meetingUserModel.makeuupstudy,
-        userId: this.userInfo.userid,
-        userName: this.userInfo.username,
-      }).subscribe((fdata: RequsetData) => {
-        this.loading.dismiss();
-        if (fdata.success) {
-          this.clearMessage(this.userInfo.userid, 2);
-          this.backPage();
-        }
-        this.presentAlert(fdata.msg);
-      });
-    });
-  }
-
-  //查看二维码
-  showQrcode() {
-    this.configService.GetConfig().subscribe((config) => {
-      var url = config.webServerHost + "/appApi/home/ShowQRCode?code=" + encodeURI(this.dataModel.meetingid)
-      this.presentAlertQrcode(url);
-    });
-  }
-
-  //清除通知
-  clearMessage(userId: string, messageType) {
-    this.configService.HttpGetRomote(this.clearMessageUrl, {
-      businessId: this.dataModel.meetingid,
-      userId: userId,
-      messageType: messageType
-    }).subscribe((fdata: RequsetData) => {
-
-    });
-  }
-
-  //管理员操作人员签收
-  editUserSignin(user) {
-    /*if (user.SIGNINSTATUS == 1 && this.isEditUser) {
-      this.presentAlertUserSignin(user);//签收
-    }
-
-    if ((user.SIGNINSTATUS == 2 || user.SIGNINSTATUS == 3) && this.isEditUser) {
-      this.presentAlertUserSignin_Cancel(user);//取消签收
-    }*/
-    if (this.isEditUser) {
-      this.presentAlertUserSignin(user);//签收
-    }
-  }
-
-  //管理员操作人员签到
-  editUserCheckin(user) {
-    if (user.CHECKINSTATUS == 0 && this.isEditUser) {
-      this.presentAlertUserCheckin(user);//签到
-    }
-
-    if (user.CHECKINSTATUS == 1 && this.isEditUser) {
-      this.presentAlertUserCheckin_Cancel(user);//取消签到
-    }
-  }
-
-  //取消会议
-  cancel() {
-    this.presentAlertConfirm("确认取消会议?", () => {
-      this.presentLoading("取消中...").then(val => {
-        this.configService.HttpPostRomote(this.cancelMeetingUrl, {
-          meetingId: this.dataModel.meetingid,
-          userId: this.userInfo.userid,
-          userName: this.userInfo.username
-        }).subscribe((fdata: RequsetData) => {
-          this.loading.dismiss();
-          if (fdata.success) {
-            this.backPage();
-          }
-          this.presentAlert(fdata.msg);
-        });
-      });
-    });
-  }
-
-  showTopic(id) {
-    if (id != null && id != '') {
-      //this.router.navigate(['/main/tabs/tab1/shykshowtopic'], {queryParams: {id: id, random: Math.random()}});
-      this.router.navigate(['../shykshowtopic'], {
-        relativeTo: this.routeInfo,
-        queryParams: {id: id, random: Math.random()}
-      });
-    }
-  }
-
-  //请假
-  editUserLeave() {
-    this.presentAlertUserLeave();
-  }
-
-  editMeeting() {
-    this.router.navigate(['../shykEdit'], {
-      relativeTo: this.routeInfo,
-      queryParams: {id: this.dataModel.meetingid, random: Math.random()}
     });
   }
 
-  editRecord() {
-    this.router.navigate(['../shykrecord'], {
-      relativeTo: this.routeInfo,
-      queryParams: {id: this.dataModel.meetingid, random: Math.random()}
-    });
-  }
-
-  async presentLoading(msg: string) {
-    this.loading = await this.loadingController.create({
-      message: msg,
-      spinner: 'circles'
-    });
-    return this.loading.present();
-  }
-
-  async presentAlert(msg: string) {
-    const alert = await this.alertController.create({
-      header: '提示',
-      subHeader: '',
-      message: msg,
-      buttons: ['确定']
-    });
-
-    await alert.present();
-  }
-
-  async presentAlertConfirm(msg: string, handler) {
-    const alert = await this.alertController.create({
-      header: '提示',
-      message: '<strong>' + msg + '</strong>',
-      buttons: [
-        {
-          text: '关闭',
-          role: 'cancel',
-          cssClass: 'secondary',
-          handler: () => {
-
-          }
-        }, {
-          text: '确定',
-          handler: handler
-        }
-      ]
-    });
-
-    await alert.present();
-  }
-
-  async presentAlertQrcode(url) {
-    const alert = await this.alertController.create({
-      header: '会议二维码',
-      message: '<img src="' + url + '"/>',
-      buttons: ['关闭']
-    });
-
-    await alert.present();
-  }
-
-  async presentAlertUserSignin(user) {
-    const alert = await this.alertController.create({
-      header: user.USERNAME,
-      inputs: [
-        {
-          name: 'userremark',
-          type: 'text',
-          placeholder: '请输入未参加原因',
-          value: user.USERREMARK
-        }
-      ],
-      buttons: [{
-        text: '未参加',
-        handler: (result) => {
-          if (result.userremark == "" || result.userremark == null) {
-            this.presentAlert("请填写未参加原因");
-            return false;
-          }
-          this.signin(false, user.USERCODE, false, result.userremark);
-
-          this.clearMessage(user.USERCODE, 1);
-        }
-      }, {
-        text: '参加',
-        handler: (result) => {
-          this.signin(false, user.USERCODE, true, "");
-
-          this.clearMessage(user.USERCODE, 1);
-        }
-      }]
-    });
-
-    await alert.present();
-  }
-
-  async presentAlertUserCheckin(user) {
-    const alert = await this.alertController.create({
-      header: user.USERNAME,
-      buttons: [{
-        text: '关闭',
-        role: 'cancel',
-        cssClass: 'secondary',
-        handler: () => {
-
-        }
-      }, {
-        text: '签到',
-        handler: (result) => {
-          this.checkin(false, user.USERCODE);
-
-          this.clearMessage(user.USERCODE, 1);
-        }
-      }]
-    });
-
-    await alert.present();
-  }
-
-  //请假
-  async presentAlertUserLeave() {
-    const alert = await this.alertController.create({
-      header: '请假',
-      inputs: [
-        {
-          name: 'userremark',
-          type: 'text',
-          placeholder: '请输入未参加原因',
-          value: this.meetingUserModel.userremark
-        }
-      ],
-      buttons: [{
-        text: '请假',
-        handler: (result) => {
-          if (result.userremark == "" || result.userremark == null) {
-            this.presentAlert("请填写未参加原因");
-            return false;
-          }
-          this.signin(true, this.userInfo.userid, false, result.userremark);
-
-          this.clearMessage(this.userInfo.userid, 1);
-        }
-      }]
-    });
-
-    await alert.present();
-  }
-
-
-  async presentAlertUserSignin_Cancel(user) {
-    const alert = await this.alertController.create({
-      header: user.USERNAME,
-      message: "取消会议签收?",
-      buttons: [{
-        text: '关闭',
-        role: 'cancel',
-        cssClass: 'secondary',
-        handler: () => {
-
-        }
-      }, {
-        text: '确认',
-        handler: (result) => {
-          this.presentLoading("取消中...").then(val => {
-            this.configService.HttpPostRomote(this.cancelUserSigninUrl, {
-              meetingId: this.dataModel.meetingid,
-              userCode: user.USERCODE,
-              userId: this.userInfo.userid,
-              userName: this.userInfo.username
-            }).subscribe((fdata: RequsetData) => {
-              this.loading.dismiss();
-              if (fdata.success) {
-                this.loadUserList();
-              }
-              this.presentAlert(fdata.msg);
-            });
-          });
-        }
-      }]
-    });
-
-    await alert.present();
-  }
-
-  async presentAlertUserCheckin_Cancel(user) {
-    const alert = await this.alertController.create({
-      header: user.USERNAME,
-      message: "取消签到?",
-      buttons: [{
-        text: '关闭',
-        role: 'cancel',
-        cssClass: 'secondary',
-        handler: () => {
-
-        }
-      }, {
-        text: '确认',
-        handler: (result) => {
-          this.presentLoading("取消中...").then(val => {
-            this.configService.HttpPostRomote(this.cancelUserCheckinUrl, {
-              meetingId: this.dataModel.meetingid,
-              userCode: user.USERCODE,
-              userId: this.userInfo.userid,
-              userName: this.userInfo.username
-            }).subscribe((fdata: RequsetData) => {
-              this.loading.dismiss();
-              if (fdata.success) {
-                this.loadUserList();
-              }
-              this.presentAlert(fdata.msg);
-            });
-          });
-        }
-      }]
-    });
-
-    await alert.present();
-  }
+  isEditDemocracyReview = function () {
+    return this.meetingTypeList.filter(e => e.shyktype === this.democracyReviewType).length > 0;
+  };
 
   //跳转页面
   backPage() {

+ 90 - 60
parth5/parth5/src/app/views/pages/partylife/shyk/edit/edit.component.html

@@ -14,42 +14,25 @@
       </ion-label>
       <ion-select #v_meetingtype_select="ngModel" name="v_meetingtype_select"
                   id="v_meetingtype_select"
-                  [(ngModel)]="dataModel.shyktype" okText="确定" cancelText="取消"
-                  interface="action-sheet" (ngModelChange)="changeType()" required>
+                  [(ngModel)]="selectShyktype" okText="确定" cancelText="取消"
+                  interface="action-sheet"
+                  [multiple]="true"
+                  required>
         <ion-select-option *ngFor="let item of typeList"
-                           [value]="item.id">{{item.name}}</ion-select-option>
+                           [value]="item.dickey">{{item.dicvalue}}</ion-select-option>
       </ion-select>
     </ion-item>
     <ion-item mode="md">
-      <ion-label *ngIf="dataModel.shyktype !=4">会议议题
-        <span class="danger">*</span>
-      </ion-label>
-      <ion-label *ngIf="dataModel.shyktype ==4">会议主题
-        <span class="danger">*</span>
-      </ion-label>
+      <ion-label>议题</ion-label>
+      <ion-textarea readonly="false" placeholder="请填写议题" name="topiccontent"
+                    [(ngModel)]="dataModel.topiccontent"></ion-textarea>
     </ion-item>
-    <div class="topics">
-      <div *ngFor="let it of topicList;" [ngClass]="it.ID == ''?'topics-other':''">
-                    <span *ngIf="it.ID != ''" (click)="it.checked=(it.checked==true?false:true)"
-                          ngClass="{{it.checked==true?'topic-select':'topic-select-n'}}">{{it.MBMC}}
-                    </span>
-        <ion-item *ngIf="it.ID == ''" mode="md">
-          <ion-input #v_ytmc="ngModel" name="v_ytmc"
-                     placeholder="{{dataModel.shyktype !=4?'输入其他议题':'输入会议主题'}}"
-                     [(ngModel)]="it.MBMC">
-          </ion-input>
-        </ion-item>
-      </div>
-    </div>
     <ion-item detail mode="md">
-      <ion-label *ngIf="dataModel.shyktype!=3">所属党支部
-        <span class="danger">*</span>
-      </ion-label>
-      <ion-label *ngIf="dataModel.shyktype==3">所属党小组
+      <ion-label>所属党支部
         <span class="danger">*</span>
       </ion-label>
       <app-partyselect [(dzzdm)]="dataModel.partycode" [(dzzmc)]="dataModel.partyname"
-                       (dzzmcChange)="setMeetingname(dataModel.shyktype);defaultUser();"></app-partyselect>
+                       (dzzmcChange)="defaultUser();"></app-partyselect>
     </ion-item>
     <ion-item mode="md">
       <ion-label>会议名称
@@ -95,48 +78,37 @@
                     [(ngModel)]="dataModel.begintime"
                     [pickerOptions]="begintimePickerOptions"
                     max="{{maxDate}}"
-                    (ionChange)="meetingDateChange()"
                     required></ion-datetime>
     </ion-item>
-    <!--<ion-item *ngIf="isUploadFile" style="--inner-border-width: 0px 0px 0px 0px;">
+    <ion-item detail mode="md">
+      <ion-label>是否第一议题</ion-label>
+      <ion-select #v_meetingfirsttopic_select="ngModel" name="v_meetingfirsttopic_select"
+                  id="v_meetingfirsttopic_select"
+                  [(ngModel)]="dataModel.isfirsttopic" okText="确定" cancelText="取消"
+                  interface="action-sheet">
+        <ion-select-option *ngFor="let item of boolList"
+                           [value]="item.dickey">{{item.dicvalue}}</ion-select-option>
+      </ion-select>
+    </ion-item>
+    <ion-item style="--inner-border-width: 0px 0px 0px 0px;">
       <ion-label>会场照片</ion-label>
     </ion-item>
-    <app-imglist *ngIf="isUploadFile" [(imgOption)]="imgOption1"></app-imglist>
-    <ion-item *ngIf="isUploadFile" style="--min-height: 1px;--inner-border-width: 0px 0px 1px 0px;--padding-start: 0px;"></ion-item>-->
-    <ion-item *ngIf="isUploadFile" style="--inner-border-width: 0px 0px 0px 0px;">
-      <ion-label>相关记录</ion-label>
+    <app-imglist [(imgOption)]="imgOption1"></app-imglist>
+    <ion-item style="--min-height: 1px;--inner-border-width: 0px 0px 1px 0px;--padding-start: 0px;"></ion-item>
+    <ion-item style="--inner-border-width: 0px 0px 0px 0px;">
+      <ion-label>台账记录</ion-label>
     </ion-item>
     <app-imglist [(imgOption)]="imgOption2"></app-imglist>
-    <ion-label  style="color: red;">备注:以上可上传会议记录、现场照片,此项为选传项,仅作资料留存,不作为必传项点,也不得作为检查、考核项点。</ion-label>
     <ion-item style="--min-height: 5px;--inner-border-width: 0px 0px 1px 0px;--padding-start: 0px;"></ion-item>
 
     <ion-item mode="md">
-      <ion-label>参会人({{userList.length}}人)
+      <ion-label style="min-width: 150px  !important;">参会人({{userList.length}}人)
         <span class="danger">*</span>
       </ion-label>
-      <ion-button (click)="selectUser()" fill="clear" size="large">
+      <ion-button (click)="selectUser()" fill="clear" size="large" slot="end">
         <ion-icon name="add-circle-outline" size="large" color="danger"></ion-icon>
       </ion-button>
     </ion-item>
-    <!--<div class="users">
-      <div *ngFor="let it of userList;let idx=index">
-        <ion-text>{{it.XM}}</ion-text>
-        <ion-icon name="remove-circle" color="danger" (click)="deleteUser(idx)"></ion-icon>
-      </div>
-    </div>-->
-    <!--<ion-item class="meeting-user">
-      <ion-row class="meeting-user-row" style="margin-left: 10px;margin-bottom: 10px;">
-        <ion-col size="12">
-          <ion-row class="user-item" *ngFor="let us of userList;let idx=index">
-            <ion-col size="6">{{us.XM}}</ion-col>
-            <ion-col size="3" (click)="editUserSignin(us,null)" ><span class="user-edit">{{us.SIGNINSTATUS==2?"参加":"未参加"}}</span>
-            </ion-col>
-            <ion-col size="3" (click)="deleteUser(idx)"><span class="user-edit">删除</span>
-            </ion-col>
-          </ion-row>
-        </ion-col>
-      </ion-row>
-    </ion-item>-->
     <ion-grid>
       <ion-row>
         <ion-col size="4">
@@ -149,7 +121,7 @@
           操作
         </ion-col>
       </ion-row>
-      <ion-row *ngFor="let us of userList;let idx=index">
+      <ion-row *ngFor="let us of userList;let idx=index" [ngClass]="{'border-none':idx===userList.length-1 && isEditDemocracyReview()}">
         <ion-col size="4">
           {{us.XM}}
         </ion-col>
@@ -162,13 +134,71 @@
         </ion-col>
       </ion-row>
     </ion-grid>
-    <ion-toolbar class="toolbar-center">
+    <ion-item *ngIf="isEditDemocracyReview()" style="--min-height: 5px;--inner-border-width: 0px 0px 1px 0px;--padding-start: 0px;"></ion-item>
+    <ion-item *ngIf="isEditDemocracyReview()" mode="md">
+      <ion-label style="min-width: 200px !important;">民主评议党员名单({{democracyReviewList.length}}人)
+        <span class="danger">*</span>
+      </ion-label>
+      <ion-button (click)="selectDemocracyReviewUser()" fill="clear" size="large" slot="end">
+        <ion-icon name="add-circle-outline" size="large" color="danger"></ion-icon>
+      </ion-button>
+    </ion-item>
+    <ion-grid *ngIf="isEditDemocracyReview()">
+      <ion-row>
+        <ion-col size="2">
+          姓名
+        </ion-col>
+        <ion-col size="3">
+          开展评议日期
+        </ion-col>
+        <ion-col size="3">
+          结束评议日期
+        </ion-col>
+        <ion-col size="2">
+          评议结果
+        </ion-col>
+        <ion-col size="2">
+          操作
+        </ion-col>
+      </ion-row>
+      <ion-row *ngFor="let us of democracyReviewList;let idx=index">
+        <ion-col size="2">
+          {{us.userName}}
+        </ion-col>
+        <ion-col size="3">
+          <ion-datetime displayFormat="YYYY-MM-DD" pickerFormat="YYYY MM DD"
+                        name="startdate_{{idx}}"
+                        cancelText="取消" doneText="选择" placeholder="请选择"
+                        [(ngModel)]="us.startdate"
+                        required></ion-datetime>
+        </ion-col>
+        <ion-col size="3">
+          <ion-datetime displayFormat="YYYY-MM-DD" pickerFormat="YYYY MM DD"
+                        name="enddate_{{idx}}"
+                        cancelText="取消" doneText="选择" placeholder="请选择"
+                        [(ngModel)]="us.enddate"
+                        required></ion-datetime>
+        </ion-col>
+        <ion-col size="2">
+          <ion-select name="democracyreviewresulttype_{{idx}}"  placeholder="请选择"
+                      [(ngModel)]="us.democracyreviewresulttype" okText="确定" cancelText="取消"
+                      interface="action-sheet">
+            <ion-select-option *ngFor="let item of democracyReviewResultTypeList"
+                               [value]="item.dickey">{{item.dicvalue}}</ion-select-option>
+          </ion-select>
+        </ion-col>
+        <ion-col size="2" class="grid-btn">
+          <span (click)="editUserSignin(us,null)">修改</span>
+          <span (click)="deleteUser(idx)">删除</span>
+        </ion-col>
+      </ion-row>
+    </ion-grid>
+    <div class="footer-btn">
       <ion-button slot="end" color="danger" mode="ios"
-                  (click)="saveMeeting(1,true)"
-                  [disabled]="!dataForm.form.valid">
+                  (click)="saveMeeting()"  [disabled]="!dataForm.form.valid">
         提交
       </ion-button>
-    </ion-toolbar>
+    </div>
   </form>
 </ion-content>
 

+ 12 - 0
parth5/parth5/src/app/views/pages/partylife/shyk/edit/edit.component.scss

@@ -153,6 +153,7 @@ app-partyselect{
 ion-grid {
   padding: 0px;
   color: #5E4545;
+  font-size: 14px;
 
   ion-row {
     padding: 5px 12px;
@@ -162,6 +163,14 @@ ion-grid {
       display: -webkit-box;
       -webkit-box-orient: horizontal;
       -webkit-box-align: center;
+
+      ion-datetime{
+        --padding-start: 0px;
+      }
+
+      ion-select{
+        --padding-start: 0px;
+      }
     }
 
     ion-col:not(:first-child) {
@@ -187,3 +196,6 @@ ion-grid {
     background-color: white;
   }
 }
+.border-none{
+  border-bottom: none !important;
+}

+ 118 - 145
parth5/parth5/src/app/views/pages/partylife/shyk/edit/edit.component.ts

@@ -10,6 +10,8 @@ import {WorkService} from "../../../../../service/work.service";
 import {EventService} from "../../../../../service/event.service";
 import {SHYKApi} from "../../../../../api/partylife/shyk";
 import OperateEnum from "../../../../../enum/OperateEnum";
+import {DictionaryApi} from "../../../../../api/system/dictionary";
+import {AlertModal} from "../../../../../comm/modal/alert";
 
 @Component({
   selector: 'app-edit',
@@ -23,13 +25,10 @@ export class EditComponent implements OnInit {
   loading: any = null;
   userInfo: any = {};
   selectUserUrl: string = "/appApi/home/getPartyUserList";
+  democracyReviewType: number = 7;
 
   dataModel: any = {meetingid: ''};
-  typeList: any = [{id: 1, name: '党员大会'}, {id: 2, name: '支委会'}, {id: 3, name: '党小组会'}, {
-    id: 4,
-    name: '党课'
-  }];
-  topicList: any = [{TOPICNAME: ''}, {}];
+  typeList: any = [];
   userList: any = [];
   historyAddressList: any = [];
 
@@ -39,7 +38,6 @@ export class EditComponent implements OnInit {
   begintime: string = '';
   endDate: string = '';
   endtime: string = '';
-  isUploadFile: boolean = false;
   maxDate: any = moment(new Date()).add(1, 'M').format("YYYY-MM-DD");
   imgOption1: any = {
     fileRefid: '',
@@ -55,10 +53,15 @@ export class EditComponent implements OnInit {
     isMulti: false,
     readonly: false
   };
+  boolList: any = [{dickey: true, dicvalue: '是'}, {dickey: false, dicvalue: '否'}];
+  democracyReviewList: any = [];
+  meetingTypeList: any = [];
+  democracyReviewResultTypeList: any = [];
+  selectShyktype: any = [];
 
   constructor(private datePipe: DatePipe, private router: Router, private routeInfo: ActivatedRoute, private configService: ConfigService, private userService: UserService, public alertController: AlertController,
-              public modalController: ModalController, public loadingController: LoadingController, public pickercontroller: PickerController, private workService: WorkService, private eventService: EventService
-    , private shykApi: SHYKApi) {
+              public modalController: ModalController, public pickercontroller: PickerController, private workService: WorkService, private eventService: EventService
+    , private shykApi: SHYKApi, private dictionaryApi: DictionaryApi, private alertModal: AlertModal) {
   }
 
   ngOnInit() {
@@ -68,7 +71,7 @@ export class EditComponent implements OnInit {
       this.op = parseInt(params['op']);
       this.imgOption1.fileRefid = this.dataModel.meetingid;
       this.imgOption2.fileRefid = this.dataModel.meetingid;
-
+      this.getDictionList();
       this.loadData();
     });
 
@@ -80,7 +83,7 @@ export class EditComponent implements OnInit {
       }, {
         text: '选择',
         handler: (value) => {
-          this.beginDate = value.year.text + '/' + value.month.text + '/' + value.day.text;
+          this.beginDate = value.year.text + '-' + value.month.text + '-' + value.day.text;
           this.openTimePicker(1);
         }
       }]
@@ -93,48 +96,16 @@ export class EditComponent implements OnInit {
       }, {
         text: '选择',
         handler: (value) => {
-          this.endDate = value.year.text + '/' + value.month.text + '/' + value.day.text;
+          this.endDate = value.year.text + '-' + value.month.text + '-' + value.day.text;
           this.openTimePicker(2);
         }
       }]
     }
   }
 
-  //加载会议信息
-  loadData() {
-    this.shykApi.getData(this.dataModel.meetingid).subscribe((data: RequsetData) => {
-      if (data.success && data.item != null) {
-        this.dataModel = data.item;
-
-        if (this.op === OperateEnum.新增) {
-          this.dataModel.shyktype = 1;
-          this.dataModel.chairuser = this.userInfo.username;
-          this.dataModel.partycode = this.userService.GetUser().dataDzzdm.length <= 9 ? this.userInfo.DZZDM : this.userService.GetUser().dataDzzdm;
-          this.dataModel.partyname = this.userService.GetUser().dataDzzdm.length <= 9 ? this.userInfo.DZZMC : this.userService.GetUser().dataDzzmc;
-
-          this.setMeetingname(this.dataModel.shyktype);
-        }
-
-        this.imgOption1.fileRefid = this.dataModel.meetingid;
-        this.imgOption2.fileRefid = this.dataModel.meetingid;
-
-        this.loadTopicList();
-        this.loadUserList();
-        this.loadHistoryAddressList();
-        this.setUploadFile();
-      }
-    });
-  }
-
   //保存会议
-  saveMeeting(shykstatus, isnotify) {
-    var topics = this.topicList.filter(it => {
-      return (it.checked == true || (it.ID == '' && it.MBMC != ''));
-    }).map(function (val) {
-      return {mbmc: val.MBMC, id: val.ID};
-    });
-
-    var users = this.userList.map(function (val) {
+  saveMeeting() {
+    const users = this.userList.map(function (val) {
       return {
         rybm: val.RYBM,
         xm: val.XM,
@@ -145,115 +116,103 @@ export class EditComponent implements OnInit {
       };
     });
 
-    if (topics.length <= 0) {
-      this.presentAlert(this.dataModel.shyktype == 4 ? "请填写会议主题" : "请选择议题");
-      return false;
-    }
+    const typeList = this.selectShyktype.map(function (val) {
+      return {
+        shyktype: val
+      }
+    });
+
     if (users.length <= 0) {
-      this.presentAlert("请选择参会人");
+      this.alertModal.alert("请选择参会人");
       return false;
     }
 
-    this.dataModel.begintime = new Date(this.datePipe.transform(this.dataModel.begintime, "yyyy/MM/dd HH:mm:ss"));
-    /*this.dataModel.endtime = new Date(this.datePipe.transform(this.dataModel.endtime, "yyyy/MM/dd HH:mm:ss"));
-    if (this.dataModel.begintime >= this.dataModel.endtime) {
-      this.presentAlert('开始时间必须小于结束时间');
-      return false;
-    }*/
-
-    this.presentLoading("提交中...").then(val => {
-      this.shykApi.save(this.dataModel, topics, users, this.userInfo.userid, this.userInfo.username, isnotify, shykstatus).subscribe((fdata: RequsetData) => {
-        this.loading.dismiss();
+    this.alertModal.loading("提交中...").then((loading) => {
+      this.shykApi.save(this.dataModel, users, typeList, this.isEditDemocracyReview() ? this.democracyReviewList : []
+        , this.userInfo.userid, this.userInfo.username).subscribe((fdata: RequsetData) => {
+        loading.dismiss();
         if (fdata.success) {
           if (moment(this.dataModel.begintime) > moment(new Date())) {
-            this.presentAlert("会议已经提交成功!本次提交的会议为计划会议,请在会议结束后上传会议照片、台账记录、以及考勤信息内容。");
+            this.alertModal.alert("提交成功!本次提交的会议为计划会议,请在会议结束后上传会议照片、台账记录、以及考勤信息内容。");
           } else {
-            this.presentAlert(fdata.msg);
+            this.alertModal.alert('提交成功!');
           }
           this.back();
           /*this.eventService.eventEmit.emit('reloadShykList', '刷新页面');
           this.workService.getWorkSettingList();*/
         } else {
-          this.presentAlert(fdata.msg);
+          this.alertModal.alert(fdata.msg);
         }
+      }, () => {
+        loading.dismiss();
       });
     });
   }
 
-  //会议类型变更
-  changeType() {
-    this.setMeetingname(this.dataModel.shyktype);
-    //this.setUserUrl();
-    this.loadTopicList();
-    this.defaultUser();
-  }
-
-  //会议名称
-  setMeetingname(typeId) {
-    //会议名称默认值【类型】部门[日期]
+  isEditDemocracyReview = function () {
+    return this.selectShyktype.filter(e => e === this.democracyReviewType).length > 0;
+  };
 
-    let meetingDate = this.dataModel.begintime || new Date();
+  //删除参会成员
+  deleteUser(idx) {
+    this.userList.splice(idx, 1);
+  }
 
-    this.dataModel.meetingname = "【" + this.typeList.filter(it => it.id == typeId)[0].name + "】" +
-      this.dataModel.partyname + "[" + this.datePipe.transform(meetingDate, 'yyyyMM') + "]";
+  //选择参会成员
+  selectUser() {
+    this.presentModal(1);
   }
 
-  setUploadFile() {
-    this.isUploadFile = this.dataModel.begintime != null && moment(this.dataModel.begintime) <= moment(new Date());
-  };
+  selectDemocracyReviewUser() {
+    this.presentModal(2);
+  }
 
-  meetingDateChange() {
-    this.setMeetingname(this.dataModel.shyktype);
-    this.setUploadFile();
-  };
+  //加载会议信息
+  loadData() {
+    this.shykApi.getData(this.dataModel.meetingid).subscribe((data: RequsetData) => {
+      if (data.success && data.item != null) {
+        this.dataModel = data.item;
 
-  //加载题议
-  loadTopicList() {
-    this.shykApi.getTopicList(this.dataModel.meetingid, this.dataModel.shyktype).subscribe((data: RequsetData) => {
-      if (data.success) {
-        if (data.item != null) {
-          this.topicList = data.item;
-          this.topicList.forEach((it) => {
-            if (it.MEETINGTOPICID != null && it.MEETINGTOPICID != "") {
-              it.checked = true;
-            }
-          });
+        if (this.op === OperateEnum.新增) {
+          this.dataModel.chairuser = this.userInfo.username;
+          this.dataModel.partycode = this.userInfo.DZZDM;
+          this.dataModel.partyname = this.userInfo.DZZMC;
         }
+
+        this.imgOption1.fileRefid = this.dataModel.meetingid;
+        this.imgOption2.fileRefid = this.dataModel.meetingid;
+
+        this.getUserList();
+        this.getHistoryAddressList();
+        this.getMeetingTypeList();
+        this.getMeetingDemocracyReviewList();
       }
     });
   }
 
   //加载人员
-  loadUserList() {
+  getUserList() {
     this.shykApi.getMeetingUserList(this.dataModel.meetingid).subscribe((data: RequsetData) => {
       if (data.success) {
         if (data.item != null) {
           this.userList = data.item.list;
         }
       }
-
       if (this.userList.length <= 0) {
         this.defaultUser();
       }
     });
-
   }
 
   //初始化参会成员
   defaultUser() {
     this.userList = [];
     var dzzdm = this.dataModel.partycode;
-    var szdzbdm = '';
     var getUserUrl = this.selectUserUrl;
-    if (this.dataModel.shyktype == 2) {
-      szdzbdm = this.dataModel.partycode;
-      getUserUrl = "/appApi/home/getLeaderUserList";//支委领导成员
-    }
 
     this.configService.HttpGetRomote(getUserUrl, {
       pageindex: 1,
       pagesize: 10000,
-      szdzbdm: szdzbdm,
       dzzdm: dzzdm
     }).subscribe((data: RequsetData) => {
       if (data.success) {
@@ -267,17 +226,21 @@ export class EditComponent implements OnInit {
     });
   }
 
-  //删除参会成员
-  deleteUser(idx) {
-    this.userList.splice(idx, 1);
-  }
+  getDictionList() {
+    this.dictionaryApi.getDictionaryList('shykType').subscribe((data: RequsetData) => {
+      if (data.success) {
+        this.typeList = data.item;
+      }
+    });
 
-  //选择参会成员
-  selectUser() {
-    this.presentModal();
+    this.dictionaryApi.getDictionaryList('DemocracyReviewResultType').subscribe((data: RequsetData) => {
+      if (data.success) {
+        this.democracyReviewResultTypeList = data.item;
+      }
+    });
   }
 
-  loadHistoryAddressList() {
+  getHistoryAddressList() {
     this.shykApi.getHistoryAddressList(this.userInfo.userid).subscribe((data: RequsetData) => {
       if (data.success) {
         if (data.item != null) {
@@ -290,34 +253,31 @@ export class EditComponent implements OnInit {
     });
   }
 
-  //取消
-  back() {
-    this.router.navigate(['../../shyk'], {relativeTo: this.routeInfo});
-  }
-
-  async presentLoading(msg: string) {
-    this.loading = await this.loadingController.create({
-      message: msg,
-      spinner: 'circles'
+  getMeetingTypeList() {
+    this.shykApi.getMeetingTypeList(this.dataModel.meetingid).subscribe((data: RequsetData) => {
+      if (data.success) {
+        this.meetingTypeList = data.item;
+      }
     });
-    return this.loading.present();
   }
 
-  async presentAlert(msg: string) {
-    const alert = await this.alertController.create({
-      header: '提示',
-      subHeader: '',
-      message: msg,
-      buttons: ['确定']
+  getMeetingDemocracyReviewList() {
+    this.shykApi.getMeetingDemocracyReviewList(this.dataModel.meetingid).subscribe((data: RequsetData) => {
+      if (data.success) {
+        this.democracyReviewList = data.item;
+      }
     });
+  }
 
-    await alert.present();
+  //取消
+  back() {
+    this.router.navigate(['../../shyk'], {relativeTo: this.routeInfo});
   }
 
   //人员选择控件
-  async presentModal() {
-    var removeUsers = this.userList.map(it => it.RYBM).join(',');
-    var szdzbdm = this.dataModel.shyktype == 2 ? this.userInfo.DZZDM : '';
+  async presentModal(type) {
+    /*var removeUsers = this.userList.map(it => it.RYBM).join(',');*/
+    /*var szdzbdm = this.dataModel.shyktype == 2 ? this.userInfo.DZZDM : '';*/
 
     const modal = await this.modalController.create({
       component: UserselectPage,
@@ -325,10 +285,10 @@ export class EditComponent implements OnInit {
         'pageindex': 1,
         'pagesize': 30,
         'dzzdm': this.dataModel.partycode,
-        'removeUsers': removeUsers,
+        /*'removeUsers': removeUsers,*/
         'xm': '',
         'getUserUrl': this.selectUserUrl,
-        'szdzbdm': szdzbdm
+        /*'szdzbdm': szdzbdm*/
       }
     });
 
@@ -338,16 +298,29 @@ export class EditComponent implements OnInit {
     if (data.rtnData != null && data.rtnData.length > 0) {
       var us = data.rtnData;
 
-      for (var i = 0; i < us.length; i++) {
-        if (this.userList.filter(it => {
-          return it.RYBM == us[i].rybm
-        }).length <= 0) {
-          this.userList.push({
-            RYJBXXBS: us[i].ryjbxxbs, RYBM: us[i].rybm, XM: us[i].xm,
-            SZDZBDM: us[i].szdzbdm,
-            DZZMC: us[i].szdzzmc,
-            SIGNINSTATUS: 2
-          });
+      if (type === 1) {
+        for (var i = 0; i < us.length; i++) {
+          if (this.userList.filter(it => {
+            return it.RYBM == us[i].rybm
+          }).length <= 0) {
+            this.userList.push({
+              RYJBXXBS: us[i].ryjbxxbs, RYBM: us[i].rybm, XM: us[i].xm,
+              SZDZBDM: us[i].szdzbdm,
+              DZZMC: us[i].szdzzmc,
+              SIGNINSTATUS: 2
+            });
+          }
+        }
+      } else {
+        for (var i = 0; i < us.length; i++) {
+          if (this.democracyReviewList.filter(it => {
+            return it.usercode == us[i].rybm
+          }).length <= 0) {
+            this.democracyReviewList.push({
+              usercode: us[i].rybm,
+              userName: us[i].xm,
+            });
+          }
         }
       }
 
@@ -426,7 +399,7 @@ export class EditComponent implements OnInit {
         text: '未参加',
         handler: (result) => {
           if (result.userremark == "" || result.userremark == null) {
-            this.presentAlert("请填写未参加原因");
+            this.alertModal.alert("请填写未参加原因");
             return false;
           }
           user.SIGNINSTATUS = 3;

+ 2 - 5
parth5/parth5/src/app/views/pages/partylife/shyk/shyk.component.html

@@ -28,13 +28,10 @@
           </ion-row>
           <ion-row class="item-subtitle">
             <ion-label class="item-subtitle-type">
-              {{item.SHYKTYPENAME}}
-            </ion-label>
-            <ion-label *ngIf="item.PARTYCODE.length>12" style="white-space: normal;">
-              {{item.DWMC}}
+              {{item.shykTypeNames}}
             </ion-label>
             <ion-label>
-              <span class="text-month">   {{item.BEGINTIME | date:'yyyy-MM-dd HH:mm'}}</span>
+              <span class="text-month">{{item.BEGINTIME | date:'yyyy-MM-dd HH:mm'}}</span>
             </ion-label>
           </ion-row>
         </ion-label>

+ 3 - 1
parth5/parth5/src/app/views/pages/partylife/shyk/shyk.component.scss

@@ -36,12 +36,14 @@ ion-label {
 }
 
 .item-subtitle {
+  display: flex;
+  justify-content: space-between;
   .item-subtitle-type {
     border: 1px solid #da2c36;
     color: #da2c36;
     background-color: white;
     border-radius: 3px;
-    padding: 1px 5px 0px 5px;
+    padding: 0px 5px 0px 5px;
   }
 
   .item-subtitle-state {

+ 3 - 1
parth5/parth5/src/app/views/tapp/tab-main/tab-main.module.ts

@@ -16,6 +16,7 @@ import {PhotoSwipeComponent} from "../../../comm/modal/photo-swipe/photo-swipe.c
 import {MyfilterPipe} from "../../../comm/pipes/myfilter.pipe";
 import {SelectuserComponent} from "../../pages/partyuser/party-dues/selectuser/selectuser.component";
 import {BimageComponent} from "../../../comm/modal/bimage/bimage.component";
+import {UserselectPage} from "../../../comm/modal/userselect/userselect.page";
 
 const pubComponents = [
   PartysearchComponent,
@@ -28,7 +29,8 @@ const pubComponents = [
   PhotoSwipeComponent,
   MyfilterPipe,
   SelectuserComponent,
-  BimageComponent
+  BimageComponent,
+  UserselectPage
 ];
 
 /*function getRoutesComponent(routes: Routes) {

+ 3 - 3
src/main/java/com/ghsc/partybuild/controller/app/AppShykController.java

@@ -35,7 +35,7 @@ public class AppShykController {
     @GetMapping("/getMeetingList")
     public RequsetData<PageInfo<HashMap<String, Object>>> GetMeetingList(@RequestParam("pageIndex") int pageIndex,
                                                                          @RequestParam("pageSize") int pageSize, @RequestParam(required = false) String dzzdm, @RequestParam(required = false) String userId,
-                                                                         @RequestParam(required = false) List<String> shykType, @RequestParam(required = false) String title,
+                                                                         @RequestParam(required = false) List<Integer> shykType, @RequestParam(required = false) String title,
                                                                          @RequestParam(required = false) String startDate,
                                                                          @RequestParam(required = false) String endDate) {
 
@@ -44,7 +44,7 @@ public class AppShykController {
 
         RequsetData<PageInfo<HashMap<String, Object>>> result = new RequsetData<>();
 
-        result.setItem(shykService.getMeetingListByApp(pageIndex, pageSize, dzzdm, userId, null, shykType, title, startDate, endDate));
+        result.setItem(shykService.getMeetingList(pageIndex, pageSize, dzzdm, title, null, startDate, endDate, null, shykType, userId, null, null, null));
         HashMap<String, Object> extData = new HashMap<String, Object>();
 
         result.setExtdata(extData);
@@ -84,7 +84,7 @@ public class AppShykController {
             if (model.getShyktype() != null) {
                 shykTypeName = dictionaryService.getDicByKey(model.getShyktype(), dic_shykType).getDicvalue();
             }
-            model.setMeetingname("【" + shykTypeName + "】" + model.getPartyname() + "[" + dateUtils.dateToStrFormat(new Date(), "yyyyMM") + "]");
+            //model.setMeetingname("【" + shykTypeName + "】" + model.getPartyname() + "[" + dateUtils.dateToStrFormat(new Date(), "yyyyMM") + "]");
         }
         //计算会议时间与当前时间差
         /*if (model.getBegintime() != null) {

+ 1 - 0
src/main/resources/mapping/PeWordtemplateCQuery.xml

@@ -15,5 +15,6 @@
         <if test="pflowid != null">
             and f.parentId = #{pflowid}
         </if>
+        order by t.sort
     </select>
 </mapper>

+ 11 - 74
src/main/resources/mapping/SHYKCQuery.xml

@@ -35,21 +35,25 @@
         FROM SHYK_MEETING m
         inner join ZZ_ZZQKXX z on m.partycode=z.dzzdm
         inner join ZZ_ZZQKXX dw on SUBSTR(m.partycode,1,12)=dw.DZZDM
-        left join (
+        inner join (
             select t.meetingId
                  , GROUP_CONCAT(shykType order by shykType SEPARATOR ', ') as shykTypes
                  , GROUP_CONCAT(dic.DICVALUE order by shykType SEPARATOR ', ') as shykTypeNames
                    from SHYK_Meeting_Type t
                    inner join cf_dictionary dic on t.shykType = dic.DICKEY and dic.DICTYPEKEY = 'shykType'
                    where 1=1
-                   <if test="shykType != null and shykType.size()>0">
-                       and shykType in
-                       <foreach collection="shykType" item="shyktype" index="index" open="(" close=")" separator=",">
-                           #{shyktype}
-                       </foreach>
-                   </if>
             group by meetingId
         ) st on m.meetingId = st.meetingId
+        <if test="shykType != null and shykType.size()>0">
+            inner join (
+                select meetingId from SHYK_Meeting_Type where 1=1
+                and shykType in
+                <foreach collection="shykType" item="shyktype" index="index" open="(" close=")" separator=",">
+                #{shyktype}
+            </foreach>
+                group by meetingId
+            ) tt on m.meetingId = tt.meetingId
+        </if>
         where 1=1 and m.OPERATESTATE in ('A','M')
         <if test="partyCode != null and partyCode != ''">
             and m.partyCode like concat('',#{partyCode},'%')
@@ -473,73 +477,6 @@
     </update>
 
 
-    <select id="selectMeetingListByApp" resultType="java.util.HashMap">
-        SELECT MEETINGID,
-        MEETINGNAME,
-        SHYKTYPE,
-        z.DZZMC as PARTYNAME ,
-        PARTYCODE,
-        MEETINGADDRESS,
-        CHAIRUSER,
-        RECORDUSER,
-        BEGINTIME,
-        ENDTIME,
-        ISTEMP,
-        SHYKSTATUS,
-        CREATETIME,
-        CREATEUSERID,
-        CREATEUSERNAME,
-        UPDATETIME,
-        UPDATEUSERID,
-        UPDATEUSERNAME,
-        MEETINGAPPROVESTATUS,
-        MEETINGAPPROVEUSERNAME,
-        (case when dw2.ZZLB =100 then  dw2.DZZMC   else  dw.DZZMC  end) DWMC,
-        DECISIONSTATUS,-- 决议填写状态 0保存中,1已提交
-        ISUPLOADIMG, -- 是否上传会议图片 0未上传,1已上传
-        MEETINGRECORDSTATE,-- 会议填写状态 0保存中,1已提交
-        ROUND((ENDTIME - BEGINTIME) * 24,2) as MEETINGTIME, -- 会议时长(小时)
-        (case
-        when BEGINTIME <![CDATA[ > ]]> sysdate() then 1 else 2 end ) as STATUS, -- 1会议未开始,2会议已开始
-        (sysdate()-ENDTIME) as endLongTime -- 会议结束时长
-        FROM SHYK_MEETING m
-        inner join ZZ_ZZQKXX z on m.PARTYCODE=z.DZZDM
-        inner join ZZ_ZZQKXX dw on SUBSTR(m.PARTYCODE,1,12)=dw.DZZDM
-        inner join (
-          select zz2.DZZDM,zz2.DZZMC,fb2.ZZLB from ZZ_ZZQKXX zz2 inner join ZZ_ZZQKXXFB fb2 on zz2.DZZDM=fb2.DZZDM
-        ) dw2 on SUBSTR(m.PARTYCODE,1,15)=dw2.DZZDM
-        where 1=1 and m.OPERATESTATE <![CDATA[ <> ]]> 'D' and m.SHYKSTATUS <![CDATA[ <> ]]> 2
-        <if test="type != null">
-            <if test="type==1">-- 未开始
-                and m.BEGINTIME <![CDATA[ >= ]]> sysdate()
-                and m.SHYKSTATUS not in (2) -- 排除已取消
-            </if>
-            <if test="type==2">-- 已结束
-                and m.ENDTIME <![CDATA[ < ]]> sysdate()
-                and m.SHYKSTATUS not in (2) -- 排除已取消
-            </if>
-        </if>
-        <if test="dzzdm !=null and dzzdm !=''">
-            and m.PARTYCODE like concat('%',#{dzzdm},'%')
-        </if>
-        <if test="shykTypeList != null and shykTypeList.size()>0">
-            and m.SHYKTYPE in
-            <foreach collection="shykTypeList" item="shyktype" index="index" open="(" close=")" separator=",">
-                #{shyktype}
-            </foreach>
-        </if>
-        <if test="title != null and title != ''">
-            and m.MEETINGNAME like concat('%',#{title},'%')
-        </if>
-        <if test="startDate != null and startDate != '' ">
-            and m.BEGINTIME <![CDATA[ >= ]]> date_format(#{startDate},'%Y%m%d')
-        </if>
-        <if test="endDate != null and endDate != '' ">
-            and m.BEGINTIME <![CDATA[ < ]]> date_add(date_format(#{endDate},'%Y%m%d'),interval 1 day)
-        </if>
-        order by BEGINTIME desc
-    </select>
-
     <select id="selectMeetingPlanTotalList" resultType="java.util.HashMap">
         select ztp.SHYKTYPE,
         (case ztp.SHYKTYPE

+ 1 - 1
src/main/resources/static/app/main/partyExpand/flowConfig/config.js

@@ -6,7 +6,7 @@
         $scope.isview = $stateParams.isview != 0 || $stateParams.isview != "0";
 
         $scope.$on('tabChildReloadData', function (event, data) {
-            if (data.name == 'nodeEditCtrl') {
+            if (data.name == 'flowConfigCtrl') {
                 $scope.loadData();
             }
         });

+ 24 - 24
src/main/resources/static/app/main/partyExpand/flowConfig/nodeEdit.html

@@ -76,21 +76,21 @@
                     </div>
                 </div>
             </div>
-            <div class="row clearfix">
-                <div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 form-control-label">
-                    <label>跳转页面</label>
-                </div>
-                <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
-                    <div class="form-group">
-                        <div class="form-line">
-                            <input type="text" name="url" ng-model="modalData.url" style="font-size: 17px"
-                                   class="form-control" ng-required="true"/>
-                        </div>
-                        <label class="error"
-                               ng-show="modalForm.url.$invalid &&  modalForm.$submitted">必填.</label>
-                    </div>
-                </div>
-            </div>
+<!--            <div class="row clearfix">-->
+<!--                <div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 form-control-label">-->
+<!--                    <label>跳转页面</label>-->
+<!--                </div>-->
+<!--                <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">-->
+<!--                    <div class="form-group">-->
+<!--                        <div class="form-line">-->
+<!--                            <input type="text" name="url" ng-model="modalData.url" style="font-size: 17px"-->
+<!--                                   class="form-control" ng-required="true"/>-->
+<!--                        </div>-->
+<!--                        <label class="error"-->
+<!--                               ng-show="modalForm.url.$invalid &&  modalForm.$submitted">必填.</label>-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
             <div class="row clearfix">
                 <div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 form-control-label">
                     <label>工作指引</label>
@@ -101,16 +101,16 @@
                     </textarea>
                 </div>
             </div>
-            <div class="row clearfix">
-                <div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 form-control-label">
-                    <label>App端工作指引</label>
-                </div>
-                <div class="col-lg-11 col-md-11 col-sm-11 col-xs-11" style="padding-left: 0px;">
-                    <textarea ng-model="modalData.appguidelines" ui-ueditor>
+<!--            <div class="row clearfix">-->
+<!--                <div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 form-control-label">-->
+<!--                    <label>App端工作指引</label>-->
+<!--                </div>-->
+<!--                <div class="col-lg-11 col-md-11 col-sm-11 col-xs-11" style="padding-left: 0px;">-->
+<!--                    <textarea ng-model="modalData.appguidelines" ui-ueditor>-->
 
-                    </textarea>
-                </div>
-            </div>
+<!--                    </textarea>-->
+<!--                </div>-->
+<!--            </div>-->
             <div class="form_foot">
                 <button type="button" class="btn btn-default" ng-click="pagechange();">取消</button>
                 <button role-permission-code="" type="submit"

+ 7 - 7
src/main/resources/static/app/main/partyExpand/template/list.html

@@ -83,19 +83,19 @@
                             </thead>
                             <tbody>
                             <tr ng-repeat="it in dataList">
-                                <td>{{it.TITLE}}</td>
-                                <td>{{it.PFLOWNAME}}</td>
-                                <td>{{it.FLOWNAME}}</td>
-                                <td>{{it.SORT}}</td>
-                                <td>{{it.CREATETIME | date:'yyyy-MM-dd'}}</td>
+                                <td>{{it.title}}</td>
+                                <td>{{it.pflowname}}</td>
+                                <td>{{it.flowname}}</td>
+                                <td>{{it.sort}}</td>
+                                <td>{{it.createtime|date:'yyyy-MM-dd'}}</td>
                                 <th class="text-center">
                                     <button role-permission-code="pewordtemplateList.listEdit" class="btn td-btn bg-light-green waves-effect"
-                                            ng-click="editData(it.WORDTEMPLATEID)"
+                                            ng-click="editData(it.wordtemplateid)"
                                             title="修改">
                                         修改
                                     </button>
                                     <button role-permission-code="pewordtemplateList.listDel" class="btn td-btn bg-pink waves-effect"
-                                            ng-click="delData(it.WORDTEMPLATEID)" title="删除">
+                                            ng-click="delData(it.wordtemplateid)" title="删除">
                                         删除
                                     </button>
                                 </th>