Fixe merge

This commit is contained in:
Peter Maquiran
2021-04-30 14:50:15 +01:00
59 changed files with 2802 additions and 387 deletions
+2 -2
View File
@@ -29,7 +29,7 @@ import { adapterFactory } from 'angular-calendar/date-adapters/date-fns';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MessagesPage } from './pages/chat/messages/messages.page';
import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
// import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
@NgModule({
@@ -57,7 +57,7 @@ import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
//File,
WebView,
FilePath,
FCM
//FCM
],
bootstrap: [AppComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
+40 -40
View File
@@ -9,7 +9,7 @@ import { ModalController, AlertController, AnimationController, Platform } from
/* import { Plugins, PushNotification, PushNotificationToken, PushNotificationActionPerformed, Modals } from '@capacitor/core'; */
import { Router } from '@angular/router';
import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
// import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
import { ViewEventPage } from '../pages/agenda/view-event/view-event.page';
import { ExpedienteDetailPage } from '../pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page';
import { ViewPublicationsPage } from '../pages/publications/view-publications/view-publications.page';
@@ -59,7 +59,7 @@ export class HomePage implements OnInit {
private router: Router,
private modalController: ModalController,
public modalCtrl: AlertController,
private fcm: FCM,
// private fcm: FCM,
private animationController: AnimationController,
private notificatinsservice: NotificationsService,
private platform: Platform) {
@@ -103,51 +103,51 @@ export class HomePage implements OnInit {
}
pushCordova() {
// pushCordova() {
if(this.platform.is('desktop')) {
console.log('Notifications not supported')
} else {
// if(this.platform.is('desktop')) {
// console.log('Notifications not supported')
// } else {
this.fcm.onNotification().subscribe(data => {
this.viewEventDetail(data.IdObject)
if (data.wasTapped === true) {
console.log("Received in background: ", data);
// this.fcm.onNotification().subscribe(data => {
// this.viewEventDetail(data.IdObject)
// if (data.wasTapped === true) {
// console.log("Received in background: ", data);
if (data.Service === "agenda") {
//this.router.navigate(['/home/', service, IdObject, 'home']);
this.viewEventDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "expediente") {
console.log('expediante 1')
this.viewExpedientDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "event-list") {
// this.ngZone.run(() => {this.router.navigate(['/home/gabinete-digital/event-list', IdObject])})
this.openApproveModal(data.IdObject);
}
else if (data.Service === "accoes" && data.Object === "accao") {
this.viewPublications(data.IdObject)
alert(data.IdObject)
}
else if (data.Service === "accoes" && data.Object === "publicacao") {
this.viewPublicationDetail(data.IdObject)
}
// if (data.Service === "agenda") {
// //this.router.navigate(['/home/', service, IdObject, 'home']);
// this.viewEventDetail(data.IdObject)
// }
// else if (data.Service === "gabinete-digital" && data.Object === "expediente") {
// console.log('expediante 1')
// this.viewExpedientDetail(data.IdObject)
// }
// else if (data.Service === "gabinete-digital" && data.Object === "event-list") {
// // this.ngZone.run(() => {this.router.navigate(['/home/gabinete-digital/event-list', IdObject])})
// this.openApproveModal(data.IdObject);
// }
// else if (data.Service === "accoes" && data.Object === "accao") {
// this.viewPublications(data.IdObject)
// alert(data.IdObject)
// }
// else if (data.Service === "accoes" && data.Object === "publicacao") {
// this.viewPublicationDetail(data.IdObject)
// }
} else {
console.log("Received in foreground: ", data);
// } else {
// console.log("Received in foreground: ", data);
console.log(data.Service)
console.log(data.Object)
console.log(data.IdObject)
// console.log(data.Service)
// console.log(data.Object)
// console.log(data.IdObject)
};
});
}
// };
// });
// }
}
// }
async viewEventDetail(eventId: any) {
console.log(this.profile);
@@ -224,8 +224,8 @@ export class HomePage implements OnInit {
publicationId: publicationId,
folderId: this.folderId,
},
cssClass: 'publication-detail',
backdropDismiss: false
cssClass: 'publication-detail modal modal-desktop',
//backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then(() => {
@@ -33,7 +33,7 @@
</ion-list>
</ion-content>
</ion-menu>
<div class="ion-page" id="main-content">
<div class="ion-page " id="main-content">
<ion-menu-button></ion-menu-button>
</div>
@@ -47,7 +47,7 @@
<ion-label class="title">{{LoadedDocument.Subject}}</ion-label>
</div>
<div class="div-icon">
<ion-menu-button autoHide="false">
<ion-menu-button >
<ion-icon name="ellipsis-vertical-outline"></ion-icon>
</ion-menu-button>
</div>
@@ -33,22 +33,23 @@ export class DocumentDetailPage implements OnInit {
}
ngOnInit() {
console.log(this.docId);
console.log(this.applicationId);
this.LoadDocumentDetails();
}
async LoadDocumentDetails(){
this.processes.GetDocumentDetails(this.docId, '').subscribe(res=>{
console.log(res);
this.LoadedDocument = res[0];
async LoadDocumentDetails() {
this.processes.GetDocumentDetails(this.docId, this.applicationId).subscribe(res=>{
this.LoadedDocument = res;
let thedate = new Date(this.LoadedDocument.DateDocument);
this.LoadedDocument.Subject = this.LoadedDocument.Assunto
let thedate = new Date(this.LoadedDocument.DateDispatch);
this.customDate = this.days[thedate.getDay()]+ ", " + thedate.getDate() +" de " + ( this.months[thedate.getMonth()]);
});
}
viewDocument(){
viewDocument() {
this.processes.GetDocumentUrl(this.docId, '8').subscribe(res=>{
console.log(res);
const url: string = res.replace("webTRIX.Viewer","webTRIX.Viewer.Branch1");
+46
View File
@@ -7,4 +7,50 @@ export class DailyWorkTask{
Remetente:string;
DocumentsQty:any;
WorkflowName:string;
}
export class tasksList{
actions: null;
formURL: string;
originator: {
displayName: string,
email: string,
fqn: string,
manager: string,
username: string,
};
serialNumber: string;
taskStartDate: string;
workflowDisplayName: string;
workflowID: number
workflowInstanceDataFields: {
AttachmentsProcessLastInstanceId: number,
DispatchDocId: number,
DispatchImageId: number,
DistributionTypeName: string,
DocID: number,
DocIDTmp: string,
FolderID: number,
ImageID: string,
ImageIDTmp: string,
ImageXMLTmp: string,
InstanceDistributionId: number,
InstanceID: string,
InstanceIDNew: string,
NewSerialNumber: string,
ReviewUserComent: string,
ReviewUserEmail: string,
ReviewUserName: string,
SourceID: number,
SourceSecFsID: number,
SourceType: string,
Subject: string,
TaskMessage: string,
UserName: string,
WorkflowID: string,
wxUserID: number,
}
workflowInstanceFolio: string
workflowInstanceID: number
workflowName: string
}
+6
View File
@@ -9,4 +9,10 @@ export class Despacho{
UserEmail: string;
UsersSelected: Participant[];
DispatchFolder: Folder;
AttachmentList?: {
ProcessInstanceID: string,
"Source": string,
"UserId": string,
"Attachment": string
}[]
}
+1 -1
View File
@@ -323,7 +323,7 @@
<ion-row class="filter ion-align-items-center">
<div class="filter-name">{{timelineFilterState}}</div>
<!-- Icon -->
<button (click)="showTimelineFilterState=true" class="arrow-down btn-no-color">
<button (click)="showTimelineFilterState=!showTimelineFilterState" class="arrow-down btn-no-color">
<ion-icon src="assets/images/icons-arrow-arrow-down.svg"></ion-icon>
</button>
@@ -190,7 +190,8 @@ export class EditEventPage implements OnInit {
component: SearchPage,
cssClass: 'modal-width-100-width-background modal',
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect'
type: 'AccoesPresidenciais & ArquivoDespachoElect',
select: true
}
});
await modal.present();
@@ -111,10 +111,10 @@ export class NewEventPage implements OnInit {
close(){
this.modalController.dismiss();
}
async save(){
/* console.log(this.postEvent);
async save() {
/* console.log(this.postEvent);
console.log(this.profile); */
if(this.documents.length >= 0) {
this.postEvent.HasAttachments = true;
}
@@ -206,7 +206,9 @@ export class NewEventPage implements OnInit {
component: SearchPage,
cssClass: 'modal-width-100-width-background modal',
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect'
type: 'AccoesPresidenciais & ArquivoDespachoElect',
showSearchInput: true,
select: true
}
});
await modal.present();
@@ -1,36 +1,52 @@
<!-- <ion-header class="ion-no-border">
<ion-toolbar class="header-toolbar">
<div class="main-header">
<div class="title-content">
<div class="left">
<ion-icon (click)="close()" slot="end" src='assets/images/icons-arrow-arrow-left.svg'></ion-icon>
</div>
<div class="middle">
<ion-label class="title">{{loadedEvent.Subject}}</ion-label>
</div>
<div class="div-icon">
<ion-icon class="edit" (click)="editEvent()" slot="end" src="assets/images/icons-edit.svg" ></ion-icon>
<ion-icon class="delete" (click)="deleteEvent()" name="trash-sharp"></ion-icon>
</div>
</div>
</div>
</ion-toolbar>
</ion-header> -->
<ion-menu autoHide="false" side="end" content-id="main-content" >
<ion-header>
<ion-toolbar translucent>
<ion-title>Menu</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-item (click)="openExpedientActionsModal('0')">
<ion-icon name="documents" slot="start"></ion-icon>
<ion-label>Efectuar Despacho</ion-label>
</ion-item>
<ion-item (click)="openExpedientActionsModal('1')">
<ion-icon name="arrow-undo" slot="start"></ion-icon>
<ion-label>Pedido de Parecer</ion-label>
</ion-item>
<ion-item (click)="openExpedientActionsModal('2')">
<ion-icon name="arrow-redo" slot="start"></ion-icon>
<ion-label>Pedido de Deferimento</ion-label>
</ion-item>
<ion-item (click)="openBookMeetingModal()">
<ion-icon name="calendar" slot="start"></ion-icon>
<ion-label>Marcar reunião</ion-label>
</ion-item>
<!-- <ion-item (click)="deleteEvent()">
<ion-icon name="trash" slot="start"></ion-icon>
<ion-label>Descartar</ion-label>
</ion-item> -->
</ion-list>
</ion-content>
</ion-menu>
<div class="ion-page d-none" id="main-content">
<ion-menu-button></ion-menu-button>
</div>
<ion-content class="height-100">
<div class="main-content d-flex height-100">
<div class="content d-flex flex-column width-100">
<div class="main-header">
<div class="title-content">
<div class="title-content d-flex justify-between">
<div class="left">
<button class="btn-no-color" (click)="close()">
<button class="btn-no-color d-flex align-center" (click)="close()">
<ion-icon slot="end" src='assets/images/icons-arrow-arrow-left.svg'></ion-icon>
</button>
</div>
<div class="middle">
<div class="middle d-flex align-center flex-grow-1">
<ion-label class="title">{{loadedEvent.Subject}}</ion-label>
</div>
<div class="div-icon">
<div class="div-icon d-flex">
<button class="btn-no-color" (click)="editEvent()">
<ion-icon class="edit" slot="end" src="assets/images/icons-edit.svg" ></ion-icon>
</button>
@@ -43,9 +43,7 @@ ion-menu{
overflow: auto;
}
.div-icon{
width: 92px;
float: right;
overflow: auto;
padding: 1px;
}
.div-icon .edit{
@@ -10,6 +10,7 @@ import { EditEventPage } from '../edit-event/edit-event.page';
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
import { ProcessesService } from 'src/app/services/processes.service';
import { ExpedientTaskModalPage } from '../../gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page';
import { BookMeetingModalPage } from '../../gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page';
@Component({
selector: 'app-view-event',
@@ -37,6 +38,8 @@ export class ViewEventPage implements OnInit {
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"];
dicIndex = 0;
constructor(
private modalController: ModalController,
private navParams: NavParams,
@@ -53,6 +56,7 @@ export class ViewEventPage implements OnInit {
this.eventBody = { BodyType : "1", Text : ""};
this.loadedEvent.Body = this.eventBody;
this.eventId = this.navParams.get('eventId');
}
ngOnInit() {
@@ -181,7 +185,43 @@ export class ViewEventPage implements OnInit {
}
async openExpedientActionsModal(taskAction: any, task: any) {
async openBookMeetingModal() {
const doc = this.loadedAttachments[ this.dicIndex];
let task = {
serialNumber: doc.SourceId,
taskStartDate: doc.CreateDate,
isEvent: true,
workflowInstanceDataFields: {
FsId: doc.ApplicationId,
FolderID: null,
DocId: doc.SourceId,
Subject: doc.SourceName
},
}
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: task,
},
cssClass: classs,
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
async openExpedientActionsModal(taskAction: any) {
//this.modalController.dismiss();
let classs;
if( window.innerWidth <= 800){
@@ -189,6 +229,21 @@ export class ViewEventPage implements OnInit {
} else {
classs = 'modal modal-desktop showAsideOptions'
}
const doc = this.loadedAttachments[ this.dicIndex];
let task = {
serialNumber: doc.SourceId,
taskStartDate: doc.CreateDate,
isEvent: true,
workflowInstanceDataFields: {
FsId: doc.ApplicationId,
FolderID: null,
DocId: doc.SourceId,
Subject: doc.SourceName
},
}
const modal = await this.modalController.create({
component: ExpedientTaskModalPage,
componentProps: {
+1 -1
View File
@@ -264,7 +264,7 @@ export class EventsPage implements OnInit {
async viewEventDetail(eventId:any) {
let classs;
if( window.innerWidth <= 800){
classs = 'modal'
classs = 'modal modal-desktop'
} else {
classs = 'modal modal-desktop showAsideOptions'
}
@@ -1,11 +1,11 @@
<ion-header class="ion-no-border">
<div class="header-content mx-20 d-flex justify-start">
<div class="header-content mx-20 d-flex justify-between">
<div class="header-icon-left">
<button class="btn-no-color" (click)="close()">
<ion-icon src="assets/images/icons-arrow-arrow-left.svg"></ion-icon>
</button>
</div>
<div class="header-title flex-md-grow-1">
<div class="header-title flex-grow-1">
<label>{{loadedEvent.workflowInstanceDataFields.Subject}}</label>
</div>
<div class="header-icon-right">
@@ -38,23 +38,24 @@
</ion-menu>
<ion-content id="main-content">
<div class="upper-content">
<div class="content-location">
<div class="location-detail">
<div class="upper-content d-flex width-100">
<div class="content-location d-flex justify-between width-100">
<div class="location-detail flex-grow-1">
<ion-label >{{loadedEvent.workflowInstanceDataFields.Location}}</ion-label>
<div class="content-details">
<ion-label>
<p>1 {{customDate}}</p>
<p>2 das {{loadedEvent.workflowInstanceDataFields.StartDate | date: 'hh:mm'}} às {{loadedEvent.workflowInstanceDataFields.EndDate | date: 'hh:mm'}}</p>
<p *ngIf="!loadedEvent.workflowInstanceDataFields.IsRecurring">3 (Não se repete)</p>
<p *ngIf="loadedEvent.workflowInstanceDataFields.IsRecurring">4 Repete</p>
</ion-label>
</div>
</div>
<div class="button-calendar-type">
<div class="button-calendar-type d-flex flex-grow-1 justify-end">
<ion-button class="button-calendar-type" slot="end">{{loadedEvent.workflowInstanceDataFields.Agenda}}</ion-button>
</div>
</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="middle-content">
<div *ngIf="loadedEvent.workflowInstanceDataFields.Participants">
@@ -18,7 +18,6 @@ ion-menu{
float: left;
}
.header-title{
width: 264px;
font-family: Roboto;
font-size: 25px;
margin: 0 5px 0 5px;
@@ -33,19 +32,17 @@ ion-menu{
overflow: auto;
}
.upper-content{
margin-left: 50px;
padding-left: 50px;
overflow: auto;
font-size: 18px;
.content-location{
width: 360px;
margin: 0 auto;
padding: 0;
overflow: auto;
}
.location-detail{
width: 210px;
font-weight: 700;
font-size: 18px;
float: left;
@@ -79,7 +76,6 @@ ion-menu{
}
.bottom-content{
width: 360px;
margin: 0 auto;
.bottom-content h3{
@@ -38,14 +38,14 @@ export class ApproveEventModalPage implements OnInit {
private activatedRoute: ActivatedRoute,
) {
this.activatedRoute.paramMap.subscribe(paramMap =>
{
if (!paramMap.has("serialNumber")){
return;
}
else{
this.serialNumber = paramMap.get('serialNumber');
}
});
{
if (!paramMap.has("serialNumber")){
return;
}
else{
this.serialNumber = paramMap.get('serialNumber');
}
});
}
ngOnInit() {
@@ -1,9 +1,9 @@
<ion-header class="ion-no-border">
<div *ngIf="loadedEvent" class="header-content">
<div *ngIf="loadedEvent" class="header-content d-flex justify-between">
<div class="header-icon-left">
<ion-icon (click)="close()" src="assets/images/icons-arrow-arrow-left.svg"></ion-icon>
</div>
<div class="header-title">
<div class="header-title flex-grow-1">
<label>{{loadedEvent.workflowInstanceDataFields.Subject}}</label>
</div>
<div class="header-icon-right">
@@ -55,7 +55,7 @@
</div>
</div>
<div class="line"></div>
<div class="middle-content" *ngIf="loadedEvent">
<div class="middle-content overflow-y-auto" *ngIf="loadedEvent">
<h5>Intervenientes</h5>
<ion-item>
<ion-label>
@@ -155,7 +155,7 @@
</div>
</div>
<div hidden class="ion-item-container-no-border">
<div class="ion-item-container-no-border">
<ion-label>
<div class="attach-icon">
<ion-icon src="assets/images/icons-attach-doc.svg"></ion-icon>
@@ -166,19 +166,23 @@
</ion-label>
</div>
<div *ngIf="loadedAttachments">
<ion-item>
<ion-label>Documentos Anexados</ion-label>
</ion-item>
<div class="list " *ngFor="let document of documents; let i = index" >
<ion-list>
<ion-item *ngFor="let attachment of loadedAttachments">
<ion-item>
<ion-label>
<h4 class="attach-title-item">{{attachment.Description}}</h4>
<p><span class="span-left">{{attachment.Stakeholders}}</span><span class="span-right"> {{ attachment.CreateDate | date: 'dd/MM/yyyy' }}</span></p>
<p class="d-flex ion-justify-content-between">
<span class="attach-title-item">{{document.Assunto}}</span>
<span class="app-name">{{document.appName}}</span>
<span class="close-button text-black" (click)="removeAttachment(i)" >
<ion-icon class="font-20" src="assets/images/icons-delete-25.svg"></ion-icon>
</span>
</p>
<p><span class="span-left">{{document.EntidadeOrganicaNome}}</span><span class="span-right"> {{document.Data | date: 'dd-MM-yy'}} </span></p>
</ion-label>
</ion-item>
</ion-list>
</div>
</div>
</div>
@@ -145,4 +145,65 @@
justify-content: space-between;
padding: 20px;
overflow: auto;
}
.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;
}
.app-name{
background: #42b9f2;
border-radius: 18px;
text-align: center;
display: flex;
align-items: center;
padding: 0px 5px;
color: white;
font-size: 9pt;
font-weight: 500;
height: 19px;
-webkit-border-radius: 18px;
-moz-border-radius: 18px;
-ms-border-radius: 18px;
-o-border-radius: 18px;
}
.close-button {
display: none;
}
.list:hover {
.app-name {
display: none;
}
.close-button {
display: block !important;
}
}
@@ -10,6 +10,8 @@ import { EventPerson } from 'src/app/models/eventperson.model';
import { EventsService } from 'src/app/services/events.service';
import { DiscartExpedientModalPage } from '../../discart-expedient-modal/discart-expedient-modal.page';
import { AttachmentsService } from 'src/app/services/attachments.service';
import { SearchPage } from 'src/app/pages/search/search.page';
import { SearchDocument } from 'src/app/models/search-document';
@Component({
selector: 'app-book-meeting-modal',
@@ -26,6 +28,7 @@ export class BookMeetingModalPage implements OnInit {
taskDocId:string;
loadedAttachments:any;
documents:SearchDocument[] = [];
adding: "intervenient" | "CC" = "intervenient";
@@ -220,6 +223,32 @@ export class BookMeetingModalPage implements OnInit {
modal.onDidDismiss();
}
async getDoc(){
const modal = await this.modalController.create({
component: SearchPage,
cssClass: 'modal-width-100-width-background modal',
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect',
showSearchInput: true
}
});
await modal.present();
modal.onDidDismiss().then((res)=> {
if(res){
const data = res.data;
this.documents.push(data.selected);
}
});
}
removeAttachment(index: number){
this.documents = this.documents.filter( (e, i) => index != i);
}
validateFormInputs(){
let formLocation = this.postData.Location.trim();
@@ -89,8 +89,8 @@
</div>
</div>
<div hidden class="ion-item-container-no-border">
<ion-label>
<div class="ion-item-container-no-border" (click)="getDoc()">
<ion-label class="d-flex ">
<div class="attach-icon">
<ion-icon src="assets/images/icons-attach-doc.svg"></ion-icon>
</div>
@@ -100,19 +100,23 @@
</ion-label>
</div>
<div *ngIf="loadedAttachments">
<ion-item>
<ion-label>Documentos Anexados</ion-label>
</ion-item>
<div class="list " *ngFor="let document of documents; let i = index" >
<ion-list>
<ion-item *ngFor="let attachment of loadedAttachments">
<ion-item>
<ion-label>
<h4 class="attach-title-item">{{attachment.Description}}</h4>
<p><span class="span-left">{{attachment.Stakeholders}}</span><span class="span-right"> {{ attachment.CreateDate | date: 'dd/MM/yyyy' }}</span></p>
<p class="d-flex ion-justify-content-between">
<span class="attach-title-item">{{document.Assunto}}</span>
<span class="app-name">{{document.appName}}</span>
<span class="close-button text-black" (click)="removeAttachment(i)" >
<ion-icon class="font-20" src="assets/images/icons-delete-25.svg"></ion-icon>
</span>
</p>
<p><span class="span-left">{{document.EntidadeOrganicaNome}}</span><span class="span-right"> {{document.Data | date: 'dd-MM-yy'}} </span></p>
</ion-label>
</ion-item>
</ion-list>
</div>
</div>
@@ -125,4 +125,101 @@
.aside-content{
display: block;
}
}
.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;
}
.app-name{
background: #42b9f2;
border-radius: 18px;
text-align: center;
display: flex;
align-items: center;
padding: 0px 5px;
color: white;
font-size: 9pt;
font-weight: 500;
height: 19px;
-webkit-border-radius: 18px;
-moz-border-radius: 18px;
-ms-border-radius: 18px;
-o-border-radius: 18px;
}
.close-button {
display: none;
}
.list:hover {
.app-name {
display: none;
}
.close-button {
display: block !important;
}
}
.app-name{
background: #42b9f2;
border-radius: 18px;
text-align: center;
display: flex;
align-items: center;
padding: 0px 5px;
color: white;
font-size: 9pt;
font-weight: 500;
height: 19px;
-webkit-border-radius: 18px;
-moz-border-radius: 18px;
-ms-border-radius: 18px;
-o-border-radius: 18px;
}
.close-button {
display: none;
}
.list:hover {
.app-name {
display: none;
}
.close-button {
display: block !important;
}
}
@@ -14,6 +14,10 @@ import { DiscartExpedientModalPage } from '../../discart-expedient-modal/discart
import { AttachmentsService } from 'src/app/services/attachments.service';
import { ExpedienteDetailPage } from '../expediente-detail/expediente-detail.page';
import { AlertService } from 'src/app/services/alert.service';
import { SearchPage } from 'src/app/pages/search/search.page';
import { SearchDocument } from 'src/app/models/search-document';
import { EventAttachment } from 'src/app/models/attachment.model';
import { User } from 'src/app/models/user.model';
@Component({
selector: 'app-expedient-task-modal',
@@ -36,7 +40,10 @@ export class ExpedientTaskModalPage implements OnInit {
taskDate: Date;
taskDescription: string;
user: string;
loadedAttachments:any;
documents:SearchDocument[] = [];
subjectTypes:any;
postData: Despacho;
@@ -53,6 +60,10 @@ export class ExpedientTaskModalPage implements OnInit {
emptyTextDescription = "Sem intervenientes selecionados";
showEmptyContainer = true;
taskResult: any = {}
loggeduser: User;
constructor(
private modalController: ModalController,
private router:Router,
@@ -60,7 +71,12 @@ export class ExpedientTaskModalPage implements OnInit {
private attachmentsService: AttachmentsService,
private navParams: NavParams,
private alertController: AlertService,
private authService: AuthService) {
private authService: AuthService,
private userAuth: AuthService) {
this.loggeduser = userAuth.ValidatedUser;
this.user = environment.defaultuser +'@'+ environment.domain;
this.task = this.navParams.get('task');
@@ -124,7 +140,8 @@ export class ExpedientTaskModalPage implements OnInit {
this.modalController.dismiss(null);
}
saveTask(){
async saveTask(){
if(this.postData.Priority=='99999861'){
this.dispatchFolder.DeadlineType = 'Normal';
@@ -140,6 +157,7 @@ export class ExpedientTaskModalPage implements OnInit {
}
let attendees = this.taskParticipants.concat(this.taskParticipantsCc);
attendees = attendees.map(function(val) {
return {
UserEmail: val.EmailAddress,
@@ -147,6 +165,16 @@ export class ExpedientTaskModalPage implements OnInit {
};
})
const DocumentToSave = this.documents.map((e) => {
return {
ProcessInstanceID: '',
"Source": "webTRIX",
"UserId": this.loggeduser.UserId.toString(),
"Attachment": `${e.ApplicationType}@DOC@${e.Id}`
};
});
if(this.taskParticipants.length > 0) {
switch (this.taskType) {
case '0':
@@ -158,9 +186,10 @@ export class ExpedientTaskModalPage implements OnInit {
SubjectTypeId: this.postData.SubjectTypeId,
UsersSelected: attendees,
DispatchFolder: this.dispatchFolder,
AttachmentList: DocumentToSave
}
console.log('this.postData', this.postData, this.taskType);
this.processes.postDespatcho(this.postData);
this.taskResult = await this.processes.postDespatcho(this.postData);
break;
case '1':
this.postData = {
@@ -171,9 +200,10 @@ export class ExpedientTaskModalPage implements OnInit {
SubjectTypeId: this.postData.SubjectTypeId,
UsersSelected: attendees,
DispatchFolder: this.dispatchFolder,
AttachmentList: DocumentToSave
}
console.log(this.postData);
this.processes.postParecer(this.postData);
this.taskResult = await this.processes.postParecer(this.postData);
break;
case '2':
this.postData = {
@@ -184,9 +214,10 @@ export class ExpedientTaskModalPage implements OnInit {
SubjectTypeId: this.postData.SubjectTypeId,
UsersSelected: attendees,
DispatchFolder: this.dispatchFolder,
AttachmentList: DocumentToSave
}
console.log(this.postData);
this.processes.postDeferimento(this.postData);
this.taskResult = await this.processes.postDeferimento(this.postData);
break;
}
@@ -363,6 +394,28 @@ export class ExpedientTaskModalPage implements OnInit {
}
async getDoc(){
const modal = await this.modalController.create({
component: SearchPage,
cssClass: 'modal-width-100-width-background modal',
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect',
showSearchInput: true
}
});
await modal.present();
modal.onDidDismiss().then((res)=>{
if(res){
const data = res.data;
this.documents.push(data.selected);
}
});
}
removeAttachment(index: number){
this.documents = this.documents.filter( (e, i) => index != i);
}
}
@@ -24,15 +24,15 @@
</ion-header>
<ion-content>
<ion-list>
<ion-item (click)="openExpedientActionsModal('0',fulltask)">
<ion-item (click)="openExpedientActionsModal('0', fulltask)">
<ion-icon name="documents" slot="start"></ion-icon>
<ion-label>Efectuar Despacho</ion-label>
</ion-item>
<ion-item (click)="openExpedientActionsModal('1',fulltask)">
<ion-item (click)="openExpedientActionsModal('1', fulltask)">
<ion-icon name="arrow-undo" slot="start"></ion-icon>
<ion-label>Pedido de Parecer</ion-label>
</ion-item>
<ion-item (click)="openExpedientActionsModal('2',fulltask)">
<ion-item (click)="openExpedientActionsModal('2', fulltask)">
<ion-icon name="arrow-redo" slot="start"></ion-icon>
<ion-label>Pedido de Deferimento</ion-label>
</ion-item>
@@ -58,10 +58,10 @@
<ion-content>
<div class="main-content d-flex height-100">
<div class="content d-flex flex-column" *ngIf="task">
<div class="main-header">
<div class="title-content">
<div class="main-header" style="overflow: unset !important;">
<div class="title-content d-flex justify-between">
<app-btn-modal-dismiss></app-btn-modal-dismiss>
<div class="middle">
<div class="middle flex-grow-1">
<ion-label class="title">{{ task.Folio}}</ion-label>
</div>
<div class="div-icon">
@@ -71,7 +71,7 @@
</div>
</div>
</div>
<div class="upper-content">
<div class="upper-content" style="overflow: unset !important;">
<div class="content-details">
<ion-label>
<p><span class="date">{{customDate}}</span><span class="label">Expediente</span></p>
@@ -80,72 +80,75 @@
</div>
</div>
<div class="line"></div>
<div class="middle-content">
<h5 *ngIf="intervenientes">Intervenientes</h5>
<ion-item class="ion-no-margin ion-no-padding">
<ion-label>
<div *ngFor="let interveniente of intervenientes">
<p>{{interveniente.Name}}</p>
</div>
</ion-label>
</ion-item>
<div *ngIf="cc.length > 0">
<h5>Com conhecimento</h5>
<div class="overflow-y-auto">
<div class="middle-content">
<h5 *ngIf="intervenientes">Intervenientes</h5>
<ion-item class="ion-no-margin ion-no-padding">
<ion-label>
<div *ngFor="let c of cc">
<p>{{c.Name}}</p>
<div *ngFor="let interveniente of intervenientes">
<p>{{interveniente.Name}}</p>
</div>
</ion-label>
</ion-item>
</div>
<h5>Detalhes</h5>
<ion-item class="ion-no-margin ion-no-padding">
<p [innerHTML]="task.Note"></p>
</ion-item>
</div>
<div class="bottom-content width-100">
<ion-list>
<h5>Documentos Anexados</h5>
<ion-item class="ion-no-margin ion-no-padding">
<ion-label
(click)="viewDocument()">
<p class="attach-title-item">{{ task.Folio }}<span class="span-right color-red btn-size"><ion-icon hidden name="close"></ion-icon></span></p>
<p><span class="span-left">{{task.Remetente}}</span><span class="span-right">{{ task.CreateDate | date: 'dd/MM/yy' }}</span></p>
</ion-label>
</ion-item>
</ion-list>
</div>
<div *ngIf="eventsList">
<h3 class="h3-event-title">Eventos Associados</h3>
<ion-list>
<div *ngIf="eventsList">
<ion-item-sliding>
<ion-item
class="Rectangle" lines="none"
*ngFor="let event of eventsList"
(click)="viewEventDetail(event.EventId)"
>
<!-- [routerLink]="['/home/events', event.EventId, 'events']" -->
<div class="content-{{profile}}-{{event.CalendarName}}">
<div class="approve-event-time">
<p>{{event.StartDate | date: 'hh:mm'}}</p>
<p>{{event.EndDate | date: 'hh:mm'}}</p>
</div>
<div class="approve-event-detail">
<p *ngIf="event.StartDate != event.EndDate">{{event.StartDate | date: 'd/M/yy' }} - {{ event.EndDate | date: 'dd/mm/yy'}} | {{event.Location}}</p>
<p *ngIf="event.StartDate == event.EndDate">{{event.StartDate | date: 'd/M/yy' }} | {{event.Location}}</p>
<h3>{{event.Subject}}</h3>
</div>
</div>
</ion-item>
</ion-item-sliding>
<div *ngIf="cc.length > 0">
<h5>Com conhecimento</h5>
<ion-item class="ion-no-margin ion-no-padding">
<ion-label>
<div *ngFor="let c of cc">
<p>{{c.Name}}</p>
</div>
</ion-label>
</ion-item>
</div>
</ion-list>
<h5>Detalhes</h5>
<ion-item class="ion-no-margin ion-no-padding">
<p [innerHTML]="task.Note"></p>
</ion-item>
</div>
<div class="bottom-content width-100">
<ion-list>
<h5>Documentos Anexados</h5>
<ion-item class="ion-no-margin ion-no-padding">
<ion-label
(click)="viewDocument()">
<p class="attach-title-item">{{ task.Folio }}<span class="span-right color-red btn-size"><ion-icon hidden name="close"></ion-icon></span></p>
<p><span class="span-left">{{task.Remetente}}</span><span class="span-right">{{ task.CreateDate | date: 'dd/MM/yy' }}</span></p>
</ion-label>
</ion-item>
</ion-list>
</div>
<div *ngIf="eventsList">
<h3 class="h3-event-title">Eventos Associados</h3>
<ion-list>
<div *ngIf="eventsList">
<ion-item-sliding>
<ion-item
class="Rectangle" lines="none"
*ngFor="let event of eventsList"
(click)="viewEventDetail(event.EventId)"
>
<!-- [routerLink]="['/home/events', event.EventId, 'events']" -->
<div class="content-{{profile}}-{{event.CalendarName}} width-100 ">
<div class="approve-event-time">
<p>{{event.StartDate | date: 'hh:mm'}}</p>
<p>{{event.EndDate | date: 'hh:mm'}}</p>
</div>
<div class="approve-event-detail">
<p *ngIf="event.StartDate != event.EndDate">{{event.StartDate | date: 'd/M/yy' }} - {{ event.EndDate | date: 'dd/mm/yy'}} | {{event.Location}}</p>
<p *ngIf="event.StartDate == event.EndDate">{{event.StartDate | date: 'd/M/yy' }} | {{event.Location}}</p>
<h3>{{event.Subject}}</h3>
</div>
</div>
</ion-item>
</ion-item-sliding>
</div>
</ion-list>
</div>
</div>
</div>
<div class="aside-right flex-column height-100">
<div class="buttons">
<button (click)="openExpedientActionsModal('0',fulltask)" class="btn-ok" shape="round" >Efectuar Despacho</button>
@@ -201,6 +204,7 @@
</ion-button>
</ion-list>
</div>
</div>
</ion-content>
@@ -20,7 +20,7 @@
</div>
<div class="aside overflow-y-auto d-flex flex-wrap width-100">
<div [class.active]="selectedElement == 'approval'" (click)="openEventsToApprovePage('MDGPR');selectedElement='approval'" class="exp-card d-flex flex-column" >
<div [class.active]="selectedElementF('approval')" (click)="openEventsToApprovePage('MDGPR');selectedElement='approval'" class="exp-card d-flex flex-column" >
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-agenda.svg"></ion-icon>
</div>
@@ -28,7 +28,7 @@
<p class="text-center exp-card-content">{{count_ev_md+count_ev_pr}} <span class="title1">Documentos</span></p>
</div>
<div [class.active]="selectedElement == 'Correspondence'" (click)="openExpedientListPage(); selectedElement='Correspondence'" class="exp-card d-flex flex-column justify-center" >
<div [class.active]="selectedElementF('Correspondence')" (click)="openExpedientListPage(); selectedElement='Correspondence'" class="exp-card d-flex flex-column justify-center" >
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-correspondencia.svg"></ion-icon>
</div>
@@ -36,7 +36,8 @@
<p class="text-center exp-card-content">{{count_exp_dailywork}} <span class="title1">Documentos</span></p>
</div>
<div [class.active]="selectedElement == 'Pending'" (click)="openPendentesPage(); selectedElement='Pending'" class="exp-card d-flex flex-column justify-center" >
<!-- <div [class.active]="selectedElement == 'Pending'" (click)="openPendentesPage(); selectedElement='Pending'" class="exp-card d-flex flex-column justify-center" > -->
<div [class.active]="selectedElementF('Pending')" (click)="notImplemented()" class="exp-card d-flex flex-column justify-center" >
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-expediente-pendente.svg"></ion-icon>
</div>
@@ -45,7 +46,7 @@
<p class="text-center exp-card-content"><span class="number">{{this.count_desp_pending + count_def_pending + count_par_pending}}</span> <span class="title1">Documentos</span></p>
</div>
<div [class.active]="selectedElement == 'Dispatches'" class="exp-card d-flex flex-column justify-center" (click)="openDespachosPage(); selectedElement='Dispatches'">
<div [class.active]="selectedElementF('Dispatches') " class="exp-card d-flex flex-column justify-center" (click)="openDespachosPage(); selectedElement='Dispatches'">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-despachos-presidente.svg"></ion-icon>
</div>
@@ -53,7 +54,7 @@
<p class="text-center exp-card-content">{{count_desp_dailywork}}<span class="title1">Documentos</span> </p>
</div>
<div [class.active]="selectedElement == 'RequestsForOpinion'" class="exp-card d-flex flex-column justify-center" (click)="openPedidosPage('parecer'); selectedElement='RequestsForOpinion'">
<div [class.active]="selectedElementF('RequestsForOpinion')" class="exp-card d-flex flex-column justify-center" (click)="openPedidosPage('parecer'); selectedElement='RequestsForOpinion'">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-expediente-parecer.svg"></ion-icon>
</div>
@@ -61,14 +62,16 @@
<p class="text-center exp-card-content">{{count_par_dailywork}} <span class="title1">Documentos</span></p>
</div>
<div [class.active]="selectedElement == 'RequestForApproval'" class="exp-card d-flex flex-column justify-center" (click)="openPedidosPage('deferimento'); selectedElement = 'RequestForApproval'">
<div [class.active]="selectedElementF('RequestForApproval')" class="exp-card d-flex flex-column justify-center" (click)="openPedidosPage('deferimento'); selectedElement = 'RequestForApproval'">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-expediente-deferimento.svg"></ion-icon>
</div>
<p class="text-center exp-card-title ">Pedidos de Deferimento</p>
<p class="text-center exp-card-content">{{count_def_dailywork}} <span class="title1">Documentos</span></p>
</div>
<div [class.active]="selectedElement == '£££££££'" class="exp-card d-flex d-none flex-column justify-center" (click)="notImplemented()">
<!-- Desktop -->
<div [class.active]="selectedElementF('£££££££')" class="exp-card d-md-flex d-none flex-column justify-center" (click)="notImplemented()">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-expediente-presidente.svg"></ion-icon>
</div>
@@ -76,7 +79,8 @@
<p class="text-center exp-card-content"><span class="number">-</span> <span class="title1">Documentos</span></p>
</div>
<div [class.active]="selectedElement == '£££££££'" class="exp-card d-flex d-none flex-column justify-center" (click)="notImplemented()">
<!-- Desktop -->
<div [class.active]="selectedElementF('£££££££')" class="exp-card d-md-flex d-none flex-column justify-center" (click)="notImplemented()">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-despachos-presidente.svg"></ion-icon>
</div>
@@ -84,7 +88,8 @@
<p class="text-center exp-card-content"><span class="number">-</span> <span class="title1">Documentos</span> </p>
</div>
<div [class.active]="selectedElement == '£££££££'" class="exp-card-long justify-center width-100" (click)="notImplemented()">
<div [class.active]="selectedElementF('£££££££')" class="exp-card-long justify-center width-90 ma-0 my-5 background-white" (click)="notImplemented()"
style=" box-shadow: 0 0 10px 0 rgb(0 0 0 / 7%);">
<div class="center-div">
<div class="exp-card-icon">
<ion-icon src="assets/images/icons-expediente-presidente.svg"></ion-icon>
@@ -96,7 +101,8 @@
</div>
</div>
<div [class.active]="selectedElement == '£££££££'" class="exp-card-long width-100" (click)="notImplemented()">
<div [class.active]="selectedElementF('£££££££')" class="exp-card-long width-90 ma-0 my-5 background-white" (click)="notImplemented()"
style="box-shadow: 0 0 10px 0 rgb(0 0 0 / 7%);">
<div class="center-div">
<div class="exp-card-icon">
<ion-icon src="assets/images/icons-despachos-presidente.svg"></ion-icon>
@@ -108,7 +114,7 @@
</div>
</div>
<div [class.active]="selectedElement == '£££££££'" class="exp-card d-flex flex-column justify-center" (click)="notImplemented()">
<div [class.active]="selectedElementF('£££££££')" class="exp-card d-flex flex-column justify-center" (click)="notImplemented()">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-expediente-diploma.svg"></ion-icon>
</div>
@@ -116,7 +122,7 @@
<p class="text-center exp-card-content"><span class="number">-</span> <span class="title1">Documentos</span> </p>
</div>
<div [class.active]="selectedElement == '£££££££'" class="exp-card d-flex flex-column justify-center" (click)="notImplemented()">
<div [class.active]="selectedElementF('£££££££')" class="exp-card d-flex flex-column justify-center" (click)="notImplemented()">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-diplomas-assinados-presidente.svg"></ion-icon>
</div>
@@ -289,4 +289,11 @@ export class GabineteDigitalPage implements OnInit {
}
selectedElementF(element:string) {
if (window.innerWidth >= 800) {
return element == this.selectedElement
}
return false;
}
}
+1 -1
View File
@@ -82,7 +82,7 @@ export class LoginPage implements OnInit {
}
getToken() {
this.notificatinsservice.getAndpostToken(this.username);
// this.notificatinsservice.getAndpostToken(this.username);
}
@@ -163,8 +163,8 @@ export class PublicationsPage implements OnInit {
/* let item = this.publicationFolderList; */
const modal = await this.modalController.create({
component: ViewPublicationsPage,
enterAnimation,
leaveAnimation,
//enterAnimation,
//leaveAnimation,
componentProps:{
folderId:folderId,
},
@@ -14,14 +14,12 @@
--padding-start: 0px !important;
--padding-right: 0px !important;
--padding-end: 0px !important;
}
.div-top-header{
width: 400px;
margin: 0 auto;
background-color: #0782c9;
overflow: auto;
padding-top: 15px;
border: 0!important;
}
@@ -62,7 +60,7 @@
font-family: Roboto;
margin: 0 auto;
background-color: #fff;
overflow:auto;
padding: 15px 20px 0 20px;
}
.content-top{
@@ -91,10 +89,10 @@
}
.back-icon{
width: 37px;
float: left;
font-size: 35px;
overflow: auto;
}
.div-title{
@@ -107,10 +105,7 @@
}
.actions-icon{
width: 92px;
float: right;
overflow: auto;
border: 1px solid red;
}
.actions-icon ion-icon{
margin-left: 10px;
@@ -110,7 +110,7 @@ export class ViewPublicationsPage implements OnInit {
folderId: this.folderId,
},
cssClass: 'publication-detail modal modal-desktop',
backdropDismiss: false
// backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then(()=>{
+3 -3
View File
@@ -4,7 +4,7 @@
<ion-progress-bar type="indeterminate" class="loader" *ngIf="showLoader"></ion-progress-bar>
<div class="d-flex ion-justify-content-between">
<ion-form [class.d-md-none]="!select">
<ion-form [class.d-none]="!showSearchInput">
<div class="d-flex search-input-container ion-justify-content-between" >
<div class="icon">
<button class="btn-no-color" (click)="basicSearch()">
@@ -26,7 +26,7 @@
<div *ngIf="!showAdvanceSearch" class="icon-z icon-most-searched-word-open" (click)="showHideAdvanceSearch(true)">
<ion-icon src="assets/images/icons-most-searched-words-open.svg" class="icon" slot="end"></ion-icon>
</div>
<div *ngIf="showAdvanceSearch" class="icon-z icon-most-searched-word-open align-md-baseline" (click)="showHideAdvanceSearch(false)" >
<div *ngIf="showAdvanceSearch" class="icon-z icon-most-searched-word-open align-md-baseline pl-10" (click)="showHideAdvanceSearch(false)" >
<ion-icon src="assets/images/advance-search-show-modal.svg" class="icon" slot="end"></ion-icon>
</div>
@@ -141,7 +141,7 @@
</div>
</div>
<ul>
<li *ngFor="let searchDocument of showSearchDocuments" (click)="viewDetail(searchDocument.Id); selectItem(searchDocument)" class="d-flex">
<li *ngFor="let searchDocument of showSearchDocuments" (click)="viewDetail( searchDocument); selectItem(searchDocument)" class="d-flex">
<div class="icon">
<ion-icon *ngIf="itemIcons() == 'AccoesPresidenciais & ArquivoDespachoElect' "
src="assets/images/icons-search-document.svg"></ion-icon>
+27 -17
View File
@@ -55,6 +55,8 @@ export class SearchPage implements OnInit {
type : "Agenda" | "Correspondencia" | "AccoesPresidenciais" | "ArquivoDespachoElect" | "AccoesPresidenciais & ArquivoDespachoElect" = "Agenda";
select: boolean = false;
showSearchInput = false
constructor(private modalController: ModalController,
private search: SearchService,
private modalCtrl: ModalController,
@@ -63,12 +65,15 @@ export class SearchPage implements OnInit {
this.currentPath= window.location.pathname;
this.type = this.navParams.get('type');
this.type = this.navParams.get('type');
this.select = this.navParams.get('select');
this.showSearchInput = this.navParams.get('showSearchInput');
if(this.type == null || this.type == undefined) {
this.select = false;
if(this.currentPath == '/home/agenda') {
this.type = "Agenda"
} else if (this.currentPath =='/home/gabinete-digital') {
@@ -77,21 +82,21 @@ export class SearchPage implements OnInit {
} else if (this.currentPath == '/home/publications') {
this.type = "AccoesPresidenciais"
} else {
this.select = false
console.log('search bug!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
}
} else {
this.select = true;
}
}
selectItem(item: SearchDocument) {
if(this.select){
this.modalController.dismiss({
selected: item
});
}
return this.select;
}
ngOnInit() {
@@ -469,31 +474,36 @@ export class SearchPage implements OnInit {
}
async viewDetail(id:any) {
console.log(id);
async viewDetail(searchDocument: SearchDocument) {
const ApplicationType = searchDocument.ApplicationType.toString()
const Id = searchDocument.Id
if(!this.selectItem){
if(window.location.pathname == '/home/agenda'){
if(this.select == false){
if(this.type == "Agenda") {
const modal = await this.modalCtrl.create({
component: ViewEventPage,
componentProps:{
eventId: id
eventId: Id
},
cssClass: 'modal modal-desktop',
});
await modal.present();
modal.onDidDismiss().then((res)=>{});
} else if(window.location.pathname == '/home/publications'){
} else if(this.type == "AccoesPresidenciais"){
this.viewPublicationDetail(id);
this.viewPublicationDetail(Id);
}
else if(window.location.pathname == '/home/gabinete-digital'){
else if(this.type == "AccoesPresidenciais & ArquivoDespachoElect"){
console.log('OPEN DOC');
this.viewDocumentDetail(id,'');
this.viewDocumentDetail(Id, ApplicationType);
}
} else {
console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!', this.select)
}
}
@@ -505,7 +515,7 @@ export class SearchPage implements OnInit {
publicationId: publicationId,
},
cssClass: 'publication-detail modal modal-desktop ',
backdropDismiss: false
//backdropDismiss: false
});
await modal.present();
+56 -56
View File
@@ -4,7 +4,7 @@ import { environment } from 'src/environments/environment';
import { StorageService } from 'src/app/services/storage.service';
import { AuthConnstants } from 'src/app/config/auth-constants';
import { Token } from '../models/token.model';
import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
// import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
/* import { AgendaPage } from '../pages/agenda/agenda.page'
import { ExpedientePage } from '../pages/gabinete-digital/expediente/expediente.page'
import { EventListPage } from '../pages/gabinete-digital/event-list/event-list.page';
@@ -27,7 +27,7 @@ export class NotificationsService {
constructor(
private http: HttpClient,
private fcm: FCM,
// private fcm: FCM,
private storageService: StorageService,
private modalController: ModalController,
public modalCtrl: AlertController,
@@ -45,71 +45,71 @@ export class NotificationsService {
return this.http.get<Token[]>(`${geturl}`);
}
getAndpostToken(username) {
if(this.platform.is('desktop')) {
console.log('Notifications not supported')
} else {
// getAndpostToken(username) {
// if(this.platform.is('desktop')) {
// console.log('Notifications not supported')
// } else {
const geturl = environment.apiURL + 'notifications/token';
// const geturl = environment.apiURL + 'notifications/token';
return this.fcm.getToken().then(token => {
console.log('token: ', token)
this.storageService.store(username, token);
this.storageService.get(username).then(value => {
console.log('STORAGE TOKEN', value)
this.storageService.get(AuthConnstants.USER).then(res => {
console.log('USERID', res);
const headers = { 'Authorization': 'Basic cGF1bG8ucGludG9AZ2FiaW5ldGVkaWdpdGFsLmxvY2FsOnRhYnRlc3RlQDAwNg==' };
const body = {
UserId: res.UserId,
TokenId: token,
Status: 1,
Service: 1
};
// return this.fcm.getToken().then(token => {
// console.log('token: ', token)
// this.storageService.store(username, token);
// this.storageService.get(username).then(value => {
// console.log('STORAGE TOKEN', value)
// this.storageService.get(AuthConnstants.USER).then(res => {
// console.log('USERID', res);
// const headers = { 'Authorization': 'Basic cGF1bG8ucGludG9AZ2FiaW5ldGVkaWdpdGFsLmxvY2FsOnRhYnRlc3RlQDAwNg==' };
// const body = {
// UserId: res.UserId,
// TokenId: token,
// Status: 1,
// Service: 1
// };
this.http.post<Token>(`${geturl}`, body, { headers }).subscribe(data => {
console.log('TOKEN USER MIDLE', data);
})
});
// this.http.post<Token>(`${geturl}`, body, { headers }).subscribe(data => {
// console.log('TOKEN USER MIDLE', data);
// })
// });
});
});
}
// });
// });
// }
}
// }
async onReceviNotification(viewEventDetail, viewExpedientDetail, openApproveModal, viewPublications, viewPublicationDetail) {
this.fcm.onNotification().subscribe(data => {
if (data.click_action) {
console.log("Received in background: ", data);
// this.fcm.onNotification().subscribe(data => {
// if (data.click_action) {
// console.log("Received in background: ", data);
if (data.Service === "agenda") {
viewEventDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "expediente") {
console.log('expediante 1')
viewExpedientDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "event-list") {
openApproveModal(data.IdObject);
}
else if (data.Service === "accoes" && data.Object === "accao") {
viewPublications(data.IdObject)
}
else if (data.Service === "accoes" && data.Object === "publicacao") {
viewPublicationDetail(data.IdObject)
}
// if (data.Service === "agenda") {
// viewEventDetail(data.IdObject)
// }
// else if (data.Service === "gabinete-digital" && data.Object === "expediente") {
// console.log('expediante 1')
// viewExpedientDetail(data.IdObject)
// }
// else if (data.Service === "gabinete-digital" && data.Object === "event-list") {
// openApproveModal(data.IdObject);
// }
// else if (data.Service === "accoes" && data.Object === "accao") {
// viewPublications(data.IdObject)
// }
// else if (data.Service === "accoes" && data.Object === "publicacao") {
// viewPublicationDetail(data.IdObject)
// }
} /* else {
console.log("Received in foreground: ", data);
// } /* else {
// console.log("Received in foreground: ", data);
console.log(data.Service)
console.log(data.Object)
console.log(data.IdObject)
this.openApproveModal(data.IdObject);
// console.log(data.Service)
// console.log(data.Object)
// console.log(data.IdObject)
// this.openApproveModal(data.IdObject);
}; */
});
// }; */
// });
}
platformVerify() {
+1 -1
View File
@@ -160,7 +160,7 @@ export class ProcessesService {
return this.http.get<any>(`${geturl}`, options);
}
postDespatcho(body:any){
postDespatcho(body:any) {
const geturl = environment.apiURL + 'Processes/CreateDispatch';
let options = {
headers: this.headers,
@@ -66,6 +66,7 @@
</div>
</div>
<div class="line"></div>
<div class="middle-content">
<div *ngIf="loadedEvent.workflowInstanceDataFields.ParticipantsList">
<h5>Intervenientes</h5>
@@ -95,6 +96,11 @@
</ion-list>
</div>
</div>
<div class="overflow-y-auto">
</div>
<div *ngIf="showAside" class="aside-right flex-column height-100">
<div class="aside-buttons">
<button hidden full class="btn-ok" shape="round" >Editar evento</button>
@@ -104,8 +110,10 @@
<button (click)="rejectTask(loadedEvent.serialNumber)" full class="btn-delete" shape="round" >Rejeitar</button>
</div>
</div>
</div>
</ion-content>
<ion-footer class="display-none-{{showAside}}">
<div class="buttons">
<button class="btn-cancel" shape="round" (click)="emendTask(loadedEvent.serialNumber)">Adicionar Nota</button>
@@ -207,7 +207,9 @@ export class EditEventComponent implements OnInit {
component: SearchPage,
cssClass: 'modal-width-100-width-background modal',
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect'
type: 'AccoesPresidenciais & ArquivoDespachoElect',
showSearchInput: true,
select: true,
}
});
await modal.present();
@@ -210,6 +210,7 @@
</ion-item>
</ion-list>
</div>
</div>
</ion-content>
<ion-footer class="ion-no-border px-20">
@@ -132,7 +132,9 @@ export class NewEventPage implements OnInit {
component: SearchPage,
cssClass: 'modal-width-100-width-background modal',
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect'
type: 'AccoesPresidenciais & ArquivoDespachoElect',
showSearchInput: true,
select: true
}
});
await modal.present();
@@ -0,0 +1,14 @@
<ion-content class="container">
<div class="arrow-right">
<button class="btn-no-color">
<ion-icon slot="end" class="arrow-right-icon" src='assets/images/icons-arrow-arrow-right.svg'></ion-icon>
</button>
</div>
<div class="buttons">
<button class="btn-cancel" shape="round" >Efectuar Despacho</button>
<button class="btn-ok" shape="round" >Pedido de Parecer</button>
<div class="solid"></div>
<button full class="btn-cancel mobile-only" shape="round" >Pedido de Deferimento</button>
<button class="btn-delete" shape="round">Marcar reunião</button>
</div>
</ion-content>
@@ -0,0 +1,54 @@
.container{
--padding-top:20px !important;
--padding-bottom:20px !important;
--padding-start:20px !important;
--padding-end:20px !important;
}
.arrow-right{
display: none;
margin-bottom: 20px;
.arrow-right-icon{
width: 37px;
float: right;
font-size: 35px;
overflow: hidden;
}
}
.buttons{
display: flex;
flex-wrap: wrap;
justify-content: space-around;
}
.solid {
display: none;
width: 90%;
border-top: 1px solid #bbb;
margin: 0 auto !important;
}
@media only screen and (min-width: 1024px) {
.arrow-right{
display: flex;
justify-content: flex-end;
}
.btn-cancel{
//display: none;
width: 100% !important;
margin-bottom: 10px !important;
}
.btn-ok{
width: 100% !important;
margin-bottom: 10px !important;
}
.btn-delete{
width: 100% !important;
margin-bottom: 10px !important;
margin-top: 10px !important;
}
.solid{
display: block;
}
.mobile-only{
display: none !important;
}
}
@@ -0,0 +1,24 @@
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { OptionsComponent } from './options.component';
describe('OptionsComponent', () => {
let component: OptionsComponent;
let fixture: ComponentFixture<OptionsComponent>;
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
declarations: [ OptionsComponent ],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(OptionsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
@@ -0,0 +1,14 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-options',
templateUrl: './options.component.html',
styleUrls: ['./options.component.scss'],
})
export class OptionsComponent implements OnInit {
constructor() { }
ngOnInit() {}
}
@@ -8,6 +8,7 @@ import { ViewEventPageRoutingModule } from './view-event-routing.module';
import { ViewEventPage } from './view-event.page';
import { SharedModule } from 'src/app/shared/shared.module';
import { ChatPopoverPage } from '../../popover/chat-popover/chat-popover.page';
@NgModule({
imports: [
@@ -17,6 +18,9 @@ import { SharedModule } from 'src/app/shared/shared.module';
SharedModule,
ViewEventPageRoutingModule
],
declarations: [ViewEventPage]
declarations: [
ViewEventPage,
ChatPopoverPage
]
})
export class ViewEventPageModule {}
@@ -35,18 +35,18 @@
<ion-header class="ion-no-border">
<ion-toolbar class="header-toolbar">
<div class="main-header px-20">
<div class="main-header px-20" style="overflow: unset !important;">
<div class="title-content d-flex" >
<div class="left">
<button class="btn-no-color" (click)="close()">
<ion-icon slot="end" src='assets/images/icons-arrow-arrow-left.svg'></ion-icon>
</button>
</div>
<div class="middle flex-grow-1">
<div class="middle flex-grow-1" (click)="openOptions()">
<ion-label class="title">{{loadedEvent.Subject}}</ion-label>
</div>
<div class="div-icon">
<div class="div-icon d-flex">
<button class="btn-no-color" (click)="editEvent()">
<ion-icon class="edit" slot="end" src="assets/images/icons-edit.svg" ></ion-icon>
</button>
@@ -102,10 +102,10 @@
<ion-list class="width-100">
<ion-item *ngFor="let attach of loadedAttachments; let i = index" class="width-100" lines="none" class="ion-no-margin ion-no-padding">
<ion-label class="width-100 d-flex " >
<div class="flex-grow-1" (click)="viewDocument(attach.SourceId)">
<p class="attach-title-item">{{attach.SourceName}}</p>
<p class="flex-grow-1" (click)="viewDocument(attach.SourceId)">
<span class="attach-title-item">{{attach.SourceName}}</span>
<span class="span-left">{{attach.Stakeholders}}</span>
</div>
</p>
<div class="d-flex align-end">
<span class="span-right">{{ attach.CreateDate | date: 'dd-MM-yy' }}</span>
@@ -120,5 +120,7 @@
</ion-list>
</div>
<!-- <div class="line"></div> -->
</div>
</div>
</ion-content>
@@ -19,7 +19,6 @@ ion-menu{
border-top-left-radius: 25px;
border-top-right-radius: 25px;
background-color: #fff;
overflow:hidden;
padding: 30px 0px 0px 0px;
color:#000;
transform: translate3d(0, 1px, 0);
@@ -36,7 +35,6 @@ ion-menu{
overflow: hidden;
}
.middle{
width: 230px;
padding: 0!important;
float: left;
margin: 2.5px 0 0 0;
@@ -45,12 +43,10 @@ ion-menu{
width: 45px;
font-size: 45px;
float: right;
overflow: auto;
}
.div-icon{
width: 92px;
float: right;
overflow: auto;
padding: 1px;
}
.div-icon .edit{
@@ -87,7 +83,7 @@ ion-menu{
width: 100%;
margin: 0 auto;
padding: 0;
overflow: auto;
.date{
float: left;
@@ -168,4 +164,14 @@ ion-menu{
font-size: 13px;
}
}
}
}
.chat-popover .popover-content {
width: 100% !important;
left: 0 !important;
bottom: 0 !important;
right: 0 !important;
top: calc(100% - 160px) !important;
max-height: 160px;
min-height: 160px;
}
@@ -1,5 +1,5 @@
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { AlertController, ModalController, NavParams } from '@ionic/angular';
import { AlertController, ModalController, NavParams, PopoverController } from '@ionic/angular';
import { Attachment } from 'src/app/models/attachment.model';
import { EventBody } from 'src/app/models/eventbody.model';
import { AttachmentsService } from 'src/app/services/attachments.service';
@@ -10,6 +10,8 @@ import { ProcessesService } from 'src/app/services/processes.service';
import { ExpedientTaskModalPage } from 'src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page';
import { momentG } from 'src/plugin/momentG';
import { BookMeetingModalPage } from 'src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page';
import { ChatPopoverPage } from '../../popover/chat-popover/chat-popover.page';
import { OptionsComponent } from './options/options.component';
@Component({
selector: 'app-view-event',
@@ -49,6 +51,7 @@ export class ViewEventPage implements OnInit {
private iab: InAppBrowser,
private processes: ProcessesService,
private modalController: ModalController,
public popoverController: PopoverController
)
{
this.isEventEdited = false;
@@ -178,6 +181,27 @@ export class ViewEventPage implements OnInit {
});
}
async openOptions(ev: any) {
const popover = await this.popoverController.create({
component: OptionsComponent,
cssClass: 'chat-popover modal-desktop',
event: ev,
componentProps: {
// room: this.room,
},
translucent: true
});
await popover.present();
popover.onDidDismiss().then(res=>{
console.log(res);
if(res.data){
// this.getRoomInfo();
//this.modalController.dismiss();
};
});
}
async openBookMeetingModal(task: any) {
const doc = this.loadedAttachments[ this.dicIndex];
@@ -1,3 +1,38 @@
<ion-menu autoHide="false" side="end" content-id="main-content" >
<ion-header>
<ion-toolbar translucent>
<ion-title>Menu</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-item (click)="openExpedientActionsModal('0',fulltask)">
<ion-icon name="documents" slot="start"></ion-icon>
<ion-label>Efectuar Despacho</ion-label>
</ion-item>
<ion-item (click)="openExpedientActionsModal('1',fulltask)">
<ion-icon name="arrow-undo" slot="start"></ion-icon>
<ion-label>Pedido de Parecer</ion-label>
</ion-item>
<!-- <ion-item (click)="openExpedientActionsModal('2',fulltask)">
<ion-icon name="arrow-redo" slot="start"></ion-icon>
<ion-label>Pedido de Deferimento</ion-label>
</ion-item> -->
<!-- <ion-item (click)="openBookMeetingModal(task)">
<ion-icon name="calendar" slot="start"></ion-icon>
<ion-label>Marcar reunião</ion-label>
</ion-item> -->
<ion-item (click)="distartExpedientModal()">
<ion-icon name="trash" slot="start"></ion-icon>
<ion-label>Descartar</ion-label>
</ion-item>
</ion-list>
</ion-content>
</ion-menu>
<div class="ion-page d-none" id="main-content">
<ion-menu-button></ion-menu-button>
</div>
<ion-header class="ion-no-border">
<div class="title">
<div class="thetitle"><ion-label >Despachos</ion-label></div>
@@ -23,21 +58,25 @@
<ion-list>
<ion-item
class="expediente ion-no-padding"
*ngFor = "let task of despachoList"
*ngFor = "let task of despachoList; let i = index"
(click)="viewExpedientDetail(task.SerialNumber)"
>
<!-- [routerLink]="['/home/gabinete-digital/expediente',task.SerialNumber]" -->
<div class="item width-100">
<div class="exp-top-detail">
<div class="exp-top-detail ">
<div class="exp-date">
<ion-label>{{ task.CreateDate | date: 'dd-MM-yy' }}</ion-label>
</div>
<div class="exp-remetente">
<ion-label>{{task.Senders}}</ion-label>
</div>
<div class="exp-icon">
<div class="exp-icon d-flex align-center">
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
<label>{{task.DocumentsQty}}</label>
<!-- <ion-menu-button (click)="docIndex(i)" style="width: 35px; height: 41px;" autoHide="false">
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
</ion-menu-button> -->
</div>
</div>
<div class="exp-bottom-detail">
@@ -1,16 +1,19 @@
import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
import { Router } from '@angular/router';
import { CalendarComponent } from 'ionic2-calendar';
import { DailyWorkTask } from '../../../models/dailyworktask.model';
import { DailyWorkTask, tasksList } from '../../../models/dailyworktask.model';
import { ProcessesService } from 'src/app/services/processes.service';
import { formatDate } from '@angular/common';
import { LoadingService } from 'src/app/services/loading.service';
import { ModalController, NavParams } from '@ionic/angular';
import { ModalController } from '@ionic/angular';
import { ExpedienteDetailPage } from 'src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page';
import { AlertService } from 'src/app/services/alert.service';
import { DespachoPage } from 'src/app/pages/gabinete-digital/despachos/despacho/despacho.page';
import { ExpedientTaskModalPage } from 'src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page';
import { BookMeetingModalPage } from 'src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page';
import { DiscartExpedientModalPage } from 'src/app/pages/gabinete-digital/discart-expedient-modal/discart-expedient-modal.page';
import { AuthService } from 'src/app/services/auth.service';
import { DespachoPage } from 'src/app/pages/gabinete-digital/despachos/despacho/despacho.page';
@Component({
selector: 'app-despachos',
@@ -25,6 +28,9 @@ export class DespachosPage implements OnInit {
taskslist:DailyWorkTask[];
despachoList:DailyWorkTask[];
deferimentoList:DailyWorkTask[];
taskList:tasksList[] = [];
taskType: string;
serialNumber:string;
totalDocs:any;
@@ -33,7 +39,10 @@ export class DespachosPage implements OnInit {
segment:string;
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
constructor(
loadedAttachments:any;
dicIndex = 0;
constructor (
private processes:ProcessesService,
private modalController: ModalController,
private alertService: AlertService,
@@ -150,5 +159,119 @@ export class DespachosPage implements OnInit {
});
}
// old
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 doc = this.loadedAttachments[ this.dicIndex];
task = {
serialNumber: doc.SourceId,
taskStartDate: doc.CreateDate,
isEvent: true,
workflowInstanceDataFields: {
FsId: doc.ApplicationId,
FolderID: null,
DocId: doc.SourceId,
Subject: doc.SourceName
},
}
const modal = await this.modalController.create({
component: ExpedientTaskModalPage,
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) {
const doc = this.loadedAttachments[ this.dicIndex];
task = {
serialNumber: doc.SourceId,
taskStartDate: doc.CreateDate,
isEvent: true,
workflowInstanceDataFields: {
FsId: doc.ApplicationId,
FolderID: null,
DocId: doc.SourceId,
Subject: doc.SourceName
},
}
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: task,
},
cssClass: classs,
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
async distartExpedientModal() {
const doc = this.taskList[ this.dicIndex];
console.log(doc, this.dicIndex, this.taskList)
const modal = await this.modalController.create({
component: DiscartExpedientModalPage,
componentProps: {
serialNumber: doc.serialNumber,
folderId: doc.workflowInstanceDataFields.FolderID,
action: 'complete',
},
cssClass: 'discart-expedient-modal',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then(res=>{
if(res['data']=='close'){
// this.close();
/* console.log('2Expedient Discard closed2');
this.close();
this.openMenu(); */
}
});
}
docIndex(index: number) {
this.dicIndex = index;
}
}
@@ -1,3 +1,5 @@
<ion-header class="ion-no-border">
<ion-toolbar class="header-toolbar">
<div class="main-header">
@@ -7,9 +9,9 @@
<ion-label class="title">Detalhes do Expediente</ion-label>
</div>
<div class="div-icon">
<ion-menu-button autoHide="false">
<ion-icon name="ellipsis-vertical-outline"></ion-icon>
</ion-menu-button>
<ion-menu-button autoHide="false">
<ion-icon name="ellipsis-vertical-outline"></ion-icon>
</ion-menu-button>
</div>
</div>
</div>
@@ -29,45 +31,6 @@
</ion-toolbar>
</ion-header> -->
<ion-menu autoHide="false" side="end" content-id="main-content">
<ion-header>
<ion-toolbar translucent>
<ion-title>Menu</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-item (click)="openExpedientActionsModal('0',fulltask)">
<ion-icon name="documents" slot="start"></ion-icon>
<ion-label>Efectuar Despacho</ion-label>
</ion-item>
<ion-item (click)="openExpedientActionsModal('1',fulltask)">
<ion-icon name="arrow-undo" slot="start"></ion-icon>
<ion-label>Pedido de Parecer</ion-label>
</ion-item>
<ion-item (click)="openExpedientActionsModal('2',fulltask)">
<ion-icon name="arrow-redo" slot="start"></ion-icon>
<ion-label>Pedido de Deferimento</ion-label>
</ion-item>
<ion-item (click)="openBookMeetingModal(task)">
<ion-icon name="calendar" slot="start"></ion-icon>
<ion-label>Marcar reunião</ion-label>
</ion-item>
<ion-item (click)="discartExpedient()">
<ion-icon name="trash" slot="start"></ion-icon>
<ion-label>Descartar</ion-label>
</ion-item>
<ion-item disabled>
<ion-icon name="paper-plane" slot="start"></ion-icon>
<ion-label>Enviar para pendentes</ion-label>
</ion-item>
</ion-list>
</ion-content>
</ion-menu>
<div class="ion-page" id="main-content">
<ion-menu-button></ion-menu-button>
</div>
<ion-content padding>
<div *ngIf="task">
<h3 class="h3-event-title">Detalhes do Expediente</h3>
@@ -1,3 +1,38 @@
<ion-menu autoHide="false" side="end" content-id="main-content" >
<ion-header>
<ion-toolbar translucent>
<ion-title>Menu PEDIDO</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-item (click)="openExpedientActionsModal('0',fulltask)">
<ion-icon name="documents" slot="start"></ion-icon>
<ion-label>Efectuar Despacho</ion-label>
</ion-item>
<ion-item (click)="openExpedientActionsModal('1',fulltask)">
<ion-icon name="arrow-undo" slot="start"></ion-icon>
<ion-label>Pedido de Parecer</ion-label>
</ion-item>
<!-- <ion-item (click)="openExpedientActionsModal('2',fulltask)">
<ion-icon name="arrow-redo" slot="start"></ion-icon>
<ion-label>Pedido de Deferimento</ion-label>
</ion-item> -->
<!-- <ion-item (click)="openBookMeetingModal(task)">
<ion-icon name="calendar" slot="start"></ion-icon>
<ion-label>Marcar reunião</ion-label>
</ion-item> -->
<ion-item (click)="distartExpedientModal()">
<ion-icon name="trash" slot="start"></ion-icon>
<ion-label>Descartar</ion-label>
</ion-item>
</ion-list>
</ion-content>
</ion-menu>
<div class="ion-page d-none" id="main-content">
<ion-menu-button></ion-menu-button>
</div>
<ion-header class="ion-no-border">
<div class="title">
<div class="thetitle"><ion-label >Pedidos</ion-label></div>
@@ -31,10 +66,13 @@
<div class="width-100" [ngSwitch]="segment">
<div *ngIf="parecerList">
<ion-list *ngSwitchCase="'parecer'">
<!-- *ngFor = "let task of parecerList; let i = index"
(click)="viewExpedientDetail(task.SerialNumber)" -->
<ion-item
class="expediente ion-no-padding"
*ngFor = "let task of parecerList"
(click)="viewPedidoDetail(task.SerialNumber)"
>
<!-- (click)="viewExpedientDetail(task.SerialNumber)" -->
<!-- [routerLink]="['/home/gabinete-digital/expediente',task.SerialNumber]" -->
@@ -47,8 +85,9 @@
<ion-label>{{task.Remetente}}</ion-label>
</div>
<div class="exp-icon">
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
<label></label>
<!-- <ion-menu-button (click)="docIndex(i)" style="width: 35px; height: 41px;" autoHide="false">
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
</ion-menu-button> -->
</div>
</div>
<div class="exp-bottom-detail">
@@ -77,8 +116,9 @@
<ion-label>{{task.Remetente}}</ion-label>
</div>
<div class="exp-icon">
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
<label></label>
<ion-menu-button (click)="docIndex(i)" style="width: 35px; height: 41px;" autoHide="false">
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
</ion-menu-button>
</div>
</div>
<div class="exp-bottom-detail">
@@ -2,7 +2,7 @@ import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angu
import { Router } from '@angular/router';
import { CalendarComponent } from 'ionic2-calendar';
import { DailyWorkTask } from '../../../models/dailyworktask.model';
import { DailyWorkTask, tasksList } from '../../../models/dailyworktask.model';
import { ProcessesService } from 'src/app/services/processes.service';
import { formatDate } from '@angular/common';
import { LoadingService } from 'src/app/services/loading.service';
@@ -10,6 +10,9 @@ import { ModalController, NavParams } from '@ionic/angular';
import { ExpedienteDetailPage } from 'src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page';
import { AlertService } from 'src/app/services/alert.service';
import { PedidoPage } from 'src/app/pages/gabinete-digital/pedidos/pedido/pedido.page';
import { BookMeetingModalPage } from 'src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page';
import { ExpedientTaskModalPage } from 'src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page';
import { DiscartExpedientModalPage } from 'src/app/pages/gabinete-digital/discart-expedient-modal/discart-expedient-modal.page';
@Component({
selector: 'app-pedidos',
@@ -24,6 +27,10 @@ export class PedidosPage implements OnInit {
taskslist:DailyWorkTask[];
parecerList:DailyWorkTask[];
parecerListResult:tasksList[] = [];
deferimentoListResult:tasksList[] = [];
deferimentoList:DailyWorkTask[];
taskType: string;
serialNumber:string;
@@ -32,6 +39,9 @@ export class PedidosPage implements OnInit {
@Input() segment:string;
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
loadedAttachments:any;
dicIndex = 0;
constructor(
private processes:ProcessesService,
private modalController: ModalController,
@@ -62,7 +72,9 @@ export class PedidosPage implements OnInit {
this.taskType = "Pedido de Parecer";
this.processes.GetTasksList("Pedido de Parecer", false).subscribe(result => {
console.log(result);
this.parecerListResult =result;
this.parecerList = new Array();
let res = result.reverse();
res.forEach(element => {
@@ -87,6 +99,8 @@ export class PedidosPage implements OnInit {
this.taskType = "Pedido de Deferimento";
this.processes.GetTasksList("Pedido de Deferimento", false).subscribe(result => {
console.log(result);
this.deferimentoListResult =result;
this.deferimentoList = new Array();
let res = result.reverse();
@@ -144,5 +158,141 @@ export class PedidosPage implements OnInit {
});
}
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'
}
let doc: tasksList;
if (this.segment == 'parecer') {
doc = this.parecerListResult[ this.dicIndex];
} else if (this.segment == 'deferimento') {
doc = this.deferimentoListResult[ this.dicIndex];
}
task = {
serialNumber: doc.serialNumber,
taskStartDate: doc.taskStartDate,
isEvent: true,
workflowInstanceDataFields: {
FsId: doc.workflowInstanceDataFields.SourceSecFsID,
FolderID: null,
DocId: doc.workflowInstanceDataFields.SourceID,
Subject: doc.workflowInstanceFolio
},
}
const modal = await this.modalController.create({
component: ExpedientTaskModalPage,
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 doc: tasksList;
if (this.segment == 'parecer') {
doc = this.parecerListResult[ this.dicIndex];
} else if (this.segment == 'deferimento') {
doc = this.deferimentoListResult[ this.dicIndex];
}
task = {
serialNumber: doc.serialNumber,
taskStartDate: doc.taskStartDate,
isEvent: true,
workflowInstanceDataFields: {
FsId: doc.workflowInstanceDataFields.SourceSecFsID,
FolderID: null,
DocId: doc.workflowInstanceDataFields.SourceID,
Subject: doc.workflowInstanceFolio
},
}
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: task,
},
cssClass: classs,
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
async distartExpedientModal(){
let doc: tasksList;
if (this.segment == 'parecer') {
doc = this.parecerListResult[ this.dicIndex];
} else if (this.segment == 'deferimento') {
doc = this.deferimentoListResult[ this.dicIndex];
}
const modal = await this.modalController.create({
component: DiscartExpedientModalPage,
componentProps: {
serialNumber: doc.serialNumber,
folderId: doc.workflowInstanceDataFields.FolderID,
action: 'complete',
},
cssClass: 'discart-expedient-modal',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then(res=>{
if(res['data']=='close'){
//this.close();
/* console.log('2Expedient Discard closed2');
this.close();
this.openMenu(); */
}
});
}
docIndex(index: number) {
this.dicIndex = index;
}
}
+17 -1
View File
@@ -41,17 +41,33 @@ export class HeaderPage implements OnInit {
async openSearch() {
let classs;
let classs, showSearchInput, type;
if(window.innerWidth < 1366) {
classs = 'modal modal-width-100 modal-padding-top'
showSearchInput = true
} else {
classs = 'modal modal-width-100 modal-padding-top modal-desktop-shadow modal-desktop-remove-background'
showSearchInput = false
}
if(window.location.pathname == '/home/agenda') {
type = "Agenda"
} else if (window.location.pathname =='/home/gabinete-digital') {
type = "AccoesPresidenciais & ArquivoDespachoElect"
} else if (window.location.pathname == '/home/publications') {
type = "AccoesPresidenciais"
}
const modal = await this.modalController.create({
component: SearchPage,
cssClass: classs,
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect',
showSearchInput: showSearchInput,
select: false
}
});
return await modal.present();
@@ -45,7 +45,8 @@ export class ChatOptionsPopoverPage implements OnInit {
component: SearchPage,
cssClass: 'group-messages modal-desktop search-modal search-modal-to-desktop',
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect'
type: 'AccoesPresidenciais & ArquivoDespachoElect',
select: true
}
});
await modal.present();
@@ -91,10 +91,8 @@
}
.back-icon{
width: 37px;
float: left;
font-size: 35px;
overflow: auto;
}
.div-title{
@@ -145,8 +145,8 @@ export class ViewPublicationsPage implements OnInit {
componentProps:{
publicationId: publicationId,
},
cssClass: 'publication-detail',
backdropDismiss: false
cssClass: 'publication-detail modal modal-desktop',
//backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then(()=>{