add: pagination to loads public & calculator
This commit is contained in:
@@ -78,10 +78,14 @@ import { onMounted, ref } from 'vue';
|
|||||||
background-color: #dab977;
|
background-color: #dab977;
|
||||||
color: #323030;
|
color: #323030;
|
||||||
margin: 4px;
|
margin: 4px;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
.page-active {
|
.page-active {
|
||||||
width: 33px;
|
width: 33px;
|
||||||
height: 33px;
|
height: 33px;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
font-weight: 700;
|
||||||
background-color: #FBBA33;
|
background-color: #FBBA33;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -4,6 +4,8 @@ import api from "../lib/axios";
|
|||||||
export default function useSearchLoads() {
|
export default function useSearchLoads() {
|
||||||
const loads = ref([]);
|
const loads = ref([]);
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
|
const total = ref(0);
|
||||||
|
const currentPage = ref(1);
|
||||||
|
|
||||||
const getLoadsPublished = async(filterQuery) => {
|
const getLoadsPublished = async(filterQuery) => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
@@ -14,12 +16,14 @@ export default function useSearchLoads() {
|
|||||||
filterStr = "?"+cleanfilterArr.join("&");
|
filterStr = "?"+cleanfilterArr.join("&");
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const endpoint = `/loads/${filterStr}`;
|
const endpoint = `/loads/${filterStr}&$sort%5BcreatedAt%5D=-1`;
|
||||||
const {data} = await api.get(endpoint);
|
const {data} = await api.get(endpoint);
|
||||||
console.log(data);
|
console.log(data);
|
||||||
|
total.value = data.total;
|
||||||
loads.value = data.data;
|
loads.value = data.data;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
loads.value = [];
|
loads.value = [];
|
||||||
|
total.value = 0;
|
||||||
console.log(error);
|
console.log(error);
|
||||||
}
|
}
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
@@ -28,6 +32,8 @@ export default function useSearchLoads() {
|
|||||||
return {
|
return {
|
||||||
getLoadsPublished,
|
getLoadsPublished,
|
||||||
loading,
|
loading,
|
||||||
loads
|
loads,
|
||||||
|
total,
|
||||||
|
currentPage,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -390,6 +390,8 @@ export const useCompanyStore = defineStore('company', () => {
|
|||||||
updateLocationCompany,
|
updateLocationCompany,
|
||||||
deleteLocationCompany,
|
deleteLocationCompany,
|
||||||
budgets,
|
budgets,
|
||||||
|
budgetsCurrentPage,
|
||||||
|
budgetsTotal,
|
||||||
users,
|
users,
|
||||||
drivers,
|
drivers,
|
||||||
usersTotal,
|
usersTotal,
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
import CardBudget from '../components/CardBudget.vue';
|
import CardBudget from '../components/CardBudget.vue';
|
||||||
import CardEmpty from '../components/CardEmpty.vue';
|
import CardEmpty from '../components/CardEmpty.vue';
|
||||||
import CreateBudgetModal from '../components/CreateBudgetModal.vue';
|
import CreateBudgetModal from '../components/CreateBudgetModal.vue';
|
||||||
|
import Pagination from '../components/pagination.vue';
|
||||||
|
|
||||||
const companyStore = useCompanyStore();
|
const companyStore = useCompanyStore();
|
||||||
const authStore = useAuthStore();
|
const authStore = useAuthStore();
|
||||||
@@ -16,6 +17,7 @@
|
|||||||
const currentBudget = ref(null);
|
const currentBudget = ref(null);
|
||||||
const openModal = ref(false);
|
const openModal = ref(false);
|
||||||
const printOpen = ref(false);
|
const printOpen = ref(false);
|
||||||
|
const limit = 2;
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getInitData();
|
getInitData();
|
||||||
@@ -23,6 +25,8 @@
|
|||||||
|
|
||||||
const getInitData = async() => {
|
const getInitData = async() => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
|
filterQuery.value.limit = '$limit=' + limit;
|
||||||
|
filterQuery.value.skip = "$skip=0"
|
||||||
filterQuery.value.company = "company="+ localStorage.getItem('id');
|
filterQuery.value.company = "company="+ localStorage.getItem('id');
|
||||||
await companyStore.getBudgetsCompany(filterQuery.value, false)
|
await companyStore.getBudgetsCompany(filterQuery.value, false)
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
@@ -35,7 +39,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
watch(query, () => {
|
watch(query, () => {
|
||||||
|
filterQuery.value.skip = "$skip="+ 0;
|
||||||
|
filterQuery.value.limit = "$limit="+ 100;
|
||||||
if(query.value.length === 0){
|
if(query.value.length === 0){
|
||||||
|
clearRequest();
|
||||||
filterQuery.value.search = "";
|
filterQuery.value.search = "";
|
||||||
getBudgetsWithFilters(filterQuery.value);
|
getBudgetsWithFilters(filterQuery.value);
|
||||||
}
|
}
|
||||||
@@ -50,7 +57,15 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getBudgetsByPage = async(data) => {
|
||||||
|
loading.value = true;
|
||||||
|
filterQuery.value.skip = "$skip="+ data.skip;
|
||||||
|
companyStore.budgetsCurrentPage = data.page
|
||||||
|
await getBudgetsWithFilters(filterQuery.value)
|
||||||
|
}
|
||||||
|
|
||||||
const clearFilter = () => {
|
const clearFilter = () => {
|
||||||
|
clearRequest();
|
||||||
filterQuery.value.search = "";
|
filterQuery.value.search = "";
|
||||||
filterQuery.value.company = "company="+ localStorage.getItem('id');
|
filterQuery.value.company = "company="+ localStorage.getItem('id');
|
||||||
|
|
||||||
@@ -61,6 +76,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const clearRequest = () => {
|
||||||
|
filterQuery.value.skip = "$skip="+ 0;
|
||||||
|
filterQuery.value.limit = "$limit="+ limit;
|
||||||
|
companyStore.budgetsCurrentPage = 1;
|
||||||
|
}
|
||||||
|
|
||||||
const handleSetCurrentBudget = (data) => {
|
const handleSetCurrentBudget = (data) => {
|
||||||
openModal.value = true;
|
openModal.value = true;
|
||||||
currentBudget.value = data.budget;
|
currentBudget.value = data.budget;
|
||||||
@@ -114,6 +135,12 @@
|
|||||||
v-else
|
v-else
|
||||||
text="No hay presupuestos agregados"
|
text="No hay presupuestos agregados"
|
||||||
/>
|
/>
|
||||||
|
<Pagination
|
||||||
|
:limit="limit"
|
||||||
|
:current-page="companyStore.budgetsCurrentPage"
|
||||||
|
:total="companyStore.budgetsTotal"
|
||||||
|
@get-elements="getBudgetsByPage"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -9,21 +9,30 @@
|
|||||||
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 MakeProposalModal from '../components/MakeProposalModal.vue';
|
import MakeProposalModal from '../components/MakeProposalModal.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 { getLoadsPublished, loads, loading } = useSearchLoads();
|
const isSearch = ref(false);
|
||||||
|
const { getLoadsPublished, loads, loading, currentPage, total } = useSearchLoads();
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getInitData();
|
getInitData();
|
||||||
});
|
});
|
||||||
|
|
||||||
watch(query, () => {
|
watch(query, () => {
|
||||||
|
isSearch.value = true;
|
||||||
|
setFilterUnlimited();
|
||||||
if(query.value.length === 0){
|
if(query.value.length === 0){
|
||||||
|
if(selectedCategory.value?.length === 0 && selectedTruckType.value?.length === 0 && selectedCities.value?.length === 0 && selectedState.value?.length === 0 ) {
|
||||||
|
console.log('here');
|
||||||
|
clearRequest();
|
||||||
|
isSearch.value = false;
|
||||||
|
}
|
||||||
filterQuery.value.search = "";
|
filterQuery.value.search = "";
|
||||||
getLoadsPublished(filterQuery.value);
|
getLoadsPublished(filterQuery.value);
|
||||||
}
|
}
|
||||||
@@ -31,6 +40,7 @@
|
|||||||
|
|
||||||
watch(selectedState, () => {
|
watch(selectedState, () => {
|
||||||
if(selectedState.value != null){
|
if(selectedState.value != null){
|
||||||
|
setFilterUnlimited()
|
||||||
filterQuery.value.state = "origin.state[$in][]="+ selectedState.value.state_name;
|
filterQuery.value.state = "origin.state[$in][]="+ selectedState.value.state_name;
|
||||||
getLoadsPublished(filterQuery.value);
|
getLoadsPublished(filterQuery.value);
|
||||||
}
|
}
|
||||||
@@ -38,6 +48,7 @@
|
|||||||
|
|
||||||
watch(selectedCities, () => {
|
watch(selectedCities, () => {
|
||||||
if(selectedCities.value != null){
|
if(selectedCities.value != null){
|
||||||
|
setFilterUnlimited()
|
||||||
filterQuery.value.city = "origin.city[$regex]="+ selectedCities.value.city_name;
|
filterQuery.value.city = "origin.city[$regex]="+ selectedCities.value.city_name;
|
||||||
getLoadsPublished(filterQuery.value);
|
getLoadsPublished(filterQuery.value);
|
||||||
}
|
}
|
||||||
@@ -45,6 +56,7 @@
|
|||||||
|
|
||||||
watch(selectedCategory, () => {
|
watch(selectedCategory, () => {
|
||||||
if(selectedCategory.value != null){
|
if(selectedCategory.value != null){
|
||||||
|
setFilterUnlimited()
|
||||||
filterQuery.value.category = "categories[$in][]=" + selectedCategory.value._id;
|
filterQuery.value.category = "categories[$in][]=" + selectedCategory.value._id;
|
||||||
getLoadsPublished(filterQuery.value);
|
getLoadsPublished(filterQuery.value);
|
||||||
}
|
}
|
||||||
@@ -52,6 +64,7 @@
|
|||||||
|
|
||||||
watch(selectedTruckType, () => {
|
watch(selectedTruckType, () => {
|
||||||
if(selectedTruckType.value != null){
|
if(selectedTruckType.value != null){
|
||||||
|
setFilterUnlimited()
|
||||||
filterQuery.value.truck_type = "truck_type[$in][]="+ selectedTruckType.value.meta_value;
|
filterQuery.value.truck_type = "truck_type[$in][]="+ selectedTruckType.value.meta_value;
|
||||||
getLoadsPublished(filterQuery.value);
|
getLoadsPublished(filterQuery.value);
|
||||||
}
|
}
|
||||||
@@ -67,7 +80,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
const clearFilter = () => {
|
const clearFilter = () => {
|
||||||
|
clearRequest();
|
||||||
|
isSearch.value = false;
|
||||||
selectedCities.value = null;
|
selectedCities.value = null;
|
||||||
selectedCategory.value = null;
|
selectedCategory.value = null;
|
||||||
selectedState.value = null;
|
selectedState.value = null;
|
||||||
@@ -108,13 +122,32 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
const getInitData = async() => {
|
const getInitData = async() => {
|
||||||
filterQuery.value.limit = "";
|
filterQuery.value.limit = '$limit=' + limit;
|
||||||
filterQuery.value.company = "",
|
filterQuery.value.skip = "$skip=0";
|
||||||
|
filterQuery.value.company = "";
|
||||||
|
|
||||||
filterQuery.value.status = "status=Published",
|
filterQuery.value.status = "status=Published",
|
||||||
await getLoadsPublished(filterQuery.value);
|
await getLoadsPublished(filterQuery.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getLoadsByPage = (data) => {
|
||||||
|
console.log(data);
|
||||||
|
filterQuery.value.skip = "$skip="+ data.skip;
|
||||||
|
currentPage.value = data.page
|
||||||
|
getLoadsPublished(filterQuery.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
const clearRequest = () => {
|
||||||
|
filterQuery.value.skip = "$skip="+ 0;
|
||||||
|
filterQuery.value.limit = "$limit="+ limit;
|
||||||
|
currentPage.value = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
const setFilterUnlimited = () => {
|
||||||
|
filterQuery.value.skip = "$skip="+ 0;
|
||||||
|
filterQuery.value.limit = "$limit="+ 100;
|
||||||
|
}
|
||||||
|
|
||||||
const currentLoad = ref(null);
|
const currentLoad = ref(null);
|
||||||
|
|
||||||
const handleSetCurrentLoad = (load) => {
|
const handleSetCurrentLoad = (load) => {
|
||||||
@@ -175,6 +208,13 @@
|
|||||||
v-else
|
v-else
|
||||||
text="No hay cargas publicadas"
|
text="No hay cargas publicadas"
|
||||||
/>
|
/>
|
||||||
|
<Pagination
|
||||||
|
v-if="!isSearch"
|
||||||
|
:limit="limit"
|
||||||
|
:total="total"
|
||||||
|
:current-page="currentPage"
|
||||||
|
@get-elements="getLoadsByPage"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user