Merge branch 'migrate-alex' into 'master'
Fix web page due to recent changes in the API v1 See merge request jcruzbaasworkspace/enruta/webeta!4
This commit is contained in:
@@ -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"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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,14 +95,14 @@
|
|||||||
<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"
|
||||||
data-target="#userModal"
|
data-target="#userModal"
|
||||||
@click="$emit('set-user')"
|
@click="$emit('set-user')"
|
||||||
><i class="fa-solid fa-pen-to-square"></i> Editar</button>
|
><i class="fa-solid fa-pen-to-square"></i> Editar</button>
|
||||||
<button
|
<button
|
||||||
class="btn btn-dark radius-sm"
|
class="btn btn-dark radius-sm"
|
||||||
@click="handleDelete"
|
@click="handleDelete"
|
||||||
><i class="fa-solid fa-trash"></i> Eliminar</button>
|
><i class="fa-solid fa-trash"></i> Eliminar</button>
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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) => {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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'),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 = () => {
|
||||||
|
|||||||
@@ -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) => {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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 = () => {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user