mirror of
https://github.com/PanJiaChen/vue-element-admin.git
synced 2025-08-13 15:15:53 +08:00
* 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>
247 lines
6.1 KiB
Vue
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>
|