两个接口数据合并
序:
场景是这样的,后端提供了两个接口,接口1中的bb属性和接口2中的aa属性是一样的的。需要对一下情况进行处理:
- 接口1中cc、dd分别是表格的两列显示字段,并对返回字段为null或NaN,页面要求显示为空,
- 接口2中code返回的值需要进行处理(0表示对应的字段显示‘’--‘’,1表示对应字段返回需要保留2位小数,2表示对应返回的字段取整)
- 所有数据排序根据接口2中的id进行排序
实现代码
tableData: [] // table表格数据
async onSearch(params) {
// 接口1数据
let data = await new Promise((resolve, reject) =>{
this.$axios.post("/A123456", {
acctperiod: params
})
.then(res => {
resolve(res.data)
})
.catch(error => {
reject(error)
})
})
// 接口2数据
let data1 = await new Promise((resolve, reject) =>{
this.$axios.post("/A111111", {
acctperiod: params
})
.then(res => {
resolve(res.data)
})
.catch(error => {
reject(error)
})
})
this.tableData = data1.map(x=>{
data.forEach(y => {
// 将data的数据放到data1中
if(x.aa === y.bb) {
x.cc = y.cc || ''
x.dd = y.dd || ''
}
});
// 对没有数据的采用占位符
if(x.code == 0) {
x.cc = "--"
x.dd = "--"
}
// 保留两位小数
if(x.code == 1) {
x.cc = Math.floor(x.cc * 100) / 100
x.dd = Math.floor(x.dd * 100) / 100
}
// 取整数
if(x.code == 2) {
x.cc = parseInt(x.cc)
x.dd = parseInt(x.dd)
}
return {...x}
})
// 根据id排序
this.tableData = this.tableData.sort((a,b) => a.id - b.id);
}