mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-21 05:45:50 +00:00
Merge branch 'developer' of https://bitbucket.org/equilibriumito/gabinete-digital into developer
This commit is contained in:
@@ -4,7 +4,6 @@ import { EventoAprovacaoStore } from 'src/app/store/eventoaprovacao-store.servic
|
|||||||
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||||
import { PendentesStore } from 'src/app/store/pendestes-store.service';
|
import { PendentesStore } from 'src/app/store/pendestes-store.service';
|
||||||
import { PedidosStore } from 'src/app/store/pedidos-store.service';
|
import { PedidosStore } from 'src/app/store/pedidos-store.service';
|
||||||
import { ExpedienteprStore } from 'src/app/store/expedientepr-store.service';
|
|
||||||
import { DespachosprStore } from 'src/app/store/despachospr-store.service';
|
import { DespachosprStore } from 'src/app/store/despachospr-store.service';
|
||||||
import { DeplomasStore } from '../store/deplomas.service';
|
import { DeplomasStore } from '../store/deplomas.service';
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
|
import { CustomTaskPipe } from '../pipes/custom-task.pipe';
|
||||||
import { ProcessesService } from '../services/processes.service';
|
import { ProcessesService } from '../services/processes.service';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
@@ -20,6 +21,8 @@ export class DeplomaService {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
customTaskPipe = new CustomTaskPipe()
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private processes: ProcessesService,
|
private processes: ProcessesService,
|
||||||
) { }
|
) { }
|
||||||
@@ -83,4 +86,9 @@ export class DeplomaService {
|
|||||||
return this.processes.CompleteTask(body)
|
return this.processes.CompleteTask(body)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async getList() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
|
import { customTask, fullTask } from '../models/dailyworktask.model';
|
||||||
import { AttachmentList } from '../models/Excludetask';
|
import { AttachmentList } from '../models/Excludetask';
|
||||||
import { PermissionService } from '../OtherService/permission.service';
|
import { PermissionService } from '../OtherService/permission.service';
|
||||||
|
import { CustomTaskPipe } from '../pipes/custom-task.pipe';
|
||||||
import { ProcessesService } from '../services/processes.service';
|
import { ProcessesService } from '../services/processes.service';
|
||||||
|
import { DespachoStore } from '../store/despacho-store.service';
|
||||||
|
import { LoaderService } from 'src/app/store/loader.service'
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
})
|
})
|
||||||
@@ -20,10 +23,14 @@ export class DespachoService {
|
|||||||
'Tarefa do Despacho': 'Tarefa de Despacho' | 'Concluir' | 'rexecucao'
|
'Tarefa do Despacho': 'Tarefa de Despacho' | 'Concluir' | 'rexecucao'
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(
|
customTaskPipe = new CustomTaskPipe()
|
||||||
|
despachoStore = DespachoStore;
|
||||||
|
|
||||||
|
constructor(
|
||||||
private processes: ProcessesService,
|
private processes: ProcessesService,
|
||||||
public p: PermissionService
|
public p: PermissionService,
|
||||||
) { }
|
public LoaderService: LoaderService
|
||||||
|
) { }
|
||||||
|
|
||||||
arquivar(note:string, documents:AttachmentList, serialnumber) {
|
arquivar(note:string, documents:AttachmentList, serialnumber) {
|
||||||
|
|
||||||
@@ -181,4 +188,46 @@ export class DespachoService {
|
|||||||
return this.processes.CompleteTask(body)
|
return this.processes.CompleteTask(body)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async getList({updateStore = false}): Promise<customTask[]> {
|
||||||
|
|
||||||
|
this.LoaderService.push({})
|
||||||
|
|
||||||
|
let result: fullTask[] = []
|
||||||
|
|
||||||
|
try {
|
||||||
|
result = await this.processes.GetTasksList("Despacho", false).toPromise();
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
this.LoaderService.pop({})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
result = result.filter(data => data.workflowInstanceDataFields.Status == "Active")
|
||||||
|
|
||||||
|
let despachoList: customTask[] = new Array();
|
||||||
|
|
||||||
|
result.forEach((element, index) => {
|
||||||
|
|
||||||
|
let task: customTask = this.customTaskPipe.transform(element);
|
||||||
|
despachoList.push(task);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
despachoList = this.sortArrayISODate(despachoList).reverse();
|
||||||
|
|
||||||
|
if(updateStore) {
|
||||||
|
this.despachoStore.reset(despachoList);
|
||||||
|
}
|
||||||
|
|
||||||
|
return despachoList
|
||||||
|
}
|
||||||
|
|
||||||
|
sortArrayISODate(myArray: any) {
|
||||||
|
return myArray.sort(function(a, b) {
|
||||||
|
return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
<ion-tab-button tab="events">
|
<ion-tab-button tab="events">
|
||||||
<!-- <ion-icon name="home"></ion-icon> -->
|
<!-- <ion-icon name="home"></ion-icon> -->
|
||||||
<ion-icon class="nav-icon" src="assets/images/icons-nav-home.svg"></ion-icon>
|
<ion-icon class="nav-icon" src="assets/images/icons-nav-home.svg"></ion-icon>
|
||||||
<ion-badge color="danger">{{toDayEventStorage.eventsList.length}}</ion-badge>
|
<ion-badge color="danger">{{toDayEventStorage.eventsList.length + expedienteGdStore.count}}</ion-badge>
|
||||||
<ion-label>Início</ion-label>
|
<ion-label>Início</ion-label>
|
||||||
</ion-tab-button>
|
</ion-tab-button>
|
||||||
|
|
||||||
<ion-tab-button tab="agenda">
|
<ion-tab-button tab="agenda">
|
||||||
<!-- <ion-icon name="calendar"></ion-icon> -->
|
<!-- <ion-icon name="calendar"></ion-icon> -->
|
||||||
<ion-icon class="nav-icon" src="assets/images/icons-nav-calendar.svg"></ion-icon>
|
<ion-icon class="nav-icon" src="assets/images/icons-nav-calendar.svg"></ion-icon>
|
||||||
<ion-label class="overflow-visible">Agenda</ion-label>
|
<ion-label style="margin-bottom: 2px;" class="overflow-visible">Agenda</ion-label>
|
||||||
</ion-tab-button>
|
</ion-tab-button>
|
||||||
<ion-tab-button tab="gabinete-digital">
|
<ion-tab-button tab="gabinete-digital">
|
||||||
<!-- <ion-icon name="file-tray-stacked"></ion-icon> -->
|
<!-- <ion-icon name="file-tray-stacked"></ion-icon> -->
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
</ion-tab-button>
|
</ion-tab-button>
|
||||||
<ion-tab-button tab="publications">
|
<ion-tab-button tab="publications">
|
||||||
<ion-icon class="nav-icon" src="assets/images/icons-nav-actions.svg"></ion-icon>
|
<ion-icon class="nav-icon" src="assets/images/icons-nav-actions.svg"></ion-icon>
|
||||||
<ion-label class="overflow-visible">Ações</ion-label>
|
<ion-label style="margin-bottom: 2px;" class="overflow-visible">Ações</ion-label>
|
||||||
</ion-tab-button>
|
</ion-tab-button>
|
||||||
<ion-tab-button tab="chat">
|
<ion-tab-button tab="chat">
|
||||||
<ion-icon class="nav-icon" src="assets/images/icons-nav-chat-inactive.svg"></ion-icon>
|
<ion-icon class="nav-icon" src="assets/images/icons-nav-chat-inactive.svg"></ion-icon>
|
||||||
|
|||||||
+17
-10
@@ -13,6 +13,8 @@ import { DocumentCounterService } from 'src/app/OtherService/document-counter.se
|
|||||||
import { PermissionService } from '../OtherService/permission.service';
|
import { PermissionService } from '../OtherService/permission.service';
|
||||||
import { TotalDocumentStore } from '../store/total-document.service';
|
import { TotalDocumentStore } from '../store/total-document.service';
|
||||||
import { connection } from '../services/socket/synchro.service';
|
import { connection } from '../services/socket/synchro.service';
|
||||||
|
import { DespachoService } from '../Rules/despacho.service';
|
||||||
|
import { ExpedienteGdStore } from '../store/expedientegd-store.service';
|
||||||
// import { NetworkService } from '../services/network.service';
|
// import { NetworkService } from '../services/network.service';
|
||||||
|
|
||||||
|
|
||||||
@@ -45,6 +47,7 @@ export class HomePage implements OnInit {
|
|||||||
|
|
||||||
toDayEventStorage = ToDayEventStorage
|
toDayEventStorage = ToDayEventStorage
|
||||||
totalDocumentStore = TotalDocumentStore
|
totalDocumentStore = TotalDocumentStore
|
||||||
|
expedienteGdStore = ExpedienteGdStore
|
||||||
|
|
||||||
adding: "intervenient" | "CC" = "intervenient";
|
adding: "intervenient" | "CC" = "intervenient";
|
||||||
mobileComponent = {
|
mobileComponent = {
|
||||||
@@ -69,7 +72,8 @@ export class HomePage implements OnInit {
|
|||||||
|
|
||||||
connection = connection
|
connection = connection
|
||||||
|
|
||||||
constructor(private zone: NgZone,
|
constructor(
|
||||||
|
private zone: NgZone,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
public modalCtrl: AlertController,
|
public modalCtrl: AlertController,
|
||||||
private notificationsService: NotificationsService,
|
private notificationsService: NotificationsService,
|
||||||
@@ -77,12 +81,15 @@ export class HomePage implements OnInit {
|
|||||||
private activeroute: ActivatedRoute,
|
private activeroute: ActivatedRoute,
|
||||||
private webnotification: WebNotificationsService,
|
private webnotification: WebNotificationsService,
|
||||||
public p: PermissionService,
|
public p: PermissionService,
|
||||||
public documentCounterService: DocumentCounterService) {
|
public documentCounterService: DocumentCounterService,
|
||||||
|
private despachoRule: DespachoService) {
|
||||||
|
|
||||||
this.router.events.subscribe((val) => {
|
this.router.events.subscribe((val) => {
|
||||||
document.querySelectorAll('ion-modal').forEach((e: any) => e.remove())
|
document.querySelectorAll('ion-modal').forEach((e: any) => e.remove())
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.updateList()
|
||||||
|
|
||||||
|
|
||||||
// if (typeof Worker !== 'undefined') {
|
// if (typeof Worker !== 'undefined') {
|
||||||
// // Create a new
|
// // Create a new
|
||||||
@@ -100,14 +107,6 @@ export class HomePage implements OnInit {
|
|||||||
//this.folderId = this.navParams.get('folderId');
|
//this.folderId = this.navParams.get('folderId');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
this.notificationsService.registerCallback(
|
|
||||||
'Create Depacho',
|
|
||||||
() =>{
|
|
||||||
this.refreshing()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshing() {
|
refreshing() {
|
||||||
@@ -164,8 +163,16 @@ export class HomePage implements OnInit {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
updateList() {
|
||||||
|
|
||||||
|
this.notificationsService.registerCallback(
|
||||||
|
'despachos',
|
||||||
|
() => {
|
||||||
|
this.despachoRule.getList({updateStore: true})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -287,6 +287,8 @@ export class CreateProcessPage implements OnInit {
|
|||||||
this.modalController.dismiss();
|
this.modalController.dismiss();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.toastService.badRequest('Processo não efectuado');
|
this.toastService.badRequest('Processo não efectuado');
|
||||||
|
|
||||||
|
} finally {
|
||||||
loader.remove()
|
loader.remove()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<ion-content class=" bg-blue">
|
<ion-header class=" bg-blue ion-no-border">
|
||||||
|
|
||||||
<div class="profile-header width-100">
|
<div class="profile-header width-100">
|
||||||
<div class="div-logo d-md-none">
|
<div class="div-logo d-md-none">
|
||||||
<div class="logo height-fit-content">
|
<div class="logo height-fit-content">
|
||||||
@@ -10,9 +9,10 @@
|
|||||||
<ion-icon class="icon" src="assets/images/icons-search-close.svg"></ion-icon>
|
<ion-icon class="icon" src="assets/images/icons-search-close.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</ion-header>
|
||||||
|
<ion-header class=" bg-blue ion-no-border">
|
||||||
<div class="profile-content">
|
<div class="profile-content">
|
||||||
|
|
||||||
<div class="profile-title d-flex justify-content-center width-100">
|
<div class="profile-title d-flex justify-content-center width-100">
|
||||||
<ion-label >{{loggeduser.RoleDescription}}</ion-label>
|
<ion-label >{{loggeduser.RoleDescription}}</ion-label>
|
||||||
</div>
|
</div>
|
||||||
@@ -28,39 +28,46 @@
|
|||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
</div>
|
</div>
|
||||||
<div class="line"></div>
|
<div class="line"></div>
|
||||||
</div>
|
|
||||||
<div class="notifications-content">
|
|
||||||
<ion-label>{{notificationdata.length}} novas notificações</ion-label>
|
<ion-label>{{notificationdata.length}} novas notificações</ion-label>
|
||||||
<ion-list>
|
</div>
|
||||||
<div class="item cursor-pointer ion-no-padding ion-no-margin" lines="none"
|
</ion-header>
|
||||||
*ngFor = "let item of notificationdata; let i = index"
|
|
||||||
(click)="notificatinsRoutes(item.index,item.Service,item.Object,item.IdObject,item.FolderId)"
|
<ion-content class=" bg-blue">
|
||||||
>
|
<div class="d-flex flex-column height-100 overflow-auto-y">
|
||||||
<div class="item-conten-{{item.Service}}-{{item.TypeAgenda}}-{{item.Role}}">
|
|
||||||
<div class="notification-item">
|
<div class="notifications-content">
|
||||||
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'agenda'" src="assets/images/icons-default-agenda.svg" >
|
|
||||||
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'gabinete-digital'" src="assets/images/icons-correspondencias.svg" >
|
<ion-list>
|
||||||
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'accoes'" src="assets/images/icons-nav-accoes-active.svg" >
|
<div class="item cursor-pointer ion-no-padding ion-no-margin" lines="none"
|
||||||
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'chat'" src="assets/images/icons-nav-agenda-active.svg" >
|
*ngFor = "let item of notificationdata; let i = index"
|
||||||
|
(click)="notificatinsRoutes(item.index,item.Service,item.Object,item.IdObject,item.FolderId)"
|
||||||
|
>
|
||||||
|
<div class="item-conten-{{item.Service}}-{{item.TypeAgenda}}-{{item.Role}}">
|
||||||
|
<div class="notification-item">
|
||||||
|
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'agenda'" src="assets/images/icons-default-agenda.svg" >
|
||||||
|
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'gabinete-digital'" src="assets/images/icons-correspondencias.svg" >
|
||||||
|
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'accoes'" src="assets/images/icons-nav-accoes-active.svg" >
|
||||||
|
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'chat'" src="assets/images/icons-nav-agenda-active.svg" >
|
||||||
|
</div>
|
||||||
|
<div class="approve-event-time">
|
||||||
|
<p *ngIf = "item.Service == 'agenda'">{{item.dateInit}}</p>
|
||||||
|
<p *ngIf = "item.Service == 'agenda'">{{item.dateEnd}}</p>
|
||||||
|
</div>
|
||||||
|
<div class="approve-event-detail">
|
||||||
|
<p *ngIf = "item.Service == 'agenda'">{{item.Location}}</p>
|
||||||
|
<h3 id="profile-title">{{item.alert}}</h3>
|
||||||
|
<p *ngIf = "item.Service != 'agenda'">{{item.desc}}</p>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="notification-label-MD-official" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'official' && item.Role == '100000011'" ></div>
|
||||||
|
<div class="notification-label-MD-pessoal" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'pessoal' && item.Role == '100000011'" ></div>
|
||||||
|
<div class="notification-label-PR-official" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'official' && item.Role == '100000014'" ></div>
|
||||||
|
<div class="notification-label-PR-pessoal" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'pessoal' && item.Role == '100000014'" ></div> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="approve-event-time">
|
|
||||||
<p *ngIf = "item.Service == 'agenda'">{{item.dateInit}}</p>
|
|
||||||
<p *ngIf = "item.Service == 'agenda'">{{item.dateEnd}}</p>
|
|
||||||
</div>
|
|
||||||
<div class="approve-event-detail">
|
|
||||||
<p *ngIf = "item.Service == 'agenda'">{{item.Location}}</p>
|
|
||||||
<h3 id="profile-title">{{item.alert}}</h3>
|
|
||||||
<p *ngIf = "item.Service != 'agenda'">{{item.desc}}</p>
|
|
||||||
</div>
|
|
||||||
<!-- <div class="notification-label-MD-official" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'official' && item.Role == '100000011'" ></div>
|
|
||||||
<div class="notification-label-MD-pessoal" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'pessoal' && item.Role == '100000011'" ></div>
|
|
||||||
<div class="notification-label-PR-official" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'official' && item.Role == '100000014'" ></div>
|
|
||||||
<div class="notification-label-PR-pessoal" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'pessoal' && item.Role == '100000014'" ></div> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</ion-list>
|
||||||
|
|
||||||
</ion-list>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</ion-content>
|
</ion-content>
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
// background-color: #0782c9;
|
// background-color: #0782c9;
|
||||||
padding: 20px 20px;
|
padding: 20px 20px;
|
||||||
border: 0!important;
|
border: 0!important;
|
||||||
overflow: auto;
|
|
||||||
|
|
||||||
.div-logo{
|
.div-logo{
|
||||||
background: transparent;
|
background: transparent;
|
||||||
@@ -67,7 +66,6 @@ ion-list{
|
|||||||
.notifications-content{
|
.notifications-content{
|
||||||
padding: 0px 20px;
|
padding: 0px 20px;
|
||||||
.item{
|
.item{
|
||||||
display: flex;
|
|
||||||
border-radius: 15px;
|
border-radius: 15px;
|
||||||
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.07);
|
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.07);
|
||||||
border: solid 1px #e9e9e9;
|
border: solid 1px #e9e9e9;
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
export interface ExpedienteFullTaskWorkflowInstanceDataFields {
|
||||||
|
FolderID: number;
|
||||||
|
Sender: string;
|
||||||
|
Subject: string;
|
||||||
|
Status: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ExpedienteFullTask {
|
||||||
|
serialNumber: string;
|
||||||
|
taskStartDate: string;
|
||||||
|
workflowDisplayName: string;
|
||||||
|
activityInstanceName: string;
|
||||||
|
totalDocuments: number;
|
||||||
|
workflowInstanceDataFields: ExpedienteFullTaskWorkflowInstanceDataFields;
|
||||||
|
}
|
||||||
@@ -113,4 +113,18 @@ export interface expedienteTask {
|
|||||||
DispatchNumber: any
|
DispatchNumber: any
|
||||||
AttachmentsProcessLastInstanceID: any
|
AttachmentsProcessLastInstanceID: any
|
||||||
InstanceID: any
|
InstanceID: any
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export interface ExpedienteTask {
|
||||||
|
SerialNumber: string
|
||||||
|
Senders : string
|
||||||
|
CreateDate : string
|
||||||
|
DocumentsQty : number
|
||||||
|
WorkflowName : string
|
||||||
|
activityInstanceName : string
|
||||||
|
Status : string
|
||||||
|
taskStartDate: string
|
||||||
|
Subject: string
|
||||||
}
|
}
|
||||||
@@ -11,8 +11,8 @@
|
|||||||
<p *ngIf="totalEvent!=1"class="event-number p-small ion-text-center"> <strong>{{totalEvent}}</strong> eventos agendados para hoje</p>
|
<p *ngIf="totalEvent!=1"class="event-number p-small ion-text-center"> <strong>{{totalEvent}}</strong> eventos agendados para hoje</p>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
<div class="next-meeting">
|
<div class="next-meeting">
|
||||||
<div class="meeting-time">{{currentHoursMinutes | date: 'HH:mm'}}</div>
|
<div class="meeting-time" *ngIf="currentHoursMinutes">{{currentHoursMinutes | date: 'HH:mm'}}</div>
|
||||||
<div *ngIf="currentEvent" class="meeting-description"> "{{currentEvent}}"</div>
|
<div class="meeting-description" *ngIf="currentEvent"> "{{currentEvent}}"</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</ion-header>
|
</ion-header>
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<ion-list>
|
<ion-list>
|
||||||
<ion-item class="cursor-pointer" lines="none" *ngFor = "let task of expedienteStorage.list"
|
<ion-item class="cursor-pointer" lines="none" *ngFor = "let task of expedienteGdStore.list"
|
||||||
(click)="goToExpediente(task.serialNumber)">
|
(click)="goToExpediente(task.serialNumber)">
|
||||||
<div class="item-exp d-flex">
|
<div class="item-exp d-flex">
|
||||||
<div class="schedule-date">
|
<div class="schedule-date">
|
||||||
@@ -102,8 +102,8 @@
|
|||||||
<div class="time-start">{{task.taskStartDate | date: 'HH:mm'}}</div>
|
<div class="time-start">{{task.taskStartDate | date: 'HH:mm'}}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="schedule-details pointer">
|
<div class="schedule-details pointer">
|
||||||
<div class="description">{{ task.workflowInstanceDataFields.Subject }}</div>
|
<div class="description">{{ task.Subject }}</div>
|
||||||
<div class="location">{{ task.workflowInstanceDataFields.Sender }}</div>
|
<div class="location">{{ task.Senders }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|||||||
@@ -13,8 +13,9 @@ import { ProcessesService } from '../../services/processes.service';
|
|||||||
import { DailyWorkTask } from '../../models/dailyworktask.model';
|
import { DailyWorkTask } from '../../models/dailyworktask.model';
|
||||||
import { User } from 'src/app/models/user.model';
|
import { User } from 'src/app/models/user.model';
|
||||||
import { ToDayEventStorage } from 'src/app/store/to-day-event-storage.service';
|
import { ToDayEventStorage } from 'src/app/store/to-day-event-storage.service';
|
||||||
import { ExpedienteStorage } from 'src/app/store/expediente-storage-service.service';
|
|
||||||
import { ScreenOrientation } from '@ionic-native/screen-orientation/ngx';
|
import { ScreenOrientation } from '@ionic-native/screen-orientation/ngx';
|
||||||
|
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
|
||||||
|
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-events',
|
selector: 'app-events',
|
||||||
@@ -62,15 +63,16 @@ export class EventsPage implements OnInit {
|
|||||||
|
|
||||||
// shared data
|
// shared data
|
||||||
toDayEventStorage = ToDayEventStorage
|
toDayEventStorage = ToDayEventStorage
|
||||||
expedienteStorage = ExpedienteStorage
|
expedienteGdStore = ExpedienteGdStore
|
||||||
|
|
||||||
|
expedienteTaskPipe = new ExpedienteTaskPipe()
|
||||||
|
|
||||||
@Output() openExpedientListPage:EventEmitter<any> = new EventEmitter<any>();
|
@Output() openExpedientListPage:EventEmitter<any> = new EventEmitter<any>();
|
||||||
|
|
||||||
loggeduser: User;
|
loggeduser: User;
|
||||||
|
|
||||||
existingScreenOrientation: string;
|
existingScreenOrientation: string;
|
||||||
pdfSrc = "https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf";
|
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private eventService: EventsService,
|
private eventService: EventsService,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
@@ -330,21 +332,13 @@ export class EventsPage implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
LoadList() {
|
LoadList() {
|
||||||
switch (this.loggeduser.Profile) {
|
this.processes.GetTaskListExpediente(false).subscribe(result => {
|
||||||
case 'MDGPR':
|
console.log("Expediente", result);
|
||||||
this.processes.GetTasksList("Expediente", false).subscribe(result => {
|
|
||||||
console.log(result);
|
const ExpedienteTask = result.map( e=> this.expedienteTaskPipe.transform(e))
|
||||||
this.expedienteStorage.reset(result)
|
|
||||||
});
|
this.expedienteGdStore.reset(ExpedienteTask)
|
||||||
break;
|
});
|
||||||
case 'PR':
|
|
||||||
this.processes.GetTasksList("Expediente", false).subscribe(result => {
|
|
||||||
this.expedienteStorage.reset(result)
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sortArrayISODate(myArray: any){
|
sortArrayISODate(myArray: any){
|
||||||
|
|||||||
@@ -26,14 +26,14 @@
|
|||||||
refreshingText="A actualizar...">
|
refreshingText="A actualizar...">
|
||||||
</ion-refresher-content>
|
</ion-refresher-content>
|
||||||
</ion-refresher>
|
</ion-refresher>
|
||||||
|
|
||||||
<div >
|
<div >
|
||||||
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
||||||
<div class="height-100">
|
<div class="height-100">
|
||||||
<ion-list>
|
<ion-list>
|
||||||
<div
|
<div
|
||||||
class="expediente ion-no-padding ion-no-margin cursor-pointer"
|
class="expediente ion-no-padding ion-no-margin cursor-pointer"
|
||||||
*ngFor = "let task of despachospagestore.list; let i = index"
|
*ngFor = "let task of despachoStore.list; let i = index"
|
||||||
(click)="GoToDespacho(task.SerialNumber)"
|
(click)="GoToDespacho(task.SerialNumber)"
|
||||||
>
|
>
|
||||||
<!-- [routerLink]="['/home/gabinete-digital/expediente',task.SerialNumber]" -->
|
<!-- [routerLink]="['/home/gabinete-digital/expediente',task.SerialNumber]" -->
|
||||||
@@ -68,13 +68,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
*ngIf="!skeletonLoader && despachospagestore.list.length == 0 && despachospagestore.list.length == 0"
|
*ngIf="!skeletonLoader && despachoStore.list.length == 0"
|
||||||
class="empty-list d-flex height-100 align-center justify-content-center"
|
class="empty-list d-flex height-100 align-center justify-content-center"
|
||||||
>
|
>
|
||||||
<span>Lista vazia</span>
|
<span>Lista vazia</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="skeletonLoader && despachospagestore.list.length == 0">
|
<div *ngIf="skeletonLoader && despachoStore.list.length == 0">
|
||||||
|
|
||||||
<ion-list>
|
<ion-list>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
|
|||||||
@@ -1,12 +1,7 @@
|
|||||||
import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { CalendarComponent } from 'ionic2-calendar';
|
|
||||||
import { customTask, DailyWorkTask } from '../../../models/dailyworktask.model';
|
|
||||||
import { ProcessesService } from 'src/app/services/processes.service';
|
|
||||||
import { ModalController } from '@ionic/angular';
|
|
||||||
import { AlertService } from 'src/app/services/alert.service';
|
|
||||||
import { AuthService } from 'src/app/services/auth.service';
|
|
||||||
import { NavigationStart, Router } from '@angular/router';
|
import { NavigationStart, Router } from '@angular/router';
|
||||||
import { DespachoPageStore } from 'src/app/store/despachos-page-store.service';
|
import { DespachoService } from 'src/app/Rules/despacho.service';
|
||||||
|
import { DespachoStore } from 'src/app/store/despacho-store.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-despachos',
|
selector: 'app-despachos',
|
||||||
@@ -15,43 +10,17 @@ import { DespachoPageStore } from 'src/app/store/despachos-page-store.service';
|
|||||||
})
|
})
|
||||||
|
|
||||||
export class DespachosPage implements OnInit {
|
export class DespachosPage implements OnInit {
|
||||||
//profile:string;
|
|
||||||
|
|
||||||
@ViewChild(CalendarComponent) myCal: CalendarComponent;
|
despachoStore = DespachoStore;
|
||||||
|
|
||||||
taskslist:DailyWorkTask[] = [];
|
|
||||||
despachoList:any[] = [];
|
|
||||||
deferimentoList:DailyWorkTask[] = [];
|
|
||||||
|
|
||||||
taskList:customTask[] = [];
|
|
||||||
|
|
||||||
taskType: string;
|
|
||||||
serialNumber:string;
|
|
||||||
totalDocs:any;
|
|
||||||
|
|
||||||
@Input() profile:string;
|
|
||||||
segment:string;
|
|
||||||
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
|
|
||||||
|
|
||||||
loadedAttachments:any;
|
|
||||||
dicIndex = 0;
|
|
||||||
inicial = false
|
|
||||||
skeletonLoader = true
|
|
||||||
despachospagestore = DespachoPageStore;
|
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
private processes:ProcessesService,
|
|
||||||
private modalController: ModalController,
|
|
||||||
private alertService: AlertService,
|
|
||||||
private authService: AuthService,
|
|
||||||
private router: Router,
|
private router: Router,
|
||||||
) {
|
private despachoRule: DespachoService
|
||||||
this.profile = 'mdgpr';
|
) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
//Inicializar segment
|
|
||||||
this.segment = "despachos";
|
|
||||||
|
|
||||||
const location = window.location
|
const location = window.location
|
||||||
const pathname = location.pathname + location.search
|
const pathname = location.pathname + location.search
|
||||||
@@ -80,50 +49,13 @@ export class DespachosPage implements OnInit {
|
|||||||
this.LoadList();
|
this.LoadList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
openExpedientDetailPage(data) {
|
|
||||||
this.openExpedientDetail.emit(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
async LoadList() {
|
async LoadList() {
|
||||||
|
|
||||||
this.skeletonLoader = true
|
await this.despachoRule.getList({updateStore: true})
|
||||||
|
|
||||||
let result = await this.processes.GetTasksList("Despacho", false).toPromise();
|
|
||||||
//let despachos = result.reverse().filter(data => data.activityInstanceName == "Despacho (Paralelo)");
|
|
||||||
this.despachoList = []
|
|
||||||
|
|
||||||
this.skeletonLoader = false
|
|
||||||
|
|
||||||
await result.filter(data => data.workflowInstanceDataFields.Status == "Active").forEach( (element, index) => {
|
|
||||||
|
|
||||||
let date = new Date(element.taskStartDate);
|
|
||||||
date.setMonth(date.getMonth() + 1);
|
|
||||||
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
|
|
||||||
|
|
||||||
let task = {
|
|
||||||
"SerialNumber": element.serialNumber,
|
|
||||||
"Folio": element.workflowInstanceDataFields.Subject,
|
|
||||||
"Senders": element.workflowInstanceDataFields.Sender,
|
|
||||||
"CreateDate": taskDate,
|
|
||||||
"DocumentURL": element.workflowInstanceDataFields.ViewerRequest,
|
|
||||||
"Remetente": element.workflowInstanceDataFields.Remetente,
|
|
||||||
"DocumentsQty": element.totalDocuments,
|
|
||||||
"DocId": element.workflowInstanceDataFields.DispatchDocId,
|
|
||||||
"WorkflowName": element.workflowDisplayName,
|
|
||||||
"activityInstanceName": element.activityInstanceName,
|
|
||||||
}
|
|
||||||
this.despachoList.push(task)
|
|
||||||
});
|
|
||||||
this.despachoList = this.sortArrayISODate(this.despachoList).reverse()
|
|
||||||
this.despachospagestore.reset(this.despachoList);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sortArrayISODate(myArray: any) {
|
get skeletonLoader(): boolean {
|
||||||
return myArray.sort(function(a, b) {
|
return this.despachoRule.LoaderService.loading
|
||||||
return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
doRefresh(event) {
|
doRefresh(event) {
|
||||||
@@ -139,9 +71,6 @@ export class DespachosPage implements OnInit {
|
|||||||
this.router.navigate(['/home/gabinete-digital/despachos',serialNumber,'gabinete-digital']);
|
this.router.navigate(['/home/gabinete-digital/despachos',serialNumber,'gabinete-digital']);
|
||||||
}
|
}
|
||||||
|
|
||||||
docIndex(index: number) {
|
|
||||||
this.dicIndex = index;
|
|
||||||
}
|
|
||||||
|
|
||||||
goBack() {
|
goBack() {
|
||||||
this.router.navigate(['/home/gabinete-digital']);
|
this.router.navigate(['/home/gabinete-digital']);
|
||||||
|
|||||||
@@ -34,13 +34,13 @@
|
|||||||
<ion-list>
|
<ion-list>
|
||||||
<div
|
<div
|
||||||
class="expediente ion-no-padding ion-no-margin cursor-pointer"
|
class="expediente ion-no-padding ion-no-margin cursor-pointer"
|
||||||
*ngFor = "let task of expedienteStorage.list"
|
*ngFor = "let task of expedienteGdStore.list"
|
||||||
(click)="goToExpediente(task.SerialNumber)"
|
(click)="goToExpediente(task.SerialNumber)"
|
||||||
>
|
>
|
||||||
<div class="item width-100">
|
<div class="item width-100">
|
||||||
<div class="exp-top-detail">
|
<div class="exp-top-detail">
|
||||||
<div class="subject">
|
<div class="subject">
|
||||||
<ion-label>{{ task.Folio }}</ion-label>
|
<ion-label>{{ task.Subject }}</ion-label>
|
||||||
</div>
|
</div>
|
||||||
<div class="exp-icon">
|
<div class="exp-icon">
|
||||||
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
|
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
|
||||||
@@ -65,13 +65,13 @@
|
|||||||
</ion-list>
|
</ion-list>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
*ngIf="!skeletonLoader && expedienteStorage.list.length == 0 && expedienteStorage.list.length == 0"
|
*ngIf="!skeletonLoader && expedienteGdStore.list.length == 0 && expedienteGdStore.list.length == 0"
|
||||||
class="empty-list d-flex height-100 align-center justify-content-center"
|
class="empty-list d-flex height-100 align-center justify-content-center"
|
||||||
>
|
>
|
||||||
<span>Lista vazia</span>
|
<span>Lista vazia</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="skeletonLoader && expedienteStorage.list.length == 0">
|
<div *ngIf="skeletonLoader && expedienteGdStore.list.length == 0">
|
||||||
|
|
||||||
<ion-list>
|
<ion-list>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { NavigationStart, Router } from '@angular/router';
|
import { NavigationStart, Router } from '@angular/router';
|
||||||
import { DailyWorkTask } from '../../../models/dailyworktask.model';
|
|
||||||
import { ProcessesService } from 'src/app/services/processes.service';
|
import { ProcessesService } from 'src/app/services/processes.service';
|
||||||
import { ToastService } from 'src/app/services/toast.service';
|
import { ToastService } from 'src/app/services/toast.service';
|
||||||
import { ExpedienteStorage } from 'src/app/store/expediente-storage-service.service';
|
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||||
|
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-expediente',
|
selector: 'app-expediente',
|
||||||
@@ -17,17 +17,17 @@ export class ExpedientePage implements OnInit {
|
|||||||
//profile:string;
|
//profile:string;
|
||||||
showLoader:boolean;
|
showLoader:boolean;
|
||||||
|
|
||||||
taskslist:DailyWorkTask[] = [];
|
taskslist = [];
|
||||||
serialNumber:string;
|
serialNumber:string;
|
||||||
|
|
||||||
expedienteStorage = ExpedienteStorage
|
expedienteGdStore = ExpedienteGdStore
|
||||||
|
expedienteTaskPipe = new ExpedienteTaskPipe()
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private processes:ProcessesService,
|
private processes:ProcessesService,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
private toastService: ToastService
|
private toastService: ToastService
|
||||||
) {
|
) {}
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
@@ -52,39 +52,25 @@ export class ExpedientePage implements OnInit {
|
|||||||
this.skeletonLoader = true
|
this.skeletonLoader = true
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const expediente: object[] = await this.processes.GetTasksList("Expediente", false).toPromise()
|
const expediente: object[] = await this.processes.GetTaskListExpediente(false).toPromise()
|
||||||
|
|
||||||
const result = expediente
|
const result = expediente
|
||||||
|
|
||||||
this.taskslist = new Array();
|
this.taskslist = new Array();
|
||||||
let res = result.reverse().filter((data: any) => data.workflowInstanceDataFields.Status == "Active");
|
let res = result.reverse().filter((data: any) => data.workflowInstanceDataFields.Status == "Active");
|
||||||
|
|
||||||
res.forEach((element: any) => {
|
res.forEach((element: any) => {
|
||||||
let date = new Date(element.taskStartDate);
|
|
||||||
date.setMonth(date.getMonth() + 1);
|
let task = this.expedienteTaskPipe.transform(element)
|
||||||
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
|
|
||||||
let task: DailyWorkTask = {
|
|
||||||
"SerialNumber": element.serialNumber,
|
|
||||||
"Folio": element.workflowInstanceDataFields.Subject,
|
|
||||||
"Senders": element.workflowInstanceDataFields.Sender,
|
|
||||||
"CreateDate": taskDate,
|
|
||||||
"DocumentURL": element.workflowInstanceDataFields.ViewerRequest,
|
|
||||||
"Remetente": element.workflowInstanceDataFields.Remetente,
|
|
||||||
"DocumentsQty": element.totalDocuments,
|
|
||||||
"WorkflowName": element.workflowDisplayName,
|
|
||||||
"activityInstanceName": element.activityInstanceName,
|
|
||||||
"Status": element.workflowInstanceDataFields.Status,
|
|
||||||
}
|
|
||||||
this.taskslist.push(task);
|
this.taskslist.push(task);
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(this.taskslist);
|
this.expedienteGdStore.reset(this.taskslist);
|
||||||
this.expedienteStorage.reset(this.taskslist);
|
|
||||||
this.skeletonLoader = false;
|
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.toastService.badRequest('Processo não encontrado')
|
this.toastService.badRequest('Processo não encontrado')
|
||||||
this.goBack()
|
this.goBack()
|
||||||
|
} finally {
|
||||||
|
this.skeletonLoader = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
<ion-list>
|
<ion-list>
|
||||||
<div
|
<div
|
||||||
class="expediente ion-no-padding ion-no-margin cursor-pointer"
|
class="expediente ion-no-padding ion-no-margin cursor-pointer"
|
||||||
*ngFor = "let task of expedienteprstore.list"
|
*ngFor = "let task of expedienteGdStore.list"
|
||||||
(click)="goToExpediente(task.SerialNumber)"
|
(click)="goToExpediente(task.SerialNumber)"
|
||||||
>
|
>
|
||||||
<div class="item width-100">
|
<div class="item width-100">
|
||||||
@@ -62,14 +62,14 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
*ngIf="!skeletonLoader && expedienteprstore.list.length == 0 && expedienteprstore.list.length == 0"
|
*ngIf="!skeletonLoader && expedienteGdStore.list.length == 0 && expedienteGdStore.list.length == 0"
|
||||||
class="empty-list d-flex height-100 align-center justify-content-center"
|
class="empty-list d-flex height-100 align-center justify-content-center"
|
||||||
>
|
>
|
||||||
<span>Lista vazia</span>
|
<span>Lista vazia</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Skeleton loader -->
|
<!-- Skeleton loader -->
|
||||||
<div *ngIf="skeletonLoader && expedienteprstore.list.length == 0">
|
<div *ngIf="skeletonLoader && expedienteGdStore.list.length == 0">
|
||||||
|
|
||||||
<ion-list>
|
<ion-list>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
|
|||||||
@@ -8,8 +8,9 @@ import { ExpedienteDetailPage } from 'src/app/pages/gabinete-digital/expediente/
|
|||||||
import { AlertService } from 'src/app/services/alert.service';
|
import { AlertService } from 'src/app/services/alert.service';
|
||||||
import { User } from 'src/app/models/user.model';
|
import { User } from 'src/app/models/user.model';
|
||||||
import { AuthService } from 'src/app/services/auth.service';
|
import { AuthService } from 'src/app/services/auth.service';
|
||||||
import { ExpedienteprStore } from 'src/app/store/expedientepr-store.service';
|
|
||||||
import { Location } from '@angular/common'
|
import { Location } from '@angular/common'
|
||||||
|
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||||
|
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-expedientes-pr',
|
selector: 'app-expedientes-pr',
|
||||||
@@ -20,7 +21,7 @@ export class ExpedientesPrPage implements OnInit {
|
|||||||
|
|
||||||
@ViewChild(CalendarComponent) myCal: CalendarComponent;
|
@ViewChild(CalendarComponent) myCal: CalendarComponent;
|
||||||
|
|
||||||
taskslist:DailyWorkTask[] = [];
|
taskslist= [];
|
||||||
serialNumber:string;
|
serialNumber:string;
|
||||||
showLoader:boolean;
|
showLoader:boolean;
|
||||||
|
|
||||||
@@ -28,7 +29,8 @@ export class ExpedientesPrPage implements OnInit {
|
|||||||
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
|
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
|
||||||
|
|
||||||
skeletonLoader = true
|
skeletonLoader = true
|
||||||
expedienteprstore = ExpedienteprStore;
|
expedienteGdStore = ExpedienteGdStore;
|
||||||
|
expedienteTaskPipe = new ExpedienteTaskPipe()
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private processes:ProcessesService,
|
private processes:ProcessesService,
|
||||||
@@ -64,32 +66,18 @@ export class ExpedientesPrPage implements OnInit {
|
|||||||
LoadList() {
|
LoadList() {
|
||||||
this.skeletonLoader = true
|
this.skeletonLoader = true
|
||||||
|
|
||||||
this.processes.GetTasksList("Expediente", false).subscribe(result => {
|
this.processes.GetTaskListExpediente(false).subscribe(result => {
|
||||||
console.log(result);
|
console.log(result);
|
||||||
this.skeletonLoader = false
|
this.skeletonLoader = false
|
||||||
this.showLoader =false
|
this.showLoader =false
|
||||||
this.taskslist = new Array();
|
this.taskslist = new Array();
|
||||||
let res = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
|
let res = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
|
||||||
res.forEach(element => {
|
res.forEach(element => {
|
||||||
let date = new Date(element.taskStartDate);
|
let task = this.expedienteTaskPipe.transform(element)
|
||||||
date.setMonth(date.getMonth() + 1);
|
this.taskslist.push(task);
|
||||||
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
|
});
|
||||||
let task: DailyWorkTask = {
|
|
||||||
"SerialNumber": element.serialNumber,
|
|
||||||
"Folio": element.workflowInstanceDataFields.Subject,
|
|
||||||
"Senders": element.workflowInstanceDataFields.Sender,
|
|
||||||
"CreateDate": taskDate,
|
|
||||||
"DocumentURL": element.workflowInstanceDataFields.ViewerRequest,
|
|
||||||
"Remetente": element.workflowInstanceDataFields.Remetente,
|
|
||||||
"DocumentsQty": element.totalDocuments,
|
|
||||||
"WorkflowName": element.workflowDisplayName,
|
|
||||||
"activityInstanceName": element.activityInstanceName,
|
|
||||||
"Status": element.workflowInstanceDataFields.Status,
|
|
||||||
}
|
|
||||||
this.taskslist.push(task);
|
|
||||||
});
|
|
||||||
console.log(this.taskslist);
|
console.log(this.taskslist);
|
||||||
this.expedienteprstore.reset(this.taskslist);
|
this.expedienteGdStore.reset(this.taskslist);
|
||||||
this.skeletonLoader = false
|
this.skeletonLoader = false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { Component, DoCheck, OnInit, ViewChild } from '@angular/core';
|
import { Component, DoCheck, OnInit, ViewChild } from '@angular/core';
|
||||||
import { ProcessesService } from 'src/app/services/processes.service';
|
import { ProcessesService } from 'src/app/services/processes.service';
|
||||||
import { AlertService } from 'src/app/services/alert.service';
|
|
||||||
import { ModalController } from '@ionic/angular';
|
import { ModalController } from '@ionic/angular';
|
||||||
import { ActivatedRoute, NavigationEnd, NavigationExtras, Router } from '@angular/router';
|
import { ActivatedRoute, NavigationEnd, NavigationExtras, Router } from '@angular/router';
|
||||||
import { AuthService } from 'src/app/services/auth.service';
|
import { AuthService } from 'src/app/services/auth.service';
|
||||||
@@ -13,7 +12,6 @@ import { EventoAprovacaoStore } from 'src/app/store/eventoaprovacao-store.servic
|
|||||||
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||||
import { PendentesStore } from 'src/app/store/pendestes-store.service';
|
import { PendentesStore } from 'src/app/store/pendestes-store.service';
|
||||||
import { PedidosStore } from 'src/app/store/pedidos-store.service';
|
import { PedidosStore } from 'src/app/store/pedidos-store.service';
|
||||||
import { ExpedienteprStore } from 'src/app/store/expedientepr-store.service';
|
|
||||||
import { DespachosprStore } from 'src/app/store/despachospr-store.service';
|
import { DespachosprStore } from 'src/app/store/despachospr-store.service';
|
||||||
import { PermissionService } from 'src/app/OtherService/permission.service';
|
import { PermissionService } from 'src/app/OtherService/permission.service';
|
||||||
import { removeDuplicate } from 'src/plugin/removeDuplicate.js'
|
import { removeDuplicate } from 'src/plugin/removeDuplicate.js'
|
||||||
@@ -21,6 +19,8 @@ import { WaitForDomService } from 'src/app/services/dom/wait-for-dom.service';
|
|||||||
import { TotalDocumentStore } from 'src/app/store/total-document.service';
|
import { TotalDocumentStore } from 'src/app/store/total-document.service';
|
||||||
import { DeplomasStore } from 'src/app/store/deplomas.service';
|
import { DeplomasStore } from 'src/app/store/deplomas.service';
|
||||||
import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
|
import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
|
||||||
|
import { NotificationsService } from 'src/app/services/notifications.service';
|
||||||
|
import { DespachoService } from 'src/app/Rules/despacho.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-gabinete-digital',
|
selector: 'app-gabinete-digital',
|
||||||
@@ -116,7 +116,9 @@ export class GabineteDigitalPage implements OnInit, DoCheck {
|
|||||||
private router: Router,
|
private router: Router,
|
||||||
authService: AuthService,
|
authService: AuthService,
|
||||||
public p: PermissionService,
|
public p: PermissionService,
|
||||||
public waitForDomService: WaitForDomService
|
public waitForDomService: WaitForDomService,
|
||||||
|
private notificationsService: NotificationsService,
|
||||||
|
private despachoRule: DespachoService
|
||||||
) {
|
) {
|
||||||
|
|
||||||
this.loggeduser = authService.ValidatedUser;
|
this.loggeduser = authService.ValidatedUser;
|
||||||
@@ -450,19 +452,15 @@ export class GabineteDigitalPage implements OnInit, DoCheck {
|
|||||||
this.showLoader = true;
|
this.showLoader = true;
|
||||||
|
|
||||||
let allPreocesses_ = await this.processesbackend.GetTasksList("", false).toPromise();
|
let allPreocesses_ = await this.processesbackend.GetTasksList("", false).toPromise();
|
||||||
this.count_all_processes = Object.keys(allPreocesses_).length;
|
let count_all_processes = Object.keys(allPreocesses_).length;
|
||||||
|
this.totalDocumentStore.resetCount(count_all_processes)
|
||||||
|
|
||||||
let expedientes = await this.processesbackend.GetTasksList("Expediente", false).toPromise();
|
let expedientes = await this.processesbackend.GetTaskListExpediente(false).toPromise();
|
||||||
expedientes = expedientes.filter(data => data.workflowInstanceDataFields.Status == "Active")
|
expedientes = expedientes.filter(data => data.workflowInstanceDataFields.Status == "Active")
|
||||||
this.count_exp_dailywork = Object.keys(expedientes).length;
|
|
||||||
this.expedientegbstore.count = this.count_exp_dailywork;
|
|
||||||
this.expedientegbstore.reset(expedientes)
|
this.expedientegbstore.reset(expedientes)
|
||||||
|
|
||||||
|
|
||||||
let despachos = await this.processesbackend.GetTasksList("Despacho", false).toPromise();
|
let despachos = await this.despachoRule.getList({updateStore: true})
|
||||||
despachos = despachos.filter(data => data.workflowInstanceDataFields.Status == "Active")
|
|
||||||
this.count_desp_dailywork = Object.keys(despachos).length;
|
|
||||||
this.despachoStore.count = this.count_desp_dailywork
|
|
||||||
this.despachoStore.reset(despachos)
|
this.despachoStore.reset(despachos)
|
||||||
|
|
||||||
let pareceres = await this.processesbackend.GetTasksList("Pedido de Parecer", false).toPromise();
|
let pareceres = await this.processesbackend.GetTasksList("Pedido de Parecer", false).toPromise();
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
import { ExpedienteTaskPipe } from './expediente-task.pipe';
|
||||||
|
|
||||||
|
describe('ExpedienteTaskPipe', () => {
|
||||||
|
it('create an instance', () => {
|
||||||
|
const pipe = new ExpedienteTaskPipe();
|
||||||
|
expect(pipe).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
import { Pipe, PipeTransform } from '@angular/core';
|
||||||
|
import { ExpedienteTask } from '../models/dailyworktask.model';
|
||||||
|
import { ExpedienteFullTask } from '../models/Expediente';
|
||||||
|
|
||||||
|
@Pipe({
|
||||||
|
name: 'expedienteTask'
|
||||||
|
})
|
||||||
|
export class ExpedienteTaskPipe implements PipeTransform {
|
||||||
|
|
||||||
|
transform(fullTask: ExpedienteFullTask): ExpedienteTask {
|
||||||
|
let date = new Date(fullTask.taskStartDate);
|
||||||
|
date.setMonth(date.getMonth() + 1);
|
||||||
|
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
|
||||||
|
|
||||||
|
return {
|
||||||
|
"SerialNumber": fullTask.serialNumber,
|
||||||
|
"taskStartDate": fullTask.taskStartDate,
|
||||||
|
"Subject": fullTask.workflowInstanceDataFields.Subject,
|
||||||
|
"Senders": fullTask.workflowInstanceDataFields.Sender,
|
||||||
|
"CreateDate": taskDate,
|
||||||
|
"DocumentsQty": fullTask.totalDocuments,
|
||||||
|
"WorkflowName": fullTask.workflowDisplayName,
|
||||||
|
"activityInstanceName": fullTask.activityInstanceName,
|
||||||
|
"Status": fullTask.workflowInstanceDataFields.Status,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,10 +4,11 @@ import { SearchDocumentPipe } from './search-document.pipe';
|
|||||||
import { CustomTaskPipe } from './custom-task.pipe';
|
import { CustomTaskPipe } from './custom-task.pipe';
|
||||||
import { EventPipe } from './event.pipe';
|
import { EventPipe } from './event.pipe';
|
||||||
import { PublicationPipe } from './publication.pipe';
|
import { PublicationPipe } from './publication.pipe';
|
||||||
|
import { ExpedienteTaskPipe } from './expediente-task.pipe';
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [FilterPipe, SearchDocumentPipe, CustomTaskPipe, EventPipe, PublicationPipe],
|
declarations: [FilterPipe, SearchDocumentPipe, CustomTaskPipe, EventPipe, PublicationPipe, ExpedienteTaskPipe],
|
||||||
exports: [FilterPipe],
|
exports: [FilterPipe],
|
||||||
imports: []
|
imports: []
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -150,7 +150,6 @@ export class EventsService {
|
|||||||
|
|
||||||
getAllMdOficialEvents(startdate:string, enddate:string): any{
|
getAllMdOficialEvents(startdate:string, enddate:string): any{
|
||||||
let geturl = environment.apiURL + 'calendar/md';
|
let geturl = environment.apiURL + 'calendar/md';
|
||||||
geturl = geturl.replace('/V4/','/V5/')
|
|
||||||
|
|
||||||
let params = new HttpParams();
|
let params = new HttpParams();
|
||||||
|
|
||||||
@@ -166,7 +165,6 @@ export class EventsService {
|
|||||||
|
|
||||||
getAllMdPessoalEvents(startdate:string, enddate:string): any{
|
getAllMdPessoalEvents(startdate:string, enddate:string): any{
|
||||||
let geturl = environment.apiURL + 'calendar/md';
|
let geturl = environment.apiURL + 'calendar/md';
|
||||||
geturl = geturl.replace('/V4/','/V5/')
|
|
||||||
|
|
||||||
let params = new HttpParams();
|
let params = new HttpParams();
|
||||||
|
|
||||||
|
|||||||
@@ -41,12 +41,6 @@ export class NotificationsService {
|
|||||||
private activeroute: ActivatedRoute,
|
private activeroute: ActivatedRoute,
|
||||||
private jsonstore: JsonStore) {
|
private jsonstore: JsonStore) {
|
||||||
|
|
||||||
this.callbacks.forEach(e=> {
|
|
||||||
if(e.type = 'Create Depacho') {
|
|
||||||
e.funx()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -222,9 +216,9 @@ export class NotificationsService {
|
|||||||
|
|
||||||
console.log(message);
|
console.log(message);
|
||||||
var data = JSON.parse(message.payload);
|
var data = JSON.parse(message.payload);
|
||||||
console.log(data.Service);
|
console.log('data.Service', data.Service); // module
|
||||||
console.log(data.IdObject);
|
console.log('data.IdObject', data.IdObject); // Object id
|
||||||
console.log(data.Object);
|
console.log('data.Object', data.Object); // details
|
||||||
|
|
||||||
if(message.actionName){
|
if(message.actionName){
|
||||||
this.notificatinsRoutes(data);
|
this.notificatinsRoutes(data);
|
||||||
@@ -233,7 +227,13 @@ export class NotificationsService {
|
|||||||
//this.notificatinsRoutes(data);
|
//this.notificatinsRoutes(data);
|
||||||
console.log(data)
|
console.log(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.callbacks.forEach( e=> {
|
||||||
|
if(e.type == data.Object) {
|
||||||
|
e.funx()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
}, (error) => {
|
}, (error) => {
|
||||||
console.log('Push notification recived: failure ' + error.responseText);
|
console.log('Push notification recived: failure ' + error.responseText);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { environment } from 'src/environments/environment';
|
|||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { DocumentSetUpMeeting } from '../models/CallMeeting';
|
import { DocumentSetUpMeeting } from '../models/CallMeeting';
|
||||||
import { Excludetask } from '../models/Excludetask';
|
import { Excludetask } from '../models/Excludetask';
|
||||||
|
import { ExpedienteFullTask } from '../models/Expediente';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
@@ -38,6 +39,24 @@ export class ProcessesService {
|
|||||||
return this.http.get<any>(`${geturl}`, options);
|
return this.http.get<any>(`${geturl}`, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GetTaskListExpediente(onlycount1): Observable<ExpedienteFullTask[]> {
|
||||||
|
const processname = "Expediente"
|
||||||
|
const onlycount = false
|
||||||
|
|
||||||
|
const geturl = environment.apiURL + 'tasks/List';
|
||||||
|
let params = new HttpParams();
|
||||||
|
|
||||||
|
params = params.set("ProcessName", processname);
|
||||||
|
params = params.set("OnlyCount", onlycount.toString());
|
||||||
|
|
||||||
|
let options = {
|
||||||
|
headers: this.headers,
|
||||||
|
params: params
|
||||||
|
};
|
||||||
|
|
||||||
|
return this.http.get<ExpedienteFullTask[]>(`${geturl}`, options);
|
||||||
|
}
|
||||||
|
|
||||||
GetTask(serialnumber:string): Observable<any>{
|
GetTask(serialnumber:string): Observable<any>{
|
||||||
const geturl = environment.apiURL + 'Tasks/FindTask';
|
const geturl = environment.apiURL + 'Tasks/FindTask';
|
||||||
let params = new HttpParams();
|
let params = new HttpParams();
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { customTask, DailyWorkTask, fullTask } from '../../../models/dailyworktask.model';
|
import { customTask } from '../../../models/dailyworktask.model';
|
||||||
import { ProcessesService } from 'src/app/services/processes.service';
|
|
||||||
import { NavigationStart, Router } from '@angular/router';
|
import { NavigationStart, Router } from '@angular/router';
|
||||||
import { DespachoStore } from 'src/app/store/despacho-store.service';
|
import { DespachoStore } from 'src/app/store/despacho-store.service';
|
||||||
import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
|
import { DespachoService } from 'src/app/Rules/despacho.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-despachos',
|
selector: 'app-despachos',
|
||||||
@@ -12,16 +11,11 @@ import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
|
|||||||
})
|
})
|
||||||
export class DespachosPage implements OnInit {
|
export class DespachosPage implements OnInit {
|
||||||
|
|
||||||
segment:string;
|
|
||||||
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
|
|
||||||
|
|
||||||
skeletonLoader = true
|
|
||||||
despachoStore = DespachoStore;
|
despachoStore = DespachoStore;
|
||||||
customTaskPipe = new CustomTaskPipe()
|
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
private processes:ProcessesService,
|
|
||||||
private router: Router,
|
private router: Router,
|
||||||
|
private despachoRule: DespachoService
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
@@ -45,30 +39,11 @@ export class DespachosPage implements OnInit {
|
|||||||
|
|
||||||
async LoadList() {
|
async LoadList() {
|
||||||
|
|
||||||
this.skeletonLoader = true
|
await this.despachoRule.getList({updateStore: true})
|
||||||
|
|
||||||
let result: fullTask[] = await this.processes.GetTasksList("Despacho", false).toPromise();
|
|
||||||
result = result.filter(data => data.workflowInstanceDataFields.Status == "Active")
|
|
||||||
|
|
||||||
let despachoList = new Array();
|
|
||||||
|
|
||||||
result.forEach((element, index) => {
|
|
||||||
|
|
||||||
let task = this.customTaskPipe.transform(element);
|
|
||||||
despachoList.push(task);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
despachoList = this.sortArrayISODate(despachoList).reverse();
|
|
||||||
this.despachoStore.reset(despachoList);
|
|
||||||
this.skeletonLoader = false
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sortArrayISODate(myArray: any) {
|
get skeletonLoader(): boolean {
|
||||||
return myArray.sort(function(a, b) {
|
return this.despachoRule.LoaderService.loading
|
||||||
return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
doRefresh() {
|
doRefresh() {
|
||||||
|
|||||||
@@ -13,10 +13,10 @@
|
|||||||
<div class="width-100 overflow-y-auto height-100" >
|
<div class="width-100 overflow-y-auto height-100" >
|
||||||
|
|
||||||
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
||||||
<ion-list *ngIf="expedienteprstore.list.length >= 1">
|
<ion-list *ngIf="expedienteGdStore.list.length >= 1">
|
||||||
<div
|
<div
|
||||||
class="expediente ion-no-padding ion-no-margin cursor-pointer"
|
class="expediente ion-no-padding ion-no-margin cursor-pointer"
|
||||||
*ngFor = "let task of expedienteprstore.list"
|
*ngFor = "let task of expedienteGdStore.list"
|
||||||
(click)="goToExpediente(task.SerialNumber)"
|
(click)="goToExpediente(task.SerialNumber)"
|
||||||
>
|
>
|
||||||
<div class="item width-100">
|
<div class="item width-100">
|
||||||
@@ -48,13 +48,13 @@
|
|||||||
|
|
||||||
|
|
||||||
<div
|
<div
|
||||||
*ngIf="!skeletonLoader && expedienteprstore.list.length == 0 && expedienteprstore.list.length == 0"
|
*ngIf="!skeletonLoader && expedienteGdStore.list.length == 0 && expedienteGdStore.list.length == 0"
|
||||||
class="empty-list d-flex height-100 align-center justify-content-center"
|
class="empty-list d-flex height-100 align-center justify-content-center"
|
||||||
>
|
>
|
||||||
<span>Lista vazia</span>
|
<span>Lista vazia</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="skeletonLoader && expedienteprstore.list.length == 0">
|
<div *ngIf="skeletonLoader && expedienteGdStore.list.length == 0">
|
||||||
|
|
||||||
<ion-list>
|
<ion-list>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
|
|||||||
@@ -6,8 +6,9 @@ import { ModalController } from '@ionic/angular';
|
|||||||
import { AlertService } from 'src/app/services/alert.service';
|
import { AlertService } from 'src/app/services/alert.service';
|
||||||
import { User } from 'src/app/models/user.model';
|
import { User } from 'src/app/models/user.model';
|
||||||
import { AuthService } from 'src/app/services/auth.service';
|
import { AuthService } from 'src/app/services/auth.service';
|
||||||
import { ExpedienteprStore } from 'src/app/store/expedientepr-store.service';
|
|
||||||
import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
|
import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
|
||||||
|
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||||
|
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-expedientes-pr',
|
selector: 'app-expedientes-pr',
|
||||||
@@ -16,11 +17,12 @@ import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
|
|||||||
})
|
})
|
||||||
export class ExpedientesPrPage implements OnInit {
|
export class ExpedientesPrPage implements OnInit {
|
||||||
|
|
||||||
taskslist:DailyWorkTask[] = [];
|
taskslist = [];
|
||||||
serialNumber:string;
|
serialNumber:string;
|
||||||
skeletonLoader = true;
|
skeletonLoader = true;
|
||||||
expedienteprstore = ExpedienteprStore;
|
expedienteGdStore = ExpedienteGdStore;
|
||||||
customTaskPipe = new CustomTaskPipe()
|
customTaskPipe = new CustomTaskPipe()
|
||||||
|
expedienteTaskPipe = new ExpedienteTaskPipe()
|
||||||
|
|
||||||
loggeduser: User;
|
loggeduser: User;
|
||||||
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
|
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
|
||||||
@@ -62,15 +64,15 @@ export class ExpedientesPrPage implements OnInit {
|
|||||||
|
|
||||||
LoadList() {
|
LoadList() {
|
||||||
this.skeletonLoader = true;
|
this.skeletonLoader = true;
|
||||||
this.processes.GetTasksList("Expediente", false).subscribe(result => {
|
this.processes.GetTaskListExpediente(false).subscribe(result => {
|
||||||
|
|
||||||
this.taskslist = [];
|
this.taskslist = [];
|
||||||
let res = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
|
let res = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
|
||||||
res.forEach(element => {
|
res.forEach(element => {
|
||||||
let task: customTask = this.customTaskPipe.transform(element);
|
let task = this.expedienteTaskPipe.transform(element);
|
||||||
this.taskslist.push(task);
|
this.taskslist.push(task);
|
||||||
});
|
});
|
||||||
this.expedienteprstore.reset(this.taskslist);
|
this.expedienteGdStore.reset(this.taskslist);
|
||||||
this.skeletonLoader = false;
|
this.skeletonLoader = false;
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
<div class="item width-100">
|
<div class="item width-100">
|
||||||
<div class="exp-top-detail">
|
<div class="exp-top-detail">
|
||||||
<div class="subject">
|
<div class="subject">
|
||||||
<ion-label>{{ task.Folio }}</ion-label>
|
<ion-label>{{ task.Subject }}</ion-label>
|
||||||
</div>
|
</div>
|
||||||
<div class="exp-icon">
|
<div class="exp-icon">
|
||||||
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
|
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
|
||||||
|
|||||||
@@ -1,15 +1,9 @@
|
|||||||
import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
|
import { Component, Input, OnInit } from '@angular/core';
|
||||||
import { ActivatedRoute, NavigationEnd, NavigationExtras, NavigationStart, Router } from '@angular/router';
|
import { NavigationStart, Router } from '@angular/router';
|
||||||
import { CalendarComponent } from 'ionic2-calendar';
|
|
||||||
|
|
||||||
import { DailyWorkTask } from '../../../models/dailyworktask.model';
|
|
||||||
import { ProcessesService } from 'src/app/services/processes.service';
|
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 { ExpedienteDetailPage } from 'src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page';
|
|
||||||
import { AlertService } from 'src/app/services/alert.service';
|
import { AlertService } from 'src/app/services/alert.service';
|
||||||
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
||||||
|
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-expedients',
|
selector: 'app-expedients',
|
||||||
@@ -18,23 +12,20 @@ import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
|
|||||||
})
|
})
|
||||||
export class ExpedientsPage implements OnInit {
|
export class ExpedientsPage implements OnInit {
|
||||||
segment:string;
|
segment:string;
|
||||||
//profile:string;
|
|
||||||
|
|
||||||
@ViewChild(CalendarComponent) myCal: CalendarComponent;
|
taskslist = [];
|
||||||
|
|
||||||
taskslist:DailyWorkTask[] = [];
|
|
||||||
serialNumber:string;
|
serialNumber:string;
|
||||||
|
|
||||||
@Input() profile:string;
|
@Input() profile:string;
|
||||||
skeletonLoader = true
|
skeletonLoader = true
|
||||||
expedientegbstore = ExpedienteGdStore
|
expedientegbstore = ExpedienteGdStore
|
||||||
|
|
||||||
|
expedienteTaskPipe = new ExpedienteTaskPipe()
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private processes:ProcessesService,
|
private processes:ProcessesService,
|
||||||
private modalController: ModalController,
|
|
||||||
private alertService: AlertService,
|
private alertService: AlertService,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
private activatedRoute: ActivatedRoute,
|
|
||||||
) {
|
) {
|
||||||
this.profile = 'mdgpr';
|
this.profile = 'mdgpr';
|
||||||
|
|
||||||
@@ -58,11 +49,11 @@ export class ExpedientsPage implements OnInit {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
segmentChanged(){
|
segmentChanged() {
|
||||||
this.LoadList();
|
this.LoadList();
|
||||||
}
|
}
|
||||||
|
|
||||||
notImplemented(){
|
notImplemented() {
|
||||||
this.alertService.presentAlert('Funcionalidade em desenvolvimento');
|
this.alertService.presentAlert('Funcionalidade em desenvolvimento');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,31 +61,17 @@ export class ExpedientsPage implements OnInit {
|
|||||||
|
|
||||||
this.skeletonLoader = true
|
this.skeletonLoader = true
|
||||||
|
|
||||||
this.processes.GetTasksList("Expediente", false).subscribe(result => {
|
this.processes.GetTaskListExpediente(false).subscribe(result => {
|
||||||
this.taskslist = [];
|
this.taskslist = [];
|
||||||
this.skeletonLoader = false
|
this.skeletonLoader = false
|
||||||
|
|
||||||
let res = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
|
let res = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
|
||||||
res.forEach(element => {
|
res.forEach(element => {
|
||||||
let date = new Date(element.taskStartDate);
|
let task = this.expedienteTaskPipe.transform(element)
|
||||||
date.setMonth(date.getMonth() + 1);
|
|
||||||
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
|
|
||||||
let task: DailyWorkTask = {
|
|
||||||
"SerialNumber": element.serialNumber,
|
|
||||||
"Folio": element.workflowInstanceDataFields.Subject,
|
|
||||||
"Senders": element.workflowInstanceDataFields.Sender,
|
|
||||||
"CreateDate": taskDate,
|
|
||||||
"DocumentURL": element.workflowInstanceDataFields.ViewerRequest,
|
|
||||||
"Remetente": element.workflowInstanceDataFields.Remetente,
|
|
||||||
"DocumentsQty": element.totalDocuments,
|
|
||||||
"WorkflowName": element.workflowDisplayName,
|
|
||||||
"activityInstanceName": element.activityInstanceName,
|
|
||||||
"Status": element.workflowInstanceDataFields.Status,
|
|
||||||
}
|
|
||||||
this.taskslist.push(task);
|
this.taskslist.push(task);
|
||||||
|
|
||||||
});
|
});
|
||||||
console.log("Buffer store", this.taskslist)
|
|
||||||
this.expedientegbstore.reset(this.taskslist);
|
this.expedientegbstore.reset(this.taskslist);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ export class PedidosPage implements OnInit {
|
|||||||
|
|
||||||
@ViewChild(CalendarComponent) myCal: CalendarComponent;
|
@ViewChild(CalendarComponent) myCal: CalendarComponent;
|
||||||
|
|
||||||
taskslist:DailyWorkTask[] = [];
|
|
||||||
parecerList:any[] = [];
|
parecerList:any[] = [];
|
||||||
fulltask:any;
|
fulltask:any;
|
||||||
|
|
||||||
@@ -100,7 +99,6 @@ export class PedidosPage implements OnInit {
|
|||||||
this.taskType = "Pedido de Deferimento";
|
this.taskType = "Pedido de Deferimento";
|
||||||
this.processes.GetTasksList("Pedido de Deferimento", false).subscribe(result => {
|
this.processes.GetTasksList("Pedido de Deferimento", false).subscribe(result => {
|
||||||
|
|
||||||
this.taskslist = result.filter(data => data.workflowInstanceDataFields.Status == "Active")
|
|
||||||
this.skeletonLoader = false
|
this.skeletonLoader = false
|
||||||
|
|
||||||
this.deferimentoList = new Array();
|
this.deferimentoList = new Array();
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
import { TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { DespachosPageStoreService } from './despachos-page-store.service';
|
|
||||||
|
|
||||||
describe('DespachosPageStoreService', () => {
|
|
||||||
let service: DespachosPageStoreService;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
TestBed.configureTestingModule({});
|
|
||||||
service = TestBed.inject(DespachosPageStoreService);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should be created', () => {
|
|
||||||
expect(service).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { localstoreService } from './localstore.service'
|
|
||||||
import { AES, enc, SHA1 } from 'crypto-js'
|
|
||||||
import { customTask } from '../models/dailyworktask.model';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root'
|
|
||||||
})
|
|
||||||
export class DespachosPageStoreService {
|
|
||||||
|
|
||||||
// main data
|
|
||||||
private _list: [] = []
|
|
||||||
// local storage keyName
|
|
||||||
private keyName: string;
|
|
||||||
private _count = 0
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
|
|
||||||
this.keyName = (SHA1(this.constructor.name)).toString()
|
|
||||||
|
|
||||||
|
|
||||||
setTimeout(()=>{
|
|
||||||
let restore = localstoreService.get(this.keyName, {})
|
|
||||||
this._list = restore.list || []
|
|
||||||
this._count = parseInt(restore.count) || 0
|
|
||||||
}, 10)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
get list(): customTask[] {
|
|
||||||
return this._list || []
|
|
||||||
}
|
|
||||||
|
|
||||||
get count() {
|
|
||||||
return this._count
|
|
||||||
}
|
|
||||||
set count(value) {
|
|
||||||
this._count = value
|
|
||||||
this.save()
|
|
||||||
}
|
|
||||||
|
|
||||||
reset(eventsList: any) {
|
|
||||||
this._list = eventsList
|
|
||||||
|
|
||||||
this.count = this._list.length
|
|
||||||
this.save()
|
|
||||||
}
|
|
||||||
|
|
||||||
private save() {
|
|
||||||
setTimeout(()=> {
|
|
||||||
localstoreService.set(this.keyName,{
|
|
||||||
list: this._list,
|
|
||||||
count: this._count
|
|
||||||
})
|
|
||||||
}, 10)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export const DespachoPageStore = new DespachosPageStoreService()
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
import { TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { ExpedienteStorageServiceService } from './expediente-storage-service.service';
|
|
||||||
|
|
||||||
describe('ExpedienteStorageServiceService', () => {
|
|
||||||
let service: ExpedienteStorageServiceService;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
TestBed.configureTestingModule({});
|
|
||||||
service = TestBed.inject(ExpedienteStorageServiceService);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should be created', () => {
|
|
||||||
expect(service).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { Event } from '../models/event.model';
|
|
||||||
import { localstoreService } from './localstore.service'
|
|
||||||
import { AES, enc, SHA1 } from 'crypto-js'
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root'
|
|
||||||
})
|
|
||||||
|
|
||||||
// shared data used in home and gabinete
|
|
||||||
class ExpedienteStorageServiceService {
|
|
||||||
|
|
||||||
// main data
|
|
||||||
private _list: Event[] = []
|
|
||||||
private _count = 0
|
|
||||||
// local storage keyName
|
|
||||||
private keyName: string;
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
|
|
||||||
this.keyName = (SHA1(this.constructor.name+ 'ExpedienteStorage/forAll')).toString()
|
|
||||||
|
|
||||||
setTimeout(()=>{
|
|
||||||
let restore = localstoreService.get(this.keyName, [])
|
|
||||||
this._list = restore.list || []
|
|
||||||
this._count = restore.count || 0
|
|
||||||
}, 10)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
get list() {
|
|
||||||
return this._list
|
|
||||||
}
|
|
||||||
|
|
||||||
get count() {
|
|
||||||
return this._count
|
|
||||||
}
|
|
||||||
set count(value: number) {
|
|
||||||
this._count = value
|
|
||||||
this.save()
|
|
||||||
}
|
|
||||||
|
|
||||||
reset(list: any) {
|
|
||||||
this._list = list
|
|
||||||
|
|
||||||
this.count = this._list.length
|
|
||||||
this.save()
|
|
||||||
}
|
|
||||||
|
|
||||||
private save() {
|
|
||||||
setTimeout(()=>{
|
|
||||||
localstoreService.set(this.keyName, {
|
|
||||||
list: this._list,
|
|
||||||
count: this._count
|
|
||||||
})
|
|
||||||
}, 10)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export const ExpedienteStorage = new ExpedienteStorageServiceService()
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { localstoreService } from './localstore.service'
|
import { localstoreService } from './localstore.service'
|
||||||
import { AES, enc, SHA1 } from 'crypto-js'
|
import { AES, enc, SHA1 } from 'crypto-js'
|
||||||
|
import { ExpedienteTask } from '../models/dailyworktask.model';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
@@ -8,7 +9,7 @@ import { AES, enc, SHA1 } from 'crypto-js'
|
|||||||
export class ExpedientegdStoreService {
|
export class ExpedientegdStoreService {
|
||||||
|
|
||||||
// main data
|
// main data
|
||||||
private _list = []
|
private _list: ExpedienteTask[] = []
|
||||||
// local storage keyName
|
// local storage keyName
|
||||||
private keyName: string;
|
private keyName: string;
|
||||||
private _count = 0
|
private _count = 0
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
import { TestBed } from '@angular/core/testing';
|
|
||||||
|
|
||||||
import { ExpedienteprStoreService } from './expedientepr-store.service';
|
|
||||||
|
|
||||||
describe('ExpedienteprStoreService', () => {
|
|
||||||
let service: ExpedienteprStoreService;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
TestBed.configureTestingModule({});
|
|
||||||
service = TestBed.inject(ExpedienteprStoreService);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should be created', () => {
|
|
||||||
expect(service).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { localstoreService } from './localstore.service'
|
|
||||||
import { AES, enc, SHA1 } from 'crypto-js'
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root'
|
|
||||||
})
|
|
||||||
export class ExpedienteprStoreService {
|
|
||||||
// main data
|
|
||||||
private _list: [] = []
|
|
||||||
// local storage keyName
|
|
||||||
private keyName: string;
|
|
||||||
private _count = 0
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
|
|
||||||
this.keyName = (SHA1(this.constructor.name)).toString()
|
|
||||||
|
|
||||||
setTimeout(()=>{
|
|
||||||
let restore = localstoreService.get(this.keyName, {})
|
|
||||||
this._list = restore.list || []
|
|
||||||
this._count = parseInt(restore.count) || 0
|
|
||||||
}, 10)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
get list() { return this._list || [] }
|
|
||||||
|
|
||||||
get count() { return this._count || 0 }
|
|
||||||
set count(value: number) {
|
|
||||||
this._count = value
|
|
||||||
this.save()
|
|
||||||
}
|
|
||||||
|
|
||||||
reset(eventsList: any) {
|
|
||||||
this._list = eventsList
|
|
||||||
|
|
||||||
this.count = this._list.length
|
|
||||||
this.save()
|
|
||||||
}
|
|
||||||
|
|
||||||
private save() {
|
|
||||||
setTimeout(()=>{
|
|
||||||
localstoreService.set(this.keyName,{
|
|
||||||
list: this._list,
|
|
||||||
count: this._count
|
|
||||||
})
|
|
||||||
}, 10)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ExpedienteprStore = new ExpedienteprStoreService()
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
import { TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { LoaderService } from './loader.service';
|
||||||
|
|
||||||
|
describe('LoaderService', () => {
|
||||||
|
let service: LoaderService;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
TestBed.configureTestingModule({});
|
||||||
|
service = TestBed.inject(LoaderService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be created', () => {
|
||||||
|
expect(service).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class LoaderService {
|
||||||
|
|
||||||
|
private loadingList: {
|
||||||
|
name: string
|
||||||
|
}[] = []
|
||||||
|
|
||||||
|
constructor() { }
|
||||||
|
|
||||||
|
get loading(){
|
||||||
|
return this.loadingList.length != 0
|
||||||
|
}
|
||||||
|
|
||||||
|
push({name = ''}) {
|
||||||
|
this.loadingList.push({
|
||||||
|
name: name
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
pop({}) {
|
||||||
|
this.loadingList.pop()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,11 +3,7 @@
|
|||||||
<g stroke="#797979" stroke-width="2">
|
<g stroke="#797979" stroke-width="2">
|
||||||
<g>
|
<g>
|
||||||
<g>
|
<g>
|
||||||
<g transform="translate(-262 -740) translate(0 740) translate(246) translate(16)">
|
<path d="M20 8.136l12 6.461V30c0 .552-.224 1.052-.586 1.414-.362.362-.862.586-1.414.586h0-5v-5c0-.788-.304-1.505-.8-2.04-.51-.549-1.222-.906-2.017-.954h0L18 24c-.788 0-1.505.304-2.04.8-.549.51-.906 1.222-.954 2.017h0L15 32H10c-.552 0-1.052-.224-1.414-.586C8.224 31.052 8 30.552 8 30h0V14.597l12-6.461z" transform="translate(-16 -740) translate(0 740) translate(16)"/>
|
||||||
<path d="M20.5 34.5c5.523 0 10.5-.977 10.5-6.5s-4.477-10-10-10-10 4.477-10 10 3.977 6.5 9.5 6.5z"/>
|
|
||||||
<circle cx="21" cy="12" r="6"/>
|
|
||||||
<path stroke-linejoin="round" d="M23.423 19.064v16m-4.773 2.561l.354-19" transform="rotate(45 21.125 28.125)"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 717 B After Width: | Height: | Size: 661 B |
Reference in New Issue
Block a user