mirror of
https://github.com/PanJiaChen/vue-element-admin.git
synced 2025-08-16 08:55:42 +08:00
* Separate Services - Dictionary: dictionary - Common request: common - ADempiere Generic API:common/api - Dashboard Content: dashboard - Dashboard favorites: dashboard/addons/user - Dashboard Pending Documents: dashboard/addons/tasks - User Management: user - User enrollment: user/enrollment - User Log: user/log - Workflow metadata: workflow - User Interface Common logic: user-interface/common - User Interface Window tools: user-interface/window - User Interface Smart Browser tools: user-interface/smart-browser - User Interface Process tools: user-interface/process - User Interface Attachment Management: user-interface/component/attachment - User Interface Components Preference: user-interface/component/preference - User Interface Components Private Access: user-interface/component/private-access - User Interface Components Record Access: user-interface/component/record-access - User Interface Components Notes: user-interface/component/notes - User Interface Components Translation: user-interface/component/translation - User Interface Forms / POS: form/addons/point-of-sales * Minor change * Remove persistence * Untrack files * Remove persistence * resolve conflicts * Update files
309 lines
8.3 KiB
JavaScript
309 lines
8.3 KiB
JavaScript
import { requestLookup, requestLookupList } from '@/api/ADempiere/window.js'
|
|
import { getToken as getSession } from '@/utils/auth'
|
|
import { isEmptyValue } from '@/utils/ADempiere/valueUtils'
|
|
import { parseContext } from '@/utils/ADempiere/contextUtils'
|
|
|
|
const initStateLookup = {
|
|
lookupItem: [],
|
|
lookupList: []
|
|
}
|
|
|
|
const lookup = {
|
|
state: initStateLookup,
|
|
mutations: {
|
|
addLoockupItem(state, payload) {
|
|
state.lookupItem.push(payload)
|
|
},
|
|
addLoockupList(state, payload) {
|
|
state.lookupList.push(payload)
|
|
},
|
|
deleteLookupList(state, payload) {
|
|
state.lookupItem = payload.lookupItem
|
|
state.lookupList = payload.lookupList
|
|
},
|
|
resetStateLookup(state) {
|
|
state = initStateLookup
|
|
}
|
|
},
|
|
actions: {
|
|
/**
|
|
* Get display column from lookup
|
|
* @param {string} parentUuid
|
|
* @param {string} containerUuid
|
|
* @param {string} tableName
|
|
* @param {string} directQuery
|
|
* @param {string|number} value identifier or key
|
|
*/
|
|
getLookupItemFromServer({ commit, rootGetters }, {
|
|
parentUuid,
|
|
containerUuid,
|
|
tableName,
|
|
directQuery,
|
|
value
|
|
}) {
|
|
if (isEmptyValue(directQuery)) {
|
|
return
|
|
}
|
|
|
|
let parsedDirectQuery = directQuery
|
|
if (parsedDirectQuery.includes('@')) {
|
|
parsedDirectQuery = parseContext({
|
|
parentUuid,
|
|
containerUuid,
|
|
value: directQuery,
|
|
isBooleanToString: true
|
|
}).value
|
|
}
|
|
|
|
return requestLookup({
|
|
tableName,
|
|
directQuery: parsedDirectQuery,
|
|
value
|
|
})
|
|
.then(lookupItemResponse => {
|
|
const label = lookupItemResponse.values.DisplayColumn
|
|
const option = {
|
|
label: isEmptyValue(label) ? ' ' : label,
|
|
uuid: lookupItemResponse.uuid,
|
|
id: value // lookupItemResponse.values.KeyColumn
|
|
}
|
|
|
|
commit('addLoockupItem', {
|
|
option,
|
|
value, // isNaN(objectParams.value) ? objectParams.value : parseInt(objectParams.value, 10),
|
|
parsedDirectQuery: directQuery,
|
|
tableName,
|
|
sessionUuid: getSession(),
|
|
clientId: rootGetters.getPreferenceClientId
|
|
})
|
|
return option
|
|
})
|
|
.catch(error => {
|
|
console.warn(`Get Lookup, Select Base - Error ${error.code}: ${error.message}.`)
|
|
})
|
|
},
|
|
/**
|
|
* Get display column's list from lookup
|
|
* @param {string} parentUuid
|
|
* @param {string} containerUuid
|
|
* @param {string} tableName
|
|
* @param {string} query
|
|
* @param {string} whereClause
|
|
* @param {boolean} isAddBlankValue
|
|
* @param {mixed} blankValue
|
|
* @param {Array<String>|<Number>} valuesList
|
|
*/
|
|
getLookupListFromServer({ commit, rootGetters }, {
|
|
parentUuid,
|
|
containerUuid,
|
|
columnName,
|
|
tableName,
|
|
query,
|
|
whereClause,
|
|
isAddBlankValue = false,
|
|
blankValue,
|
|
valuesList = []
|
|
}) {
|
|
if (isEmptyValue(query)) {
|
|
return
|
|
}
|
|
let parsedQuery = query
|
|
if (String(parsedQuery).includes('@')) {
|
|
parsedQuery = parseContext({
|
|
parentUuid,
|
|
containerUuid,
|
|
value: query,
|
|
isBooleanToString: true
|
|
}).value
|
|
}
|
|
|
|
let parsedWhereClause = whereClause
|
|
if (String(parsedWhereClause).includes('@')) {
|
|
parsedWhereClause = parseContext({
|
|
parentUuid,
|
|
containerUuid,
|
|
value: parsedWhereClause,
|
|
isBooleanToString: true
|
|
}).value
|
|
}
|
|
|
|
return requestLookupList({
|
|
columnName,
|
|
tableName,
|
|
query: parsedQuery,
|
|
whereClause: parsedWhereClause,
|
|
valuesList
|
|
})
|
|
.then(lookupListResponse => {
|
|
const list = []
|
|
lookupListResponse.recordsList.forEach(itemLookup => {
|
|
const {
|
|
KeyColumn: id,
|
|
DisplayColumn: label
|
|
} = itemLookup.values
|
|
|
|
if (!isEmptyValue(id)) {
|
|
list.push({
|
|
label,
|
|
id,
|
|
uuid: itemLookup.uuid
|
|
})
|
|
}
|
|
})
|
|
if (isAddBlankValue) {
|
|
list.unshift({
|
|
label: ' ',
|
|
id: blankValue,
|
|
uuid: undefined
|
|
})
|
|
}
|
|
commit('addLoockupList', {
|
|
list,
|
|
tableName,
|
|
parsedQuery,
|
|
sessionUuid: getSession(),
|
|
clientId: rootGetters.getPreferenceClientId
|
|
})
|
|
return list
|
|
})
|
|
.catch(error => {
|
|
console.warn(`Get Lookup List, Select Base - Error ${error.code}: ${error.message}.`)
|
|
})
|
|
},
|
|
deleteLookupList({ commit, state }, {
|
|
parentUuid,
|
|
containerUuid,
|
|
tableName,
|
|
query,
|
|
directQuery,
|
|
value
|
|
}) {
|
|
let parsedDirectQuery = directQuery
|
|
if (directQuery && parsedDirectQuery.includes('@')) {
|
|
parsedDirectQuery = parseContext({
|
|
parentUuid,
|
|
containerUuid,
|
|
value: parsedDirectQuery,
|
|
isBooleanToString: true
|
|
}).value
|
|
}
|
|
const lookupItem = state.lookupItem.filter(itemLookup => {
|
|
return itemLookup.parsedDirectQuery !== parsedDirectQuery &&
|
|
itemLookup.tableName !== tableName &&
|
|
itemLookup.value !== value &&
|
|
itemLookup.sessionUuid !== getSession()
|
|
})
|
|
|
|
let parsedQuery = query
|
|
if (parsedQuery && parsedQuery.includes('@')) {
|
|
parsedQuery = parseContext({
|
|
parentUuid,
|
|
containerUuid,
|
|
value: parsedQuery,
|
|
isBooleanToString: true
|
|
}).value
|
|
}
|
|
const lookupList = state.lookupList.filter(itemLookup => {
|
|
return itemLookup.parsedQuery !== parsedQuery &&
|
|
itemLookup.tableName !== tableName &&
|
|
itemLookup.sessionUuid !== getSession()
|
|
})
|
|
commit('deleteLookupList', {
|
|
lookupItem,
|
|
lookupList
|
|
})
|
|
}
|
|
},
|
|
getters: {
|
|
getLookupItem: (state, getters, rootState, rootGetters) => ({
|
|
parentUuid,
|
|
containerUuid,
|
|
tableName,
|
|
directQuery,
|
|
value
|
|
}) => {
|
|
let parsedDirectQuery = directQuery
|
|
if (parsedDirectQuery && parsedDirectQuery.includes('@')) {
|
|
parsedDirectQuery = parseContext({
|
|
parentUuid,
|
|
containerUuid,
|
|
value: parsedDirectQuery,
|
|
isBooleanToString: true
|
|
}).value
|
|
}
|
|
const lookupItem = state.lookupItem.find(itemLookup => {
|
|
return itemLookup.parsedDirectQuery === parsedDirectQuery &&
|
|
itemLookup.tableName === tableName &&
|
|
itemLookup.sessionUuid === getSession() &&
|
|
itemLookup.clientId === rootGetters.getPreferenceClientId &&
|
|
itemLookup.value === value
|
|
})
|
|
if (lookupItem) {
|
|
return lookupItem.option
|
|
}
|
|
return undefined
|
|
},
|
|
getLookupList: (state, getters, rootState, rootGetters) => ({
|
|
parentUuid,
|
|
containerUuid,
|
|
tableName,
|
|
query
|
|
}) => {
|
|
let parsedQuery = query
|
|
if (parsedQuery && parsedQuery.includes('@')) {
|
|
parsedQuery = parseContext({
|
|
parentUuid,
|
|
containerUuid,
|
|
value: parsedQuery,
|
|
isBooleanToString: true
|
|
}).value
|
|
}
|
|
const lookupList = state.lookupList.find(itemLookup => {
|
|
return itemLookup.parsedQuery === parsedQuery &&
|
|
itemLookup.tableName === tableName &&
|
|
itemLookup.sessionUuid === getSession() &&
|
|
itemLookup.clientId === rootGetters.getPreferenceClientId
|
|
})
|
|
if (lookupList) {
|
|
return lookupList.list
|
|
}
|
|
return []
|
|
},
|
|
/**
|
|
* Get all lookups, item and list joined
|
|
*/
|
|
getLookupAll: (state, getters) => ({
|
|
parentUuid,
|
|
containerUuid,
|
|
tableName,
|
|
query,
|
|
directQuery,
|
|
value
|
|
}) => {
|
|
const list = getters.getLookupList({
|
|
parentUuid,
|
|
containerUuid,
|
|
tableName,
|
|
query
|
|
})
|
|
const allList = list
|
|
// set item values getter from server into list
|
|
if (isEmptyValue(list)) {
|
|
const item = getters.getLookupItem({
|
|
parentUuid,
|
|
containerUuid,
|
|
tableName,
|
|
directQuery,
|
|
value
|
|
})
|
|
if (!isEmptyValue(item)) {
|
|
allList.push(item)
|
|
}
|
|
}
|
|
return allList
|
|
}
|
|
}
|
|
}
|
|
|
|
export default lookup
|