微信小程序时间标签和时间范围的联动

本文介绍了一种在微信小程序中实现日期范围筛选的方法,通过使用radio-group和picker组件结合wxss样式,实现了灵活且美观的时间选择功能。文章详细展示了如何根据不同时间范围动态更新日期,并提供了完整的wxml和js代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


最近忙于一个有关数据管理的微信小程序,遇到了上图情况,虽然很简单,还是整理一下。若有错误,请广大朋友们指正。


使用微信小程序组件radio-group、picker,用wxss对radio按照需求进行重构,picker里边的start和end时间是根据radio来显示的。将start、end时间放在data里,radio发生改变时,改变data中的时间。当picker中的值发生改变时,如果时间范围已经超出了radio中的范围,需要对radio的显示进行实时修改。

话不多说,接下来上代码。


index.wxml

<view class="con_screen">
  	<text class="cons_ti">日期范围</text>
    <!-- 单选时间 -->
  	<radio-group class="radio-group" bindchange="radioCheckedChange">
      <block >
        <label class="cons_radio {{radioCheckVal==1?'active':''}}" >
          <radio value="1" hidden="true"/>
          <text>今日</text>
        </label>   
        <label class="cons_radio {{radioCheckVal==4?'active':''}}" >
          <radio value="4" hidden="true" />
          <text>近7日</text>
        </label>  
        <label class="cons_radio {{radioCheckVal==6?'active':''}}" >
          <radio value="6" hidden="true"/>
          <text>近30日</text>
        </label>       
      </block>
		</radio-group>
    <!-- 时间段 -->
    <view class="picker_group">
      <picker mode="date" value="{{date}}" start="2015-09-01" end="{{date2}}" bindchange="bindDateChange">
        <view class="picker">
          {{date}}
          <image src="../../image/home_zsr_icon.png"></image>
        </view>
      </picker>
      到
      <picker mode="date" value="{{date2}}" start="{{date}}" end="2018-01-24" bindchange="bindDateChange2">
        <view class="picker">
          {{date2}}
          <image src="../../image/home_zsr_icon.png"></image>
        </view>
      </picker>      
    </view>
    	
  </view>


index.wxss

.radio-group{
	display: inline-block;
}
.cons_radio{
	margin-left: 30rpx;
}
.cons_radio text{
	font-size: 26rpx;
	color: #c8c8c8;
	height: 40rpx;
	/* width: 93rpx; */
	border: #c8c8c8 solid 2rpx;
	padding:0 20rpx;
	text-align: center;
	line-height: 40rpx;
	display: inline-block;
	border-radius: 20rpx;
}
/* 黄色 */
.cons_radio.active text{
	color: #F5A623;
	border-color: #F5A623;
}
/* 红色 */
.cons_radio.activered text{
	color: #FA2B21;
	border-color: #FA2B21;
}
/* 蓝色 */
.cons_radio.activeblue text{
	color: #4AAFDD;
	border-color: #4AAFDD;
}
/* 黄绿色 */
.cons_radio.activeyg text{
	color: #BABC1A;
	border-color: #BABC1A;
}

/* 日期选择 */
.picker_group{
	display: block;
	font-size: 28rpx;
	color: #c8c8c8;
	margin-left: 20rpx;
	margin-top: 15rpx;
}
.picker_group picker{
	display: inline-block;
	margin:0 20rpx 0 20rpx;
	position: relative;
	color: #232323;
}
.picker_group picker image{
	width: 20rpx;
	height: 20rpx;
}
.cons_zsr{
	display: block;
	font-size: 32rpx;
	color: #232323;
	margin-left: 40rpx;
	margin-bottom: 15rpx;
}
.cons_zsr picker image{
	width: 30rpx;
	height: 30rpx;
}


index.js

Page({
  data:{
    page:'',
    Loading:false,
    isLogin:false,
    radioCheckVal:0,//收益占比单选
    date: '2015-09-01',//收益占比时间段起始时间
    date2:'2018-01-24',//收益占比时间段终止时间
  }, 
  // 收益占比单选时间  ring
  radioCheckedChange(e){ 
    let that=this; 
    that.setData({  
      radioCheckVal:e.detail.value  
    })  
    console.log(that.data.radioCheckVal)
    if(that.data.radioCheckVal=='1'){
      that.setData({
        date:timedate.formatDate(now),
        date2:timedate.formatDate(now),
      })
      // console.log(that.data.date+'------'+that.data.date2)
      that.timeFn(that.data.arrayindex,that.data.date,that.data.date2)
    }
    if(that.data.radioCheckVal=='4'){
      that.setData({
        date:timedate.sevenDays().t2,
        date2:timedate.sevenDays().t1,
      })
      // console.log(that.data.date+'------'+that.data.date2)
      that.timeFn(that.data.arrayindex,that.data.date,that.data.date2)
    }
    if(that.data.radioCheckVal=='6'){
      that.setData({
        date:timedate.thirtyDays().t2,
        date2:timedate.thirtyDays().t1,
      })
      // console.log(that.data.date+'------'+that.data.date2)
      that.timeFn(that.data.arrayindex,that.data.date,that.data.date2)
    }
  },
  // 收益占比时间段选择
  bindDateChange(e){
    let that=this;
    console.log(e.detail.value)
    that.setData({
      date: e.detail.value,
      radioCheckVal:0,
    })
    that.timeFn(that.data.arrayindex,that.data.date,that.data.date2)
  },
  bindDateChange2(e){
    let that=this;
    that.setData({
      date2: e.detail.value,
      radioCheckVal:0,
    })
    that.timeFn2(that.data.arrayindex,that.data.date,that.data.date2)
  },



评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值