1.先排序,在判断,
//升序排序,然后在判断
this.selectedData=this.selectedData.sort(function (a,b) {
return a.invoiceNo-b.invoiceNo;
});
2.最重要的是缺失的个数,以及具体缺失的数字,如果连续提示一共多少张发票
//模拟的数据 ,模拟的数据是数字,后台真正返回来的是字符串,所以需要转化一下
this.selectedData=[
{invoiceNo:3},
{invoiceNo:4},
{invoiceNo:5},
{invoiceNo:6},
// {invoiceNo:6},
// {invoiceNo:9},
// {invoiceNo:10},
// {invoiceNo:15},
// {invoiceNo:17},
// {invoiceNo:20},
];
if(this.selectedData.length>1){
//升序排序,然后在判断
this.selectedData=this.selectedData.sort(function (a,b) {
return a.invoiceNo-b.invoiceNo;
});
let arrInvoiceTotal=[];
let arrInvoiceMax=0
let flag=false
//this.selectedData.length-1为啥减1 因为数组长难度是从1开始的,for循环下标是从0开始的
for( let i=0; i<this.selectedData.length-1; i++){
//判断是否连续,并且把缺失的提示出来
if(Number(this.selectedData[i+1].invoiceNo)-Number(this.selectedData[i].invoiceNo) !=1){//说明是不连续,否则是连续
let num=this.selectedData[i+1].invoiceNo-this.selectedData[i].invoiceNo-1 //缺失的个数
for(let j=0; j<num; j++){
arrInvoiceTotal.push(Number(this.selectedData[i].invoiceNo)+1 + j)//就是具体缺失的数字 //第一次J是0 第二次J是1
arrInvoiceMax=arrInvoiceTotal.slice(0,3) //取出数组前三个
flag=true
}
}
}
if(flag){
this.$confirm('发票号码'+arrInvoiceMax+'等共计' +arrInvoiceTotal.length +'张发票缺失,请确实!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
console.log('不连续,确认不调接口')
}).catch(() => {
//取消
console.log('取消')
});
}else{
this.$confirm('将要打印'+this.selectedData.length+'张发票,是否确实!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.exportList(this.selectedData)
}).catch(() => {
//取消
console.log('取消')
});
}
}else if(this.selectedData.length==1){
this.$confirm('将要打印'+this.selectedData.length+'张发票,是否确实!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.exportList(this.selectedData)
}).catch(() => {
//取消
console.log('取消')
});
}
}
3完整的代码
//打印
printBtn() {
if (!this.selectedData.length) {
return this.$message.warning("请选择账单");
}
let flag = false;
this.selectedData.map((item, index) => {
//开票成功 红冲成功 作废成功 纸质普票 纸质专票
if (
!(item.status == 1020 || item.status == 1050 || item.status == 1040) ||
!(item.invoiceForm == 0 || item.invoiceForm == 2)
) {
flag = true;
}
});
if (flag) {
return this.$message.warning(
`已选账单包含不能打印的数据, 请选择开票成功的纸质发票`
);
} else {
if(this.selectedData.length>1){
//升序排序,然后在判断
this.selectedData=this.selectedData.sort(function (a,b) {
return a.invoiceNo-b.invoiceNo;
});
let arrInvoiceTotal=[];
let arrInvoiceMax=0
let flag=false
for( let i=0; i<this.selectedData.length-1; i++){
//判断是否连续,并且把缺失的提示出来(注意这里后台返回来的字符串,所以改成)
if(Number(this.selectedData[i+1].invoiceNo)-Number(this.selectedData[i].invoiceNo) !=1){//说明是不连续,否则是连续
let num=this.selectedData[i+1].invoiceNo-this.selectedData[i].invoiceNo-1 //缺失的个数
for(let j=0; j<num; j++){
arrInvoiceTotal.push(Number(this.selectedData[i].invoiceNo)+1 + j)//就是具体缺失的数字 //第一次J是0 第二次J是1
arrInvoiceMax=arrInvoiceTotal.slice(0,3) //取出数组前三个
flag=true
}
}
}
if(flag){
this.$confirm('发票号码'+arrInvoiceMax+'等共计' +arrInvoiceTotal.length +'张发票缺失,请确实!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
console.log('不连续,确认不调接口')
}).catch(() => {
//取消
console.log('取消')
});
}else{
this.$confirm('将要打印'+this.selectedData.length+'张发票,是否确实!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.exportList(this.selectedData)
}).catch(() => {
//取消
console.log('取消')
});
}
}else if(this.selectedData.length==1){
this.$confirm('将要打印'+this.selectedData.length+'张发票,是否确实!', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.exportList(this.selectedData)
}).catch(() => {
//取消
console.log('取消')
});
}
}
},
网友评论