mixins.js 11.6 KB
export const inputBlurValidate = {
  data() {
    return {
      queryForm: {
        minWeight: "",
        maxWeight: "",
        minNumOfPieces: "",
        maxNumOfPieces: "",
      },
      validateForm: true,
    };
  },
  methods: {
    // 最小件数失焦事件
    inputBlurMinPieces({ target }) {
      this.validateNumOfPieces(target.value, "minNumOfPieces");
    },
    // 最大件数失焦事件
    inputBlurMaxPieces({ target }) {
      this.validateNumOfPieces(target.value, "maxNumOfPieces");
    },
    // 最小重量失焦事件
    inputBlurMinWeight({ target }) {
      this.validateWeight(target.value, "minWeight");
    },
    // 最大重量失焦事件
    inputBlurMaxWeight({ target }) {
      this.validateWeight(target.value, "maxWeight");
    },
    // 最小申报价值
    inputBlurMin({ target }, customVal) {
      this.validateCustomVal(target.value, customVal);
    },
    // 最大申报价值
    inputBlurMax({ target }, customVal) {
      this.validateCustomVal(target.value, customVal);
    },
    // 校验件数方法 【件数可以为空但件数不得为0】只能输入正整数
    validateNumOfPieces(value, pieces) {
      if (value.toString().length) {
        // 获取当前输入框有值的情况下
        this.queryForm[pieces] = Number(value);
        let markPieces = false;
        if (pieces == "minNumOfPieces" || pieces == "maxNumOfPieces") {
          // 最大件数和最小件数都不为空的情况下
          if (
            this.queryForm.minNumOfPieces.toString() != "" &&
            this.queryForm.maxNumOfPieces.toString() != ""
          ) {
            this.validateForm = true;
            this.$refs.minNumOfPieces.innerHTML = "";
            markPieces = true;
          } else {
            markPieces = false;
          }
        }
        if (/^\d+$/.test(this.queryForm[pieces])) {
          if (markPieces) {
            //当最大件数和最小件数都不为空的情况下,最大件数小于最小件数的时候
            if (this.queryForm.maxNumOfPieces < this.queryForm.minNumOfPieces) {
              if (Array.isArray(this.$refs.minNumOfPieces)) {
                this.msgError("最小件数不得大于最大件数");
                this.validateForm = false;
              } else {
                this.$refs.minNumOfPieces.innerHTML = "";
                this.$refs.minNumOfPieces.innerHTML =
                  "最小件数不得大于最大件数";
                this.validateForm = false;
              }
            }
            //当最大件数和最小件数都不为空的情况下,最大件数和最小件数小于1的时候
            else if (
              this.queryForm.minNumOfPieces < 1 ||
              this.queryForm.maxNumOfPieces < 1
            ) {
              if (Array.isArray(this.$refs.minNumOfPieces)) {
                this.msgError("最小件数和最大件数不能小于1");
                this.validateForm = false;
              } else {
                this.$refs.minNumOfPieces.innerHTML = "";
                this.$refs.minNumOfPieces.innerHTML =
                  "最小件数和最大件数不能小于1";
                this.validateForm = false;
              }
            }
            //当最大件数和最小件数都不为空的情况下,最大件数和最小件数满足大于1左区间小于等于右区间的时候
            else {
              this.$refs.minNumOfPieces.innerHTML = "";
              this.validateForm = true;
            }
          } else {
            // 当左右区间其中一个有值的情况下
            if (value.length) {
              if (Number(value) < 1) {
                if (Array.isArray(this.$refs.minNumOfPieces)) {
                  this.msgError("件数不得小于1");
                  this.$refs.minNumOfPieces.innerHTML = "";
                  this.$refs.minNumOfPieces.innerHTML = "件数不得小于1";
                  this.validateForm = false;
                } else {
                  this.msgError("件数不得小于1");
                  this.$refs.minNumOfPieces.innerHTML = "";
                  this.$refs.minNumOfPieces.innerHTML = "件数不得小于1";
                  this.validateForm = false;
                }
              } else {
                if (!Array.isArray(this.$refs.minNumOfPieces)) {
                  this.$refs.minNumOfPieces.innerHTML = "";
                  this.validateForm = true;
                }
              }
            }
          }
        } else {
          if (Array.isArray(this.$refs.minNumOfPieces)) {
            this.msgError("请输入有效件数");
          } else {
            this.$refs.minNumOfPieces.innerHTML = "";
            this.$refs.minNumOfPieces.innerHTML = "请输入有效件数";
          }
          this.validateForm = false;
        }
      } else {
        // 【左右区间不是都有值的情况下】
        // 最小件数为空最大件数有值的情况下
        if (pieces == "minNumOfPieces" && this.queryForm.maxNumOfPieces > 0) {
          this.$refs.minNumOfPieces.innerHTML = "";
          this.validateForm = true;
        } else {
          this.$refs.minNumOfPieces.innerHTML = "";
          this.$refs.minNumOfPieces.innerHTML = "最大件数不得小于1";
          this.validateForm = false;
        }
        // 最大件数为空最小件数有值的情况下
        if (pieces == "maxNumOfPieces" && this.queryForm.minNumOfPieces > 0) {
          this.$refs.minNumOfPieces.innerHTML = "";
          this.validateForm = true;
        } else {
          this.$refs.minNumOfPieces.innerHTML = "";
          this.validateForm = true;
        }
        // 左右区间 都为空的情况下
        if (
          this.queryForm.minNumOfPieces.toString().length == 0 &&
          this.queryForm.maxNumOfPieces.toString().length == 0
        ) {
          this.$refs.minNumOfPieces.innerHTML = "";
          this.validateForm = true;
        }
      }
      return this.validateForm;
    },
    // 校验重量方法 【重量可以为空为0 && 最小/大重量的范围0~34KG】允许保留1~5位小数。
    validateWeight(value, weight) {
      if (value.length) {
        this.queryForm[weight] = Number(value);
        let markWeight = false;
        if (weight == "minWeight" || weight == "maxWeight") {
          if (this.queryForm.minWeight && this.queryForm.maxWeight) {
            markWeight =
              Number(this.queryForm.maxWeight) <
              Number(this.queryForm.minWeight);
          }
        }
        if (/^(0|[1-9]\d*)(.\d{1,5})?$/.test(this.queryForm[weight])) {
          if (this.queryForm[weight] >= 0) {
            if (markWeight) {
              if (Array.isArray(this.$refs.minWeight)) {
                this.validateForm = false;
                this.msgError("最小重量不得大于最大重量");
              } else {
                this.validateForm = false;
                this.$refs.minWeight.innerHTML = "";
                this.$refs.minWeight.innerHTML = "最小重量不得大于最大重量";
              }
            }
            // else if (this.queryForm[weight] > 34) {
            //   this.validateForm = false;
            //   if (Array.isArray(this.$refs.minWeight)) {
            //     this.msgError("最大重量不能大于34KG");
            //   } else {
            //     this.validateForm = false;
            //     this.$refs.minWeight.innerHTML = "";
            //     this.$refs.minWeight.innerHTML = "最大重量不能大于34KG";
            //   }
            // }
            else {
              if (!Array.isArray(this.$refs.minWeight)) {
                this.validateForm = true;
                this.$refs.minWeight.innerHTML = "";
              }
            }
          } else {
            if (value.length) {
              if (Number(value) > 34) {
                if (Array.isArray(this.$refs.minWeight)) {
                  this.validateForm = false;
                  this.msgError("最大重量不能大于34KG");
                } else {
                  this.validateForm = false;
                  this.$refs.minWeight.innerHTML = "";
                  this.$refs.minWeight.innerHTML = "最大重量不能大于34KG";
                }
              } else {
                if (!Array.isArray(this.$refs.minWeight)) {
                  this.validateForm = true;
                  this.$refs.minWeight.innerHTML = "";
                }
              }
            }
          }
        } else {
          if (Array.isArray(this.$refs.minWeight)) {
            this.validateForm = false;
            this.msgError("请输入正整数,小数保留5位");
          } else {
            this.validateForm = false;
            this.$refs.minWeight.innerHTML = "";
            this.$refs.minWeight.innerHTML = "请输入正整数,小数保留5位";
          }
        }
      } else {
        this.validateForm = true;
        this.$refs.minWeight.innerHTML = "";
      }
      return this.validateForm;
    },
    // 报价值【申报价值可以为空为0】
    validateCustomVal(value, customVal) {
      // 先判断输入的值是否符合符合规则,再判断申报价值区间
      let coin = {
        minCNYCustomVal: "minCNYCustomVal",
        maxCNYCustomVal: "minCNYCustomVal",
        minSUDCustomVal: "minSUDCustomVal",
        maxSUDCustomVal: "minSUDCustomVal",
      };
      // 区间范围
      let currency = {
        minCNYCustomVal: 2000,
        maxCNYCustomVal: 2000,
        minSUDCustomVal: 600,
        maxSUDCustomVal: 600,
      };
      if (value.length) {
        this[customVal] = Number(value);
        if (/^(0|[1-9]\d*)(.\d{1,2})?$/.test(this[customVal])) {
          // 其中一个有值的情况下人民币
          if (
            customVal == "minCNYCustomVal" ||
            customVal == "maxCNYCustomVal"
          ) {
            // 如果人民币两个都有值的情况下
            if (this.minCNYCustomVal && this.maxCNYCustomVal) {
              // 判断右区间是否大于左区间
              if (Number(this.maxCNYCustomVal) < Number(this.minCNYCustomVal)) {
                this.$refs[coin[customVal]].innerHTML =
                  "最小申报价值不得大于最大申报价值";
                this.validateForm = false;
              } else {
                this.$refs[coin[customVal]].innerHTML = "";
                this.validateForm = true;
              }
            } else {
              this.$refs[coin[customVal]].innerHTML = "";
              this.validateForm = true;
            }
          }
          // 其中一个有值的情况下美元
          if (
            customVal == "minSUDCustomVal" ||
            customVal == "maxSUDCustomVal"
          ) {
            // 如果美元两个都有值的情况下
            if (this.minSUDCustomVal && this.maxSUDCustomVal) {
              // 判断右区间是否大于左区间
              if (Number(this.maxSUDCustomVal) < Number(this.minSUDCustomVal)) {
                this.$refs[coin[customVal]].innerHTML =
                  "最小申报价值不得大于最大申报价值";
                this.validateForm = false;
              } else {
                this.$refs[coin[customVal]].innerHTML = "";
                this.validateForm = true;
              }
            } else {
              this.validateForm = true;
              this.$refs[coin[customVal]].innerHTML = "";
            }
          }
        } else {
          this.validateForm = false;
          this.$refs[coin[customVal]].innerHTML = "";
          this.$refs[coin[customVal]].innerHTML = "请输入正确申报价值";
        }
      } else {
        this.validateForm = true;
        this.$refs[coin[customVal]].innerHTML = "";
      }
      return this.validateForm;
    },
  },
};