forked from verdnatura/salix-front
Add order catalog sort filter
This commit is contained in:
parent
fbd5abb330
commit
5c2b995659
|
@ -39,6 +39,14 @@ const orderList = [
|
||||||
{ way: 'DESC', name: 'Descendant' },
|
{ way: 'DESC', name: 'Descendant' },
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const selectedOrderField = ref(null);
|
||||||
|
const OrderFields = [
|
||||||
|
{ field: 'relevancy DESC, name', name: 'Relevancy', priority: 999 },
|
||||||
|
{ field: 'showOrder, price', name: 'Color and price', priority: 999 },
|
||||||
|
{ field: 'name', name: 'Name', priority: 999 },
|
||||||
|
{ field: 'price', name: 'Price', priority: 999 },
|
||||||
|
];
|
||||||
|
|
||||||
const clearFilter = (key) => {
|
const clearFilter = (key) => {
|
||||||
if (key === 'categoryFk') {
|
if (key === 'categoryFk') {
|
||||||
resetCategory();
|
resetCategory();
|
||||||
|
@ -73,8 +81,9 @@ const onFilterInit = async ({ params }) => {
|
||||||
selectedCategoryFk.value = params.categoryFk;
|
selectedCategoryFk.value = params.categoryFk;
|
||||||
}
|
}
|
||||||
if (params.orderBy) {
|
if (params.orderBy) {
|
||||||
selectedOrder.value = JSON.parse(params.orderBy).way;
|
|
||||||
orderByParam.value = JSON.parse(params.orderBy);
|
orderByParam.value = JSON.parse(params.orderBy);
|
||||||
|
selectedOrder.value = orderByParam.value?.way;
|
||||||
|
selectedOrderField.value = orderByParam.value?.field;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -101,7 +110,9 @@ function exprBuilder(param, value) {
|
||||||
const selectedTag = ref(null);
|
const selectedTag = ref(null);
|
||||||
const tagValues = ref([{}]);
|
const tagValues = ref([{}]);
|
||||||
const tagOptions = ref(null);
|
const tagOptions = ref(null);
|
||||||
const isButtonDisabled = computed(()=> !selectedTag.value || tagValues.value.some(item => !item.value))
|
const isButtonDisabled = computed(
|
||||||
|
() => !selectedTag.value || tagValues.value.some((item) => !item.value)
|
||||||
|
);
|
||||||
|
|
||||||
const applyTagFilter = (params, search) => {
|
const applyTagFilter = (params, search) => {
|
||||||
if (!tagValues.value?.length) {
|
if (!tagValues.value?.length) {
|
||||||
|
@ -124,7 +135,7 @@ const applyTagFilter = (params, search) => {
|
||||||
);
|
);
|
||||||
search();
|
search();
|
||||||
selectedTag.value = null;
|
selectedTag.value = null;
|
||||||
tagValues.value = [{}]
|
tagValues.value = [{}];
|
||||||
};
|
};
|
||||||
|
|
||||||
const removeTagChip = (selection, params, search) => {
|
const removeTagChip = (selection, params, search) => {
|
||||||
|
@ -138,6 +149,12 @@ const removeTagChip = (selection, params, search) => {
|
||||||
|
|
||||||
const orderByParam = ref(null);
|
const orderByParam = ref(null);
|
||||||
|
|
||||||
|
const onOrderFieldChange = (value, params, search) => {
|
||||||
|
const orderBy = Object.assign({}, orderByParam.value, { field: value.field });
|
||||||
|
params.orderBy = JSON.stringify(orderBy);
|
||||||
|
search();
|
||||||
|
};
|
||||||
|
|
||||||
const onOrderChange = (value, params, search) => {
|
const onOrderChange = (value, params, search) => {
|
||||||
const orderBy = Object.assign({}, orderByParam.value, { way: value.way });
|
const orderBy = Object.assign({}, orderByParam.value, { way: value.way });
|
||||||
params.orderBy = JSON.stringify(orderBy);
|
params.orderBy = JSON.stringify(orderBy);
|
||||||
|
@ -268,12 +285,33 @@ const getCategoryClass = (category, params) => {
|
||||||
rounded
|
rounded
|
||||||
:emit-value="false"
|
:emit-value="false"
|
||||||
use-input
|
use-input
|
||||||
|
:is-clearable="false"
|
||||||
@update:model-value="
|
@update:model-value="
|
||||||
(value) => onOrderChange(value, params, searchFn)
|
(value) => onOrderChange(value, params, searchFn)
|
||||||
"
|
"
|
||||||
/>
|
/>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
</QItem>
|
</QItem>
|
||||||
|
<QItem class="q-mb-md">
|
||||||
|
<QItemSection>
|
||||||
|
<VnSelectFilter
|
||||||
|
:label="t('params.order')"
|
||||||
|
v-model="selectedOrderField"
|
||||||
|
:options="OrderFields || []"
|
||||||
|
option-value="field"
|
||||||
|
option-label="name"
|
||||||
|
dense
|
||||||
|
outlined
|
||||||
|
rounded
|
||||||
|
:emit-value="false"
|
||||||
|
use-input
|
||||||
|
:is-clearable="false"
|
||||||
|
@update:model-value="
|
||||||
|
(value) => onOrderFieldChange(value, params, searchFn)
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
</QItemSection>
|
||||||
|
</QItem>
|
||||||
<QSeparator />
|
<QSeparator />
|
||||||
<QItem class="q-mt-md">
|
<QItem class="q-mt-md">
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
|
|
Loading…
Reference in New Issue