diff --git a/src/api/ADempiere/data.js b/src/api/ADempiere/data.js index ad1a397f..707a9afa 100644 --- a/src/api/ADempiere/data.js +++ b/src/api/ADempiere/data.js @@ -158,12 +158,14 @@ export function getLookup({ export function getLookupList({ tableName, query, + valuesList, pageToken, pageSize }) { return Instance.call(this).requestListLookupFromReference({ tableName, query, + valuesList, pageToken, pageSize }) diff --git a/src/components/ADempiere/Field/FieldSelect.vue b/src/components/ADempiere/Field/FieldSelect.vue index 8180a7d3..f5bb41ec 100644 --- a/src/components/ADempiere/Field/FieldSelect.vue +++ b/src/components/ADempiere/Field/FieldSelect.vue @@ -12,6 +12,8 @@ :allow-create="metadata.isSelectCreated" :collapse-tags="!isSelectMultiple" :disabled="isDisabled" + remote + :remote-method="getRemoteList" @change="preHandleChange" @visible-change="getDataLookupList" @clear="clearLookup" @@ -289,7 +291,6 @@ export default { directQuery: this.metadata.reference.directQuery, value: this.value }) - // set empty list and empty option this.changeBlankOption() const list = [] @@ -299,7 +300,26 @@ export default { // set empty value this.value = this.blankOption.key } - } + }, + getRemoteList(value) { + if (!isNaN(value)) { + value = parseInt(value, 10) + } + if (!this.isLoading && String(value.length > 2)) { + setTimeout(() => { + this.isLoading = true + this.$store.dispatch('getLookupListFromServer', { + parentUuid: this.metadata.parentUuid, + containerUuid: this.metadata.containerUuid, + tableName: this.metadata.reference.tableName, + query: this.metadata.reference.query, + valueToFilter: value + }) + .then(response => { + this.isLoading = false + }) + }, 250) + } } diff --git a/src/store/modules/ADempiere/lookup.js b/src/store/modules/ADempiere/lookup.js index 5abef39e..ffbff256 100644 --- a/src/store/modules/ADempiere/lookup.js +++ b/src/store/modules/ADempiere/lookup.js @@ -92,7 +92,8 @@ const lookup = { parentUuid, containerUuid, tableName, - query + query, + valueToFilter }) { if (isEmptyValue(query)) { return @@ -106,9 +107,15 @@ const lookup = { isBooleanToString: true }).value } + + const valuesList = [] + if (!isEmptyValue(valueToFilter)) { + valuesList.push(valueToFilter) + } return getLookupList({ tableName, - query: parsedQuery + query: parsedQuery, + valuesList }) .then(lookupListResponse => { const list = []