diff --git a/src/pages/Order/Card/OrderCatalogFilter.vue b/src/pages/Order/Card/OrderCatalogFilter.vue index 887cb6740..e9987d363 100644 --- a/src/pages/Order/Card/OrderCatalogFilter.vue +++ b/src/pages/Order/Card/OrderCatalogFilter.vue @@ -32,14 +32,22 @@ const categoryList = ref(null); const selectedCategoryFk = ref(getParamWhere(route, 'categoryFk')); const typeList = ref([]); const selectedTypeFk = ref(null); -const validationsStore = useValidator(); -const selectedOrder = ref(null); -const selectedOrderField = ref(null); -const moreFields = ref([]); -const moreFieldsOrder = ref([]); const selectedTag = ref(null); const tagValues = ref([{}]); const tagOptions = ref([]); +const vnFilterPanelRef = ref(); +const orderByList = ref([ + { id: 'relevancy DESC, name', name: t('params.relevancy'), priority: 999 }, + { id: 'showOrder, price', name: t('params.colorAndPrice'), priority: 999 }, + { id: 'name', name: t('params.name'), priority: 999 }, + { id: 'price', name: t('params.price'), priority: 999 }, +]); +const orderWayList = ref([ + { id: 'ASC', name: t('params.ASC') }, + { id: 'DESC', name: t('params.DESC') }, +]); +const orderBySelected = ref('relevancy DESC, name'); +const orderWaySelected = ref('ASC'); const createValue = (val, done) => { if (val.length > 2) { @@ -140,35 +148,6 @@ const removeTagChip = (selection, params, search) => { search(); }; -const onOrderChange = (value, params) => { - const tagObj = JSON.parse(params.orderBy); - tagObj.way = value.name; - params.orderBy = JSON.stringify(tagObj); -}; - -const onOrderFieldChange = (value, params) => { - const tagObj = JSON.parse(params.orderBy); - switch (value) { - case 'Relevancy': - tagObj.name = value + ' DESC, name'; - params.orderBy = JSON.stringify(tagObj); - break; - case 'ColorAndPrice': - tagObj.name = 'showOrder, price'; - params.orderBy = JSON.stringify(tagObj); - break; - case 'Name': - tagObj.name = 'name'; - params.orderBy = JSON.stringify(tagObj); - break; - case 'Price': - tagObj.name = 'price'; - params.orderBy = JSON.stringify(tagObj); - break; - } -}; -const _moreFields = ['ASC', 'DESC']; -const _moreFieldsTypes = ['Relevancy', 'ColorAndPrice', 'Name', 'Price']; const setCategoryList = (data) => { categoryList.value = (data || []) .filter((category) => category.display) @@ -176,8 +155,6 @@ const setCategoryList = (data) => { ...category, icon: `vn:${(category.icon || '').split('-')[1]}`, })); - moreFields.value = useLang(_moreFields); - moreFieldsOrder.value = useLang(_moreFieldsTypes); selectedCategoryFk.value && loadTypes(); }; @@ -188,24 +165,19 @@ const getCategoryClass = (category, params) => { } }; -const useLang = (values) => { - const { models } = validationsStore; - const properties = models.Item?.properties || {}; - return values.map((name) => { - let prop = properties[name]; - const label = t(`params.${name}`); - return { - name, - label, - type: prop ? prop.type : null, - }; - }); -}; +function addOrder(value, field, params) { + let { orderBy } = params; + orderBy = JSON.parse(orderBy); + orderBy[field] = value; + params.orderBy = JSON.stringify(orderBy); + vnFilterPanelRef.value.search(); +}