Merge branch 'developer' into developer_mobilefirst

This commit is contained in:
Eudes Inácio
2021-06-25 09:43:20 +01:00
73 changed files with 1393 additions and 640 deletions
+3 -3
View File
@@ -226,7 +226,7 @@
<div *ngFor="let event of events.value" class="EventListBox">
<div class="d-flex content-{{event.profile}}-{{event.event.CalendarName}} mt-10 cursor-pointer width-100 " (click)="eventClicked(event)"
*ngIf="viewEventMonth <= dateMonth(event)">
*ngIf="viewEventMonth <= dateMonth(event) && event.event.CalendarName == segment || segment == 'Combinado' ">
<div class="schedule-time" *ngIf="!event.event.IsAllDayEvent">
<div *ngIf="!event.endMany && !event.middle" class="time-start">{{event.event.StartDate | date: 'HH:mm'}}</div>
@@ -266,7 +266,7 @@
</div>
<div *ngFor="let event of events.value" class="EventListBox" >
<div class="d-flex content-mdgpr-{{event.event.CalendarName}} mt-10 cursor-pointer" (click)="eventClicked(event)"
*ngIf="viewEventMonth <= dateMonth(event)">
*ngIf="viewEventMonth <= dateMonth(event) && event.event.CalendarName == segment || segment == 'Combinado' ">
<div class="schedule-time" *ngIf="!event.event.IsAllDayEvent">
<div *ngIf="!event.endMany && !event.middle" class="time-start">{{event.event.StartDate | date: 'HH:mm'}}</div>
@@ -308,7 +308,7 @@
<div *ngFor="let event of events.value" class="EventListBox">
<div class="d-flex content-pr-{{event.event.CalendarName}} mt-10 cursor-pointer" (click)="eventClicked(event)"
*ngIf="viewEventMonth <= dateMonth(event)">
*ngIf="viewEventMonth <= dateMonth(event) && event.event.CalendarName == segment || segment == 'Combinado' ">
<div class="schedule-time" *ngIf="!event.event.IsAllDayEvent">
<div *ngIf="!event.endMany && !event.middle" class="time-start">{{event.event.StartDate | date: 'HH:mm'}}</div>
+11
View File
@@ -460,6 +460,10 @@ td.monthview-primary-with-event {
color: #2e2e2e !important;
font-size: 13px;
}
.EventListBoxBorder{
padding-bottom: 5px;
border-bottom: 1px solid #d8d8d8;
}
.content-pr-Oficial, .content-pr-Pessoal, .content-mdgpr-Pessoal, .content-mdgpr-Oficial {
width: 100% !important;
@@ -508,6 +512,13 @@ td.monthview-primary-with-event {
font-weight: bold;
color: #0d89d1;
}
.description p{
white-space: nowrap;
overflow: hidden !important;
text-overflow: ellipsis !important;
}
}
.color{
width: 5px;
+13
View File
@@ -1310,6 +1310,19 @@ export class AgendaPage implements OnInit {
this.timelineFilterState = segments
}
this.showTimelineFilterState = false;
setTimeout(()=>{
document.querySelectorAll('.EventListBox-container .EventListBox').forEach((e)=>{
if(e.childElementCount == 0) {
e.parentElement.style.display = 'none'
} else {
e.parentElement.style.display = 'block'
}
})
}, 10)
}
}
@@ -28,11 +28,6 @@
<ion-input placeholder="Localização" [(ngModel)]="postEvent.Location"></ion-input>
</div>
</div>
<!-- Error messages -->
<!-- <span class="error ion-padding" >
Campo obrigatório
</span> -->
</div>
<div class="container-div width-100">
@@ -132,9 +127,6 @@
</div>
</div>
</div>
<div class="container-div width-100">
<div (click)="addParticipants()" class="ion-item-class-2 cursor-pointer">
<div class="ion-icon-class">
@@ -3,12 +3,9 @@ import { AlertController, AnimationController, ModalController, NavParams } from
import { Attachment } from 'src/app/models/attachment.model';
import { EventBody } from 'src/app/models/eventbody.model';
import { EventPerson } from 'src/app/models/eventperson.model';
import { AlertService } from 'src/app/services/alert.service';
import { AttachmentsService } from 'src/app/services/attachments.service';
import { EventsService } from 'src/app/services/events.service';
import { ToastService } from 'src/app/services/toast.service';
import { BadRequestPage } from 'src/app/shared/popover/bad-request/bad-request.page';
import { SuccessMessagePage } from 'src/app/shared/popover/success-message/success-message.page';
import { Event } from '../../../models/event.model';
import { AttendeesPageModal } from '../../events/attendees/attendees.page';
import { SearchPage } from '../../search/search.page';
@@ -9,8 +9,6 @@ import { AttachmentsService } from 'src/app/services/attachments.service';
import { AuthService } from 'src/app/services/auth.service';
import { EventsService } from 'src/app/services/events.service';
import { ToastService } from 'src/app/services/toast.service';
import { BadRequestPage } from 'src/app/shared/popover/bad-request/bad-request.page';
import { SuccessMessagePage } from 'src/app/shared/popover/success-message/success-message.page';
import { Event } from '../../../models/event.model';
import { AttendeesPageModal } from '../../events/attendees/attendees.page';
import { SearchPage } from '../../search/search.page';
+1 -1
View File
@@ -90,7 +90,7 @@
</ion-list>
</div>
<button (click)="sendMsg()">Send message</button>
<button (click)="sendMsg()" style="height: 41px;">Send message</button>
</div>
</div>
<!-- Aside right -->
+3 -1
View File
@@ -55,7 +55,9 @@
</div>
<div class="schedule-details">
<div class="location">{{event.Location}}</div>
<div class="description">{{event.Subject}}</div>
<div class="description">
<p>{{event.Subject}}</p>
</div>
</div>
</div>
</ion-item>
+11 -1
View File
@@ -408,7 +408,7 @@ ion-toolbar{
display: flex;
flex-wrap: wrap;
align-items: center;
width: 100%;
width: 78%;
.location{
font-family: Roboto;
font-size: 13px;
@@ -417,11 +417,17 @@ ion-toolbar{
}
.description{
width: 100%;
font-family: Roboto;
font-size: 15px;
font-weight: bold;
color: #0d89d1;
}
.description p{
white-space: nowrap;
overflow: hidden !important;
text-overflow: ellipsis !important;
}
}
.color{
width: 5px;
@@ -486,4 +492,8 @@ ion-toolbar{
.schedule{
width: 360px;
}
}
ion-title{
border: 1px solid red;
text-overflow: ellipsis;
}
+2 -1
View File
@@ -43,7 +43,8 @@ export class EventsPage implements OnInit {
public profile:string;
currentEvent: any;
eventsList: Event[];
eventsList: Event[];
maxSubjectLength = 30;
officialeventsList: Event[];
personaleventsList: Event[];
@@ -88,8 +88,6 @@ export class DespachoPage implements OnInit {
}
goBack() {
// window.history.back()
if (window.innerWidth <= 800) {
this.router.navigate(['/home/gabinete-digital/despachos']);
} else {
@@ -100,7 +98,6 @@ export class DespachoPage implements OnInit {
}
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
}
@@ -140,12 +137,16 @@ export class DespachoPage implements OnInit {
console.log(users);
});
console.log(this.task.FolderId);
this.getDocumentDetails(this.task.FolderId, '361');
});
}
getDocumentDetails(forlderId:string, applicationId:string) {
console.log(forlderId);
this.processes.GetDocumentDetails(forlderId,applicationId).subscribe(res=>{
this.attachments = res.Documents;
console.log(res['Documents']);
@@ -80,12 +80,15 @@ export class DespachosPage implements OnInit {
}
async LoadList() {
console.log('HERE');
let result = await this.processes.GetTasksList("Despacho", false).toPromise();
//let despachos = result.reverse().filter(data => data.activityInstanceName == "Despacho (Paralelo)");
this.despachoList = new Array();
console.log(result);
console.log('OI');
await result.forEach( (element, index) => {
@@ -101,7 +104,7 @@ export class DespachosPage implements OnInit {
"DocumentURL": element.workflowInstanceDataFields.ViewerRequest,
"Remetente": element.workflowInstanceDataFields.Remetente,
"DocumentsQty": 0,
"DocId": element.workflowInstanceDataFields.DocIdDiferimento,
"DocId": element.workflowInstanceDataFields.DispatchDocId,
"WorkflowName": element.workflowDisplayName,
"activityInstanceName": element.activityInstanceName,
}
@@ -110,9 +113,14 @@ export class DespachosPage implements OnInit {
});
console.log(this.despachoList);
this.despachoList = this.sortArrayISODate(this.despachoList).reverse()
this.despachoList.forEach( (element, index) => {
console.log(element);
// let aplicationId = element.workflowInstanceDataFields.SourceSecFsID;
let FolderID = element['FolderID'];
@@ -21,7 +21,7 @@
<ion-toolbar>
<ion-segment [(ngModel)]="segment">
<ion-segment-button value="MDGPR">
Seu calendário
Meu calendário
</ion-segment-button>
<ion-segment-button value="PR">
Presidente da República
@@ -31,7 +31,7 @@
</div>
<ion-list *ngSwitchCase="'MDGPR'">
<div *ngIf="eventsMDGPRList">
<div *ngIf="eventsMDGPRList" class="overflow-y-auto height-100">
<ion-item-sliding>
<ion-item class="Rectangle cursor-pointer" lines="none"
*ngFor="let event of eventsMDGPRList" (click)="goToEventToApproveDetail(event.serialNumber)">
@@ -52,7 +52,7 @@
</div>
</ion-list>
<ion-list *ngSwitchCase="'PR'">
<div *ngIf="eventsPRList">
<div *ngIf="eventsPRList" class="overflow-y-auto height-100">
<ion-item-sliding>
<ion-item class="Rectangle cursor-pointer" lines="none"
*ngFor="let event of eventsPRList" (click)="goToEventToApproveDetail(event.serialNumber)">
@@ -6,8 +6,9 @@
}
.content{
padding: 30px 20px 0 20px !important;
margin: 0;
margin: 0 auto;
float: left;
overflow: auto;
}
.header-content{
margin: 0 !important;
@@ -11,6 +11,36 @@ import { EmptyContainerPageModule } from 'src/app/shared/empty-container/empty-c
import { BtnModalDismissPageModule } from 'src/app/shared/btn-modal-dismiss/btn-modal-dismiss.module';
import { AttendeeModalPageModule } from 'src/app/shared/event/attendee-modal/attendee-modal.module';
import { MatNativeDateModule } from '@angular/material/core';
import {
NgxMatDateFormats,
NgxMatDatetimePickerModule,
NgxMatNativeDateModule,
NgxMatTimepickerModule,
NGX_MAT_DATE_FORMATS
} from '@angular-material-components/datetime-picker';
import { ReactiveFormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatSelectModule } from '@angular/material/select';
import { NgxMatMomentModule } from '@angular-material-components/moment-adapter';
import { MAT_DATE_LOCALE } from '@angular/material/core';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatInputModule } from '@angular/material/input';
const CUSTOM_DATE_FORMATS: NgxMatDateFormats = {
parse: {
dateInput: "YYYY-MMMM-DD HH:mm"
},
display: {
dateInput: "DD MMM YYYY H:mm",
monthYearLabel: "MMM YYYY",
dateA11yLabel: "LL",
monthYearA11yLabel: "MMMM YYYY"
}
}
@NgModule({
imports: [
CommonModule,
@@ -23,10 +53,23 @@ import { AttendeeModalPageModule } from 'src/app/shared/event/attendee-modal/att
AttendeeModalPageModule,
EmptyContainerPageModule,
BtnModalDismissPageModule,
// Angular material
MatDatepickerModule,
MatInputModule,
MatNativeDateModule,
NgxMatDatetimePickerModule,
NgxMatTimepickerModule,
NgxMatNativeDateModule,
NgxMatMomentModule,
MatSelectModule,
MatButtonModule,
ReactiveFormsModule
],
declarations: [
BookMeetingModalPage
]
],
providers: [
{ provide: MAT_DATE_LOCALE, useValue: 'pt' },
],
})
export class BookMeetingModalPageModule {}
@@ -35,10 +35,28 @@
<ion-icon slot="start" src="assets/images/icons-calendar.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-select [(ngModel)]="postData.CalendarName" placeholder="Selecione repetição" interface="action-sheet" Cancel-text="Cancelar" required>
<ion-select
class="d-block d-md-none"
[(ngModel)]="postData.CalendarName"
placeholder="Selecione repetição"
interface="action-sheet"
Cancel-text="Cancelar" required>
<ion-select-option value="Oficial">Oficial</ion-select-option>
<ion-select-option value="Pessoal">Pessoal</ion-select-option>
</ion-select>
<mat-form-field class="d-none d-md-block width-100" placeholder="Selecione agenda">
<mat-select [(value)]="postData.CalendarName" >
<mat-option value="Oficial">
Oficial
</mat-option>
<mat-option value="Pessoal">
Pessoal
</mat-option>
</mat-select>
</mat-form-field>
</div>
</div>
</div>
@@ -50,6 +68,7 @@
</div>
<div class="ion-input-class">
<ion-datetime
class="d-block d-md-none"
placeholder="Início"
[(ngModel)]="postData.StartDate"
displayFormat="D MMM YYYY H:mm"
@@ -59,7 +78,24 @@
max="2022"
value="2020-11-19T11:06Z">
</ion-datetime>
<!-- <ion-input placeholder="Data início" [(ngModel)]="postData.StartDate"></ion-input> -->
<mat-form-field class="width-100 date-hour-picker d-none d-md-block">
<input matInput [ngxMatDatetimePicker]="picker1"
placeholder="Choose a date"
[formControl]="dateControlStart"
[min]="minDate" [max]="maxDate"
[disabled]="disabled"
>
<mat-datepicker-toggle id="new-inicio" matSuffix [for]="picker1"></mat-datepicker-toggle>
<ngx-mat-datetime-picker #picker1
[showSpinners]="showSpinners"
[showSeconds]="showSeconds"
[stepHour]="stepHour" [stepMinute]="stepMinute"
[stepSecond]="stepSecond"
[touchUi]="touchUi">
</ngx-mat-datetime-picker>
</mat-form-field>
</div>
</div>
</div>
@@ -71,6 +107,7 @@
</div>
<div class="ion-input-class">
<ion-datetime
class="d-block d-md-none"
placeholder="Fim"
[(ngModel)]="postData.EndDate"
displayFormat="D MMM YYYY H:mm"
@@ -80,7 +117,23 @@
max="2022"
value="2020-11-19T11:06Z">
</ion-datetime>
<!-- <ion-input placeholder="Data fim" [(ngModel)]="postData.EndDate"></ion-input> -->
<mat-form-field class="date-hour-picker">
<input matInput [ngxMatDatetimePicker]="fim"
placeholder="Choose a date"
[formControl]="dateControlEnd"
[min]="minDate" [max]="maxDate"
[disabled]="disabled"
>
<mat-datepicker-toggle id="new-fim" matSuffix [for]="fim"></mat-datepicker-toggle>
<ngx-mat-datetime-picker #fim
[showSpinners]="showSpinners"
[showSeconds]="showSeconds"
[stepHour]="stepHour" [stepMinute]="stepMinute"
[stepSecond]="stepSecond"
[touchUi]="touchUi">
</ngx-mat-datetime-picker>
</mat-form-field>
</div>
</div>
</div>
@@ -91,13 +144,41 @@
<ion-icon slot="start" src="assets/images/icons-refresh.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-select [(ngModel)]="postData.IsRecurring" placeholder="Selecione repetição" value="false" interface="action-sheet" Cancel-text="Cancelar" required>
<ion-select
class="d-block d-md-none"
[(ngModel)]="postData.IsRecurring"
placeholder="Selecione repetição"
value="false"
interface="action-sheet"
Cancel-text="Cancelar"
required
>
<ion-select-option value="false">Não se repete</ion-select-option>
<ion-select-option value="true">Repete</ion-select-option>
<!-- <ion-select-option value="true">Semanal</ion-select-option>
<ion-select-option value="true">Diário</ion-select-option>
<ion-select-option value="true">Anual</ion-select-option> -->
</ion-select>
<mat-form-field
class="width-100 d-none d-md-block"
placeholder="Selecione repetição"
value="false"
interface="action-sheet"
required
>
<mat-select [(value)]="postData.IsRecurring">
<mat-option value="false">
Não se repete
</mat-option>
<mat-option value="true">
Repete
</mat-option>
</mat-select>
</mat-form-field>
</div>
</div>
</div>
@@ -1,8 +1,6 @@
import { Component, OnInit } from '@angular/core';
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, NavigationExtras, Router } from '@angular/router';
import { AnimationController, ModalController, NavParams } from '@ionic/angular';
import { AddParticipantsCcModalPage } from '../add-participants-cc-modal/add-participants-cc-modal.page';
import { AddParticipantsModalPage } from '../add-participants-modal/add-participants-modal.page';
import { Event } from 'src/app/models/event.model'
import { EventBody } from 'src/app/models/eventbody.model';
import { ProcessesService } from 'src/app/services/processes.service';
@@ -12,21 +10,74 @@ import { DiscartExpedientModalPage } from '../../discart-expedient-modal/discart
import { AttachmentsService } from 'src/app/services/attachments.service';
import { SearchPage } from 'src/app/pages/search/search.page';
import { SearchDocument } from 'src/app/models/search-document';
import { BadRequestPage } from 'src/app/shared/popover/bad-request/bad-request.page';
import { SuccessMessagePage } from 'src/app/shared/popover/success-message/success-message.page';
import { User } from 'src/app/models/user.model';
import { AuthService } from 'src/app/services/auth.service';
import { AttendeesPageModal } from 'src/app/pages/events/attendees/attendees.page';
import { ToastService } from 'src/app/services/toast.service';
import { FormControl } from '@angular/forms';
import * as _moment from 'moment';
import * as _rollupMoment from 'moment';
import { NgxMatDateFormats } from '@angular-material-components/datetime-picker';
import { NGX_MAT_DATE_FORMATS } from '@angular-material-components/datetime-picker';
import { MAT_DATE_LOCALE } from '@angular/material/core';
const moment = _rollupMoment || _moment;
const CUSTOM_DATE_FORMATS: NgxMatDateFormats = {
parse: {
dateInput: "YYYY-MMMM-DD HH:mm"
},
display: {
dateInput: "DD MMM YYYY H:mm",
monthYearLabel: "MMM YYYY",
dateA11yLabel: "LL",
monthYearA11yLabel: "MMMM YYYY"
}
}
@Component({
selector: 'app-book-meeting-modal',
templateUrl: './book-meeting-modal.page.html',
styleUrls: ['./book-meeting-modal.page.scss'],
providers: [
// { provide: MAT_DATE_LOCALE, useValue: 'pt' },
{ provide: NGX_MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS },
]
})
export class BookMeetingModalPage implements OnInit {
public date: any;
public disabled = false;
public showSpinners = true;
public showSeconds = false;
public touchUi = false;
public enableMeridian = false;
public minDate: any;
public maxDate: any;
public stepHour = 1;
public stepMinute = 5;
public stepSecond = 5;
public dateControlStart = new FormControl(moment("DD MM YYYY hh"));
public dateControlEnd = new FormControl(moment("DD MM YYYY hh"));
showLoader = false
get dateStart () {
return this.dateControlStart.value
}
get dateEnd () {
return this.dateControlEnd.value
}
@ViewChild('picker') picker: any;
@ViewChild('fim') fim: any;
@ViewChild('inicio') inicio: any;
@ViewChild('picker1') picker1: any;
task: any;
taskParticipants: EventPerson[];
@@ -73,9 +124,6 @@ export class BookMeetingModalPage implements OnInit {
/* Set + 30minutes to seleted datetime */
let selectedEndDate = new Date();
/* this.postData.EndDate = new Date(selectedEndDate.setMinutes(new Date().getMinutes() + 30)); */
}
ngOnInit() {
@@ -128,8 +176,8 @@ export class BookMeetingModalPage implements OnInit {
Location: this.postData.Location,
CalendarId: '',
CalendarName: this.postData.CalendarName,
StartDate: this.postData.StartDate,
EndDate: this.postData.EndDate,
StartDate: this.dateStart,
EndDate: this.dateEnd,
EventType: 'Reunião',
Attendees: Attendees,
IsMeeting: false,
@@ -149,7 +197,7 @@ export class BookMeetingModalPage implements OnInit {
try {
switch (this.loggeduser.Profile) {
case 'MDGPR':
//await this.calendarService.postExpedientEvent(this.task.DocId, this.postData, "md",this.task.SerialNumber, this.task.FsId).toPromise();
await this.calendarService.postExpedientEvent(this.task.DocId, this.postData, "md",this.task.SerialNumber, this.task.FsId).toPromise();
break;
case 'PR':
@@ -12,6 +12,35 @@ import { AttendeeModalPageModule } from 'src/app/shared/event/attendee-modal/att
import { EmptyContainerPageModule } from 'src/app/shared/empty-container/empty-container.module';
import { BtnModalDismissPageModule } from 'src/app/shared/btn-modal-dismiss/btn-modal-dismiss.module';
import { MatNativeDateModule } from '@angular/material/core';
import {
NgxMatDateFormats,
NgxMatDatetimePickerModule,
NgxMatNativeDateModule,
NgxMatTimepickerModule,
NGX_MAT_DATE_FORMATS
} from '@angular-material-components/datetime-picker';
import { ReactiveFormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatSelectModule } from '@angular/material/select';
import { NgxMatMomentModule } from '@angular-material-components/moment-adapter';
import { MAT_DATE_LOCALE } from '@angular/material/core';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatInputModule } from '@angular/material/input';
const CUSTOM_DATE_FORMATS: NgxMatDateFormats = {
parse: {
dateInput: "YYYY-MMMM-DD HH:mm"
},
display: {
dateInput: "DD MMM YYYY H:mm",
monthYearLabel: "MMM YYYY",
dateA11yLabel: "LL",
monthYearA11yLabel: "MMMM YYYY"
}
}
@NgModule({
imports: [
CommonModule,
@@ -22,7 +51,21 @@ import { BtnModalDismissPageModule } from 'src/app/shared/btn-modal-dismiss/btn-
AttendeeModalPageModule,
EmptyContainerPageModule,
BtnModalDismissPageModule,
//
MatDatepickerModule,
MatInputModule,
MatNativeDateModule,
NgxMatDatetimePickerModule,
NgxMatTimepickerModule,
NgxMatNativeDateModule,
NgxMatMomentModule,
MatSelectModule,
MatButtonModule,
ReactiveFormsModule
],
providers: [
{ provide: NGX_MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS },
{ provide: MAT_DATE_LOCALE, useValue: 'pt' },
],
declarations: [
ExpedientTaskModalPage
@@ -28,12 +28,29 @@
<ion-icon class="icon-time" slot="start" name="time-outline"></ion-icon>
</div>
<div class="ion-input-class">
<ion-select placeholder="Prazo" [(ngModel)]="postData.Priority" interface="action-sheet" Cancel-text="Cancelar" required>
<ion-select
placeholder="Prazo"
[(ngModel)]="postData.Priority"
interface="action-sheet"
Cancel-text="Cancelar"
required
class="d-md-none"
>
<ion-select-option value="99999861"><b>Normal</b> (4 dias para a execução da tarefa)</ion-select-option>
<ion-select-option value="99999862"><b>Urgente</b> (2 dias para a execução da tarefa)</ion-select-option>
<ion-select-option value="99999863"><b>Muito Urgente</b> (1 dia para a execução da tarefa)</ion-select-option>
<ion-select-option value="99999864"><b>Urgentíssimo</b> (8 horas para a execução da tarefa)</ion-select-option>
</ion-select>
<mat-form-field appearance="fill" class="width-100 d-none d-md-block">
<mat-select [(value)]="postData.Priority">
<mat-option [value]="99999861"><b>Normal</b> (4 dias para a execução da tarefa)</mat-option>
<mat-option [value]="99999862"><b>Urgente</b> (2 dias para a execução da tarefa)</mat-option>
<mat-option [value]="99999863"><b>Muito Urgente</b> (1 dia para a execução da tarefa)</mat-option>
<mat-option [value]="99999864"><b>Urgentíssimo</b> (8 horas para a execução da tarefa)</mat-option>
</mat-select>
</mat-form-field>
</div>
</div>
</div>
@@ -43,15 +60,23 @@
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
</div>
<div class="ion-input-class">
<ion-item class="ion-no-border ion-no-padding ion-no-margin">
<ion-label>Tipo de assunto</ion-label>
<ion-select
[(ngModel)]="selectedTypes"
(ngModelChange)="onSelectedTypesChanged($event)"
multiple="true" interface="alert" Cancel-text="Cancelar" required>
<ion-select-option *ngFor="let type of subjectTypes" value="{{type.Code}}">{{type.Description}}</ion-select-option>
</ion-select>
</ion-item>
<ion-item
class="ion-no-border ion-no-padding ion-no-margin d-md-none">
<ion-select
[(ngModel)]="selectedTypes"
(ngModelChange)="onSelectedTypesChanged($event)"
multiple="true" interface="alert" Cancel-text="Cancelar" required>
<ion-select-option *ngFor="let type of subjectTypes" value="{{type.Code}}">{{type.Description}}</ion-select-option>
</ion-select>
</ion-item>
<mat-form-field
appearance="fill"
class="width-100 d-none d-md-block">
<mat-select [formControl]="toppings" multiple>
<mat-option *ngFor="let type of subjectTypes" [value]="type.Code">{{type.Description}}</mat-option>
</mat-select>
</mat-form-field>
</div>
</div>
</div>
@@ -20,11 +20,30 @@ import { BadRequestPage } from 'src/app/shared/popover/bad-request/bad-request.p
import { SuccessMessagePage } from 'src/app/shared/popover/success-message/success-message.page';
import { ToastService } from 'src/app/services/toast.service';
import { AttendeesPageModal } from 'src/app/pages/events/attendees/attendees.page';
import { FormControl } from '@angular/forms';
import { NGX_MAT_DATE_FORMATS } from '@angular-material-components/datetime-picker';
import { NgxMatDateFormats } from '@angular-material-components/datetime-picker';
const CUSTOM_DATE_FORMATS: NgxMatDateFormats = {
parse: {
dateInput: "YYYY-MMMM-DD HH:mm"
},
display: {
dateInput: "DD MMM YYYY H:mm",
monthYearLabel: "MMM YYYY",
dateA11yLabel: "LL",
monthYearA11yLabel: "MMMM YYYY"
}
}
@Component({
selector: 'app-expedient-task-modal',
templateUrl: './expedient-task-modal.page.html',
styleUrls: ['./expedient-task-modal.page.scss'],
providers: [
{ provide: NGX_MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS },
]
})
export class ExpedientTaskModalPage implements OnInit {
@@ -46,7 +65,7 @@ export class ExpedientTaskModalPage implements OnInit {
loadedAttachments:any;
documents:SearchDocument[] = [];
subjectTypes:any;
subjectTypes:any[] = [];
selectedTypes: string[]=[];
postData: Despacho;
@@ -66,6 +85,11 @@ export class ExpedientTaskModalPage implements OnInit {
taskResult: any = {}
loggeduser: User;
toppings = new FormControl();
get toppingsValues() {
return this.toppings.value;
}
constructor(
private modalController: ModalController,
@@ -129,7 +153,7 @@ export class ExpedientTaskModalPage implements OnInit {
this.getSubjectType();
}
onSelectedTypesChanged(ev:any){
onSelectedTypesChanged(ev:any) {
console.log(ev);
if(ev.length > 1){
console.log(ev.filter(data => data != '99999850'));
@@ -190,6 +214,11 @@ export class ExpedientTaskModalPage implements OnInit {
}
});
docs.Attachments = DocumentToSave;
if (window.innerWidth >= 800) {
this.selectedTypes = this.toppingsValues
}
this.dispatchFolder.SubjectTypes = this.selectedTypes;
switch (this.loggeduser.Profile) {
@@ -97,27 +97,42 @@ export class ExpedienteDetailPage implements OnInit {
}
goBack() {
this.activatedRoute.paramMap.subscribe(params => {
switch (params["params"].caller) {
case 'events':
this.router.navigate(['/home',params["params"].caller]);
break;
case 'gabinete-digital':
let navigationExtras: NavigationExtras = {
queryParams: {
"expedientes": true,
if(this.task.Status == "Pending"){
if (window.innerWidth <= 800) {
this.router.navigate(['/home/gabinete-digital/pendentes']);
}
else {
let navigationExtras: NavigationExtras = {
queryParams: {
"pendentes": true,
}
}
if( window.innerWidth < 801) {
this.router.navigate(['/home/gabinete-digital/expediente']);
} else {
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
break;
}
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
});
}
else{
this.activatedRoute.paramMap.subscribe(params => {
switch (params["params"].caller) {
case 'events':
this.router.navigate(['/home',params["params"].caller]);
break;
case 'gabinete-digital':
let navigationExtras: NavigationExtras = {
queryParams: {
"expedientes": true,
}
}
if( window.innerWidth < 801) {
this.router.navigate(['/home/gabinete-digital/expediente']);
} else {
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
break;
}
});
}
}
sendExpedienteToPending() {
@@ -149,6 +164,7 @@ export class ExpedienteDetailPage implements OnInit {
"FsId": res.workflowInstanceDataFields.FsId,
"DocId": res.workflowInstanceDataFields.DocID,
"WorkflowName": res.workflowDisplayName,
"Status": res.workflowInstanceDataFields.Status,
}
//console.log('task', this.task);
@@ -2,7 +2,7 @@
<app-header></app-header>
</ion-header>
<ion-content>
<ion-refresher name="refresher" slot="fixed" (ionRefresh)="doRefresh()">
<ion-refresher name="refresher" slot="fixed" (ionRefresh)="doRefresh($event)">
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
<ion-refresher-content>
</ion-refresher-content>
@@ -19,7 +19,7 @@
<label>Expediente</label>
</div>
<div class="btn-refresh">
<button class="btn-no-color" (click)="doRefresh()">
<button class="btn-no-color" (click)="doRefresh($event)">
<ion-icon slot="end" class="title-icon" name="reload-circle"></ion-icon>
</button>
</div>
@@ -80,9 +80,10 @@ export class ExpedientePage implements OnInit {
});
}
doRefresh() {
doRefresh(event) {
this.LoadList();
setTimeout(() => {
event.target.complete();
}, 2000);
}
@@ -17,6 +17,7 @@
font-size: 18px !important;
}
.main-header{
display: flex;
font-family: Roboto;
background-color: #fff;
overflow:auto;
@@ -102,6 +102,7 @@ export class PedidoPage implements OnInit {
"DeadlineType": res.workflowInstanceDataFields.DeadlineType,
"ProcessInstanceID": res.workflowInstanceDataFields.InstanceID,
"activityInstanceName": res.activityInstanceName,
"Status": res.workflowInstanceDataFields.Status,
}
console.log(this.task);
}
@@ -126,6 +127,7 @@ export class PedidoPage implements OnInit {
"DeadlineType": res.workflowInstanceDataFields.DeadlineType,
"ProcessInstanceID": res.workflowInstanceDataFields.InstanceID,
"activityInstanceName": res.activityInstanceName,
"Status": res.workflowInstanceDataFields.Status,
}
console.log(this.task);
}
@@ -253,7 +255,7 @@ export class PedidoPage implements OnInit {
async openExpedientActionsModal(taskAction: any, task: any) {
let classs;
if( window.innerWidth <= 800){
if( window.innerWidth <= 800) {
classs = 'modal modal-desktop'
} else {
classs = 'modal modal-desktop showAsideOptions'
@@ -443,17 +445,32 @@ export class PedidoPage implements OnInit {
}
goBack() {
if (window.innerWidth <= 800) {
this.router.navigate(['/home/gabinete-digital/pedidos']);
} else {
let navigationExtras: NavigationExtras = {
queryParams: {
"pedidos": true,
if(this.task.Status == "Pending"){
if (window.innerWidth <= 800) {
this.router.navigate(['/home/gabinete-digital/pendentes']);
}
else {
let navigationExtras: NavigationExtras = {
queryParams: {
"pendentes": true,
}
}
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
}
else{
if (window.innerWidth <= 800) {
this.router.navigate(['/home/gabinete-digital/pedidos']);
}
else {
let navigationExtras: NavigationExtras = {
queryParams: {
"pedidos": true,
}
}
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
this.router.navigate(['/home/gabinete-digital'], navigationExtras);
}
}
}
@@ -30,22 +30,16 @@
<div class="width-100">
<div *ngIf="pendentesList">
<ion-list>
<ion-item
class="expediente ion-no-padding cursor-pointer"
<div
class="expediente ion-no-padding ion-no-margin cursor-pointer"
*ngFor = "let task of pendentesList"
(click)="viewTaskDetails(task.SerialNumber, task.WorkflowName)"
>
<!-- [routerLink]="['/home/gabinete-digital/expediente',task.SerialNumber]" -->
<div class="item width-100">
<div class="exp-top-detail">
<div class="exp-date">
<ion-label>{{ task.CreateDate | date: 'dd-MM-yy' }}</ion-label>
</div>
<div class="exp-remetente">
<ion-label>{{task.Senders}}</ion-label>
</div>
<div class="exp-workflow">
<span class="label">{{task.WorkflowName}}</span>
<div class="subject">
<ion-label>{{ task.Folio }}</ion-label>
</div>
<div class="exp-icon">
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
@@ -53,10 +47,20 @@
</div>
</div>
<div class="exp-bottom-detail">
<ion-label>{{ task.Folio }}</ion-label>
<div class="exp-remetente">
<ion-label>{{task.Senders}}</ion-label>
</div>
</div>
<div class="exp-middle-detail">
<div class="exp-workflow">
<span class="label">{{task.WorkflowName}}</span>
</div>
<div class="exp-date">
<ion-label>{{ task.CreateDate | date: 'dd-MM-yy' }}</ion-label>
</div>
</div>
</div>
</ion-item>
</div>
</ion-list>
</div>
@@ -50,14 +50,12 @@ ion-item{
--background: none;
}
.item {
//border-radius: 15px;
//box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.07);
/* border-radius: 15px;
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.07); */
//Sborder: solid 1px #e9e9e9;
background-color: var(--white);
margin: 0 auto;
//padding: 10px;
margin-bottom: 10px;
overflow: hidden;
overflow: auto;
}
.div-content-expediente{
width: 100%;
@@ -98,7 +96,6 @@ ion-item{
margin: 0;
}
.span-left{
/* border: 1px solid red; */
float: left;
font-size: 12px;
padding-left: 18px;
@@ -113,7 +110,12 @@ ion-item{
/* New CSS */
.expediente{
padding-top: 10px;
border-radius: 15px;
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.07);
border:1px solid #e9e9e9 !important;
background-color: var(--white);
margin-bottom: 10px !important;
padding: 15px;
}
.exp-list-item{
//width: 368px;
@@ -121,61 +123,88 @@ ion-item{
/* border-bottom: 1px solid gray; */
margin: 10px auto;
}
.exp-top-detail{
width: 100%;
float: left;
font-family: Roboto;
font-size: 12pt;
font-weight: 700;
color: #0d89d1;
padding-left: 3px;
.subject{
width: 84%;
float: left;
}
.exp-icon{
width: fit-content;
float: right;
/* font-size: 13px; */
margin: 0 !important;
padding: 0 !important;
ion-icon{
font-size: 12pt;
color: #42b9fe;
float: left;
}
label{
font-size: 10pt;
}
}
}
.exp-middle-detail, .exp-bottom-detail{
margin-bottom: 5px;
}
.exp-middle-detail{
font-size: 12pt;
width: 100%;
overflow: auto;
}
.exp-date{
width: auto;
font-family: Roboto;
font-size: 13px;
font-weight: normal;
font-stretch: normal;
font-style: normal;
line-height: normal;
letter-spacing: normal;
color: #797979;
float: left;
}
.exp-workflow{
float: left;
margin-left: 15px;
.label{
border-radius: 20px;
background: #ffb703;
font-size: 12px;
.exp-workflow{
float: left;
margin: 0 !important;
.label{
border-radius: 15px;
background: #ffb703;
/* font-size: 12px; */
float: right;
padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff;
}
}
.exp-date{
width: auto;
font-family: Roboto;
font-size: 10pt;
font-weight: normal;
font-stretch: normal;
font-style: normal;
line-height: normal;
letter-spacing: normal;
color: #797979;
float: right;
padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff;
}
}
.exp-remetente{
//width: 200px;
font-family: Roboto;
font-size: 13px;
font-weight: normal;
color: #000000;
float: left;
margin-left: 16px;
}
.exp-icon{
width: 45px;
float: right;
font-size: 13px;
}
.exp-icon ion-icon{
font-size: 25px;
color: #42b9fe;
}
}
.exp-bottom-detail{
float: left;
font-family: Roboto;
font-size: 16px;
font-weight: 700;
color: #0d89d1;
font-size: 8pt;
width: 100%;
overflow: auto;
padding-left: 3px;
.exp-remetente{
//width: 200px;
font-family: Roboto;
/* font-size: 13px; */
font-weight: normal;
color: #000000;
float: left;
/* border: 1px solid red; */
}
}
.div-top-header{
width: 400px;
@@ -44,9 +44,6 @@ export class PendentesPage implements OnInit {
//Inicializar segment
this.segment = "despachos";
this.LoadList();
this.authService.userData$.subscribe((res:any)=>{
console.log(res);
});
}
segmentChanged(ev: any) {
@@ -71,7 +68,6 @@ export class PendentesPage implements OnInit {
}
openExpedientDetailPage(data){
console.log(data);
this.openExpedientDetail.emit(data);
}
@@ -86,6 +82,7 @@ export class PendentesPage implements OnInit {
let expedientes_pr = await this.processes.GetTasksList("Expediente do Presidente", false).toPromise();
let pendentes = despachos.concat(pareceres, deferimentos, expedientes, expedientes_pr).reverse().filter(data => data.workflowInstanceDataFields.Status == "Pending");
console.log(pendentes);
pendentes.forEach(element => {
let DocId = element.workflowInstanceDataFields.FolderID;
let ApplicationId = element.workflowInstanceDataFields.ApplicationId;
@@ -107,6 +104,7 @@ export class PendentesPage implements OnInit {
"DocId": element.workflowInstanceDataFields.DocIdDiferimento,
"WorkflowName": element.workflowDisplayName,
"activityInstanceName": element.activityInstanceName,
"Status": element.workflowInstanceDataFields.Status,
}
this.pendentesList.push(task);
},
@@ -122,6 +120,7 @@ export class PendentesPage implements OnInit {
"DocId": element.workflowInstanceDataFields.DocId,
"WorkflowName": element.workflowDisplayName,
"activityInstanceName": element.activityInstanceName,
"Status": element.workflowInstanceDataFields.Status,
}
this.pendentesList.push(task);
});
@@ -138,7 +137,6 @@ export class PendentesPage implements OnInit {
}
async viewTaskDetails(serialNumber:string, workflowName:string) {
console.log(this.profile);
if(workflowName == 'Despacho'){
this.goToDespacho(serialNumber);
}
@@ -28,7 +28,7 @@ export class ViewPublicationsPage implements OnInit {
private activatedRoute: ActivatedRoute,
private router: Router,
)
{
{
this.item = new PublicationFolder();
this.activatedRoute.paramMap.subscribe(params => {
console.log(params);
@@ -46,6 +46,7 @@ export class ViewPublicationsPage implements OnInit {
this.getPublications();
this.getPublicationDetail();
}
doRefresh(event) {
this.getPublications();
@@ -55,18 +56,22 @@ export class ViewPublicationsPage implements OnInit {
event.target.complete();
}, 3000);
}
close(){
close() {
this.modalController.dismiss();
}
goBack(){
goBack() {
this.router.navigate(['/home/publications']);
}
getPublicationDetail(){
this.publications.GetPublicationFolderById(this.folderId).subscribe(res=>{
console.log(res);
this.item = res;
});
}
getPublications(){
this.showLoader = true;