1
0
mirror of https://github.com/PanJiaChen/vue-element-admin.git synced 2025-08-13 15:15:53 +08:00
Elsio Sanchez 472ffc523a
Bugfix/unnecessary field calls (#628)
* add complete order from collection

* call the edit line fields only when they are displayed

* unnecessary calling of customer fields

* minimal changes

Co-authored-by: Elsio Sanchez <elsiosanche@gmail.com>
2021-03-04 21:33:42 -04:00

247 lines
6.1 KiB
Vue

<template>
<el-main
v-shortkey="shortsKey"
@shortkey.native="keyAction"
>
<el-form
label-position="top"
size="small"
class="create-bp"
>
<el-row :gutter="24">
<field
v-for="(field) in metadataList"
:key="field.columnName"
:metadata-field="field"
/>
<el-col :span="24">
<samp style="float: right; padding-right: 10px;">
<el-button
type="primary"
class="custom-button-create-bp"
icon="el-icon-check"
:loading="isLoadingRecord"
@click="createBusinessParter"
/>
<el-button
type="danger"
class="custom-button-create-bp"
icon="el-icon-close"
@click="clearValues"
/>
</samp>
</el-col>
</el-row>
</el-form>
</el-main>
</template>
<script>
import { requestCreateBusinessPartner } from '@/api/ADempiere/system-core.js'
import fieldsList from './fieldsListCreate.js'
import BParterMixin from './mixinBusinessPartner.js'
import {
// createFieldFromDefinition,
createFieldFromDictionary
} from '@/utils/ADempiere/lookupFactory'
import Field from '@/components/ADempiere/Field'
export default {
name: 'BusinessPartnerCreate',
components: {
Field
},
mixins: [
// formMixin,
BParterMixin
],
props: {
metadata: {
type: Object,
default: () => {
return {
uuid: 'Business-Partner-Create',
containerUuid: 'Business-Partner-Create',
fieldsList
}
}
},
showField: {
type: Boolean,
default: true
}
},
data() {
return {
businessPartnerRecord: {},
isLoadingRecord: false,
fieldsList,
isCustomForm: true,
metadataList: [],
unsubscribe: () => {}
}
},
computed: {
emptyMandatoryFields() {
const field = this.$store.getters.getFieldsListEmptyMandatory({
containerUuid: this.containerUuid,
isValidate: true
})
return field
}
},
watch: {
showField(value) {
if (value && this.isEmptyValue(this.metadataList)) {
this.setFieldsList()
}
}
},
beforeDestroy() {
this.unsubscribe()
},
// created()
methods: {
createFieldFromDictionary,
// TODO: Get locations values.
createBusinessParter() {
let values = this.$store.getters.getValuesView({
containerUuid: this.containerUuid,
format: 'object'
})
if (this.isEmptyValue(values)) {
return
}
values = this.convertValuesToSend(values)
if (this.isEmptyValue(this.emptyMandatoryFields)) {
this.isLoadingRecord = true
requestCreateBusinessPartner(values)
.then(responseBPartner => {
// TODO: Add new record into vuex store.
this.setBusinessPartner(responseBPartner)
this.clearValues()
this.$message({
type: 'success',
message: this.$t('form.pos.order.BusinessPartnerCreate.businessPartner'),
duration: 1500,
showClose: true
})
})
.catch(error => {
this.showsPopovers.isShowCreate = true
this.$message({
type: 'warning',
message: error.message,
duration: 1500,
showClose: true
})
console.warn(`Error create Business Partner. Message: ${error.message}, code ${error.code}.`)
})
.finally(() => {
this.isLoadingRecord = false
})
} else {
this.$message({
type: 'warn',
message: this.$t('notifications.mandatoryFieldMissing') + this.emptyMandatoryFields,
duration: 1500,
showClose: true
})
}
},
clearValues() {
this.showsPopovers.isShowCreate = false
this.$store.dispatch('setDefaultValues', {
containerUuid: this.containerUuid,
panelType: this.panelType
})
this.clearLocationValues()
},
clearLocationValues() {
this.$store.commit('updateValuesOfContainer', {
containerUuid: this.containerUuid,
attributes: [{
columnName: 'C_Location_ID',
value: undefined
}, {
columnName: 'DisplayColumn_C_Location_ID',
value: undefined
}, {
columnName: 'C_Country_ID',
value: undefined
}, {
columnName: 'C_Country_ID_UUID',
value: undefined
}, {
columnName: 'DisplayColumn_C_Country_ID',
value: undefined
}, {
columnName: 'C_Region_ID',
value: undefined
}, {
columnName: 'C_Region_ID_UUID',
value: undefined
}, {
columnName: 'DisplayColumn_C_Region_ID',
value: undefined
}, {
columnName: 'C_City_ID',
value: undefined
}, {
columnName: 'C_City_ID_UUID',
value: undefined
}, {
columnName: 'DisplayColumn_C_City_ID',
value: undefined
}, {
columnName: 'Address1',
value: undefined
}, {
columnName: 'Address2',
value: undefined
}, {
columnName: 'Address3',
value: undefined
}, {
columnName: 'Address4',
value: undefined
}]
})
},
setFieldsList() {
const list = []
// Product Code
this.fieldsList.forEach(element => {
this.createFieldFromDictionary(element)
.then(response => {
const data = response
list.push({
...data,
containerUuid: 'Business-Partner-Create'
})
}).catch(error => {
console.warn(`LookupFactory: Get Field From Server (State) - Error ${error.code}: ${error.message}.`)
})
})
this.metadataList = list
}
}
}
</script>
<style scoped lang="scss">
.create-bp {
.el-form-item {
margin-bottom: 0px !important;
}
}
.custom-button-create-bp {
float: right;
margin-right: 10px;
}
</style>