1
0
mirror of https://github.com/PanJiaChen/vue-element-admin.git synced 2025-08-11 05:11:59 +08:00
elsiosanchez b45619fa74
addAction (#470)
* addAction

* minimal change

* minimal change
2020-04-29 17:02:01 -04:00

179 lines
4.8 KiB
JavaScript

import { recursiveTreeSearch } from '@/utils/ADempiere/valueUtils.js'
import { requestListDocumentActions, requestListDocumentStatuses } from '@/api/ADempiere/dashboard/dashboard'
// Store used for set all related to context menu
// for Window, Process, Smart Browser andother customized component
// See structure:
// contextMenu: [
// {
// containerUuid: '',
// relations: [],
// actions: [],
// references: []
// }
// ]
const initStateContextMenu = {
contextMenu: [],
listDocumentStatus: {
defaultDocumentAction: undefined,
documentActionsList: [],
recordId: undefined,
recordUuid: undefined
},
listDocumentAction: {
defaultDocumentAction: undefined,
documentActionsList: [],
recordId: undefined,
recordUuid: undefined
}
}
const contextMenu = {
state: initStateContextMenu,
mutations: {
setContextMenu(state, payload) {
state.contextMenu.push(payload)
},
dictionaryResetCacheContextMenu(state) {
state.contextMenu = []
},
listDocumentAction(state, payload) {
state.listDocumentAction = payload
},
addlistDocumentStatus(state, payload) {
state.listDocumentStatus = payload
},
resetContextMenu(state) {
state = initStateContextMenu
}
},
actions: {
/**
* Sub menu associated with panel
* @param {string} containerUuid
* @param {array} relations
* @param {array} actions
* @param {array} references
*/
setContextMenu({ commit }, {
containerUuid,
relations = [],
actions = [],
references = []
}) {
commit('setContextMenu', {
containerUuid,
relations,
actions,
references
})
},
addAction({ state }, newAction) {
newAction.push(state.contextMenu.actions)
},
/**
* TODO: Verify tableName params to change in constant
* @param {number} recordId
* @param {string} recordUuid
*/
listDocumentActionStatus({ commit }, {
tableName,
recordId,
recordUuid,
documentAction,
documentStatus
}) {
return new Promise(resolve => {
requestListDocumentActions({
tableName,
recordId,
recordUuid,
documentAction,
documentStatus,
pageSize: 0,
pageToken: ''
})
.then(responseDocumentActios => {
const documentAction = {
defaultDocumentAction: responseDocumentActios.defaultDocumentAction,
documentActionsList: responseDocumentActios.documentActionsList,
recordId,
recordUuid
}
commit('listDocumentAction', documentAction)
resolve(documentAction)
})
.catch(error => {
console.warn(`Error getting document action list. Code ${error.code}: ${error.message}.`)
})
})
},
listDocumentStatus({ commit }, {
tableName,
recordId,
recordUuid,
documentAction,
documentStatus
}) {
return new Promise(resolve => {
requestListDocumentStatuses({
tableName,
recordId,
recordUuid,
documentAction,
documentStatus,
pageSize: 0,
pageToken: ''
})
.then(responseDocumentStatus => {
const documentStatus = {
documentActionsList: responseDocumentStatus.documentStatusesList,
recordId,
recordUuid
}
commit('addlistDocumentStatus', documentStatus)
resolve(documentStatus)
})
.catch(error => {
console.warn(`Error getting document statuses list. Code ${error.code}: ${error.message}.`)
})
})
}
},
getters: {
getContextMenu: (state) => (containerUuid) => {
return state.contextMenu.find(item => item.containerUuid === containerUuid)
},
getRelations: (state, getters, rootState, rootGetters) => (containerUuid) => {
const dataTree = rootGetters.permission_routes
return recursiveTreeSearch({
treeData: dataTree,
attributeName: 'name',
attributeValue: containerUuid,
attributeChilds: 'children'
})
},
getActions: (state) => (containerUuid) => {
const menu = state.contextMenu.find(
item => item.containerUuid === containerUuid
)
if (menu) {
return menu.actions
}
return menu
},
getListDocumentActions: (state) => {
return state.listDocumentAction
},
getListDocumentStatus: (state) => {
return state.listDocumentStatus
},
getListDocumentActionByUuid: (state) => (recordUuid) => {
return state.listDocumentAction.find(itemDocumentAction => itemDocumentAction.recordUuid === recordUuid)
}
}
}
export default contextMenu