美文网首页
选中的数据数字是否连续,并且把不连续的提示出来

选中的数据数字是否连续,并且把不连续的提示出来

作者: 流泪手心_521 | 来源:发表于2021-08-16 15:07 被阅读0次

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('取消')
          });
        }
      }
    },

相关文章

网友评论

      本文标题:选中的数据数字是否连续,并且把不连续的提示出来

      本文链接:https://www.haomeiwen.com/subject/jmwmbltx.html