subcontratist.component.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. <main class="main-container animated fadeIn" (window:resize)="onResize()">
  2. <header id="navigation" class="btn-navigate mb-8" [style]="changeOnTab && cardSmall ? 'width: calc(100% - 40%)!important' : ''">
  3. <div class="prev-page prevent-select indigo_primary_background
  4. mat-elevation-z8" matRipple [routerLink]="['/sam/GPRS']">
  5. <mat-icon style="color: white">arrow_back</mat-icon>
  6. <div class="page-name ml-4">Menú de Gestión del Personal</div>
  7. </div>
  8. </header>
  9. <mat-card class="override-card override-elevation-z8" [style]="changeOnTab && cardSmall ? 'width: calc(100% - 40%)!important' : ''">
  10. <mat-tab-group style="overflow: auto;" #tabGroup (selectedTabChange)="tabChange($event)">
  11. <mat-tab label="Subcontratistas" >
  12. <section class="override-section">
  13. <nav class="override-nav">
  14. <mat-card-title class="mat-card-title centre">Lista de
  15. Subcontratistas</mat-card-title>
  16. <div class="override-actions">
  17. <mat-form-field appearance="outline" class="w-300p
  18. mr-8">
  19. <mat-label>Buscador</mat-label>
  20. <input matInput [(ngModel)]="txtBuscadorSubcontratists"
  21. (keyup)="applyFilterSubcontratists($event,'INP')"
  22. placeholder="Ingrese la palabra a buscar" />
  23. <mat-icon *ngIf="txtBuscadorSubcontratists.length === 0"
  24. matSuffix>search</mat-icon>
  25. <mat-icon *ngIf="txtBuscadorSubcontratists.length> 0"
  26. class="clickable" matTooltip="Eliminar
  27. filtro"
  28. (click)="applyFilterSubcontratists('', 'EST')" matSuffix>close</mat-icon>
  29. </mat-form-field>
  30. <div class="override-buttons">
  31. <button mat-raised-button color="primary"
  32. matTooltip="Registrar Subcontratista"
  33. [disabled]="isLoading" *ngIf="!btnSmall"
  34. class="override-no-shadow mr-10"
  35. (click)="openDialog('REG')">
  36. <mat-icon>add</mat-icon> Nuevo
  37. </button>
  38. <button mat-mini-fab color="primary"
  39. matTooltip="Registrar Subcontratista"
  40. [disabled]="isLoading" *ngIf="btnSmall"
  41. class="override-no-shadow mr-8"
  42. (click)="openDialog('REG')">
  43. <mat-icon>add</mat-icon>
  44. </button>
  45. <button mat-mini-fab color="info"
  46. (click)="getSubcontratists()"
  47. [disabled]="isLoading"
  48. matTooltip="Actualizar
  49. Datos" class="override-no-shadow mr-10">
  50. <mat-icon>refresh</mat-icon>
  51. </button>
  52. </div>
  53. </div>
  54. </nav>
  55. <!-- ALERTAS - CARGANDO FORMULARIOS -->
  56. <div>
  57. <div class="is-loading animated fadeIn fast"
  58. *ngIf="isLoading">
  59. <mat-spinner align="center"></mat-spinner>
  60. <h3>Cargando datos ...</h3>
  61. </div>
  62. <mat-progress-bar mode="indeterminate"
  63. *ngIf="isLoadingForm"></mat-progress-bar>
  64. </div>
  65. <!-- CONTENEDOR DE LA TABLA -->
  66. <div class="override-table" style="height: calc(100% - 66px)!important;">
  67. <!-- TABLA -->
  68. <table mat-table [dataSource]="dataSourceSubcontratists!" matSort
  69. class="animated fadeIn" [style.display]="isLoading ?
  70. 'none' : 'revert'">
  71. <ng-container matColumnDef="NAME">
  72. <th mat-header-cell *matHeaderCellDef
  73. mat-sort-header>Nombre</th>
  74. <td mat-cell *matCellDef="let element">{{
  75. element.NAME }}</td>
  76. </ng-container>
  77. <ng-container matColumnDef="INTERVENTIONS_COUNT">
  78. <th mat-header-cell *matHeaderCellDef
  79. mat-sort-header>Cantidad
  80. Intervenciones</th>
  81. <td mat-cell *matCellDef="let element">{{
  82. element.INTERVENTIONS_COUNT }}</td>
  83. </ng-container>
  84. <ng-container matColumnDef="UPDATE_DATE">
  85. <th mat-header-cell *matHeaderCellDef
  86. mat-sort-header>Fecha
  87. Registro</th>
  88. <td mat-cell *matCellDef="let element">
  89. {{element.UPDATE_DATE != null ? element.UPDATE_DATE : element.REGISTER_DATE}}
  90. </td>
  91. </ng-container>
  92. <ng-container matColumnDef="UPDATED_BY_USER">
  93. <th mat-header-cell *matHeaderCellDef
  94. mat-sort-header>Usuario
  95. Registró</th>
  96. <td mat-cell *matCellDef="let element">
  97. {{element.UPDATED_BY_USER != null ? element.UPDATED_BY_USER : element.REGISTERED_BY_USER}}
  98. </td>
  99. </ng-container>
  100. <ng-container matColumnDef="STATUS">
  101. <th mat-header-cell *matHeaderCellDef
  102. mat-sort-header>Estado</th>
  103. <td mat-cell *matCellDef="let element">
  104. <mat-chip-listbox>
  105. <mat-chip
  106. class="teal_primary_background"
  107. selected *ngIf="element.STATUS ===
  108. 'Activo'"
  109. (click)="applyFilterSubcontratists(element.STATUS,
  110. 'EST')"> {{ element.STATUS }}
  111. </mat-chip>
  112. <mat-chip class="red_dark_background"
  113. selected
  114. *ngIf="element.STATUS ===
  115. 'Eliminado'"
  116. (click)="applyFilterSubcontratists(element.STATUS,
  117. 'EST')"> {{ element.STATUS }}
  118. </mat-chip>
  119. </mat-chip-listbox>
  120. </td>
  121. </ng-container>
  122. <ng-container matColumnDef="ACCIONES">
  123. <th mat-header-cell *matHeaderCellDef>Acciones</th>
  124. <td mat-cell *matCellDef="let element">
  125. <button mat-mini-fab color="accent"
  126. *ngIf="btnSmall && element.STATUS !== 'Eliminado'"
  127. [disabled]="isLoading" [matMenuTriggerFor]="menu"
  128. #menuTrigger class="override-no-shadow">
  129. <mat-icon>settings</mat-icon>
  130. </button>
  131. <button mat-mini-fab color="success" class="override-no-shadow" [disabled]="isLoading"
  132. (click)="openDialog('ACT', element)" *ngIf="btnSmall && element.STATUS == 'Eliminado'">
  133. <mat-icon>restore_from_trash</mat-icon>
  134. </button>
  135. <mat-menu #menu="matMenu">
  136. <button mat-menu-item
  137. (click)="openDialog('DET',
  138. element)">
  139. <mat-icon>visibility</mat-icon> Detalles
  140. </button>
  141. <button mat-menu-item
  142. (click)="openDialog('UPD',
  143. element)">
  144. <mat-icon>edit</mat-icon> Editar
  145. </button>
  146. <button mat-menu-item
  147. (click)="openDialog('DEL',
  148. element)">
  149. <mat-icon>delete</mat-icon> Eliminar
  150. </button>
  151. </mat-menu>
  152. <div *ngIf="!btnSmall">
  153. <button
  154. mat-mini-fab
  155. color="primary"
  156. class="override-no-shadow mr-4"
  157. [disabled]="element.STATUS ==
  158. 'Eliminado'
  159. || isLoadingForm"
  160. matTooltip="Ver Detalles"
  161. (click)="openDialog('DET',
  162. element)">
  163. <mat-icon>visibility</mat-icon>
  164. </button>
  165. <button
  166. mat-mini-fab
  167. color="accent"
  168. class="override-no-shadow mr-4"
  169. [disabled]="element.STATUS ==
  170. 'Eliminado'
  171. || isLoadingForm"
  172. matTooltip="Editar Subcontratista"
  173. (click)="openDialog('UPD',
  174. element)">
  175. <mat-icon>edit</mat-icon>
  176. </button>
  177. <button
  178. mat-mini-fab
  179. color="warn"
  180. class="override-no-shadow mr-4"
  181. [disabled]="isLoadingForm" *ngIf="element.STATUS == 'Activo'"
  182. matTooltip="Eliminar Subcontratista"
  183. (click)="openDialog('DEL',
  184. element)">
  185. <mat-icon>delete</mat-icon>
  186. </button>
  187. <button
  188. mat-mini-fab
  189. color="success"
  190. class="override-no-shadow mr-4"
  191. [disabled]="isLoadingForm" *ngIf="element.STATUS == 'Eliminado'"
  192. matTooltip="Activar Subcontratista"
  193. (click)="openDialog('ACT',
  194. element)">
  195. <mat-icon>restore_from_trash</mat-icon>
  196. </button>
  197. </div>
  198. </td>
  199. </ng-container>
  200. <tr mat-header-row
  201. *matHeaderRowDef="displayedColumnsSubcontratists"></tr>
  202. <tr mat-row *matRowDef="let row; columns:
  203. displayedColumnsSubcontratists"></tr>
  204. <tr class="mat-row" *matNoDataRow>
  205. <td class="mat-cell p-80 centre" colspan="12">
  206. <object data="assets/img/empty_data.svg"
  207. width="300"></object>
  208. <h2>Sin datos</h2>
  209. </td>
  210. </tr>
  211. </table>
  212. </div>
  213. </section>
  214. </mat-tab>
  215. <mat-tab label="Contratos">
  216. <section class="override-section">
  217. <nav>
  218. <mat-card-title class="mat-card-title centre">Lista de
  219. Contratos por Subcontratista</mat-card-title>
  220. <div class="override-actions">
  221. <mat-form-field appearance="outline" class="w-300p
  222. mr-8">
  223. <mat-label>Buscador</mat-label>
  224. <input matInput [(ngModel)]="txtBuscadorContracts"
  225. (keyup)="applyFilterContracts($event,'INP')"
  226. placeholder="Ingrese la palabra a buscar" />
  227. <mat-icon *ngIf="txtBuscadorContracts.length === 0"
  228. matSuffix>search</mat-icon>
  229. <mat-icon *ngIf="txtBuscadorContracts.length> 0"
  230. class="clickable" matTooltip="Eliminar
  231. filtro"
  232. (click)="applyFilterContracts('', 'EST')" matSuffix>close</mat-icon>
  233. </mat-form-field>
  234. <div class="override-buttons">
  235. <button mat-mini-fab color="info"
  236. (click)="getContractsBySubcontratists()"
  237. [disabled]="isLoading"
  238. matTooltip="Actualizar
  239. Datos" class="override-no-shadow mr-10">
  240. <mat-icon>refresh</mat-icon>
  241. </button>
  242. </div>
  243. </div>
  244. </nav>
  245. <!-- ALERTAS - CARGANDO FORMULARIOS -->
  246. <div>
  247. <div class="is-loading animated fadeIn fast"
  248. *ngIf="isLoading">
  249. <mat-spinner align="center"></mat-spinner>
  250. <h3>Cargando datos ...</h3>
  251. </div>
  252. <mat-progress-bar mode="indeterminate"
  253. *ngIf="isLoadingForm"></mat-progress-bar>
  254. </div>
  255. <!-- CONTENEDOR DE LA TABLA -->
  256. <div class="override-table" style="height: calc(100% - 66px)!important;">
  257. <!-- TABLA -->
  258. <table mat-table [dataSource]="dataSourceContracts!" matSort #MatSort2="matSort"
  259. class="animated fadeIn" [style.display]="isLoading ?
  260. 'none' : 'revert'">
  261. <ng-container matColumnDef="NAME">
  262. <th mat-header-cell *matHeaderCellDef
  263. mat-sort-header>Nombre</th>
  264. <td mat-cell *matCellDef="let element">{{
  265. element.NAME }}</td>
  266. </ng-container>
  267. <ng-container matColumnDef="CONTRACTS_COUNT">
  268. <th mat-header-cell *matHeaderCellDef
  269. mat-sort-header>Cantidad
  270. Contratos</th>
  271. <td mat-cell *matCellDef="let element">{{
  272. element.CONTRACTS_COUNT }}</td>
  273. </ng-container>
  274. <ng-container matColumnDef="ACCIONES">
  275. <th mat-header-cell *matHeaderCellDef>Acciones</th>
  276. <td mat-cell *matCellDef="let element">
  277. <button mat-mini-fab color="accent"
  278. *ngIf="btnSmall"
  279. [disabled]="isLoading" [matMenuTriggerFor]="menu"
  280. #menuTrigger class="override-no-shadow">
  281. <mat-icon>settings</mat-icon>
  282. </button>
  283. <mat-menu #menu="matMenu">
  284. <button mat-menu-item
  285. (click)="openDialog('HIS',
  286. element)">
  287. <mat-icon>visibility</mat-icon> Historial
  288. </button>
  289. <!-- Pendiente por modulo gestión de adquisiciónes -->
  290. <button mat-menu-item
  291. (click)="openDialog('PRO')">
  292. <mat-icon>local_shipping</mat-icon> Proveedores
  293. </button>
  294. </mat-menu>
  295. <div *ngIf="!btnSmall">
  296. <button
  297. mat-mini-fab
  298. color="primary"
  299. class="override-no-shadow mr-4"
  300. [disabled]="isLoadingForm"
  301. matTooltip="Ver Historial"
  302. (click)="openDialog('HIS',
  303. element)">
  304. <mat-icon>visibility</mat-icon>
  305. </button>
  306. <!-- Pendiente por modulo gestión de adquisiciónes -->
  307. <button
  308. mat-mini-fab
  309. color="accent"
  310. class="override-no-shadow mr-4"
  311. [disabled]="isLoadingForm"
  312. (click)="openDialog('PRO')"
  313. matTooltip="Ver Ficha Proveedores">
  314. <mat-icon>local_shipping</mat-icon>
  315. </button>
  316. </div>
  317. </td>
  318. </ng-container>
  319. <tr mat-header-row
  320. *matHeaderRowDef="displayedColumnsContracts"></tr>
  321. <tr mat-row *matRowDef="let row; columns:
  322. displayedColumnsContracts"></tr>
  323. <tr class="mat-row" *matNoDataRow>
  324. <td class="mat-cell p-80 centre" colspan="12">
  325. <object data="assets/img/empty_data.svg"
  326. width="300"></object>
  327. <h2>Sin datos</h2>
  328. </td>
  329. </tr>
  330. </table>
  331. </div>
  332. </section>
  333. </mat-tab>
  334. </mat-tab-group>
  335. <!-- PAGINADOR -->
  336. <mat-paginator [pageSizeOptions]="[10, 50, 100]" class="override-paginator" [style.display]="changeOnTab ?
  337. 'none' : 'revert'"></mat-paginator>
  338. <mat-paginator [pageSizeOptions]="[10, 50, 100]" #MatPaginator2="matPaginator" class="override-paginator" [style.display]="!changeOnTab ?
  339. 'none' : 'revert'"></mat-paginator>
  340. </mat-card>
  341. </main>