jeecg boot vue2版本表单中使用a-silder后报错 Invalid prop: type check failed for prop “value“. Expected Number

问题排查首先在每一个用到a-silder中的值的代码中去添加打印语句,发现是因为postAction提交请求后将请求数据体中的数值类型转化为了字符串类型,源码如下

export function postAction(url,parameter) {
  //这一步中将请求参数中的数值类型转化为了字符串
  let sign = signMd5Utils.getSign(url, parameter);
  //将签名和时间戳,添加在请求接口 Header
  // update-begin--author:taoyan---date:20220421--for: VUEN-410【签名改造】 X-TIMESTAMP牵扯
  let signHeader = {"X-Sign": sign,"X-TIMESTAMP": signMd5Utils.getTimestamp()};
  // update-end--author:taoyan---date:20220421--for: VUEN-410【签名改造】 X-TIMESTAMP牵扯

  return axios({
    url: url,
    method:'post' ,
    data: parameter,
    headers: signHeader
  })
}

点击getSign跳转到对应的实现方法,中的mergeObject将请求参数中的数值类型转化为了字符串类型

static getSign(url, requestParams) {
    let urlParams = this.parseQueryString(url);
    let jsonObj = this.mergeObject(urlParams, requestParams);
    //console.log("sign jsonObj: ",jsonObj)
    let requestBody = this.sortAsc(jsonObj);
    //清空对象
    console.log("sign requestBody: ",requestBody)
    return md5(JSON.stringify(requestBody) + signatureSecret).toUpperCase();
  }
  /**
   * @returns {*} 将两个对象合并成一个
   */
  static mergeObject(objectOne, objectTwo) {
    if (objectTwo && Object.keys(objectTwo).length > 0) {
      for (let key in objectTwo) {
        if (objectTwo.hasOwnProperty(key) === true) {
          //数字值转为string类型,前后端加密规则保持一致
          if(this.myIsNaN(objectTwo[key])){
            objectTwo[key] = objectTwo[key].toString()
          }
          objectOne[key] = objectTwo[key];
        }
      }
    }
    return objectOne;
  }

找到问题的关键后,我们使用Object.assgin新建一个临时对象copy请求参数,然后通过这个copy的请求参数对象去获取sign,在获取成功后将copy的请求参数清空,修改后的代码如下:

static getSign(url, requestParams) {
    let urlParams = this.parseQueryString(url);
    //解决对象中数值类型转化为字符串问题页面报错
    let tempParams = Object.assign({}, requestParams);
    let jsonObj = this.mergeObject(urlParams, tempParams);
    //console.log("sign jsonObj: ",jsonObj)
    let requestBody = this.sortAsc(jsonObj);
    //清空对象
    Object.assign(tempParams, {});
    console.log("sign requestBody: ",requestBody)
    return md5(JSON.stringify(requestBody) + signatureSecret).toUpperCase();
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值