unprogrammed-visits.component.html 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <main class="main-container animated fadeIn prevent-select" (window:resize)="onResize()">
  2. <header id="navigation" class="btn-navigate mb-8">
  3. <div class="prev-page prevent-select raised-button-background mat-elevation-z8" (click)="goBack(1)" matRipple>
  4. <mat-icon style="color: white;">arrow_back</mat-icon>
  5. <div class="page-name ml-4">Gestión de mantenimiento preventivo</div>
  6. </div>
  7. </header>
  8. <mat-card class="override-card override-elevation-z8">
  9. <section class="override-section">
  10. <nav class="override-nav">
  11. <mat-card-title class="mat-card-title centre">Visitas técnicas no programadas</mat-card-title>
  12. <div class="override-actions">
  13. <mat-form-field appearance="outline" class="w-300p mr-8">
  14. <mat-label>Buscador</mat-label>
  15. <input matInput [(ngModel)]="txtBuscador" (keyup)="applyFilter($event,'INP')"
  16. placeholder="Ingrese la palabra a buscar" />
  17. <mat-icon *ngIf="txtBuscador.length === 0" matSuffix>search</mat-icon>
  18. <mat-icon *ngIf="txtBuscador.length > 0" class="clickable" matTooltip="Eliminar filtro"
  19. (click)="applyFilter('', 'EST')" matSuffix>close</mat-icon>
  20. </mat-form-field>
  21. <div class="override-buttons ">
  22. <button mat-flat-button class="mr-10 animated fadeIn " color="primary" (click)="registerVisit()" *ngIf="!btnSmall ">
  23. <mat-icon>add</mat-icon> Registrar visita no programada
  24. </button>
  25. <button mat-mini-fab class="override_no_shadow mr-10 animated fadeIn " color="primary" (click)="registerVisit()" *ngIf="btnSmall" class="override_no_shadow raised-button-background mr-4"
  26. matTooltip="Registrar visita no programada">
  27. <mat-icon>add</mat-icon>
  28. </button>
  29. <button mat-mini-fab class="orange_primary_background white_font override_no_shadow mr-10" matTooltip="Actualizar datos" (click)="getUnprogrammedVisits()">
  30. <mat-icon>refresh</mat-icon>
  31. </button>
  32. </div>
  33. </div>
  34. </nav>
  35. <div class="is-loading animated fadeIn fast" *ngIf="isLoading">
  36. <mat-spinner align="center"></mat-spinner>
  37. <h3>Cargando datos ...</h3>
  38. </div>
  39. <div class="has-error animated fadeIn fast" *ngIf="!isLoading && hasError">
  40. <mat-icon class="red_primary_font">error</mat-icon>
  41. <h3>{{ errorStr }}</h3>
  42. </div>
  43. <div class="override-table" [ngClass]="{ hidden: isLoading || hasError }">
  44. <table mat-table [dataSource]="dataSource!" matSort class="animated fadeIn"
  45. [style.display]="!isLoading && !hasError ? 'revert' : 'none'">
  46. <ng-container matColumnDef="ID">
  47. <th mat-header-cell *matHeaderCellDef mat-sort-header>ID</th>
  48. <td mat-cell *matCellDef="let row">{{ row.IDVISITA }}</td>
  49. </ng-container>
  50. <ng-container matColumnDef="EQUIP">
  51. <th mat-header-cell *matHeaderCellDef mat-sort-header>Equipamiento</th>
  52. <td mat-cell *matCellDef="let row" style="width: 40%;">{{ row.TIPO_EQUIPAMIENTO }} - {{ row.MODELO_EQUIPAMIENTO }}</td>
  53. </ng-container>
  54. <ng-container matColumnDef="ESTA" style="width: 30%;">
  55. <th mat-header-cell *matHeaderCellDef mat-sort-header>Estado</th>
  56. <td mat-cell *matCellDef="let row">{{ statusMap.get(row.ESTATUS) }}</td>
  57. </ng-container>
  58. <ng-container matColumnDef="ACCONES">
  59. <th mat-header-cell *matHeaderCellDef mat-sort-header>Acciones</th>
  60. <td mat-cell *matCellDef="let row">
  61. <button mat-mini-fab color="primary" class="mr-4 override_no_shadow animated fadeIn white_font pink_primary_background" matTooltip="Ver detalles" (click)="openVisitDetails(row.IDVISITA)"
  62. *ngIf="!btnSmall && row.ESTATUS == 'P'" >
  63. <mat-icon>visibility</mat-icon>
  64. </button>
  65. <button mat-mini-fab #toolTip="matTooltip" matTooltip="Aprobar visita"
  66. [ngClass]="{green_primary_background: !isLoading && row.ESTATUS == 'P', white_font: !isLoading && row.ESTATUS == 'P', hidden : row.ESTATUS == 'A' || row.ESTATUS == 'R'
  67. }" class="no_shadow" (click)="openCommentsDialog(row.IDVISITA, 'auth')"
  68. [disabled]="row.ESTATUS =='F' || row.ESTATUS == 'C'"
  69. *ngIf="!btnSmall">
  70. <mat-icon>done</mat-icon>
  71. </button>
  72. <button mat-mini-fab class="ml-4 no_shadow" matTooltip="Rechazar visita"
  73. [ngClass]="{red_primary_background: row.ESTATUS == 'P', white_font: row.ESTATUS == 'P', hidden : row.ESTATUS == 'A' || row.ESTATUS == 'R'}" (click)="openCommentsDialog(row.IDVISITA, 'decline')"
  74. [disabled]="row.ESTATUS == 'C' || row.ESTATUS == 'F'"
  75. *ngIf="!btnSmall">
  76. <mat-icon>close</mat-icon>
  77. </button>
  78. <button mat-mini-fab class="mt-4 white_font green_primary_background mr-4 override_no_shadow animated fadeIn" matTooltip="Finalizar visita"
  79. *ngIf="row.ESTATUS == 'A' && !btnSmall" (click)="openCommentsDialog(row.IDVISITA, 'end')">
  80. <mat-icon>check_circle</mat-icon>
  81. </button>
  82. <button mat-mini-fab class="mt-4 white_font red_primary_background mr-4 override_no_shadow animated fadeIn" matTooltip="Cancelar visita"
  83. *ngIf="row.ESTATUS == 'A' && !btnSmall" (click)="openCommentsDialog(row.IDVISITA, 'cancel')">
  84. <mat-icon>cancel</mat-icon>
  85. </button>
  86. <button mat-mini-fab color="primary" class="override_no_shadow animated fadeIn gray_dark_font transparent_background" *ngIf="btnSmall" [matMenuTriggerFor]="menu">
  87. <mat-icon>more_vert</mat-icon>
  88. </button>
  89. <button mat-mini-fab class="white_font green_primary_background mr-4 override_no_shadow animated fadeIn" matTooltip="Aprobar visita"
  90. [ngClass]="{hidden: row.ESTATUS == 'A' || row.ESTATUS == 'P' || row.ESTATUS == 'C' || row.ESTATUS == 'R'|| row.ESTATUS == 'F' }" (click)="openCommentsDialog(row.IDVISITA, 'cancel')">
  91. </button>
  92. <mat-menu #menu>
  93. <button mat-menu-item (click)="openVisitDetails(row.IDVISITA)">
  94. <mat-icon>visibility</mat-icon>
  95. <span>Ver detalles</span>
  96. </button>
  97. <button mat-menu-item *ngIf="row.ESTATUS == 'P'" (click)="openCommentsDialog(row.IDVISITA, 'auth')">
  98. <mat-icon>done</mat-icon>
  99. <span>Aprobar visita</span>
  100. </button>
  101. <button mat-menu-item *ngIf="row.ESTATUS == 'P'" (click)="openCommentsDialog(row.IDVISITA, 'decline')">
  102. <mat-icon>close</mat-icon>
  103. <span>Rechazar visita</span>
  104. </button>
  105. <button mat-menu-item *ngIf="row.ESTATUS == 'A'" (click)="openCommentsDialog(row.IDVISITA, 'end')">
  106. <mat-icon>check_circle</mat-icon>
  107. <span>Finalizar visita</span>
  108. </button>
  109. <button mat-menu-item *ngIf="row.ESTATUS == 'A'" (click)="openCommentsDialog(row.IDVISITA, 'cancel')">
  110. <mat-icon>cancel</mat-icon>
  111. <span>Cancelar visita</span>
  112. </button>
  113. </mat-menu>
  114. </td>
  115. </ng-container>
  116. <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
  117. <tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
  118. <tr class="mat-row" *matNoDataRow>
  119. <td class="mat-cell p-80 centre" colspan="100%">
  120. <object data="assets/img/empty_data.svg" width="300"></object>
  121. <h2>Sin datos</h2>
  122. </td>
  123. </tr>
  124. </table>
  125. </div>
  126. </section>
  127. <mat-paginator [pageSizeOptions]="[10, 50, 100]" class="override-paginator"></mat-paginator>
  128. </mat-card>
  129. </main>