按日、按月,日期切换,仿支付宝

Alt

思路:

是结合vant-ui,分成四部分来做的。
最外层用的是vant弹出层
第一部分:“取消”和“确定”;
第二部分:日期和月份的切换按钮;
第三部分:具体日期或月份的显示;
第四部分:vant时间选择插件。

正文开始

最外层:

最外层用到了vant里面的弹出层

<van-popup v-model="isChoiceTime" position="bottom" :style="{ height: '50%' }" /></van-popup>

isChoiceTime 控制是否显示,bottom控制弹出层在下方,height: 50%控制弹出层面积屏幕一半。

第一部分:

“取消”和“确定”

<div class="headerSlots">
   <div class="quxiao" @click="cancelClick">取消</div>
   <div class="xuanze">请选择</div>
   <div class="queding" @click="determine">确定</div>
 </div>

cancelClick 控制弹出层的关闭
determine 获取所选择的时间,并显示到列表的左上方

第二部分:

日期和月份的切换按钮

<div class="grayBox" @click="timeChoice">
  <div>{{ timeName ? '按月选择' : '按日选择' }}</div>
</div>


<script type="text/javascript">
export default {
  data() {
    return {
      timeName: true,
    }
  }   
}
</script>

timeName 默认按月选择
按日、按月选择对应vant时间选择组件不一样,通过timeChoice来控制

第三部分:

具体日期或月份的显示

<div class="YouTime" v-show="timeAll == 1">{{mouthTime}}</div>
<div class="YouTime02" v-show="timeAll == 2">
  <div :class="cont == 1 ? 'blue' : 'gray' " @click="timeClick(1)">{{toolTime01}}</div><div :class="cont == 2 ? 'blue' : 'gray' " @click="timeClick(2)">{{toolTime02}}</div>
</div>


<script type="text/javascript">
export default {
  data() {
    return {
      timeAll: 1,
      cont: 1,  //点击哪个,哪个变成蓝色,并可以选择日期
      mouthTime: (new Date().getFullYear()) + '-' + ((new Date().getMonth()+1) < 10 ? "0" + (new Date().getMonth()+1) : (new Date().getMonth()+1) ),
      toolTime01: '',
      toolTime02: '结束日期',
    }
  }   
  methods: {
    timeClick(n) {
      if(n == 1) {
        this.cont = 1;
      } else {
        this.cont = 2;
      }
    },
  }
}
</script>

timeAll 结合 timeChoice 点击事件,来控制显示月份还是具体日期
mouthTime 显示月份,在打开弹出层的时候显示当前月份,点击确定按钮(determine 事件 ),获取所选时间,给 mouthTime 赋值
toolTime01 起始日期,在没有选择前,应显示当前时间,如:2020-04-02;选择时间后,显示所选择的时间
toolTime02 结束日期,在没有选择前,应显示‘结束日期’;选择时间后,显示所选择的时间
结合第四部分的 change 事件(changeTime 和 changeTimeMore),将所选时间赋值给 toolTime01,toolTime02
timeClick() 点击事件

注意事项:1.若只选择起始时间,不选择结束时间,点击确定后,则左上角只显示 “ 起始时间 ”;2.若只选择结束时间,点击确定后,则左上角显示 “ 起始时间 至 结束时间 ” ;3.若起始时间大于结束时间,则要将起始时间放前,结束时间放后(可以把两个时间转成毫秒值来比大小)

第四部分:

vant时间选择插件

<van-datetime-picker item-height="45" v-model="currentDate" type="year-month" :min-date="minDate" :max-date="maxDate" @change="changeTime" :show-toolbar="false" v-show="timeAll == 1"/>
<van-datetime-picker item-height="45" v-model="currentDate" type="date" :min-date="minDate" :max-date="maxDate" @change="changeTimeMore" :show-toolbar="false" v-show="timeAll == 2"/>

item-height="45 下图红色框选中部分,之前没加这个,会出现一行对不齐的现象
在这里插入图片描述

:show-toolbar=“false” 去掉时间选择上的 “取消” 和 “确定” 按钮
changeTime 和 changeTimeMore 是 change 事件(当值变化时触发的事件),当我们划拉的时候,蓝色字体显示的日期会跟着变动

总结:

其实这个并不难,只是繁杂了点,需要注意的地方有很多,比如时间大小的显示。
都看到这啦!觉得我文章写的好ヽ( ̄▽ ̄)و,就给我点个赞吧~
有什么问题的地方,也欢迎指出来,我们可以交流交流~
这是我代码连接~
https://blog.csdn.net/weixin_45455635/article/details/123925623

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值