1
0
mirror of https://github.com/PanJiaChen/vue-element-admin.git synced 2025-08-11 05:11:59 +08:00

fix: #370 Lookup with NaN values in advanced query. (#371)

This commit is contained in:
Edwin Betancourt 2020-02-27 15:54:43 -04:00 committed by GitHub
parent c589cc1a20
commit 5bed6a5f45
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 71 additions and 78 deletions

View File

@ -141,9 +141,10 @@ export default {
} }
if (this.metadata.displayed) { if (this.metadata.displayed) {
if (!this.options.some(option => option.key === value)) { if (!this.options.some(option => option.key === value)) {
const label = this.findLabel(value)
this.options.push({ this.options.push({
key: value, key: value,
label: this.isEmptyValue(this.findLabel(value)) ? ' ' : this.findLabel(value) label: this.isEmptyValue(label) ? ' ' : label
}) })
this.value = value this.value = value
} }
@ -170,7 +171,7 @@ export default {
beforeMount() { beforeMount() {
if (this.metadata.displayed) { if (this.metadata.displayed) {
this.options = this.getterLookupAll this.options = this.getterLookupAll
if (!this.isEmptyValue(this.value)) { if (!this.isEmptyValue(this.value) && !this.metadata.isAdvancedQuery) {
if (!this.findLabel(this.value)) { if (!this.findLabel(this.value)) {
if (!this.isEmptyValue(this.metadata.displayColumn)) { if (!this.isEmptyValue(this.metadata.displayColumn)) {
// verify if exists to add // verify if exists to add
@ -243,7 +244,7 @@ export default {
} }
} }
}, },
remoteMethod() { async remoteMethod() {
if (this.isEmptyValue(this.metadata.reference.query)) { if (this.isEmptyValue(this.metadata.reference.query)) {
return return
} }

View File

@ -1,5 +1,5 @@
<template> <template>
<span v-if="isContextInfo"> <span>
<el-popover <el-popover
ref="contextInfoField" ref="contextInfoField"
placement="top" placement="top"
@ -16,7 +16,7 @@
</span> </span>
{{ fieldAttributes.help }} {{ fieldAttributes.help }}
</div> </div>
<template v-for="(zoomItem, index) in fieldAttributes.reference.zoomWindowList"> <template v-for="(zoomItem, index) in fieldAttributes.reference.windowsList">
<el-button <el-button
:key="index" :key="index"
type="text" type="text"
@ -55,9 +55,6 @@ export default {
} }
}, },
computed: { computed: {
isContextInfo() {
return (this.fieldAttributes.contextInfo && this.fieldAttributes.contextInfo.isActive) || this.fieldAttributes.reference.zoomWindowList.length
},
permissionRoutes() { permissionRoutes() {
return this.$store.getters.permission_routes return this.$store.getters.permission_routes
} }

View File

@ -259,7 +259,7 @@ export default {
}, },
isContextInfo() { isContextInfo() {
if (!this.isAdvancedQuery) { if (!this.isAdvancedQuery) {
return (this.field.contextInfo && this.field.contextInfo.isActive) || this.field.reference.zoomWindowList.length return (this.field.contextInfo && this.field.contextInfo.isActive) || this.field.reference.windowsList.length
} }
return false return false
} }

View File

@ -45,18 +45,18 @@ const lookup = {
return getLookup({ return getLookup({
tableName, tableName,
directQuery: parsedDirectQuery, directQuery: parsedDirectQuery,
value: value value
}) })
.then(response => { .then(lookupItemResponse => {
const label = response.values.DisplayColumn const label = lookupItemResponse.values.DisplayColumn
const option = { const option = {
label: isEmptyValue(label) ? ' ' : label, label: isEmptyValue(label) ? ' ' : label,
key: value // response.values.KeyColumn key: value // lookupItemResponse.values.KeyColumn
} }
commit('addLoockupItem', { commit('addLoockupItem', {
option: option, option,
value: value, // isNaN(objectParams.value) ? objectParams.value : parseInt(objectParams.value, 10), value, // isNaN(objectParams.value) ? objectParams.value : parseInt(objectParams.value, 10),
parsedDirectQuery: directQuery, parsedDirectQuery: directQuery,
tableName, tableName,
roleUuid: getCurrentRole(), roleUuid: getCurrentRole(),
@ -65,7 +65,7 @@ const lookup = {
return option return option
}) })
.catch(error => { .catch(error => {
console.warn(`Get Lookup, Select Base - Error ${error.code}: ${error.message}`) console.warn(`Get Lookup, Select Base - Error ${error.code}: ${error.message}.`)
}) })
}, },
/** /**
@ -94,8 +94,8 @@ const lookup = {
tableName, tableName,
query: parsedQuery query: parsedQuery
}) })
.then(response => { .then(lookupListResponse => {
const options = response.recordsList.map(itemLookup => { const options = lookupListResponse.recordsList.map(itemLookup => {
return { return {
label: itemLookup.values.DisplayColumn, label: itemLookup.values.DisplayColumn,
key: itemLookup.values.KeyColumn key: itemLookup.values.KeyColumn
@ -112,7 +112,7 @@ const lookup = {
return options return options
}) })
.catch(error => { .catch(error => {
console.warn(`Get Lookup List, Select Base - Error ${error.code}: ${error.message}`) console.warn(`Get Lookup List, Select Base - Error ${error.code}: ${error.message}.`)
}) })
}, },
deleteLookupList({ commit, state }, { deleteLookupList({ commit, state }, {

View File

@ -447,7 +447,7 @@ const panel = {
}) })
// show fields in query // show fields in query
if (isShowedField && Object.keys(newValues).length) { if (isShowedField && !isEmptyValue(newValues)) {
// join column names without duplicating it // join column names without duplicating it
fieldsShowed = Array.from(new Set([ fieldsShowed = Array.from(new Set([
...fieldsShowed, ...fieldsShowed,
@ -617,6 +617,13 @@ const panel = {
} }
}) })
} }
commit('changeField', {
field,
newField: {
...field,
oldOperator: field.operator
}
})
dispatch('getObjectListFromCriteria', { dispatch('getObjectListFromCriteria', {
parentUuid, parentUuid,
containerUuid, containerUuid,
@ -630,13 +637,6 @@ const panel = {
}) })
}) })
.then(response => { .then(response => {
commit('changeField', {
field,
newField: {
...field,
oldOperator: field.operator
}
})
if (response && response.length) { if (response && response.length) {
dispatch('notifyPanelChange', { dispatch('notifyPanelChange', {
parentUuid, parentUuid,

View File

@ -29,15 +29,6 @@ const windowControl = {
addReferencesList(state, payload) { addReferencesList(state, payload) {
state.references.push(payload) state.references.push(payload)
}, },
deleteReference(state, payload) {
state.references = state.references.filter(itemReference => {
if (itemReference.parentUuid === payload.windowUuid &&
itemReference.recordUuid === payload.recordUuid) {
return false
}
return true
})
},
setDataLog(state, payload) { setDataLog(state, payload) {
state.dataLog = payload state.dataLog = payload
}, },

View File

@ -27,7 +27,16 @@ export function generateField({
const referenceType = componentReference.alias[0] const referenceType = componentReference.alias[0]
let parsedDefaultValue = fieldToGenerate.defaultValue let parsedDefaultValue = fieldToGenerate.defaultValue
if (!moreAttributes.isAdvancedQuery) { let parsedDefaultValueTo = fieldToGenerate.defaultValueTo
let operator = 'EQUAL'
if (moreAttributes.isAdvancedQuery) {
parsedDefaultValue = undefined
parsedDefaultValueTo = undefined
if (['FieldText', 'FieldTextLong'].includes(componentReference.type)) {
operator = 'LIKE'
}
} else {
if (String(parsedDefaultValue).includes('@')) { if (String(parsedDefaultValue).includes('@')) {
parsedDefaultValue = parseContext({ parsedDefaultValue = parseContext({
...moreAttributes, ...moreAttributes,
@ -58,16 +67,15 @@ export function generateField({
}) })
} }
} }
}
parsedDefaultValue = parsedValueComponent({
fieldType: componentReference.type,
value: parsedDefaultValue,
referenceType,
isMandatory: fieldToGenerate.isMandatory
})
let parsedDefaultValueTo = fieldToGenerate.defaultValueTo parsedDefaultValue = parsedValueComponent({
if (!moreAttributes.isAdvancedQuery) { fieldType: componentReference.type,
value: parsedDefaultValue,
referenceType,
isMandatory: fieldToGenerate.isMandatory
})
// VALUE TO
// if (String(parsedDefaultValueTo).includes('@SQL=')) { // if (String(parsedDefaultValueTo).includes('@SQL=')) {
// parsedDefaultValueTo.replace('@SQL=', '') // parsedDefaultValueTo.replace('@SQL=', '')
if (String(parsedDefaultValueTo).includes('@')) { if (String(parsedDefaultValueTo).includes('@')) {
@ -99,15 +107,15 @@ export function generateField({
}) })
} }
} }
}
parsedDefaultValueTo = parsedValueComponent({
fieldType: componentReference.type,
value: parsedDefaultValueTo,
referenceType,
isMandatory: fieldToGenerate.isMandatory
})
fieldToGenerate.reference.zoomWindowList = fieldToGenerate.reference.windowsList parsedDefaultValueTo = parsedValueComponent({
fieldType: componentReference.type,
value: parsedDefaultValueTo,
referenceType,
isMandatory: fieldToGenerate.isMandatory
})
}
const field = { const field = {
...fieldToGenerate, ...fieldToGenerate,
...moreAttributes, ...moreAttributes,
@ -135,14 +143,9 @@ export function generateField({
isShowedTableFromUser: fieldToGenerate.isDisplayed, isShowedTableFromUser: fieldToGenerate.isDisplayed,
isFixedTableColumn: false, isFixedTableColumn: false,
// Advanced query // Advanced query
operator: 'EQUAL', // current operator operator, // current operator
oldOperator: undefined, // old operator oldOperator: undefined, // old operator
defaultOperator: 'EQUAL' defaultOperator: operator
}
if (moreAttributes.isAdvancedQuery && ['FieldText', 'FieldTextLong'].includes(field.componentPath)) {
field.operator = 'LIKE'
field.defaultOperator = 'LIKE'
} }
// evaluate simple logics without context // evaluate simple logics without context
@ -260,8 +263,8 @@ export function generateProcess({ processToGenerate, containerUuidAssociated = u
.filter(field => field.parentFieldsList && field.isActive) .filter(field => field.parentFieldsList && field.isActive)
.forEach((field, index, list) => { .forEach((field, index, list) => {
field.parentFieldsList.forEach(parentColumnName => { field.parentFieldsList.forEach(parentColumnName => {
var parentField = list.find(parentField => { const parentField = list.find(itemParentField => {
return parentField.columnName === parentColumnName && parentColumnName !== field.columnName return itemParentField.columnName === parentColumnName && parentColumnName !== field.columnName
}) })
if (parentField) { if (parentField) {
parentField.dependentFieldsList.push(field.columnName) parentField.dependentFieldsList.push(field.columnName)
@ -380,7 +383,7 @@ export function generateProcess({ processToGenerate, containerUuidAssociated = u
* @return string type, assigned value to folder after evaluating the parameter * @return string type, assigned value to folder after evaluating the parameter
*/ */
export function evalutateTypeField(displayTypeId, isAllInfo = false) { export function evalutateTypeField(displayTypeId, isAllInfo = false) {
var component = REFERENCES.find(reference => displayTypeId === reference.id) const component = REFERENCES.find(reference => displayTypeId === reference.id)
if (isAllInfo) { if (isAllInfo) {
return component return component
} }
@ -398,8 +401,7 @@ export function getFieldTemplate(attributesOverwrite) {
directQuery: '', directQuery: '',
parsedDirectQuery: '', parsedDirectQuery: '',
validationCode: '', validationCode: '',
windowsList: [], windowsList: []
zoomWindowList: []
} }
const newField = { const newField = {
id: 0, id: 0,

View File

@ -16,8 +16,8 @@ export function isEmptyValue(value) {
return Boolean(!value.trim().length) return Boolean(!value.trim().length)
} else if (typeof value === 'function' || typeof value === 'number' || typeof value === 'boolean' || Object.prototype.toString.call(value) === '[object Date]') { } else if (typeof value === 'function' || typeof value === 'number' || typeof value === 'boolean' || Object.prototype.toString.call(value) === '[object Date]') {
return false return false
} else if (Object.prototype.toString.call(value) === '[object Map]' && value.size === 0) { } else if (Object.prototype.toString.call(value) === '[object Map]' || Object.prototype.toString.call(value) === '[object Set]') {
return true return Boolean(!value.size)
} else if (Array.isArray(value)) { } else if (Array.isArray(value)) {
return Boolean(!value.length) return Boolean(!value.length)
} else if (typeof value === 'object') { } else if (typeof value === 'object') {
@ -37,9 +37,8 @@ export function typeValue(value) {
} else if (typeof value === 'number') { } else if (typeof value === 'number') {
if (value.isInteger()) { if (value.isInteger()) {
return 'INTEGER' return 'INTEGER'
} else {
return 'NUMBER'
} }
return 'DOUBLE'
} else if (typeof value === 'boolean') { } else if (typeof value === 'boolean') {
return 'BOOLEAN' return 'BOOLEAN'
} else if (Object.prototype.toString.call(value) === '[object Date]') { } else if (Object.prototype.toString.call(value) === '[object Date]') {
@ -278,8 +277,11 @@ export const recursiveTreeSearch = ({
} }
/** /**
* * Parsed value to component type
* @param {*} param0 * @param {mixed} value, value to parsed
* @param {string} fieldType, or componentPath
* @param {string} referenceType, reference in ADempiere
* @param {boolean} isMandatory, field is mandatory
*/ */
export function parsedValueComponent({ fieldType, value, referenceType, isMandatory = false }) { export function parsedValueComponent({ fieldType, value, referenceType, isMandatory = false }) {
if ((value === undefined || value === null) && !isMandatory) { if ((value === undefined || value === null) && !isMandatory) {

View File

@ -119,7 +119,7 @@
</el-card> </el-card>
</div> </div>
<div style="right: 0%; top: 40%; position: absolute;"> <div style="right: 0%; top: 40%; position: absolute;">
<el-button v-show="!show && !isMobile" type="info" icon="el-icon-info" circle style="float: right;" class="el-button-window" @click="conteInfo" /> <el-button v-show="!showContainerInfo && !isMobile" type="info" icon="el-icon-info" circle style="float: right;" class="el-button-window" @click="conteInfo" />
</div> </div>
<div class="small-4 columns"> <div class="small-4 columns">
<div class="wrapper"> <div class="wrapper">
@ -343,13 +343,13 @@ export default {
return 'container-info' return 'container-info'
}, },
isSize() { isSize() {
if (this.isMobile && (this.showContainerInfo)) { if (this.isMobile && this.showContainerInfo) {
return 98 return 98
} }
return 50 return 50
}, },
isSizePanel() { isSizePanel() {
if (this.isMobile && (this.showContainerInfo)) { if (this.isMobile && this.showContainerInfo) {
return 2 return 2
} }
return 50 return 50
@ -385,13 +385,13 @@ export default {
} }
}, },
styleTableNavigation() { styleTableNavigation() {
if (this.isShowedRecordNavigation && (this.isMobile)) { if (this.isShowedRecordNavigation && this.isMobile) {
return 'open-datatable-aside-mobile' return 'open-datatable-aside-mobile'
} }
return 'open-datatable-aside' return 'open-datatable-aside'
}, },
splitAreaStyle() { splitAreaStyle() {
if (this.isShowedTabsChildren || (this.isMobile)) { if (this.isShowedTabsChildren || this.isMobile) {
return { return {
overflow: 'auto' overflow: 'auto'
} }
@ -465,7 +465,7 @@ export default {
return this.getterDataRecordsAndSelection.record return this.getterDataRecordsAndSelection.record
}, },
getTableName() { getTableName() {
return this.$store.getters.getPanel(this.windowMetadata.firstTabUuid, false).tableName return this.$store.getters.getTableNameFromTab(this.windowUuid, this.windowMetadata.firstTabUuid)
}, },
// current record // current record
getRecord() { getRecord() {