| | |
| | | <el-form-item label="优惠规则" prop="limitPrice"> |
| | | <div class="rule-row"> |
| | | <span>订单实付满</span> |
| | | <el-input v-model.number="form.limitPrice" placeholder="请输入金额(分)" style="width: 100px; margin: 0 5px;"></el-input> |
| | | <el-input v-model="form.limitPrice" placeholder="请输入金额" style="width: 100px; margin: 0 5px;"></el-input> |
| | | <span>元,减</span> |
| | | <el-input v-model.number="form.price" placeholder="请输入金额(分)" style="width: 100px; margin: 0 5px;"></el-input> |
| | | <el-input v-model="form.price" placeholder="请输入金额" style="width: 100px; margin: 0 5px;"></el-input> |
| | | <span>元</span> |
| | | </div> |
| | | </el-form-item> |
| | |
| | | rules: { |
| | | name: [{ required: true, message: '请输入优惠券名称', trigger: 'blur' }, { max: 20, message: '优惠券名称不能超过20个字符', trigger: 'blur' }], |
| | | type: [{ required: true, message: '请选择类型', trigger: 'change' }], |
| | | limitPrice: [{ required: true, message: '请输入满减金额', trigger: 'blur' }, { validator: this.validateAmountDifference, trigger: 'blur' }], |
| | | price: [{ required: true, message: '请输入优惠金额', trigger: 'blur' }], |
| | | limitPrice: [{ required: true, message: '请输入满减金额', trigger: 'blur' }, { validator: this.validatePositiveDecimal, trigger: 'blur' }, { validator: this.validateAmountDifference, trigger: 'blur' }], |
| | | price: [{ required: true, message: '请输入优惠金额', trigger: 'blur' }, { validator: this.validatePositiveDecimal, trigger: 'blur' }], |
| | | pushDays: [{ required: true, message: '请输入限领天数', trigger: 'blur' }, { validator: this.validatePositiveInteger, trigger: 'blur' }], |
| | | validDays: [{ required: true, message: '请输入限用天数', trigger: 'blur' }, { validator: this.validatePositiveInteger, trigger: 'blur' }] |
| | | } |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | validatePositiveDecimal (rule, value, callback) { |
| | | if (value !== null && value !== '' && value !== undefined) { |
| | | const num = Number(value) |
| | | if (isNaN(num) || num <= 0) { |
| | | callback(new Error('必须大于0')) |
| | | } else { |
| | | const str = String(num) |
| | | if (str.includes('.')) { |
| | | const decimal = str.split('.')[1] |
| | | if (decimal.length > 2) { |
| | | callback(new Error('最多支持两位小数')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | } else { |
| | | callback() |
| | | } |
| | | }, |
| | | validateAmountDifference (rule, value, callback) { |
| | | if (this.form.price && value) { |
| | | const difference = value - this.form.price |
| | | if (difference <= 10) { |
| | | callback(new Error('金额差必须大于10元')) |
| | | if (difference < 10) { |
| | | callback(new Error('金额差必须大于等于10元')) |
| | | } else { |
| | | callback() |
| | | } |