MrShi
7 天以前 eb7a808aaf7dd0a6dd2ff70f9ef3f8ce0b1e31d1
admin/src/components/business/OperaCouponEdit.vue
@@ -17,9 +17,9 @@
      <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>
@@ -72,8 +72,8 @@
      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' }]
      }
@@ -125,11 +125,33 @@
        })
      })
    },
    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()
        }