mirror of
https://github.com/PanJiaChen/vue-element-admin.git
synced 2025-08-16 08:55:42 +08:00
* fix: Create/update entity send log columns. * add user message info to create new recrod. Co-authored-by: EdwinBetanc0urt <EdwinBetanco0urt@outlook.com>
106 lines
2.8 KiB
JavaScript
106 lines
2.8 KiB
JavaScript
import {
|
|
requestCreateEntity,
|
|
requestUpdateEntity
|
|
} from '@/api/ADempiere/persistence.js'
|
|
import { isEmptyValue } from '@/utils/ADempiere/valueUtils.js'
|
|
import { LOG_COLUMNS_NAME_LIST } from '@/utils/ADempiere/dataUtils.js'
|
|
import language from '@/lang'
|
|
import { showMessage } from '@/utils/ADempiere/notification.js'
|
|
|
|
const persistence = {
|
|
state: {
|
|
persistence: {}
|
|
},
|
|
mutations: {
|
|
resetStatepersistence(state) {
|
|
state = {
|
|
persistence: {}
|
|
}
|
|
},
|
|
addChangeToPersistenceQueue(state, {
|
|
containerUuid,
|
|
columnName,
|
|
// valueType,
|
|
value
|
|
}) {
|
|
if (isEmptyValue(state.persistence[containerUuid])) {
|
|
state.persistence[containerUuid] = new Map()
|
|
}
|
|
// Set value
|
|
state.persistence[containerUuid].set(columnName, {
|
|
columnName: columnName,
|
|
// valueType,
|
|
value
|
|
})
|
|
}
|
|
},
|
|
actions: {
|
|
flushPersistenceQueue({ getters, dispatch }, {
|
|
containerUuid,
|
|
tableName,
|
|
recordUuid
|
|
}) {
|
|
return new Promise((resolve, reject) => {
|
|
let attributesList = getters.getPersistenceAttributes(containerUuid)
|
|
.filter(itemField => {
|
|
// omit send to server (to create or update) columns manage by backend
|
|
return !LOG_COLUMNS_NAME_LIST.includes(itemField.columnName)
|
|
})
|
|
|
|
if (attributesList) {
|
|
if (recordUuid) {
|
|
// Update existing entity
|
|
requestUpdateEntity({
|
|
tableName,
|
|
recordUuid,
|
|
attributesList
|
|
})
|
|
.then(response => {
|
|
dispatch('listRecordLogs', {
|
|
tableName: response.tableName,
|
|
recordId: response.id,
|
|
recordUuid: response.uuid
|
|
})
|
|
resolve(response)
|
|
})
|
|
.catch(error => reject(error))
|
|
} else {
|
|
attributesList = attributesList.filter(itemAttribute => !isEmptyValue(itemAttribute.value))
|
|
|
|
// Create new entity
|
|
requestCreateEntity({
|
|
tableName,
|
|
attributesList
|
|
})
|
|
.then(response => {
|
|
showMessage({
|
|
message: language.t('data.createRecordSuccessful'),
|
|
type: 'success'
|
|
})
|
|
|
|
resolve(response)
|
|
})
|
|
.catch(error => reject(error))
|
|
}
|
|
}
|
|
})
|
|
}
|
|
},
|
|
getters: {
|
|
getPersistenceMap: (state) => (tableName) => {
|
|
return state.persistence[tableName]
|
|
},
|
|
getPersistenceAttributes: (state) => (containerUuid) => {
|
|
const attributesMap = state.persistence[containerUuid]
|
|
if (!isEmptyValue(attributesMap)) {
|
|
return [
|
|
...attributesMap.values()
|
|
]
|
|
}
|
|
return undefined
|
|
}
|
|
}
|
|
}
|
|
|
|
export default persistence
|