Commit 5b9b00ab0ebdbc2db3f2f3e23eb6e67db382dbeb

Authored by 王强
1 parent 062942df

购好物,首页“折扣专区”和“积分商城”模块,定时切换商品的逻辑健壮性处理~

src/pages/optimization2/optimization2.vue
@@ -658,48 +658,68 @@ @@ -658,48 +658,68 @@
658 // 判断是否有积分商城 658 // 判断是否有积分商城
659 if (this.showIntegral && datas.integral_goods && datas.integral_goods.length) { 659 if (this.showIntegral && datas.integral_goods && datas.integral_goods.length) {
660 660
661 - // 当前展示的折扣专区数据  
662 - this.$set(this.discountData, 'now', [this.discountLists[0], this.discountLists[1]]); 661 + // 判断折扣专区是否有数据
  662 + if (this.discountLists.length) {
  663 +
  664 + // 当前展示的折扣专区数据(兼容数据不足 2 个的情况)
  665 + if (this.discountLists.length >= 2) {
  666 + this.$set(this.discountData, 'now', [this.discountLists[0], this.discountLists[1]]);
  667 + } else {
  668 + this.$set(this.discountData, 'now', [this.discountLists[0]]);
  669 + }
663 670
664 - // 设置折扣专区下一条数据数组下标  
665 - this.$set(this.discountData, 'next', this.discountData.now.length); 671 + // 设置折扣专区下一条数据数组下标(根据数组长度,兼容数据 <= 2 的情况)
  672 + this.$set(this.discountData, 'next', this.discountData.now.length < this.discountLists.length ? this.discountData.now.length : 0);
666 673
667 - // 设置折扣专区计时器,每3秒切换一次数据  
668 - this.$nextTick(() => { 674 + // 设置折扣专区计时器,每3秒切换一次数据
  675 + this.$nextTick(() => {
669 676
670 - // 轮训计时器  
671 - setInterval(() => {  
672 -  
673 - // 切换折扣专区数据  
674 - this.fade(this.discountData, this.discountLists);  
675 - }, 3000);  
676 - }); 677 + // 判断数据数量是否 > 2 ,如果是,执行切换轮训
  678 + if (this.discountData.now.length < this.discountLists.length) {
  679 +
  680 + // 轮训计时器
  681 + setInterval(() => {
  682 +
  683 + // 切换折扣专区数据
  684 + this.fade(this.discountData, this.discountLists);
  685 + }, 3000);
  686 + }
  687 + });
  688 + }
677 689
678 // 积分商城数据 690 // 积分商城数据
679 this.$set(this, 'pointsLists', datas.integral_goods); 691 this.$set(this, 'pointsLists', datas.integral_goods);
680 692
681 - // 当前展示的积分商城数据  
682 - this.$set(this.pointsData, 'now', [this.pointsLists[0], this.pointsLists[1]]); 693 + // 当前展示的积分商城数据(兼容数据不足 2 个的情况)
  694 + if (this.pointsLists.length >= 2) {
  695 + this.$set(this.pointsData, 'now', [this.pointsLists[0], this.pointsLists[1]]);
  696 + } else {
  697 + this.$set(this.pointsData, 'now', [this.pointsLists[0]]);
  698 + }
683 699
684 // 设置积分商城下一条数据数组下标 700 // 设置积分商城下一条数据数组下标
685 - this.$set(this.pointsData, 'next', this.pointsData.now.length); 701 + this.$set(this.pointsData, 'next', this.pointsData.now.length < this.pointsLists.length ? this.pointsData.now.length : 0);
686 702
687 // 设置积分商城计时器,每3秒切换一次数据 703 // 设置积分商城计时器,每3秒切换一次数据
688 this.$nextTick(() => { 704 this.$nextTick(() => {
689 705
690 - // 和折扣专区岔开,延时1秒执行  
691 - setTimeout(() => {  
692 -  
693 - // 随机生成轮训时间  
694 - let timer = (parseInt(Math.random() * (500 + 1) + 3000, 10) || 3000); 706 + // 判断数据数量是否 > 2 ,如果是,执行切换轮训
  707 + if (this.pointsData.now.length < this.pointsLists.length) {
695 708
696 - // 轮训计时器  
697 - setInterval(() => { 709 + // 和折扣专区岔开,延时1秒执行
  710 + setTimeout(() => {
698 711
699 - // 切换折扣专区数据  
700 - this.fade(this.pointsData, this.pointsLists);  
701 - }, timer || 3000);  
702 - }, 1000); 712 + // 随机生成轮训时间
  713 + let timer = (parseInt(Math.random() * (500 + 1) + 3000, 10) || 3000);
  714 +
  715 + // 轮训计时器
  716 + setInterval(() => {
  717 +
  718 + // 切换折扣专区数据
  719 + this.fade(this.pointsData, this.pointsLists);
  720 + }, timer || 3000);
  721 + }, 1000);
  722 + }
703 }); 723 });
704 } else { 724 } else {
705 725