mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 20:47:54 +00:00
fix
This commit is contained in:
@@ -79,9 +79,7 @@ import { BrowserTracing } from '@sentry/tracing';
|
|||||||
import { AngularFireModule } from '@angular/fire';
|
import { AngularFireModule } from '@angular/fire';
|
||||||
import { AngularFireMessagingModule } from '@angular/fire/messaging';
|
import { AngularFireMessagingModule } from '@angular/fire/messaging';
|
||||||
import { firebaseConfig } from '../firebase-config';
|
import { firebaseConfig } from '../firebase-config';
|
||||||
import { EditorModule } from '@tinymce/tinymce-angular';
|
import { EditorModule } from '@tinymce/tinymce-angular';;
|
||||||
import { DeplomaOptionsPageModule } from './shared/popover/desktop/deploma-options/deploma-options.module';
|
|
||||||
import { DiplomaOptionsPage } from './shared/popover/desktop/deploma-options/deploma-options.page';
|
|
||||||
import { CreateProcessPageModule } from './modals/create-process/create-process.module';
|
import { CreateProcessPageModule } from './modals/create-process/create-process.module';
|
||||||
import { CreateProcessPage } from './modals/create-process/create-process.page';
|
import { CreateProcessPage } from './modals/create-process/create-process.page';
|
||||||
import { LoggingInterceptorService } from './services/logging-interceptor.service';
|
import { LoggingInterceptorService } from './services/logging-interceptor.service';
|
||||||
@@ -91,6 +89,8 @@ import { tokenInterceptor } from './interceptors/token.interceptors';
|
|||||||
|
|
||||||
import { InputFilterDirective } from './services/directives/input-filter.directive';
|
import { InputFilterDirective } from './services/directives/input-filter.directive';
|
||||||
import { VisibilityDirective } from './services/directives/visibility.directive';
|
import { VisibilityDirective } from './services/directives/visibility.directive';
|
||||||
|
import { DeplomaOptionsPageModule } from './shared/popover/deploma-options/deploma-options.module';
|
||||||
|
import { DiplomaOptionsPage } from './shared/popover/deploma-options/deploma-options.page';
|
||||||
// import { ServiceWorkerModule } from '@angular/service-worker';
|
// import { ServiceWorkerModule } from '@angular/service-worker';
|
||||||
// import { AngularFireModule } from '@angular/fire';
|
// import { AngularFireModule } from '@angular/fire';
|
||||||
// import { AngularFireMessagingModule } from '@angular/fire/messaging';
|
// import { AngularFireMessagingModule } from '@angular/fire/messaging';
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ const routes: Routes = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'request-options',
|
path: 'request-options',
|
||||||
loadChildren: () => import('../shared/popover/desktop/request-options/request-options.module').then( m => m.RequestOptionsPageModule)
|
loadChildren: () => import('../shared/popover/request-options/request-options.module').then( m => m.RequestOptionsPageModule)
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ export class CreateProcessPage implements OnInit {
|
|||||||
taskDescription: string;
|
taskDescription: string;
|
||||||
loadedAttachments: any;
|
loadedAttachments: any;
|
||||||
subjectTypes: any;
|
subjectTypes: any;
|
||||||
selectedTypes: string[] = [];
|
selectedTypes: string = '';
|
||||||
placeholderSubject: string;
|
placeholderSubject: string;
|
||||||
|
|
||||||
postData: Despacho;
|
postData: Despacho;
|
||||||
@@ -127,7 +127,7 @@ export class CreateProcessPage implements OnInit {
|
|||||||
this.participants = this.participants = new Array();
|
this.participants = this.participants = new Array();
|
||||||
//Initialize SubjectTypes Array with the value "Indefinido"
|
//Initialize SubjectTypes Array with the value "Indefinido"
|
||||||
if(this.loggeduser.Profile == 'PR') {
|
if(this.loggeduser.Profile == 'PR') {
|
||||||
this.selectedTypes = ['99999850'];
|
this.selectedTypes = '99999850';
|
||||||
this.placeholderSubject = 'Indefinido'
|
this.placeholderSubject = 'Indefinido'
|
||||||
} else {
|
} else {
|
||||||
this.placeholderSubject = 'Selecione o tipo de assunto*'
|
this.placeholderSubject = 'Selecione o tipo de assunto*'
|
||||||
@@ -199,7 +199,7 @@ export class CreateProcessPage implements OnInit {
|
|||||||
this.selectedTypes = ev.filter(data => data != '99999850');
|
this.selectedTypes = ev.filter(data => data != '99999850');
|
||||||
}
|
}
|
||||||
if (ev.length == 0) {
|
if (ev.length == 0) {
|
||||||
this.selectedTypes = ["99999850"];
|
this.selectedTypes = "99999850";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,6 +211,8 @@ export class CreateProcessPage implements OnInit {
|
|||||||
this.processes.GetSubjectType().subscribe(res => {
|
this.processes.GetSubjectType().subscribe(res => {
|
||||||
// console.log('subjectTypes',res)
|
// console.log('subjectTypes',res)
|
||||||
this.subjectTypes = res;
|
this.subjectTypes = res;
|
||||||
|
this.placeholderSubject = 'Selecione o tipo de assunto*'
|
||||||
|
this.selectedTypes = '99999844';
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,9 +33,29 @@ export class Event{
|
|||||||
EventRecurrence: EventRecurrence;
|
EventRecurrence: EventRecurrence;
|
||||||
Name?: string
|
Name?: string
|
||||||
Attachments?: Attachment[];
|
Attachments?: Attachment[];
|
||||||
|
HumanDate?: string;
|
||||||
|
IsAllDayEvent?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
interface EventList {
|
||||||
|
HasAttachments: boolean;
|
||||||
|
IsAllDayEvent: boolean;
|
||||||
|
EventId: string;
|
||||||
|
Subject: string;
|
||||||
|
Location: string;
|
||||||
|
CalendarId: string;
|
||||||
|
CalendarName: string;
|
||||||
|
StartDate: string;
|
||||||
|
EndDate: string;
|
||||||
|
Schedule: string;
|
||||||
|
RequiredAttendees: any; // Adjust type as per your data
|
||||||
|
OptionalAttendees: any; // Adjust type as per your data
|
||||||
|
HumanDate: string;
|
||||||
|
TimeZone: string;
|
||||||
|
IsPrivate: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
// event to approve details ================================================
|
// event to approve details ================================================
|
||||||
export interface Originator {
|
export interface Originator {
|
||||||
email: string;
|
email: string;
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ export class Folder{
|
|||||||
SourceType:string;
|
SourceType:string;
|
||||||
SourceId:string;
|
SourceId:string;
|
||||||
DeadlineType: string;
|
DeadlineType: string;
|
||||||
SubjectTypes: string[];
|
SubjectTypes: string;
|
||||||
NumberPDPP:string;
|
NumberPDPP:string;
|
||||||
}
|
}
|
||||||
@@ -260,7 +260,8 @@
|
|||||||
<div class="description">
|
<div class="description">
|
||||||
<p class="m-0">{{event.event.Subject}}</p>
|
<p class="m-0">{{event.event.Subject}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="location">{{event.event.Subject}}</div>
|
|
||||||
|
<div class="location">{{event.event.Location}}</div>
|
||||||
<div class="font-13 calendar-owner"*ngIf="eventService.getCalendarOwnNameByCalendarId(event.event.CalendarId) == 'Meu calendario'">{{SessionStore.user.FullName}} </div>
|
<div class="font-13 calendar-owner"*ngIf="eventService.getCalendarOwnNameByCalendarId(event.event.CalendarId) == 'Meu calendario'">{{SessionStore.user.FullName}} </div>
|
||||||
<ng-template #other_content>{{eventService.getCalendarOwnNameByCalendarId(event.event.CalendarId)}}</ng-template>
|
<ng-template #other_content>{{eventService.getCalendarOwnNameByCalendarId(event.event.CalendarId)}}</ng-template>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import { RouteService } from 'src/app/services/route.service';
|
|||||||
import { SessionStore } from 'src/app/store/session.service';
|
import { SessionStore } from 'src/app/store/session.service';
|
||||||
import { HttpErrorHandle} from 'src/app/services/http-error-handle.service'
|
import { HttpErrorHandle} from 'src/app/services/http-error-handle.service'
|
||||||
import { AttachmentsService } from 'src/app/services/attachments.service';
|
import { AttachmentsService } from 'src/app/services/attachments.service';
|
||||||
|
import { DateService } from 'src/app/services/date.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-view-event',
|
selector: 'app-view-event',
|
||||||
@@ -70,6 +71,7 @@ export class ViewEventPage implements OnInit {
|
|||||||
private RouteService: RouteService,
|
private RouteService: RouteService,
|
||||||
private httpErrorHandle: HttpErrorHandle,
|
private httpErrorHandle: HttpErrorHandle,
|
||||||
private attachmentsService: AttachmentsService,
|
private attachmentsService: AttachmentsService,
|
||||||
|
private dateService: DateService
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
|
||||||
@@ -191,6 +193,7 @@ export class ViewEventPage implements OnInit {
|
|||||||
if(this.sesseionStora.user.Profile == 'MDGPR' || this.sesseionStora.user.Profile == 'PR') {
|
if(this.sesseionStora.user.Profile == 'MDGPR' || this.sesseionStora.user.Profile == 'PR') {
|
||||||
this.eventsService.getEvent(this.eventId).subscribe(res => {
|
this.eventsService.getEvent(this.eventId).subscribe(res => {
|
||||||
|
|
||||||
|
res = this.dateService.fixDate(res as any)
|
||||||
this.loadedEvent = res;
|
this.loadedEvent = res;
|
||||||
this.setTimeZone()
|
this.setTimeZone()
|
||||||
// this.addEventToDb(res);
|
// this.addEventToDb(res);
|
||||||
@@ -218,6 +221,7 @@ export class ViewEventPage implements OnInit {
|
|||||||
/* const div = document.createElement("div")
|
/* const div = document.createElement("div")
|
||||||
div.innerHTML = res.Body.Text
|
div.innerHTML = res.Body.Text
|
||||||
res.Body.Text = div.innerText */
|
res.Body.Text = div.innerText */
|
||||||
|
res = this.dateService.fixDate(res as any)
|
||||||
this.loadedEvent = res;
|
this.loadedEvent = res;
|
||||||
this.setTimeZone()
|
this.setTimeZone()
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import { DiplomaPageRoutingModule } from './diploma-routing.module';
|
|||||||
|
|
||||||
import { DiplomaPage } from './diploma.page';
|
import { DiplomaPage } from './diploma.page';
|
||||||
import { BtnModalDismissPageModule } from 'src/app/shared/btn-modal-dismiss/btn-modal-dismiss.module';
|
import { BtnModalDismissPageModule } from 'src/app/shared/btn-modal-dismiss/btn-modal-dismiss.module';
|
||||||
import { DiplomaOptionsPage } from 'src/app/shared/popover/desktop/deploma-options/deploma-options.page';
|
|
||||||
import { TaskDetailsPageModule } from 'src/app/shared/gabinete-digital/generic/task-details/task-details.module';
|
import { TaskDetailsPageModule } from 'src/app/shared/gabinete-digital/generic/task-details/task-details.module';
|
||||||
|
import { DiplomaOptionsPage } from 'src/app/shared/popover/deploma-options/deploma-options.page';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
|||||||
+9
-8
@@ -79,7 +79,7 @@ export class ExpedientTaskModalPage implements OnInit {
|
|||||||
documents:SearchList[] = [];
|
documents:SearchList[] = [];
|
||||||
|
|
||||||
subjectTypes:any;
|
subjectTypes:any;
|
||||||
selectedTypes: string[]=[];
|
selectedTypes: string = ''
|
||||||
SearchFolder: any = []
|
SearchFolder: any = []
|
||||||
|
|
||||||
postData: Despacho;
|
postData: Despacho;
|
||||||
@@ -177,12 +177,10 @@ export class ExpedientTaskModalPage implements OnInit {
|
|||||||
// console.log('this.document', this.document)
|
// console.log('this.document', this.document)
|
||||||
|
|
||||||
|
|
||||||
if(this.loggeduser.Profile == 'PR') {
|
|
||||||
this.selectedTypes = ['99999850'];
|
|
||||||
this.placeholderSubject = 'Indefinido'
|
this.placeholderSubject = 'Indefinido'
|
||||||
} else {
|
|
||||||
this.placeholderSubject = 'Selecione o tipo de assunto*'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.postData = new Despacho();
|
this.postData = new Despacho();
|
||||||
this.participants = this.participants = new Array();
|
this.participants = this.participants = new Array();
|
||||||
@@ -230,7 +228,7 @@ export class ExpedientTaskModalPage implements OnInit {
|
|||||||
this.selectedTypes = ev.filter(data => data != '99999850');
|
this.selectedTypes = ev.filter(data => data != '99999850');
|
||||||
}
|
}
|
||||||
if(ev.length == 0){
|
if(ev.length == 0){
|
||||||
this.selectedTypes = ["99999850"];
|
this.selectedTypes = "99999850";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,6 +241,9 @@ export class ExpedientTaskModalPage implements OnInit {
|
|||||||
this.processes.GetSubjectType().subscribe(res=>{
|
this.processes.GetSubjectType().subscribe(res=>{
|
||||||
|
|
||||||
this.subjectTypes = res;
|
this.subjectTypes = res;
|
||||||
|
|
||||||
|
this.placeholderSubject = 'Selecione o tipo de assunto*'
|
||||||
|
this.selectedTypes = '99999844';
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,76 +3,84 @@
|
|||||||
<div class="d-flex overflow-x-auto pa-10 width-100" style="background-color: #d9d9d9;" *ngIf="showAttachmentList">
|
<div class="d-flex overflow-x-auto pa-10 width-100" style="background-color: #d9d9d9;" *ngIf="showAttachmentList">
|
||||||
|
|
||||||
<div *ngFor="let attachment of taskViewerAttachment; let i = index"
|
<div *ngFor="let attachment of taskViewerAttachment; let i = index"
|
||||||
class="ion-no-margin ion-no-padding cursor-pointer attachment-list" class="pa-10 mx-10 card-text"
|
class="ion-no-margin ion-no-padding cursor-pointer attachment-list" class="pa-10 mx-10 card-text" [ngClass]="{'selected-attachment': i === selectedIndex}"
|
||||||
>
|
>
|
||||||
<div class="attachment" (touchstart)="startHold($event, attachment, i)" (touchend)="endHold()" (click)="clickDocument(attachment, i )">
|
<div class="attachment" (click)="clickDocument(attachment, i )">
|
||||||
|
|
||||||
<div class="attach-title-item tex-left">
|
<div class="attach-title-item tex-left">
|
||||||
{{ attachment.Assunto || "Sem assunto" }}
|
<div>{{ attachment.Assunto || "Sem assunto" }}</div>
|
||||||
<br>
|
<div class="user" >
|
||||||
{{ attachment.Sender }}
|
{{ attachment.Sender }}
|
||||||
<br>
|
</div>
|
||||||
<span class="document-type" *ngIf="isSelectedAttachmentIsDraft(attachment)">Rascunho</span>
|
<span class="document-type" *ngIf="isSelectedAttachmentIsDraft(attachment)">Rascunho</span>
|
||||||
<br *ngIf="isSelectedAttachmentIsDraft(attachment)">
|
<br *ngIf="isSelectedAttachmentIsDraft(attachment)">
|
||||||
{{ attachment.DocDate | date: 'dd/MM/yy' }}
|
<div class="date d-flex justify-content-between">
|
||||||
|
<div>
|
||||||
|
{{ attachment.DocDate | date: 'dd/MM/yy' }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<button (click)="doSomething($event);" mat-icon-button [matMenuTriggerFor]="menu" aria-label="Example icon-button with a menu">
|
||||||
|
<mat-icon>more_vert</mat-icon>
|
||||||
|
</button>
|
||||||
|
<mat-menu #menu="matMenu">
|
||||||
|
<button (click)="openExpedientActionsModal('0', attachment)" mat-menu-item>
|
||||||
|
<span>Efetuar Despacho</span>
|
||||||
|
</button>
|
||||||
|
<button (click)="openExpedientActionsModal('1', attachment)" mat-menu-item >
|
||||||
|
<span>Solicitar Parecer</span>
|
||||||
|
</button>
|
||||||
|
<button *ngIf="!p.userRole(['PR']) && !p.userPermission([p.permissionList.Gabinete.pr_tasks])" (click)="openExpedientActionsModal('1', attachment)" mat-menu-item >
|
||||||
|
<span>Pedido de Deferimento</span>
|
||||||
|
</button>
|
||||||
|
<button (click)="openBookMeetingModal(attachment)" mat-menu-item>
|
||||||
|
<span>Marcar Reunião</span>
|
||||||
|
</button>
|
||||||
|
<button *ngIf="p.userRole('PR')" mat-menu-item>
|
||||||
|
<span>Assinar</span>
|
||||||
|
</button>
|
||||||
|
</mat-menu>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<button mat-icon-button [matMenuTriggerFor]="menu" aria-label="Example icon-button with a menu" style="
|
|
||||||
width: 0px;
|
|
||||||
height: 0px;
|
|
||||||
/* top: -40px; */
|
|
||||||
position: absolute;
|
|
||||||
"></button>
|
|
||||||
<mat-menu #menu="matMenu">
|
|
||||||
<button (click)="openExpedientActionsModal('0', attachment)" mat-menu-item>
|
|
||||||
<span>Efetuar Despacho</span>
|
|
||||||
</button>
|
|
||||||
<button (click)="openExpedientActionsModal('1', attachment)" mat-menu-item >
|
|
||||||
<span>Solicitar Parecer</span>
|
|
||||||
</button>
|
|
||||||
<button *ngIf="!p.userRole(['PR']) && !p.userPermission([p.permissionList.Gabinete.pr_tasks])" (click)="openExpedientActionsModal('1', attachment)" mat-menu-item >
|
|
||||||
<span>Pedido de Deferimento</span>
|
|
||||||
</button>
|
|
||||||
<button (click)="openBookMeetingModal(attachment)" mat-menu-item>
|
|
||||||
<span>Marcar Reunião</span>
|
|
||||||
</button>
|
|
||||||
<button *ngIf="p.userRole('PR')" mat-menu-item>
|
|
||||||
<span>Assinar</span>
|
|
||||||
</button>
|
|
||||||
</mat-menu>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="flex-1" [ngClass]="{'container-img': loading}">
|
||||||
|
<div [ngClass]="{'d-none': draft}" #iframeContainer class="height-100 flex-1 " [ngClass]="{'container-img': loading}" ></div>
|
||||||
|
|
||||||
<div [ngClass]="{'d-none': draft}" #iframeContainer class="height-100 flex-1" ></div>
|
<editor
|
||||||
|
*ngIf="taskViewerAttachment[selectedIndex].content"
|
||||||
|
class="container-img height-100 flex-1"
|
||||||
|
apiKey="wr5dk69kive0qr9ig6y5spqvlj3a0tsiwnzdsexnz241k69p"
|
||||||
|
[(ngModel)]="editorContent"
|
||||||
|
[init]="{
|
||||||
|
save_onsavecallback: 'onSaveContent',
|
||||||
|
language: 'pt_PT',
|
||||||
|
height: '100%',
|
||||||
|
menubar: false,
|
||||||
|
autosave_interval:'3s',
|
||||||
|
plugins: [
|
||||||
|
'advlist autolink autosave lists link image charmap print preview anchor',
|
||||||
|
'searchreplace visualblocks code fullscreen',
|
||||||
|
'insertdatetime media table paste code help wordcount print'
|
||||||
|
],
|
||||||
|
toolbar:
|
||||||
|
'undo redo | formatselect | bold italic backcolor | \
|
||||||
|
alignleft aligncenter alignright alignjustify | \
|
||||||
|
bullist numlist outdent indent | removeformat | print | save | help ' }"
|
||||||
|
|
||||||
|
initialValue='{{content}}'
|
||||||
|
[(ngModel)]="content"
|
||||||
|
></editor>
|
||||||
|
</div>
|
||||||
|
|
||||||
<editor
|
|
||||||
*ngIf="taskViewerAttachment[selectedIndex].content"
|
|
||||||
class="container-img height-100 flex-1"
|
|
||||||
apiKey="wr5dk69kive0qr9ig6y5spqvlj3a0tsiwnzdsexnz241k69p"
|
|
||||||
[(ngModel)]="editorContent"
|
|
||||||
[init]="{
|
|
||||||
save_onsavecallback: 'onSaveContent',
|
|
||||||
language: 'pt_PT',
|
|
||||||
height: '100%',
|
|
||||||
menubar: false,
|
|
||||||
autosave_interval:'3s',
|
|
||||||
plugins: [
|
|
||||||
'advlist autolink autosave lists link image charmap print preview anchor',
|
|
||||||
'searchreplace visualblocks code fullscreen',
|
|
||||||
'insertdatetime media table paste code help wordcount print'
|
|
||||||
],
|
|
||||||
toolbar:
|
|
||||||
'undo redo | formatselect | bold italic backcolor | \
|
|
||||||
alignleft aligncenter alignright alignjustify | \
|
|
||||||
bullist numlist outdent indent | removeformat | print | save | help ' }"
|
|
||||||
|
|
||||||
initialValue='{{content}}'
|
|
||||||
[(ngModel)]="content"
|
|
||||||
></editor>
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -17,11 +17,6 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.selected-card {
|
|
||||||
border: 3px solid #ffb703;
|
|
||||||
color: #3498db;
|
|
||||||
}
|
|
||||||
|
|
||||||
iframe {
|
iframe {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -29,7 +24,11 @@ iframe {
|
|||||||
|
|
||||||
|
|
||||||
.selected-attachment {
|
.selected-attachment {
|
||||||
border: 2px solid #3498db; /* You can customize the border style and color */
|
border: 3px solid #ffb703 !important;
|
||||||
|
color: #3498db !important;
|
||||||
|
.user, .date {
|
||||||
|
color: #3498db !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.document-type{
|
.document-type{
|
||||||
@@ -39,3 +38,17 @@ iframe {
|
|||||||
padding: 5px 13.5px 5px 13.5px;
|
padding: 5px 13.5px 5px 13.5px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.attach-title-item {
|
||||||
|
.user, .date {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.container-img {
|
||||||
|
background-image: url(/assets/gif/theme/gov/Blocks-loader.svg);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position-x: center;
|
||||||
|
background-position-y: center;
|
||||||
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ export class ViewerAttachmentPage implements OnInit {
|
|||||||
content: ""
|
content: ""
|
||||||
private saveTimeout: any;
|
private saveTimeout: any;
|
||||||
draft = false
|
draft = false
|
||||||
|
loading = false
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
public middlewareRepositoryService: MiddlewareRepositoryService,
|
public middlewareRepositoryService: MiddlewareRepositoryService,
|
||||||
@@ -56,8 +57,11 @@ export class ViewerAttachmentPage implements OnInit {
|
|||||||
this.draft = this.isSelectedAttachmentIsDraft(this.taskViewerAttachment[this.selectedIndex])
|
this.draft = this.isSelectedAttachmentIsDraft(this.taskViewerAttachment[this.selectedIndex])
|
||||||
let count = 0
|
let count = 0
|
||||||
|
|
||||||
|
this.loading = true
|
||||||
|
|
||||||
if(this.selectedIndex == i && !this.firstLoad) {
|
if(this.selectedIndex == i && !this.firstLoad) {
|
||||||
this.firstLoad = false
|
this.firstLoad = false
|
||||||
|
this.loading = false
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,24 +86,29 @@ export class ViewerAttachmentPage implements OnInit {
|
|||||||
newIframe.width = '100%'
|
newIframe.width = '100%'
|
||||||
newIframe.height = '100%'
|
newIframe.height = '100%'
|
||||||
this.iframeContainer.nativeElement.innerHTML = ""
|
this.iframeContainer.nativeElement.innerHTML = ""
|
||||||
|
|
||||||
|
setTimeout
|
||||||
this.iframeContainer.nativeElement.appendChild(newIframe)
|
this.iframeContainer.nativeElement.appendChild(newIframe)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.iframeContainer.nativeElement.innerHTML = "Sem documento"
|
this.iframeContainer.nativeElement.innerHTML = "Sem documento"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.loading = false
|
||||||
this.iframeContainer.nativeElement.style.display = 'flex'
|
this.iframeContainer.nativeElement.style.display = 'flex'
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
this.loading = false
|
||||||
this.iframeContainer.nativeElement.style.display = 'none'
|
this.iframeContainer.nativeElement.style.display = 'none'
|
||||||
}
|
}
|
||||||
|
|
||||||
}, 1000)
|
}, 1000)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.clickDocument(viewerAttachment, i);
|
this.clickDocument(viewerAttachment, i);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
validateParams() {
|
validateParams() {
|
||||||
@@ -163,4 +172,9 @@ export class ViewerAttachmentPage implements OnInit {
|
|||||||
openBookMeetingModal(Document) {
|
openBookMeetingModal(Document) {
|
||||||
window['TaskDetailsPage-openBookMeetingModal'](Document)
|
window['TaskDetailsPage-openBookMeetingModal'](Document)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
doSomething(e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
// do other stuff...
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -142,11 +142,12 @@ export class ListBoxService {
|
|||||||
|
|
||||||
let i = 1;
|
let i = 1;
|
||||||
|
|
||||||
// create event between date
|
//create event between date
|
||||||
while (startDate.getFullYear() != endDate.getFullYear() ||
|
while (startDate.getFullYear() != endDate.getFullYear() ||
|
||||||
startDate.getMonth() != endDate.getMonth() ||
|
startDate.getMonth() != endDate.getMonth() ||
|
||||||
startDate.getDate() != endDate.getDate()) {
|
startDate.getDate() != endDate.getDate()) {
|
||||||
|
|
||||||
|
console.log("while", event)
|
||||||
const newDate = startDate.setDate(startDate.getDate()+ i)
|
const newDate = startDate.setDate(startDate.getDate()+ i)
|
||||||
let otherDays = this.dateService.getDay(newDate)
|
let otherDays = this.dateService.getDay(newDate)
|
||||||
|
|
||||||
@@ -162,7 +163,6 @@ export class ListBoxService {
|
|||||||
startDate.getMonth() != endDate.getMonth() ||
|
startDate.getMonth() != endDate.getMonth() ||
|
||||||
startDate.getDate() != endDate.getDate())) {
|
startDate.getDate() != endDate.getDate())) {
|
||||||
// last push
|
// last push
|
||||||
|
|
||||||
const EndEvent = this.transForm(event, {startMany: false, endMany: true, middle: false})
|
const EndEvent = this.transForm(event, {startMany: false, endMany: true, middle: false})
|
||||||
if(this.CanPush(event, selectedDate)) {days[otherDays].push(EndEvent) ; this.push(event, year)}
|
if(this.CanPush(event, selectedDate)) {days[otherDays].push(EndEvent) ; this.push(event, year)}
|
||||||
|
|
||||||
@@ -188,8 +188,6 @@ export class ListBoxService {
|
|||||||
if(this.CanPush(event, selectedDate) && diffDays != 2) { days[day].push(event) ; this.push(event, year) }
|
if(this.CanPush(event, selectedDate) && diffDays != 2) { days[day].push(event) ; this.push(event, year) }
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// remove days that haven't event
|
// remove days that haven't event
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
|
import { EventList } from '../models/agenda/AgendaEventList';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
@@ -30,7 +31,6 @@ export class DateService {
|
|||||||
|
|
||||||
if (startTimeSamp < endTimeSamp && (endMinutes + endHours) == 0) {
|
if (startTimeSamp < endTimeSamp && (endMinutes + endHours) == 0) {
|
||||||
endTime = new Date(endTime);
|
endTime = new Date(endTime);
|
||||||
endTime.setSeconds(endTime.getSeconds() - 1);
|
|
||||||
return new Date(endTime)
|
return new Date(endTime)
|
||||||
} else {
|
} else {
|
||||||
return new Date(endTime)
|
return new Date(endTime)
|
||||||
@@ -42,4 +42,25 @@ export class DateService {
|
|||||||
getDay(date) {
|
getDay(date) {
|
||||||
return (((new Date (date)).getDate())).toString().padStart(2,'0')
|
return (((new Date (date)).getDate())).toString().padStart(2,'0')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fixDate(res: EventList) {
|
||||||
|
if(res.IsAllDayEvent && this.deferenceBetweenDays(new Date(res.StartDate), new Date(res.EndDate)) >= 1) {
|
||||||
|
|
||||||
|
const date = new Date(res.EndDate);
|
||||||
|
|
||||||
|
date.setDate(date.getDate() -1);
|
||||||
|
|
||||||
|
const _date = date.getDate();
|
||||||
|
const month = date.getMonth() + 1;
|
||||||
|
const fullYear = date.getFullYear();
|
||||||
|
const formattedDate = `${fullYear}-${month}-${_date} 23:59`;
|
||||||
|
res.EndDate = formattedDate
|
||||||
|
|
||||||
|
console.log('reduze')
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return res as any
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Event, EventToApproveEdit } from '../models/event.model';
|
import { Event, EventToApproveEdit, } from '../models/event.model';
|
||||||
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
||||||
import { Observable, from } from 'rxjs';
|
import { Observable, from } from 'rxjs';
|
||||||
import { environment } from 'src/environments/environment';
|
import { environment } from 'src/environments/environment';
|
||||||
@@ -626,6 +626,11 @@ export class EventsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private deferenceBetweenDays(start: any, end: any) {
|
||||||
|
const diffTime = Math.abs(end - start);
|
||||||
|
return Math.ceil(diffTime / (1000 * 60 * 60 * 24));
|
||||||
|
}
|
||||||
|
|
||||||
async getEventsByCalendarId( startdate: string, enddate: string, calendarId: any) {
|
async getEventsByCalendarId( startdate: string, enddate: string, calendarId: any) {
|
||||||
const calendars = SessionStore.user.OwnerCalendars.concat(SessionStore.user.SharedCalendars)
|
const calendars = SessionStore.user.OwnerCalendars.concat(SessionStore.user.SharedCalendars)
|
||||||
const agendasCalendars = calendars.filter( e => e.CalendarId == calendarId)
|
const agendasCalendars = calendars.filter( e => e.CalendarId == calendarId)
|
||||||
@@ -652,7 +657,30 @@ export class EventsService {
|
|||||||
params: params
|
params: params
|
||||||
};
|
};
|
||||||
|
|
||||||
const calendar = await this.http.get<Event[]>(`${geturl}`, options).toPromise()
|
let calendar = await this.http.get<EventList[]>(`${geturl}`, options).toPromise()
|
||||||
|
|
||||||
|
calendar = calendar.map(e => {
|
||||||
|
if(e.IsAllDayEvent && this.deferenceBetweenDays(new Date(e.StartDate), new Date(e.EndDate)) >= 1) {
|
||||||
|
|
||||||
|
const date = new Date(e.EndDate);
|
||||||
|
|
||||||
|
date.setDate(date.getDate() -1);
|
||||||
|
|
||||||
|
const _date = date.getDate();
|
||||||
|
const month = date.getMonth() + 1;
|
||||||
|
const fullYear = date.getFullYear();
|
||||||
|
const formattedDate = `${fullYear}-${month}-${_date} 23:59`;
|
||||||
|
e.EndDate = formattedDate
|
||||||
|
|
||||||
|
console.log('reduze')
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return e
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log({calendar})
|
||||||
|
|
||||||
|
|
||||||
result = result.concat(calendar)
|
result = result.concat(calendar)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -511,6 +511,10 @@ export class NewEventPage implements OnInit {
|
|||||||
|
|
||||||
if (this.Form.invalid) {
|
if (this.Form.invalid) {
|
||||||
|
|
||||||
|
if(new Date(this.postEvent.StartDate).getTime() < new Date(this.postEvent.EndDate).getTime()) {
|
||||||
|
this.toastService._badRequest("Data de inicio menor que a data de fim")
|
||||||
|
}
|
||||||
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ import { SessionStore } from 'src/app/store/session.service';
|
|||||||
import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'
|
import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'
|
||||||
import { NavigationExtras, Router } from '@angular/router';
|
import { NavigationExtras, Router } from '@angular/router';
|
||||||
import { EventController } from 'src/app/controller/event'
|
import { EventController } from 'src/app/controller/event'
|
||||||
|
import { DateService } from 'src/app/services/date.service';
|
||||||
|
import { EventList } from 'src/app/models/agenda/AgendaEventList';
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-view-event',
|
selector: 'app-view-event',
|
||||||
templateUrl: './view-event.page.html',
|
templateUrl: './view-event.page.html',
|
||||||
@@ -63,6 +65,7 @@ export class ViewEventPage implements OnInit {
|
|||||||
public ThemeService: ThemeService,
|
public ThemeService: ThemeService,
|
||||||
private httpErrorHandle: HttpErrorHandle,
|
private httpErrorHandle: HttpErrorHandle,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
|
private dateService: DateService
|
||||||
) {
|
) {
|
||||||
this.isEventEdited = false;
|
this.isEventEdited = false;
|
||||||
this.loadedEvent = new Event();
|
this.loadedEvent = new Event();
|
||||||
@@ -125,6 +128,7 @@ export class ViewEventPage implements OnInit {
|
|||||||
if(this.sesseionStora.user.Profile == 'MDGPR' || this.sesseionStora.user.Profile == 'PR') {
|
if(this.sesseionStora.user.Profile == 'MDGPR' || this.sesseionStora.user.Profile == 'PR') {
|
||||||
this.eventsService.getEvent(this.eventId).subscribe(res => {
|
this.eventsService.getEvent(this.eventId).subscribe(res => {
|
||||||
|
|
||||||
|
res = this.dateService.fixDate(res as any)
|
||||||
this.loadedEvent = res;
|
this.loadedEvent = res;
|
||||||
|
|
||||||
this.setTimeZone()
|
this.setTimeZone()
|
||||||
@@ -146,6 +150,7 @@ export class ViewEventPage implements OnInit {
|
|||||||
|
|
||||||
this.eventsService.genericGetEvent(this.eventId, this.CalendarId).subscribe(res => {
|
this.eventsService.genericGetEvent(this.eventId, this.CalendarId).subscribe(res => {
|
||||||
|
|
||||||
|
res = this.dateService.fixDate(res as any)
|
||||||
/* const div = document.createElement("div")
|
/* const div = document.createElement("div")
|
||||||
div.innerHTML = res.Body.Text
|
div.innerHTML = res.Body.Text
|
||||||
res.Body.Text = div.innerText */
|
res.Body.Text = div.innerText */
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { Routes, RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { DiplomaOptionsPage } from './deploma-options.page';
|
|
||||||
|
|
||||||
const routes: Routes = [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: DiplomaOptionsPage
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [RouterModule.forChild(routes)],
|
|
||||||
exports: [RouterModule],
|
|
||||||
})
|
|
||||||
export class DeplomaOptionsPageRoutingModule {}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { FormsModule } from '@angular/forms';
|
|
||||||
|
|
||||||
import { IonicModule } from '@ionic/angular';
|
|
||||||
|
|
||||||
import { DeplomaOptionsPageRoutingModule } from './deploma-options-routing.module';
|
|
||||||
|
|
||||||
import { DiplomaOptionsPage } from './deploma-options.page';
|
|
||||||
import { CreateProcessPage } from 'src/app/modals/create-process/create-process.page';
|
|
||||||
import { CreateProcessPageModule } from 'src/app/modals/create-process/create-process.module';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
FormsModule,
|
|
||||||
IonicModule,
|
|
||||||
DeplomaOptionsPageRoutingModule,
|
|
||||||
CreateProcessPageModule
|
|
||||||
],
|
|
||||||
declarations: [
|
|
||||||
DiplomaOptionsPage,
|
|
||||||
],
|
|
||||||
exports: [DiplomaOptionsPage],
|
|
||||||
entryComponents: [
|
|
||||||
DiplomaOptionsPage,
|
|
||||||
CreateProcessPage
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class DeplomaOptionsPageModule {}
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
<ion-content class="options-container">
|
|
||||||
|
|
||||||
<!-- <div class="buttons">
|
|
||||||
<button (click)="openAddNoteModal('Solicitar assinatura')" class="btn-cancel" shape="round" >Solicitar assinatura</button>
|
|
||||||
<button (click)="openAddNoteModal('Solicitar alteração')" class="btn-cancel" shape="round" >Solicitar alteração</button>
|
|
||||||
<button (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
<div class="solid"></div>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<div class="buttons">
|
|
||||||
<div *ngIf="task" class="aside-right flex-column height-100 width-100">
|
|
||||||
<div class="buttons width-100" *ngIf="task.activityInstanceName == 'Revisar Diploma'">
|
|
||||||
<button (click)="openAddNoteModal('Solicitar assinatura')" class="btn-cancel" shape="round" >Solicitar assinatura do Presidente</button>
|
|
||||||
<button (click)="openAddNoteModal('Solicitar alteração')" class="btn-cancel" shape="round" >Solicitar alteração</button>
|
|
||||||
<button (click)="openExpedientActionsModal('0',fulltask)" class="btn-cancel" shape="round" >Efetuar despacho</button>
|
|
||||||
<button (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="solid"></div>
|
|
||||||
</div>
|
|
||||||
<div class="buttons width-100" *ngIf="task.activityInstanceName == 'Diploma Assinado'">
|
|
||||||
<button (click)="openAddNoteModal('Concluir diploma')" class="btn-cancel" shape="round" >Concluir</button>
|
|
||||||
</div>
|
|
||||||
<div class="buttons width-100" *ngIf="task.activityInstanceName == 'Assinar Diploma'">
|
|
||||||
<button *ngIf="p.userRole('PR')" (click)="AssinarNew()" class="btn-cancel" shape="round" >Assinar</button>
|
|
||||||
</div>
|
|
||||||
<div class="buttons width-100">
|
|
||||||
<button (click)="openAddNoteModal('Arquivo')" class="btn-cancel" shape="round" >Arquivar</button>
|
|
||||||
</div>
|
|
||||||
<div class="buttons width-100" *ngIf="task.activityInstanceName != 'Assinar Diploma'">
|
|
||||||
<button (click)="openExpedientActionsModal('0',task)" class="btn-cancel" shape="round" >Efetuar despacho</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</ion-content>
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
@import '~src/function.scss';
|
|
||||||
|
|
||||||
.options-container{
|
|
||||||
--padding-top:20px !important;
|
|
||||||
--padding-bottom:20px !important;
|
|
||||||
--padding-start:20px !important;
|
|
||||||
--padding-end:20px !important;
|
|
||||||
}
|
|
||||||
.arrow-right {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
.arrow-right-icon {
|
|
||||||
width: 37px;
|
|
||||||
float: right;
|
|
||||||
font-size: rem(35);
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.buttons {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: space-around;
|
|
||||||
}
|
|
||||||
.solid {
|
|
||||||
width: 90%;
|
|
||||||
border-top: 1px solid #bbb;
|
|
||||||
margin: 0 auto !important;
|
|
||||||
}
|
|
||||||
.btn-ok, .btn-cancel, .btn-delete{
|
|
||||||
width: 100% !important;
|
|
||||||
margin: 5px 5px 5px 5px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (max-width: 800px) {
|
|
||||||
.btn-ok, .btn-cancel, .btn-delete{
|
|
||||||
width: 100% !important;
|
|
||||||
min-width: 300px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media only screen and (min-width: 1024px) {
|
|
||||||
.arrow-right{
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
}
|
|
||||||
.btn-cancel{
|
|
||||||
width: 100% !important;
|
|
||||||
margin-bottom: 10px !important;
|
|
||||||
}
|
|
||||||
.btn-delete, .btn-ok{
|
|
||||||
width: 100% !important;
|
|
||||||
margin-bottom: 10px !important;
|
|
||||||
margin-top: 10px !important;
|
|
||||||
}
|
|
||||||
/* .solid{
|
|
||||||
display: block;
|
|
||||||
} */
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
|
|
||||||
import { IonicModule } from '@ionic/angular';
|
|
||||||
|
|
||||||
import { DeplomaOptionsPage } from './deploma-options.page';
|
|
||||||
|
|
||||||
describe('DeplomaOptionsPage', () => {
|
|
||||||
let component: DeplomaOptionsPage;
|
|
||||||
let fixture: ComponentFixture<DeplomaOptionsPage>;
|
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ DeplomaOptionsPage ],
|
|
||||||
imports: [IonicModule.forRoot()]
|
|
||||||
}).compileComponents();
|
|
||||||
|
|
||||||
fixture = TestBed.createComponent(DeplomaOptionsPage);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
}));
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,428 +0,0 @@
|
|||||||
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 { BookMeetingModalPage } from 'src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page';
|
|
||||||
import { ProcessesService } from 'src/app/services/processes.service';
|
|
||||||
import { ToastService } from 'src/app/services/toast.service';
|
|
||||||
import { RouteService } from 'src/app/services/route.service';
|
|
||||||
import { PermissionService } from 'src/app/services/permission.service';
|
|
||||||
import { DiscartExpedientModalPage } from 'src/app/pages/gabinete-digital/discart-expedient-modal/discart-expedient-modal.page';
|
|
||||||
import { CreateProcessPage } from 'src/app/modals/create-process/create-process.page';
|
|
||||||
import { AttachmentList } from 'src/app/models/Excludetask';
|
|
||||||
import { DespachoService } from 'src/app/Rules/despacho.service';
|
|
||||||
import { HttpErrorHandle } from 'src/app/services/http-error-handle.service';
|
|
||||||
import { TaskService } from 'src/app/services/task.service'
|
|
||||||
import { PopupQuestionPage } from 'src/app/modals/popup-question/popup-question.page';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-deploma-options',
|
|
||||||
templateUrl: './deploma-options.page.html',
|
|
||||||
styleUrls: ['./deploma-options.page.scss'],
|
|
||||||
})
|
|
||||||
export class DiplomaOptionsPage implements OnInit {
|
|
||||||
|
|
||||||
|
|
||||||
serialNumber: string;
|
|
||||||
profile: string;
|
|
||||||
task: any
|
|
||||||
fulltask: any
|
|
||||||
DraftIds = ""
|
|
||||||
DraftNames = ""
|
|
||||||
asDraft: boolean;
|
|
||||||
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
public popoverController: PopoverController,
|
|
||||||
private modalController: ModalController,
|
|
||||||
private processes: ProcessesService,
|
|
||||||
private navParams: NavParams,
|
|
||||||
private toastService: ToastService,
|
|
||||||
private RouteService: RouteService,
|
|
||||||
public p: PermissionService,
|
|
||||||
private despachoService: DespachoService,
|
|
||||||
private httpErroHandle: HttpErrorHandle,
|
|
||||||
public TaskService: TaskService) {
|
|
||||||
this.serialNumber = this.navParams.get('serialNumber');
|
|
||||||
this.task = this.navParams.get('task');
|
|
||||||
this.fulltask = this.navParams.get('fulltask');
|
|
||||||
|
|
||||||
this.DraftIds = this.navParams.get("DraftIds");
|
|
||||||
this.DraftNames = this.navParams.get("DraftNames");
|
|
||||||
this.asDraft = this.navParams.get('asDraft');
|
|
||||||
|
|
||||||
|
|
||||||
console.log('this.task', this.task)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
console.log(this.task.activityInstanceName)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async openAddNoteModal(actionName: string) {
|
|
||||||
// this.popoverController.dismiss();
|
|
||||||
let classs;
|
|
||||||
if (window.innerWidth <= 800) {
|
|
||||||
classs = 'modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: AddNotePage,
|
|
||||||
componentProps: {
|
|
||||||
actionName: actionName
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: true
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(async (res) => {
|
|
||||||
if (res.data) {
|
|
||||||
|
|
||||||
|
|
||||||
const DocumentToSave = res.data.documents.map((e) => {
|
|
||||||
return {
|
|
||||||
ApplicationId: e.ApplicationType,
|
|
||||||
SourceId: e.Id,
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let docs = {
|
|
||||||
ProcessInstanceID: "",
|
|
||||||
Attachments: DocumentToSave,
|
|
||||||
}
|
|
||||||
|
|
||||||
if (actionName == 'Solicitar assinatura') {
|
|
||||||
await this.askSignature(res.data.note, docs);
|
|
||||||
this.goBack();
|
|
||||||
} else if (actionName == 'Solicitar alteração') {
|
|
||||||
await this.askToChange(res.data.note, docs);
|
|
||||||
this.goBack();
|
|
||||||
} else if (actionName == 'Assinar Diploma') {
|
|
||||||
await this.sign(res.data.note, docs);
|
|
||||||
this.goBack();
|
|
||||||
} else if (actionName == 'Concluir diploma') {
|
|
||||||
await this.finish(res.data.note, docs);
|
|
||||||
this.goBack();
|
|
||||||
} else if (actionName == 'Arquivo') {
|
|
||||||
await this.arquivar(res.data.note, docs);
|
|
||||||
this.goBack();
|
|
||||||
} else if (actionName == 'AssinarNew') {
|
|
||||||
await this.AssinarNew(res.data.note, docs)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async askToChange(note: string, documents: any) {
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Retificar",
|
|
||||||
"ActionTypeId": 99999841,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList": documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.close();
|
|
||||||
this.toastService._successMessage()
|
|
||||||
} catch (error) {
|
|
||||||
if (error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest()
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async openBookMeetingModal(task: any) {
|
|
||||||
this.popoverController.dismiss();
|
|
||||||
let classs;
|
|
||||||
if (window.innerWidth <= 800) {
|
|
||||||
classs = 'book-meeting-modal modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: BookMeetingModalPage,
|
|
||||||
componentProps: {
|
|
||||||
task: this.task,
|
|
||||||
fulltask: this.fulltask
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
await modal.present();
|
|
||||||
modal.onDidDismiss().then(
|
|
||||||
() => { },
|
|
||||||
(error) => {
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async askSignature(note: string, documents: any) {
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Aprovar",
|
|
||||||
"ActionTypeId": 99999840,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList": documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.close();
|
|
||||||
this.toastService._successMessage()
|
|
||||||
} catch (error) {
|
|
||||||
if (error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest()
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async sign(note?: string, documents?: any) {
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Assinado",
|
|
||||||
"ActionTypeId": 99999842,
|
|
||||||
"FolderId": this.task.FolderID,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
"InstanceIDNew": this.task.InstanceID,
|
|
||||||
"DraftIds": "",
|
|
||||||
},
|
|
||||||
"AttachmentList": {
|
|
||||||
"ProcessInstanceID": this.task.InstanceID,
|
|
||||||
/* "DraftIds": null, */
|
|
||||||
"Attachments": []
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.httpErroHandle.httpsSucessMessagge('Assinado')
|
|
||||||
} catch (error) {
|
|
||||||
if (error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
this.toastService._badRequest()
|
|
||||||
}
|
|
||||||
} finally { }
|
|
||||||
}
|
|
||||||
|
|
||||||
async AssinarNew(note?, doc?) {
|
|
||||||
|
|
||||||
if (this.asDraft) {
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: PopupQuestionPage,
|
|
||||||
componentProps: {
|
|
||||||
title: 'Deseja assinar este Diploma?',
|
|
||||||
/* message: 'Nota: Ao Efetuar esta operação, o tratamento deste diploma não poderá ser realizado a partir da caixa de correspondência' */
|
|
||||||
|
|
||||||
},
|
|
||||||
cssClass: "popup-question discart-expedient-modal",
|
|
||||||
backdropDismiss: true
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(async (res) => {
|
|
||||||
const data = res.data
|
|
||||||
if (data == "Yes") {
|
|
||||||
|
|
||||||
console.log(' diploma options Draft draft',this.DraftIds)
|
|
||||||
let body = {
|
|
||||||
"InstanceId": this.task.InstanceID,
|
|
||||||
"FolderId": this.task.FolderID,
|
|
||||||
"DraftIds": this.task.DraftIds,
|
|
||||||
"OriginalFileName": this.DraftNames
|
|
||||||
}
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.presidentialActionsSignature(body).toPromise()
|
|
||||||
await this.sign()
|
|
||||||
this.TaskService.loadDiplomas()
|
|
||||||
this.goBack();
|
|
||||||
} catch (error) {
|
|
||||||
this.httpErroHandle.httpStatusHandle(error)
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
} else {
|
|
||||||
this.httpErroHandle.validationMessagge("diplomaAsDraft");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async finish(note: string, documents: any) {
|
|
||||||
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Concluir",
|
|
||||||
"ActionTypeId": 95,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList": documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise();
|
|
||||||
this.toastService._successMessage('Processo concluído')
|
|
||||||
} catch (error) {
|
|
||||||
if (error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async arquivar(note: string, documents: AttachmentList) {
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.despachoService.arquivar(note, documents, this.serialNumber).toPromise()
|
|
||||||
this.httpErroHandle.httpsSucessMessagge('Arquivar')
|
|
||||||
this.close();
|
|
||||||
} catch (error) {
|
|
||||||
this.httpErroHandle.httpStatusHandle(error)
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async openExpedientActionsModal(taskAction: any, task: any) {
|
|
||||||
|
|
||||||
let classs;
|
|
||||||
if (window.innerWidth <= 800) {
|
|
||||||
classs = 'modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: CreateProcessPage,
|
|
||||||
componentProps: {
|
|
||||||
taskAction: taskAction,
|
|
||||||
task: task,
|
|
||||||
profile: this.profile,
|
|
||||||
fulltask: this.fulltask
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
});
|
|
||||||
modal.onDidDismiss().then(async (res) => {
|
|
||||||
|
|
||||||
|
|
||||||
if (res['data'] == 'openDiscart') {
|
|
||||||
await this.distartExpedientModal();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.goBack();
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
}).catch(e => {
|
|
||||||
console.log(e)
|
|
||||||
})
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async distartExpedientModal() {
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: DiscartExpedientModalPage,
|
|
||||||
componentProps: {
|
|
||||||
serialNumber: this.fulltask.serialNumber,
|
|
||||||
folderId: this.fulltask.workflowInstanceDataFields.FolderID,
|
|
||||||
action: 'complete',
|
|
||||||
},
|
|
||||||
cssClass: 'discart-expedient-modal',
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(res => {
|
|
||||||
if (res['data'] == 'close') {
|
|
||||||
this.close();
|
|
||||||
/*
|
|
||||||
this.close();
|
|
||||||
this.openMenu(); */
|
|
||||||
}
|
|
||||||
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
}).catch(e => {
|
|
||||||
console.log(e)
|
|
||||||
})
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
goBack() {
|
|
||||||
this.RouteService.goBack()
|
|
||||||
this.TaskService.loadDiplomas()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
close() {
|
|
||||||
this.popoverController.dismiss();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { Routes, RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { DespachosOptionsPage } from './despachos-options.page';
|
|
||||||
|
|
||||||
const routes: Routes = [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: DespachosOptionsPage
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [RouterModule.forChild(routes)],
|
|
||||||
exports: [RouterModule],
|
|
||||||
})
|
|
||||||
export class DespachosOptionsPageRoutingModule {}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { FormsModule } from '@angular/forms';
|
|
||||||
|
|
||||||
import { IonicModule } from '@ionic/angular';
|
|
||||||
|
|
||||||
import { DespachosOptionsPageRoutingModule } from './despachos-options-routing.module';
|
|
||||||
|
|
||||||
import { DespachosOptionsPage } from './despachos-options.page';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
FormsModule,
|
|
||||||
IonicModule,
|
|
||||||
DespachosOptionsPageRoutingModule
|
|
||||||
],
|
|
||||||
declarations: [DespachosOptionsPage]
|
|
||||||
})
|
|
||||||
export class DespachosOptionsPageModule {}
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
<ion-content class="options-container">
|
|
||||||
<div class="arrow-right" (click)="goBack('no')">
|
|
||||||
<button class="btn-no-color">
|
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' "slot="end" class="arrow-right-icon" src='assets/images/icons-arrow-arrow-right.svg'></ion-icon>
|
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " slot="end" class="arrow-right-icon" src='assets/images/theme/gov/icons-calendar-arrow-right.svg'></ion-icon>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="width-100 pr-options" *ngIf="task.activityInstanceName == 'Tarefa de Despacho' && task.WorkflowName == 'Despacho do Presidente da República' ">
|
|
||||||
<div *ngIf="task && !p.userRole(['PR'])" class="d-flex width-100">
|
|
||||||
<div class="flex-grow-1 width-50 pr-10">
|
|
||||||
<button class="btn-cancel desk" shape="round" > Responder ao {{ environment.PR}} </button>
|
|
||||||
<button (click)="openAddNoteModal('Executado')" class="btn-cancel width-100" shape="round" >Executado</button>
|
|
||||||
<button class="btn-cancel desk" shape="round"> Reencaminhar para Área Jurídica </button>
|
|
||||||
<button (click)="openAddNoteModal('Gerar Diploma')" class="btn-cancel width-100" shape="round" >Gerar Diploma</button>
|
|
||||||
<button class="btn-cancel desk" shape="round"> Outras opções </button>
|
|
||||||
<button (click)="openTaskProcessModal('0',fulltask)" class="btn-cancel width-100" shape="round" >Efetuar Despacho</button>
|
|
||||||
</div>
|
|
||||||
<div class="flex-grow-1 width-50 pl-10">
|
|
||||||
<button (click)="openTaskProcessModal('1',fulltask)" class="btn-cancel width-100" shape="round" >Solicitar Parecer</button>
|
|
||||||
<button *ngIf="!p.userRole(['PR']) && !p.userPermission([p.permissionList.Gabinete.pr_tasks])" (click)="openTaskProcessModal('2',fulltask)" class="btn-cancel width-100" shape="round" >Pedido de Deferimento</button>
|
|
||||||
<button (click)="openDelegarModal(task)" class="btn-cancel width-100" shape="round" >Delegar</button>
|
|
||||||
<button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" full class="btn-cancel width-100" shape="round" >Enviar para Pendentes</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div *ngIf="task && p.userRole(['PR'])" class="d-flex width-100">
|
|
||||||
<div class="flex-grow-1">
|
|
||||||
<button (click)="openAddNoteModal('Concluido')" class="btn-cancel" shape="round" >Marcar como Concluído</button>
|
|
||||||
<button (click)="openAddNoteModal('Reexecução')" class="btn-cancel" shape="round" >Enviar para Reexecução</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Agenda.access])" (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
<button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="buttons" *ngIf="task.activityInstanceName == 'Tarefa de Despacho' && task.WorkflowName != 'Despacho do Presidente da República' ">
|
|
||||||
<button (click)="openAddNoteModal('Executado')" class="btn-cancel" shape="round" >Executado</button>
|
|
||||||
<button (click)="openDelegarModal(task)" class="btn-cancel" shape="round" >Delegar</button>
|
|
||||||
<div class="solid"></div>
|
|
||||||
<button (click)="openTaskProcessModal('0',fulltask)" class="btn-cancel" shape="round" >Efetuar Despacho</button>
|
|
||||||
<button (click)="openTaskProcessModal('1',fulltask)" class="btn-cancel" shape="round" >Solicitar Parecer</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Agenda.access])" (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
<div class="solid"></div>
|
|
||||||
<button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="buttons" *ngIf="task.activityInstanceName == 'Reexecutar Despacho'">
|
|
||||||
<button (click)="openAddNoteModal('Executado')" class="btn-cancel" shape="round" >Executado</button>
|
|
||||||
<button (click)="openDelegarModal(task)" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Delegar</button>
|
|
||||||
<div class="solid"></div>
|
|
||||||
<button (click)="openTaskProcessModal('0',fulltask)" class="btn-cancel" shape="round" >Efetuar Despacho</button>
|
|
||||||
<button (click)="openTaskProcessModal('1',fulltask)" class="btn-cancel" shape="round" >Solicitar Parecer</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Agenda.access])" (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
<div class="solid"></div>
|
|
||||||
<button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
|
||||||
</div>
|
|
||||||
<div class="buttons" *ngIf="task.activityInstanceName == 'Concluir Despacho'">
|
|
||||||
<button (click)="openAddNoteModal('Arquivar')" class="btn-cancel" shape="round" >Arquivar</button>
|
|
||||||
<div class="solid"></div>
|
|
||||||
<button (click)="openTaskProcessModal('0',fulltask)" class="btn-cancel" shape="round" >Efetuar Despacho</button>
|
|
||||||
<button (click)="openTaskProcessModal('1',fulltask)" class="btn-cancel" shape="round" >Solicitar Parecer</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Agenda.access])" (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
<div class="solid"></div>
|
|
||||||
<button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
|
||||||
<button (click)="openAddNoteModal('Reexecução')" class="btn-cancel" shape="round" >Enviar para Reexecução</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</ion-content>
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
@import '~src/function.scss';
|
|
||||||
|
|
||||||
.options-container {
|
|
||||||
--padding-top:20px !important;
|
|
||||||
--padding-bottom:20px !important;
|
|
||||||
--padding-start:20px !important;
|
|
||||||
--padding-end:20px !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
.arrow-right {
|
|
||||||
display: none;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
.arrow-right-icon {
|
|
||||||
width: 37px;
|
|
||||||
float: right;
|
|
||||||
font-size: rem(35);
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.buttons {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: space-around;
|
|
||||||
}
|
|
||||||
.solid {
|
|
||||||
display: none;
|
|
||||||
width: 90%;
|
|
||||||
border-top: 1px solid #bbb;
|
|
||||||
margin: 0 auto !important;
|
|
||||||
}
|
|
||||||
.btn-ok, .btn-cancel, .btn-delete{
|
|
||||||
width: 100% !important;
|
|
||||||
margin: 5px 5px 5px 5px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pr-options {
|
|
||||||
.btn-ok, .btn-cancel{
|
|
||||||
width: 100% !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
|
|
||||||
import { IonicModule } from '@ionic/angular';
|
|
||||||
|
|
||||||
import { DespachosOptionsPage } from './despachos-options.page';
|
|
||||||
|
|
||||||
describe('DespachosOptionsPage', () => {
|
|
||||||
let component: DespachosOptionsPage;
|
|
||||||
let fixture: ComponentFixture<DespachosOptionsPage>;
|
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ DespachosOptionsPage ],
|
|
||||||
imports: [IonicModule.forRoot()]
|
|
||||||
}).compileComponents();
|
|
||||||
|
|
||||||
fixture = TestBed.createComponent(DespachosOptionsPage);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
}));
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,402 +0,0 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
import { ProcessesService } from 'src/app/services/processes.service';
|
|
||||||
import { ModalController, NavParams, PopoverController } from '@ionic/angular';
|
|
||||||
import { CreateProcessPage } from 'src/app/modals/create-process/create-process.page';
|
|
||||||
import { DelegarPage } from 'src/app/modals/delegar/delegar.page';
|
|
||||||
import { AddNotePage } from 'src/app/modals/add-note/add-note.page';
|
|
||||||
import { BookMeetingModalPage } from 'src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page';
|
|
||||||
import { DiscartExpedientModalPage } from 'src/app/pages/gabinete-digital/discart-expedient-modal/discart-expedient-modal.page';
|
|
||||||
import { ToastService } from 'src/app/services/toast.service';
|
|
||||||
import { customTask, fullTask } from 'src/app/models/dailyworktask.model';
|
|
||||||
import { PermissionService } from 'src/app/services/permission.service';
|
|
||||||
import { ThemeService } from 'src/app/services/theme.service'
|
|
||||||
import { RouteService } from 'src/app/services/route.service';
|
|
||||||
import { HttpErrorHandle } from 'src/app/services/http-error-handle.service';
|
|
||||||
import { environment } from 'src/environments/environment';
|
|
||||||
import { TaskService } from 'src/app/services/task.service'
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-despachos-options',
|
|
||||||
templateUrl: './despachos-options.page.html',
|
|
||||||
styleUrls: ['./despachos-options.page.scss'],
|
|
||||||
})
|
|
||||||
export class DespachosOptionsPage implements OnInit {
|
|
||||||
|
|
||||||
task: customTask
|
|
||||||
fulltask: fullTask;
|
|
||||||
serialNumber: string;
|
|
||||||
environment = environment
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
private processes: ProcessesService,
|
|
||||||
private modalController: ModalController,
|
|
||||||
public popoverController: PopoverController,
|
|
||||||
private navParams: NavParams,
|
|
||||||
private toastService: ToastService,
|
|
||||||
public p: PermissionService,
|
|
||||||
public ThemeService: ThemeService,
|
|
||||||
private RouteService: RouteService,
|
|
||||||
private httpErrorHandle: HttpErrorHandle,
|
|
||||||
public TaskService: TaskService
|
|
||||||
) {
|
|
||||||
|
|
||||||
this.task = this.navParams.get('task')
|
|
||||||
this.fulltask = this.navParams.get('fulltask')
|
|
||||||
|
|
||||||
|
|
||||||
this.serialNumber = this.task.SerialNumber
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async openTaskProcessModal(taskAction: any, task: any) {
|
|
||||||
|
|
||||||
let classs;
|
|
||||||
if( window.innerWidth <= 800){
|
|
||||||
classs = 'modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: CreateProcessPage,
|
|
||||||
componentProps: {
|
|
||||||
taskAction: taskAction,
|
|
||||||
task: task,
|
|
||||||
fulltask: this.fulltask
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then( res => {
|
|
||||||
// this.goBack();
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
sendExpedienteToPending() {
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
this.processes.SetTaskToPending(this.task.SerialNumber).subscribe(res=>{
|
|
||||||
this.httpErrorHandle.httpsSucessMessagge('Enviar para Pendentes')
|
|
||||||
loader.remove()
|
|
||||||
|
|
||||||
this.goBack('back');
|
|
||||||
},(error)=>{
|
|
||||||
loader.remove()
|
|
||||||
this.httpErrorHandle.httpStatusHandle(error)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async distartExpedientModal() {
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: DiscartExpedientModalPage,
|
|
||||||
componentProps: {
|
|
||||||
serialNumber: this.fulltask.serialNumber,
|
|
||||||
folderId: this.fulltask.workflowInstanceDataFields.FolderID,
|
|
||||||
action: 'complete',
|
|
||||||
},
|
|
||||||
cssClass: 'discart-expedient-modal',
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(res=>{
|
|
||||||
if(res['data']=='close'){
|
|
||||||
this.goBack('back');
|
|
||||||
}
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async openBookMeetingModal(task: any) {
|
|
||||||
|
|
||||||
let classs;
|
|
||||||
if( window.innerWidth <= 800){
|
|
||||||
classs = 'book-meeting-modal modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: BookMeetingModalPage,
|
|
||||||
componentProps: {
|
|
||||||
task: this.task,
|
|
||||||
fulltask:this.fulltask
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(() => {
|
|
||||||
this.goBack('no');
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
})
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async openDelegarModal(task: any) {
|
|
||||||
|
|
||||||
let classs;
|
|
||||||
if( window.innerWidth <= 800){
|
|
||||||
classs = 'book-meeting-modal modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: DelegarPage,
|
|
||||||
componentProps: {
|
|
||||||
task: this.task,
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
modal.onDidDismiss().then(res => {
|
|
||||||
if(res){
|
|
||||||
const data = res.data;
|
|
||||||
if(data == 'close') {
|
|
||||||
this.goBack('back');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async generateDiploma(note:string, documents:any){
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Reencaminhar",
|
|
||||||
"ActionTypeId": 99999839,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList" :documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.toastService._successMessage()
|
|
||||||
this.goBack('back');
|
|
||||||
} catch (error) {
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest()
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async openAddNoteModal(actionName:string) {
|
|
||||||
|
|
||||||
|
|
||||||
let classs;
|
|
||||||
if( window.innerWidth <= 800){
|
|
||||||
classs = 'modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: AddNotePage,
|
|
||||||
componentProps: {
|
|
||||||
showAttachmentBtn: true,
|
|
||||||
actionName:actionName
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: true
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(async (res) => {
|
|
||||||
|
|
||||||
if(res.data) {
|
|
||||||
|
|
||||||
const DocumentToSave = res.data.documents.map((e) => {
|
|
||||||
return {
|
|
||||||
ApplicationId: e.ApplicationType,
|
|
||||||
SourceId: e.Id,
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let docs = {
|
|
||||||
ProcessInstanceID: "",
|
|
||||||
Attachments: DocumentToSave,
|
|
||||||
}
|
|
||||||
|
|
||||||
if(actionName == 'Executado') {
|
|
||||||
await this.executado(res.data.note, docs);
|
|
||||||
}
|
|
||||||
else if(actionName == 'Arquivar') {
|
|
||||||
await this.arquivar(res.data.note, docs);
|
|
||||||
}
|
|
||||||
else if(actionName == 'Gerar Diploma') {
|
|
||||||
await this.generateDiploma(res.data.note, docs);
|
|
||||||
}
|
|
||||||
else if(actionName == 'Concluido') {
|
|
||||||
this.concluir(res.data.note, docs);
|
|
||||||
}
|
|
||||||
else if(actionName == 'Reexecução') {
|
|
||||||
await this.reexecutar(res.data.note, docs);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async concluir(note: string, documents: any) {
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Arquivo",
|
|
||||||
"ActionTypeId": 95,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList": documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.httpErrorHandle.httpsSucessMessagge('Concluir Despacho')
|
|
||||||
this.TaskService.loadDiplomas()
|
|
||||||
} catch (error) {
|
|
||||||
this.httpErrorHandle.httpStatusHandle(error)
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async arquivar(note:string, documents:any) {
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Arquivo",
|
|
||||||
"ActionTypeId": 95,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList" :documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.toastService._successMessage('Processo arquivado')
|
|
||||||
this.goBack('back');
|
|
||||||
} catch (error) {
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest('Processo não arquivado')
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async executado(note:string, documents:any) {
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Conhecimento",
|
|
||||||
"ActionTypeId": 104,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList" :documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.goBack('back');
|
|
||||||
this.toastService._successMessage()
|
|
||||||
} catch(error) {
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest()
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async reexecutar(note:string, documents:any){
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Reexecução",
|
|
||||||
"ActionTypeId": 100000010,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList" :documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.toastService._successMessage()
|
|
||||||
this.goBack('back');
|
|
||||||
} catch (error) {
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest()
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
goBack(params) {
|
|
||||||
this.popoverController.dismiss(params)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
-17
@@ -1,17 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { Routes, RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { DespachosPrOptionsPage } from './despachos-pr-options.page';
|
|
||||||
|
|
||||||
const routes: Routes = [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: DespachosPrOptionsPage
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [RouterModule.forChild(routes)],
|
|
||||||
exports: [RouterModule],
|
|
||||||
})
|
|
||||||
export class DespachosPrOptionsPageRoutingModule {}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { FormsModule } from '@angular/forms';
|
|
||||||
|
|
||||||
import { IonicModule } from '@ionic/angular';
|
|
||||||
|
|
||||||
import { DespachosPrOptionsPageRoutingModule } from './despachos-pr-options-routing.module';
|
|
||||||
|
|
||||||
import { DespachosPrOptionsPage } from './despachos-pr-options.page';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
FormsModule,
|
|
||||||
IonicModule,
|
|
||||||
DespachosPrOptionsPageRoutingModule
|
|
||||||
],
|
|
||||||
declarations: [DespachosPrOptionsPage]
|
|
||||||
})
|
|
||||||
export class DespachosPrOptionsPageModule {}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
<ion-content class="options-container">
|
|
||||||
<div class="arrow-right" (click)="close()">
|
|
||||||
<button class="btn-no-color">
|
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' "slot="end" class="arrow-right-icon" src='assets/images/icons-arrow-arrow-right.svg'></ion-icon>
|
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " slot="end" class="arrow-right-icon" src='assets/images/theme/gov/icons-calendar-arrow-right.svg'></ion-icon>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="width-100">
|
|
||||||
<div *ngIf="task && !p.userRole(['PR'])" class="d-flex width-100">
|
|
||||||
<div class="flex-grow-1 width-50 pr-10">
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" class="btn-cancel desk" shape="round"> Responder ao {{ environment.PR}} </button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" (click)="openAddNoteModal('Executado')" class="btn-cancel" shape="round" >Executado</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" class="btn-cancel desk" shape="round"> Reencaminhar para Área Jurídica </button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" (click)="openAddNoteModal('Gerar Diploma')" class="btn-cancel" shape="round" >Gerar Diploma</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" class="btn-cancel desk" shape="round"> Outras opções </button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" (click)="openExpedientActionsModal('0',fulltask)" class="btn-cancel" shape="round" >Efetuar Despacho</button>
|
|
||||||
</div>
|
|
||||||
<div class="flex-grow-1 width-50 pl-10">
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" (click)="openExpedientActionsModal('1',fulltask)" class="btn-cancel" shape="round" >Solicitar Parecer</button>
|
|
||||||
<!-- <button *ngIf="!p.userRole(['PR'])" (click)="openExpedientActionsModal('2',fulltask)" class="btn-cancel" shape="round" >Pedido de Deferimento</button> -->
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" (click)="openDelegarModal(task)" class="btn-cancel" shape="round" >Delegar</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks]) && task.Status != 'Pending'" (click)="sendExpedienteToPending()" full class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
|
||||||
<button (click)="cancle()" full class="btn-cancel" shape="round" >Cancelar</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div *ngIf="task && p.userRole(['PR'])" class="d-flex width-100">
|
|
||||||
<div class="flex-grow-1">
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.pr_tasks])" (click)="openAddNoteModal('Concluido')" class="btn-cancel" shape="round" >Marcar como Concluído</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.pr_tasks])" (click)="openAddNoteModal('Reexecução')" class="btn-cancel" shape="round" >Enviar para Reexecução</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Agenda.access])" (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.pr_tasks]) && task.Status != 'Pending'" (click)="sendExpedienteToPending()" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
|
||||||
<button (click)="cancle()" full class="btn-cancel" shape="round" >Cancelar</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- <div class="solid"></div>
|
|
||||||
<button (click)="cancle()" full class="btn-cancel" shape="round" >Cancelar</button> -->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</ion-content>
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
@import '~src/function.scss';
|
|
||||||
|
|
||||||
:host {
|
|
||||||
height: 100% !important;
|
|
||||||
width: 100% !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.options-container{
|
|
||||||
--padding-top:20px !important;
|
|
||||||
--padding-bottom:20px !important;
|
|
||||||
--padding-start:20px !important;
|
|
||||||
--padding-end:20px !important;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.arrow-right{
|
|
||||||
display: none;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
.arrow-right-icon{
|
|
||||||
width: 37px;
|
|
||||||
float: right;
|
|
||||||
font-size: rem(35);
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.buttons{
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: space-around;
|
|
||||||
}
|
|
||||||
.solid {
|
|
||||||
display: none;
|
|
||||||
width: 90%;
|
|
||||||
border-top: 1px solid #bbb;
|
|
||||||
margin: 0 auto !important;
|
|
||||||
}
|
|
||||||
.btn-ok, .btn-cancel{
|
|
||||||
//width: 50% !important;
|
|
||||||
margin-bottom: 5px !important;
|
|
||||||
margin-top: 5px !important;
|
|
||||||
}
|
|
||||||
.btn-ok, .btn-cancel, .btn-delete{
|
|
||||||
width: 100% !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.desk{
|
|
||||||
text-align: left;
|
|
||||||
background-color: white;
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
|
|
||||||
import { IonicModule } from '@ionic/angular';
|
|
||||||
|
|
||||||
import { DespachosPrOptionsPage } from './despachos-pr-options.page';
|
|
||||||
|
|
||||||
describe('DespachosPrOptionsPage', () => {
|
|
||||||
let component: DespachosPrOptionsPage;
|
|
||||||
let fixture: ComponentFixture<DespachosPrOptionsPage>;
|
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ DespachosPrOptionsPage ],
|
|
||||||
imports: [IonicModule.forRoot()]
|
|
||||||
}).compileComponents();
|
|
||||||
|
|
||||||
fixture = TestBed.createComponent(DespachosPrOptionsPage);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
}));
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,430 +0,0 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
import { ProcessesService } from 'src/app/services/processes.service';
|
|
||||||
import { ActivatedRoute, Router } from '@angular/router';
|
|
||||||
import { ModalController } from '@ionic/angular';
|
|
||||||
import { CreateProcessPage } from 'src/app/modals/create-process/create-process.page';
|
|
||||||
import { DelegarPage } from 'src/app/modals/delegar/delegar.page';
|
|
||||||
import { AddNotePage } from 'src/app/modals/add-note/add-note.page';
|
|
||||||
import { BookMeetingModalPage } from 'src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page';
|
|
||||||
import { DiscartExpedientModalPage } from 'src/app/pages/gabinete-digital/discart-expedient-modal/discart-expedient-modal.page';
|
|
||||||
import { ToastService } from 'src/app/services/toast.service';
|
|
||||||
import { PermissionService } from 'src/app/services/permission.service';
|
|
||||||
import { ThemeService } from 'src/app/services/theme.service'
|
|
||||||
import { RouteService } from 'src/app/services/route.service';
|
|
||||||
import { environment } from 'src/environments/environment';
|
|
||||||
import { HttpErrorHandle } from 'src/app/services/http-error-handle.service';
|
|
||||||
import { TaskService } from 'src/app/services/task.service'
|
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-despachos-pr-options',
|
|
||||||
templateUrl: './despachos-pr-options.page.html',
|
|
||||||
styleUrls: ['./despachos-pr-options.page.scss'],
|
|
||||||
})
|
|
||||||
export class DespachosPrOptionsPage implements OnInit {
|
|
||||||
|
|
||||||
|
|
||||||
task: any;
|
|
||||||
fulltask: any;
|
|
||||||
serialNumber: string;
|
|
||||||
profile: string
|
|
||||||
environment = environment
|
|
||||||
|
|
||||||
constructor(private activateRoute: ActivatedRoute,
|
|
||||||
private processes: ProcessesService,
|
|
||||||
private router: Router,
|
|
||||||
private modalController: ModalController,
|
|
||||||
private activatedRoute: ActivatedRoute,
|
|
||||||
private toastService: ToastService,
|
|
||||||
private RouteService: RouteService,
|
|
||||||
public p: PermissionService,
|
|
||||||
public ThemeService: ThemeService,
|
|
||||||
public TaskService: TaskService,
|
|
||||||
private httpErroHandle: HttpErrorHandle,
|
|
||||||
) { }
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
|
|
||||||
this.profile = "mdgpr";
|
|
||||||
|
|
||||||
this.activatedRoute.queryParams.subscribe(params => {
|
|
||||||
if(params["serialNumber"]) {
|
|
||||||
this.serialNumber = params["serialNumber"];
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if(this.task.serialNumber) {
|
|
||||||
this.serialNumber = this.task.serialNumber
|
|
||||||
} else if(this.task.SerialNumber) {
|
|
||||||
this.serialNumber = this.task.SerialNumber
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
close () {
|
|
||||||
this.goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async openExpedientActionsModal(taskAction: any, task: any) {
|
|
||||||
// this.modalController.dismiss();
|
|
||||||
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,
|
|
||||||
fulltask: this.fulltask
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then( (res)=> {
|
|
||||||
|
|
||||||
if(res['data']=='openDiscart') {
|
|
||||||
|
|
||||||
|
|
||||||
this.distartExpedientModal();
|
|
||||||
|
|
||||||
} else {
|
|
||||||
this.goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss('close')
|
|
||||||
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
sendExpedienteToPending() {
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
this.processes.SetTaskToPending(this.serialNumber).subscribe(res=>{
|
|
||||||
|
|
||||||
this.httpErroHandle.httpsSucessMessagge('Enviar para Pendentes')
|
|
||||||
this.modalController.dismiss('close')
|
|
||||||
loader.remove()
|
|
||||||
},(error)=>{
|
|
||||||
loader.remove()
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest('Processo não encontrado')
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async distartExpedientModal() {
|
|
||||||
this.modalController.dismiss();
|
|
||||||
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: DiscartExpedientModalPage,
|
|
||||||
componentProps: {
|
|
||||||
serialNumber: this.fulltask.serialNumber,
|
|
||||||
folderId: this.fulltask.workflowInstanceDataFields.FolderID,
|
|
||||||
action: 'complete',
|
|
||||||
},
|
|
||||||
cssClass: 'discart-expedient-modal',
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(res=>{
|
|
||||||
if(res['data']=='close'){
|
|
||||||
this.close();
|
|
||||||
/*
|
|
||||||
this.close();
|
|
||||||
this.openMenu(); */
|
|
||||||
}
|
|
||||||
this.modalController.dismiss('close')
|
|
||||||
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async openBookMeetingModal(task: any) {
|
|
||||||
this.modalController.dismiss();
|
|
||||||
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,
|
|
||||||
fulltask:this.fulltask
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(
|
|
||||||
()=> {},
|
|
||||||
(error) => {
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async openDelegarModal(task: any) {
|
|
||||||
this.modalController.dismiss();
|
|
||||||
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
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(res => {
|
|
||||||
if(res) {
|
|
||||||
const data = res.data;
|
|
||||||
if(data == 'close') {
|
|
||||||
this.goBack();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async generateDiploma(note:string, documents:any) {
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Reencaminhar",
|
|
||||||
"ActionTypeId": 99999839,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList" :documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.toastService._successMessage()
|
|
||||||
this.close();
|
|
||||||
} catch (error) {
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest()
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async openAddNoteModal(actionName:string) {
|
|
||||||
this.modalController.dismiss();
|
|
||||||
let classs;
|
|
||||||
if( window.innerWidth <= 800){
|
|
||||||
classs = 'modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop'
|
|
||||||
}
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: AddNotePage,
|
|
||||||
componentProps: {
|
|
||||||
showAttachmentBtn: true,
|
|
||||||
actionName:actionName
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: true
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(async (res) => {
|
|
||||||
|
|
||||||
if(res.data){
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const DocumentToSave = res.data.documents.map((e) => {
|
|
||||||
return {
|
|
||||||
ApplicationId: e.ApplicationType,
|
|
||||||
SourceId: e.Id,
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let docs = {
|
|
||||||
ProcessInstanceID: "",
|
|
||||||
Attachments: DocumentToSave,
|
|
||||||
}
|
|
||||||
|
|
||||||
if(actionName == 'Executado') {
|
|
||||||
await this.executado(res.data.note, docs);
|
|
||||||
}
|
|
||||||
else if(actionName == 'Arquivar') {
|
|
||||||
await this.arquivar(res.data.note, docs);
|
|
||||||
}
|
|
||||||
else if(actionName == 'Gerar Diploma') {
|
|
||||||
await this.generateDiploma(res.data.note, docs);
|
|
||||||
}
|
|
||||||
else if(actionName == 'Reexecução') {
|
|
||||||
await this.reexecutar(res.data.note, docs);
|
|
||||||
}
|
|
||||||
else if(actionName == 'Concluido') {
|
|
||||||
await this.concluir(res.data.note, docs);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.goBack();
|
|
||||||
}
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async concluir(note:string, documents:any){
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Arquivo",
|
|
||||||
"ActionTypeId": 95,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList" :documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.httpErroHandle.httpsSucessMessagge('Concluir Despacho')
|
|
||||||
this.close();
|
|
||||||
} catch (error) {
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async arquivar(note:string, documents:any){
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Arquivo",
|
|
||||||
"ActionTypeId": 95,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList" :documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.toastService.successMessage('Processo arquivado')
|
|
||||||
this.close();
|
|
||||||
} catch (error) {
|
|
||||||
this.toastService.badRequest('Processo não arquivado')
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async executado(note:string, documents:any){
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Conhecimento",
|
|
||||||
"ActionTypeId": 104,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList" :documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.httpErroHandle.httpsSucessMessagge('Executado')
|
|
||||||
this.close();
|
|
||||||
this.toastService.successMessage()
|
|
||||||
} catch(error) {
|
|
||||||
this.toastService.badRequest()
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async reexecutar(note:string, documents:any){
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Reexecução",
|
|
||||||
"ActionTypeId": 100000010,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList" :documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.httpErroHandle.httpsSucessMessagge('Reexecução')
|
|
||||||
this.toastService.successMessage()
|
|
||||||
this.close();
|
|
||||||
} catch (error) {
|
|
||||||
this.toastService.badRequest()
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
goBack() {
|
|
||||||
this.RouteService.goBack();
|
|
||||||
this.TaskService.loadDiplomas()
|
|
||||||
}
|
|
||||||
|
|
||||||
cancle() {
|
|
||||||
this.modalController.dismiss()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
-17
@@ -1,17 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { Routes, RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { DiplomasGerarOptionsPage } from './diplomas-gerar-options.page';
|
|
||||||
|
|
||||||
const routes: Routes = [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: DiplomasGerarOptionsPage
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [RouterModule.forChild(routes)],
|
|
||||||
exports: [RouterModule],
|
|
||||||
})
|
|
||||||
export class DiplomasGerarOptionsPageRoutingModule {}
|
|
||||||
-20
@@ -1,20 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { FormsModule } from '@angular/forms';
|
|
||||||
|
|
||||||
import { IonicModule } from '@ionic/angular';
|
|
||||||
|
|
||||||
import { DiplomasGerarOptionsPageRoutingModule } from './diplomas-gerar-options-routing.module';
|
|
||||||
|
|
||||||
import { DiplomasGerarOptionsPage } from './diplomas-gerar-options.page';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
FormsModule,
|
|
||||||
IonicModule,
|
|
||||||
DiplomasGerarOptionsPageRoutingModule
|
|
||||||
],
|
|
||||||
declarations: [DiplomasGerarOptionsPage]
|
|
||||||
})
|
|
||||||
export class DiplomasGerarOptionsPageModule {}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
<div class="wrapper">
|
|
||||||
<div>
|
|
||||||
<div class="buttons">
|
|
||||||
<button (click)="enviarDiploma({note: '', documents: [], serialnumber: task.SerialNumber})" class="btn-cancel" shape="round" >Enviar Diploma</button>
|
|
||||||
<button (click)="openDelegarModal()" class="btn-cancel" shape="round" >Delegar</button>
|
|
||||||
<div class="solid"></div>
|
|
||||||
<button (click)="openBookMeetingModal()" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
<button (click)="sendExpedienteToPending()" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
-67
@@ -1,67 +0,0 @@
|
|||||||
@import '~src/function.scss';
|
|
||||||
|
|
||||||
.wrapper{
|
|
||||||
width: 100% !important;
|
|
||||||
padding-top:20px !important;
|
|
||||||
padding-bottom:20px !important;
|
|
||||||
}
|
|
||||||
.arrow-right{
|
|
||||||
display: none;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
.arrow-right-icon{
|
|
||||||
width: 37px;
|
|
||||||
float: right;
|
|
||||||
font-size: rem(35);
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.buttons{
|
|
||||||
width: 100% !important;
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: space-around;
|
|
||||||
margin: 0 auto !important;
|
|
||||||
}
|
|
||||||
.solid {
|
|
||||||
display: none;
|
|
||||||
width: 90%;
|
|
||||||
border-top: 1px solid #bbb;
|
|
||||||
margin: 0 auto !important;
|
|
||||||
}
|
|
||||||
.btn-ok, .btn-cancel{
|
|
||||||
//width: 50% !important;
|
|
||||||
margin-bottom: 5px !important;
|
|
||||||
margin-top: 5px !important;
|
|
||||||
}
|
|
||||||
@media only screen and (max-width: 800px) {
|
|
||||||
.container{
|
|
||||||
width: 100% !important;
|
|
||||||
}
|
|
||||||
.btn-ok, .btn-cancel, .btn-delete{
|
|
||||||
width: 47% !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media only screen and (min-width: 1024px) {
|
|
||||||
.container{
|
|
||||||
width: 100% !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
.arrow-right{
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
}
|
|
||||||
.btn-cancel{
|
|
||||||
display: none;
|
|
||||||
width: 100% !important;
|
|
||||||
margin-bottom: 10px !important;
|
|
||||||
}
|
|
||||||
.btn-delete, .btn-ok{
|
|
||||||
width: 100% !important;
|
|
||||||
margin-bottom: 10px !important;
|
|
||||||
margin-top: 10px !important;
|
|
||||||
}
|
|
||||||
/* .solid{
|
|
||||||
display: block;
|
|
||||||
} */
|
|
||||||
}
|
|
||||||
|
|
||||||
-24
@@ -1,24 +0,0 @@
|
|||||||
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
|
|
||||||
import { IonicModule } from '@ionic/angular';
|
|
||||||
|
|
||||||
import { DiplomasGerarOptionsPage } from './diplomas-gerar-options.page';
|
|
||||||
|
|
||||||
describe('DiplomasGerarOptionsPage', () => {
|
|
||||||
let component: DiplomasGerarOptionsPage;
|
|
||||||
let fixture: ComponentFixture<DiplomasGerarOptionsPage>;
|
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ DiplomasGerarOptionsPage ],
|
|
||||||
imports: [IonicModule.forRoot()]
|
|
||||||
}).compileComponents();
|
|
||||||
|
|
||||||
fixture = TestBed.createComponent(DiplomasGerarOptionsPage);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
}));
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,208 +0,0 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
import { ModalController, NavParams, PopoverController } from '@ionic/angular';
|
|
||||||
import { ProcessesService } from 'src/app/services/processes.service';
|
|
||||||
import { Router } from '@angular/router';
|
|
||||||
import { ToastService } from 'src/app/services/toast.service';
|
|
||||||
import { ThemeService } from 'src/app/services/theme.service'
|
|
||||||
import { DespachoService } from 'src/app/Rules/despacho.service'
|
|
||||||
import { DelegarPage } from 'src/app/modals/delegar/delegar.page';
|
|
||||||
import { AddNotePage } from 'src/app/modals/add-note/add-note.page';
|
|
||||||
import { BookMeetingModalPage } from 'src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page';
|
|
||||||
import { customTask, fullTask } from 'src/app/models/dailyworktask.model';
|
|
||||||
import { RouteService } from 'src/app/services/route.service';
|
|
||||||
import { TaskService } from 'src/app/services/task.service'
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-diplomas-gerar-options',
|
|
||||||
templateUrl: './diplomas-gerar-options.page.html',
|
|
||||||
styleUrls: ['./diplomas-gerar-options.page.scss'],
|
|
||||||
})
|
|
||||||
export class DiplomasGerarOptionsPage implements OnInit {
|
|
||||||
|
|
||||||
task: customTask
|
|
||||||
fulltask: fullTask;
|
|
||||||
serialNumber: string;
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
private processes: ProcessesService,
|
|
||||||
public popoverController: PopoverController,
|
|
||||||
private modalController: ModalController,
|
|
||||||
private toastService: ToastService,
|
|
||||||
public ThemeService: ThemeService,
|
|
||||||
private despachoService: DespachoService,
|
|
||||||
private navParams: NavParams,
|
|
||||||
private router: Router,
|
|
||||||
private RouteService: RouteService,
|
|
||||||
public TaskService: TaskService
|
|
||||||
) { }
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
this.task = this.navParams.get('task')
|
|
||||||
this.fulltask = this.navParams.get('fulltask')
|
|
||||||
this.serialNumber = this.navParams.get('serialNumber')
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async enviarDiploma({note = '', documents = [], serialnumber}) {
|
|
||||||
|
|
||||||
let classs;
|
|
||||||
if (window.innerWidth <= 800) {
|
|
||||||
classs = 'modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'add-note-modal-no-height'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: AddNotePage,
|
|
||||||
componentProps: {
|
|
||||||
showAttachmentBtn: true,
|
|
||||||
actionName:false
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: true
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(async (res) => {
|
|
||||||
if (res.data) {
|
|
||||||
|
|
||||||
const DocumentToSave = res.data.documents.map((e) => {
|
|
||||||
return {
|
|
||||||
ApplicationId: e.ApplicationType,
|
|
||||||
SourceId: e.Id,
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let docs = {
|
|
||||||
ProcessInstanceID: "",
|
|
||||||
Attachments: DocumentToSave,
|
|
||||||
}
|
|
||||||
|
|
||||||
let body = {
|
|
||||||
"serialNumber": serialnumber,
|
|
||||||
"action": "Enviar diploma",
|
|
||||||
"ActionTypeId": 104,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": res.data.note,
|
|
||||||
},
|
|
||||||
"AttachmentList" : docs,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise();
|
|
||||||
this.modalController.dismiss('sucess');
|
|
||||||
this.toastService._successMessage();
|
|
||||||
this.goBack()
|
|
||||||
} catch (error) {
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async sendExpedienteToPending() {
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
this.despachoService.sendExpedienteToPending(this.serialNumber).subscribe(res => {
|
|
||||||
this.goBack();
|
|
||||||
this.toastService._badRequest("Processo enviado para Pendentes")
|
|
||||||
loader.remove()
|
|
||||||
},
|
|
||||||
error => {
|
|
||||||
loader.remove()
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest("Processo não enviado para Pendentes")
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async openBookMeetingModal() {
|
|
||||||
let classs;
|
|
||||||
if (window.innerWidth <= 800) {
|
|
||||||
classs = 'book-meeting-modal modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: BookMeetingModalPage,
|
|
||||||
componentProps: {
|
|
||||||
task: this.task,
|
|
||||||
fulltask:this.fulltask
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(
|
|
||||||
()=>{},
|
|
||||||
(error) => {
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async openDelegarModal() {
|
|
||||||
let classs;
|
|
||||||
if (window.innerWidth <= 800) {
|
|
||||||
classs = 'book-meeting-modal modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
|
||||||
}
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: DelegarPage,
|
|
||||||
componentProps: {
|
|
||||||
task: this.task,
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(res => {
|
|
||||||
if(res) {
|
|
||||||
const data = res.data;
|
|
||||||
if(data == 'close') {
|
|
||||||
this.goBack();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
goBack() {
|
|
||||||
|
|
||||||
this.popoverController.dismiss();
|
|
||||||
this.RouteService.goBack();
|
|
||||||
this.TaskService.loadDespachos();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { Routes, RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { OptsExpedientePage } from './opts-expediente.page';
|
|
||||||
|
|
||||||
const routes: Routes = [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: OptsExpedientePage
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [RouterModule.forChild(routes)],
|
|
||||||
exports: [RouterModule],
|
|
||||||
})
|
|
||||||
export class OptsExpedientePageRoutingModule {}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { FormsModule } from '@angular/forms';
|
|
||||||
|
|
||||||
import { IonicModule } from '@ionic/angular';
|
|
||||||
|
|
||||||
import { OptsExpedientePageRoutingModule } from './opts-expediente-routing.module';
|
|
||||||
|
|
||||||
import { OptsExpedientePage } from './opts-expediente.page';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
FormsModule,
|
|
||||||
IonicModule,
|
|
||||||
OptsExpedientePageRoutingModule
|
|
||||||
],
|
|
||||||
declarations: [OptsExpedientePage]
|
|
||||||
})
|
|
||||||
export class OptsExpedientePageModule {}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
<ion-content class="options-container width-100 ">
|
|
||||||
<div class="width-100">
|
|
||||||
<div class="d-flex width-100">
|
|
||||||
<div class="flex-grow-1 flex-wrap d-flex">
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" class="btn-cancel desk" shape="round"> Enviar para o {{ environment.PR}} </button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" (click)="openAddNoteModal('Aprovar')" class="btn-cancel" shape="round" >Solicitar consideração superior</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" class="btn-cancel desk" shape="round"> Solicitar revisão </button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" (click)="openAddNoteModal('Revisão')" class="btn-cancel" shape="round" >Submeter para revisão</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" class="btn-cancel desk" shape="round">Outras opções </button>
|
|
||||||
<button (click)="openExpedientActionsModal('0',fulltask)" class="btn-cancel" shape="round" >Efetuar Despacho</button>
|
|
||||||
<!-- <button (click)="close()" full class="btn-cancel" shape="round" >Cancelar</button> -->
|
|
||||||
<button (click)="openExpedientActionsModal('1',fulltask)" class="btn-cancel" shape="round" >Solicitar Parecer</button>
|
|
||||||
<button *ngIf="!p.userRole(['PR']) && !p.userPermission([p.permissionList.Gabinete.pr_tasks])" (click)="openExpedientActionsModal('2',fulltask)" class="btn-cancel" shape="round" >Pedido de Deferimento</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Agenda.access])" (click)="openBookMeetingModal()" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Gabinete.md_tasks])" (click)="attachDocument()" class="btn-cancel" shape="round" >Anexar Documentos</button>
|
|
||||||
<button (click)="distartExpedientModal('descartar')" class="btn-cancel" shape="round" >Arquivar</button>
|
|
||||||
<button (click)="sendExpedienteToPending()" *ngIf="(task.Status || '') != 'Pending'" full class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Chat.access])" (click)="openNewGroupPage()" class="btn-cancel" shape="round" >Iniciar Conversa</button>
|
|
||||||
<button (click)="close()" full class="btn-cancel" shape="round" >Cancelar</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</ion-content>
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
@import '~src/function.scss';
|
|
||||||
|
|
||||||
.options-container{
|
|
||||||
--padding-top:20px !important;
|
|
||||||
--padding-bottom:20px !important;
|
|
||||||
--padding-start:20px !important;
|
|
||||||
--padding-end:20px !important;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.arrow-right{
|
|
||||||
display: none;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
.arrow-right-icon{
|
|
||||||
width: 37px;
|
|
||||||
float: right;
|
|
||||||
font-size: rem(35);
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.buttons{
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: space-around;
|
|
||||||
}
|
|
||||||
.solid {
|
|
||||||
display: none;
|
|
||||||
width: 90%;
|
|
||||||
border-top: 1px solid #bbb;
|
|
||||||
margin: 0 auto !important;
|
|
||||||
}
|
|
||||||
.btn-ok, .btn-cancel{
|
|
||||||
//width: 50% !important;
|
|
||||||
margin-bottom: 5px !important;
|
|
||||||
margin-top: 5px !important;
|
|
||||||
}
|
|
||||||
@media only screen and (max-width: 800px) {
|
|
||||||
.btn-ok, .btn-cancel, .btn-delete{
|
|
||||||
width: 100% !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media only screen and (min-width: 1024px) {
|
|
||||||
.arrow-right{
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
}
|
|
||||||
.btn-cancel{
|
|
||||||
// display: none;
|
|
||||||
width: 100% !important;
|
|
||||||
margin-bottom: 10px !important;
|
|
||||||
}
|
|
||||||
.btn-delete, .btn-ok{
|
|
||||||
width: 100% !important;
|
|
||||||
margin-bottom: 10px !important;
|
|
||||||
margin-top: 10px !important;
|
|
||||||
}
|
|
||||||
/* .solid{
|
|
||||||
display: block;
|
|
||||||
} */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.desk{
|
|
||||||
text-align: left;
|
|
||||||
background-color: white;
|
|
||||||
color: var(--profile-text-color);
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
|
|
||||||
import { IonicModule } from '@ionic/angular';
|
|
||||||
|
|
||||||
import { OptsExpedientePage } from './opts-expediente.page';
|
|
||||||
|
|
||||||
describe('OptsExpedientePage', () => {
|
|
||||||
let component: OptsExpedientePage;
|
|
||||||
let fixture: ComponentFixture<OptsExpedientePage>;
|
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ OptsExpedientePage ],
|
|
||||||
imports: [IonicModule.forRoot()]
|
|
||||||
}).compileComponents();
|
|
||||||
|
|
||||||
fixture = TestBed.createComponent(OptsExpedientePage);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
}));
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,462 +0,0 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
import { NavigationExtras, Router } from '@angular/router';
|
|
||||||
import { ModalController, NavParams, PopoverController } from '@ionic/angular';
|
|
||||||
import { AddNotePage } from 'src/app/modals/add-note/add-note.page';
|
|
||||||
import { expedienteTask } from 'src/app/models/dailyworktask.model';
|
|
||||||
import { SearchList } from 'src/app/models/search-document';
|
|
||||||
import { DiscartExpedientModalPage } from 'src/app/pages/gabinete-digital/discart-expedient-modal/discart-expedient-modal.page';
|
|
||||||
import { BookMeetingModalPage } from 'src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page';
|
|
||||||
import { ExpedientTaskModalPage } from 'src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page';
|
|
||||||
import { SearchPage } from 'src/app/pages/search/search.page';
|
|
||||||
import { SearchDocumentPipe } from 'src/app/pipes/search-document.pipe';
|
|
||||||
import { AttachmentsService } from 'src/app/services/attachments.service';
|
|
||||||
import { ProcessesService } from 'src/app/services/processes.service';
|
|
||||||
import { ToastService } from 'src/app/services/toast.service';
|
|
||||||
import { ExpedienteService } from 'src/app/Rules/expediente.service';
|
|
||||||
import { PermissionService } from 'src/app/services/permission.service';
|
|
||||||
import { ThemeService } from 'src/app/services/theme.service'
|
|
||||||
import { NewGroupPage } from 'src/app/pages/chat/new-group/new-group.page';
|
|
||||||
import { RouteService } from 'src/app/services/route.service';
|
|
||||||
import { SessionStore } from 'src/app/store/session.service';
|
|
||||||
import { HttpErrorHandle } from 'src/app/services/http-error-handle.service';
|
|
||||||
import { environment } from 'src/environments/environment';
|
|
||||||
import { TaskService } from 'src/app/services/task.service';
|
|
||||||
import { DataService } from 'src/app/services/data.service';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-opts-expediente',
|
|
||||||
templateUrl: './opts-expediente.page.html',
|
|
||||||
styleUrls: ['./opts-expediente.page.scss'],
|
|
||||||
})
|
|
||||||
export class OptsExpedientePage implements OnInit {
|
|
||||||
|
|
||||||
task: expedienteTask
|
|
||||||
fulltask: any;
|
|
||||||
profile:string;
|
|
||||||
caller:string;
|
|
||||||
|
|
||||||
showEnviarPendentes = false
|
|
||||||
searchDocumentPipe = new SearchDocumentPipe()
|
|
||||||
documents:SearchList[] = [];
|
|
||||||
|
|
||||||
SessionStore = SessionStore;
|
|
||||||
environment = environment
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
private popoverController: PopoverController,
|
|
||||||
private modalController: ModalController,
|
|
||||||
private navParams: NavParams,
|
|
||||||
private processes: ProcessesService,
|
|
||||||
private toastService: ToastService,
|
|
||||||
private router: Router,
|
|
||||||
public p: PermissionService,
|
|
||||||
private attachmentsService: AttachmentsService,
|
|
||||||
private RouteService: RouteService,
|
|
||||||
private expedienteService: ExpedienteService,
|
|
||||||
public ThemeService: ThemeService,
|
|
||||||
private httpErrorHanlde: HttpErrorHandle,
|
|
||||||
public TaskService: TaskService,
|
|
||||||
private dataService: DataService,
|
|
||||||
) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async openNewGroupPage() {
|
|
||||||
|
|
||||||
// this.dataService.set("newGroup", true);
|
|
||||||
// this.dataService.set("task", this.task);
|
|
||||||
// this.dataService.set("newGroupName", this.task.Folio);
|
|
||||||
// this.dataService.set("documents", this.fulltask.Documents);
|
|
||||||
// this.dataService.set("link", window.location.pathname);
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: NewGroupPage,
|
|
||||||
cssClass: 'modal modal-desktop',
|
|
||||||
componentProps: {
|
|
||||||
name: this.task.Folio,
|
|
||||||
task: this.task,
|
|
||||||
documents: this.fulltask.Documents,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(
|
|
||||||
()=>{},
|
|
||||||
(error) => {
|
|
||||||
console.log(error)
|
|
||||||
})
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
close() {
|
|
||||||
if( window.innerWidth < 801) {
|
|
||||||
this.popoverController.dismiss();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
this.popoverController.dismiss();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
goBack() {
|
|
||||||
this.TaskService.loadExpedientes()
|
|
||||||
this.RouteService.goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
attachDocument(){
|
|
||||||
this.getDoc();
|
|
||||||
}
|
|
||||||
|
|
||||||
async getDoc() {
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: SearchPage,
|
|
||||||
cssClass: 'modal-width-100-width-background modal',
|
|
||||||
componentProps: {
|
|
||||||
type: 'AccoesPresidenciais & ArquivoDespachoElect',
|
|
||||||
showSearchInput: true,
|
|
||||||
select: true
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then( async (res)=>{
|
|
||||||
if(res){
|
|
||||||
const data = res.data;
|
|
||||||
this.documents.push(data.selected);
|
|
||||||
this.documents.forEach((element: any) =>{
|
|
||||||
|
|
||||||
let body = {
|
|
||||||
"InstanceID": this.task.InstanceID,
|
|
||||||
"WorkflowDisplayName": this.task.WorkflowName,
|
|
||||||
"FolderID": this.task.FolderId,
|
|
||||||
"DispatchNumber": this.task.DispatchNumber,
|
|
||||||
"AttachmentsProcessLastInstanceID": this.task.AttachmentsProcessLastInstanceID,
|
|
||||||
"Attachments": []
|
|
||||||
}
|
|
||||||
|
|
||||||
const Attachments = this.searchDocumentPipe.transformToAttachment(element)
|
|
||||||
body.Attachments = Attachments;
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
this.attachmentsService.AddAttachment(body).subscribe((res)=> {
|
|
||||||
this.toastService._successMessage()
|
|
||||||
}, (error) => {
|
|
||||||
this.httpErrorHanlde.httpStatusHandle(error)
|
|
||||||
},()=> {
|
|
||||||
loader.remove()
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
this.popoverController.dismiss()
|
|
||||||
|
|
||||||
}
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async openAddNoteModal(actionName:string) {
|
|
||||||
let classs;
|
|
||||||
if( window.innerWidth < 801) {
|
|
||||||
classs = 'modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'add-note-modal'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: AddNotePage,
|
|
||||||
componentProps:{
|
|
||||||
showAttachmentBtn: false,
|
|
||||||
actionName:actionName
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
//backdropDismiss: true
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then( async (res) => {
|
|
||||||
|
|
||||||
if(res.data){
|
|
||||||
const DocumentToSave = res.data.documents.map((e) => {
|
|
||||||
return {
|
|
||||||
ApplicationId: e.ApplicationType,
|
|
||||||
SourceId: e.Id,
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let docs = {
|
|
||||||
ProcessInstanceID: "",
|
|
||||||
Attachments: DocumentToSave,
|
|
||||||
}
|
|
||||||
|
|
||||||
if(actionName == 'Aprovar') {
|
|
||||||
await this.approve(res.data.note, docs);
|
|
||||||
}
|
|
||||||
else if(actionName == 'Revisão') {
|
|
||||||
await this.sendToReview(res.data.note, docs);
|
|
||||||
}
|
|
||||||
this.popoverController.dismiss();
|
|
||||||
this.goBack();
|
|
||||||
}
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async sendToReview(note:string, documents:any) {
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.task.SerialNumber,
|
|
||||||
"action": "Retificar",
|
|
||||||
"ActionTypeId": 99999877,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList" :documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.TaskService.loadExpedientes()
|
|
||||||
this.close();
|
|
||||||
this.toastService._successMessage()
|
|
||||||
} catch(error) {
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest()
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sendExpedienteToPending() {
|
|
||||||
this.close();
|
|
||||||
this.processes.SetTaskToPending(this.task.SerialNumber).subscribe(res=>{
|
|
||||||
this.TaskService.loadExpedientes()
|
|
||||||
this.goBack();
|
|
||||||
},(error) => {
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest('Processo não encontrado')
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async approve(note:string, documents:any){
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.task.SerialNumber,
|
|
||||||
"action": "Aprovar",
|
|
||||||
"ActionTypeId": 100000004 ,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList" :documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise();
|
|
||||||
this.TaskService.loadExpedientes()
|
|
||||||
this.close();
|
|
||||||
this.httpErrorHanlde.httpsSucessMessagge('Avaliação Superiror')
|
|
||||||
} catch(error) {
|
|
||||||
this.httpErrorHanlde.httpStatusHandle(error)
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async openBookMeetingModal() {
|
|
||||||
this.close();
|
|
||||||
let classs;
|
|
||||||
if( window.innerWidth <= 800){
|
|
||||||
classs = 'book-meeting-modal modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: BookMeetingModalPage,
|
|
||||||
componentProps: {
|
|
||||||
task: this.task,
|
|
||||||
fulltask: this.fulltask
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(
|
|
||||||
()=>{},
|
|
||||||
(error) => {
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async openExpedientActionsModal(taskAction: any, task: any) {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
this.close();
|
|
||||||
let classs;
|
|
||||||
if( window.innerWidth <= 800){
|
|
||||||
classs = 'modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: ExpedientTaskModalPage,
|
|
||||||
componentProps: {
|
|
||||||
taskAction: taskAction,
|
|
||||||
task: task,
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(async res=>{
|
|
||||||
|
|
||||||
let body = res['data'];
|
|
||||||
if(res['data']){
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise();
|
|
||||||
this.TaskService.loadExpedientes()
|
|
||||||
this.goBack();
|
|
||||||
} catch (error) {
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest('Processo não descartado')
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
|
|
||||||
}
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async distartExpedientModal(body:any){
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: DiscartExpedientModalPage,
|
|
||||||
componentProps: {
|
|
||||||
},
|
|
||||||
cssClass: 'discart-expedient-modal',
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
modal.onDidDismiss().then( async (res) => {
|
|
||||||
|
|
||||||
|
|
||||||
if(body == 'descartar') {
|
|
||||||
if(res['data']== 'Yes') {
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.expedienteService.discard({SerialNumber: this.task.SerialNumber}).toPromise()
|
|
||||||
this.TaskService.loadExpedientes()
|
|
||||||
this.toastService._successMessage('Processo descartado');
|
|
||||||
this.goBack();
|
|
||||||
} catch (error) {
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest('Processo não descartado')
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
else if(res['data'] == 'No'){
|
|
||||||
//Do nothing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if(res['data']== 'Yes') {
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise();
|
|
||||||
this.toastService._successMessage('Processo descartado');
|
|
||||||
this.TaskService.loadExpedientes()
|
|
||||||
this.goBack();
|
|
||||||
} catch (error) {
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.toastService._badRequest('Processo não descartado')
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
this.goBack();
|
|
||||||
}
|
|
||||||
else if(res['data'] == 'No'){
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.UpdateTaskStatus(this.task.FolderId).toPromise();
|
|
||||||
this.TaskService.loadExpedientes()
|
|
||||||
this.toastService._successMessage();
|
|
||||||
this.goBack();
|
|
||||||
} catch (error) {
|
|
||||||
if(error.status == 0) {
|
|
||||||
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
|
|
||||||
} else {
|
|
||||||
this.toastService._badRequest()
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { Routes, RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { RequestOptionsPage } from './request-options.page';
|
|
||||||
|
|
||||||
const routes: Routes = [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: RequestOptionsPage
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [RouterModule.forChild(routes)],
|
|
||||||
exports: [RouterModule],
|
|
||||||
})
|
|
||||||
export class RequestOptionsPageRoutingModule {}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { FormsModule } from '@angular/forms';
|
|
||||||
|
|
||||||
import { IonicModule } from '@ionic/angular';
|
|
||||||
|
|
||||||
import { RequestOptionsPageRoutingModule } from './request-options-routing.module';
|
|
||||||
|
|
||||||
import { RequestOptionsPage } from './request-options.page';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
FormsModule,
|
|
||||||
IonicModule,
|
|
||||||
RequestOptionsPageRoutingModule
|
|
||||||
],
|
|
||||||
declarations: [RequestOptionsPage]
|
|
||||||
})
|
|
||||||
export class RequestOptionsPageModule {}
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
<div class="wrapper">
|
|
||||||
<div *ngIf="task.WorkflowName == 'Pedido de Deferimento'">
|
|
||||||
<div class="buttons" *ngIf="task.activityInstanceName == 'Tarefa de Deferimento'">
|
|
||||||
<button (click)="openAddNoteModal('Arquivar')" class="btn-cancel" shape="round" >Arquivar</button>
|
|
||||||
<button (click)="openDelegarModal(task)" class="btn-cancel" shape="round" >Delegar</button>
|
|
||||||
<div class="solid"></div>
|
|
||||||
<button (click)="openExpedientActionsModal('0',fulltask)" class="btn-cancel" shape="round" >Efetuar Despacho</button>
|
|
||||||
<button *ngIf="!p.userRole(['PR']) && !p.userPermission([p.permissionList.Gabinete.pr_tasks])" (click)="openExpedientActionsModal('2',fulltask)" class="btn-cancel" shape="round" >Pedido de Deferimento</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Agenda.access])" (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
<button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
|
||||||
<button (click)="cancel()" class="btn-cancel" shape="round" >Cancelar</button>
|
|
||||||
</div>
|
|
||||||
<div class="buttons" *ngIf="task.activityInstanceName == 'Reapreciar Deferimento'">
|
|
||||||
<button (click)="openAddNoteModal('Arquivar')" class="btn-cancel" shape="round" >Arquivar</button>
|
|
||||||
<button (click)="openDelegarModal(task)" class="btn-cancel" shape="round" >Delegar</button>
|
|
||||||
<div class="solid"></div>
|
|
||||||
<button (click)="openExpedientActionsModal('0',fulltask)" class="btn-cancel" shape="round" >Efetuar Despacho</button>
|
|
||||||
<button *ngIf="!p.userRole(['PR']) && !p.userPermission([p.permissionList.Gabinete.pr_tasks])" (click)="openExpedientActionsModal('2',fulltask)" class="btn-cancel" shape="round" >Pedido de Deferimento</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Agenda.access])" (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
<button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
|
||||||
<button (click)="cancel()" class="btn-cancel" shape="round" >Cancelar</button>
|
|
||||||
</div>
|
|
||||||
<div class="buttons" *ngIf="task.activityInstanceName == 'Concluir Deferimento'">
|
|
||||||
<button (click)="openAddNoteModal('Arquivar')" class="btn-cancel" shape="round" >Arquivar</button>
|
|
||||||
<button (click)="openDelegarModal(task)" class="btn-cancel" shape="round" >Delegar</button>
|
|
||||||
<div class="solid"></div>
|
|
||||||
<button (click)="openExpedientActionsModal('0',fulltask)" class="btn-cancel" shape="round" >Efetuar Despacho</button>
|
|
||||||
<!-- <button (click)="openExpedientActionsModal('1',fulltask)" class="btn-cancel" shape="round" >Solicitar Parecer</button> -->
|
|
||||||
<button (click)="openAddNoteModal('Solicitar Reapreciação')" class="btn-cancel" shape="round" >Solicitar Reapreciação</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Agenda.access])" (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
<button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
|
||||||
<button (click)="cancel()" class="btn-cancel" shape="round" >Cancelar</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div *ngIf="task.WorkflowName == 'Pedido de Parecer' || task.WorkflowName == 'Pedido de Parecer do Presidente' ">
|
|
||||||
<div class="buttons" *ngIf="task.activityInstanceName == 'Tarefa de Parecer'">
|
|
||||||
<button *ngIf="checkStringInArray('Registar')" (click)="openDarParecer(task)" class="btn-cancel" shape="round" >Dar o meu Parecer</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Agenda.access])" (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
<button *ngIf="task.WorkflowName == 'Pedido de Parecer do Presidente' && checkStringInArray('Reencaminhar')" (click)="openForwardModal(task)" class="btn-cancel" shape="round" >Reencaminhar</button>
|
|
||||||
<button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
|
||||||
<button (click)="openNewGroupPage()" class="btn-cancel" shape="round" *ngIf="task.WorkflowName == 'Pedido de Parecer do Presidente'">Iniciar Conversa</button>
|
|
||||||
<button (click)="cancel()" class="btn-cancel" shape="round" >Cancelar</button>
|
|
||||||
</div>
|
|
||||||
<div class="buttons" *ngIf="task.activityInstanceName == 'Concluir Parecer'">
|
|
||||||
<button (click)="openAddNoteModal('Arquivar')" class="btn-cancel" shape="round" >Arquivar</button>
|
|
||||||
<button (click)="openExpedientActionsModal('0',fulltask)" class="btn-cancel" shape="round" >Efetuar Despacho</button>
|
|
||||||
<button (click)="openExpedientActionsModal('1',fulltask)" class="btn-cancel" shape="round" >Solicitar Parecer</button>
|
|
||||||
<button *ngIf="!p.userRole(['PR']) && !p.userPermission([p.permissionList.Gabinete.pr_tasks])" (click)="openExpedientActionsModal('2',fulltask)" class="btn-cancel" shape="round" >Pedido de Deferimento</button>
|
|
||||||
<button *ngIf="p.userPermission([p.permissionList.Agenda.access])" (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
|
||||||
<button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
|
||||||
<button (click)="cancel()" class="btn-cancel" shape="round" >Cancelar</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
@import '~src/function.scss';
|
|
||||||
|
|
||||||
.wrapper{
|
|
||||||
width: 100% !important;
|
|
||||||
padding-top:20px !important;
|
|
||||||
padding-bottom:20px !important;
|
|
||||||
}
|
|
||||||
.arrow-right{
|
|
||||||
display: none;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
.arrow-right-icon{
|
|
||||||
width: 37px;
|
|
||||||
float: right;
|
|
||||||
font-size: rem(35);
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.buttons{
|
|
||||||
width: 100% !important;
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: space-around;
|
|
||||||
margin: 0 auto !important;
|
|
||||||
}
|
|
||||||
.solid {
|
|
||||||
display: none;
|
|
||||||
width: 90%;
|
|
||||||
border-top: 1px solid #bbb;
|
|
||||||
margin: 0 auto !important;
|
|
||||||
}
|
|
||||||
.btn-ok, .btn-cancel{
|
|
||||||
//width: 50% !important;
|
|
||||||
margin-bottom: 5px !important;
|
|
||||||
margin-top: 5px !important;
|
|
||||||
}
|
|
||||||
@media only screen and (max-width: 800px) {
|
|
||||||
.container{
|
|
||||||
width: 100% !important;
|
|
||||||
}
|
|
||||||
.btn-ok, .btn-cancel, .btn-delete{
|
|
||||||
width: 47% !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media only screen and (min-width: 1024px) {
|
|
||||||
.container{
|
|
||||||
width: 100% !important;
|
|
||||||
|
|
||||||
}
|
|
||||||
.arrow-right{
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
}
|
|
||||||
.btn-cancel{
|
|
||||||
// display: none;
|
|
||||||
width: 100% !important;
|
|
||||||
margin-bottom: 10px !important;
|
|
||||||
}
|
|
||||||
.btn-delete, .btn-ok{
|
|
||||||
width: 100% !important;
|
|
||||||
margin-bottom: 10px !important;
|
|
||||||
margin-top: 10px !important;
|
|
||||||
}
|
|
||||||
/* .solid{
|
|
||||||
display: block;
|
|
||||||
} */
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
|
|
||||||
import { IonicModule } from '@ionic/angular';
|
|
||||||
|
|
||||||
import { RequestOptionsPage } from './request-options.page';
|
|
||||||
|
|
||||||
describe('RequestOptionsPage', () => {
|
|
||||||
let component: RequestOptionsPage;
|
|
||||||
let fixture: ComponentFixture<RequestOptionsPage>;
|
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ RequestOptionsPage ],
|
|
||||||
imports: [IonicModule.forRoot()]
|
|
||||||
}).compileComponents();
|
|
||||||
|
|
||||||
fixture = TestBed.createComponent(RequestOptionsPage);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
}));
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,398 +0,0 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
|
||||||
import { ActivatedRoute } from '@angular/router';
|
|
||||||
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 { DarParecerPage } from 'src/app/modals/dar-parecer/dar-parecer.page';
|
|
||||||
import { DelegarPage } from 'src/app/modals/delegar/delegar.page';
|
|
||||||
import { BookMeetingModalPage } from 'src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page';
|
|
||||||
import { ProcessesService } from 'src/app/services/processes.service';
|
|
||||||
import { ToastService } from 'src/app/services/toast.service';
|
|
||||||
import { PedidoService } from 'src/app/Rules/pedido.service';
|
|
||||||
import { PermissionService } from 'src/app/services/permission.service';
|
|
||||||
import { NewGroupPage } from 'src/app/pages/chat/new-group/new-group.page';
|
|
||||||
import { ForwardPage } from 'src/app/modals/forward/forward.page';
|
|
||||||
import { HttpErrorHandle } from 'src/app/services/http-error-handle.service';
|
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-request-options',
|
|
||||||
templateUrl: './request-options.page.html',
|
|
||||||
styleUrls: ['./request-options.page.scss'],
|
|
||||||
})
|
|
||||||
export class RequestOptionsPage implements OnInit {
|
|
||||||
|
|
||||||
task:any;
|
|
||||||
fulltask: any;
|
|
||||||
profile:string;
|
|
||||||
serialNumber : string;
|
|
||||||
showEnviarPendentes = false;
|
|
||||||
taskActions = [];
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
private popoverController: PopoverController,
|
|
||||||
private modalController: ModalController,
|
|
||||||
private navParams: NavParams,
|
|
||||||
private processes: ProcessesService,
|
|
||||||
private activatedRoute: ActivatedRoute,
|
|
||||||
private toastService: ToastService,
|
|
||||||
public p: PermissionService,
|
|
||||||
private pedidoService: PedidoService,
|
|
||||||
private httpErrorHandle: HttpErrorHandle
|
|
||||||
) {
|
|
||||||
this.task = this.navParams.get('task');
|
|
||||||
this.fulltask = this.navParams.get('fulltask');
|
|
||||||
this.serialNumber = this.navParams.get('serialNumber');
|
|
||||||
this.taskActions = this.navParams.get('actions');
|
|
||||||
|
|
||||||
this.activatedRoute.queryParams.subscribe(params => {
|
|
||||||
if(params["serialNumber"]) {
|
|
||||||
this.serialNumber = params["serialNumber"];
|
|
||||||
//
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if(this.task.serialNumber) {
|
|
||||||
this.serialNumber = this.task.serialNumber
|
|
||||||
} else if (this.task.SerialNumber) {
|
|
||||||
this.serialNumber = this.task.SerialNumber
|
|
||||||
}
|
|
||||||
|
|
||||||
this.showEnviarPendentes = this.navParams.get('showEnviarPendentes');
|
|
||||||
|
|
||||||
if(!this.showEnviarPendentes) this.showEnviarPendentes = false
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
|
|
||||||
this.profile = "mdgpr";
|
|
||||||
|
|
||||||
window.onresize = (event) => {
|
|
||||||
if( window.innerWidth >= 800){
|
|
||||||
this.popoverController.dismiss();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
checkStringInArray(str) {
|
|
||||||
return this.taskActions.includes(str);
|
|
||||||
}
|
|
||||||
|
|
||||||
close() {
|
|
||||||
this.popoverController.dismiss('close')
|
|
||||||
}
|
|
||||||
cancel(){
|
|
||||||
this.popoverController.dismiss();
|
|
||||||
}
|
|
||||||
|
|
||||||
sendExpedienteToPending() {
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
this.processes.SetTaskToPending(this.task.SerialNumber).subscribe(res=>{
|
|
||||||
|
|
||||||
this.httpErrorHandle.httpsSucessMessagge('Enviar para Pendentes')
|
|
||||||
this.close();
|
|
||||||
loader.remove()
|
|
||||||
}, (error)=> {
|
|
||||||
loader.remove()
|
|
||||||
|
|
||||||
this.httpErrorHandle.httpStatusHandle(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async openBookMeetingModal(task: any) {
|
|
||||||
this.popoverController.dismiss();
|
|
||||||
let classs;
|
|
||||||
if( window.innerWidth <= 800) {
|
|
||||||
classs = 'book-meeting-modal modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: BookMeetingModalPage,
|
|
||||||
componentProps: {
|
|
||||||
task: this.task,
|
|
||||||
fulltask: this.fulltask
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(
|
|
||||||
()=>{}
|
|
||||||
, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
})
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async openNewGroupPage(){
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: NewGroupPage,
|
|
||||||
cssClass: 'modal modal-desktop',
|
|
||||||
componentProps: {
|
|
||||||
name: this.task.Folio,
|
|
||||||
task: this.task,
|
|
||||||
documents: this.fulltask.Documents,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then( () => {
|
|
||||||
this.popoverController.dismiss('close');
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async newGroup(){
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: NewGroupPage,
|
|
||||||
cssClass: 'modal modal-desktop',
|
|
||||||
componentProps: {
|
|
||||||
name: this.task.Folio,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
await modal.present();
|
|
||||||
modal.onDidDismiss().then(
|
|
||||||
()=>{},
|
|
||||||
(error) => {
|
|
||||||
console.log(error)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
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'
|
|
||||||
}
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: CreateProcessPage,
|
|
||||||
componentProps: {
|
|
||||||
taskAction: taskAction,
|
|
||||||
task: task,
|
|
||||||
profile: this.profile,
|
|
||||||
fulltask: this.fulltask
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(res=> {
|
|
||||||
|
|
||||||
if(res['data']=='openDiscart') {
|
|
||||||
|
|
||||||
|
|
||||||
} else {
|
|
||||||
this.popoverController.dismiss('close')
|
|
||||||
}
|
|
||||||
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async repreciar(note:string, documents:any) {
|
|
||||||
let body = {
|
|
||||||
"serialNumber": this.serialNumber,
|
|
||||||
"action": "Reapreciação",
|
|
||||||
"ActionTypeId": 100000009,
|
|
||||||
"dataFields": {
|
|
||||||
"ReviewUserComment": note,
|
|
||||||
},
|
|
||||||
"AttachmentList" :documents,
|
|
||||||
}
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.processes.CompleteTask(body).toPromise()
|
|
||||||
this.close();
|
|
||||||
this.httpErrorHandle.httpsSucessMessagge('Solicitar Reapreciação')
|
|
||||||
} catch (error) {
|
|
||||||
this.httpErrorHandle.httpStatusHandle(error);
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async openAddNoteModal(actionName:string) {
|
|
||||||
|
|
||||||
let classs;
|
|
||||||
if( window.innerWidth <= 800){
|
|
||||||
classs = 'modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: AddNotePage,
|
|
||||||
componentProps:{
|
|
||||||
showAttachmentBtn: true,
|
|
||||||
actionName:actionName
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: true
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(async (res) => {
|
|
||||||
|
|
||||||
|
|
||||||
const DocumentToSave = res.data.documents.map((e) => {
|
|
||||||
return {
|
|
||||||
ApplicationId: e.ApplicationType,
|
|
||||||
SourceId: e.Id,
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let docs = {
|
|
||||||
ProcessInstanceID: "",
|
|
||||||
Attachments: DocumentToSave,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(res.data) {
|
|
||||||
if(actionName == 'Solicitar Reapreciação') {
|
|
||||||
|
|
||||||
await this.repreciar(res.data.note, docs);
|
|
||||||
}
|
|
||||||
else if(actionName == 'Arquivar') {
|
|
||||||
await this.arquivar(res.data.note, docs);
|
|
||||||
this.popoverController.dismiss('close')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async arquivar(note:string, documents:any) {
|
|
||||||
|
|
||||||
const loader = this.toastService.loading()
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.pedidoService.arquivar({serialNumber: this.serialNumber,
|
|
||||||
documents,
|
|
||||||
note
|
|
||||||
}).toPromise()
|
|
||||||
|
|
||||||
this.httpErrorHandle.httpsSucessMessagge('Arquivar')
|
|
||||||
} catch (error) {
|
|
||||||
this.httpErrorHandle.httpStatusHandle(error)
|
|
||||||
} finally {
|
|
||||||
loader.remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async openDarParecer(task: any) {
|
|
||||||
|
|
||||||
let classs;
|
|
||||||
if( window.innerWidth <= 800){
|
|
||||||
classs = 'book-meeting-modal modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: DarParecerPage,
|
|
||||||
componentProps: {
|
|
||||||
serialNumber: this.task.SerialNumber,
|
|
||||||
ProcessInstanceID: this.task.ProcessInstanceID,
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then( () => {
|
|
||||||
this.popoverController.dismiss('close');
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async openForwardModal(tasK: any) {
|
|
||||||
let classs;
|
|
||||||
if (window.innerWidth <= 800) {
|
|
||||||
classs = 'book-meeting-modal modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: ForwardPage,
|
|
||||||
componentProps: {
|
|
||||||
task: this.task,
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then(() => {
|
|
||||||
this.popoverController.dismiss('close');
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
});
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
async openDelegarModal(task: any) {
|
|
||||||
|
|
||||||
|
|
||||||
let classs;
|
|
||||||
if( window.innerWidth <= 800){
|
|
||||||
classs = 'book-meeting-modal modal modal-desktop'
|
|
||||||
} else {
|
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.modalController.dismiss()
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: DelegarPage,
|
|
||||||
componentProps: {
|
|
||||||
task: this.task,
|
|
||||||
},
|
|
||||||
cssClass: classs,
|
|
||||||
backdropDismiss: false
|
|
||||||
});
|
|
||||||
|
|
||||||
modal.onDidDismiss().then( async (res)=> {
|
|
||||||
|
|
||||||
if(res['data']=='close') {
|
|
||||||
this.popoverController.dismiss('close');
|
|
||||||
}
|
|
||||||
|
|
||||||
}, (error) => {
|
|
||||||
console.log(error)
|
|
||||||
})
|
|
||||||
|
|
||||||
await modal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -56,6 +56,14 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.aside-modal::part(content){
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
right: 0px;
|
||||||
|
height: 100%;
|
||||||
|
width: 400px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.modal-top-100-width-background::part(content),
|
.modal-top-100-width-background::part(content),
|
||||||
|
|||||||
Reference in New Issue
Block a user