1、template:提前安装iview,主要使用iview相关控件
<template><div class="test"><Button @click="add">增加</Button><Modal v-model="Model":closable="false":mask-closable="false"><Form ref="formValidate" :model="formValidate" :rules="ruleValidate" :label-width="100"><FormItem label="报销金额" prop="reimburseAmount"><Input v-model="formValidate.reimburseAmount" style="width: 320px" placeholder="请输入报销金额..."></Input></FormItem><FormItem label="税率 ( % )" prop="taxRate" :rules="{ required: true, message: '税率不能为空,请输入'}"><InputNumber:max="100":min="1"v-model="formValidate.taxRate"style="width: 320px;"placeholder="请输入税率...":formatter="value => `${value}%`":parser="value => value.replace('%', '')"></InputNumber></FormItem><FormItem label="税额" prop="taxAmount" :rules="{ required: true, message: '税额不能为空且小数点后只能保留2位,请输入'}"><InputNumberv-model="formValidate.taxAmount"style="width: 320px"placeholder="请输入税额..."></InputNumber></FormItem></Form><div slot="footer"><Button @click="Cancel">取消</Button><Button type="primary" @click="Submit('formValidate')">确定</Button></div></Modal></div></template>
2、data:主要定义需要用到的一些属性
data () {// 验证报销金额const validateReimburseAmount = (rule, value, callback) => {let reg = /^\d+(?:\.\d{1,2})?$/if (!reg.test(value)) {callback(new Error('报销金额只能保留两位小数,请重新输入'))} else {callback()}}return {Model: false,formValidate: {reimburseAmount: 0,taxRate: 0,taxAmount: 0},ruleValidate: {reimburseAmount: [{ required: true, message: '报销金额不能为空,请输入', trigger: 'blur' },{validator: validateReimburseAmount, trigger: 'blur'}]}}}
3、computed :计算当前控件的值
computed: {reimburseAmounts () {return this.formValidate.reimburseAmount},taxRates () {return this.formValidate.taxRate},taxAmounts () {return this.formValidate.taxAmount}}
4、watch : 监听报销金额和税率变化的时候,得到的税额
watch: {reimburseAmounts (n, o) {// console.log("reimburseAmounts", n, o)this.formValidate.taxAmount = n * (this.formValidate.taxRate / 100)this.formValidate.taxAmount = parseFloat(this.formValidate.taxAmount.toFixed(2))},taxRates (n, o) {// console.log("taxRates", n, o)this.formValidate.taxAmount = this.formValidate.reimburseAmount * (n / 100)this.formValidate.taxAmount = parseFloat(this.formValidate.taxAmount.toFixed(2))},taxAmounts (n, o) {// console.log("taxAmounts", n, o)this.formValidate.taxAmount = parseFloat(this.formValidate.taxAmount.toFixed(2))}}
5、methods : 一些操作方法
methods: {add: function () {let self = thisself.Model = true},Cancel: function () {let self = thisself.Model = false},Submit: function (name) {let self = thisconsole.log(self.formValidate.taxAmount)}}
