[update] -税额+未税金额= 总额 增加判断

This commit is contained in:
fengchenchen
2022-08-05 10:48:59 +08:00
parent d165d428cb
commit af8fda0b3d
4 changed files with 84 additions and 109 deletions
@@ -22,14 +22,14 @@
<a-input placeholder="请输入税额" <a-input placeholder="请输入税额"
v-decorator="['tax',validatorRules.tax]" v-decorator="['tax',validatorRules.tax]"
:maxLength='50' :maxLength='50'
@blur="addZero" @blur="(e) => addZeroTaxOrNo(e, 'noTaxAmount', 'amountReceived')"
@change="e => e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"></a-input> @change="e => e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"></a-input>
</a-form-item> </a-form-item>
<a-form-item label="到账金额" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="到账金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入未税金额" <a-input placeholder="请输入未税金额"
v-decorator="['noTaxAmount',validatorRules.noTaxAmount]" v-decorator="['noTaxAmount',validatorRules.noTaxAmount]"
:maxLength='50' :maxLength='50'
@blur="addZero" @blur="(e) => addZeroTaxOrNo(e, 'tax', 'amountReceived')"
@change="e => e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"></a-input> @change="e => e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"></a-input>
</a-form-item> </a-form-item>
<a-form-item label="来款日期" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="来款日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -54,14 +54,15 @@
<script> <script>
import pick from 'lodash.pick' import pick from 'lodash.pick'
import { money } from '../../../../utils/validate'
import JDate from '../../../../components/tools/JDate' import JDate from '../../../../components/tools/JDate'
import { addPaymentPhase, editAmountPhase } from '../../../../api/incomePaymentsApi' import { addPaymentPhase, editAmountPhase } from '../../../../api/incomePaymentsApi'
import { addZero } from '../../../../utils/util' import { addZero } from '../../../../utils/util'
import { TaxOperateMixin } from './TaxOperateMixin'
export default { export default {
name: 'ArriveModule', name: 'ArriveModule',
components: { JDate }, components: { JDate },
mixins: [TaxOperateMixin],
props: { props: {
// 项目id // 项目id
projectId: { projectId: {
@@ -167,23 +168,6 @@ export default {
close() { close() {
this.visible = false this.visible = false
}, },
/**
* 校验金额格式
* @param rules
* @param value
* @param callback
* @param name --校验字段的名字
*
*/
checkMoneyTemplate(rules, value, callback, name) {
if (value) {
if (money(value)) {
callback()
}
callback('请输入合法的金额数字,最多2位小数,10位整数')
}
callback(`请输入${name}`)
},
// 校验金额格式 // 校验金额格式
checkMoney(rules, value, callback) { checkMoney(rules, value, callback) {
this.checkMoneyTemplate(rules, value, callback, '到账金额') this.checkMoneyTemplate(rules, value, callback, '到账金额')
@@ -194,22 +178,6 @@ export default {
checkTaxMoney(rules, value, callback) { checkTaxMoney(rules, value, callback) {
this.checkMoneyTemplate(rules, value, callback, '税额') this.checkMoneyTemplate(rules, value, callback, '税额')
}, },
// 总金额做相关的处理
addZeroAmount(event) {
this.addZero(event)
let finalValue = event.target.value
// 计算未税金额和税额的值
let obj = this.calcOtherNumber(finalValue)
// console.log(event.target.value )
this.$nextTick(() => {
this.form.setFieldsValue(obj)
})
},
calcOtherNumber(amount) {
let noTaxAmount = (amount / 1.06).toFixed(2) // 未税金额
let tax = (amount - noTaxAmount).toFixed(2) // 税额
return {noTaxAmount, tax}
},
} }
} }
</script> </script>
@@ -23,14 +23,14 @@
<a-input placeholder="请输入税额" <a-input placeholder="请输入税额"
v-decorator="['tax',validatorRules.tax]" v-decorator="['tax',validatorRules.tax]"
:maxLength='50' :maxLength='50'
@blur="addZero" @blur="(e) => addZeroTaxOrNo(e, 'noTaxAmount', 'amountReceived')"
@change="e => e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"></a-input> @change="e => e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"></a-input>
</a-form-item> </a-form-item>
<a-form-item label="未税金额" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="未税金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入未税金额" <a-input placeholder="请输入未税金额"
v-decorator="['noTaxAmount',validatorRules.noTaxAmount]" v-decorator="['noTaxAmount',validatorRules.noTaxAmount]"
:maxLength='50' :maxLength='50'
@blur="addZero" @blur="(e) => addZeroTaxOrNo(e, 'tax', 'amountReceived')"
@change="e => e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"></a-input> @change="e => e.target.value = (e.target.value.replace(/[^0-9-.]/g, '')).trim()"></a-input>
</a-form-item> </a-form-item>
<a-form-item label="确认日期" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="确认日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -55,15 +55,16 @@
<script> <script>
import pick from 'lodash.pick' import pick from 'lodash.pick'
import {money} from '../../../../utils/validate'
import JDate from '../../../../components/tools/JDate' import JDate from '../../../../components/tools/JDate'
// import { addPaymentPhase, editAmountPhase } from '../../../../api/incomePaymentsApi' // import { addPaymentPhase, editAmountPhase } from '../../../../api/incomePaymentsApi'
import {addZero} from '../../../../utils/util' import {addZero} from '../../../../utils/util'
import { getPayConfirmList, addPayConfirm, editPayConfirm } from '../../../../api/incomePaymentsApi' import { getPayConfirmList, addPayConfirm, editPayConfirm } from '../../../../api/incomePaymentsApi'
import { TaxOperateMixin } from './TaxOperateMixin'
export default { export default {
name: 'ConfirmModule', name: 'ConfirmModule',
components: {JDate}, components: {JDate},
mixins: [TaxOperateMixin],
props:{ props:{
// 项目id // 项目id
projectId: { projectId: {
@@ -151,6 +152,8 @@ export default {
this.form.resetFields() this.form.resetFields()
this.model = Object.assign({}, record) this.model = Object.assign({}, record)
this.projectInfo = Object.assign({}, projectInfo) this.projectInfo = Object.assign({}, projectInfo)
// 通过判断是否需要发票 来改变税率
this.taxRate = this.projectInfo.needInvoice ? 0.06 : 0
this.visible = true this.visible = true
this.$nextTick(() => { this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'amountReceived', 'tax', 'noTaxAmount','paymentDate', 'remark')) this.form.setFieldsValue(pick(this.model, 'amountReceived', 'tax', 'noTaxAmount','paymentDate', 'remark'))
@@ -214,23 +217,6 @@ export default {
close() { close() {
this.visible = false this.visible = false
}, },
/**
* 校验金额格式
* @param rules
* @param value
* @param callback
* @param name --校验字段的名字
*
*/
checkMoneyTemplate(rules, value, callback, name) {
if (value) {
if (money(value)) {
callback()
}
callback('请输入合法的金额数字,最多2位小数,10位整数')
}
callback(`请输入${name}`)
},
/** /**
* 校验金额格式 * 校验金额格式
*/ */
@@ -243,22 +229,7 @@ export default {
checkTaxMoney(rules, value, callback) { checkTaxMoney(rules, value, callback) {
this.checkMoneyTemplate(rules, value, callback, '税额') this.checkMoneyTemplate(rules, value, callback, '税额')
}, },
// 总金额做相关的处理
addZeroAmount(event) {
this.addZero(event)
let finalValue = event.target.value
// 计算未税金额和税额的值
let obj = this.calcOtherNumber(finalValue)
// console.log(event.target.value )
this.$nextTick(() => {
this.form.setFieldsValue(obj)
})
},
calcOtherNumber(amount) {
let noTaxAmount = (amount / 1.06).toFixed(2) // 未税金额
let tax = (amount - noTaxAmount).toFixed(2) // 税额
return {noTaxAmount, tax}
},
} }
} }
</script> </script>
@@ -22,14 +22,14 @@
<a-input placeholder="请输入税额" <a-input placeholder="请输入税额"
v-decorator="['tax',validatorRules.tax]" v-decorator="['tax',validatorRules.tax]"
:maxLength='50' :maxLength='50'
@blur="addZero" @blur="(e) => addZeroTaxOrNo(e, 'noTaxAmount', 'invoiceAmount')"
@change="e => e.target.value = (e.target.value.replace(/[^0-9.-]/g, '')).trim()"></a-input> @change="e => e.target.value = (e.target.value.replace(/[^0-9.-]/g, '')).trim()"></a-input>
</a-form-item> </a-form-item>
<a-form-item label="未税金额" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="未税金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入未税金额" <a-input placeholder="请输入未税金额"
v-decorator="['noTaxAmount',validatorRules.noTaxAmount]" v-decorator="['noTaxAmount',validatorRules.noTaxAmount]"
:maxLength='50' :maxLength='50'
@blur="addZero" @blur="(e) => addZeroTaxOrNo(e, 'tax', 'invoiceAmount')"
@change="e => e.target.value = (e.target.value.replace(/[^0-9.-]/g, '')).trim()"></a-input> @change="e => e.target.value = (e.target.value.replace(/[^0-9.-]/g, '')).trim()"></a-input>
</a-form-item> </a-form-item>
<a-form-item label="开票号" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="开票号" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -61,14 +61,15 @@
<script> <script>
import JDate from '../../../../components/tools/JDate' import JDate from '../../../../components/tools/JDate'
import pick from 'lodash.pick' import pick from 'lodash.pick'
import { money } from '../../../../utils/validate'
import { addPayBill, editPayBill } from '../../../../api/incomePaymentsApi' import { addPayBill, editPayBill } from '../../../../api/incomePaymentsApi'
import { addZero } from '../../../../utils/util' import { addZero } from '../../../../utils/util'
import { getContactsById } from '../../../../api/api' import { getContactsById } from '../../../../api/api'
import {TaxOperateMixin} from './TaxOperateMixin'
export default { export default {
name: 'InvoicingModule', name: 'InvoicingModule',
components: { JDate }, components: { JDate },
mixins: [TaxOperateMixin],
props: { props: {
// 项目id // 项目id
projectId: { projectId: {
@@ -220,23 +221,6 @@ export default {
close() { close() {
this.visible = false this.visible = false
}, },
/**
* 校验金额格式
* @param rules
* @param value
* @param callback
* @param name --校验字段的名字
*
*/
checkMoneyTemplate(rules, value, callback, name) {
if (value) {
if (money(value)) {
callback()
}
callback('请输入合法的金额数字,最多2位小数,10位整数')
}
callback(`请输入${name}`)
},
// 校验金额格式 // 校验金额格式
checkMoney(rules, value, callback) { checkMoney(rules, value, callback) {
@@ -247,23 +231,7 @@ export default {
}, },
checkTaxMoney(rules, value, callback) { checkTaxMoney(rules, value, callback) {
this.checkMoneyTemplate(rules, value, callback, '税额') this.checkMoneyTemplate(rules, value, callback, '税额')
}, }
// 总金额做相关的处理
addZeroAmount(event) {
this.addZero(event)
let finalValue = event.target.value
// 计算未税金额和税额的值
let obj = this.calcOtherNumber(finalValue)
// console.log(event.target.value )
this.$nextTick(() => {
this.form.setFieldsValue(obj)
})
},
calcOtherNumber(amount) {
let noTaxAmount = (amount / 1.06).toFixed(2) // 未税金额
let tax = (amount - noTaxAmount).toFixed(2) // 税额
return {noTaxAmount, tax}
},
} }
} }
</script> </script>
@@ -0,0 +1,68 @@
/*换入税率操作的相关方法*/
import {money} from '../../../../utils/validate'
export const TaxOperateMixin = {
data() {
return {
taxRate: 0.06, // 税率
}
},
methods: {
/**
* 校验金额格式
* @param rules
* @param value
* @param callback
* @param name --校验字段的名字
*
*/
checkMoneyTemplate(rules, value, callback, name) {
if (value) {
if (money(value)) {
callback()
}
callback('请输入合法的金额数字,最多2位小数,10位整数')
}
callback(`请输入${name}`)
},
// 总金额做相关的处理
addZeroAmount(event) {
this.addZero(event)
let finalValue = event.target.value
// 计算未税金额和税额的值
let obj = this.calcOtherNumber(finalValue)
// console.log(event.target.value )
this.$nextTick(() => {
this.form.setFieldsValue(obj)
})
},
/**
* 税额\未税金额 失去焦点的事件
* @param event --失去焦点的event ,存储当前input 的值
* @param keyName -- 想互斥 数字 对应的key值
* @param amountKeyName--当前dom 中 存储金额的字段的key值
*
*/
addZeroTaxOrNo(event, keyName, amountKeyName) {
console.log('-----addZeroTaxOrNo---', event.target.value)
this.addZero(event)
let amount = this.form.getFieldValue(amountKeyName)
if(!amount) return
let finalValue = event.target.value
let otherVlaue = (amount - finalValue).toFixed(2)
this.$nextTick(() => {
this.form.setFieldsValue({[keyName]: otherVlaue})
})
},
// 通过金额 计算 税额、未税金额
calcOtherNumber(amount) {
let noTaxAmount = (amount / (1 + this.taxRate)).toFixed(2) // 未税金额
let tax = (amount - noTaxAmount).toFixed(2) // 税额
return {noTaxAmount, tax}
},
}
}