Merge branch 'migrate-alex' into 'master'

Migrate alex

See merge request jcruzbaasworkspace/enruta/webeta!9
This commit is contained in:
Josepablo Cruz Baas
2024-04-06 20:25:01 +00:00
5 changed files with 73 additions and 37 deletions

View File

@@ -62,7 +62,7 @@ import { useAuthStore } from '../stores/auth';
<div class="card-fixed card-vehicle"> <div class="card-fixed card-vehicle">
<div class="row my-2"> <div class="row my-2">
<div class="col-lg-6"> <div class="col-lg-6">
<p>Código: <span>{{ vehicle.vehicle_code }}</span></p> <p>Código: <span>{{ vehicle?.vehicle_code }}</span></p>
<p>Tipo de transporte: <span>{{ vehicle.truck_type }}</span></p> <p>Tipo de transporte: <span>{{ vehicle.truck_type }}</span></p>
<p>Número de Serie: <span>{{ vehicle.vehicle_number }}</span></p> <p>Número de Serie: <span>{{ vehicle.vehicle_number }}</span></p>
<p>Segmento: <span>{{vehicle.categories?.map((e) => e.name).join(', ')}}</span></p> <p>Segmento: <span>{{vehicle.categories?.map((e) => e.name).join(', ')}}</span></p>

View File

@@ -24,19 +24,19 @@ import { useNotificationsStore } from '../stores/notifications';
<RouterLink <RouterLink
v-if="auth.user?.permissions === 'role_shipper'" v-if="auth.user?.permissions === 'role_shipper'"
active-class="router-link-active" active-class="router-link-active"
class="nav-link" :to="{name: 'carriers'}"><i class="fa-solid fa-truck me-1"></i> Transportistas</RouterLink> class="nav-link" :to="{name: 'carriers'}"><i class="fa-solid fa-truck me-1"></i> <span class="clear-xsm">Transportistas</span></RouterLink>
<RouterLink <RouterLink
v-if="auth.user?.permissions === 'role_carrier'" v-if="auth.user?.permissions === 'role_carrier'"
active-class="router-link-active" active-class="router-link-active"
class="nav-link" :to="{name: 'search-loads'}"> <i class="fa-solid fa-truck-ramp-box me-1"></i> Cargas</RouterLink> class="nav-link" :to="{name: 'search-loads'}"> <i class="fa-solid fa-truck-ramp-box me-1"></i> <span class="clear-xsm">Cargas</span></RouterLink>
<RouterLink <RouterLink
v-if="auth.user?.permissions === 'role_carrier'" v-if="auth.user?.permissions === 'role_carrier'"
active-class="router-link-active" active-class="router-link-active"
class="nav-link" :to="{name: 'shippers'}"><i class="fa-solid fa-book me-1"></i> Embarcadores</RouterLink> class="nav-link" :to="{name: 'shippers'}"><i class="fa-solid fa-book me-1"></i> <span class="clear-xsm">Embarcadores</span></RouterLink>
<a <a
active-class="router-link-active" active-class="router-link-active"
@click="noty.toggleProfile" @click="noty.toggleProfile"
class="nav-link"><i class="fa-solid fa-user me-1"></i> {{ auth?.user?.first_name }}</a> class="nav-link"><i class="fa-solid fa-user me-1"></i> <span class="clear-xsm">{{ auth?.user?.first_name }}</span></a>
</div> </div>
</div> </div>
</nav> </nav>

View File

@@ -195,7 +195,7 @@
} }
.company-name { .company-name {
font-size: 2rem; font-size: 1.5rem;
font-weight: 900; font-weight: 900;
} }

View File

@@ -1,13 +1,16 @@
<script setup> <script setup>
import { onMounted, reactive, ref } from 'vue'; import { onMounted, reactive, ref, watch } from 'vue';
import { useAuthStore } from '../stores/auth'; import { useAuthStore } from '../stores/auth';
import Spiner from '../components/ui/Spiner.vue'; import Spiner from '../components/ui/Spiner.vue';
import CustomInput from '../components/ui/CustomInput.vue'; import CustomInput from '../components/ui/CustomInput.vue';
import { storeToRefs } from 'pinia';
const auth = useAuthStore(); const auth = useAuthStore();
const { user } = storeToRefs(auth);
const loading = ref(false) const loading = ref(false)
const user = reactive({ const userForm = reactive({
name: '', name: '',
lastName: '', lastName: '',
phone1: '', phone1: '',
@@ -19,79 +22,108 @@
}) })
onMounted(() => { onMounted(() => {
user.name = auth.user?.first_name if(user.value) {
user.lastName = auth.user?.last_name getData()
user.phone1 = auth.user?.phone }
user.phone2 = auth.user?.phone2
}) })
watch(user, async() => {
if(user.value) {
getData()
}
});
const getData = () => {
userForm.name = user.value?.first_name
userForm.lastName = user.value?.last_name
userForm.phone1 = user.value?.phone
userForm.phone2 = user.value?.phone2
}
const handleSave = () => { const handleSave = () => {
} }
</script> </script>
<template> <template>
<!-- <div class="profile"> -->
<div class="form-content"> <form @submit.prevent="handleSave" autocomplete="off" method="post" ref="formRef" class="form-content">
<form @submit.prevent="handleSave" autocomplete="off" method="post" ref="formRef">
<CustomInput <CustomInput
label="Nombres(s):" label="Nombres(s):"
type="text" type="text"
name="name" name="name"
:filled="false" :filled="false"
v-model:field="user.name" v-model:field="userForm.name"
/> />
<CustomInput <CustomInput
label="Apellidos(s):" label="Apellidos(s):"
type="text" type="text"
name="lastname" name="lastname"
:filled="false" :filled="false"
v-model:field="user.lastName" v-model:field="userForm.lastName"
/> />
<div class="content-phone"> <div class="content-phone">
<div class="phone">
<CustomInput <CustomInput
label="Teléfono 1: *" label="Teléfono 1: *"
type="number" type="number"
name="phone1" name="phone1"
:step="1" :step="1"
:filled="false" :filled="false"
v-model:field="user.phone1" v-model:field="userForm.phone1"
/> />
</div>
<div class="phone">
<CustomInput <CustomInput
label="Teléfono 2:" label="Teléfono 2:"
type="number" type="number"
name="phone2" name="phone2"
:step="1" :step="1"
:filled="false" :filled="false"
v-model:field="user.phone2" v-model:field="userForm.phone2"
/> />
</div> </div>
</div>
<div class="mt-4 text-center"> <div class="mt-4 text-center">
<Spiner v-if="loading"/> <Spiner v-if="loading"/>
<button <button
v-else v-else
class="btn btn-dark" type="submit">Guardar</button> class="btn btn-dark btn-block" type="submit">Guardar</button>
</div> </div>
</form> </form>
</div> <!-- </div> -->
</template> </template>
<style scoped> <style scoped>
/* .profile {
margin: 0 auto;
} */
.form-content { .form-content {
margin: 24px 100px; max-width: 768px;
/* width: 768px; */
margin: 0 auto;
background-color: #FFF; background-color: #FFF;
padding: 32px 32px; padding: 32px 32px;
border-radius: 13px; border-radius: 13px;
} }
.content-phone{ .content-phone{
width: 100%;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: space-between; justify-content: space-between;
/* gap: 5rem; */ /* gap: 5rem; */
} }
.phone {
width: 45%;
}
.btn-block {
width: 80%;
}
@media (max-width: 1024px) { @media (max-width: 1024px) {
.form-content { .form-content {
margin: 24px 16px; margin: 24px 16px;
@@ -109,6 +141,10 @@
border-radius: 13px; border-radius: 13px;
} }
.phone {
width: 100%;
}
.content-phone{ .content-phone{
display: flex; display: flex;
flex-direction: column; flex-direction: column;

View File

@@ -12,7 +12,7 @@
const auth = useAuthStore(); const auth = useAuthStore();
const { checking, user } = storeToRefs(auth); const { user } = storeToRefs(auth);
const loads = useLoadsStore(); const loads = useLoadsStore();
const loading = ref(false); const loading = ref(false);
const loadsData = ref([]); const loadsData = ref([]);