diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 8def4f516..a6421a77c 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -55,6 +55,10 @@ const routes: Routes = [ path: 'create-process', loadChildren: () => import('./modals/create-process/create-process.module').then( m => m.CreateProcessPageModule) }, + { + path: 'pendentes', + loadChildren: () => import('./shared/gabinete-digital/pendentes/pendentes.module').then( m => m.PendentesPageModule) + }, /* { path: 'chat', diff --git a/src/app/models/dailyworktask.model.ts b/src/app/models/dailyworktask.model.ts index 1f1dc1600..071179a20 100644 --- a/src/app/models/dailyworktask.model.ts +++ b/src/app/models/dailyworktask.model.ts @@ -6,4 +6,5 @@ export class DailyWorkTask{ DocumentURL: string; Remetente:string; DocumentsQty:any; + WorkflowName:string; } \ No newline at end of file diff --git a/src/app/pages/gabinete-digital/expediente/expediente.page.ts b/src/app/pages/gabinete-digital/expediente/expediente.page.ts index 3dcf6b9c2..c07c0ed9c 100644 --- a/src/app/pages/gabinete-digital/expediente/expediente.page.ts +++ b/src/app/pages/gabinete-digital/expediente/expediente.page.ts @@ -53,6 +53,7 @@ export class ExpedientePage implements OnInit { "DocumentURL": element.workflowInstanceDataFields.ViewerRequest, "Remetente": element.workflowInstanceDataFields.Remetente, "DocumentsQty": 0, + "WorkflowName": element.workflowDisplayName, } this.taskslist.push(task); }); diff --git a/src/app/pages/gabinete-digital/gabinete-digital.module.ts b/src/app/pages/gabinete-digital/gabinete-digital.module.ts index 78f640dfd..3c1ec4aa9 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.module.ts +++ b/src/app/pages/gabinete-digital/gabinete-digital.module.ts @@ -14,6 +14,7 @@ import { EmptyContainerPage } from 'src/app/shared/empty-container/empty-contain import { EventsToApprovePage } from 'src/app/shared/gabinete-digital/events-to-approve/events-to-approve.page'; import { ExpedientePage } from 'src/app/shared/gabinete-digital/expediente/expediente.page'; import { ExpedientsPage } from 'src/app/shared/gabinete-digital/expedients/expedients.page'; +import { PendentesPage } from 'src/app/shared/gabinete-digital/pendentes/pendentes.page'; import { PedidosPage } from 'src/app/shared/gabinete-digital/pedidos/pedidos.page'; import { DespachosPage } from 'src/app/shared/gabinete-digital/despachos/despachos.page'; @@ -36,6 +37,7 @@ import { DespachosPage } from 'src/app/shared/gabinete-digital/despachos/despach ExpedientsPage, PedidosPage, DespachosPage, + PendentesPage, ], entryComponents: [ EmptyContainerPage, @@ -44,6 +46,7 @@ import { DespachosPage } from 'src/app/shared/gabinete-digital/despachos/despach ExpedientsPage, PedidosPage, DespachosPage, + PendentesPage, ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.html b/src/app/pages/gabinete-digital/gabinete-digital.page.html index 74654ef82..5b6381d4d 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.html +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.html @@ -36,13 +36,13 @@

{{count_exp_dailywork}} Documentos

-
+

Pendentes

-

- Documentos

+

{{this.count_desp_pending + count_def_pending + count_par_pending}} Documentos

@@ -139,6 +139,7 @@ +
diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.ts b/src/app/pages/gabinete-digital/gabinete-digital.page.ts index e0d3efae8..4ff3c4717 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.ts +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.ts @@ -19,9 +19,12 @@ export class GabineteDigitalPage implements OnInit { public profile:string; count_exp_dailywork=0; - count_desp_dailywork=0; - count_par_dailywork=0; - count_def_dailywork=0; + count_desp_dailywork=0; + count_desp_pending=0; + count_par_dailywork=0; + count_par_pending=0; + count_def_dailywork=0; + count_def_pending=0; count_exp_pp : string; count_exp_pd : string; count_dip_apr : string; @@ -42,6 +45,7 @@ export class GabineteDigitalPage implements OnInit { showExpedients = true; showPedidos = false; showDespachos = false; + showPendentes = false; showExpedientDetail = false; emptyTextDescription = 'Sem opção selecionada'; @@ -118,26 +122,35 @@ export class GabineteDigitalPage implements OnInit { this.showExpedients = false; this.showPedidos = false; this.showDespachos = false; + this.showPendentes = false; this.showExpedientDetail = false; } LoadCounts() { this.showLoader = true; - this.processesbackend.GetTasksList("Expediente", true).subscribe(res =>{ + this.processesbackend.GetTasksList("Expediente", false).subscribe(res =>{ this.showLoader = false; - this.count_exp_dailywork = res; + this.count_exp_dailywork = Object.keys(res).length; + console.log(res); + }); - this.processesbackend.GetTasksList("Despacho", true).subscribe(res =>{ + this.processesbackend.GetTasksList("Despacho", false).subscribe(res =>{ this.showLoader = false; - this.count_desp_dailywork = res; + this.count_desp_dailywork = Object.keys(res).length; + let pendingList = res.filter(data => data.workflowInstanceDataFields.Status == "Pending"); + this.count_desp_pending = Object.keys(pendingList).length; }); - this.processesbackend.GetTasksList("Pedido de Parecer", true).subscribe(res =>{ + this.processesbackend.GetTasksList("Pedido de Parecer", false).subscribe(res =>{ this.showLoader = false; - this.count_par_dailywork = res; + this.count_par_dailywork = Object.keys(res).length; + let pendingList = res.filter(data => data.workflowInstanceDataFields.Status == "Pending"); + this.count_par_pending = Object.keys(pendingList).length; }); - this.processesbackend.GetTasksList("Pedido de Deferimento", true).subscribe(res =>{ + this.processesbackend.GetTasksList("Pedido de Deferimento", false).subscribe(res =>{ this.showLoader = false; - this.count_def_dailywork = res; + this.count_def_dailywork = Object.keys(res).length; + let pendingList = res.filter(data => data.workflowInstanceDataFields.Status == "Pending"); + this.count_def_pending = Object.keys(pendingList).length; }); this.processesbackend.GetToApprovedEvents('PR','true').subscribe(res=>{ this.count_ev_pr = res; @@ -244,6 +257,16 @@ export class GabineteDigitalPage implements OnInit { } } + openPendentesPage(segment:string){ + this.closeAllDesktopComponents(); + if( window.innerWidth <= 1024){ + this.openExpedientList(); + } + else{ + this.showPendentes = true; + } + } + async openExpedientList(){ this.closeAllDesktopComponent(); diff --git a/src/app/shared/gabinete-digital/despachos/despachos.page.ts b/src/app/shared/gabinete-digital/despachos/despachos.page.ts index 23120c67c..e49f50aeb 100644 --- a/src/app/shared/gabinete-digital/despachos/despachos.page.ts +++ b/src/app/shared/gabinete-digital/despachos/despachos.page.ts @@ -88,6 +88,7 @@ export class DespachosPage implements OnInit { "Remetente": element.workflowInstanceDataFields.Remetente, "DocumentsQty": this.totalDocs, "DocId": element.workflowInstanceDataFields.DocId, + "WorkflowName": element.workflowDisplayName, } this.despachoList.push(task); }, @@ -101,6 +102,7 @@ export class DespachosPage implements OnInit { "Remetente": element.workflowInstanceDataFields.Remetente, "DocumentsQty": 0, "DocId": element.workflowInstanceDataFields.DocId, + "WorkflowName": element.workflowDisplayName, } this.despachoList.push(task); diff --git a/src/app/shared/gabinete-digital/expedients/expedients.page.ts b/src/app/shared/gabinete-digital/expedients/expedients.page.ts index 3d0e36fe5..be9e027e8 100644 --- a/src/app/shared/gabinete-digital/expedients/expedients.page.ts +++ b/src/app/shared/gabinete-digital/expedients/expedients.page.ts @@ -72,6 +72,7 @@ export class ExpedientsPage implements OnInit { "DocumentURL": element.workflowInstanceDataFields.ViewerRequest, "Remetente": element.workflowInstanceDataFields.Remetente, "DocumentsQty": 0, + "WorkflowName": element.workflowDisplayName, } this.taskslist.push(task); }); @@ -92,6 +93,7 @@ export class ExpedientsPage implements OnInit { "DocumentURL": element.workflowInstanceDataFields.ViewerRequest, "Remetente": element.workflowInstanceDataFields.Remetente, "DocumentsQty": 0, + "WorkflowName": element.workflowDisplayName, } this.taskslist.push(task); }); diff --git a/src/app/shared/gabinete-digital/pedidos/pedidos.page.ts b/src/app/shared/gabinete-digital/pedidos/pedidos.page.ts index 22e96c06e..b7f025d04 100644 --- a/src/app/shared/gabinete-digital/pedidos/pedidos.page.ts +++ b/src/app/shared/gabinete-digital/pedidos/pedidos.page.ts @@ -75,6 +75,7 @@ export class PedidosPage implements OnInit { "Remetente": element.workflowInstanceDataFields.Remetente, "DocumentsQty": 0, "DocId": element.workflowInstanceDataFields.DocIdDiferimento, + "WorkflowName": element.workflowDisplayName, } this.parecerList.push(task); }); @@ -99,6 +100,7 @@ export class PedidosPage implements OnInit { "Remetente": element.workflowInstanceDataFields.Remetente, "DocumentsQty": 0, "DocId": element.workflowInstanceDataFields.DocIdDiferimento, + "WorkflowName": element.workflowDisplayName, } this.deferimentoList.push(task); }); diff --git a/src/app/shared/gabinete-digital/pendentes/pendentes-routing.module.ts b/src/app/shared/gabinete-digital/pendentes/pendentes-routing.module.ts new file mode 100644 index 000000000..0825107be --- /dev/null +++ b/src/app/shared/gabinete-digital/pendentes/pendentes-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { PendentesPage } from './pendentes.page'; + +const routes: Routes = [ + { + path: '', + component: PendentesPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class PendentesPageRoutingModule {} diff --git a/src/app/shared/gabinete-digital/pendentes/pendentes.module.ts b/src/app/shared/gabinete-digital/pendentes/pendentes.module.ts new file mode 100644 index 000000000..71c62b5c3 --- /dev/null +++ b/src/app/shared/gabinete-digital/pendentes/pendentes.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { PendentesPageRoutingModule } from './pendentes-routing.module'; + +import { PendentesPage } from './pendentes.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + PendentesPageRoutingModule + ], + declarations: [PendentesPage] +}) +export class PendentesPageModule {} diff --git a/src/app/shared/gabinete-digital/pendentes/pendentes.page.html b/src/app/shared/gabinete-digital/pendentes/pendentes.page.html new file mode 100644 index 000000000..1d06ff030 --- /dev/null +++ b/src/app/shared/gabinete-digital/pendentes/pendentes.page.html @@ -0,0 +1,81 @@ + +
+
Pendentes
+
+ +
+
+
+ + + + + + +
+
+ + + +
+
+
+ {{ task.CreateDate | date: 'dd-MM-yy' }} +
+
+ {{task.Senders}} +
+
+ {{task.WorkflowName}} +
+
+ + +
+
+
+ {{ task.Folio }} +
+
+
+
+ +
+
+
+ + + + + + + +

+

+

+
+
+ + + + + +

+

+

+
+
+
+
+
+ diff --git a/src/app/shared/gabinete-digital/pendentes/pendentes.page.scss b/src/app/shared/gabinete-digital/pendentes/pendentes.page.scss new file mode 100644 index 000000000..b56456084 --- /dev/null +++ b/src/app/shared/gabinete-digital/pendentes/pendentes.page.scss @@ -0,0 +1,191 @@ +@import '~src/function.scss'; +/* CONTENT */ +:host{ + padding: 30px 20px 0 20px !important; + margin: 0; +} +.title{ + font-family: Roboto; + font-size: 25px; + color:#000; + overflow: auto; + + .thetitle{ + width: fit-content; + float: left; + } + .theicon{ + width: fit-content; + float: right; + } + } +.item-list-small{ + font-size: 11px; + overflow: hidden; + } + .ion-item-class{ + padding: 0; + + } + .label-text{ + width: 100%; + padding: 0; + margin: 0; + } +//DIV +ion-item{ + --background: none; +} +.item { + //border-radius: 15px; + //box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.07); + //Sborder: solid 1px #e9e9e9; + background-color: var(--white); + margin: 0 auto; + //padding: 10px; + margin-bottom: 10px; + overflow: hidden; + } +.div-content-expediente{ + width: 100%; + float: left; + border-left: 3px solid #dae3f3; + padding:5px 5px 15px 5px; + margin: 10px 0 10px 0; + background: #dae3f3; + border-radius: 20px; +} +.div-content-pendentes{ + width: 100%; + float: left; + border-left: 3px solid #d9d9d9; + padding: 5px; +} + .div-content-expediente h3, .div-content-pendentes h3{ + margin: 0; + padding: 0; + font-size: 14pt; + width: 100%; + } + .div-icon{ + width: 10%; + font-size: 20px; + float: left; + color: #808080; + } + .div-icon ion-icon{ + display: block; + margin: 0 auto; + + } + .div-content-expediente p, .div-content-pendentes p{ + font-size: 14pt; + color: rgb(94, 92, 92); + padding: 0; + margin: 0; + } + .span-left{ + /* border: 1px solid red; */ + float: left; + font-size: 12px; + padding-left: 18px; + } + .span-right{ + /* border: 1px solid blue; */ + text-align: right; + float: right; + font-size: 12px; + padding-right: 18px; +} + +/* New CSS */ +.expediente{ + padding-top: 10px; +} +.exp-list-item{ + //width: 368px; + overflow: auto; + /* border-bottom: 1px solid gray; */ + margin: 10px auto; +} +.exp-top-detail{ + width: 100%; + overflow: auto; + +} +.exp-date{ + width: auto; + font-family: Roboto; + font-size: 13px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: normal; + letter-spacing: normal; + color: #797979; + float: left; +} +.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; +} +} +.exp-remetente{ + //width: 200px; + font-family: Roboto; + font-size: 13px; + font-weight: normal; + color: #000000; + float: left; + margin-left: 16px; + +} +.exp-icon{ + width: 45px; + float: right; + font-size: 13px; +} +.exp-icon ion-icon{ + font-size: 25px; + color: #42b9fe; +} +.exp-bottom-detail{ + float: left; + font-family: Roboto; + font-size: 16px; + font-weight: 700; + color: #0d89d1; +} +.div-top-header{ + width: 400px; + margin: 6px auto; + background-color: #0782c9; + overflow: auto; +} +.div-search{ + font-size: 45px; + float: left; + margin: 0 0 0 10px +} +.div-logo{ + background: transparent; + width: 150px; + margin: 2.5px 0 2.5px 71px; + float: left; +} +.div-logo img{ + width: 100%; +} +.div-profile{ + font-size: 45px; + float: right; + margin-right: 10px; +} \ No newline at end of file diff --git a/src/app/shared/gabinete-digital/pendentes/pendentes.page.spec.ts b/src/app/shared/gabinete-digital/pendentes/pendentes.page.spec.ts new file mode 100644 index 000000000..5ead3b0cf --- /dev/null +++ b/src/app/shared/gabinete-digital/pendentes/pendentes.page.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { PendentesPage } from './pendentes.page'; + +describe('PendentesPage', () => { + let component: PendentesPage; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ PendentesPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(PendentesPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/gabinete-digital/pendentes/pendentes.page.ts b/src/app/shared/gabinete-digital/pendentes/pendentes.page.ts new file mode 100644 index 000000000..5816eb6ae --- /dev/null +++ b/src/app/shared/gabinete-digital/pendentes/pendentes.page.ts @@ -0,0 +1,177 @@ +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 { ProcessesService } from 'src/app/services/processes.service'; +import { formatDate } from '@angular/common'; +import { ModalController, NavParams } from '@ionic/angular'; +import { AlertService } from 'src/app/services/alert.service'; +import { DespachoPage } from 'src/app/pages/gabinete-digital/despachos/despacho/despacho.page'; +import { AuthService } from 'src/app/services/auth.service'; +import { PedidoPage } from 'src/app/pages/gabinete-digital/pedidos/pedido/pedido.page'; + + +@Component({ + selector: 'app-pendentes', + templateUrl: './pendentes.page.html', + styleUrls: ['./pendentes.page.scss'], +}) +export class PendentesPage implements OnInit { + @ViewChild(CalendarComponent) myCal: CalendarComponent; + + pendentesList:DailyWorkTask[]; + taskType: string; + serialNumber:string; + totalDocs:any; + + @Input() profile:string; + segment:string; + @Output() openExpedientDetail:EventEmitter = new EventEmitter(); + + constructor( + private processes:ProcessesService, + private modalController: ModalController, + private alertService: AlertService, + private authService: AuthService, + ) { + this.profile = 'mdgpr'; + } + + ngOnInit() { + //Inicializar segment + this.segment = "despachos"; + this.LoadList(); + this.authService.userData$.subscribe((res:any)=>{ + console.log(res); + }); + } + segmentChanged(ev: any) { + this.LoadList(); + } + + notImplemented(){ + this.alertService.presentAlert('Funcionalidade em desenvolvimento'); + } + + openExpedientDetailPage(data){ + console.log(data); + this.openExpedientDetail.emit(data); + } + + LoadList(){ + this.processes.GetTasksList("Despacho", false).subscribe(despachos => { + //ParecerList + this.processes.GetTasksList("Pedido de Parecer", false).subscribe(pareceres => { + //DeferimentoList + this.processes.GetTasksList("Pedido de Deferimento", false).subscribe(deferimentos => { + this.pendentesList = new Array(); + //PendentesList + let pendentes = despachos.concat(pareceres, deferimentos).reverse().filter(data => data.workflowInstanceDataFields.Status == "Pending"); + pendentes.forEach(element => { + let DocId = element.workflowInstanceDataFields.FolderID; + this.processes.GetDocumentDetails(DocId, '361').subscribe(res=>{ + this.totalDocs = res.DocumentsTotal; + console.log(res.DocumentsTotal); + let task = { + "SerialNumber": element.serialNumber, + "Folio": element.workflowInstanceDataFields.Subject, + "Senders": element.workflowInstanceDataFields.Sender, + "CreateDate": formatDate(new Date(element.taskStartDate), 'yyyy-MM-dd HH:mm', 'pt'), + "DocumentURL": element.workflowInstanceDataFields.ViewerRequest, + "Remetente": element.workflowInstanceDataFields.Remetente, + "DocumentsQty": this.totalDocs, + "DocId": element.workflowInstanceDataFields.DocId, + "WorkflowName": element.workflowDisplayName, + } + this.pendentesList.push(task); + }, + (error)=>{ + let task = { + "SerialNumber": element.serialNumber, + "Folio": element.workflowInstanceDataFields.Subject, + "Senders": element.workflowInstanceDataFields.Sender, + "CreateDate": formatDate(new Date(element.taskStartDate), 'yyyy-MM-dd HH:mm', 'pt'), + "DocumentURL": element.workflowInstanceDataFields.ViewerRequest, + "Remetente": element.workflowInstanceDataFields.Remetente, + "DocumentsQty": 0, + "DocId": element.workflowInstanceDataFields.DocId, + "WorkflowName": element.workflowDisplayName, + } + this.pendentesList.push(task); + }); + }); + console.log(pendentes); + console.log(this.pendentesList); + });//Fim deferimento + });//Fim parecer + });//Fim despacho + } + + doRefresh(event) { + this.LoadList(); + + setTimeout(() => { + //event.target.complete(); + }, 2000); + } + + async viewTaskDetails(serialNumber:string, workflowName:string) { + console.log(this.profile); + if(workflowName == 'Despacho'){ + this.openDespacho(serialNumber); + } + else if(workflowName == 'Pedido de Parecer' || workflowName == 'Pedido de Deferimento'){ + this.openPedido(serialNumber); + } + + } + + async openDespacho(serialNumber:string){ + let classs; + if( window.innerWidth <= 800){ + classs = 'modal' + } else { + classs = 'modal modal-desktop' + } + const modal = await this.modalController.create({ + component: DespachoPage, + componentProps:{ + enterAnimation: "", + serialNumber: serialNumber, + profile: this.profile, + }, + cssClass: classs, + }); + await modal.present(); + modal.onDidDismiss().then((res)=>{ + console.log('refresh list'); + this.LoadList(); + }); + } + + async openPedido(serialNumber:string){ + let classs; + if( window.innerWidth <= 800){ + classs = 'modal' + } else { + classs = 'modal modal-desktop' + } + const modal = await this.modalController.create({ + component: PedidoPage, + componentProps:{ + enterAnimation: "", + serialNumber: serialNumber, + profile: this.profile, + }, + cssClass: classs, + }); + await modal.present(); + modal.onDidDismiss().then((res)=>{ + console.log('refresh list'); + this.LoadList(); + }); + } + + } + \ No newline at end of file