|
|
@@ -18,7 +18,7 @@ items_container_full_width: screenSize <= 640 }">
|
|
|
|
|
|
<div class="form-order-container" *ngIf="!isLoading && hasError">
|
|
|
<div class="has-error animated fadeIn fast">
|
|
|
- <mat-icon class="red_primary_font mb-40" >error</mat-icon>
|
|
|
+ <mat-icon class="red_primary_font mb-40">error</mat-icon>
|
|
|
<h3>{{ errorStr }}</h3>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -26,14 +26,14 @@ items_container_full_width: screenSize <= 640 }">
|
|
|
<div class="form-order-container animated fadeIn pt-2" *ngIf="!isLoading && !hasError">
|
|
|
<div class="form-column" [formGroup]="orderFormGroup">
|
|
|
<div class="form-row">
|
|
|
- <div class="form-cell" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }"
|
|
|
+ <div class="form-cell mt-8" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }"
|
|
|
*ngIf="action == 'Editar'">
|
|
|
<mat-form-field class="w-100" appearance="outline">
|
|
|
<mat-label>ID orden de trabajo</mat-label>
|
|
|
<input matInput formControlName="idOrderControl">
|
|
|
</mat-form-field>
|
|
|
</div>
|
|
|
- <div class="form-cell" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
+ <div class="form-cell mt-8" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
<mat-form-field class="w-100" appearance="outline">
|
|
|
<mat-label>Responsable de atender la solicitud</mat-label>
|
|
|
<mat-select formControlName="responsibleUserControl">
|
|
|
@@ -53,7 +53,7 @@ items_container_full_width: screenSize <= 640 }">
|
|
|
</mat-error>
|
|
|
</mat-form-field>
|
|
|
</div>
|
|
|
- <div class="form-cell" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
+ <div class="form-cell mt-8" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
<mat-form-field class="w-100" appearance="outline">
|
|
|
<mat-label>Gerencia de seguridad</mat-label>
|
|
|
<mat-select formControlName="securityManagementControl">
|
|
|
@@ -61,9 +61,12 @@ items_container_full_width: screenSize <= 640 }">
|
|
|
Gerencia de seguridad #{{ management.ID_GERENCIA_SEGURIDAD }}
|
|
|
</mat-option>
|
|
|
</mat-select>
|
|
|
+ <mat-error *ngIf="orderFormGroup.controls['securityManagementControl'].hasError('required')">
|
|
|
+ Este campo es requerido.
|
|
|
+ </mat-error>
|
|
|
</mat-form-field>
|
|
|
</div>
|
|
|
- <div class="form-cell C12">
|
|
|
+ <div class="form-cell mt-8 C12">
|
|
|
<mat-form-field class="w-100" appearance="outline">
|
|
|
<mat-label>Descripción de la intervención</mat-label>
|
|
|
<textarea matInput rows="4" style="resize: none;" formControlName="interventionDescriptionControl"
|
|
|
@@ -76,20 +79,78 @@ items_container_full_width: screenSize <= 640 }">
|
|
|
</mat-error>
|
|
|
</mat-form-field>
|
|
|
</div>
|
|
|
- <div class="form-cell C12">
|
|
|
+ <div class="form-cell mt-8 C12">
|
|
|
<mat-form-field class="w-100" appearance="outline">
|
|
|
<mat-label>Equipamiento relacionado</mat-label>
|
|
|
- <mat-select formControlName="equipmentControl" (valueChange)="equipmentChange(equipmentSel.value)" #equipmentSel>
|
|
|
+ <!--<mat-select formControlName="equipmentControl" (valueChange)="equipmentChange(equipmentSel.value)" #equipmentSel>
|
|
|
<mat-option *ngFor="let equipment of equipments" [value]="equipment.CODIGO">
|
|
|
{{ equipment.TIPO }} - {{ equipment.MODELO }}
|
|
|
</mat-option>
|
|
|
- </mat-select>
|
|
|
+ </mat-select>-->
|
|
|
+ <input type="text" matInput formControlName="equipmentControl" [matAutocomplete]="equipmentComplete"
|
|
|
+ #equipmentInp (blur)="changeEquipmentTable(equipmentInp.value)">
|
|
|
+ <mat-autocomplete #equipmentComplete>
|
|
|
+ @if(searchingEquipments){
|
|
|
+ <mat-option><p class="m-0 search-text">Buscando resultados...</p></mat-option>
|
|
|
+ }
|
|
|
+ @if(autoCompleteEquipments.length == 0 && !searchingEquipments){
|
|
|
+ <mat-option><p class="m-0" style="font-weight: 500;">No se encontraron resultados.</p></mat-option>
|
|
|
+ }
|
|
|
+ @for(equipment of autoCompleteEquipments; track equipment){
|
|
|
+ <mat-option [value]="equipment">{{ equipment }}</mat-option>
|
|
|
+ }
|
|
|
+ </mat-autocomplete>
|
|
|
+ <mat-hint align="end">
|
|
|
+ <a class="hint-button blue_send_font" (click)="openArborescenceSearch()">Búsqueda gráfica</a>
|
|
|
+ </mat-hint>
|
|
|
<mat-error *ngIf="orderFormGroup.controls['equipmentControl'].hasError('required')">
|
|
|
Este campo es requerido.
|
|
|
</mat-error>
|
|
|
</mat-form-field>
|
|
|
</div>
|
|
|
- <div class="form-cell" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
+ <div class="form-cell mt-8 C12">
|
|
|
+ <table mat-table [dataSource]="dataSource!" class="animated fadeIn" style="background: #f8f4f4 !important;">
|
|
|
+ <ng-container matColumnDef="EQUIPO">
|
|
|
+ <th mat-header-cell *matHeaderCellDef>Equipamiento</th>
|
|
|
+ <td mat-cell *matCellDef="let row" style="word-break: break-all;max-lines: 5;">
|
|
|
+ {{ row.TIPO_EQUIPAMIENTO }} - {{ row.MODELO }}
|
|
|
+ </td>
|
|
|
+ </ng-container>
|
|
|
+
|
|
|
+ <ng-container matColumnDef="ACCIONES">
|
|
|
+ <th mat-header-cell *matHeaderCellDef>Acciones</th>
|
|
|
+ <td mat-cell *matCellDef="let row">
|
|
|
+ <button mat-mini-fab class="transparent_background gray_dark_font override_no_shadow" [matMenuTriggerFor]="menu">
|
|
|
+ <mat-icon>more_vert</mat-icon>
|
|
|
+ </button>
|
|
|
+ <mat-menu #menu="matMenu">
|
|
|
+ <button mat-menu-item (click)="openEquipmentDetails(row.CODIGO)">
|
|
|
+ <mat-icon>visibility</mat-icon>
|
|
|
+ <span>Detalles del equipamiento</span>
|
|
|
+ </button>
|
|
|
+ <button mat-menu-item (click)="openEquipmentArborescence(row.CODIGO)">
|
|
|
+ <mat-icon>description</mat-icon>
|
|
|
+ <span>Ficha de detalles</span>
|
|
|
+ </button>
|
|
|
+ <button mat-menu-item (click)="openEquipmentDocuments(row.CODIGO)">
|
|
|
+ <mat-icon>description</mat-icon>
|
|
|
+ <span>Ver documentación</span>
|
|
|
+ </button>
|
|
|
+ </mat-menu>
|
|
|
+ </td>
|
|
|
+ </ng-container>
|
|
|
+
|
|
|
+ <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
|
|
+ <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
|
|
+
|
|
|
+ <tr class="mat-row" *matNoDataRow>
|
|
|
+ <td class="mat-cell centre" colspan="100%">
|
|
|
+ No se encontró información del equipamiento.
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell mt-8" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
<mat-form-field class="w-100" appearance="outline">
|
|
|
<mat-label>Fecha de inicio de la falla</mat-label>
|
|
|
<input matInput formControlName="failStartDateControl" [matDatepicker]="failStartDatePicker">
|
|
|
@@ -97,7 +158,7 @@ items_container_full_width: screenSize <= 640 }">
|
|
|
<mat-datepicker #failStartDatePicker></mat-datepicker>
|
|
|
</mat-form-field>
|
|
|
</div>
|
|
|
- <div class="form-cell" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
+ <div class="form-cell mt-8" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
<mat-form-field class="w-100" appearance="outline">
|
|
|
<mat-label>Tiempo estimado de la solución</mat-label>
|
|
|
<input matInput formControlName="solutionTimeControl" (input)="validateTime(solutionTime.value, 'input')"
|
|
|
@@ -108,7 +169,7 @@ items_container_full_width: screenSize <= 640 }">
|
|
|
</mat-error>
|
|
|
</mat-form-field>
|
|
|
</div>
|
|
|
- <div class="form-cell" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
+ <div class="form-cell mt-8" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
<mat-form-field class="w-100" appearance="outline">
|
|
|
<mat-label>Prioridad</mat-label>
|
|
|
<mat-select formControlName="priorityControl">
|
|
|
@@ -120,7 +181,7 @@ items_container_full_width: screenSize <= 640 }">
|
|
|
</mat-select>
|
|
|
</mat-form-field>
|
|
|
</div>
|
|
|
- <div class="form-cell" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
+ <div class="form-cell mt-8" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
<mat-form-field class="w-100" appearance="outline" *ngIf="!loadingCounters">
|
|
|
<mat-label>Contador relacionado</mat-label>
|
|
|
<mat-select formControlName="counterControl" #counterSelect (valueChange)="counterChange(counterSelect.value)">
|
|
|
@@ -140,8 +201,8 @@ items_container_full_width: screenSize <= 640 }">
|
|
|
</mat-form-field>
|
|
|
<mat-progress-bar mode="indeterminate" *ngIf="loadingCounters" class="mb-20"></mat-progress-bar>
|
|
|
</div>
|
|
|
- <div class="form-cell C12 mb-20">
|
|
|
- <table mat-table [dataSource]="symptomsDataSource" *ngIf="!loadingMeasures" class="animated fadeIn">
|
|
|
+ <div class="form-cell mt-8 C12 mb-20">
|
|
|
+ <table mat-table [dataSource]="symptomsDataSource" *ngIf="!loadingMeasures" class="animated fadeIn" style="background: #f8f4f4 !important;">
|
|
|
<ng-container matColumnDef="ID">
|
|
|
<th mat-header-cell *matHeaderCellDef>#</th>
|
|
|
<td mat-cell *matCellDef="let row">{{ row.ID_MEDIDA }}</td>
|
|
|
@@ -195,7 +256,51 @@ items_container_full_width: screenSize <= 640 }">
|
|
|
</table>
|
|
|
<mat-progress-bar mode="indeterminate" *ngIf="loadingMeasures" class="animated fadeIn w-100"></mat-progress-bar>
|
|
|
</div>
|
|
|
- <div class="form-cell" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
+ <div class="form-cell mt-8 C12">
|
|
|
+ <mat-form-field appearance="outline" class="w-100">
|
|
|
+ <mat-label>Especialidades y/o oficios</mat-label>
|
|
|
+ <mat-select multiple formControlName="personalControl" (valueChange)="updateSpecialty(staff.value)" #staff>
|
|
|
+ <mat-option *ngFor="let specialty of specialties" [value]="specialty.CODIGO_ESPECIALIDAD">
|
|
|
+ {{ specialty.NOMBRE_ESPECIALIDAD }}
|
|
|
+ </mat-option>
|
|
|
+ </mat-select>
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell mt-8 C12">
|
|
|
+ <table mat-table [dataSource]="specialtiesDataSource!" class="animated fadeIn" style="background: #f8f4f4 !important;">
|
|
|
+ <ng-container matColumnDef="ITEM">
|
|
|
+ <th mat-header-cell *matHeaderCellDef>Especialidad u oficio</th>
|
|
|
+ <td mat-cell *matCellDef="let row">{{ row.NOMBRE_ESPECIALIDAD }}</td>
|
|
|
+ </ng-container>
|
|
|
+
|
|
|
+ <ng-container matColumnDef="CANTREQ">
|
|
|
+ <th mat-header-cell *matHeaderCellDef>Cantidad de operarios requerida</th>
|
|
|
+ <td mat-cell *matCellDef="let row">
|
|
|
+ <mat-form-field appearance="outline" style="width: 192px;">
|
|
|
+ <button mat-mini-fab color="primary" class="override_no_shadow ml-8" matPrefix [disabled]="cantReq.value == '1'"
|
|
|
+ (click)="changeReq('rem', row.CODIGO_ESPECIALIDAD)">
|
|
|
+ <mat-icon>remove</mat-icon>
|
|
|
+ </button>
|
|
|
+ <input matInput style="text-align: center;" value="1" [id]="'cant-req-' + row.CODIGO_ESPECIALIDAD"
|
|
|
+ (input)="validateCant(cantReq.value, row.CODIGO_ESPECIALIDAD)" #cantReq>
|
|
|
+ <button mat-mini-fab color="primary" class="override_no_shadow mr-8" matSuffix (click)="changeReq('add', row.CODIGO_ESPECIALIDAD)">
|
|
|
+ <mat-icon>add</mat-icon>
|
|
|
+ </button>
|
|
|
+ </mat-form-field>
|
|
|
+ </td>
|
|
|
+ </ng-container>
|
|
|
+
|
|
|
+ <tr mat-header-row *matHeaderRowDef="specialtiesDisplayedColumns"></tr>
|
|
|
+ <tr mat-row *matRowDef="let row; columns: specialtiesDisplayedColumns;"></tr>
|
|
|
+
|
|
|
+ <tr class="mat-row" *matNoDataRow>
|
|
|
+ <td class="mat-cell centre" colspan="100%">
|
|
|
+ No se ha seleccionado ninguna especialidad u oficio.
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell mt-8" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
<mat-form-field class="w-100" appearance="outline">
|
|
|
<mat-label>Clasificación</mat-label>
|
|
|
<input matInput formControlName="clasificationControl" (input)="orderFormGroup.controls['clasificationControl'].markAsTouched()"
|
|
|
@@ -213,7 +318,7 @@ items_container_full_width: screenSize <= 640 }">
|
|
|
</mat-error>
|
|
|
</mat-form-field>
|
|
|
</div>
|
|
|
- <div class="form-cell" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
+ <!--<div class="form-cell" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
<mat-form-field class="w-100" appearance="outline">
|
|
|
<mat-label>Personal involucrado</mat-label>
|
|
|
<mat-select multiple formControlName="personalControl">
|
|
|
@@ -237,99 +342,104 @@ items_container_full_width: screenSize <= 640 }">
|
|
|
Este campo es requerido.
|
|
|
</mat-error>
|
|
|
</mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
+ </div>-->
|
|
|
+ <div class="form-cell mt-8" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
<mat-form-field class="w-100" appearance="outline">
|
|
|
<mat-label>Tipo de activación</mat-label>
|
|
|
<input matInput formControlName="activationType">
|
|
|
</mat-form-field>
|
|
|
</div>
|
|
|
- <div class="form-cell" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
+ <div class="form-cell mt-8" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
<mat-form-field class="w-100" appearance="outline">
|
|
|
- <mat-label>Refacciones y herramientas necesarias</mat-label>
|
|
|
- <mat-select multiple formControlName="resourcesControl" #resourcesSel (valueChange)="spareAndToolsChange(resourcesSel.value)">
|
|
|
- <mat-option value="N">--Ninguna--</mat-option>
|
|
|
- <mat-optgroup label="Refacciones">
|
|
|
- <mat-option *ngFor="let sparePart of spareParts" [value]="sparePart.ID + '-R'" [disabled]="resourcesSel.value.includes('N')">
|
|
|
- {{ sparePart.NOMB }} - {{ sparePart.MODE }}
|
|
|
- </mat-option>
|
|
|
- </mat-optgroup>
|
|
|
- <mat-optgroup label="Herramientas">
|
|
|
- <mat-option *ngFor="let tool of tools" [value]="tool.ID + '-H'" [disabled]="resourcesSel.value.includes('N')">
|
|
|
- {{ tool.NOMB }} - {{ tool.MODE }}
|
|
|
- </mat-option>
|
|
|
- </mat-optgroup>
|
|
|
+ <mat-label>Herramientas requeridas</mat-label>
|
|
|
+ <mat-select #toolsSel (valueChange)="toolsChange(toolsSel.value, partsSel.value)" multiple formControlName="toolsControl">
|
|
|
+ <mat-option value="SH">
|
|
|
+ Ninguna
|
|
|
+ </mat-option>
|
|
|
+ <mat-option *ngFor="let tool of tools" [value]="tool.ID" [disabled]="toolsSel.value.includes('SH')">
|
|
|
+ <span style="font-weight: 500;">
|
|
|
+ {{ tool.NOMB }}
|
|
|
+ </span> - {{ tool.MODE }} <span style="font-weight: 100;">
|
|
|
+ ({{ tool.CANTDISP }} disponibles)
|
|
|
+ </span>
|
|
|
+ </mat-option>
|
|
|
</mat-select>
|
|
|
- <mat-error *ngIf="orderFormGroup.controls['resourcesControl'].hasError('required')">
|
|
|
+ <mat-error *ngIf="orderFormGroup.controls['toolsControl'].hasError('required')">
|
|
|
Este campo es requerido.
|
|
|
</mat-error>
|
|
|
</mat-form-field>
|
|
|
</div>
|
|
|
- <div class="form-cell C12 mb-20">
|
|
|
- <table mat-table [dataSource]="resourcesDataSource" class="animated fadeIn">
|
|
|
- <ng-container matColumnDef="ID">
|
|
|
- <th mat-header-cell *matHeaderCellDef>#</th>
|
|
|
- <td mat-cell *matCellDef="let row">{{ row.ID }}</td>
|
|
|
- </ng-container>
|
|
|
-
|
|
|
- <ng-container matColumnDef="NOMB">
|
|
|
- <th mat-header-cell *matHeaderCellDef>Nombre</th>
|
|
|
- <td mat-cell *matCellDef="let row">{{ row.NOMB }}</td>
|
|
|
- </ng-container>
|
|
|
-
|
|
|
- <ng-container matColumnDef="MODE">
|
|
|
- <th mat-header-cell *matHeaderCellDef>Modelo</th>
|
|
|
- <td mat-cell *matCellDef="let row">{{ row.MODE }}</td>
|
|
|
+ <div class="form-cell mt-8" [ngClass]="{ C03: screenSize > 1460, C06: screenSize <= 1460 && screenSize > 840, C12: screenSize <= 840 }">
|
|
|
+ <mat-form-field class="w-100" appearance="outline">
|
|
|
+ <mat-label>Refacciones requeridas</mat-label>
|
|
|
+ <mat-select #partsSel (valueChange)="toolsChange(toolsSel.value, partsSel.value)" multiple formControlName="sparePartsControl">
|
|
|
+ <mat-option value="SH">
|
|
|
+ Ninguna
|
|
|
+ </mat-option>
|
|
|
+ <mat-option *ngFor="let item of spareParts" [value]="item.ID" [disabled]="partsSel.value.includes('SH')">
|
|
|
+ <span style="font-weight: 500;">
|
|
|
+ {{ item.NOMB }}
|
|
|
+ </span> - {{ item.MODE }} <span style="font-weight: 100;">
|
|
|
+ ({{ item.CANTDISP }} disponibles)
|
|
|
+ </span>
|
|
|
+ </mat-option>
|
|
|
+ </mat-select>
|
|
|
+ <mat-error *ngIf="orderFormGroup.controls['sparePartsControl'].hasError('required')">
|
|
|
+ Este campo es requerido.
|
|
|
+ </mat-error>
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell mt-8 C12 mb-20">
|
|
|
+ <table mat-table [dataSource]="toolsDataSource!" class="animated fadeIn" style="background: #f8f4f4 !important;">
|
|
|
+ <ng-container matColumnDef="ITEM">
|
|
|
+ <th mat-header-cell *matHeaderCellDef>Herramienta / Refacción</th>
|
|
|
+ <td mat-cell *matCellDef="let row">{{ row.NOMB }} - {{ row.MODE }}</td>
|
|
|
</ng-container>
|
|
|
-
|
|
|
- <ng-container matColumnDef="TYPE">
|
|
|
+
|
|
|
+ <ng-container matColumnDef="TIPO">
|
|
|
<th mat-header-cell *matHeaderCellDef>Tipo</th>
|
|
|
<td mat-cell *matCellDef="let row">{{ row.TYPE }}</td>
|
|
|
</ng-container>
|
|
|
-
|
|
|
+
|
|
|
<ng-container matColumnDef="CANTDISP">
|
|
|
<th mat-header-cell *matHeaderCellDef>Cantidad disponible</th>
|
|
|
<td mat-cell *matCellDef="let row">{{ row.CANTDISP }} {{ row.UNIT }}(s)</td>
|
|
|
</ng-container>
|
|
|
-
|
|
|
- <ng-container matColumnDef="CANTREC">
|
|
|
+
|
|
|
+ <ng-container matColumnDef="CANTNEC">
|
|
|
<th mat-header-cell *matHeaderCellDef>Cantidad requerida</th>
|
|
|
<td mat-cell *matCellDef="let row">
|
|
|
- <input type="hidden" [id]="'cant-req-' + row.ID" value="1" #cantReq>
|
|
|
- <div class="required-resource">
|
|
|
- <button mat-icon-button [disabled]="cantReq.value == '1'" (click)="changeCantReq('remove', row.ID, row.CANTDISP)">
|
|
|
+ <mat-form-field appearance="outline" style="width: 192px;">
|
|
|
+ <button mat-mini-fab color="primary" class="override_no_shadow ml-8" matPrefix [disabled]="cantReq.value == '1'"
|
|
|
+ (click)="changeReq('rem', row.ID)">
|
|
|
<mat-icon>remove</mat-icon>
|
|
|
</button>
|
|
|
- <p matRipple (click)="openSpecificRequiredNumber(row.ID, row.CANTDISP)">{{ cantReq.value }}</p>
|
|
|
- <button mat-icon-button (click)="changeCantReq('add', row.ID, row.CANTDISP)">
|
|
|
+ <input matInput style="text-align: center;" value="1" [id]="'cant-req-' + row.ID" (input)="validateCant(cantReq.value, row.ID)" #cantReq>
|
|
|
+ <button mat-mini-fab color="primary" class="override_no_shadow mr-8" matSuffix (click)="changeReq('add', row.ID)">
|
|
|
<mat-icon>add</mat-icon>
|
|
|
</button>
|
|
|
- </div>
|
|
|
+ </mat-form-field>
|
|
|
</td>
|
|
|
</ng-container>
|
|
|
-
|
|
|
- <ng-container matColumnDef="CANTREST">
|
|
|
+
|
|
|
+ <ng-container matColumnDef="CANTRES">
|
|
|
<th mat-header-cell *matHeaderCellDef>Cantidad restante</th>
|
|
|
- <td mat-cell *matCellDef="let row">
|
|
|
- <input type="hidden" [id]="'cant-rest-' + row.ID" value="1" #cantRest>
|
|
|
- <p style="font-weight: 500;" [ngClass]="{green_primary_font: intval(cantRest.value) > 0, amber_primary_font: intval(cantRest.value) == 0,
|
|
|
- red_primary_font: intval(cantRest.value) < 0}">
|
|
|
- {{ cantRest.value }} {{ row.UNIT }}(s)
|
|
|
- </p>
|
|
|
+ <td mat-cell *matCellDef="let row" [ngClass]="{ green_primary_font: isPositive(row.CANTDISP, row.ID), red_primary_font: !isPositive(row.CANTDISP, row.ID) }">
|
|
|
+ {{ calcRest(row.CANTDISP, row.ID) }} {{ row.UNIT }}(s)
|
|
|
</td>
|
|
|
</ng-container>
|
|
|
|
|
|
- <tr mat-header-row *matHeaderRowDef="resourcesDisplayedColumns"></tr>
|
|
|
- <tr mat-row *matRowDef="let row; columns: resourcesDisplayedColumns;"></tr>
|
|
|
+ <tr mat-header-row *matHeaderRowDef="toolsDisplayedColumns"></tr>
|
|
|
+ <tr mat-row *matRowDef="let row; columns: toolsDisplayedColumns;"></tr>
|
|
|
|
|
|
<tr class="mat-row" *matNoDataRow>
|
|
|
<td class="mat-cell centre" colspan="100%">
|
|
|
- No se ha seleccionado ninguna herramiento o refacción.
|
|
|
+ No se ha seleccionado ninguna herramienta o refacción.
|
|
|
</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
</div>
|
|
|
- <div class="form-cell w-100" [ngClass]="{ attached_horizontal: screenSize > 960, attached_vertical: screenSize <= 960 }">
|
|
|
+ <div class="form-cell mt-8 C12" [ngClass]="{ attached_horizontal: screenSize > 960, attached_vertical: screenSize <= 960 }">
|
|
|
<div class="attached-container" [ngClass]="{ ac_horizontal: screenSize > 960, ac_vertical: screenSize <= 960 }">
|
|
|
<div class="buttons-container" [ngClass]="{ bc_horizontal: screenSize > 960, bc_vertical: screenSize <= 960 }">
|
|
|
<div class="attach-button raised-button-background" (click)="openFileUploader()" matRipple [ngClass]="{
|