diff --git a/src/components/common/VnSection.vue b/src/components/common/VnSection.vue
index 510865530..16ea79047 100644
--- a/src/components/common/VnSection.vue
+++ b/src/components/common/VnSection.vue
@@ -52,7 +52,8 @@ const sectionValue = computed(() => $props.section ?? $props.dataKey);
const isMainSection = computed(() => {
const isSame = sectionValue.value == route.name;
if (!isSame && arrayData) {
- arrayData.reset(['userParams', 'userFilter']);
+ arrayData.reset(['userParams', 'filter']);
+ arrayData.setCurrentFilter();
}
return isSame;
});
diff --git a/src/components/common/VnSelect.vue b/src/components/common/VnSelect.vue
index a3e85655d..43134dbff 100644
--- a/src/components/common/VnSelect.vue
+++ b/src/components/common/VnSelect.vue
@@ -232,12 +232,15 @@ async function fetchFilter(val) {
} else defaultWhere = { [key]: getVal(val) };
const where = { ...(val ? defaultWhere : {}), ...$props.where };
$props.exprBuilder && Object.assign(where, $props.exprBuilder(key, val));
- const fetchOptions = { where, include, limit };
- if (fields) fetchOptions.fields = fields;
- if (sortBy) fetchOptions.order = sortBy;
+ const filterOptions = { where, include, limit };
+ if (fields) filterOptions.fields = fields;
+ if (sortBy) filterOptions.order = sortBy;
arrayData.resetPagination();
- const { data } = await arrayData.applyFilter({ filter: fetchOptions });
+ const { data } = await arrayData.applyFilter(
+ { filter: filterOptions },
+ { updateRouter: false }
+ );
setOptions(data);
return data;
}
diff --git a/src/components/ui/VnSearchbar.vue b/src/components/ui/VnSearchbar.vue
index bfaa76588..a5ca97b70 100644
--- a/src/components/ui/VnSearchbar.vue
+++ b/src/components/ui/VnSearchbar.vue
@@ -113,23 +113,20 @@ onMounted(() => {
});
async function search() {
- const staticParams = Object.keys(store.userParams ?? {}).length
- ? store.userParams
- : store.defaultParams;
arrayData.resetPagination();
- const filter = {
- params: {
- search: searchText.value,
- },
- filter: props.filter,
- };
+ let filter = { params: { search: searchText.value } };
if (!props.searchRemoveParams || !searchText.value) {
- filter.params = {
- ...staticParams,
- search: searchText.value,
+ filter = {
+ params: {
+ ...store.userParams,
+ search: searchText.value,
+ },
+ filter: store.filter,
};
+ } else {
+ arrayData.reset(['currentFilter', 'userParams']);
}
if (props.whereFilter) {
diff --git a/src/composables/useArrayData.js b/src/composables/useArrayData.js
index 6fb22a340..d76053ce9 100644
--- a/src/composables/useArrayData.js
+++ b/src/composables/useArrayData.js
@@ -33,10 +33,11 @@ export function useArrayData(key, userOptions) {
: JSON.parse(params?.filter ?? '{}');
delete params.filter;
- store.userParams = { ...store.userParams, ...params };
+ store.userParams = params;
store.filter = { ...filter, ...store.userFilter };
if (filter?.order) store.order = filter.order;
}
+ setCurrentFilter();
});
if (key && userOptions) setOptions();
@@ -78,11 +79,7 @@ export function useArrayData(key, userOptions) {
cancelRequest();
canceller = new AbortController();
- const { params, limit } = getCurrentFilter();
-
- store.currentFilter = JSON.parse(JSON.stringify(params));
- delete store.currentFilter.filter.include;
- store.currentFilter.filter = JSON.stringify(store.currentFilter.filter);
+ const { params, limit } = setCurrentFilter();
let exprFilter;
if (store?.exprBuilder) {
@@ -107,7 +104,7 @@ export function useArrayData(key, userOptions) {
store.hasMoreData = limit && response.data.length >= limit;
if (!append && !isDialogOpened() && updateRouter) {
- if (updateStateParams(response.data)?.redirect) return;
+ if (updateStateParams(response.data)?.redirect && !store.keepData) return;
}
store.isLoading = false;
canceller = null;
@@ -142,12 +139,12 @@ export function useArrayData(key, userOptions) {
}
}
- async function applyFilter({ filter, params }) {
+ async function applyFilter({ filter, params }, fetchOptions = {}) {
if (filter) store.userFilter = filter;
store.filter = {};
if (params) store.userParams = { ...params };
- const response = await fetch({});
+ const response = await fetch(fetchOptions);
return response;
}
@@ -276,14 +273,14 @@ export function useArrayData(key, userOptions) {
}
function getCurrentFilter() {
+ if (!Object.keys(store.userParams).length)
+ store.userParams = store.defaultParams ?? {};
+
const filter = {
limit: store.limit,
+ ...store.userFilter,
};
- let userParams = { ...store.userParams };
-
- Object.assign(filter, store.userFilter);
-
let where;
if (filter?.where || store.filter?.where)
where = Object.assign(filter?.where ?? {}, store.filter?.where ?? {});
@@ -291,7 +288,7 @@ export function useArrayData(key, userOptions) {
filter.where = where;
const params = { filter };
- Object.assign(params, userParams);
+ Object.assign(params, store.userParams);
if (params.filter) params.filter.skip = store.skip;
if (store?.order && typeof store?.order == 'string') store.order = [store.order];
if (store.order?.length) params.filter.order = [...store.order];
@@ -300,6 +297,14 @@ export function useArrayData(key, userOptions) {
return { filter, params, limit: filter.limit };
}
+ function setCurrentFilter() {
+ const { params, limit } = getCurrentFilter();
+ store.currentFilter = JSON.parse(JSON.stringify(params));
+ delete store.currentFilter.filter.include;
+ store.currentFilter.filter = JSON.stringify(store.currentFilter.filter);
+ return { params, limit };
+ }
+
function processData(data, { map = true, append = true }) {
if (!append) {
store.data = [];
@@ -333,6 +338,7 @@ export function useArrayData(key, userOptions) {
applyFilter,
addFilter,
getCurrentFilter,
+ setCurrentFilter,
addFilterWhere,
addOrder,
deleteOrder,
diff --git a/src/composables/useFilterParams.js b/src/composables/useFilterParams.js
index 2878e4b76..07dcdf99b 100644
--- a/src/composables/useFilterParams.js
+++ b/src/composables/useFilterParams.js
@@ -29,8 +29,12 @@ export function useFilterParams(key) {
orders.value = orderObject;
}
- function setUserParams(watchedParams) {
- if (!watchedParams || Object.keys(watchedParams).length == 0) return;
+ function setUserParams(watchedParams = {}) {
+ if (Object.keys(watchedParams).length == 0) {
+ params.value = {};
+ orders.value = {};
+ return;
+ }
if (typeof watchedParams == 'string') watchedParams = JSON.parse(watchedParams);
if (typeof watchedParams?.filter == 'string')
diff --git a/src/pages/InvoiceIn/Card/InvoiceInDescriptor.vue b/src/pages/InvoiceIn/Card/InvoiceInDescriptor.vue
index 4d9e180eb..9fa3bcbcb 100644
--- a/src/pages/InvoiceIn/Card/InvoiceInDescriptor.vue
+++ b/src/pages/InvoiceIn/Card/InvoiceInDescriptor.vue
@@ -6,24 +6,16 @@ import axios from 'axios';
import { toCurrency, toDate } from 'src/filters';
import VnLv from 'src/components/ui/VnLv.vue';
import CardDescriptor from 'components/ui/CardDescriptor.vue';
-import FetchData from 'src/components/FetchData.vue';
-import VnSelect from 'src/components/common/VnSelect.vue';
-import { useCapitalize } from 'src/composables/useCapitalize';
import SupplierDescriptorProxy from 'src/pages/Supplier/Card/SupplierDescriptorProxy.vue';
import InvoiceInDescriptorMenu from './InvoiceInDescriptorMenu.vue';
const $props = defineProps({ id: { type: Number, default: null } });
-const { push, currentRoute } = useRouter();
+const { currentRoute } = useRouter();
const { t } = useI18n();
const cardDescriptorRef = ref();
-const correctionDialogRef = ref();
const entityId = computed(() => $props.id || +currentRoute.value.params.id);
const totalAmount = ref();
-const config = ref();
-const cplusRectificationTypes = ref([]);
-const siiTypeInvoiceIns = ref([]);
-const invoiceCorrectionTypes = ref([]);
const filter = {
include: [
@@ -85,12 +77,6 @@ const routes = reactive({
return { name: 'EntryCard', params: { id } };
},
});
-const correctionFormData = reactive({
- invoiceReason: 2,
- invoiceType: 2,
- invoiceClass: 6,
-});
-const isNotFilled = computed(() => Object.values(correctionFormData).includes(null));
onBeforeMount(async () => {
await setInvoiceCorrection(entityId.value);
@@ -122,38 +108,8 @@ async function setInvoiceCorrection(id) {
(corrected) => corrected.correctingFk
);
}
-
-const createInvoiceInCorrection = async () => {
- const { data: correctingId } = await axios.post(
- 'InvoiceIns/corrective',
- Object.assign(correctionFormData, { id: entityId.value })
- );
- push({ path: `/invoice-in/${correctingId}/summary` });
-};
- (config = data)"
- />
- (cplusRectificationTypes = data)"
- auto-load
- />
- (siiTypeInvoiceIns = data)"
- auto-load
- />
- (invoiceCorrectionTypes = data)"
- auto-load
- />
{
-
+
@@ -227,65 +186,6 @@ const createInvoiceInCorrection = async () => {
-
-
-
-
-
- {{ t('Create rectificative invoice') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-