411 lines
12 KiB
JavaScript
411 lines
12 KiB
JavaScript
import api from '@/services/api';
|
|
import { handleRequest } from '@/services/serviceUtils';
|
|
|
|
// Endpoints definidos pelo usuário
|
|
const ENDPOINTS = {
|
|
VEHICLES: '/cadastro_frota',
|
|
MAINTENANCE: '/manutencao_frota',
|
|
AVAILABILITY: '/disponibilidade_frota',
|
|
MOKI: '/moki_frota',
|
|
STATUS: '/status_frota',
|
|
MONITORING: '/monitoramento_frota',
|
|
CLAIMS: '/sinistro_devolucao_venda_frota',
|
|
WORKSHOPS: '/oficinas_frota',
|
|
AUTH: '/auth_monitoramento'
|
|
};
|
|
|
|
export const prafrotService = {
|
|
// --- Autenticação ---
|
|
login: (credentials) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.post(ENDPOINTS.AUTH, credentials);
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
// --- Cadastro de Frota (Veículos) ---
|
|
getVehicles: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get(`${ENDPOINTS.VEHICLES}/apresentar`);
|
|
return data;
|
|
}
|
|
}),
|
|
createVehicle: (payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.post(ENDPOINTS.VEHICLES, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
updateVehicle: (id, payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.VEHICLES}/${id}`, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
deleteVehicle: (id) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.VEHICLES}/delete/${id}`);
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
// --- Manutenção ---
|
|
getMaintenance: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get(`${ENDPOINTS.MAINTENANCE}/apresentar`);
|
|
return data;
|
|
}
|
|
}),
|
|
calcularDifOrcamento: (orcamento_inicial, orcamento_final) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.post(`${ENDPOINTS.MAINTENANCE}/calcular_dif_orcamento`, {
|
|
orcamento_inicial,
|
|
orcamento_final
|
|
});
|
|
return data;
|
|
}
|
|
}),
|
|
createMaintenance: (payload, files = null) => handleRequest({
|
|
apiFn: async () => {
|
|
// Envia previsao_entrega diretamente
|
|
const body = { ...payload };
|
|
if (files && (files.pdf_orcamento || files.nota_fiscal)) {
|
|
const form = new FormData();
|
|
form.append('data_json', JSON.stringify(body));
|
|
if (files.pdf_orcamento instanceof File) form.append('pdf_orcamento', files.pdf_orcamento);
|
|
if (files.nota_fiscal instanceof File) form.append('nota_fiscal', files.nota_fiscal);
|
|
const { data } = await api.post(ENDPOINTS.MAINTENANCE, form, {
|
|
headers: { 'Content-Type': 'multipart/form-data' }
|
|
});
|
|
return data;
|
|
}
|
|
const { data } = await api.post(ENDPOINTS.MAINTENANCE, body);
|
|
return data;
|
|
}
|
|
}),
|
|
updateMaintenance: (id, payload, files = null) => handleRequest({
|
|
apiFn: async () => {
|
|
// Envia previsao_entrega diretamente (o backend deve estar atualizado ou o frontend deve padronizar)
|
|
const body = { ...payload };
|
|
if (files && (files.pdf_orcamento || files.nota_fiscal)) {
|
|
const form = new FormData();
|
|
form.append('data_json', JSON.stringify(body));
|
|
if (files.pdf_orcamento instanceof File) form.append('pdf_orcamento', files.pdf_orcamento);
|
|
if (files.nota_fiscal instanceof File) form.append('nota_fiscal', files.nota_fiscal);
|
|
const { data } = await api.put(`${ENDPOINTS.MAINTENANCE}/${id}`, form, {
|
|
headers: { 'Content-Type': 'multipart/form-data' }
|
|
});
|
|
return data;
|
|
}
|
|
const { data } = await api.put(`${ENDPOINTS.MAINTENANCE}/${id}`, body);
|
|
return data;
|
|
}
|
|
}),
|
|
updateMaintenanceBatch: (ids, status) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.MAINTENANCE}/edit/em_lote`, { ids, status });
|
|
return data;
|
|
}
|
|
}),
|
|
deleteMaintenance: (id) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.MAINTENANCE}/delete/${id}`);
|
|
return data;
|
|
}
|
|
}),
|
|
// Fechar/Abrir manutenção
|
|
fecharManutencao: (id) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.MAINTENANCE}/fechar_manutencao/${id}`);
|
|
return data;
|
|
}
|
|
}),
|
|
abrirManutencao: (id) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.MAINTENANCE}/abrir_manutencao/${id}`);
|
|
return data;
|
|
}
|
|
}),
|
|
getAbertoFechado: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get(`${ENDPOINTS.MAINTENANCE}/aberto_fechado/apresentar`);
|
|
return data;
|
|
}
|
|
}),
|
|
// Histórico de manutenção
|
|
getHistoricoCompleto: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get('/historico/completo');
|
|
return data;
|
|
}
|
|
}),
|
|
getHistoricoDetalhado: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get('/historico/detalhado');
|
|
return data;
|
|
}
|
|
}),
|
|
getHistoricoResumido: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get('/historico/resumido');
|
|
return data;
|
|
}
|
|
}),
|
|
getHistoricoEstatisticas: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get('/historico/estatisticas');
|
|
return data;
|
|
}
|
|
}),
|
|
getHistoricoPeriodo: (params) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get('/historico/periodo', { params });
|
|
return data;
|
|
}
|
|
}),
|
|
getHistoricoTop: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get('/historico/top');
|
|
return data;
|
|
}
|
|
}),
|
|
getHistoricoPorPlaca: (placa) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get(`/historico/placa/${placa}`);
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
// --- Disponibilidade ---
|
|
getAvailability: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get(`${ENDPOINTS.AVAILABILITY}/apresentar`);
|
|
return data;
|
|
}
|
|
}),
|
|
createAvailability: (payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.post(ENDPOINTS.AVAILABILITY, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
updateAvailability: (id, payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.AVAILABILITY}/${id}`, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
deleteAvailability: (id) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.AVAILABILITY}/delete/${id}`);
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
// --- Moki (Checklists) ---
|
|
getMoki: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get(`${ENDPOINTS.MOKI}/apresentar`);
|
|
return data;
|
|
}
|
|
}),
|
|
createMoki: (payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.post(ENDPOINTS.MOKI, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
updateMoki: (id, payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.MOKI}/${id}`, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
deleteMoki: (id) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.MOKI}/delete/${id}`);
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
// --- Status Frota ---
|
|
getStatus: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get(`${ENDPOINTS.STATUS}/apresentar`);
|
|
return data;
|
|
}
|
|
}),
|
|
createStatus: (payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.post(ENDPOINTS.STATUS, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
updateStatus: (id, payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.STATUS}/${id}`, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
updateStatusBatch: (ids, statusFrota) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.STATUS}/edit/em_lote`, { ids, status_frota: statusFrota });
|
|
return data;
|
|
}
|
|
}),
|
|
deleteStatus: (id) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.STATUS}/delete/${id}`);
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
// --- Monitoramento ---
|
|
getMonitoring: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get(`${ENDPOINTS.MONITORING}/apresentar`);
|
|
return data;
|
|
}
|
|
}),
|
|
createMonitoring: (payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.post(ENDPOINTS.MONITORING, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
updateMonitoring: (id, payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.MONITORING}/${id}`, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
deleteMonitoring: (id) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.MONITORING}/delete/${id}`);
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
// --- Sinistro / Devolução ---
|
|
getClaims: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get(`${ENDPOINTS.CLAIMS}/apresentar`);
|
|
return data;
|
|
}
|
|
}),
|
|
createClaims: (payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.post(ENDPOINTS.CLAIMS, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
updateClaims: (id, payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.CLAIMS}/${id}`, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
deleteClaim: (id) => handleRequest({
|
|
apiFn: async () => {
|
|
// Usando a rota específica fornecida pelo usuário para exclusão de sinistro
|
|
const { data } = await api.put(`/sinistro_frota/delete/${id}`);
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
// --- Oficinas ---
|
|
getWorkshops: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get(`${ENDPOINTS.WORKSHOPS}/apresentar`);
|
|
return data;
|
|
}
|
|
}),
|
|
createWorkshop: (payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.post(ENDPOINTS.WORKSHOPS, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
updateWorkshop: (id, payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.WORKSHOPS}/${id}`, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
deleteWorkshop: (id) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`${ENDPOINTS.WORKSHOPS}/delete/${id}`);
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
// --- Motoristas (Drivers) ---
|
|
getDrivers: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get('/motoristas/listagem');
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
// --- Listas de Configuração (Config Lists) ---
|
|
getListasConfig: () => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get('/listas_frota/config');
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
getListasByRoute: (route) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.get(`/listas_frota/${route}`);
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
createLista: (route, payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.post(`/listas_frota/${route}`, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
updateLista: (route, id, payload) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put(`/listas_frota/${route}/${id}`, payload);
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
deleteLista: (route, id) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.delete(`/listas_frota/${route}/${id}`);
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
// --- Update Vehicle Status (Inline Edit) ---
|
|
updateVehicleStatus: (idVehicle, statusFrota) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put('/status_frota/edit/em_lote', {
|
|
ids: [idVehicle],
|
|
status_frota: statusFrota
|
|
});
|
|
return data;
|
|
}
|
|
}),
|
|
|
|
// --- Update Status Batch (Bulk Edit) ---
|
|
updateStatusBatch: (ids, statusFrota) => handleRequest({
|
|
apiFn: async () => {
|
|
const { data } = await api.put('/status_frota/edit/em_lote', {
|
|
ids,
|
|
status_frota: statusFrota
|
|
});
|
|
return data;
|
|
}
|
|
})
|
|
};
|
|
|
|
|
|
|