chengjie hace 3 meses
padre
commit
914f42da1d
Se han modificado 2 ficheros con 123 adiciones y 104 borrados
  1. 121 102
      pages/main/mainlist.js
  2. 2 2
      pages/main/mainlist.wxml

+ 121 - 102
pages/main/mainlist.js

@@ -1372,108 +1372,6 @@ Page({
1372 1372
       }
1373 1373
     }
1374 1374
   },
1375
-  selectThisFunc:function(e){
1376
-    let upOrDown = e.currentTarget.dataset.selecttype;
1377
-    //debugger;
1378
-    var that = this;
1379
-    var list = that.data.List;
1380
-    var firstSelectedIndex = -1;
1381
-    var lastSelectedIndex = -1;
1382
-    
1383
-    // 找出第一个和最后一个已选中的项目索引
1384
-    for(var i = 0; i < list.length; i++) {
1385
-      if(list[i].Selected) {
1386
-        if(firstSelectedIndex === -1) firstSelectedIndex = i;
1387
-        lastSelectedIndex = i;
1388
-      }
1389
-    }
1390
-    
1391
-    if(firstSelectedIndex === -1) return; // 没有选中项,不执行操作
1392
-    
1393
-    // 创建选择器查询
1394
-    var query = wx.createSelectorQuery();
1395
-    
1396
-    // 获取所有列表项的位置信息
1397
-    for(var i = 0; i < list.length; i++) {
1398
-      query.select('#scroll-' + i).boundingClientRect();
1399
-    }
1400
-    
1401
-    // 获取视口信息
1402
-    query.selectViewport().boundingClientRect();
1403
-    
1404
-    query.exec(function(res) {
1405
-      if(!res || res.length <= list.length) return;
1406
-      
1407
-      var screenHeight = res[res.length - 1].height;
1408
-      var visibleItems = [];
1409
-      
1410
-      // 找出当前在视口中可见的项
1411
-      for(var i = 0; i < list.length; i++) {
1412
-        var item = res[i];
1413
-        if(item && item.top < screenHeight && item.bottom > 0) {
1414
-          visibleItems.push({
1415
-            index: i,
1416
-            top: item.top,
1417
-            bottom: item.bottom
1418
-          });
1419
-        }
1420
-      }
1421
-      
1422
-      if(visibleItems.length === 0) return;
1423
-      
1424
-      // 根据按钮类型决定选择范围
1425
-      if(upOrDown === "up") {
1426
-        // 上按钮 - 选择从视口中最上面的项到第一个已选项之间的所有项
1427
-        var topVisibleIndex = visibleItems[0].index;
1428
-        
1429
-        // 如果顶部可见项在第一个已选项之前,选择这个范围内的所有项
1430
-        if(topVisibleIndex < firstSelectedIndex) {
1431
-          for(var i = topVisibleIndex; i <= firstSelectedIndex; i++) {
1432
-            list[i].Selected = true;
1433
-          }
1434
-        } 
1435
-        // 否则选择从第一个已选项到顶部可见项之间的所有项
1436
-        else {
1437
-          for(var i = firstSelectedIndex; i <= topVisibleIndex; i++) {
1438
-            list[i].Selected = true;
1439
-          }
1440
-        }
1441
-      } else if(upOrDown === "down") {
1442
-        // 下按钮 - 选择从最后一个已选项到视口中最下面的项之间的所有项
1443
-        var bottomVisibleIndex = visibleItems[visibleItems.length - 1].index;
1444
-        
1445
-        // 如果底部可见项在最后一个已选项之后,选择这个范围内的所有项
1446
-        if(bottomVisibleIndex > lastSelectedIndex) {
1447
-          for(var i = lastSelectedIndex; i <= bottomVisibleIndex; i++) {
1448
-            list[i].Selected = true;
1449
-          }
1450
-        } 
1451
-        // 否则选择从底部可见项到最后一个已选项之间的所有项
1452
-        else {
1453
-          for(var i = bottomVisibleIndex; i <= lastSelectedIndex; i++) {
1454
-            list[i].Selected = true;
1455
-          }
1456
-        }
1457
-      }
1458
-      
1459
-      // 计算选中的总数
1460
-      var selectedCount = 0;
1461
-      for(var i = 0; i < list.length; i++) {
1462
-        if(list[i].Selected) {
1463
-          selectedCount++;
1464
-        }
1465
-      }
1466
-      
1467
-      // 更新数据
1468
-      that.setData({
1469
-        List: list,
1470
-        SelectedCount: selectedCount
1471
-      });
1472
-      
1473
-      // 更新按钮显示状态
1474
-      that.checkSelectedItemsPosition(firstSelectedIndex, lastSelectedIndex);
1475
-    });
1476
-  },
1477 1375
   //保存多选数据
1478 1376
   saveMultipleData:function(mData,list){
1479 1377
     var that=this;
@@ -1768,4 +1666,125 @@ Page({
1768 1666
       imageUrl: app.globalData.ShareImage,
1769 1667
     }
1770 1668
   },
1669
+  selectThisFunc:function(e){
1670
+    let upOrDown = e.currentTarget.dataset.selecttype;
1671
+    var that = this;
1672
+    var list = that.data.List;
1673
+    var firstSelectedIndex = -1;
1674
+    var lastSelectedIndex = -1;
1675
+    
1676
+    // 找出第一个和最后一个已选中的项目索引
1677
+    for(var i = 0; i < list.length; i++) {
1678
+      if(list[i].Selected) {
1679
+        if(firstSelectedIndex === -1) firstSelectedIndex = i;
1680
+        lastSelectedIndex = i;
1681
+      }
1682
+    }
1683
+    
1684
+    if(firstSelectedIndex === -1) return; // 没有选中项,不执行操作
1685
+    
1686
+    // 创建选择器查询
1687
+    var query = wx.createSelectorQuery();
1688
+    
1689
+    // 获取所有列表项的位置信息
1690
+    for(var i = 0; i < list.length; i++) {
1691
+      query.select('#scroll-' + i).boundingClientRect();
1692
+    }
1693
+    
1694
+    // 获取视口信息
1695
+    query.selectViewport().boundingClientRect();
1696
+    
1697
+    query.exec(function(res) {
1698
+      // 确保我们有足够的结果
1699
+      if(!res || res.length < 2) {
1700
+        console.error("查询结果不足,无法处理选择操作");
1701
+        return;
1702
+      }
1703
+      
1704
+      var screenHeight = res[res.length - 1].height;
1705
+      var visibleItems = [];
1706
+      
1707
+      // 找出当前在视口中可见的项
1708
+      for(var i = 0; i < list.length; i++) {
1709
+        var item = res[i];
1710
+        if(item && item.top < screenHeight && item.bottom > 0) {
1711
+          visibleItems.push({
1712
+            index: i,
1713
+            top: item.top,
1714
+            bottom: item.bottom
1715
+          });
1716
+        }
1717
+      }
1718
+      
1719
+      if(visibleItems.length === 0) {
1720
+        console.error("没有找到可见项目");
1721
+        return;
1722
+      }
1723
+      
1724
+      console.log("可见项目数量:", visibleItems.length);
1725
+      console.log("第一个可见项目索引:", visibleItems[0].index);
1726
+      console.log("最后一个可见项目索引:", visibleItems[visibleItems.length - 1].index);
1727
+      console.log("第一个选中项索引:", firstSelectedIndex);
1728
+      console.log("最后一个选中项索引:", lastSelectedIndex);
1729
+      console.log("按钮类型:", upOrDown);
1730
+      
1731
+      // 根据按钮类型决定选择范围
1732
+      if(upOrDown === "up") {
1733
+        // 上按钮 - 选择从视口中最上面的项到第一个已选项之间的所有项
1734
+        var topVisibleIndex = visibleItems[0].index;
1735
+        
1736
+        // 如果顶部可见项在第一个已选项之前,选择这个范围内的所有项
1737
+        if(topVisibleIndex < firstSelectedIndex) {
1738
+          for(var i = topVisibleIndex; i <= firstSelectedIndex; i++) {
1739
+            list[i].Selected = true;
1740
+          }
1741
+          console.log("向上选择范围:", topVisibleIndex, "到", firstSelectedIndex);
1742
+        } 
1743
+        // 否则选择从第一个已选项到顶部可见项之间的所有项
1744
+        else {
1745
+          for(var i = firstSelectedIndex; i <= topVisibleIndex; i++) {
1746
+            list[i].Selected = true;
1747
+          }
1748
+          console.log("向上选择范围:", firstSelectedIndex, "到", topVisibleIndex);
1749
+        }
1750
+      } else if(upOrDown === "down") {
1751
+        // 下按钮 - 选择从最后一个已选项到视口中最下面的项之间的所有项
1752
+        var bottomVisibleIndex = visibleItems[visibleItems.length - 1].index;
1753
+        
1754
+        // 如果底部可见项在最后一个已选项之后,选择这个范围内的所有项
1755
+        if(bottomVisibleIndex > lastSelectedIndex) {
1756
+          for(var i = lastSelectedIndex; i <= bottomVisibleIndex; i++) {
1757
+            list[i].Selected = true;
1758
+          }
1759
+          console.log("向下选择范围:", lastSelectedIndex, "到", bottomVisibleIndex);
1760
+        } 
1761
+        // 否则选择从底部可见项到最后一个已选项之间的所有项
1762
+        else {
1763
+          for(var i = bottomVisibleIndex; i <= lastSelectedIndex; i++) {
1764
+            list[i].Selected = true;
1765
+          }
1766
+          console.log("向下选择范围:", bottomVisibleIndex, "到", lastSelectedIndex);
1767
+        }
1768
+      }
1769
+      
1770
+      // 计算选中的总数
1771
+      var selectedCount = 0;
1772
+      for(var i = 0; i < list.length; i++) {
1773
+        if(list[i].Selected) {
1774
+          selectedCount++;
1775
+        }
1776
+      }
1777
+      
1778
+      console.log("选中总数:", selectedCount);
1779
+      
1780
+      // 更新数据
1781
+      that.setData({
1782
+        List: list,
1783
+        SelectedCount: selectedCount
1784
+      });
1785
+      
1786
+      // 更新按钮显示状态
1787
+      that.checkSelectedItemsPosition(firstSelectedIndex, lastSelectedIndex);
1788
+    });
1789
+  },
1771 1790
 })

+ 2 - 2
pages/main/mainlist.wxml

@@ -148,10 +148,10 @@
148 148
   
149 149
     <view class="panelMore" wx:if="{{HasPageDelete && CardType==-2}}" bindtap='gotoNextPageDelete' data-id="{{List[List.length-1].MiaoguoCardID}}">更多</view>
150 150
     <view class="panelEnd" wx:if="{{!HasPageDelete && List.length>0 && CardType==-2}}">到底了</view>
151
-    <view class="SelectThisUpCss FlexRow" wx:if="{{IsShowSelectThisUp}}" catch:tap="selectThisFunc" data-selecttype="up">
151
+    <view class="SelectThisUpCss FlexRow" wx:if="{{IsShowSelectThisUp}}" catch:tap="selectThisFunc" data-selecttype="down">
152 152
       <image src="../images/ArrowUp1.png" class="ArrowUp1"></image>选择到这里
153 153
     </view>
154
-    <view class="SelectThisUpCss SelectThisDownCss FlexRow" wx:if="{{IsShowSelectThisDown}}" catch:tap="selectThisFunc" data-selecttype="down">
154
+    <view class="SelectThisUpCss SelectThisDownCss FlexRow" wx:if="{{IsShowSelectThisDown}}" catch:tap="selectThisFunc" data-selecttype="up">
155 155
       <image src="../images/ArrowDown1.png" class="ArrowUp1"></image>选择到这里
156 156
     </view>
157 157
   </view>