|
|
|
@ -16,11 +16,16 @@ import ArchivoElectronicoDataServices from '../../../Services/Catalogos/ArchivoE |
|
|
|
|
import { AgGridReact } from 'ag-grid-react' |
|
|
|
|
import { MsgInformativo } from '../../Utils/Toast/msgInformativo' |
|
|
|
|
import { TargetURL } from '../../../Constants/TargetURL' |
|
|
|
|
import IFileManager from '../../../Interfaces/Utils/IFileManager' |
|
|
|
|
import FileManagerServices from '../../../Services/Utils/FileManager.Services' |
|
|
|
|
import { IconContext } from 'react-icons' |
|
|
|
|
import { FaDownload } from 'react-icons/fa' |
|
|
|
|
|
|
|
|
|
interface IProps { |
|
|
|
|
showDialog: boolean |
|
|
|
|
header: string |
|
|
|
|
closeDialog: (arg: boolean) => void |
|
|
|
|
archivos: IFileManager[] |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
interface ListaArchivos { |
|
|
|
@ -34,17 +39,31 @@ export const DialogAE: FC<IProps> = (props) => { |
|
|
|
|
const Referencia = useSelector((state: RootState) => state.ArchivoElectronico.Referencia) |
|
|
|
|
const Pedimento = useSelector((state: RootState) => state.ArchivoElectronico.Pedimento) |
|
|
|
|
const NoCliente = useSelector((state: RootState) => state.ArchivoElectronico.NoCliente) |
|
|
|
|
const [filteredData, setFilteredData] = useState<Array<ListaArchivos>>() |
|
|
|
|
const [filteredData, setFilteredData] = useState<IFileManager[]>([]) |
|
|
|
|
const [columnDefs] = useState([ |
|
|
|
|
{ |
|
|
|
|
field: 'archivo', |
|
|
|
|
field: 'nombreArchivo', |
|
|
|
|
cellRender: (params:any) => {return params.data.nombreArchivo}, |
|
|
|
|
width: 430, |
|
|
|
|
headerCheckboxSelection: true, |
|
|
|
|
headerCheckboxSelectionFilteredOnly: true, |
|
|
|
|
checkboxSelection: true, |
|
|
|
|
headerCheckboxSelection: false, |
|
|
|
|
headerCheckboxSelectionFilteredOnly: false, |
|
|
|
|
checkboxSelection: false, |
|
|
|
|
sortable: true, |
|
|
|
|
filter: true, |
|
|
|
|
}, |
|
|
|
|
},{ |
|
|
|
|
field: 'Descargar', |
|
|
|
|
width: 100, |
|
|
|
|
cellRenderer: (params:any) => { |
|
|
|
|
return ( |
|
|
|
|
<div style={{textAlign:'center'}}> |
|
|
|
|
<IconContext.Provider value={{ color: 'blue', size: '25px' }}> |
|
|
|
|
<FaDownload/> |
|
|
|
|
</IconContext.Provider> |
|
|
|
|
</div> |
|
|
|
|
) |
|
|
|
|
//return <Button variant='warning' onClick={() => {getFile(params.data)}}></Button>
|
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
]) |
|
|
|
|
const gridRef = React.useRef<any>(null) |
|
|
|
|
const [msgColor, setMsgColor] = React.useState('primary') |
|
|
|
@ -52,34 +71,32 @@ export const DialogAE: FC<IProps> = (props) => { |
|
|
|
|
const [header, setHeader] = useState('') |
|
|
|
|
const [msg, setMsg] = useState('') |
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
const data: IArchivoElectronico = { |
|
|
|
|
Referencia: Referencia, |
|
|
|
|
PedimentoLargo: Pedimento.trim(), |
|
|
|
|
NoCliente: NoCliente, |
|
|
|
|
IdUsuario: 0, |
|
|
|
|
Archivo: 'dummy', |
|
|
|
|
} |
|
|
|
|
ArchivoElectronicoDataServices.getFileList(data) |
|
|
|
|
.then((response) => { |
|
|
|
|
const lista: ListaArchivos[] = [] |
|
|
|
|
response.data.forEach((item) => { |
|
|
|
|
lista.push({ archivo: item }) |
|
|
|
|
}) |
|
|
|
|
setFilteredData(lista) |
|
|
|
|
}) |
|
|
|
|
.catch((e: Error) => { |
|
|
|
|
console.log(e) |
|
|
|
|
return |
|
|
|
|
}) |
|
|
|
|
}, [Referencia]) |
|
|
|
|
|
|
|
|
|
const viewFileContent = (fileName: string) => { |
|
|
|
|
window.open( |
|
|
|
|
`${curURL}/ArchivoElectronico/getFileContent?Referencia=${Referencia}&PedimentoLargo=dummy&NoCliente=${NoCliente}&IdUsuario=0&Archivo=${fileName}` |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
setFilteredData(props.archivos) |
|
|
|
|
}, [props.archivos]) |
|
|
|
|
|
|
|
|
|
const getFile = (file: IFileManager) => { |
|
|
|
|
FileManagerServices.getFileContent(parseInt(file.tags), file.proceso).then((resp: any) => { |
|
|
|
|
const url = window.URL.createObjectURL(new Blob([resp.data])) |
|
|
|
|
const link = document.createElement('a') |
|
|
|
|
link.href = url |
|
|
|
|
link.setAttribute('download', file.nombreArchivo) |
|
|
|
|
document.body.appendChild(link) |
|
|
|
|
link.click() |
|
|
|
|
}).catch(() => { |
|
|
|
|
setHeader('Error') |
|
|
|
|
setMsg('Ocurrio un error durante la descarga, favor de intentar nuevamente') |
|
|
|
|
setShowMsg(true) |
|
|
|
|
return |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const getFilesByReference = () => { |
|
|
|
|
let selectedNodes = gridRef.current.api.getSelectedNodes() |
|
|
|
|
let selectedData = selectedNodes.map((node: any) => node.data) |
|
|
|
@ -92,7 +109,7 @@ export const DialogAE: FC<IProps> = (props) => { |
|
|
|
|
Archivo: 'dummy', |
|
|
|
|
Archivos: Archivos, |
|
|
|
|
} |
|
|
|
|
AEOServices.getTheseFilesByReferences(data) |
|
|
|
|
/* AEOServices.getTheseFilesByReferences(data) |
|
|
|
|
.then((response: any) => { |
|
|
|
|
const url = window.URL.createObjectURL(new Blob([response.data])) |
|
|
|
|
const link = document.createElement('a') |
|
|
|
@ -106,7 +123,7 @@ export const DialogAE: FC<IProps> = (props) => { |
|
|
|
|
setMsg('Ocurrio un error: ' + e) |
|
|
|
|
setShowMsg(true) |
|
|
|
|
return |
|
|
|
|
}) |
|
|
|
|
}) */ |
|
|
|
|
props.closeDialog(false) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -126,22 +143,22 @@ export const DialogAE: FC<IProps> = (props) => { |
|
|
|
|
</Modal.Header> |
|
|
|
|
<Modal.Body> |
|
|
|
|
{filteredData ? ( |
|
|
|
|
<div style={{ height: '350px', width: '450px' }} className='ag-theme-alpine'> |
|
|
|
|
<div style={{ height: '350px', width: '100%' }} className='ag-theme-alpine'> |
|
|
|
|
<AgGridReact |
|
|
|
|
rowData={filteredData} |
|
|
|
|
columnDefs={columnDefs} |
|
|
|
|
pagination={true} |
|
|
|
|
paginationPageSize={50} |
|
|
|
|
ref={gridRef} |
|
|
|
|
rowSelection={'multiple'} |
|
|
|
|
rowMultiSelectWithClick={true} |
|
|
|
|
/* rowSelection={'multiple'} |
|
|
|
|
rowMultiSelectWithClick={true} */ |
|
|
|
|
></AgGridReact> |
|
|
|
|
</div> |
|
|
|
|
) : ( |
|
|
|
|
'Sin archivos que mostrar' |
|
|
|
|
)} |
|
|
|
|
</Modal.Body> |
|
|
|
|
<Modal.Footer> |
|
|
|
|
{/* <Modal.Footer> |
|
|
|
|
<Container> |
|
|
|
|
<Row> |
|
|
|
|
<Col md={2}></Col> |
|
|
|
@ -170,7 +187,7 @@ export const DialogAE: FC<IProps> = (props) => { |
|
|
|
|
</Col> |
|
|
|
|
</Row> |
|
|
|
|
</Container> |
|
|
|
|
</Modal.Footer> |
|
|
|
|
</Modal.Footer> */} |
|
|
|
|
</Modal> |
|
|
|
|
<MsgInformativo show={show} msg={msg} header={header} msgColor={msgColor} closeToast={() => setShowMsg(false)} /> |
|
|
|
|
</div> |
|
|
|
|