Merge branch 'developer' of bitbucket.org:equilibriumito/gabinete-digital into developer

This commit is contained in:
Peter Maquiran
2021-05-21 11:20:35 +01:00
22 changed files with 515 additions and 368 deletions
@@ -215,7 +215,7 @@ export class CreateProcessPage implements OnInit {
"action": "Conhecimento",
"ActionTypeId": 104,
"dataFields": {
"ReviewUserComent": '',
"ReviewUserComment": '',
},
"AttachmentList" :null,
@@ -53,7 +53,7 @@ export class DarParecerPage implements OnInit {
"action": "Registar",
"ActionTypeId": 104,
"dataFields": {
"ReviewUserComent": this.note,
"ReviewUserComment": this.note,
},
"AttachmentList": docs,
}
+1 -1
View File
@@ -40,7 +40,7 @@ export class tasksList{
InstanceID: string,
InstanceIDNew: string,
NewSerialNumber: string,
ReviewUserComent: string,
ReviewUserComment: string,
ReviewUserEmail: string,
ReviewUserName: string,
SourceID: number,
@@ -160,7 +160,7 @@ export class DespachoPrPage implements OnInit {
"action": "Conhecimento",
"ActionTypeId": 104,
"dataFields": {
"ReviewUserComent": note,
"ReviewUserComment": note,
},
"AttachmentList" :documents,
}
@@ -173,7 +173,7 @@ export class DespachoPrPage implements OnInit {
"action": "Arquivo",
"ActionTypeId": 95,
"dataFields": {
"ReviewUserComent": note,
"ReviewUserComment": note,
},
"AttachmentList" :documents,
}
@@ -186,7 +186,7 @@ export class DespachoPrPage implements OnInit {
"action": "Reencaminhar",
"ActionTypeId": 98,
"dataFields": {
"ReviewUserComent": note,
"ReviewUserComment": note,
},
"AttachmentList" :documents,
}
@@ -160,7 +160,7 @@ export class DespachoPage implements OnInit {
"action": "Conhecimento",
"ActionTypeId": 104,
"dataFields": {
"ReviewUserComent": note,
"ReviewUserComment": note,
},
"AttachmentList" :documents,
}
@@ -173,7 +173,7 @@ export class DespachoPage implements OnInit {
"action": "Arquivo",
"ActionTypeId": 95,
"dataFields": {
"ReviewUserComent": note,
"ReviewUserComment": note,
},
"AttachmentList" :documents,
}
@@ -186,7 +186,7 @@ export class DespachoPage implements OnInit {
"action": "Reencaminhar",
"ActionTypeId": 98,
"dataFields": {
"ReviewUserComent": note,
"ReviewUserComment": note,
},
"AttachmentList" :documents,
}
@@ -67,14 +67,9 @@
<div *ngIf="task" class="aside-right flex-column height-100">
<div class="buttons">
<button (click)="openAddNoteModal('Executado')" class="btn-cancel" shape="round" >Executado</button>
<button (click)="openDelegarModal(task)" class="btn-cancel" shape="round" >Delegar</button>
<button (click)="openAddNoteModal('Solicitar assinatura')" class="btn-cancel" shape="round" >Solicitar assinatura</button>
<button (click)="openAddNoteModal('Solicitar alteração')" class="btn-cancel" shape="round" >Solicitar alteração</button>
<div class="solid"></div>
<button (click)="openExpedientActionsModal('0',fulltask)" class="btn-ok" shape="round" >Efectuar Despacho</button>
<button (click)="openExpedientActionsModal('1',fulltask)" class="btn-cancel" shape="round" >Solicitar Parecer</button>
<button (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
<div class="solid"></div>
<button (click)="sendExpedienteToPending()" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
</div>
</div>
@@ -1,12 +1,11 @@
import { Component, OnInit } from '@angular/core';
import { ModalController, NavParams, PopoverController } from '@ionic/angular';
import { AddNotePage } from 'src/app/modals/add-note/add-note.page';
import { CreateProcessPage } from 'src/app/modals/create-process/create-process.page';
import { DelegarPage } from 'src/app/modals/delegar/delegar.page';
import { ProcessesService } from 'src/app/services/processes.service';
import { OptsExpedientePage } from 'src/app/shared/popover/opts-expediente/opts-expediente.page';
import { momentG } from 'src/plugin/momentG';
import { BookMeetingModalPage } from '../../expediente/book-meeting-modal/book-meeting-modal.page';
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
@Component({
selector: 'app-diploma',
@@ -32,6 +31,7 @@ export class DiplomaPage implements OnInit {
private processes: ProcessesService,
public popoverController: PopoverController,
private modalController: ModalController,
private iab: InAppBrowser,
) {
this.serialnumber = this.navParams.get('serialNumber');
this.profile = this.navParams.get('profile');
@@ -98,6 +98,15 @@ export class DiplomaPage implements OnInit {
});
}
viewDocument(docId:string){
this.processes.GetDocumentUrl(docId, '361').subscribe(res=>{
console.log(res);
const url: string = res.replace("webTRIX.Viewer","webTRIX.Viewer.Branch1");
const browser = this.iab.create(url,"_blank");
browser.show();
});
}
getDocumentDetails(forlderId:string, applicationId:string) {
this.processes.GetDocumentDetails(forlderId,applicationId).subscribe(res=>{
@@ -107,6 +116,33 @@ export class DiplomaPage implements OnInit {
})
}
askSignature(note:string, documents:any){
let body = {
"serialNumber": this.serialnumber,
"action": "Aprovar",
"ActionTypeId": 0,
"dataFields": {
"ReviewUserComment": note,
},
"AttachmentList" :documents,
}
this.processes.CompleteTask(body);
this.close();
}
askToChange(note:string, documents:any){
let body = {
"serialNumber": this.serialnumber,
"action": "Rectificar",
"ActionTypeId": 0,
"dataFields": {
"ReviewUserComment": note,
},
"AttachmentList" :documents,
}
this.processes.CompleteTask(body);
this.close();
}
async openAddNoteModal(actionName:string) {
let classs;
@@ -127,93 +163,16 @@ export class DiplomaPage implements OnInit {
modal.onDidDismiss().then(res => {
if(res.data){
if(actionName == 'Executado'){
//this.executado(res.data.note,res.data.documents);
if(actionName == 'Solicitar assinatura'){
this.askSignature(res.data.note,res.data.documents);
}
else if(actionName == 'Arquivar'){
//this.arquivar(res.data.note,res.data.documents);
else if(actionName == 'Solicitar alteração'){
this.askToChange(res.data.note,res.data.documents);
}
}
});
}
async openDelegarModal(task: any) {
let classs;
if( window.innerWidth <= 800){
classs = 'book-meeting-modal modal modal-desktop'
} else {
classs = 'modal modal-desktop showAsideOptions'
}
const modal = await this.modalController.create({
component: DelegarPage,
componentProps: {
task: this.task,
},
cssClass: classs,
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
async openExpedientActionsModal(taskAction: any, task: any) {
//this.modalController.dismiss();
let classs;
if( window.innerWidth <= 800){
classs = 'modal modal-desktop'
} else {
classs = 'modal modal-desktop showAsideOptions'
}
const modal = await this.modalController.create({
component: CreateProcessPage,
componentProps: {
taskAction: taskAction,
task: task,
profile: this.profile,
},
cssClass: classs,
});
await modal.present();
modal.onDidDismiss().then(res=>{
console.log(res['data']);
if(res['data']=='openDiscart'){
console.log('open discart');
// this.distartExpedientModal();
}
});
}
async openBookMeetingModal(task: any) {
let classs;
if( window.innerWidth <= 800){
classs = 'book-meeting-modal modal modal-desktop'
} else {
classs = 'modal modal-desktop showAsideOptions'
}
const modal = await this.modalController.create({
component: BookMeetingModalPage,
componentProps: {
task: this.task,
},
cssClass: classs,
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
sendExpedienteToPending(){
this.processes.SetTaskToPending(this.serialnumber).subscribe(res=>{
console.log(res);
this.close();
});
}
close(){
this.modalController.dismiss();
}
@@ -7,12 +7,14 @@ import { IonicModule } from '@ionic/angular';
import { ApproveEventPageRoutingModule } from './approve-event-routing.module';
import { ApproveEventPage } from './approve-event.page';
import { SharedModule } from 'src/app/shared/shared.module';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
SharedModule,
ApproveEventPageRoutingModule
],
declarations: [ApproveEventPage]
@@ -1,24 +1,14 @@
<ion-header class="ion-no-border">
<div *ngIf="loadedEvent" class="header-content d-flex justify-between">
<div class="header-icon-left cursor-pointer">
<ion-icon (click)="close()" src="assets/images/icons-arrow-arrow-left.svg"></ion-icon>
</div>
<div class="header-title flex-grow-1">
<label>{{loadedEvent.workflowInstanceDataFields.Subject}}</label>
</div>
<div class="header-icon-right cursor-pointer">
<ion-icon (click)="notImplemented()" src="assets/images/icons-edit.svg"></ion-icon>
</div>
</div>
<app-header></app-header>
</ion-header>
<ion-menu autoHide="false" side="end" content-id="main-content">
<ion-header>
<ion-toolbar translucent>
<ion-title>Acções</ion-title>
<ion-title>Ações</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list class="cursor-pointer">
<ion-list>
<ion-item (click)="approveTask(loadedEvent.serialNumber)">
<ion-icon name="checkmark-sharp"></ion-icon>
<ion-label>Aprovar</ion-label>
@@ -31,76 +21,103 @@
<ion-icon name="close-sharp"></ion-icon>
<ion-label>Rejeitar</ion-label>
</ion-item>
<ion-item (click)="editar(loadedEvent.serialNumber)">
<ion-icon name="close-sharp"></ion-icon>
<ion-label>Editar</ion-label>
</ion-item>
</ion-list>
</ion-content>
</ion-menu>
<ion-content id="main-content">
<div class="upper-content">
<div class="content-location" *ngIf="loadedEvent">
<div class="location-detail">
<ion-label >{{loadedEvent.workflowInstanceDataFields.Location}}</ion-label>
<div class="main-content d-flex height-100">
<div *ngIf="loadedEvent" class="content d-flex flex-column width-100">
<div class="header-content width-100 d-flex justify-space-between">
<div (click)="goBack()" class="header-icon-left cursor-pointer">
<ion-icon src="assets/images/icons-arrow-arrow-left.svg"></ion-icon>
</div>
<div class="header-title flex-grow-1 cursor-pointer">
<label>{{loadedEvent.workflowInstanceDataFields.Subject}}</label>
</div>
<div (click)="editar(loadedEvent.serialNumber)" class="header-icon-right display-none-true">
<ion-icon src="assets/images/icons-edit.svg"></ion-icon>
</div>
</div>
<div class="button-calendar-type">
<ion-button class="button-calendar-type" slot="end">{{loadedEvent.workflowInstanceDataFields.Agenda}}</ion-button>
<div class="upper-content d-flex flex-column">
<div class="content-location">
<p>
<span class="location">{{loadedEvent.workflowInstanceDataFields.Location}}</span>
<span class="event-type-{{loadedEvent.workflowInstanceDataFields.Agenda}}">{{loadedEvent.workflowInstanceDataFields.Agenda}}</span>
</p>
</div>
<div class="content-details">
<ion-label>
<p>{{customDate}}</p>
<p>das {{loadedEvent.workflowInstanceDataFields.StartDate | date: 'hh:mm'}} às {{loadedEvent.workflowInstanceDataFields.EndDate | date: 'hh:mm'}}</p>
<p *ngIf="!loadedEvent.workflowInstanceDataFields.IsRecurring">(Não se repete)</p>
<p *ngIf="loadedEvent.workflowInstanceDataFields.IsRecurring">Repete</p>
</ion-label>
</div>
</div>
<div class="line"></div>
<div class="overflow-y-auto">
<div class="middle-content">
<div *ngIf="loadedEvent.workflowInstanceDataFields.ParticipantsList">
<h5>Intervenientes</h5>
<div *ngFor="let att of loadedEvent.workflowInstanceDataFields.ParticipantsList">
<ion-label>{{att.Name}}</ion-label>
</div>
<div class="line"></div>
</div>
<div *ngIf="loadedEvent.workflowInstanceDataFields.Body">
<h5>Detalhes</h5>
<ion-item lines="none" class="ion-no-margin ion-no-padding">
<p [innerHTML]="loadedEvent.workflowInstanceDataFields.Body"></p>
</ion-item>
<div class="line"></div>
</div>
</div>
<div *ngIf="loadedAttachments" class="bottom-content width-100">
<ion-list>
<h5>Documentos Anexados</h5>
<ion-item class="ion-no-margin ion-no-padding"
*ngFor="let attach of loadedAttachments"
(click)="viewDocument(attach.SourceId)">
<ion-label>
<p class="attach-title-item d-block">{{attach.SourceName}}</p>
<p><span class="span-left">{{attach.Stakeholders}}</span><span class="span-right">{{ attach.CreateDate | date: 'dd-MM-yy' }}</span></p>
</ion-label>
</ion-item>
</ion-list>
</div>
</div>
</div>
<div *ngIf="loadedEvent" class="aside-right flex-column height-100">
<div class="aside-buttons">
<button hidden full class="btn-ok" shape="round" >Editar evento</button>
<button (click)="approveTask(loadedEvent.serialNumber)" full class="btn-ok" shape="round" >Aprovar</button>
<button (click)="emendTask(loadedEvent.serialNumber)" class="btn-cancel" shape="round" >Adicionar Nota</button>
<div class="solid"></div>
<button full class="btn-cancel" shape="round" (click)="editar(loadedEvent.serialNumber)" >Editar</button>
<button (click)="rejectTask(loadedEvent.serialNumber)" full class="btn-delete" shape="round" >Rejeitar</button>
</div>
</div>
<div class="content-details" *ngIf="loadedEvent">
<ion-label>
<p>{{customDate}}</p>
<p>das {{loadedEvent.workflowInstanceDataFields.StartDate | date: 'hh:mm'}} às {{loadedEvent.workflowInstanceDataFields.EndDate | date: 'hh:mm'}}</p>
<p *ngIf="!loadedEvent.workflowInstanceDataFields.IsRecurring">(Não se repete)</p>
<p *ngIf="loadedEvent.workflowInstanceDataFields.IsRecurring">Repete</p>
</ion-label>
</div>
</div>
<div class="line"></div>
<div class="middle-content overflow-y-auto" *ngIf="loadedEvent">
<h5>Intervenientes</h5>
<ion-item>
<ion-label>
<p>{{loadedEvent.workflowInstanceDataFields.Participants}}</p>
</ion-label>
</ion-item>
<h5>Detalhes</h5>
<ion-item>
<p>{{loadedEvent.workflowInstanceDataFields.Body}}</p>
</ion-item>
</div>
<!-- <div *ngIf="loadedAttachments" class="bottom-content">
<ion-list>
<h3>Documentos Anexados</h3>
<ion-item>
<ion-label>
<p class="attach-title-item">Receita por Natureza</p>
<p><span class="span-left">{{loadedAttachments.Remetente}}</span><span class="span-right">{{loadedAttachments.CreateDate}}</span></p>
</ion-label>
</ion-item>
</ion-list>
</div> -->
</ion-content>
<ion-footer>
<ion-toolbar class="cursor-pointer">
<div class="buttons">
<ion-item lines="none">
<p>
<ion-button class="button-edit-event" shape="round" (click)="emendTask(loadedEvent.serialNumber)">Emendar</ion-button>
</p>
<p>
<ion-menu-button autoHide="false">
<ion-icon (click)="openMenu()" name="ellipsis-vertical-outline"></ion-icon>
</ion-menu-button>
</p>
<p>
<ion-button class="button-approve" shape="round" (click)="approveTask(loadedEvent.serialNumber)">Aprovar1</ion-button>
</p>
</ion-item>
<ion-item hidden>
<p>
<ion-button class="button-reject" shape="round" (click)="rejectTask(loadedEvent.serialNumber)">Rejeitar</ion-button>
</p>
</ion-item>
</div>
</ion-toolbar>
</ion-content>
<ion-footer class="display-none-true">
<div class="buttons">
<button class="btn-cancel" shape="round" (click)="emendTask(loadedEvent.serialNumber)">Adicionar Nota</button>
<ion-menu-button (click)="openMenu()" autoHide="false">
<ion-icon name="ellipsis-vertical-outline"></ion-icon>
</ion-menu-button>
<button class="btn-ok" shape="round" (click)="approveTask(loadedEvent.serialNumber)">Aprovar</button>
<button hidden class="btn-delete" shape="round" (click)="rejectTask(loadedEvent.serialNumber)">Rejeitar</button>
</div>
</ion-footer>
@@ -1,16 +1,18 @@
ion-content{
--padding-top:0px;
--padding-start: 20px;
--padding-end: 20px;
font-size: 18px;
@import '~src/function.scss';
.main-content{
background-color: #fff !important;
border-top-left-radius: 25px;
border-top-right-radius: 25px;
}
ion-menu{
--height: 225px;
}
.display-none-true{
display: none;
border: 1px solid red;
}
.header-content{
width: 360px;
overflow: auto;
margin: 25px auto;
//margin: 25px auto;
}
.header-icon-left{
width: 36px;
@@ -19,7 +21,6 @@ ion-menu{
float: left;
}
.header-title{
width: 264px;
font-family: Roboto;
font-size: 25px;
margin: 0 5px 0 5px;
@@ -32,98 +33,148 @@ ion-menu{
font-size: 45px;
float: left;
}
.upper-content{
margin-left: 50px;
overflow: auto;
font-size: 18px;
.content-location{
width: 360px;
margin: 0 auto;
padding: 0;
overflow: auto;
}
.content{
padding: 30px 20px 0 20px !important;
margin: 0;
float: left;
/* overflow: auto;
width: 100%; */
border-right: 1px solid #d8d8d8;
.location-detail{
width: 210px;
font-weight: 700;
.upper-content{
margin-left: 40px;
font-size: 18px;
float: left;
margin: 5px 5px 5px 0px;
}
.button-calendar-type{
width: 91px;
--border-radius: 12.5px;
--background: #ffb703;
margin-left: 5px;
.content-location{
margin-top: 0px !important;
width: 100%;
padding: 0;
}
.location{
float: left;
}
.event-type-Oficial{
font-family: Roboto;
border-radius: 20px;
background: #ffb703;
float: right !important;
padding: 5px 13.5px 5px 13.5px;
color: #fff;
}
.event-type-Pessoal{
font-family: Roboto;
border-radius: 20px;
background: #f05d5e;
float: right !important;
padding: 5px 13.5px 5px 13.5px;
color: #fff;
}
.button-edit-event {
width: 140px;
height: 44px;
border-radius: 22.5px;
--background: #e0e9ee;
--color:#061b52;
}
.content-details p{
font-size: 16px;
}
}
.button-calendar-type ion-button{
height: 25px;
}
.button-edit-event {
width: 140px;
height: 44px;
border-radius: 22.5px;
--background: #e0e9ee;
--color:#061b52;
}
.content-details p{
.middle-conten{
.middle-content h3, .middle-content p{
font-size: 16px;
}
}
.bottom-content{
margin: 0 auto;
.bottom-content h3{
font-size: 16px;
margin: 0 0 0 10px;
}
.attach-document{
font-size: 15px;
color: #0d89d1;
margin: 5px 5px 5px 10px;
padding: 5px;
float: left;
}
.attach-icon{
width: 37px;
font-size: 35px;
float: left;
}
.attach-title-item{
width: 100%;
font-size: 15px;
color:#0d89d1;
}
/* SPAN */
.span-left{
float: left;
font-size: 15x;
}
.span-right{
text-align: right;
float: right;
font-size: 13px;
}
}
}
.middle-conten{
.middle-content h3, .middle-content p{
font-size: 16px;
.aside-right{
overflow: auto;
padding: 30px 20px 0 20px !important;
.arrow-right{
display: flex;
justify-content: flex-end;
margin-bottom: 20px;
/* .arrow-right-icon{
width: 37px;
float: right;
font-size: 35px;
overflow: hidden;
} */
}
.aside-buttons{
width: 100% !important;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.btn-ok, .btn-cancel, .btn-delete{
height: auto !important;
font-size: 16px !important;
font-weight: 600 !important;
width: 100% !important;
margin-bottom: 10px !important;
padding: 15px !important;
}
}
.solid {
display: block;
width: 90%;
border-top: 1px solid #ebebeb;
margin: 0 auto !important;
margin-bottom: 10px !important;
}
}
.bottom-content{
width: 360px;
margin: 0 auto;
.bottom-content h3{
font-size: 16px;
margin: 0 0 0 10px;
}
.attach-document{
font-size: 15px;
color: #0d89d1;
margin: 5px 5px 5px 10px;
padding: 5px;
float: left;
}
.attach-icon{
width: 37px;
font-size: 35px;
float: left;
}
.attach-title-item{
width: 100%;
font-size: 15px;
color:#0d89d1;
}
/* SPAN */
.span-left{
float: left;
font-size: 15x;
}
.span-right{
text-align: right;
float: right;
font-size: 13px;
}
}
.buttons{
width: 360px;
margin: 0 auto;
}
display: flex;
justify-content: space-between;
overflow: auto;
.button-options {
height: 44px;
--color: #42b9fe;
/* opacity: 0; */
--color: #42b9fe;
/* opacity: 0; */
}
.button-approve {
width: 140px;
@@ -138,3 +189,29 @@ ion-menu{
border-radius: 22.5px;
--background: #ffe0e0;
}
}
/* @media only screen and (max-width: 1140px) {
.content{
width: 100%;
}
.aside-right{
display: none;
}
} */
/* @media only screen and (min-width: 1140px) {
.div-icon{
display: none;
}
.content{
//width: 75%;
border-right: 1px solid #d8d8d8;
}
.aside-right{
width: 25%;
}
} */
@@ -1,11 +1,14 @@
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { MenuController, ModalController, PopoverController } from '@ionic/angular';
import { EmendMessageModalPage } from 'src/app/pages/agenda/emend-message-modal/emend-message-modal.page';
import { EventActionsPopoverPage } from 'src/app/pages/agenda/event-actions-popover/event-actions-popover.page';
import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';
import { ActivatedRoute, NavigationExtras, Router } from '@angular/router';
import { MenuController, ModalController, NavParams, PopoverController } from '@ionic/angular';
import { Event } from 'src/app/models/event.model';
import { AlertService } from 'src/app/services/alert.service';
import { AttachmentsService } from 'src/app/services/attachments.service';
import { ProcessesService } from 'src/app/services/processes.service';
import { EmendMessageModalPage } from 'src/app/pages/agenda/emend-message-modal/emend-message-modal.page';
import { EventActionsPopoverPage } from 'src/app/pages/agenda/event-actions-popover/event-actions-popover.page';
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
import { EditEventToApproveComponent } from 'src/app/shared/gabinete-digital/edit-event-to-approve/edit-event.page';
@Component({
selector: 'app-approve-event',
@@ -14,95 +17,122 @@ import { ProcessesService } from 'src/app/services/processes.service';
})
export class ApproveEventPage implements OnInit {
event: Event;
loadedEvent: any;
loadedAttachments: any;
serialNumber: string;
customDate: any;
today: any;
loadedEvent:any;
loadedEvent1:any;
loadedAttachments:any;
customDate:any;
today:any;
show: boolean = false;
months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"];
days = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"];
serialNumber:string;
@Input() InstanceId:string;
@Output() approveEventDismiss = new EventEmitter<any>();
@Output() closeEventToApprove = new EventEmitter<any>();
@Output() AproveEventEditEvent = new EventEmitter<any>();
constructor(
private router: Router,
private router:Router,
private activatedRoute: ActivatedRoute,
private modalController: ModalController,
private processes: ProcessesService,
private processes:ProcessesService,
private attachmentsService: AttachmentsService,
private popoverController: PopoverController,
private menu: MenuController,
private alertService: AlertService,
private activatedRoute: ActivatedRoute,
) {
this.activatedRoute.paramMap.subscribe(paramMap =>
{
if (!paramMap.has("serialNumber")){
return;
}
else{
this.serialNumber = paramMap.get('serialNumber');
console.log(this.serialNumber);
}
});
this.loadedEvent = null;
}
ngOnInit() {
console.log(this.serialNumber);
this.getTask();
this.getAttachments();
}
notImplemented() {
this.alertService.presentAlert('Funcionalidade em desenvolvimento');
}
close() {
this.router.navigate(['/home/gabinete-digital/event-list']);
}
getTask() {
this.processes.GetTask(this.serialNumber).subscribe(res => {
console.log(res);
this.loadedEvent = res;
this.today = new Date(res.workflowInstanceDataFields.StartDate);
console.log(new Date(this.today));
this.customDate = this.days[this.today.getDay()] + ", " + this.today.getDate() + " de " + (this.months[this.today.getMonth()]);
})
}
approveTask(serialNumber: string) {
let body = { "serialNumber": serialNumber, "action": "Aprovar" }
console.log(body);
this.processes.PostTaskAction(body);
this.router.navigate(['/home/gabinete-digital/event-list']);
}
emendTask(serialNumber: string) {
/* console.log('Emendar'); */
this.menu.close();
this.openEmendMessageModal(serialNumber);
this.close();
}
rejectTask(serialNumber: string) {
let body = { "serialNumber": serialNumber, "action": "Rejeitar" }
console.log(body);
this.processes.PostTaskAction(body);
this.router.navigate(['/home/gabinete-digital/event-list'])
this.close();
}
getAttachments() {
this.attachmentsService.getAttachmentsBySerial(this.serialNumber).subscribe(res => {
this.loadedAttachments = res;
console.log(res);
private iab: InAppBrowser
) {
this.activatedRoute.queryParams.subscribe(params => {
if(params["serialNumber"]) {
this.serialNumber = params["serialNumber"];
console.log(params["serialNumber"]);
}
});
}
async openOptions(ev: any) {
ngOnInit() {
this.getTask();
}
notImplemented(){
this.alertService.presentAlert('Funcionalidade em desenvolvimento');
}
close(){
/* this.router.navigate(['/home/gabinete-digital/event-list']); */
this.closeEventToApprove.emit();
this.modalController.dismiss();
}
goBack(){
let navigationExtras: NavigationExtras = {
queryParams: {
"eventos": true,
}
};
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
async getTask(){
this.loadedEvent = await this.processes.GetTask(this.serialNumber).toPromise();
console.log(this.loadedEvent);
this.today = new Date(this.loadedEvent.workflowInstanceDataFields.StartDate);
console.log(new Date(this.today));
this.customDate = this.days[this.today.getDay()]+ ", " + this.today.getDate() +" de " + ( this.months[this.today.getMonth()]);
let instanceId = this.loadedEvent.workflowInstanceDataFields.InstanceId;
this.getAttachments(instanceId);
}
approveTask(serialNumber:string){
let body = { "serialNumber": serialNumber, "action": "Aprovar" }
console.log(body);
this.processes.PostTaskAction(body);
this.modalController.dismiss(serialNumber);
/* this.approveEventDismiss.emit({
"serialNumber": serialNumber,
"action": "Aprovar",
"saveData": {
loadedEvent: this.loadedEvent,
today: this.today,
customDate: this.customDate
}
}); */
}
emendTask(serialNumber:string){
/* console.log('Emendar'); */
this.menu.close();
this.openEmendMessageModal(serialNumber);
this.modalController.dismiss(null);
}
rejectTask(serialNumber:string){
let body = { "serialNumber": serialNumber, "action": "Rejeitar" }
console.log(body);
this.processes.PostTaskAction(body);
this.router.navigate(['/home/gabinete-digital/event-list']);
this.modalController.dismiss(null);
}
async getAttachments(instanceId:string){
this.loadedAttachments = await this.attachmentsService.getAttachmentsById(instanceId).toPromise();
}
viewDocument(sourceId){
this.processes.GetDocumentUrl(sourceId, '8').subscribe(res=>{
/* console.log(res); */
const url: string = res.replace("webTRIX.Viewer","webTRIX.Viewer.Branch1");
const browser = this.iab.create(url,"_blank");
browser.show();
});
}
async openOptions(ev:any) {
const popover = await this.popoverController.create({
component: EventActionsPopoverPage,
cssClass: 'event-actions-popover',
@@ -111,14 +141,14 @@ export class ApproveEventPage implements OnInit {
});
return await popover.present();
}
openMenu() {
this.menu.open();
}
async openEmendMessageModal(serialNumber: string) {
async openEmendMessageModal(serialNumber:string) {
const modal = await this.modalController.create({
component: EmendMessageModalPage,
componentProps: {
componentProps:{
},
cssClass: 'emend-message-modal',
backdropDismiss: false
@@ -127,22 +157,55 @@ export class ApproveEventPage implements OnInit {
await modal.present();
modal.onDidDismiss().then(res => {
if (res.data !== '') {
let body = {
"serialNumber": serialNumber,
"action": "Emendar",
"dataFields": {
console.log(res.data);
if(res.data !== ''){
let body = { "serialNumber": serialNumber,
"action": "Emendar",
"dataFields": {
"ReviewerUseComment": res.data,
}
}
console.log(body);
this.processes.PostTaskAction(body);
this.router.navigate(['/home/gabinete-digital/event-list'])
console.log(body);
this.processes.PostTaskAction(body);
//this.router.navigate(['/home/gabinete-digital/event-list']);
this.goToEventsToApprove();
}
else {
else{
//this.alertService.presentAlert('Operação cancelada!');
}
});
}
goToEventsToApprove(){
let navigationExtras: NavigationExtras = {
queryParams: {
"events": true,
}
};
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
async editar(serialNumber: string) {
const modal = await this.modalController.create({
component: EditEventToApproveComponent,
componentProps: {
serialNumber: serialNumber,
InstanceId:this.InstanceId
},
cssClass: 'modal modal-desktop',
// backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then(res => {
this.getTask();
});
}
}
@@ -96,7 +96,7 @@ export class GabineteDigitalPage implements OnInit {
case params["expedientes"]:
this.openExpedientListPage();
this.selectedElement='Correspondence'
this.selectedElement='Correspondence';
break;
case params["pendentes"]:
@@ -135,7 +135,6 @@ export class GabineteDigitalPage implements OnInit {
this.openEventsToApprovePage('MDGPR');
this.selectedElement='approval'
} */
}
@@ -171,20 +171,21 @@ export class PedidoPage implements OnInit {
"action": "Reapreciação",
"ActionTypeId": 100000009,
"dataFields": {
"ReviewUserComent": note,
"ReviewUserComment": note,
},
"AttachmentList" :documents,
}
this.processes.CompleteTask(body);
this.close();
}
arquivar(note:string, documents:any){
let body = {
"serialNumber": this.serialnumber,
"action": "Arquivo",
"ActionTypeId": 95,
"dataFields": {
"ReviewUserComent": note,
"ReviewUserComment": note,
},
"AttachmentList" :documents,
}
@@ -50,7 +50,7 @@
.event-type-Oficial{
font-family: Roboto;
border-radius: 20px;
background: #fec077;
background: #ffb703;
float: right !important;
padding: 5px 13.5px 5px 13.5px;
color: #fff;
@@ -171,7 +171,7 @@ export class ApproveEventComponent implements OnInit {
goToEventsToApprove(){
let navigationExtras: NavigationExtras = {
queryParams: {
"events": true,
"eventos": true,
}
};
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
@@ -36,6 +36,9 @@
<div class="exp-remetente">
<ion-label>{{task.Senders}}</ion-label>
</div>
<div class="exp-workflow">
<span class="label">{{task.activityInstanceName}}</span>
</div>
<div class="exp-icon d-flex align-center">
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
<label>{{task.DocumentsQty}}</label>
@@ -87,9 +87,8 @@ segmentChanged(ev: any) {
this.loading = true;
let result = await this.processes.GetTasksList("Despacho do Presidente da República", false).toPromise();
console.log('result', result)
let despachosPr = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
console.log('despachosPr', despachosPr);
let despachosPr = result.reverse().filter(data => data.activityInstanceName == "Tarefa de Despacho");
console.log(despachosPr);
despachosPr.forEach( (element, index) => {
@@ -7,7 +7,7 @@
</button>
</div>
</div>
<!-- <ion-toolbar>
<ion-toolbar>
<ion-segment [(ngModel)]="segment" (ionChange)="segmentChanged($event)">
<ion-segment-button value="validar">
Diplomas por validar
@@ -16,7 +16,7 @@
Diplomas assinados PR
</ion-segment-button>
</ion-segment>
</ion-toolbar> -->
</ion-toolbar>
</ion-header>
<ion-content>
<ion-refresher name="refresher" slot="fixed" (ionRefresh)="doRefresh($event)">
@@ -53,7 +53,7 @@ async LoadList(){
console.log(diplomas);
switch (this.segment) {
case 'validar':
let diplomasValidar = diplomas.reverse().filter(data => data.workflowInstanceDataFields.Status == "Revising");
let diplomasValidar = diplomas.reverse().filter(data => data.activityInstanceName == "Revisar Diploma");
console.log(diplomasValidar);
diplomasValidar.forEach(element => {
let DocId = element.workflowInstanceDataFields.FolderID;
@@ -29,8 +29,10 @@
<ion-list class="width-100" *ngSwitchCase="'MDGPR'" >
<ion-item
class="item ion-no-padding width-100 cursor-pointer"
*ngFor="let event of eventsMDGPRList"
(click)="openApproveModal(event)">
*ngFor="let event of eventsMDGPRList"
(click)="goToEventDetail(event)"
>
<!-- (click)="openApproveModal(event)" -->
<div class="event-mdgpr-{{event.workflowInstanceDataFields.Agenda}} width-100">
<div class="approve-event-time">
<p>{{event.workflowInstanceDataFields.StartDate | date: 'hh:mm'}}</p>
@@ -4,7 +4,7 @@ import { EventPerson } from 'src/app/models/eventperson.model';
import { Event } from 'src/app/models/event.model';
import { ProcessesService } from 'src/app/services/processes.service';
import { ModalController, NavParams } from '@ionic/angular';
import { NavigationEnd, Router } from '@angular/router';
import { NavigationEnd, NavigationExtras, Router } from '@angular/router';
import { ApproveEventComponent } from '../../agenda/approve-event/approve-event.component';
@Component({
@@ -70,6 +70,23 @@ export class EventsToApprovePage implements OnInit {
});
}
goToEventDetail(eventToAprove){
let InstanceId;
if(!eventToAprove.workflowInstanceDataFields.hasOwnProperty('InstanceId')){
InstanceId = ''
} else {
InstanceId =eventToAprove.workflowInstanceDataFields.InstanceId
}
let navigationExtras: NavigationExtras = {
queryParams: {
"serialNumber": eventToAprove.serialNumber,
}
};
this.router.navigate(['/home/gabinete-digital/event-list/approve-event'], navigationExtras)
}
async openApproveModal(eventToAprove) {
let classs;
if( window.innerWidth <= 800){
+13
View File
@@ -464,5 +464,18 @@
color: #ffffff;
--color: #ffffff;
}
.exp-workflow{
float: left;
margin-left: 15px;
.label{
border-radius: 20px;
background: #ffb703;
font-size: 12px;
float: right;
padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff;
}
}