字段校验1:
<template v-if="resource === 2" slot="writeOffAmount" slot-scope="text, row, index">
<a-form-model-item
:prop="'recordPayList.' + index + '.writeOffAmount'"
:rules="[
{
validator: (rule, value, callback) => {
if (!value) {
callback('请输入核销金额');
} else if ( row.usableAmount > 0 && (Number(value) > row.usableAmount || Number(value) < 0)) {
callback('数量值输入错误');
} else if ( row.usableAmount < 0 && (Number(value) < row.usableAmount || Number(value) > 0)) {
callback('数量值输入错误');
} else if(!/^(-|\+)?\d{1,10}(\.\d{0,2})?$/.test(value)) {
callback('整数10位,小数2位');
} else if(Number(value) === 0){
callback('不可为0');
} else {
callback();
}
},
trigger: 'change',
}
]"
>
<a-input v-model="row.writeOffAmount" @input="row.writeOffAmount = row.writeOffAmount.replace(/[^\-\d\.]/g, '')" />
</a-form-model-item>
</template>
字段校验2:
<span slot="payableQuantity" slot-scope="payableQuantity, row, index">
<a-form-model-item
:wrapperCol="{ pan: 24 }"
:rules="rules.payableQuantity"
:prop="'purchaseDifferenceItemRespDtoList.' + index + '.payableQuantity'"
>
<a-input
v-model="row.payableQuantity"
:maxLength="10"
@change="row.payableQuantity = row.payableQuantity.replace(/[^\d]/g, '')"
/>
</a-form-model-item>
</span>
data(){
return {
rules: {
// payableQuantity: [{ required: true, message: "请输入", trigger: "change" }],
payableQuantity: [
{ required: true, message: "请输入", trigger: "change" },
{ validator: this.validatePass, trigger: "change" }
]
},
}
},
methods: {
validatePass(rule, value, callback) {
let index = Number(rule.field.split(".")[1]);
let differenceQuantity = this.form.purchaseDifferenceItemRespDtoList[index].differenceQuantity
if (value === "") {
callback(new Error("请输入"));
} else {
if (parseFloat(value) > Math.abs(differenceQuantity)) {
callback(new Error("不大于差异数量"));
} else {
callback();
}
}
},
}
单独交验某个字段
this.$refs.ruleForm.validateField("purchaseItemRespDtoList." + index + ".newAmountIncludingTax");
取消校验
this.$refs.ruleForm.clearValidate([
'purchaseItemRespDtoList.'+ index + '.newPriceIncludingTax',
'purchaseItemRespDtoList.'+ index + '.newAmountIncludingTax'
]);