[ADD] SUBIDA DE REGISTRO Y ACTUALIZACION DE DRIVE

parent 212fafe2
......@@ -34,11 +34,12 @@
},
"configurations": {
"production": {
"baseHref": "",
"budgets": [
{
"type": "initial",
"maximumWarning": "500kB",
"maximumError": "1MB"
"maximumWarning": "10MB",
"maximumError": "10MB"
},
{
"type": "anyComponentStyle",
......@@ -46,6 +47,12 @@
"maximumError": "4kB"
}
],
"fileReplacements": [
{
"replace": "src/environment/env.ts",
"with": "src/environment/env.prod.ts"
}
],
"outputHashing": "all"
},
"development": {
......
......@@ -19,6 +19,7 @@
"@angular/platform-browser-dynamic": "^18.2.0",
"@angular/router": "^18.2.0",
"axios": "^1.7.7",
"notiflix": "^3.2.7",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.14.10"
......@@ -6016,9 +6017,9 @@
"license": "MIT"
},
"node_modules/cookie": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
"integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
"dev": true,
"license": "MIT",
"engines": {
......@@ -6696,9 +6697,9 @@
}
},
"node_modules/engine.io": {
"version": "6.6.1",
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.1.tgz",
"integrity": "sha512-NEpDCw9hrvBW+hVEOK4T7v0jFJ++KgtPl4jKFwsZVfG1XhS0dCrSb3VMb9gPAd7VAdW52VT1EnaNiU2vM8C0og==",
"version": "6.6.2",
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz",
"integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==",
"dev": true,
"license": "MIT",
"dependencies": {
......@@ -6707,7 +6708,7 @@
"@types/node": ">=10.0.0",
"accepts": "~1.3.4",
"base64id": "2.0.0",
"cookie": "~0.4.1",
"cookie": "~0.7.2",
"cors": "~2.8.5",
"debug": "~4.3.1",
"engine.io-parser": "~5.2.1",
......@@ -7070,9 +7071,9 @@
"license": "Apache-2.0"
},
"node_modules/express": {
"version": "4.21.0",
"resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz",
"integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==",
"version": "4.21.1",
"resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
"integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
"dev": true,
"license": "MIT",
"dependencies": {
......@@ -7081,7 +7082,7 @@
"body-parser": "1.20.3",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
"cookie": "0.6.0",
"cookie": "0.7.1",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
......@@ -7113,9 +7114,9 @@
}
},
"node_modules/express/node_modules/cookie": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
"integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
"dev": true,
"license": "MIT",
"engines": {
......@@ -10402,6 +10403,12 @@
"node": ">=0.10.0"
}
},
"node_modules/notiflix": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/notiflix/-/notiflix-3.2.7.tgz",
"integrity": "sha512-NRu6KSeyfphgPKBxh4IUoOYXbROrpuDa9/q9/VPb6UNEP4uII9RKwclTZWUyl1A0tSh9+lEhdz9F/EkskH3A6w==",
"license": "MIT"
},
"node_modules/npm-bundled": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz",
......
......@@ -21,6 +21,7 @@
"@angular/platform-browser-dynamic": "^18.2.0",
"@angular/router": "^18.2.0",
"axios": "^1.7.7",
"notiflix": "^3.2.7",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.14.10"
......
......@@ -40,4 +40,23 @@ export class ConformidadHelper {
return respuesta
}
async subidaEvidencia2( json : any ){
const respuesta = await this.ConformidadService.subidaEvidencia2(json);
return respuesta
}
async creacionCarpeta(json : any){
const respuesta = await this.ConformidadService.creacionCarpeta(json);
return respuesta
}
async gestionOrdenSalida( json : any ){
const respuesta = await this.ConformidadService.gestionOrdenSalida(json);
if (respuesta?.status) {
return respuesta.json;
}else{
return [];
}
}
}
<div class="m-5">
<div class="m-5" [formGroup]="datos_materialSobrante">
<!-- Descripción del Material Sobrante -->
<div class="w-full">
<mat-form-field class="w-full">
<mat-label>DESCRIPCIÓN DEL MATERIAL SOBRANTE :</mat-label>
<textarea formControlName="descMaterial" matInput placeholder="Breve descripción de los materiales faltantes y su estado"></textarea>
</mat-form-field>
</div>
<!---------------------------------------------------------------------- SECCIÓN MATERIALES SOBRANTES ---------------------------------------------------------------------->
<div class="mt-6">
<!-- Título y botón de agregar artículo -->
<div class="grid gap-4 grid-cols-1 sm:grid-cols-2 items-center">
<mat-label class="text-[1.1em] font-bold mb-4 flex items-center">
LISTADO DE ARTÍCULOS
<mat-icon class="ml-2">attach_money</mat-icon>
</mat-label>
<button [ngStyle]="{'visibility': activarNuevoArticulo ? 'visible' : 'hidden'}" [disabled]="!activarNuevoArticulo" mat-raised-button (click)="onAgregarArticulo($event)">
<mat-icon>add</mat-icon>
<b>Agregar material</b>
</button>
</div>
<!-- Tabla de artículos -->
<div class="overflow-x-auto">
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8 w-full">
<!-- Columna Nombre de Artículo -->
<ng-container matColumnDef="nombre">
<th mat-header-cell *matHeaderCellDef> NOMBRE DE ARTÍCULO </th>
<td mat-cell *matCellDef="let element">
<ng-container *ngIf="element.isNew; else displayOrigen">
<mat-form-field class="w-[25rem]">
<input type="text" placeholder="Buscar artículos" matInput formControlName="articulo{{element.index}}" [matAutocomplete]="auto" maxlength="9"
(input)="onBusquedaArticulo($event,element.index)">
<mat-autocomplete #auto="matAutocomplete" (optionSelected)="onSeleccionArticulo($event,element.index)">
<mat-option *ngFor="let option of articulosList" [value]="option.codigo">
{{ option.nombre }}
</mat-option>
</mat-autocomplete>
</mat-form-field>
</ng-container>
<ng-template #displayOrigen>
{{ element.nombre }}
</ng-template>
</td>
</ng-container>
<!-- Columna Unidad -->
<ng-container matColumnDef="unidad">
<th mat-header-cell *matHeaderCellDef> UNIDAD </th>
<td mat-cell *matCellDef="let element">
<ng-container *ngIf="element.isNew; else displayOrigen">
<mat-label>{{formGroupMS(2,'unidad'+element.index)?.value}}</mat-label>
</ng-container>
<ng-template #displayOrigen>
{{ element.unidad }}
</ng-template>
</td>
</ng-container>
<!-- Columna Cantidad -->
<ng-container matColumnDef="cantidad">
<th mat-header-cell *matHeaderCellDef> CANTIDAD </th>
<td mat-cell *matCellDef="let element">
<ng-container *ngIf="element.isNew; else displayOrigen">
<mat-form-field class="w-[10rem]" appearance="outline">
<input matInput formControlName="cantidad{{element.index}}" soloNumeros maxlength="2">
</mat-form-field>
</ng-container>
<ng-template #displayOrigen>
{{ element.cantidad }}
</ng-template>
</td>
</ng-container>
<!-- Columna Estado Artículo -->
<ng-container matColumnDef="estado">
<th mat-header-cell *matHeaderCellDef> ESTADO ARTÍCULO </th>
<td mat-cell *matCellDef="let element">
<ng-container *ngIf="element.isNew; else displayOrigen">
<mat-form-field class="w-full select-tipoTrabajo">
<mat-label>Seleccionar tipo de trabajo</mat-label>
<mat-select formControlName="estado{{element.index}}">
<mat-option *ngFor="let tipoT of listEstadoArticulo" [value]="tipoT.valor">{{ tipoT.nombre }}</mat-option>
</mat-select>
</mat-form-field>
</ng-container>
<ng-template #displayOrigen>
{{ formatoEstado(element.estado) }}
</ng-template>
</td>
</ng-container>
<!-- Columna Acción -->
<ng-container matColumnDef="accion">
<th mat-header-cell *matHeaderCellDef> ACCIÓN </th>
<td mat-cell *matCellDef="let element">
<ng-container *ngIf="element.acciones; else sinAcciones">
<ng-container *ngIf="element.isNew; else accionesEditar">
<button mat-icon-button (click)="onEventoConfirmarArticulo($event, element)">
<mat-icon>check_circle</mat-icon>
</button>
<button mat-icon-button (click)="onEventoCancelarArticulo($event, element)">
<mat-icon>cancel</mat-icon>
</button>
</ng-container>
<ng-template #accionesEditar>
<button mat-icon-button (click)="onEventoEditarArticulo($event, element)">
<mat-icon>edit</mat-icon>
</button>
<button mat-icon-button (click)="onEventoEliminarArticulo($event, element)">
<mat-icon>delete</mat-icon>
</button>
</ng-template>
</ng-container>
<ng-template #sinAcciones></ng-template>
</td>
</ng-container>
<!-- Header y Filas -->
<tr mat-header-row *matHeaderRowDef="columnasArticulos"></tr>
<tr mat-row *matRowDef="let row; columns: columnasArticulos;"></tr>
</table>
</div>
</div>
</div>
<!--<div class="m-5" [formGroup]="datos_materialSobrante">
<div class="w-full">
<mat-form-field class="w-full">
<mat-label>DESCRIPCIÓN DEL MATERIAL SOBRANTE : </mat-label>
<textarea matInput placeholder="Breve descripción de los materiales faltantes y su estado"></textarea>
<textarea formControlName="descMaterial" matInput placeholder="Breve descripción de los materiales faltantes y su estado"></textarea>
</mat-form-field>
</div>
<!---------------------------------------------------------------------- SECCION MATERIALES SOBRANTES ---------------------------------------------------------------------->
<div [formGroup]="datos_materialSobrante">
<div>
<div class="grid gap-4 grid-cols-2">
<mat-label class="text-[1.1em] font-bold mb-4" style="display: flex;align-items: center;margin: unset">LISTADO DE ARTICULOS <mat-icon>attach_money</mat-icon> </mat-label>
<button [ngStyle]="{'visibility': activarNuevoArticulo ? 'visible' : 'hidden'}" [disabled]="!activarNuevoArticulo" mat-raised-button (click)="onAgregarArticulo($event)">
......@@ -41,10 +169,7 @@
<th mat-header-cell *matHeaderCellDef> UNIDAD </th>
<td mat-cell *matCellDef="let element">
<ng-container *ngIf="element.isNew; else displayOrigen">
<!-- <mat-form-field style="width: 20rem" appearance="outline">
<input matInput placeholder="[Lugar de Destino]" readonly>
</mat-form-field>-->
<mat-label>{{codigoUnidad}}</mat-label>
<mat-label>{{formGroupMS(2,'unidad'+element.index)?.value}}</mat-label>
</ng-container>
<ng-template #displayOrigen>
{{element.unidad}}
......@@ -115,5 +240,4 @@
</table>
</div>
</div>
<!---------------------------------------------------------------------- SECCION MATERIALES SOBRANTES ---------------------------------------------------------------------->
</div>
</div> -->
......@@ -31,6 +31,7 @@ import { ConfirmarEliminacionComponent } from '../conformidad/modalEliminarPasa
interface interArticulo{
index: number;
codigoArticulo : string;
nombre: string;
unidad: string;
cantidad: number;
......@@ -107,7 +108,9 @@ export class ordenSalidaComponent implements OnInit {
//FORM GROUP
datos_materialSobrante: FormGroup = new FormGroup<any>({});
public datos_materialSobrante: FormGroup = new FormGroup<any>({
descMaterial : new FormControl<String | null>(null,[Validators.maxLength(100)]),
});
//FORM GROUP
// INICIALIZACION DATOS
......@@ -116,7 +119,6 @@ export class ordenSalidaComponent implements OnInit {
activarNuevoArticulo: boolean = true;
indexArticulo: number = 0;
public dataSource: interArticulo[] = [];
codigoUnidad: string = '';
listEstadoArticulo: estadosArticulo[] = [{ valor: '1', nombre: 'BUENO'}, { valor: '2', nombre: 'OBSERVACIÓN' },{ valor: '3', nombre: 'MAL ESTADO' } ]
// INICIALIZACION DATOS
......@@ -141,25 +143,29 @@ export class ordenSalidaComponent implements OnInit {
private datePipe: DatePipe,
) {
this.articulosList = [];
this.codigoUnidad = '';
//this.codigoUnidad = '';
}
ngOnInit(): void {
this.dataSource = [];
}
onAgregarArticulo(event : any){
const NuevaFila : interArticulo = {
index: this.indexArticulo++,
codigoArticulo: '',
nombre: '',
unidad: '',
cantidad: 0,
estado: 1,
isNew: true,
isEdit: true,
isEdit: false,
acciones: true
};
this.formGroupMS(1,'articulo'+NuevaFila.index, new FormControl<String | null>(null,[Validators.maxLength(12)]));
this.formGroupMS(1,'codigoArticulo'+NuevaFila.index, new FormControl<String | null>(null));
this.formGroupMS(1,'unidad'+NuevaFila.index, new FormControl<String | null>(null));
this.formGroupMS(1,'cantidad'+NuevaFila.index, new FormControl<String | null>(null,[Validators.maxLength(2)]));
this.formGroupMS(1,'estado'+NuevaFila.index, new FormControl<String | null>(null ,[Validators.maxLength(1)]));
......@@ -175,15 +181,15 @@ export class ordenSalidaComponent implements OnInit {
this.activarNuevoArticulo = false;
this.articulosList = [];
console.log(this.articulosList);
}
onEventoConfirmarArticulo($event: MouseEvent, elemento : any) {
const articulo = this.formGroupMS(2,'articulo'+elemento.index)?.value;
const codigoArticulo = this.formGroupMS(2,'codigoArticulo'+elemento.index)?.value;
const unidad = this.formGroupMS(2,'unidad'+elemento.index)?.value;
const cantidad = this.formGroupMS(2,'cantidad'+elemento.index)?.value;
const estado = this.formGroupMS(2,'estado'+elemento.index)?.value;
//VALIDAR LOS VALORES OBTENIDOS ANTES DE REALIZAR UN REGISTRO
if(this.validarRegistroArticulo({articulo,cantidad,estado})){
......@@ -191,8 +197,9 @@ export class ordenSalidaComponent implements OnInit {
const index = this.dataSource.findIndex((item) => item.index === elemento.index);
this.dataSource[index] = {
index: elemento.index,
codigoArticulo : codigoArticulo,
nombre: articulo,
unidad: this.codigoUnidad,
unidad: unidad,
cantidad: cantidad,
estado: estado,
isNew: false,
......@@ -201,7 +208,7 @@ export class ordenSalidaComponent implements OnInit {
};
console.log(this.dataSource , 'DATASOURCE');
console.log(this.dataSource);
//console.log(lugarOrigen , lugarDestino, pasaje, fechaPasaje)
this.dataSource.forEach((item) => { item.acciones = true; }); // VUELVE A ACTIVAR TODAS LAS ACCION
......@@ -259,7 +266,7 @@ export class ordenSalidaComponent implements OnInit {
}
onEventoEditarArticulo(event: any, elemento : any) {
const index = this.dataSource.findIndex((item) => item.index === elemento.index);//Descubriendo el index
this.dataSource.forEach((item) => {
if (item.index === elemento.index) {
......@@ -273,10 +280,7 @@ export class ordenSalidaComponent implements OnInit {
}
});
//this.dataSource[index].isNew = true; //Obteniendo la fila del dataSource y cambiando el estado a nuevo
//this.dataSource[index].isEdit = true;
this.dataSource = [...this.dataSource]; // Volviendo a ingresar los datos para que la tabla se actualice y la fila cambie con las condiciones del HTML
this.activarNuevoArticulo = false;
}
......@@ -331,7 +335,9 @@ export class ordenSalidaComponent implements OnInit {
console.log(articulo);
//SE OPTIENE EL NOMBRE PARA PONERLO EN EL INPUT
this.formGroupMS(2,'articulo'+index)?.setValue(articulo.nombre);
this.codigoUnidad = articulo.unidad;
this.formGroupMS(2,'codigoArticulo'+index)?.setValue(articulo.codigo);
this.formGroupMS(2,'unidad'+index)?.setValue(articulo.unidad);
// this.codigoUnidad = articulo.unidad;
//SE VUELVE A LIMPIAR EL LISTADO DE ARTICULOS PARA DEJAR PASO A OTRA FUTURA BUSQUEDA.
this.articulosList = [];
......
......@@ -69,7 +69,6 @@ export class ConformidadService {
desccausa : json.desccausa || '',
codtipotrabajo: json.codtipotrabajo || 0 ,
desctrabajo: json.desctrabajo || '',
materialsobrate: json.materialsobrate || '',
pasaje : json.pasaje || 0,
codrequerimiento : json.codrequerimiento || 0
};
......@@ -83,8 +82,53 @@ export class ConformidadService {
}
}
async creacionCarpeta(json: any) {
let respuesta: any;
const url = `${this.t_redireccionamiento}/google/drive/carpeta`;
const formData = new FormData();
formData.append('archivo_nombre', '');
formData.append('archivo_binario', '');
formData.append('archivo_id_actual', '');
formData.append('carpeta_id', this.value_idDrive);
formData.append('correo', this.value_correoDrive);
formData.append('app_nombre', 'EVIDENCIA_CONFORMIDAD');
formData.append('carpeta_nombre', 'CONFORMIDAD_' + json.codconformidad);
formData.append('subcarpeta_nombre', '');
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 30000); // 30 segundos
try {
const response = await fetch(url, {
method: 'POST',
body: formData,
signal: controller.signal, // 30 segundos de timeout
});
const statusCode = response.status;
const responseBody = await response.json();
clearTimeout(timeout); // Limpiar, REVISA SI ESTO ESTA BIEN O QUITARLO
if (statusCode === 200) {
console.log(responseBody);
respuesta = {status: false, message: "Carpeta creada"};
}else{
respuesta = {status: false, message: "Carpeta no creada"};
}
}catch (error) {
console.error('Error al registrar el archivo:', error);
//throw error;
respuesta = {status: false, message: error};
}
return respuesta;
}
async subidaEvidencia(json:any){
const url = `${this.t_redireccionamiento}/google/drive`;
let respuesta: any;
const formData = new FormData();
formData.append('archivo_nombre', json.nombreArchivo);
......@@ -92,13 +136,13 @@ export class ConformidadService {
formData.append('archivo_id_actual', '');
formData.append('carpeta_id', this.value_idDrive);
formData.append('correo', this.value_correoDrive);
formData.append('app_nombre', 'EVIDENCIAS_CONFORMIDAD');
formData.append('carpeta_nombre', 'EVIDENCIA1');
formData.append('app_nombre', 'EVIDENCIA_CONFORMIDAD');
formData.append('carpeta_nombre', 'CONFORMIDAD_' + json.codconformidad);
formData.append('subcarpeta_nombre', json.tipoEvidencia === 1 ? 'EVIDENCIAS_PROBLEMAS' : 'EVIDENCIAS_SOLUCIONES');
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 30000); // 30 segundos
try {
const response = await fetch(url, {
method: 'POST',
......@@ -109,64 +153,151 @@ export class ConformidadService {
const statusCode = response.status;
const responseBody = await response.json();
// Construir respuesta en formato JSON
/*const respuesta = {
statusCode: statusCode,
responseBody: responseBody,
};
*/
clearTimeout(timeout); // Limpiar, REVISA SI ESTO ESTA BIEN O QUITARLO
let respuesta :any ;
//console.log(statusCode,responseBody);
if(statusCode === 200){
//let respuesta: any;
//console.log(responseBody);
if (statusCode === 200) {
const registroEvidencia = await this.registroDocumento({
codconformidad: json.codconformidad || 0,
tipoEvidencia : json.tipoEvidencia || 0,
idDrive : responseBody.data.archivo_id || '',
enlaceDrive : responseBody.data.archivo_url_vista || '',
enlaceDescarga : responseBody.data.archivo_url || '',
nombreDocumento : json.nombreArchivo || ''
tipoEvidencia: json.tipoEvidencia || 0,
idDrive: responseBody.data.archivo_id || '',
enlaceDrive: responseBody.data.archivo_url_vista || '',
enlaceDescarga: responseBody.data.archivo_url || '',
nombreDocumento: json.nombreArchivo || ''
});
if(registroEvidencia?.status){
respuesta = {status: true, message: "Imagen subida"};
}else{
respuesta = { status :false , message : "Imagen no subida" };
if (registroEvidencia?.status) {
respuesta = {status: true, message: "Imagenes subidas"};
} else {
respuesta = {status: false, message: "Fallo en subir imagenes"};
}
} else {
respuesta = {status: false, message: "Imagenes subidas"};
}
//respuesta = { status :true , message : "Imagen subida" };
//return respuesta;
} catch (error) {
console.error('Error al registrar el archivo:', error);
//throw error;
respuesta = {status: false, message: error};
}
return respuesta;
}
/*const respuestaDocumento = await axios.post(this.t_facturacion_electronica_link + '/api/v1/conformidad/registroDocumentos', registroEvidencia);+
console.log(respuestaDocumento);
respuesta = respuestaDocumento;*/
}else{
respuesta = { status :false , message : "Imagen no subida" };
async subidaEvidencia2(json:any){
const url = `${this.t_redireccionamiento}/google/drive`;
let respuesta: any;
for(let i = 0 ; i < json.length ; i++){
const datos = json[i];
const formData = new FormData();
formData.append('archivo_nombre', datos.nombreArchivo);
formData.append('archivo_binario', datos.archivo);
formData.append('archivo_id_actual', '');
formData.append('carpeta_id', this.value_idDrive);
formData.append('correo', this.value_correoDrive);
formData.append('app_nombre', 'EVIDENCIA_CONFORMIDAD');
formData.append('carpeta_nombre', 'CONFORMIDAD_' + datos.codconformidad);
formData.append('subcarpeta_nombre', datos.tipoEvidencia === 1 ? 'EVIDENCIAS_PROBLEMAS' : 'EVIDENCIAS_SOLUCIONES');
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 30000); // 30 segundos
try {
const response = await fetch(url, {
method: 'POST',
body: formData,
signal: controller.signal, // 30 segundos de timeout
});
const statusCode = response.status;
const responseBody = await response.json();
clearTimeout(timeout); // Limpiar, REVISA SI ESTO ESTA BIEN O QUITARLO
if (statusCode === 200) {
const registroEvidencia = await this.registroDocumento({
codconformidad: datos.codconformidad || 0,
tipoEvidencia: datos.tipoEvidencia || 0,
idDrive: responseBody.data.archivo_id || '',
enlaceDrive: responseBody.data.archivo_url_vista || '',
enlaceDescarga: responseBody.data.archivo_url || '',
nombreDocumento: datos.nombreArchivo || ''
});
if (registroEvidencia?.status) {
respuesta = {status: true, message: "Imagenes subidas"};
} else {
respuesta = {status: false, message: "Fallo en subir imagenes"};
}
return respuesta;
} else {
respuesta = {status: false, message: "Imagenes subidas"};
}
//return respuesta;
} catch (error) {
console.error('Error al registrar el archivo:', error);
throw error;
//throw error;
respuesta = {status: false, message: error};
}
}
return respuesta;
}
async registroDocumento(json : any){
async registroDocumento(json: any) {
const parametros = {
codconformidad: json.codconformidad || 0,
tipoEvidencia: json.tipoEvidencia || 0,
idDrive: json.idDrive || '',
enlaceDrive: json.enlaceDrive || '',
enlaceDescarga: json.enlaceDescarga || '',
nombreDocumento: json.nombreDocumento || ''
};
try {
const respuesta = await axios.post(this.t_facturacion_electronica_link + '/api/v1/conformidad/registroDocumentos', json);
//console.log(respuesta);
const respuesta = await axios.post(this.t_facturacion_electronica_link + '/api/v1/conformidad/registroDocumentos', parametros);
return respuesta.data;
} catch (e) {
return e;
}
}
async gestionOrdenSalida(json : any){
const parametros = {
accion : json.accion || 0,
codOrdenSalida : json.codOrdenSalida || 0,
codper : json.codper || 0,
codlocal : json.codlocal || '',
descripcion: json.descripcion || '',
fechaRegistro : json.fechaRegistro || '',
codArticulo : json.codArticulo || '',
cantidad : json.cantidad || 0,
estado : json.estado || 0,
};
try {
const respuesta = await axios.post(this.t_facturacion_electronica_link + '/api/v1/conformidad/gestionOrdenSalida', parametros);
return respuesta.data;
} catch (e) {
return e;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment