Se modifica el Monitor de operaciones y se complemente el search para que incluye los servicios no solo los AOLs

develop
unknown 2 years ago
parent 9bd5fc4ec1
commit 8980ec340d
  1. 30
      src/App.tsx
  2. 22
      src/Components/Catalogos/CatUsuarios.tsx
  3. 23
      src/Components/Login/Login.tsx
  4. 239
      src/Components/Operaciones/OpMonitor.tsx
  5. 1
      src/Components/Utils/MFileManager/MFileManager.tsx
  6. 45
      src/Services/Auth/config/http-common.ts
  7. 52
      src/Services/Operaciones/OpViajes.Services.ts
  8. BIN
      src/images/ajaxloader.gif

@ -1,5 +1,5 @@
import 'bootstrap/dist/css/bootstrap.min.css' import 'bootstrap/dist/css/bootstrap.min.css'
import { BrowserRouter, Route, Routes } from 'react-router-dom' import { BrowserRouter, HashRouter, Route, Routes } from 'react-router-dom'
import './App.css' import './App.css'
import { Login } from './Components/Login/Login' import { Login } from './Components/Login/Login'
import { Home } from './Components/Home/Home' import { Home } from './Components/Home/Home'
@ -20,7 +20,9 @@ import { CatUsuarios } from './Components/Catalogos/CatUsuarios'
import { ResetAccount } from './Components/ResetAccount/ResetAccount' import { ResetAccount } from './Components/ResetAccount/ResetAccount'
function App() { function App() {
const UserLogued = useSelector((state: RootState) => state.UserProfile.UserProfile.logueado) const UserLogued = useSelector(
(state: RootState) => state.UserProfile.UserProfile.logueado
)
/* useEffect(() => { /* useEffect(() => {
console.log('Entro al proceso de router ' + UserLogued) console.log('Entro al proceso de router ' + UserLogued)
@ -36,27 +38,27 @@ function App() {
return ( return (
<div className='App'> <div className='App'>
<BrowserRouter> <HashRouter>
<Navbar /> <Navbar />
<Routes> <Routes>
{/* <Route path='/' element={<Home />}></Route> {/* <Route path='/' element={<Home />}></Route>
<Route path='login' element={<Login />}></Route> */} <Route path='login' element={<Login />}></Route> */}
<Route path='/' element={<Login />}></Route> <Route path='/' element={<Login />}></Route>
<Route path='logout' element={<Logout />}></Route> <Route path='/logout' element={<Logout />}></Route>
<Route path='reset' element={<ResetAccount />}></Route> <Route path='/reset' element={<ResetAccount />}></Route>
<Route element={<ProtectedRoute />}> <Route element={<ProtectedRoute />}>
<Route path='OpMonitor' element={<OpMonitor />} /> <Route path='/OpMonitor' element={<OpMonitor />} />
<Route path='CatClientes' element={<CatClientes />} /> <Route path='/CatClientes' element={<CatClientes />} />
<Route path='CatServicios' element={<CatServicios />} /> <Route path='/CatServicios' element={<CatServicios />} />
<Route path='CatProveedores' element={<CatProveedores />} /> <Route path='/CatProveedores' element={<CatProveedores />} />
<Route path='CatTipoUnidades' element={<CatTipoUnidades />} /> <Route path='/CatTipoUnidades' element={<CatTipoUnidades />} />
<Route path='CatUbicaciones' element={<CatUbicaciones />} /> <Route path='/CatUbicaciones' element={<CatUbicaciones />} />
<Route path='CatRutas' element={<CatRutas />} /> <Route path='/CatRutas' element={<CatRutas />} />
<Route path='CatUsuarios' element={<CatUsuarios />} /> <Route path='/CatUsuarios' element={<CatUsuarios />} />
</Route> </Route>
<Route path='*' element={<PageNotFound />} /> <Route path='*' element={<PageNotFound />} />
</Routes> </Routes>
</BrowserRouter> </HashRouter>
</div> </div>
) )
} }

@ -1,5 +1,5 @@
import React, { FC, useEffect, useState } from 'react' import React, { FC, useEffect, useState } from 'react'
import { Button, Card, Col, FloatingLabel, Form, Row } from 'react-bootstrap' import { Button, Card, Col, FloatingLabel, Form, Modal, Row } from 'react-bootstrap'
import { useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import { RootState } from '../../store/store' import { RootState } from '../../store/store'
import DSCatUsuarios from '../../Services/Catalogos/CatUsuarios.Services' import DSCatUsuarios from '../../Services/Catalogos/CatUsuarios.Services'
@ -8,6 +8,7 @@ import DataTable from 'react-data-table-component'
import { IconContext } from 'react-icons' import { IconContext } from 'react-icons'
import { BsFillPencilFill } from 'react-icons/bs' import { BsFillPencilFill } from 'react-icons/bs'
import Clean from '../../images/Clean.png' import Clean from '../../images/Clean.png'
import loadingImg from '../../images/ajaxloader.gif'
interface IProps {} interface IProps {}
@ -21,6 +22,7 @@ export const CatUsuarios: FC<IProps> = (props) => {
const [TipoUsuario, setTipoUsuario] = useState(0) const [TipoUsuario, setTipoUsuario] = useState(0)
const [Search, setSearch] = useState('') const [Search, setSearch] = useState('')
const [SearchUser, setSearchUser] = useState('') const [SearchUser, setSearchUser] = useState('')
const [showDialog, setShowDialog] = useState(false)
const columnsConcepts = [ const columnsConcepts = [
{ {
name: 'id', name: 'id',
@ -73,6 +75,7 @@ export const CatUsuarios: FC<IProps> = (props) => {
} }
const saveForm = () => { const saveForm = () => {
setShowDialog(true)
const data: ICatUsuarios = { const data: ICatUsuarios = {
id: IDUsuario, id: IDUsuario,
usuario: Usuario, usuario: Usuario,
@ -86,6 +89,7 @@ export const CatUsuarios: FC<IProps> = (props) => {
.then((response) => { .then((response) => {
cleanForm() cleanForm()
loadUsers() loadUsers()
setShowDialog(false)
}) })
.catch((e: Error) => { .catch((e: Error) => {
alert('Ocurrio un error' + e.message.toString()) alert('Ocurrio un error' + e.message.toString())
@ -283,6 +287,22 @@ export const CatUsuarios: FC<IProps> = (props) => {
</Row> </Row>
</Card.Body> </Card.Body>
</Card> </Card>
<Modal
show={showDialog}
onHide={() => {
setShowDialog(false)
}}
>
<Modal.Header>
<Modal.Title></Modal.Title>
</Modal.Header>
<Modal.Body>
<img src={loadingImg} style={{ width: '25%', height: '25%' }} alt='proccessing' />
Generando acceso y enviando correo...
</Modal.Body>
<Modal.Footer></Modal.Footer>
</Modal>
</div> </div>
) )
} }

@ -24,14 +24,20 @@ interface IProps {}
export const Login: FC<IProps> = (props) => { export const Login: FC<IProps> = (props) => {
const navigate = useNavigate() const navigate = useNavigate()
const dispatch = useDispatch() const dispatch = useDispatch()
const UserLogued = useSelector((state: RootState) => state.UserProfile.UserProfile.logueado) const UserLogued = useSelector(
(state: RootState) => state.UserProfile.UserProfile.logueado
)
const [Usuario, setUsuario] = useState('') const [Usuario, setUsuario] = useState('')
const [Contrasena, setContrasena] = useState('') const [Contrasena, setContrasena] = useState('')
const [token, setToken] = useState<string>( const [token, setToken] = useState<string>(
(window.localStorage.getItem('token') ? window.localStorage.getItem('token') : '')! (window.localStorage.getItem('token')
? window.localStorage.getItem('token')
: '')!
) )
const [menuStr, setMenuStr] = useState<string>( const [menuStr, setMenuStr] = useState<string>(
(window.localStorage.getItem('menu') ? window.localStorage.getItem('menu') : '')! (window.localStorage.getItem('menu')
? window.localStorage.getItem('menu')
: '')!
) )
const Login = async () => { const Login = async () => {
@ -44,10 +50,13 @@ export const Login: FC<IProps> = (props) => {
localStorage.setItem('token', response.data.token) localStorage.setItem('token', response.data.token)
localStorage.setItem('menu', JSON.stringify(response.data.menu)) localStorage.setItem('menu', JSON.stringify(response.data.menu))
setToken(response.data.token) setToken(response.data.token)
localStorage.setItem('tokenInfo', JSON.stringify(jwt_decode(response.data.token))) localStorage.setItem(
'tokenInfo',
JSON.stringify(jwt_decode(response.data.token))
)
dispatch(populateMenuItems(response.data.menu)) dispatch(populateMenuItems(response.data.menu))
dispatch(populateUserProfile(response.data.token)) dispatch(populateUserProfile(response.data.token))
navigate('/', { replace: true }) navigate('/#/', { replace: true })
}) })
.catch((e: Error) => { .catch((e: Error) => {
alert('Credeciales invalidas! ' + e.message.toString()) alert('Credeciales invalidas! ' + e.message.toString())
@ -115,7 +124,9 @@ export const Login: FC<IProps> = (props) => {
<img src={Leyend} alt='' height='50' /> <img src={Leyend} alt='' height='50' />
</h3> </h3>
<div className='form-group mt-3'> <div className='form-group mt-3'>
<label style={{ color: '#00719F', paddingLeft: '5px' }}>Usuario</label> <label style={{ color: '#00719F', paddingLeft: '5px' }}>
Usuario
</label>
<input <input
type='email' type='email'
className='form-control mt-1' className='form-control mt-1'

@ -1,5 +1,16 @@
import React, { FC, useEffect, useState } from 'react' import React, { FC, useEffect, useState } from 'react'
import { Alert, Button, Card, Col, Form, Modal, OverlayTrigger, Row, Table, Tooltip } from 'react-bootstrap' import {
Alert,
Button,
Card,
Col,
Form,
Modal,
OverlayTrigger,
Row,
Table,
Tooltip,
} from 'react-bootstrap'
import { IconContext } from 'react-icons' import { IconContext } from 'react-icons'
import { import {
BsChevronDown, BsChevronDown,
@ -44,16 +55,18 @@ interface IProps {}
export const OpMonitor: FC<IProps> = (props) => { export const OpMonitor: FC<IProps> = (props) => {
const dispatch = useDispatch() const dispatch = useDispatch()
const navigate = useNavigate() // const navigate = useNavigate()
const Info = JSON.parse(localStorage.getItem('tokenInfo') || '[]') const Info = JSON.parse(localStorage.getItem('tokenInfo') || '[]')
const UserID = Info.UserId /// const UserID = Info.UserId
const CatClientes = useSelector((state: RootState) => state.CatClientes.CatClientes) /* const CatClientes = useSelector((state: RootState) => state.CatClientes.CatClientes)
const CatProveedores = useSelector((state: RootState) => state.CatProveedores.CatProveedores) const CatProveedores = useSelector((state: RootState) => state.CatProveedores.CatProveedores)
const CatTipoUnidades = useSelector((state: RootState) => state.CatTipoUnidades.CatTipoUnidades) const CatTipoUnidades = useSelector((state: RootState) => state.CatTipoUnidades.CatTipoUnidades)
const CatUbicaciones = useSelector((state: RootState) => state.CatUbicaciones.CatUbicaciones) const CatUbicaciones = useSelector((state: RootState) => state.CatUbicaciones.CatUbicaciones)
const CatServicios = useSelector((state: RootState) => state.CatServicios.CatServicios) const CatServicios = useSelector((state: RootState) => state.CatServicios.CatServicios)*/
const AllTrips = useSelector((state: RootState) => state.OpViajes.OpViajes) const AllTrips = useSelector((state: RootState) => state.OpViajes.OpViajes)
const AllTripsServices = useSelector((state: RootState) => state.OpViajesServicios.OpViajesServicios) const AllTripsServices = useSelector(
(state: RootState) => state.OpViajesServicios.OpViajesServicios
)
const [OpViajes, setOpViajes] = useState<DTOOpViajes[]>([]) const [OpViajes, setOpViajes] = useState<DTOOpViajes[]>([])
const [showTripDialog, setShowTripDialog] = useState(false) const [showTripDialog, setShowTripDialog] = useState(false)
const [ShowDeleteDialog, setShowDeleteDialog] = useState(false) const [ShowDeleteDialog, setShowDeleteDialog] = useState(false)
@ -144,6 +157,10 @@ export const OpMonitor: FC<IProps> = (props) => {
loadEveryting() loadEveryting()
}, []) }, [])
useEffect(() => {
console.log(JSON.stringify(AllTripsServices))
}, [AllTripsServices])
const loadStatus = () => { const loadStatus = () => {
DSOpStatusSecuence.GetStatusSecuence() DSOpStatusSecuence.GetStatusSecuence()
.then((response) => { .then((response) => {
@ -152,6 +169,23 @@ export const OpMonitor: FC<IProps> = (props) => {
.catch((e: Error) => {}) .catch((e: Error) => {})
} }
const filterServices = (str: string, id: number) => {
if (!str) return false
const filtered = AllTripsServices.filter((obj) => obj.idViaje === id)
if (filtered) {
const filteredRows = filtered.filter(
(obj) =>
obj.sProveedor.toLowerCase().indexOf(str.toLowerCase()) > -1 ||
obj.sServicio.toLowerCase().indexOf(str.toLowerCase()) > -1 ||
obj.comentarios.toLowerCase().indexOf(str.toLowerCase()) > -1 ||
obj.noCaja.toLowerCase().indexOf(str.toLowerCase()) > -1
)
//console.log(JSON.stringify(filteredRows))
if (filteredRows.length) return true
else return false
} else return false
}
const loadTrips = () => { const loadTrips = () => {
DSOpViajes.Get() DSOpViajes.Get()
.then((response) => { .then((response) => {
@ -163,7 +197,7 @@ export const OpMonitor: FC<IProps> = (props) => {
}) })
setOpViajes(data) setOpViajes(data)
dispatch(populateOpViajes(data)) dispatch(populateOpViajes(data))
DSOpViajes.GetAllServices() DSOpViajes.GetAllServices(99)
.then((responsed) => { .then((responsed) => {
dispatch(populateOpViajesServicios(responsed.data)) dispatch(populateOpViajesServicios(responsed.data))
}) })
@ -214,10 +248,16 @@ export const OpMonitor: FC<IProps> = (props) => {
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
> >
<OverlayTrigger <OverlayTrigger
overlay={<Tooltip id='tooltip-disabled'>De un click aqui para iniciar un viaje</Tooltip>} overlay={
<Tooltip id='tooltip-disabled'>
De un click aqui para iniciar un viaje
</Tooltip>
}
> >
<span className='d-inline-block'> <span className='d-inline-block'>
<IconContext.Provider value={{ color: 'blue', size: '35px' }}> <IconContext.Provider
value={{ color: 'blue', size: '35px' }}
>
<FcInTransit /> <FcInTransit />
</IconContext.Provider> </IconContext.Provider>
</span> </span>
@ -239,9 +279,7 @@ export const OpMonitor: FC<IProps> = (props) => {
> >
<option value='0'>- Todos los usuarios -</option> <option value='0'>- Todos los usuarios -</option>
{DataUsuarios {DataUsuarios
? DataUsuarios.filter((row) => row.id > 1) ? DataUsuarios.filter((row) => row.id > 1).map((row) => {
/* .sort((a, b) => a.nombre - b.nombre) */
.map((row) => {
return ( return (
<option key={row.id} value={row.id}> <option key={row.id} value={row.id}>
{row.nombre} {row.nombre}
@ -292,86 +330,152 @@ export const OpMonitor: FC<IProps> = (props) => {
{AllTrips {AllTrips
? AllTrips.filter( ? AllTrips.filter(
(MasterData) => (MasterData) =>
(IDUsuario !== 0 ? MasterData.usuario === IDUsuario : 1 === 1) && ((IDUsuario !== 0
(MasterData.id.toString().toLowerCase().includes(Search.toLowerCase()) || ? MasterData.usuario === IDUsuario
MasterData.sCliente.toLowerCase().includes(Search.toLowerCase()) || : 1 === 1) &&
MasterData.sTipoOperacion.toLowerCase().includes(Search.toLowerCase()) || (MasterData.id
MasterData.sOrigen.toLowerCase().includes(Search.toLowerCase()) || .toString()
MasterData.sDestino.toLowerCase().includes(Search.toLowerCase()) || .toLowerCase()
MasterData.sTipoUnidad.toLowerCase().includes(Search.toLowerCase()) || .includes(Search.toLowerCase()) ||
MasterData.noCaja.toLowerCase().includes(Search.toLowerCase()) || MasterData.sCliente
MasterData.refAgenciaAduanal.toLowerCase().includes(Search.toLowerCase()) || .toLowerCase()
MasterData.pickUpNumber.toLowerCase().includes(Search.toLowerCase())) .includes(Search.toLowerCase()) ||
MasterData.sTipoOperacion
.toLowerCase()
.includes(Search.toLowerCase()) ||
MasterData.sOrigen
.toLowerCase()
.includes(Search.toLowerCase()) ||
MasterData.sDestino
.toLowerCase()
.includes(Search.toLowerCase()) ||
MasterData.sTipoUnidad
.toLowerCase()
.includes(Search.toLowerCase()) ||
MasterData.noCaja
.toLowerCase()
.includes(Search.toLowerCase()) ||
MasterData.refAgenciaAduanal
.toLowerCase()
.includes(Search.toLowerCase()) ||
MasterData.pickUpNumber
.toLowerCase()
.includes(Search.toLowerCase()))) ||
filterServices(Search.toLowerCase(), MasterData.id)
).map((MasterData) => { ).map((MasterData) => {
return ( return (
<> <>
<tr <tr
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
> >
<td <td
style={{ textAlign: 'left' }} style={{ textAlign: 'left' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
> >
{MasterData.id} {MasterData.id}
</td> </td>
<td <td
style={{ textAlign: 'left' }} style={{ textAlign: 'left' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
key={MasterData.id} key={MasterData.id}
onClick={() => { onClick={() => {
changeToggle(MasterData) changeToggle(MasterData)
}} }}
> >
{MasterData.max === true ? ( {MasterData.max === true ? (
<IconContext.Provider value={{ color: 'blue', size: '15px' }}> <IconContext.Provider
value={{ color: 'blue', size: '15px' }}
>
<BsChevronDown /> <BsChevronDown />
</IconContext.Provider> </IconContext.Provider>
) : ( ) : (
<IconContext.Provider value={{ color: 'blue', size: '15px' }}> <IconContext.Provider
value={{ color: 'blue', size: '15px' }}
>
<BsChevronRight /> <BsChevronRight />
</IconContext.Provider> </IconContext.Provider>
)} )}
</td> </td>
<td <td
style={{ textAlign: 'left' }} style={{ textAlign: 'left' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
> >
{MasterData.sCliente} {MasterData.sCliente}
</td> </td>
<td <td
style={{ textAlign: 'left' }} style={{ textAlign: 'left' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
> >
{MasterData.sTipoOperacion} {MasterData.sTipoOperacion}
</td> </td>
<td <td
style={{ textAlign: 'left' }} style={{ textAlign: 'left' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
> >
{MasterData.sOrigen} {MasterData.sOrigen}
</td> </td>
<td <td
style={{ textAlign: 'left' }} style={{ textAlign: 'left' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
> >
{MasterData.sDestino} {MasterData.sDestino}
</td> </td>
<td <td
style={{ textAlign: 'left' }} style={{ textAlign: 'left' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
> >
{MasterData.sTipoUnidad} {MasterData.sTipoUnidad}
</td> </td>
<td <td
style={{ textAlign: 'left' }} style={{ textAlign: 'left' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
> >
{MasterData.noCaja} {MasterData.noCaja}
</td> </td>
<td <td
style={{ textAlign: 'left' }} style={{ textAlign: 'left' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
> >
<ViajeEstatus <ViajeEstatus
IDViaje={MasterData.id} IDViaje={MasterData.id}
@ -382,13 +486,21 @@ export const OpMonitor: FC<IProps> = (props) => {
</td> </td>
<td <td
style={{ textAlign: 'center' }} style={{ textAlign: 'center' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
> >
{MasterData.hazmat === 1 ? 'Si' : 'No'} {MasterData.hazmat === 1 ? 'Si' : 'No'}
</td> </td>
<td <td
style={{ textAlign: 'left' }} style={{ textAlign: 'left' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
> >
{MasterData.refAgenciaAduanal} {MasterData.refAgenciaAduanal}
</td> </td>
@ -399,17 +511,29 @@ export const OpMonitor: FC<IProps> = (props) => {
setShowDocumentsDialog(true) setShowDocumentsDialog(true)
}} }}
> >
<IconContext.Provider value={{ color: 'green', size: '20px' }}> <IconContext.Provider
value={{ color: 'green', size: '20px' }}
>
<BsPaperclip /> <BsPaperclip />
</IconContext.Provider> </IconContext.Provider>
</td> </td>
<td <td
style={{ textAlign: 'left' }} style={{ textAlign: 'left' }}
className={MasterData.max === true ? 'masterSelected' : 'normalSelected'} className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
> >
{MasterData.pickUpNumber} {MasterData.pickUpNumber}
</td> </td>
<td className={MasterData.max === true ? 'masterSelected' : 'normalSelected'}> <td
className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
>
<Button <Button
size='sm' size='sm'
variant='white' variant='white'
@ -418,12 +542,20 @@ export const OpMonitor: FC<IProps> = (props) => {
deleteMaster(MasterData) deleteMaster(MasterData)
}} }}
> >
<IconContext.Provider value={{ color: 'red', size: '15px' }}> <IconContext.Provider
value={{ color: 'red', size: '15px' }}
>
<BsXLg /> <BsXLg />
</IconContext.Provider> </IconContext.Provider>
</Button> </Button>
</td> </td>
<td className={MasterData.max === true ? 'masterSelected' : 'normalSelected'}> <td
className={
MasterData.max === true
? 'masterSelected'
: 'normalSelected'
}
>
<Button <Button
size='sm' size='sm'
variant='white' variant='white'
@ -432,16 +564,30 @@ export const OpMonitor: FC<IProps> = (props) => {
EditMaster(MasterData) EditMaster(MasterData)
}} }}
> >
<IconContext.Provider value={{ color: 'blue', size: '15px' }}> <IconContext.Provider
value={{ color: 'blue', size: '15px' }}
>
<BsFillPencilFill /> <BsFillPencilFill />
</IconContext.Provider> </IconContext.Provider>
</Button> </Button>
</td> </td>
</tr> </tr>
{MasterData.max === true ? ( {MasterData.max === true ? (
<tr className={MasterData.max === true ? 'masterSelected2' : 'normalSelected2'}> <tr
<th colSpan={2} style={{ backgroundColor: '#F8F9FE' }}></th> className={
<th colSpan={14} style={{ backgroundColor: '#F8F9FE' }}> MasterData.max === true
? 'masterSelected2'
: 'normalSelected2'
}
>
<th
colSpan={2}
style={{ backgroundColor: '#F8F9FE' }}
></th>
<th
colSpan={14}
style={{ backgroundColor: '#F8F9FE' }}
>
<Servicios <Servicios
IDMaster={MasterData.id} IDMaster={MasterData.id}
key={MasterData.id} key={MasterData.id}
@ -495,7 +641,8 @@ export const OpMonitor: FC<IProps> = (props) => {
<Row> <Row>
<Col xs={12}> <Col xs={12}>
<Alert key='danger' variant='danger'> <Alert key='danger' variant='danger'>
Esta seguro de eliminar este viaje <span style={{ fontWeight: 'bold' }}>AOL: {IDViaje}</span>? Esta seguro de eliminar este viaje{' '}
<span style={{ fontWeight: 'bold' }}>AOL: {IDViaje}</span>?
<br /> <br />
<span style={{ fontWeight: 'bold' }}>{SCliente}</span> <span style={{ fontWeight: 'bold' }}>{SCliente}</span>
</Alert> </Alert>

@ -96,7 +96,6 @@ export const MFileManager: FC<IProps> = (props) => {
.then((response: any) => { .then((response: any) => {
if (response.status === 200) { if (response.status === 200) {
if (row.nombreArchivo.toLowerCase().endsWith('.pdf')) { if (row.nombreArchivo.toLowerCase().endsWith('.pdf')) {
// console.log(response.data)
const blob = new Blob([response.data], { type: 'application/pdf' }) const blob = new Blob([response.data], { type: 'application/pdf' })
const url = window.URL.createObjectURL(blob) const url = window.URL.createObjectURL(blob)
window.open(url) window.open(url)

@ -1,45 +1,44 @@
import axios from "axios"; import axios from 'axios'
import { TargetURL } from '../../../Constants/TargetURL' import { TargetURL } from '../../../Constants/TargetURL'
let token = window.localStorage.getItem('token'); let token = window.localStorage.getItem('token')
const URL = new TargetURL() const URL = new TargetURL()
const instance = axios.create({ const instance = axios.create({
baseURL: URL.get(), baseURL: URL.get(),
headers: { headers: {
"Content-type": "application/json", 'Content-type': 'application/json',
"Authorization": (token) ? `Bearer ${token}` : '' Authorization: token ? `Bearer ${token}` : '',
}, },
}); })
instance.interceptors.response.use(
instance.interceptors.response.use(function (response) { function (response) {
return response; return response
}, function (error) { },
function (error) {
if (401 === error.response.status) { if (401 === error.response.status) {
localStorage.clear(); localStorage.clear()
window.location.href = "/"; window.location.href = '/#/login'
} else { } else {
return Promise.reject(error); return Promise.reject(error)
} }
return Promise.reject(error); return Promise.reject(error)
}); }
)
instance.interceptors.request.use( instance.interceptors.request.use(
(config) => { (config) => {
let token = window.localStorage.getItem('token') let token = window.localStorage.getItem('token')
if (token) { if (token) {
config.headers!!.Authorization = `Bearer ${token}`; config.headers!!.Authorization = `Bearer ${token}`
} else { } else {
config.headers!!.Authorization = ``; config.headers!!.Authorization = ``
} }
return config; return config
}, },
(error) => { (error) => {
return Promise.reject(error); return Promise.reject(error)
} }
); )
export default instance;
export default instance

@ -1,39 +1,53 @@
import http from "../../Services/Auth/config/http-common"; import http from '../../Services/Auth/config/http-common'
import DTOViajes from "../../DTOs/Operaciones/DTOViajes"; import DTOViajes from '../../DTOs/Operaciones/DTOViajes'
import IRespuesta from "../../Interfaces/Respuestas/IRespuesta"; import IRespuesta from '../../Interfaces/Respuestas/IRespuesta'
import DTOViajesServicios from "../../DTOs/Operaciones/DTOViajesServicios"; import DTOViajesServicios from '../../DTOs/Operaciones/DTOViajesServicios'
import DTOUltimaCaja from "../../DTOs/Operaciones/DTOUltimaCaja"; import DTOUltimaCaja from '../../DTOs/Operaciones/DTOUltimaCaja'
import DTOViajeEstatusSecuencia from "../../DTOs/Operaciones/DTOViajeEstatusSecuencia"; import DTOViajeEstatusSecuencia from '../../DTOs/Operaciones/DTOViajeEstatusSecuencia'
import DTOChangeTripStatus from "../../DTOs/Operaciones/DTOChangeTripStatus"; import DTOChangeTripStatus from '../../DTOs/Operaciones/DTOChangeTripStatus'
import DTOResultTripStatus from "../../DTOs/Operaciones/DTOResultTripStatus"; import DTOResultTripStatus from '../../DTOs/Operaciones/DTOResultTripStatus'
class OpViajesDataService { class OpViajesDataService {
async Get() { async Get() {
return await http.get<DTOViajes[]>("Operaciones/OpViajes/Get"); return await http.get<DTOViajes[]>('Operaciones/OpViajes/Get')
} }
async GetAllServices() { async GetAllServices(Status: number) {
return await http.get<DTOViajesServicios[]>("Operaciones/OpViajes/GetAllServices"); return await http.get<DTOViajesServicios[]>(
`Operaciones/OpViajes/GetAllServices?Status=${Status}`
)
} }
async GetLastTrailerBox(idViaje: number) { async GetLastTrailerBox(idViaje: number) {
return await http.get<DTOUltimaCaja>(`Operaciones/OpViajes/GetLastTrailerBox?idViaje=${idViaje}`); return await http.get<DTOUltimaCaja>(
`Operaciones/OpViajes/GetLastTrailerBox?idViaje=${idViaje}`
)
} }
async GetStatusSecuence() { async GetStatusSecuence() {
return await http.get<DTOViajeEstatusSecuencia[]>(`Operaciones/OpViajes/GetStatusSecuence`); return await http.get<DTOViajeEstatusSecuencia[]>(
`Operaciones/OpViajes/GetStatusSecuence`
)
} }
async ChangeTripStatus(data: DTOChangeTripStatus) { async ChangeTripStatus(data: DTOChangeTripStatus) {
return await http.put<DTOResultTripStatus>(`Operaciones/OpViajes/ChangeTripStatus/${data.idViaje}`, data); return await http.put<DTOResultTripStatus>(
`Operaciones/OpViajes/ChangeTripStatus/${data.idViaje}`,
data
)
} }
async Append(data: DTOViajes) { async Append(data: DTOViajes) {
return await http.post<DTOViajes>(`Operaciones/OpViajes/Append`,data); return await http.post<DTOViajes>(`Operaciones/OpViajes/Append`, data)
} }
async AppendServices(data: DTOViajesServicios) { async AppendServices(data: DTOViajesServicios) {
return await http.post<DTOViajesServicios[]>(`Operaciones/OpViajes/AppendService`,data); return await http.post<DTOViajesServicios[]>(
`Operaciones/OpViajes/AppendService`,
data
)
} }
async Delete(id: number) { async Delete(id: number) {
return await http.delete<IRespuesta>(`Operaciones/OpViajes/Delete/${id}`); return await http.delete<IRespuesta>(`Operaciones/OpViajes/Delete/${id}`)
} }
async DeleteService(id: number) { async DeleteService(id: number) {
return await http.delete<IRespuesta>(`Operaciones/OpViajes/DeleteService/${id}`); return await http.delete<IRespuesta>(
`Operaciones/OpViajes/DeleteService/${id}`
)
} }
} }
export default new OpViajesDataService(); export default new OpViajesDataService()

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Loading…
Cancel
Save