mirror of
https://github.com/PanJiaChen/vue-element-admin.git
synced 2025-08-12 22:29:59 +08:00
104 lines
2.8 KiB
Vue
104 lines
2.8 KiB
Vue
<template>
|
|
<div class="wrapper">
|
|
<el-form
|
|
v-if="isLoaded"
|
|
key="form-loaded"
|
|
label-position="top"
|
|
label-width="200px"
|
|
>
|
|
<el-row>
|
|
<field
|
|
v-for="(field) in fieldsList"
|
|
:key="field.columnName"
|
|
:metadata-field="field"
|
|
:v-model="field.value"
|
|
/>
|
|
</el-row>
|
|
</el-form>
|
|
<div
|
|
v-else
|
|
key="form-loading"
|
|
v-loading="!isLoaded"
|
|
:element-loading-text="$t('notifications.loading')"
|
|
element-loading-spinner="el-icon-loading"
|
|
element-loading-background="rgba(255, 255, 255, 0.8)"
|
|
class="loading-panel"
|
|
/>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import formMixin from '@/components/ADempiere/Form/formMixin'
|
|
import fieldsList from './fieldsList.js'
|
|
import { getProductPrice } from '@/api/ADempiere/form/price-checking'
|
|
|
|
export default {
|
|
name: 'PriceInquiry',
|
|
mixins: [formMixin],
|
|
data() {
|
|
return {
|
|
fieldsList
|
|
}
|
|
},
|
|
created() {
|
|
this.unsubscribe = this.subscribeChanges()
|
|
},
|
|
beforeDestroy() {
|
|
this.unsubscribe()
|
|
},
|
|
methods: {
|
|
subscribeChanges() {
|
|
return this.$store.subscribe((mutation, state) => {
|
|
if (mutation.type === 'addActionKeyPerformed' && mutation.payload.columnName === 'ProductValue') {
|
|
// cleans all values except column name 'ProductValue'
|
|
this.setValues({ withOutColumnNames: ['ProductValue'] })
|
|
getProductPrice({
|
|
searchValue: mutation.payload.value
|
|
})
|
|
.then(productPrice => {
|
|
const { product, taxRate } = productPrice
|
|
|
|
const values = {
|
|
ProductName: product.name,
|
|
ProductDescription: product.description,
|
|
PriceList: productPrice.priceList,
|
|
TaxAmt: this.getTaxAmount(productPrice.priceList, taxRate.rate),
|
|
GrandTotal: this.getGrandTotal(productPrice.priceList, taxRate.rate)
|
|
}
|
|
|
|
// set new values except column name 'ProductValue'
|
|
this.setValues({ values, withOutColumnNames: ['ProductValue'] })
|
|
})
|
|
.catch(error => {
|
|
this.$message({
|
|
type: 'info',
|
|
message: error.message
|
|
})
|
|
})
|
|
}
|
|
})
|
|
},
|
|
getTaxAmount(priceList, taxRate) {
|
|
if (this.isEmptyValue(priceList) || this.isEmptyValue(taxRate)) {
|
|
return 0
|
|
}
|
|
return (priceList * taxRate) / 100
|
|
},
|
|
getGrandTotal(priceList, taxRate) {
|
|
if (this.isEmptyValue(priceList)) {
|
|
return 0
|
|
}
|
|
return priceList + this.getTaxAmount(priceList, taxRate)
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
<style lang="scss">
|
|
.price-inquiry {
|
|
input {
|
|
color: #606266 !important;
|
|
font-size: 200% !important;
|
|
}
|
|
}
|
|
</style>
|