mirror of
https://github.com/PanJiaChen/vue-element-admin.git
synced 2025-08-10 12:01:57 +08:00
239 lines
6.4 KiB
Vue
239 lines
6.4 KiB
Vue
<!--
|
|
ADempiere-Vue (Frontend) for ADempiere ERP & CRM Smart Business Solution
|
|
Copyright (C) 2017-Present E.R.P. Consultores y Asociados, C.A.
|
|
Contributor(s): Yamel Senih ysenih@erpya.com www.erpya.com
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <https:www.gnu.org/licenses/>.
|
|
-->
|
|
<template>
|
|
<el-main
|
|
v-shortkey="shortsKey"
|
|
@shortkey.native="keyAction"
|
|
>
|
|
<el-form
|
|
label-position="top"
|
|
size="small"
|
|
class="create-bp"
|
|
>
|
|
<el-row :gutter="24">
|
|
<field-definition
|
|
v-for="(field) in fieldsList"
|
|
:ref="field.columnName"
|
|
: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"
|
|
@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 { createCustomer } from '@/api/ADempiere/form/point-of-sales.js'
|
|
import formMixin from '@/components/ADempiere/Form/formMixin.js'
|
|
import fieldsList from './fieldsListCreate.js'
|
|
import BParterMixin from './mixinBusinessPartner.js'
|
|
|
|
export default {
|
|
name: 'BusinessPartnerCreate',
|
|
mixins: [
|
|
formMixin,
|
|
BParterMixin
|
|
],
|
|
props: {
|
|
metadata: {
|
|
type: Object,
|
|
default: () => {
|
|
return {
|
|
uuid: 'Business-Partner-Create',
|
|
containerUuid: 'Business-Partner-Create',
|
|
fieldsList
|
|
}
|
|
}
|
|
},
|
|
showField: {
|
|
type: Boolean,
|
|
default: false
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
businessPartnerRecord: {},
|
|
isLoadingRecord: false,
|
|
fieldsList,
|
|
isCustomForm: true,
|
|
unsubscribe: () => {}
|
|
}
|
|
},
|
|
watch: {
|
|
showField(value) {
|
|
if (value) {
|
|
setTimeout(() => {
|
|
this.focusValue()
|
|
}, 1500)
|
|
}
|
|
}
|
|
},
|
|
beforeDestroy() {
|
|
this.unsubscribe()
|
|
},
|
|
methods: {
|
|
focusValue() {
|
|
this.$refs.Value[0].$children[0].$children[0].$children[1].$children[0].focus()
|
|
},
|
|
// TODO: Get locations values.
|
|
createBusinessParter() {
|
|
let values = this.$store.getters.getValuesView({
|
|
containerUuid: this.containerUuid,
|
|
format: 'object'
|
|
})
|
|
const name2 = this.$store.getters.getValueOfField({
|
|
containerUuid: this.containerUuid,
|
|
columnName: 'Name2'
|
|
})
|
|
values = this.convertValuesToSend(values)
|
|
values.name2 = name2
|
|
const emptyMandatoryFields = this.$store.getters.getFieldsListEmptyMandatory({
|
|
containerUuid: this.containerUuid,
|
|
formatReturn: 'name'
|
|
})
|
|
if (this.isEmptyValue(emptyMandatoryFields)) {
|
|
this.isLoadingRecord = true
|
|
createCustomer(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 + 'Name',
|
|
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') + emptyMandatoryFields,
|
|
duration: 1500,
|
|
showClose: true
|
|
})
|
|
}
|
|
},
|
|
clearValues() {
|
|
this.$store.dispatch('changePopover', false)
|
|
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
|
|
}]
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.create-bp {
|
|
.el-form-item {
|
|
margin-bottom: 0px !important;
|
|
}
|
|
}
|
|
|
|
.custom-button-create-bp {
|
|
float: right;
|
|
margin-right: 10px;
|
|
}
|
|
</style>
|