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

This commit is contained in:
Peter Maquiran
2021-05-18 13:58:27 +01:00
19 changed files with 688 additions and 63 deletions
+47 -23
View File
@@ -165,6 +165,25 @@
"debug": "4"
}
},
"postcss": {
"version": "8.2.4",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.4.tgz",
"integrity": "sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg==",
"dev": true,
"requires": {
"colorette": "^1.2.1",
"nanoid": "^3.1.20",
"source-map": "^0.6.1"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
}
},
"rxjs": {
"version": "6.6.3",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
@@ -8585,9 +8604,9 @@
}
},
"engine.io-client": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.0.tgz",
"integrity": "sha512-12wPRfMrugVw/DNyJk34GQ5vIVArEcVMXWugQGGuw2XxUSztFNmJggZmv8IZlLyEdnpO1QB9LkcjeWewO2vxtA==",
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz",
"integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==",
"requires": {
"component-emitter": "~1.3.0",
"component-inherit": "0.0.3",
@@ -8598,7 +8617,7 @@
"parseqs": "0.0.6",
"parseuri": "0.0.6",
"ws": "~7.4.2",
"xmlhttprequest-ssl": "~1.5.4",
"xmlhttprequest-ssl": "~1.6.2",
"yeast": "0.1.2"
},
"dependencies": {
@@ -12288,9 +12307,9 @@
"optional": true
},
"nanoid": {
"version": "3.1.20",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz",
"integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==",
"version": "3.1.23",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz",
"integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==",
"dev": true
},
"nanomatch": {
@@ -13430,16 +13449,22 @@
"dev": true
},
"postcss": {
"version": "8.2.4",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.4.tgz",
"integrity": "sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg==",
"version": "8.2.15",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz",
"integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==",
"dev": true,
"requires": {
"colorette": "^1.2.1",
"nanoid": "^3.1.20",
"colorette": "^1.2.2",
"nanoid": "^3.1.23",
"source-map": "^0.6.1"
},
"dependencies": {
"colorette": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
"integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==",
"dev": true
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -17948,9 +17973,9 @@
"dev": true
},
"underscore": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.0.tgz",
"integrity": "sha512-21rQzss/XPMjolTiIezSu3JAjgagXKROtNrYFEOWK109qY1Uv2tVjPTZ1ci2HgvQDA16gHYSthQIJfB+XId/rQ==",
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
"integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==",
"dev": true
},
"unicode-canonical-property-names-ecmascript": {
@@ -18802,8 +18827,7 @@
},
"ssri": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
"integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
"resolved": "",
"dev": true,
"requires": {
"figgy-pudding": "^3.5.1"
@@ -19429,9 +19453,9 @@
}
},
"ws": {
"version": "7.4.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz",
"integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA=="
"version": "7.4.5",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz",
"integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g=="
},
"xcode": {
"version": "3.0.1",
@@ -19480,9 +19504,9 @@
"dev": true
},
"xmlhttprequest-ssl": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
"integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz",
"integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q=="
},
"xtend": {
"version": "4.0.2",
+2 -1
View File
@@ -62,6 +62,7 @@
"socket.io-client": "^2.3.0",
"tslib": "^2.0.0",
"wordcloud": "^1.1.2",
"ws": "^7.4.5",
"zone.js": "~0.10.2"
},
"devDependencies": {
@@ -144,4 +145,4 @@
"url": "git+https://Kayaya@bitbucket.org/equilibriumito/gabinete-digital.git"
},
"license": "ISC"
}
}
@@ -216,7 +216,9 @@ export class CreateProcessPage implements OnInit {
"ActionTypeId": 104,
"dataFields": {
"ReviewUserComent": '',
}
},
"AttachmentList" :null,
}
this.processes.CompleteTask(body);
}
+48
View File
@@ -72,6 +72,16 @@ export class ChatPage implements OnInit {
@Output() getRoomInfo;
/*
Websockets variables
*/
SERVER_URL = 'wss://www.tabularium.pt/websocket';
ws:any;
/* Fim websockets variables*/
constructor(
private http:HttpClient,
private chatService: ChatService,
@@ -100,9 +110,47 @@ export class ChatPage implements OnInit {
})
console.log(this.roomId);
this.connect();
}
/* websocket functions */
connect() {
this.ws = new WebSocket(this.SERVER_URL, []);
console.log(this.ws);
/* this.ws.onmessage = handleMessageReceived;
this.ws.onerror = handleError; */
}
handleMessageReceived(data) {
// Simply call logMessage(), passing the received data.
/* logMessage(data.data); */
}
handleConnected(data) {
// Create a log message which explains what has happened and includes
// the url we have connected too.
var logMsg = 'Connected to server: ' + data.target.url;
// Add the message to the log.
/* logMessage(logMsg) */
}
handleError(err) {
// Print the error to the console so we can debug it.
console.log("Error: ", err);
}
logMessage(msg) {
// $apply() ensures that the elements on the page are updated
// with the new message.
/* $scope.$apply(function() { */
//Append out new message to our message log. The \n means new line.
/* $scope.messageLog = $scope.messageLog + msg + "\n"; */
// Update the scrolling (defined below).
/*updateScrolling();*/
/* S */
}
/* Fim websockets functions */
closeAllDesktopComponents() {
this.showMessages=false;
this.showContacts=false;
@@ -160,7 +160,8 @@ export class DespachoPage implements OnInit {
"ActionTypeId": 104,
"dataFields": {
"ReviewUserComent": note,
}
},
"AttachmentList" :null,
}
this.processes.CompleteTask(body);
this.close();
@@ -1,9 +1,124 @@
<ion-header>
<ion-toolbar>
<ion-title>diploma</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<div class="main-content d-flex height-100">
<div class="content d-flex flex-column" *ngIf="task">
<div class="main-header">
<div class="title-content">
<app-btn-modal-dismiss></app-btn-modal-dismiss>
<div class="middle">
<ion-label class="title">{{ task.Folio}}</ion-label>
</div>
<div class="div-icon" (click)="openOptions()">
<!-- <ion-menu-button autoHide="false">
<ion-icon name="ellipsis-vertical-outline"></ion-icon>
</ion-menu-button> -->
<ion-icon class="font-25 cursor-pointer" name="ellipsis-vertical-outline"></ion-icon>
</div>
</div>
</div>
<div class="upper-content">
<div class="content-details">
<ion-label>
<p><span class="date">{{customDate}}</span><span class="label">{{ task.WorkflowName }}</span></p>
<p><span class="color-red">{{ task.DeadlineType }}</span></p>
</ion-label>
</div>
</div>
<div class="line"></div>
<div class="middle-content">
<h5 *ngIf="intervenientes">Intervenientes</h5>
<ion-item class="ion-no-margin ion-no-padding">
<ion-label>
<div *ngFor="let interveniente of intervenientes">
<p>{{interveniente.Name}}</p>
</div>
</ion-label>
</ion-item>
<div *ngIf="cc.length > 0">
<h5>Com conhecimento</h5>
<ion-item class="ion-no-margin ion-no-padding">
<ion-label>
<div *ngFor="let c of cc">
<p>{{c.Name}}</p>
</div>
</ion-label>
</ion-item>
</div>
<div *ngIf="task.Note">
<h5>Detalhes</h5>
<ion-item class="ion-no-margin ion-no-padding">
<p [innerHTML]="task.Note"></p>
</ion-item>
</div>
</div>
<div class="bottom-content width-100">
<ion-list>
<h5>Documentos Anexados</h5>
<ion-item *ngFor="let attachment of attachments" class="ion-no-margin ion-no-padding">
<ion-label
(click)="viewDocument(attachment.DocId)">
<p *ngIf="attachment.Assunto" class="attach-title-item">{{ attachment.Assunto }}<span class="span-right color-red btn-size"><ion-icon hidden name="close"></ion-icon></span></p>
<p *ngIf="!attachment.Assunto" class="attach-title-item">{{ attachment.DocNumber }}<span class="span-right color-red btn-size"><ion-icon hidden name="close"></ion-icon></span></p>
<p><span class="span-left">{{attachment.Sender}}</span><span class="span-right">{{ attachment.DocDate | date: 'dd/MM/yy' }}</span></p>
</ion-label>
</ion-item>
</ion-list>
</div>
</div>
<div *ngIf="task" class="aside-right flex-column height-100">
<div class="buttons">
<button (click)="openAddNoteModal()" class="btn-cancel" shape="round" >Executado</button>
<button (click)="openDelegarModal(task)" class="btn-cancel" shape="round" >Delegar</button>
<div class="solid"></div>
<button (click)="openExpedientActionsModal('0',fulltask)" class="btn-ok" shape="round" >Efectuar Despacho</button>
<button (click)="openExpedientActionsModal('1',fulltask)" class="btn-cancel" shape="round" >Solicitar Parecer</button>
<button (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
<div class="solid"></div>
<button (click)="sendExpedienteToPending()" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
</div>
</div>
<div *ngIf="!task">
<ion-list>
<ion-list-header>
<ion-label>
<ion-skeleton-text animated style="width: 50%"></ion-skeleton-text>
</ion-label>
</ion-list-header>
<ion-item>
<ion-label>
<h3>
<ion-skeleton-text animated style="width: 50%"></ion-skeleton-text>
</h3>
<p>
<ion-skeleton-text animated style="width: 80%"></ion-skeleton-text>
</p>
</ion-label>
</ion-item>
<ion-item>
<ion-label>
<h3>
<ion-skeleton-text animated style="width: 50%"></ion-skeleton-text>
</h3>
<p><ion-skeleton-text animated style="width: 80%"></ion-skeleton-text></p>
</ion-label>
</ion-item>
<ion-item>
<ion-label>
<h3>
<ion-skeleton-text animated style="width: 50%"></ion-skeleton-text>
</h3>
<p>
<ion-skeleton-text animated style="width: 80%"></ion-skeleton-text>
</p>
</ion-label>
</ion-item>
<ion-button color="medium" shape="round" expand="block">
<!-- <ion-icon color="medium" name="attach" slot="start"></ion-icon> -->
<ion-skeleton-text animated style="width: 50%"></ion-skeleton-text>
</ion-button>
</ion-list>
</div>
</div>
</ion-content>
@@ -0,0 +1,236 @@
@import '~src/function.scss';
.content{
padding: 30px 20px 0 20px !important;
margin: 0;
float: left;
}
.color-red{
font-weight: 500;
color:#d30a0a !important;
}
.btn-size{
font-size: 18px !important;
}
.main-header{
font-family: Roboto;
border-top-left-radius: 25px;
border-top-right-radius: 25px;
background-color: #fff;
overflow:auto;
color:#000;
transform: translate3d(0, 1px, 0);
.header-top{
width: 360px;
margin: 0px auto;
overflow: auto;
padding: 0 !important;
background: #fff;
.middle{
padding: 0!important;
float: left;
width: 280px;
margin: 2.5px 0 0 5px;
display: flex;
align-items: center;
}
.right{
padding: 0!important;
float: right;
font-size: 25px;
color: #0782c9;
margin: 5px 0 0 0;
}
}
.header-bottom{
width: 310px;
overflow: auto;
margin: 0 auto;
.header-bottom-icon{
width: 30px;
font-size: 25px;
float: left;
padding: 2px;
}
.header-bottom-contacts{
width: 275px;
font-size: 15px;
color: #797979;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
float: left;
padding: 5px;
margin: 1px;
}
}
.title{
font-size: 25px;
overflow: auto;
float: left;
padding-top: 4px;
padding-left: 5px;
}
.div-icon{
width: 40px;
float: right;
font-size: 35px;
overflow: auto;
padding: 1px;
}
}
ion-item-group{
margin: 15px;
}
ion-button{
display: block;
width: 80%;
margin: 20px auto;
}
.upper-content{
font-family: Roboto;
margin-left: 41px;
overflow: auto;
font-size: 18px;
.label{
border-radius: 20px;
background: #ffb703;
float: right;
padding: 5px 13.5px 5px 13.5px;
color: #fff;
}
.button-calendar-type ion-button{
height: 25px;
}
.content-details{
font-size: 17px;
.date{
color: #797979;
}
}
}
.middle-conten{
.middle-content p{
font-size: 16px;
}
}
.bottom-content{
//width: 360px;
margin: 0 auto;
.bottom-content h3{
font-size: 16px;
margin: 0 0 0 10px;
}
.attach-document{
font-size: 15px;
color: #0d89d1;
margin: 5px 5px 5px 10px;
padding: 5px;
float: left;
}
.attach-icon{
width: 37px;
font-size: 35px;
float: left;
}
.attach-title-item{
font-size: 18px;
width: 100%;
color:#0d89d1;
padding-bottom: 5px;
}
/* SPAN */
.span-left{
float: left;
font-size: 15x;
}
.span-right{
text-align: right;
float: right;
font-size: 13px;
}
}
.aside-right{
padding: 30px 20px 0 20px !important;
.arrow-right{
display: flex;
justify-content: flex-end;
margin-bottom: 20px;
.arrow-right-icon{
width: 37px;
float: right;
font-size: 35px;
overflow: hidden;
}
}
.buttons{
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.btn-ok, .btn-cancel, .btn-delete{
height: auto !important;
font-size: 16px !important;
font-weight: 600 !important;
width: 100% !important;
margin-bottom: 10px !important;
padding: 15px !important;
}
}
.solid {
display: block;
width: 90%;
border-top: 1px solid #ebebeb;
margin: 0 auto !important;
margin-bottom: 10px !important;
}
}
@media only screen and (max-width: 800px) {
.content{
width: 100% !important;
}
.aside-right{
display: none;
}
}
@media only screen and (min-width: 801px) {
.div-icon{
display: none;
}
.content{
width: 65%;
border-right: 1px solid #d8d8d8;
}
.aside-right{
width: 35%;
}
}
@media only screen and (min-width: 1024px){
.content{
width: 70%;
}
.aside-right{
width: 30%;
}
}
@media only screen and (min-width: 1140px){
.content{
width: 75%;
}
.aside-right{
width: 25%;
}
}
@@ -1,4 +1,12 @@
import { Component, OnInit } from '@angular/core';
import { ModalController, NavParams, PopoverController } from '@ionic/angular';
import { AddNotePage } from 'src/app/modals/add-note/add-note.page';
import { CreateProcessPage } from 'src/app/modals/create-process/create-process.page';
import { DelegarPage } from 'src/app/modals/delegar/delegar.page';
import { ProcessesService } from 'src/app/services/processes.service';
import { OptsExpedientePage } from 'src/app/shared/popover/opts-expediente/opts-expediente.page';
import { momentG } from 'src/plugin/momentG';
import { BookMeetingModalPage } from '../../expediente/book-meeting-modal/book-meeting-modal.page';
@Component({
selector: 'app-diploma',
@@ -7,9 +15,194 @@ import { Component, OnInit } from '@angular/core';
})
export class DiplomaPage implements OnInit {
constructor() { }
months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"];
days = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"];
serialnumber: string;
profile: string;
task: any
fulltask: any
intervenientes: any;
cc: any;
attachments:any;
customDate: any
constructor(
private navParams: NavParams,
private processes: ProcessesService,
public popoverController: PopoverController,
private modalController: ModalController,
) {
this.serialnumber = this.navParams.get('serialNumber');
this.profile = this.navParams.get('profile');
this.LoadTaskDetail(this.serialnumber);
}
ngOnInit() {
}
async openOptions(taskAction?: any) {
const popover = await this.popoverController.create({
component: OptsExpedientePage,
cssClass: 'exp-options',
componentProps: {
task: this.task,
fulltask: this.fulltask,
taskAction:taskAction,
showEnviarPendentes: false
},
translucent: true
});
return await popover.present();
}
async LoadTaskDetail(serial: string) {
this.processes.GetTask(serial).subscribe(res => {
this.task = {
"SerialNumber": res.serialNumber,
"Folio": res.workflowInstanceDataFields.Subject,
"Senders": res.originator.email,
"CreateDate": momentG(new Date(res.taskStartDate),'yyyy-MM-dd HH:mm:ss'),
"DocumentURL": res.workflowInstanceDataFields.ViewerRequest,
"Remetente": res.workflowInstanceDataFields.Sender,
"Note": res.workflowInstanceDataFields.Note,
"FolderId": res.workflowInstanceDataFields.FolderID,
"FsId": '361',
"DocId": res.workflowInstanceDataFields.DispatchDocId,
"WorkflowName": res.workflowDisplayName,
"DeadlineType": res.workflowInstanceDataFields.DeadlineType,
}
this.fulltask = res;
console.log(this.task);
console.log('GetTask', res);
let thedate = new Date(this.task.CreateDate);
this.customDate = this.days[thedate.getDay()]+ ", " + thedate.getDate() +" de " + ( this.months[thedate.getMonth()]);
this.processes.GetTaskParticipants(this.task.FolderId).subscribe(users=>{
this.intervenientes = users.filter(user=>{
return user.Type == 'I';
});
this.cc = users.filter(user=>{
return user.Type == 'CC';
});
console.log(users);
});
this.getDocumentDetails(this.task.FolderId, '361');
});
}
getDocumentDetails(forlderId:string, applicationId:string) {
this.processes.GetDocumentDetails(forlderId,applicationId).subscribe(res=>{
this.attachments = res.Documents;
console.log(res['Documents']);
console.log(this.attachments);
})
}
async openAddNoteModal() {
const modal = await this.modalController.create({
component: AddNotePage,
componentProps:{
},
cssClass: 'emend-message-modal',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then(res => {
//this.executado(res.data);
});
}
async openDelegarModal(task: any) {
let classs;
if( window.innerWidth <= 800){
classs = 'book-meeting-modal modal modal-desktop'
} else {
classs = 'modal modal-desktop showAsideOptions'
}
const modal = await this.modalController.create({
component: DelegarPage,
componentProps: {
task: this.task,
},
cssClass: classs,
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
async openExpedientActionsModal(taskAction: any, task: any) {
//this.modalController.dismiss();
let classs;
if( window.innerWidth <= 800){
classs = 'modal modal-desktop'
} else {
classs = 'modal modal-desktop showAsideOptions'
}
const modal = await this.modalController.create({
component: CreateProcessPage,
componentProps: {
taskAction: taskAction,
task: task,
profile: this.profile,
},
cssClass: classs,
});
await modal.present();
modal.onDidDismiss().then(res=>{
console.log(res['data']);
if(res['data']=='openDiscart'){
console.log('open discart');
// this.distartExpedientModal();
}
});
}
async openBookMeetingModal(task: any) {
let classs;
if( window.innerWidth <= 800){
classs = 'book-meeting-modal modal modal-desktop'
} else {
classs = 'modal modal-desktop showAsideOptions'
}
const modal = await this.modalController.create({
component: BookMeetingModalPage,
componentProps: {
task: this.task,
},
cssClass: classs,
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss();
}
sendExpedienteToPending(){
this.processes.SetTaskToPending(this.serialnumber).subscribe(res=>{
console.log(res);
this.close();
});
}
close(){
this.modalController.dismiss();
}
}
@@ -75,7 +75,7 @@
<ion-icon src="assets/images/icons-expediente-presidente.svg"></ion-icon>
</div>
<p class="text-center exp-card-title ">Expediente Presidente</p>
<p class="text-center exp-card-content"><span class="number">{{count_exp_pr}}</span> <span class="title1">Documentos</span></p>
<p class="text-center exp-card-content"><span class="number">-</span> <span class="title1">Documentos</span></p>
</div>
<div (click)="openDespachosPrPage(); selectedElement='DispatchesPr'" [class.active]="selectedElement == 'DispatchesPr'" class="exp-card d-md-flex d-none flex-column justify-center" *ngIf="loggeduser.Profile == 'MDGPR'">
@@ -115,7 +115,7 @@
<ion-icon src="assets/images/icons-expediente-diploma.svg"></ion-icon>
</div>
<p class="text-center exp-card-title ">Diplomas por Validar</p>
<p class="text-center exp-card-content"><span class="number">-</span> <span class="title1">Documentos</span> </p>
<p class="text-center exp-card-content"><span class="number">{{count_dip_pv}}</span> <span class="title1">Documentos</span> </p>
</div>
<div (click)="openDiplomasPage('assinados'); selectedElement='DiplomasAssinados'" [class.active]="selectedElement == 'DiplomasAssinados'" class="exp-card d-flex flex-column justify-center" *ngIf="loggeduser.Profile == 'MDGPR'">
@@ -34,7 +34,7 @@ export class GabineteDigitalPage implements OnInit {
count_exp_pp : string;
count_exp_pd : string;
count_dip_apr : string;
count_dip_pv : string;
count_dip_pv=0;
count_de_pr = 0;
count_ev_pr=0;
count_ev_md=0;
@@ -170,30 +170,31 @@ export class GabineteDigitalPage implements OnInit {
let pendentes = despachos.concat(pareceres, deferimentos, expedientes).reverse().filter(data => data.workflowInstanceDataFields.Status == "Pending");
this.count_total_pending = Object.keys(pendentes).length;
this.processesbackend.GetTasksList("Despacho do Presidente da República", false).subscribe(e=>{
this.count_de_pr = Object.keys(e).length
});
let diplomas = await this.processesbackend.GetTasksList("Despacho do Presidente da República", false).toPromise();
let despachosPr = diplomas.filter(data => data.workflowInstanceDataFields.Status == "Active");
this.count_de_pr = Object.keys(despachosPr).length;
let diplomasValidar = diplomas.filter(data => data.workflowInstanceDataFields.Status == "Revising");
this.count_dip_pv = Object.keys(diplomasValidar).length;
this.processesbackend.GetTasksList("Expediente", false).subscribe(result => {
let res = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
this.count_exp_pr = Object.keys(res).length
});
this.processesbackend.GetTasksList("Despacho do Presidente da República", false).subscribe(res =>{
this.showLoader = false;
this.count_de_pr = Object.keys(res).length;
});
this.processesbackend.GetToApprovedEvents('PR','true').subscribe(res=>{
this.count_ev_pr = res;
});
this.processesbackend.GetToApprovedEvents('MDGPR','true').subscribe(res=>{
this.count_ev_md = res;
});
this.showLoader = false;
this.count_exp_pp = "-";
this.count_exp_pd = "-";
this.count_dip_apr = "-";
this.count_dip_pv = "-";
}
@@ -6,7 +6,7 @@
<div class="main-content d-flex height-100">
<div class="content d-flex flex-column" *ngIf="task">
<div class="main-header ">
<div class="title-content d-flex justify-space-between align-center">
<div class="title-content d-flex justify-space-between ">
<div class="font-30 cursor-pointer" (click)="goBack()" defaultHref="#">
<ion-icon slot="end" src='assets/images/icons-arrow-arrow-left.svg'></ion-icon>
</div>
@@ -15,9 +15,9 @@
<ion-label class="title">{{ task.Folio}}</ion-label>
</div>
<div class="div-icon">
<ion-menu-button autoHide="false">
<ion-icon name="ellipsis-vertical-outline"></ion-icon>
</ion-menu-button>
<div autoHide="false" class="d-flex">
<ion-icon class="font-30" name="ellipsis-vertical-outline"></ion-icon>
</div>
</div>
</div>
</div>
@@ -187,7 +187,8 @@ export class PedidoPage implements OnInit {
"ActionTypeId": 95,
"dataFields": {
"ReviewerUseComment": '',
}
},
"AttachmentList" :null,
}
this.processes.CompleteTask(body);
}
@@ -1,4 +1,4 @@
<ion-header class="ion-no-border">
<ion-header>
<app-btn-modal-dismiss></app-btn-modal-dismiss>
<div class="title">
<div class="thetitle"><ion-label >Pendentes</ion-label></div>
@@ -81,10 +81,10 @@ segmentChanged(ev: any) {
this.loading = true;
let result = await this.processes.GetTasksList("Despacho do Presidente da República", false).toPromise();
console.log(result);
let despachosPr = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
console.log(despachosPr);
result.forEach( (element, index) => {
despachosPr.forEach( (element, index) => {
let task = {
"SerialNumber": element.serialNumber,
@@ -1,4 +1,4 @@
<ion-header class="ion-no-border">
<ion-header>
<div class="title">
<div class="thetitle"><ion-label >Despachos</ion-label></div>
<div class="theicon">
@@ -7,7 +7,7 @@
</button>
</div>
</div>
<ion-toolbar>
<!-- <ion-toolbar>
<ion-segment [(ngModel)]="segment" (ionChange)="segmentChanged($event)">
<ion-segment-button value="validar">
Diplomas por validar
@@ -16,7 +16,7 @@
Diplomas assinados PR
</ion-segment-button>
</ion-segment>
</ion-toolbar>
</ion-toolbar> -->
</ion-header>
<ion-content>
<ion-refresher name="refresher" slot="fixed" (ionRefresh)="doRefresh($event)">
@@ -28,12 +28,13 @@ constructor(
private alertService: AlertService,
) {
this.profile = 'mdgpr';
this.segment = 'validar'
}
ngOnInit() {
//Inicializar segment
this.segment = 'validar';
// this.LoadList();
this.LoadList();
}
segmentChanged(ev: any) {
this.LoadList();
@@ -44,8 +45,11 @@ notImplemented(){
}
async LoadList(){
this.diplomasList = new Array();
let diplomas = await this.processes.GetTasksList("Despacho do Presidente da República", false).toPromise();
this.diplomasList = new Array();
console.log(diplomas);
switch (this.segment) {
case 'validar':
@@ -97,7 +101,7 @@ async LoadList(){
doRefresh(event) {
this.LoadList();
setTimeout(() => {
event.target.complete();
//event.target.complete();
}, 2000);
}
@@ -120,5 +124,4 @@ async viewPedidoDetail(serialNumber:any) {
});
}
}
@@ -1,4 +1,4 @@
<ion-header class="ion-no-border">
<ion-header>
<div class="title">
<div class="thetitle"><ion-label >Pedidos</ion-label></div>
<div class="theicon">
@@ -1,4 +1,4 @@
<ion-header class="ion-no-border">
<ion-header>
<div class="title">
<div class="thetitle"><ion-label >Pendentes</ion-label></div>
<div class="theicon">