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')
默认地,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'