小程序弹出筛选框条件查询

微信   2024-12-26 15:00   74   0  

25224_todz_2373.png

index.wxml

<!-- 筛选和排序框 -->
<view class="sreenBigBox">
  <view class="sreenBox">
    <view class="sreenItems">
      <view class='sreen ' bindtap="sreenShow">筛选<image class='head {{sreenShow&&"rotating"}}' src="/assets/project/rightHead.png"/></view>
      <view class="sort" bindtap="sortShow">排序<image class='head {{sortShow&&"rotating"}}' src="/assets/project/rightHead.png"/></view>
    </view>
    <view class="specailItems">
      <image class="teacherImg" bindtap="isTeacher" src="{{isTeacher==false?'/assets/project/teacherProject.png':'/assets/project/teacherProject(pick).png'}}"/>
      <image class="studentImg" bindtap="isStudent" src="{{isStudent==false?'/assets/project/studentproject.png':'/assets/project/studentproject(pick).png'}}"/>
    </view>
  </view>
    <!-- 下拉框 -->
<view class="sreenConainer" style="height:{{sreenShow?1500:0}}rpx">
  <view class="chooseBox">
    <scroll-view  class="typeBox">
      <view class="typeItems" wx:for="{{typeItems}}" wx:key="*this"
        bindtap="chooseType" data-index="{{index}}">
        <text class="typeItem {{index===typeCurrentIndex?'typeItemAdd':''}}">{{item}}</text>
      </view>
    </scroll-view>
    <scroll-view class="chooseItems" scroll-y> 
             <block wx:for="{{chooseItems[typeCurrentIndex]}}">
               <view class='ItemLabel {{item.selected===true?"choosing":""}}' data-value="{{item.name}}" bindtap="chooseItem" checked="{{item.selected}}" data-index="{{index}}">
                {{item.name}}                                  
               </view>
             </block>
    </scroll-view>
  </view>
   <view class="buttonConainer">
     <button class="cancel" size="mini" bindtap="cancel">取  消</button>
     <button class="clear" size="mini" bindtap="clear">清  除</button>
     <button class="confirm"  size="mini" bindtap="confirm">确  认</button>
   </view>
   <view style="width: 100%;"/>
   <view class='mask' v-if="{{flag}}" bindtap="mask"></view>
</view>
<view class="sreenConainer" style="height:{{sortShow?1000:0}}rpx">
</view>
</view>


index.js

Page({
  data:{
       //类型
  typeItems:['状态','类型','技术','门槛','赛事','学院'],
  typeCurrentIndex:0,
  chooseItems:{
    0:[{
      name:'修炼中',
      value:'修炼中',
      selected:false
    },{
      name:'招新中',
      value:'招新中',
      selected:false
    },{
      name:'营业中',
      value:'营业中',
      selected:false
    },{
      name:'参赛中',
      value:'参赛中',
      selected:false
    },{
      name:'已结题',
      value:'已结题',
      selected:false
    },{
      name:'被停滞',
      value:'被停滞',
      selected:false
    },{
      name:'融资中',
      value:'融资中',
      selected:false
    }],
    1:[{
      name:'科技创新',
      value:'科技创新',
      selected:false
    },{
      name:'发明制造',
      value:'发明制造',
      selected:false
    }],
    2:[{
      name:'设计',
      value:'设计',
      selected:false
    },{
      name:'硬件工程',
      value:'硬件工程',
      selected:false
    }],
    3:[{
      name:'互联网+',
      value:'互联网+',
      selected:false
    },{
      name:'挑战杯',
      value:'挑战杯',
      selected:false
    }],
    4:[{
      name:'一定门槛',
      value:'一定门槛',
      selected:false
    },{
      name:'较高门槛',
      value:'较高门槛',
      selected:false
    }],
    5:[{
      name:'中德',
      value:'中德',
      selected:false
    },{
      name:'大数据',
      value:'大数据',
      selected:false
    }],
  },
  },
  //筛选
//下拉收回
sreenShow:function(){
  this.setData({
    sreenShow:!this.data.sreenShow
  })
},
cancel:function(){
  this.setData({
    sreenShow:false
  })
},
//清空选择
clear:function(){
  console.log("clear已调用")
  for(var i=0,t=1000;i<t;i++){
    if(this.data.chooseItems[i]==null){
      break;
    }
    for(var m=0,n=1000;m<n;m++){
      if(this.data.chooseItems[i][m]==null){
        break;
      }
      this.data.chooseItems[i][m].selected=false
    }
  }
  this.setData({
    chooseItems:this.data.chooseItems
  })
},
//确认筛选
confirm:function(){
  this.setData({
    sreenShow:false
  })
},
sortShow:function(){
  this.setData({
    sortShow:!this.data.sortShow
  })
},
//点击遮罩层
mask:function(){
  this.setData({
    sreenShow:false,
    sortShow:false
  })
},
//选择类型
chooseType:function(e){
  const{index}=e.currentTarget.dataset;
  console.log(index);
  this.setData({
    typeCurrentIndex:index,
  })
},
//选择具体内容
chooseItem:function(e){
  this.data.chooseItems[this.data.typeCurrentIndex][e.target.dataset.index].selected=!this.data.chooseItems[this.data.typeCurrentIndex][e.target.dataset.index].selected
  this.setData({
    chooseItems:this.data.chooseItems
  })
},
})


index.wxss

/* 筛选 */
.sreenBigBox{
  position: fixed;
  z-index: 999;
}
.sreenBox{
  display: flex;
  flex-direction:unset;
  background-color: white;
  width: 750rpx;
  height: 70rpx;
  z-index: 999999999999;
  margin-top: 60rpx;
  border-bottom-width:2rpx;
  border-bottom-style:solid;
  border-bottom-color:#f1f2f3
}
.sreenItems{
  display: flex;
  flex-direction: unset;
  align-items: center;
  flex:2;
}
.sort,
.sreen{
  position: relative;
  display: flex;
  align-items: center;
  background-color: #f1f1f1;
  color: #666666;
  font-size: 25rpx;
  font-weight: 500;
  border-radius: 20rpx;
  margin-left: 6%;
  padding:0.7em;
  height: 70%;
  letter-spacing: 0.3em;
}
.head{
  height: 25rpx;
  width: 25rpx;
}
.rotating{
  transform: rotate(90deg);
  transition: all 600ms;
}
.specailItems{
  display: flex;
  flex-direction: unset;
  flex:1;
}
.teacherImg{
  position: absolute;
  display: inline-block;
  right: 15%;
  height: 60rpx;
  width: 60rpx;
}
.studentImg{
  position: absolute;
  display: inline-block;
  margin-left: 10rpx;
  right: 4%;
  height: 60rpx;
  width: 60rpx;
}
 
/* 下拉框 */
.sreenConainer{
  z-index: 999;
  position: fixed;
  width: 100%;
  overflow: hidden;
  transition: height 400ms;
  display: flex;
  flex-direction: column;
}
.chooseBox{
  display: flex;
  flex-direction:unset;
  border-bottom-width:2rpx;
  border-bottom-style:solid;
  border-bottom-color:#f1f2f3;
  background-color: white;
}
.typeBox{
  display: flex;
  flex-direction:column;
  flex:0.8;
  margin-bottom: 25rpx;
  border-right-width:2rpx;
  border-right-style:solid;
  border-right-color:#f1f2f3
}
.typeItems{
  margin-top: 25rpx;
  display: flex;
  justify-content: center;
  align-items: center;
}
.typeItem{
  display: flex;
  color: #696969;
  font-weight: 500;
  height: 30rpx;
  font-size: 25rpx;
  padding: 0rpx 10rpx 0rpx 10rpx;
  letter-spacing: 0.3em;
}
.typeItemAdd{
  border-left: 7rpx solid #96bff0;
}
.chooseItems{
  flex:3;
  display: flex;
  margin-top: 20rpx;
}
.ItemLabel{
  display: inline-block;
  width: 190rpx;
  font-size: 25rpx;
  text-align: center;
  line-height: 70rpx;
  font-weight: 400;
  color:#696969;
}
.choosing{
  color: #96bff0;
  font-weight: 600;
}
.buttonConainer{
  background-color: white;
  height: 90rpx;
  display: flex;
}
.cancel{
  display: flex !important;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  height: 50rpx;
  width: 130rpx !important;
  color: #6a6a6a;
  background-color: #f1f1f1;
  font-size: 28rpx !important;
  margin-top: 15rpx;
  margin-bottom: 15rpx;
  margin-left: 100rpx;
  margin-right: 30rpx;
}
.clear{
  display: flex !important;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  height: 50rpx;
  width: 130rpx !important;
  color: #6a6a6a;
  background-color: #f1f1f1;
  font-size: 28rpx !important;
  margin-top: 15rpx;
  margin-bottom: 15rpx;
  margin-left: 40rpx;
  margin-right: 30rpx;
}
.confirm{
  display: flex !important;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  height: 50rpx;
  width: 200rpx !important;
  color: #ffffff;
  background-color: #6b9edd;
  font-size: 28rpx !important;
  margin-top: 15rpx;
  margin-bottom: 15rpx;
  margin-left: 35rpx;
  margin-right: 30rpx;
}
/* 遮罩层 */
.mask{
  margin-top: 420rpx;
  width:100%;
  height:100%;
  position:absolute;
  background-color:#999;
  z-index:9999;
  top:0;
  left:0;
  opacity:0.5;
}


来源:https://blog.csdn.net/qq_57985179/article/details/120963084


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。