1
0
mirror of https://github.com/PanJiaChen/vue-element-admin.git synced 2025-08-16 08:55:42 +08:00
Yamel Senih ff4c1349e8
Separate Services (#843)
* 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
2021-05-12 18:46:49 -04:00

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