Fix web page due to recent changes in the API v1

This commit is contained in:
Josepablo Cruz Baas
2024-03-22 02:36:36 +00:00
parent cbd076e887
commit 9a27883b98
34 changed files with 264 additions and 141 deletions

View File

@@ -151,7 +151,8 @@
</div> </div>
<div class="btn-row" v-if="!readOnly && authStore.user?.permissions === 'role_shipper'"> <div class="btn-row" v-if="!readOnly && authStore.user?.permissions === 'role_shipper'">
<button <button
class="btn-primary-sm bg-dark" v-if="(authStore.user?.job_role === 'owner' || authStore.user?.job_role === 'manager') || authStore.user._id === props.load.posted_by"
class="btn-primary-sm bg-danger"
@click="handleDeleteLoad" @click="handleDeleteLoad"
><i class="fa-solid fa-ban clear-sm"></i> Cancelar</button> ><i class="fa-solid fa-ban clear-sm"></i> Cancelar</button>
<button v-if="load.status !== 'Draft' && load.load_status !== 'Published' && load.load_status !== 'Loading'" <button v-if="load.status !== 'Draft' && load.load_status !== 'Published' && load.load_status !== 'Loading'"
@@ -164,6 +165,7 @@
Evidencias Evidencias
</button> </button>
<button <button
v-if="(authStore.user?.job_role === 'owner' || authStore.user?.job_role === 'manager') || authStore.user._id === props.load.posted_by"
class="btn-primary-sm" class="btn-primary-sm"
data-toggle="modal" data-target="#formLoadModal" data-toggle="modal" data-target="#formLoadModal"
@click="openEditModal" @click="openEditModal"

View File

@@ -1,6 +1,7 @@
<script setup> <script setup>
import Swal from 'sweetalert2'; import Swal from 'sweetalert2';
import { useCompanyStore } from '../stores/company'; import { useCompanyStore } from '../stores/company';
import { useAuthStore } from '../stores/auth';
const props = defineProps({ const props = defineProps({
location: { location: {
@@ -12,6 +13,7 @@
defineEmits(['set-location']) defineEmits(['set-location'])
const companyStore = useCompanyStore(); const companyStore = useCompanyStore();
const authStore = useAuthStore();
const handleDeleteLocation = async() => { const handleDeleteLocation = async() => {
Swal.fire({ Swal.fire({
@@ -70,7 +72,7 @@
{{ location.description }} {{ location.description }}
</div> </div>
</div> </div>
<div class="card-footer"> <div class="card-footer" v-if="authStore.user?.job_role === 'owner' || authStore.user?.job_role === 'manager'">
<button <button
class="btn btn-dark radius-sm" class="btn btn-dark radius-sm"
@click="handleDeleteLocation" @click="handleDeleteLocation"

View File

@@ -3,6 +3,7 @@
import { getDateMonthDay } from '../helpers/date_formats'; import { getDateMonthDay } from '../helpers/date_formats';
import { getStatusLoad } from '../helpers/status'; import { getStatusLoad } from '../helpers/status';
import { useCompanyStore } from '../stores/company'; import { useCompanyStore } from '../stores/company';
import { useAuthStore } from '../stores/auth';
const props = defineProps({ const props = defineProps({
proposal: { proposal: {
@@ -12,6 +13,7 @@ import { getDateMonthDay } from '../helpers/date_formats';
}) })
const companyStore = useCompanyStore(); const companyStore = useCompanyStore();
const authStore = useAuthStore();
const handleWithdrawnProposal = async() => { const handleWithdrawnProposal = async() => {
@@ -104,7 +106,9 @@ import { getDateMonthDay } from '../helpers/date_formats';
<i class="fa-solid fa-ban"></i> <i class="fa-solid fa-ban"></i>
Retirado Retirado
</div> </div>
<button v-else <button
v-else
v-if="authStore.user?.job_role === 'owner' || authStore.user?.job_role === 'manager'"
type="button" type="button"
class="btn btn-danger radius-sm" class="btn btn-danger radius-sm"
@click="handleWithdrawnProposal" @click="handleWithdrawnProposal"
@@ -113,6 +117,7 @@ import { getDateMonthDay } from '../helpers/date_formats';
Retirar Retirar
</button> </button>
<button <button
v-if="authStore.user?.job_role === 'owner' || authStore.user?.job_role === 'manager'"
class="btn-primary-sm radius-sm" class="btn-primary-sm radius-sm"
@click="$emit('set-proposal', {proposal: proposal, modal: 'edit'})" @click="$emit('set-proposal', {proposal: proposal, modal: 'edit'})"
data-toggle="modal" data-target="#makeProposalModal" data-toggle="modal" data-target="#makeProposalModal"

View File

@@ -2,6 +2,7 @@
import Swal from 'sweetalert2'; import Swal from 'sweetalert2';
import { getDateMonthDay } from '../helpers/date_formats'; import { getDateMonthDay } from '../helpers/date_formats';
import { useCompanyStore } from '../stores/company'; import { useCompanyStore } from '../stores/company';
import { useAuthStore } from '../stores/auth';
const props = defineProps({ const props = defineProps({
user: { user: {
@@ -19,6 +20,7 @@
defineEmits(['set-user']) defineEmits(['set-user'])
const companyStore = useCompanyStore(); const companyStore = useCompanyStore();
const authStore = useAuthStore();
const handleDelete = async() => { const handleDelete = async() => {
Swal.fire({ Swal.fire({
@@ -66,7 +68,7 @@
<div class="card-fixed flex-column"> <div class="card-fixed flex-column">
<div class="row"> <div class="row">
<div class="col-lg-6 col-sm-12"> <div class="col-lg-6 col-sm-12">
<p><span>Nombre de usuario:</span> {{user.name}}</p> <p><span>Nombre de usuario:</span> {{user.first_name}} {{user.last_name}}</p>
<p v-if="user.employee_id"><span class="font-weight-bold mr-1">Número de registro:</span> {{user.employee_id}}</p> <p v-if="user.employee_id"><span class="font-weight-bold mr-1">Número de registro:</span> {{user.employee_id}}</p>
<p><span>Teléfono 1: </span>{{user.phone}}</p> <p><span>Teléfono 1: </span>{{user.phone}}</p>
<p><span>Teléfono 2: </span>{{user.phone2}}</p> <p><span>Teléfono 2: </span>{{user.phone2}}</p>
@@ -93,7 +95,7 @@
<p><span>Rol del usuario: </span>{{user.job_role}}</p> <p><span>Rol del usuario: </span>{{user.job_role}}</p>
</div> </div>
</div> </div>
<div class="btn-row" v-if="readonly === false"> <div class="btn-row" v-if="readonly === false && (authStore.user?.job_role === 'owner' || authStore.user?.job_role === 'manager')">
<button <button
class="btn-primary-sm radius-sm" class="btn-primary-sm radius-sm"
data-toggle="modal" data-toggle="modal"

View File

@@ -2,6 +2,7 @@
import Swal from 'sweetalert2'; import Swal from 'sweetalert2';
import { getDateMonthDayEs } from '../helpers/date_formats'; import { getDateMonthDayEs } from '../helpers/date_formats';
import { useVehiclesStore } from '../stores/vehicles'; import { useVehiclesStore } from '../stores/vehicles';
import { useAuthStore } from '../stores/auth';
const props = defineProps({ const props = defineProps({
vehicle: { vehicle: {
@@ -9,10 +10,11 @@
required: true required: true
} }
}) })
console.log(props.vehicle);
defineEmits(['set-vehicle']); defineEmits(['set-vehicle']);
const vehicleStore = useVehiclesStore(); const vehicleStore = useVehiclesStore();
const authStore = useAuthStore();
const handleDeleteVehicle = async() => { const handleDeleteVehicle = async() => {
Swal.fire({ Swal.fire({
@@ -102,12 +104,14 @@
</div> </div>
<div class="card-footer"> <div class="card-footer">
<button <button
v-if="(authStore.user?.job_role === 'owner' || authStore.user?.job_role === 'manager') || authStore.user._id === props.vehicle.posted_by"
class="btn btn-dark radius-sm" class="btn btn-dark radius-sm"
@click="handleDeleteVehicle" @click="handleDeleteVehicle"
> >
<i class="fa-solid fa-trash" /> <span class="clear-xsm">Eliminar</span> <i class="fa-solid fa-trash" /> <span class="clear-xsm">Eliminar</span>
</button> </button>
<button <button
v-if="(authStore.user?.job_role === 'owner' || authStore.user?.job_role === 'manager') || authStore.user._id === props.vehicle.posted_by"
class="btn-primary-sm radius-sm" class="btn-primary-sm radius-sm"
@click="$emit('set-vehicle', {vehicle: vehicle, modal: 'form'})" @click="$emit('set-vehicle', {vehicle: vehicle, modal: 'form'})"
data-toggle="modal" data-toggle="modal"

View File

@@ -18,6 +18,29 @@
} }
}); });
/*
Usuarios: Staff solo puede ver los usuarios.
Ubicaciones: Staff puede hacer todas las acciones
Cargas: Staff: solo puede elimianr y editar sus propias cargas, y puede crear cargas
Gerente: de todos
Staff puede aceptar ofertas de las cargas de sus demas compañeros
Calendario: Gerente, Staff, puede ver sus eventos propios y las de la empresa,
Vehiculos: Staff: solo puede elimianr y editar sus propias vehiculos, y puede crear vehiculo
Gerente: de todos
Staff puede asignar conductores al vehiculo, puede igual cambiar el estado del vehiculo
Ofertas aceptadas: tiene todos los privilegios de un gerente.
Calculadora: El staff tiene todo los privigelios
Empresa: Manager
*/
onMounted(() => { onMounted(() => {
if(props.user) { if(props.user) {
console.log(props.user) console.log(props.user)
@@ -94,13 +117,15 @@
job_role: userForm.job_role, job_role: userForm.job_role,
permissions: authStore.user.permissions, permissions: authStore.user.permissions,
company: authStore.user.company, company: authStore.user.company,
categories: userForm.categories.length <= 0 ? null : userForm.categories?.map((e) => e._id), categories: userForm.categories?.length <= 0 ? null : userForm.categories?.map((e) => e._id),
user_city: userForm.user_city?.length <= 0 ? null : userForm.user_city?.map((e) => e.city_name), user_city: userForm.user_city?.length <= 0 ? null : userForm.user_city?.map((e) => e.city_name),
user_state: userForm.user_state?.length <= 0 ? null : userForm.user_state?.map((e) => e.state_name), user_state: userForm.user_state?.length <= 0 ? null : userForm.user_state?.map((e) => e.state_name),
truck_type: userForm.truck_type?.length <= 0 ? null : userForm.truck_type?.map((e) => e.meta_value), truck_type: userForm.truck_type?.length <= 0 ? null : userForm.truck_type?.map((e) => e.meta_value),
user_description: userForm.user_description user_description: userForm.user_description
} }
console.log(userData);
const dataUpdate = { const dataUpdate = {
categories: userForm.categories, categories: userForm.categories,
name: userForm.name + ' ' + userForm.last_name name: userForm.name + ' ' + userForm.last_name
@@ -180,6 +205,8 @@
type="number" type="number"
v-model:field="userForm.phone" v-model:field="userForm.phone"
:filled="false" :filled="false"
:step="1"
:error="errors.phone" :error="errors.phone"
/> />
<CustomInput <CustomInput
@@ -187,6 +214,7 @@
name="phone2" name="phone2"
type="number" type="number"
v-model:field="userForm.phone2" v-model:field="userForm.phone2"
:step="1"
:filled="false" :filled="false"
/> />
<CustomInput <CustomInput
@@ -194,6 +222,7 @@
name="email" name="email"
type="email" type="email"
v-model:field="userForm.email" v-model:field="userForm.email"
:readonly="(props.user) ? true : false"
:filled="false" :filled="false"
:error="errors.email" :error="errors.email"
/> />
@@ -206,8 +235,9 @@
v-model="userForm.job_role" v-model="userForm.job_role"
> >
<option disabled value="">-- Seleccionar rol --</option> <option disabled value="">-- Seleccionar rol --</option>
<option value="owner">Dueño</option> <!-- <option value="owner">Dueño</option> -->
<option value="manager">Gerente</option> <option value="manager">Gerente</option>
<option value="staff">Personal</option>
<option v-if="authStore.user?.permissions === 'role_carrier'" value="driver">Conductor</option> <option v-if="authStore.user?.permissions === 'role_carrier'" value="driver">Conductor</option>
</select> </select>
</div> </div>

View File

@@ -17,6 +17,8 @@
} }
}); });
console.log(props.vehicle);
defineEmits(['reset-vehicle']); defineEmits(['reset-vehicle']);
const initState = { const initState = {
@@ -85,6 +87,7 @@
circulation_serial_number: vehicleForm.circulation_serial_number, circulation_serial_number: vehicleForm.circulation_serial_number,
notes: vehicleForm.notes, notes: vehicleForm.notes,
company: authStore.user.company, company: authStore.user.company,
posted_by: authStore.user._id,
categories: vehicleForm.categories.length <= 0 ? null : vehicleForm.categories?.map((e) => e._id), categories: vehicleForm.categories.length <= 0 ? null : vehicleForm.categories?.map((e) => e._id),
destino: vehicleForm.destino, destino: vehicleForm.destino,
available_date: new Date() available_date: new Date()

View File

@@ -115,7 +115,7 @@
v-model="driverSelected" v-model="driverSelected"
> >
<option disabled value="">-- Seleccionar conductor --</option> <option disabled value="">-- Seleccionar conductor --</option>
<option v-for="driver in drivers" :value="driver">{{driver.name}}</option> <option v-for="driver in drivers" :value="driver">{{driver.first_name}} {{ driver.last_name }}</option>
</select> </select>
<span class="error-msg" v-if="error">{{ error }}</span> <span class="error-msg" v-if="error">{{ error }}</span>
</div> </div>

View File

@@ -12,12 +12,12 @@ import { onMounted, ref } from 'vue';
}, },
currentPage: { currentPage: {
type: Number, type: Number,
default: 1 default: 0
} }
}) })
const emits = defineEmits(['get-elements']) const emits = defineEmits(['get-elements'])
const currentPage = ref(1); const currentPage = ref(0);
const totalPage = ref(0) const totalPage = ref(0)
onMounted(() => { onMounted(() => {
currentPage.value = props.currentPage; currentPage.value = props.currentPage;
@@ -25,6 +25,7 @@ import { onMounted, ref } from 'vue';
}) })
const setPage = (p) => { const setPage = (p) => {
console.log('Page:', p);
currentPage.value = p currentPage.value = p
const skip = (p - 1) * props.limit; const skip = (p - 1) * props.limit;
emits('get-elements', {skip: skip, page: p}); emits('get-elements', {skip: skip, page: p});
@@ -37,8 +38,8 @@ import { onMounted, ref } from 'vue';
<div class="box-pages" v-if="totalPage > 1"> <div class="box-pages" v-if="totalPage > 1">
<div <div
v-for="p in totalPage" v-for="p in totalPage"
:class="[currentPage === p ? 'page page-active' : 'page']" :class="[currentPage === (p - 1) ? 'page page-active' : 'page']"
@click="setPage(p)" @click="setPage(p - 1)"
> >
{{ p }} {{ p }}
</div> </div>

View File

@@ -32,8 +32,8 @@
<img src="/images/logo-eta.png" alt="Eta viaporte" width="120"> <img src="/images/logo-eta.png" alt="Eta viaporte" width="120">
</a> </a>
</div> </div>
<h2 class="my-4">COVO</h2> <p class="my-4"><i class="fa-regular fa-building icon-header"></i> <span class="company-name">{{auth.user?.company?.company_name}}</span></p>
<p><i class="fa-solid fa-user"></i> <span class="ms-2">{{ auth.user?.first_name + ' ' + auth.user?.last_name }}</span></p> <p><i class="fa-regular fa-user icon-header"></i> <span>{{ auth.user?.first_name + ' ' + auth.user?.last_name }}</span></p>
<div class="divider"></div> <div class="divider"></div>
</div> </div>
<ul class="list-unstyled components"> <ul class="list-unstyled components">
@@ -167,6 +167,18 @@
margin-bottom: 8px; margin-bottom: 8px;
} }
.icon-header {
font-size: 24px;
// color: #FBBA33;
color: #FFF;
margin-right: 8px;
}
.company-name {
font-size: 2rem;
font-weight: 900;
}
.logo { .logo {
display: flex; display: flex;
justify-content: center; justify-content: center;

View File

@@ -35,6 +35,10 @@
}, },
error: { error: {
type: String, type: String,
},
step: {
type: Number,
default: 0.1
} }
}) })
@@ -52,7 +56,7 @@
:id="name" :id="name"
:name="name" :name="name"
:min="0" :min="0"
:step="0.1" :step="step"
:value="field" :value="field"
:disabled="readonly" :disabled="readonly"
:readonly="readonly" :readonly="readonly"

View File

@@ -6,7 +6,7 @@ export default function useDirectory() {
const loading = ref(false); const loading = ref(false);
const users = ref([]); const users = ref([]);
const companiesTotal = ref(0); const companiesTotal = ref(0);
const currentCompaniesPage = ref(1); const currentCompaniesPage = ref(0);
const getCompaniesData = async(filterQuery) => { const getCompaniesData = async(filterQuery) => {

View File

@@ -5,7 +5,7 @@ export default function useSearchLoads() {
const loads = ref([]); const loads = ref([]);
const loading = ref(false); const loading = ref(false);
const total = ref(0); const total = ref(0);
const currentPage = ref(1); const currentPage = ref(0);
const getLoadsPublished = async(filterQuery) => { const getLoadsPublished = async(filterQuery) => {
loading.value = true; loading.value = true;

View File

@@ -119,12 +119,12 @@ const router = createRouter({
component: () => import('../views/VehiclesView.vue'), component: () => import('../views/VehiclesView.vue'),
}, },
{ {
path: 'embarcadores', path: 'transportistas',
name: 'carriers', name: 'carriers',
component: () => import('../views/CarriersView.vue'), component: () => import('../views/CarriersView.vue'),
}, },
{ {
path: 'transportistas', path: 'embarcadores',
name: 'shippers', name: 'shippers',
component: () => import('../views/ShippersView.vue'), component: () => import('../views/ShippersView.vue'),
}, },

View File

@@ -6,6 +6,7 @@ export const login = async(body) => {
try { try {
const endpoint = "/v1/account/authorize"; const endpoint = "/v1/account/authorize";
const {data} = await apiPublic.post(endpoint, body); const {data} = await apiPublic.post(endpoint, body);
console.log('auth: ', data);
if(data.accessToken !== null){ if(data.accessToken !== null){
if(data.user.job_role !== 'driver'){ if(data.user.job_role !== 'driver'){
//TODO: Guardar token y datos del usuario //TODO: Guardar token y datos del usuario
@@ -37,7 +38,6 @@ export const renewToken = async() => {
try { try {
const endpoint = `/v1/account/authorize/${session}`; const endpoint = `/v1/account/authorize/${session}`;
const {data} = await apiPublic.get(endpoint); const {data} = await apiPublic.get(endpoint);
console.log(data);
if(data.accessToken !== null){ if(data.accessToken !== null){
return { return {
msg: 'success', msg: 'success',
@@ -78,6 +78,7 @@ export const regiterConfirm = async(body) => {
try { try {
const endpoint = "/v1/account/signup"; const endpoint = "/v1/account/signup";
const {data} = await apiPublic.patch(endpoint, body); const {data} = await apiPublic.patch(endpoint, body);
console.log('register auth: ', data);
return { return {
msg: 'success', msg: 'success',
data data

View File

@@ -25,7 +25,7 @@ export const updateCompany = async(formData) => {
export const getUsers = async(filter) => { export const getUsers = async(filter) => {
try { try {
const endpoint = `/v1/users/find?${filter}`; const endpoint = `/v1/users/find?${filter}&$sort%5BcreatedAt%5D=-1`;
const {data} = await api.get(endpoint); const {data} = await api.get(endpoint);
return data; return data;
} catch (error) { } catch (error) {
@@ -126,7 +126,7 @@ export const deleteBudget = async(id) => {
export const getLocations = async(filter) => { export const getLocations = async(filter) => {
try { try {
const endpoint = `/v1/branches/find${filter}&$limit=3&$sort%5BcreatedAt%5D=-1`; const endpoint = `/v1/branches/find${filter}&$sort%5BcreatedAt%5D=-1`;
console.log(endpoint); console.log(endpoint);
const {data} = await api.get(endpoint); const {data} = await api.get(endpoint);
return data; return data;

View File

@@ -34,9 +34,10 @@ export const useAuthStore = defineStore('auth', () => {
user.value = resp.data.user; user.value = resp.data.user;
sesion.value = resp.data.session_token; sesion.value = resp.data.session_token;
token.value = resp.data.accessToken; token.value = resp.data.accessToken;
console.log(resp.data.user)
localStorage.setItem('session', resp.data.session_token); localStorage.setItem('session', resp.data.session_token);
localStorage.setItem('access', resp.data.accessToken); localStorage.setItem('access', resp.data.accessToken);
localStorage.setItem('id', resp.data.user.company); localStorage.setItem('id', resp.data.user.company._id);
checking.value = false; checking.value = false;
} else { } else {
noty.show = true; noty.show = true;

View File

@@ -10,17 +10,17 @@ export const useCompanyStore = defineStore('company', () => {
const users = ref([]); const users = ref([]);
const drivers = ref([]); const drivers = ref([]);
const usersTotal = ref(0); const usersTotal = ref(0);
const usersCurrentPage = ref(1); const usersCurrentPage = ref(0);
const budgets = ref([]); const budgets = ref([]);
const budgetsTotal = ref(0); const budgetsTotal = ref(0);
const budgetsCurrentPage = ref(1); const budgetsCurrentPage = ref(0);
const locations = ref([]); const locations = ref([]);
const locationsLoads = ref([]); const locationsLoads = ref([]);
const locationsTotal = ref(0); const locationsTotal = ref(0);
const locationsCurrentPage = ref(1); const locationsCurrentPage = ref(0);
const proposals = ref([]); const proposals = ref([]);
const proposalsTotal = ref(0); const proposalsTotal = ref(0);
const proposalsCurrentPage = ref(1) const proposalsCurrentPage = ref(0)
const loading = ref(false); const loading = ref(false);
const getCompanyData = async() => { const getCompanyData = async() => {
@@ -35,10 +35,12 @@ export const useCompanyStore = defineStore('company', () => {
loading.value = false; loading.value = false;
} }
const getUsersCompany = async(limit = 10, skip = 0, reload = false) => { const getUsersCompany = async(limit = 1, page = 0, reload = false) => {
const companyId = localStorage.getItem('id'); const companyId = localStorage.getItem('id');
console.log(companyId);
if(users.value.length <= 0 || reload === true) { if(users.value.length <= 0 || reload === true) {
const filter = `company=${companyId}`; // const filter = `company=${companyId}`;
const filter = `company=${companyId}&elements=${limit}&page=${page}`;
const resp = await getUsers(filter); const resp = await getUsers(filter);
if(resp !== null && resp.total > 0) { if(resp !== null && resp.total > 0) {
usersTotal.value = resp.total; usersTotal.value = resp.total;
@@ -142,17 +144,17 @@ export const useCompanyStore = defineStore('company', () => {
users.value = []; users.value = [];
drivers.value = []; drivers.value = [];
usersTotal.value = 0; usersTotal.value = 0;
usersCurrentPage.value = 1; usersCurrentPage.value = 0;
budgets.value = []; budgets.value = [];
budgetsTotal.value = 0; budgetsTotal.value = 0;
budgetsCurrentPage.value = 1; budgetsCurrentPage.value = 0;
locations.value = []; locations.value = [];
locationsLoads.value = []; locationsLoads.value = [];
locationsTotal.value = 0; locationsTotal.value = 0;
locationsCurrentPage.value = 1; locationsCurrentPage.value = 0;
proposals.value = []; proposals.value = [];
proposalsTotal.value = 0; proposalsTotal.value = 0;
proposalsCurrentPage.value = 1; proposalsCurrentPage.value = 0;
// companyid = null; // companyid = null;
loading.value = false; loading.value = false;
} }
@@ -170,7 +172,7 @@ export const useCompanyStore = defineStore('company', () => {
const companyId = localStorage.getItem('id'); const companyId = localStorage.getItem('id');
try { try {
if(proposals.value.length <= 0 || reload) { if(proposals.value.length <= 0 || reload) {
const endpoint = `/v1/proposals/find?carrier=${companyId}&$sort%5BcreatedAt%5D=-1&${filter}`; const endpoint = `/v1/proposals/find?carrier=${companyId}&${filter}&$sort%5BcreatedAt%5D=-1`;
console.log(endpoint) console.log(endpoint)
const {data} = await api.get(endpoint); const {data} = await api.get(endpoint);
proposals.value = data.data; proposals.value = data.data;

View File

@@ -8,7 +8,7 @@ export const useLoadsStore = defineStore('load', () => {
const loads = ref([]) const loads = ref([])
const loadsDashboard = ref([]); const loadsDashboard = ref([]);
const loadsTotal = ref(0) const loadsTotal = ref(0)
const loadsCurrentPage = ref(1) const loadsCurrentPage = ref(0)
const proposalsOfLoads = ref([]); const proposalsOfLoads = ref([]);
const openModalEdit = ref(false); const openModalEdit = ref(false);
const openAttachmentsModal = ref(false); const openAttachmentsModal = ref(false);
@@ -18,7 +18,7 @@ export const useLoadsStore = defineStore('load', () => {
const companyid = localStorage.getItem('id'); const companyid = localStorage.getItem('id');
if(loadsDashboard.value.length <= 0 || reload) { if(loadsDashboard.value.length <= 0 || reload) {
try { try {
const endpoint = `/v1/loads/find`; const endpoint = `/v1/loads/find?elements=100`;
const {data} = await api.get(endpoint); const {data} = await api.get(endpoint);
loadsDashboard.value = data.data; loadsDashboard.value = data.data;
} catch (error) { } catch (error) {
@@ -32,8 +32,9 @@ export const useLoadsStore = defineStore('load', () => {
const companyId = localStorage.getItem('id'); const companyId = localStorage.getItem('id');
try { try {
if(loadsDashboard.value.length <= 0 || reload) { if(loadsDashboard.value.length <= 0 || reload) {
const endpoint = `/v1/proposals/find?carrier=${companyId}`; const endpoint = `/v1/proposals/find?carrier=${companyId}&elements=100`;
const {data} = await api.get(endpoint); const {data} = await api.get(endpoint);
console.log(data);
loadsDashboard.value = data.data.map( (e) => e.load); loadsDashboard.value = data.data.map( (e) => e.load);
} }
} catch (error) { } catch (error) {
@@ -152,7 +153,7 @@ export const useLoadsStore = defineStore('load', () => {
loads.value = []; loads.value = [];
loadsDashboard.value = []; loadsDashboard.value = [];
loadsTotal.value = 0; loadsTotal.value = 0;
loadsCurrentPage.value = 1; loadsCurrentPage.value = 0;
proposalsOfLoads.value = []; proposalsOfLoads.value = [];
openModalEdit.value = false; openModalEdit.value = false;
openAttachmentsModal.value = false; openAttachmentsModal.value = false;

View File

@@ -5,7 +5,7 @@ export const useVehiclesStore = defineStore('vehicles', () => {
const vehicles = ref([]); const vehicles = ref([]);
const vehiclesTotal = ref(0); const vehiclesTotal = ref(0);
const vehiclesCurrentPage = ref(1) const vehiclesCurrentPage = ref(0)
const fetchVehicles = async(filterQuery, reload = false) => { const fetchVehicles = async(filterQuery, reload = false) => {
let filterArr = Object.values(filterQuery); let filterArr = Object.values(filterQuery);
@@ -17,7 +17,7 @@ export const useVehiclesStore = defineStore('vehicles', () => {
} }
if(vehicles.value.length <= 0 || reload === true) { if(vehicles.value.length <= 0 || reload === true) {
const resp = await getVehicles(filterStr + '&$sort%5BcreatedAt%5D=-1'); const resp = await getVehicles(filterStr + '&$sort%5BcreatedAt%5D=-1');
console.log(resp.data); console.log(resp);
if(resp !== null) { if(resp !== null) {
vehiclesTotal.value = resp.total; vehiclesTotal.value = resp.total;
vehicles.value = resp.data; vehicles.value = resp.data;
@@ -28,7 +28,7 @@ export const useVehiclesStore = defineStore('vehicles', () => {
const createVehicleCompany = async(formData, localData = {}) => { const createVehicleCompany = async(formData, localData = {}) => {
const data = await createVehicle(formData); const data = await createVehicle(formData);
if(data) { if(data) {
vehicles.value.push({ vehicles.value.unshift({
...data, ...data,
...localData ...localData
}); });
@@ -71,7 +71,7 @@ export const useVehiclesStore = defineStore('vehicles', () => {
const clear = () => { const clear = () => {
vehicles.value = []; vehicles.value = [];
vehiclesTotal.value = 0; vehiclesTotal.value = 0;
vehiclesCurrentPage.value = 1; vehiclesCurrentPage.value = 0;
} }

View File

@@ -7,8 +7,9 @@
import Segments from '../components/ui/Segments.vue'; import Segments from '../components/ui/Segments.vue';
import States from '../components/ui/States.vue'; import States from '../components/ui/States.vue';
import Cities from '../components/ui/Cities.vue'; import Cities from '../components/ui/Cities.vue';
import Pagination from '../components/Pagination.vue';
const {loading, companies, getCompaniesData} = useDirectory(); const {loading, companies, getCompaniesData, companiesTotal, currentCompaniesPage} = useDirectory();
const query = ref(''); const query = ref('');
const selectedTruckType = ref([]); const selectedTruckType = ref([]);
const selectedCategory = ref([]); const selectedCategory = ref([]);
@@ -16,11 +17,24 @@
const selectedCities = ref([]); const selectedCities = ref([]);
const filterQuery = ref([]); const filterQuery = ref([]);
const limit = 5;
onMounted(() => { onMounted(() => {
filterQuery.value.company_type = 'carrier'; filterQuery.value.company_type = 'carrier';
filterQuery.value.limit = 'elements=' + limit;
filterQuery.value.page = "page=0";
getCompaniesData(filterQuery.value); getCompaniesData(filterQuery.value);
}); });
const getCompaniesByPage = (data) => {
console.log(data);
// filterQuery.value.company_type = 'shipper';
filterQuery.value.page = "page="+ data.page;
currentCompaniesPage.value = data.page
getCompaniesData(filterQuery.value);
}
watch(query, () => { watch(query, () => {
if(query.value.length === 0){ if(query.value.length === 0){
filterQuery.value.search = ""; filterQuery.value.search = "";
@@ -66,7 +80,7 @@
} }
const clearFilter = () => { const clearFilter = () => {
clearRequest();
selectedCities.value = null; selectedCities.value = null;
selectedCategory.value = null; selectedCategory.value = null;
selectedState.value = null; selectedState.value = null;
@@ -86,6 +100,12 @@
} }
} }
const clearRequest = () => {
filterQuery.value.page = "page="+ 0;
filterQuery.value.limit = "elements="+ limit;
currentCompaniesPage.value = 0;
}
const clearState = () => { const clearState = () => {
filterQuery.value.state = ""; filterQuery.value.state = "";
getCompaniesData(filterQuery.value); getCompaniesData(filterQuery.value);
@@ -151,6 +171,14 @@
:key="company._id" :key="company._id"
:company="company" :company="company"
/> />
<Pagination
v-if="!loading"
:total="companiesTotal"
:limit="limit"
:current-page="currentCompaniesPage"
@get-elements="getCompaniesByPage"
/>
</div> </div>
</template> </template>

View File

@@ -13,6 +13,7 @@
import { useAuthStore } from '../stores/auth'; import { useAuthStore } from '../stores/auth';
import { complete_registry } from "../services/auth"; import { complete_registry } from "../services/auth";
import { updateMyUserProfile } from "../services/company" import { updateMyUserProfile } from "../services/company"
import Spiner from '../components/ui/Spiner.vue';
const notifications = useNotificationsStore(); const notifications = useNotificationsStore();
const auth = useAuthStore(); const auth = useAuthStore();
@@ -72,6 +73,7 @@
clearMessages(); clearMessages();
return; return;
} }
localStorage.setItem('access', auth.token);
const companyData = { const companyData = {
company_name : company.name, company_name : company.name,
rfc : company.rfc, rfc : company.rfc,
@@ -82,35 +84,46 @@
company_description : company.description, company_description : company.description,
company_type : typeCompany.typeCompany, company_type : typeCompany.typeCompany,
}; };
loading.value = true;
const result = await complete_registry( companyData ); const result = await complete_registry( companyData );
console.log(result);
if(result.msg === 'success' && result.data !== null){ if(result.msg !== 'success') {
localStorage.setItem('id', result.data._id); msgError.value = result.msg;
localStorage.removeItem('access');
loading.value = false;
clearMessages();
return;
} }
console.log(result);
localStorage.setItem('id', result.data._id);
localStorage.setItem('session', auth.sesion);
// localStorage.setItem('access', auth.token);
const userData = { const userData = {
"first_name" : user.name, "first_name" : user.name,
"last_name" : user.lastName, "last_name" : user.lastName,
"phone" : user.phone1, "phone" : user.phone1,
"phone2" : user.phone2, "phone2" : user.phone2,
}; };
await updateMyUserProfile( userData ); let respUser = await updateMyUserProfile( userData );
console.log('User create: ', respUser);
if(respUser === null) {
auth.user = userData;
} else {
auth.user = respUser;
}
/////// Datos debug /////// /////// Datos debug ///////
notifications.show = true; notifications.show = true;
notifications.text = 'Los datos se llenaron correctamente'; notifications.text = 'Los datos se llenaron correctamente';
localStorage.setItem('session', 'jssksksksk2skskkskskkskss');
auth.$patch({ loading.value = false;
sesion: 'jssksksksk2skskkskskkskss',
token: 'jkdkdkdkeoee00kelldd',
user: {
first_name: user.name,
last_name: user.lastName
},
})
router.push({name: 'home'}); router.push({name: 'home'});
/////////////////////////// ///////////////////////////
} }
/// Falta el populate en la respuesta para completar el registro y luego de recargar la pagina
const handleBack = (val) => { const handleBack = (val) => {
step.value = val; step.value = val;
} }
@@ -292,6 +305,7 @@
label="Teléfono 1: *" label="Teléfono 1: *"
type="number" type="number"
name="phone1" name="phone1"
:step="1"
:filled="false" :filled="false"
v-model:field="user.phone1" v-model:field="user.phone1"
/> />
@@ -299,12 +313,18 @@
label="Teléfono 2:" label="Teléfono 2:"
type="number" type="number"
name="phone2" name="phone2"
:step="1"
:filled="false" :filled="false"
v-model:field="user.phone2" v-model:field="user.phone2"
/> />
</div> </div>
<Spiner v-if="loading" class="mt-5"/>
<input type="submit" value="Guardar" class="btn-primary-lg btn-lg-block my-4"> <input
v-else
type="submit"
value="Guardar"
class="btn-primary-lg btn-lg-block my-4"
/>
</form> </form>
</div> </div>
</template> </template>

View File

@@ -6,6 +6,7 @@
import { useLoadsStore } from '../stores/loads'; import { useLoadsStore } from '../stores/loads';
import { onMounted, ref, watch } from 'vue'; import { onMounted, ref, watch } from 'vue';
import Spiner from '../components/ui/Spiner.vue'; import Spiner from '../components/ui/Spiner.vue';
import CardEmpty from '../components/CardEmpty.vue';
import { useAuthStore } from '../stores/auth'; import { useAuthStore } from '../stores/auth';
import { storeToRefs } from 'pinia'; import { storeToRefs } from 'pinia';
@@ -33,7 +34,6 @@
} }
}); });
const getData = async() => { const getData = async() => {
loading.value = true; loading.value = true;
if(user.value?.permissions === "role_carrier") { if(user.value?.permissions === "role_carrier") {
@@ -52,10 +52,15 @@
if(e?.load_status) { if(e?.load_status) {
loadsData.value.push(e.load_status); loadsData.value.push(e.load_status);
} }
if( (user.value?.permissions === "role_shipper") && e?.categories) { if( e?.categories) {
segmentsData.value.push(e?.categories[0].name) segmentsData.value.push(e?.categories[0].name)
} }
if( (user.value?.permissions === "role_shipper" ) && e?.origin?.city) {
// if( (user.value?.permissions === "role_carrier") && e?.load?.categories) {
// segmentsData.value.push(e?.load?.categories[0].name)
// }
if( e?.origin?.city) {
cities.value.push(e?.origin.city) cities.value.push(e?.origin.city)
} }
if(e?.origin?.state){ if(e?.origin?.state){
@@ -70,10 +75,8 @@
<template> <template>
<h1 class="title my-4">Dashboard Administrativo</h1> <h1 class="title my-4">Dashboard Administrativo</h1>
<div class="container-dashboard"> <div class="container-dashboard" v-if="nOfLoads > 0">
<div class="card-fixed" <div class="card-fixed card-dashboard">
:class="[ ( user?.permissions === 'role_shipper') ? 'card-dashboard' : 'card-dashboard-carrier' ]"
>
<h3>Total de cargas este mes</h3> <h3>Total de cargas este mes</h3>
<div class="main-info"> <div class="main-info">
{{ nOfLoads }} {{ nOfLoads }}
@@ -85,9 +88,7 @@
</div> </div>
</div> </div>
<!-- <ChartLoad/> --> <!-- <ChartLoad/> -->
<div class="card-fixed" <div class="card-fixed card-dashboard">
:class="[ ( user?.permissions === 'role_shipper') ? 'card-dashboard' : 'card-dashboard-carrier']"
>
<h3>Cargas activas</h3> <h3>Cargas activas</h3>
<div class="card-chart"> <div class="card-chart">
<Spiner v-if="loading"/> <Spiner v-if="loading"/>
@@ -100,9 +101,7 @@
/> />
</div> </div>
</div> </div>
<div class="card-fixed" <div class="card-fixed card-dashboard">
:class="[ (user?.permissions === 'role_shipper') ? 'card-dashboard' : 'card-dashboard-carrier']"
v-if="user?.permissions?.includes('role_shipper')">
<h3>Segmentos más usados</h3> <h3>Segmentos más usados</h3>
<div class="card-chart"> <div class="card-chart">
<Spiner v-if="loading"/> <Spiner v-if="loading"/>
@@ -114,11 +113,7 @@
/> />
</div> </div>
</div> </div>
<!-- </div> <div class="card-fixed card-dashboard">
<div class="container-dashboard"> -->
<div class="card-fixed"
:class="[ (user?.permissions === 'role_shipper') ? 'card-dashboard' : 'card-dashboard-carrier']"
>
<h3>Estados más usados</h3> <h3>Estados más usados</h3>
<div class="card-chart"> <div class="card-chart">
<Spiner v-if="loading"/> <Spiner v-if="loading"/>
@@ -129,9 +124,7 @@
/> />
</div> </div>
</div> </div>
<div class="card-fixed" <div class="card-fixed card-dashboard">
:class="[ (user?.permissions === 'role_shipper') ? 'card-dashboard' : 'card-dashboard-carrier']"
v-if="user?.permissions === 'role_shipper'">
<h3>Ciudades más usadas</h3> <h3>Ciudades más usadas</h3>
<div class="card-chart"> <div class="card-chart">
<Spiner v-if="loading"/> <Spiner v-if="loading"/>
@@ -142,9 +135,7 @@
/> />
</div> </div>
</div> </div>
<div class="card-fixed" <div class="card-fixed card-dashboard">
:class="[ (user?.permissions === 'role_shipper') ? 'card-dashboard' : 'card-dashboard-carrier']"
>
<h3>Tipo de transporte más usados</h3> <h3>Tipo de transporte más usados</h3>
<div class="card-chart"> <div class="card-chart">
<Spiner v-if="loading"/> <Spiner v-if="loading"/>
@@ -156,6 +147,9 @@
</div> </div>
</div> </div>
</div> </div>
<div v-if="nOfLoads <= 0 && loading === false">
<CardEmpty text="No hay suficientes datos para generar un analisis de cargas"/>
</div>
</template> </template>
<style scoped> <style scoped>
@@ -179,7 +173,7 @@
.card-dashboard-carrier { .card-dashboard-carrier {
width: 48%; width: 48%;
min-height: 300px; min-height: 300px;
max-height: 500px; /* max-height: 500px; */
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }

View File

@@ -13,18 +13,18 @@
const loading = ref(false); const loading = ref(false);
const query = ref(''); const query = ref('');
const filterQuery = ref([]); const filterQuery = ref([]);
const limit = 3; const limit = 5;
onMounted(() =>{ onMounted(() =>{
console.log('init') console.log('init')
getDataLoadsInit(false); getDataLoadsInit(false);
}) })
///loads?company=64fa70c130d2650011ac4f3a&$limit=3&$skip=0&status[$ne]=Closed&$sort%5BcreatedAt%5D=-1 ///loads?company=64fa70c130d2650011ac4f3a&elements=3&page=0&status[$ne]=Closed&$sort%5BcreatedAt%5D=-1
watch(query, () => { watch(query, () => {
filterQuery.value.skip = "$skip="+ 0; filterQuery.value.page = "page="+ 0;
filterQuery.value.limit = "$limit="+ 100; filterQuery.value.limit = "elements="+ 100;
if(query.value.length === 0){ if(query.value.length === 0){
console.log('Clear manueal') console.log('Clear manueal')
// console.log(loadStore.loadsTotal) // console.log(loadStore.loadsTotal)
@@ -35,8 +35,8 @@
}); });
const getDataLoadsInit = async(reload) => { const getDataLoadsInit = async(reload) => {
filterQuery.value.limit = '$limit=' + limit; filterQuery.value.limit = 'elements=' + limit;
filterQuery.value.skip = "$skip=0" filterQuery.value.page = "page=0"
filterQuery.value.status = "status[$ne]="+"Closed"; filterQuery.value.status = "status[$ne]="+"Closed";
loading.value = true; loading.value = true;
await loadStore.getCompanyLoads(filterQuery.value, reload); await loadStore.getCompanyLoads(filterQuery.value, reload);
@@ -46,7 +46,7 @@
const getLoadsByPage = async(data) => { const getLoadsByPage = async(data) => {
console.log(data); console.log(data);
loading.value = true; loading.value = true;
filterQuery.value.skip = "$skip="+ data.skip; filterQuery.value.page = "page="+ data.page;
loadStore.loadsCurrentPage = data.page loadStore.loadsCurrentPage = data.page
await loadStore.getCompanyLoads(filterQuery.value, true) await loadStore.getCompanyLoads(filterQuery.value, true)
loading.value = false; loading.value = false;
@@ -82,9 +82,9 @@
} }
const clearRequest = () => { const clearRequest = () => {
filterQuery.value.skip = "$skip="+ 0; filterQuery.value.page = "page="+ 0;
filterQuery.value.limit = "$limit="+ limit; filterQuery.value.limit = "elements="+ limit;
loadStore.loadsCurrentPage = 1; loadStore.loadsCurrentPage = 0;
} }
const loadHistory = () => { const loadHistory = () => {

View File

@@ -19,12 +19,14 @@
getInitData(); getInitData();
}) })
const limit = 3; const limit = 5;
const getInitData = async() => { const getInitData = async() => {
loading.value = true; loading.value = true;
// companyStore.locationsCurrentPage = companyStore.locationsCurrentPage; // companyStore.locationsCurrentPage = companyStore.locationsCurrentPage;
filterQuery.value.company = "company="+ localStorage.getItem('id'); filterQuery.value.company = "company="+ localStorage.getItem('id');
filterQuery.value.limit = "elements=" + limit;
filterQuery.value.page = "page=" + 0;
await companyStore.getLocationsCompany(filterQuery.value, false) await companyStore.getLocationsCompany(filterQuery.value, false)
loading.value = false; loading.value = false;
} }
@@ -32,7 +34,7 @@
const getLocationsByPage = async(data) => { const getLocationsByPage = async(data) => {
loading.value = true; loading.value = true;
filterQuery.value.company = "company="+ localStorage.getItem('id'); filterQuery.value.company = "company="+ localStorage.getItem('id');
filterQuery.value.skip = "$skip="+ data.skip; filterQuery.value.page = "page=" + data.page;
companyStore.locationsCurrentPage = data.page companyStore.locationsCurrentPage = data.page
await companyStore.getLocationsCompany(filterQuery.value, true) await companyStore.getLocationsCompany(filterQuery.value, true)
loading.value = false; loading.value = false;
@@ -45,8 +47,8 @@
} }
watch(query, () => { watch(query, () => {
filterQuery.value.skip = "$skip="+ 0; filterQuery.value.page = "page=" + 0;
filterQuery.value.limit = "$limit="+ 100; filterQuery.value.limit = "elements=" + 100;
if(query.value.length === 0){ if(query.value.length === 0){
clearRequest(); clearRequest();
filterQuery.value.search = ""; filterQuery.value.search = "";
@@ -77,9 +79,9 @@
} }
const clearRequest = () => { const clearRequest = () => {
filterQuery.value.skip = "$skip="+ 0; filterQuery.value.page = "page=" + 0;
filterQuery.value.limit = "$limit="+ limit; filterQuery.value.limit = "elements="+ limit;
companyStore.locationsCurrentPage = 1; companyStore.locationsCurrentPage = 0;
} }
const handleSetCurrentLocation = (location) => { const handleSetCurrentLocation = (location) => {

View File

@@ -37,26 +37,24 @@
} }
const resp = await login(data); const resp = await login(data);
if(resp.msg === 'success') { if(resp.msg === 'success') {
console.log(resp.data.user); if( resp.data.user.company ) { // Registro completo
if( resp.data.user.company ) {
localStorage.setItem('session', resp.data.session_token); localStorage.setItem('session', resp.data.session_token);
localStorage.setItem('access', resp.data.accessToken); localStorage.setItem('access', resp.data.accessToken);
localStorage.setItem('id', resp.data.user.company); localStorage.setItem('id', resp.data.user.company._id);
console.log('id', resp.data.user.company)
router.push({name: 'home'}); router.push({name: 'home'});
auth.$patch({ auth.$patch({
sesion: resp.data.session_token, sesion: resp.data.session_token,
token: resp.data.accessToken, token: resp.data.accessToken,
user: resp.data.user, user: resp.data.user,
}) })
} else { } else { // Completar registro
auth.$patch({ auth.$patch({
sesion: resp.data.session_token, sesion: resp.data.session_token,
token: resp.data.accessToken, token: resp.data.accessToken,
user: resp.data.user, user: resp.data.user,
}) })
localStorage.setItem('session', resp.data.session_token); // localStorage.setItem('session', resp.data.session_token);
localStorage.setItem('access', resp.data.accessToken); // localStorage.setItem('access', resp.data.accessToken);
router.push({name: 'register-company'}); router.push({name: 'register-company'});
} }
} else { } else {

View File

@@ -44,6 +44,7 @@ import { storeToRefs } from 'pinia';
<div class="header-info"> <div class="header-info">
<h2>{{ company.company?.company_name }}</h2> <h2>{{ company.company?.company_name }}</h2>
<button <button
v-if="auth.user?.job_role === 'owner'"
class="btn-primary-sm" class="btn-primary-sm"
data-toggle="modal" data-target="#editcompanymodal" data-toggle="modal" data-target="#editcompanymodal"
><i class="fa-solid fa-pen-to-square"></i> Editar empresa</button> ><i class="fa-solid fa-pen-to-square"></i> Editar empresa</button>

View File

@@ -7,9 +7,11 @@
import Spiner from '../components/ui/Spiner.vue'; import Spiner from '../components/ui/Spiner.vue';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import { useNotificationsStore } from '../stores/notifications'; import { useNotificationsStore } from '../stores/notifications';
import { useAuthStore } from '../stores/auth';
const router = useRouter(); const router = useRouter();
const notifications = useNotificationsStore() const notifications = useNotificationsStore()
const auth = useAuthStore();
const form = reactive({ const form = reactive({
email: '', email: '',
@@ -84,11 +86,16 @@
}); });
clearMessages(); clearMessages();
notifications.$patch({ notifications.$patch({
text : 'Registro exitoso, Inicie sesión!', text : 'Registro exitoso, Complete su registro!',
show : true, show : true,
error: false error: false
}); });
router.push({name: 'login'}); auth.$patch({
sesion: result.data.session_token,
token: result.data.accessToken,
user: result.data.user,
})
router.push({name: 'register-company'});
} else { } else {
msgError.value = result.msg; msgError.value = result.msg;
clearMessages() clearMessages()

View File

@@ -10,13 +10,14 @@
import Cities from '../components/ui/Cities.vue'; import Cities from '../components/ui/Cities.vue';
import MakeProposalModal from '../components/MakeProposalModal.vue'; import MakeProposalModal from '../components/MakeProposalModal.vue';
import Pagination from '../components/Pagination.vue'; import Pagination from '../components/Pagination.vue';
const filterQuery = ref([]); const filterQuery = ref([]);
const query = ref(''); const query = ref('');
const selectedTruckType = ref([]); const selectedTruckType = ref([]);
const selectedCategory = ref([]); const selectedCategory = ref([]);
const selectedState = ref([]); const selectedState = ref([]);
const selectedCities = ref([]); const selectedCities = ref([]);
const limit = 3; const limit = 1;
const isSearch = ref(false); const isSearch = ref(false);
const { getLoadsPublished, loads, loading, currentPage, total } = useSearchLoads(); const { getLoadsPublished, loads, loading, currentPage, total } = useSearchLoads();
@@ -121,8 +122,8 @@
} }
const getInitData = async() => { const getInitData = async() => {
filterQuery.value.limit = '$limit=' + limit; filterQuery.value.limit = 'elements=' + limit;
filterQuery.value.skip = "$skip=0"; filterQuery.value.page = "page=0";
filterQuery.value.company = ""; filterQuery.value.company = "";
filterQuery.value.status = "status=Published", filterQuery.value.status = "status=Published",
@@ -131,20 +132,20 @@
const getLoadsByPage = (data) => { const getLoadsByPage = (data) => {
console.log(data); console.log(data);
filterQuery.value.skip = "$skip="+ data.skip; filterQuery.value.page = "page="+ data.page;
currentPage.value = data.page currentPage.value = data.page
getLoadsPublished(filterQuery.value); getLoadsPublished(filterQuery.value);
} }
const clearRequest = () => { const clearRequest = () => {
filterQuery.value.skip = "$skip="+ 0; filterQuery.value.page = "page="+ 0;
filterQuery.value.limit = "$limit="+ limit; filterQuery.value.limit = "elements="+ limit;
currentPage.value = 1; currentPage.value = 0;
} }
const setFilterUnlimited = () => { const setFilterUnlimited = () => {
filterQuery.value.skip = "$skip="+ 0; filterQuery.value.page = "page="+ 0;
filterQuery.value.limit = "$limit="+ 100; filterQuery.value.limit = "elements="+ 100;
} }
const currentLoad = ref(null); const currentLoad = ref(null);

View File

@@ -17,7 +17,7 @@
const selectedCities = ref([]); const selectedCities = ref([]);
const filterQuery = ref([]); const filterQuery = ref([]);
const limit = 3; const limit = 5;
onMounted(() => { onMounted(() => {
filterQuery.value.company_type = 'shipper'; filterQuery.value.company_type = 'shipper';
@@ -102,9 +102,9 @@
} }
const clearRequest = () => { const clearRequest = () => {
filterQuery.value.page = "page="+ 1; filterQuery.value.page = "page="+ 0;
filterQuery.value.limit = "elements="+ limit; filterQuery.value.limit = "elements="+ limit;
currentPage.value = 1; currentCompaniesPage.value = 0;
} }
const clearState = () => { const clearState = () => {

View File

@@ -37,6 +37,7 @@
isLoading.value = true; isLoading.value = true;
const filter = "?shipment_code[$in]=" + route.params['code']; const filter = "?shipment_code[$in]=" + route.params['code'];
const resp = await loadStore.getLoad(filter); const resp = await loadStore.getLoad(filter);
console.log(resp);
if(resp.total > 0) { if(resp.total > 0) {
load.value = resp.data[0]; load.value = resp.data[0];
originCoords.value = await geocodeAddress(load.value.origin_formatted_address); originCoords.value = await geocodeAddress(load.value.origin_formatted_address);

View File

@@ -12,7 +12,7 @@
const proposalCurrent = ref(null); const proposalCurrent = ref(null);
const openModal = ref(false); const openModal = ref(false);
const openModalProposal = ref(false); const openModalProposal = ref(false);
const limit = 3; const limit = 5;
onMounted(() =>{ onMounted(() =>{
getInitData(); getInitData();
@@ -20,15 +20,14 @@
const getInitData = async() => { const getInitData = async() => {
loading.value = true; loading.value = true;
const filter = '$limit=' + limit + "&$skip=0"; const filter = 'elements=' + limit + "&page=0";
await companyStore.getProposalsCompany(filter, false); await companyStore.getProposalsCompany(filter, false);
loading.value = false; loading.value = false;
} }
const getProposalsByPage = async(data) => { const getProposalsByPage = async(data) => {
console.log(data)
loading.value = true; loading.value = true;
const filter = '$limit=' + limit + "&$skip=" + data.skip; const filter = 'elements=' + limit + "&page=" + data.page;
companyStore.proposalsCurrentPage = data.page; companyStore.proposalsCurrentPage = data.page;
await companyStore.getProposalsCompany(filter, true); await companyStore.getProposalsCompany(filter, true);
loading.value = false; loading.value = false;

View File

@@ -5,8 +5,10 @@
import { useCompanyStore } from '../stores/company'; import { useCompanyStore } from '../stores/company';
import CreateUserModal from '../components/CreateUserModal.vue'; import CreateUserModal from '../components/CreateUserModal.vue';
import Pagination from '../components/Pagination.vue'; import Pagination from '../components/Pagination.vue';
import { useAuthStore } from '../stores/auth';
const companyStore = useCompanyStore(); const companyStore = useCompanyStore();
const authStore = useAuthStore();
onMounted(() => { onMounted(() => {
getInitData(); getInitData();
@@ -24,10 +26,9 @@
} }
const getUsersByPage = async(data) => { const getUsersByPage = async(data) => {
console.log(data)
loading.value = true; loading.value = true;
companyStore.usersCurrentPage = data.page companyStore.usersCurrentPage = data.page
await companyStore.getUsersCompany(limit, data.skip, true); await companyStore.getUsersCompany(limit, companyStore.usersCurrentPage, true);
loading.value = false; loading.value = false;
} }
@@ -55,6 +56,7 @@
<h2 class="title mb-4">Usuarios</h2> <h2 class="title mb-4">Usuarios</h2>
<div class="btn-row mb-4"> <div class="btn-row mb-4">
<button <button
v-if="authStore.user?.job_role === 'owner' || authStore.user?.job_role === 'manager'"
class="btn-primary-sm" class="btn-primary-sm"
data-toggle="modal" data-toggle="modal"
data-target="#userModal" data-target="#userModal"

View File

@@ -21,7 +21,7 @@
const editStatusVehicle = ref(false); const editStatusVehicle = ref(false);
const editDriverVehicle = ref(false); const editDriverVehicle = ref(false);
const limit = 2; const limit = 3;
onMounted(() => { onMounted(() => {
getInitData(); getInitData();
@@ -29,8 +29,8 @@
const getInitData = async() => { const getInitData = async() => {
loading.value = true; loading.value = true;
filterQuery.value.limit = '$limit=' + limit; filterQuery.value.limit = 'elements=' + limit;
filterQuery.value.skip = "$skip=0" filterQuery.value.page = "page=0"
filterQuery.value.company = "company="+ localStorage.getItem('id'); filterQuery.value.company = "company="+ localStorage.getItem('id');
await vehicleStore.fetchVehicles(filterQuery.value, false); await vehicleStore.fetchVehicles(filterQuery.value, false);
await companyStore.getDrivers(); await companyStore.getDrivers();
@@ -44,8 +44,8 @@
} }
watch(query, () => { watch(query, () => {
filterQuery.value.skip = "$skip="+ 0; filterQuery.value.page = "page="+ 0;
filterQuery.value.limit = "$limit="+ 100; filterQuery.value.limit = "elements="+ 100;
if(query.value.length === 0){ if(query.value.length === 0){
clearRequest() clearRequest()
filterQuery.value.search = ""; filterQuery.value.search = "";
@@ -75,9 +75,9 @@
} }
const clearRequest = () => { const clearRequest = () => {
filterQuery.value.skip = "$skip="+ 0; filterQuery.value.page = "page="+ 0;
filterQuery.value.limit = "$limit="+ limit; filterQuery.value.limit = "elements="+ limit;
vehicleStore.vehiclesCurrentPage = 1; vehicleStore.vehiclesCurrentPage = 0;
} }
const handleSetCurrentVehicle = (data) => { const handleSetCurrentVehicle = (data) => {
@@ -102,7 +102,7 @@
const getVehiclesByPage = async(data) => { const getVehiclesByPage = async(data) => {
loading.value = true; loading.value = true;
filterQuery.value.company = "company="+ localStorage.getItem('id'); filterQuery.value.company = "company="+ localStorage.getItem('id');
filterQuery.value.skip = "$skip="+ data.skip; filterQuery.value.page = "page="+ data.page;
vehicleStore.vehiclesCurrentPage = data.page vehicleStore.vehiclesCurrentPage = data.page
await vehicleStore.fetchVehicles(filterQuery.value, true); await vehicleStore.fetchVehicles(filterQuery.value, true);
loading.value = false; loading.value = false;