1. 程式人生 > >qs.js解決傳參為空,null,undefinde問題

qs.js解決傳參為空,null,undefinde問題

qs.js去除引數為空的引數

vue的後臺管理專案匯出功能按搜尋條件傳參匯出,但是後臺比接受值為null,空,undefined的值。直接上程式碼

 let  obj={
            "isAppointment" :this.isAppointment,
            "id":this.selectorBehindObj.orderNumber, //工單號
            "thirdOrderId":this.selectorBehindObj.thirdOrderId, //渠道商訂單號
            "userPhoneNum":this
.selectorBehindObj.userPhoneNum, //下訂單繫結手機號碼 "linkmanPhoneNum":this.selectorBehindObj.orderTel, //下訂單聯絡人手機號碼 "linkmanCityId":this.selectorBehindObj.cityId, //城市 "linkmanAreaId":this.selectorBehindObj.areaId, //區域 "appointmentDatetime":this.selectorBehindObj.makeTime, //預約時間
"createTime":this.selectorBehindObj.placeTime, // 下單時間 "state":this.selectorBehindObj.orderStatus, //工單狀態 "officialPartnerId":this.channelID, //主渠道ID 'officialPartnerSubsetId':this.officialPartnerSubsetId, //子渠道ID "appointmentDatetimeStartStr"
:this.statisticsDateStartStr, //預約開始時間 "appointmentDatetimeEndStr":this.statisticsDateEndStr, //預約結束時間 "createTimeStartStr":this.statisticsDateStartStr2, //下單開始時間 "createTimeEndStr":this.statisticsDateEndStr2, //下單結束時間 'fLabelBusiness':this.selectorBehindObj.labelId, //工單分類 "type":this.orderName, // 工單型別 "linkmanName":this.phoneName, // 聯絡人 "masterName":this.masterName, // 工程師姓名 "masterPhoneNum":this.masterPhone, // 工程師手機 "completedTimeStartStr": this.completedTimeStartStr, // 完成開始時間 "completedTimeEndStr": this.completedTimeEndStr,// 完成結束時間 "channelWarranty":this.selectQuality , // 質保 "source":this.numId1, // 工單來源 "siteId":this.siteID, // 網點名稱 }

上訴程式碼中是後臺搜尋條件必須要的引數,但是匯出又不接受null,空,unedfinde等值。

npm install qs -S

在main.js中全域性引入

import qs from “qs”
Vue.prototype.$Qs = qs; 繫結在vue的原型上

在需要的頁面用到首先排除為空的值qs可以把為null的去掉,所以為空的全部變為null,

for(let key in obj){
      if(!obj[key]){
        obj[key] = null;
      }
    }

匯出的路徑介面視窗另外開啟下載

 let strUrl = `${this.$reportdomain}/order/download?`;
    let data = strUrl+this.$Qs.stringify(obj,{skipNulls:true});
    window.open(data, 'newwindow', 'top=0, left=0, toolbar=yes, menubar=yes, scrollbars=yes, resizable=yes, location=yes, status=yes')

qs.js的NULL值處理

預設地,Null值會被解析為空字串:

var withNull = qs.stringify({ a: null, b: '' }); //'a=&b='

解析器不區分引數是否含有等號或者不含都會轉換為空:

qs.parse('a&b='); //{ a: '', b: '' }

在字串化的時候,可以使用strictNullHandling選項來區分Null值和空,輸出結果中Null值將不會含有等號:

qs.stringify({ a: null, b: '' }, { strictNullHandling: true })//'a&b='

如果要將沒有等號的字串值解析為Null的話,也可以使用strictNullHandling選項:

qs.parse('a&b=', { strictNullHandling: true }) //{ a: null, b: '' }

skipNulls選項可以忽略Null值的解析:

qs.stringify({ a: 'b', c: null}, { skipNulls: true }) //'a=b'