当前位置: 首页 > news >正文

vant移动端年月日区间选择弹窗

这是一个基于Vant组件库实现的日期范围选择器组件。

<template> <div @click="onCancel" class="range-date"> <van-popup v-model="showPopupvalue" @click.stop round position="bottom" :style="{ height: '60%' }"> <header class="header"> <div class="h-left" @click="onCancel">取消</div> <div class="h-center">{{ title }}</div> <div class="h-right" @click="onConfirm">确认</div> </header> <van-datetime-picker title="开始日期" v-model="startDate" :type="type" :min-date="minDate" :formatter="formatter" visible-item-count="4" @change="startChange" /> <van-datetime-picker title="结束日期" v-model="endDate" :type="type" :min-date="endMinDate" :formatter="formatter" visible-item-count="4" /> </van-popup> </div> </template> <script> import { fixTime } from '@/common/utils'; export default { name: 'Datetime', components: {}, props: { showPopup: { type: Boolean, default: false, }, title: { type: String, default: '', }, type: { type: String, default: 'date', }, }, data() { return { showPopupvalue: this.showPopup, minDate: new Date(2019, 0, 1), // maxDate: new Date(2021, 10, 1), // endMinDate: new Date(2019, 0, 1), endMinDate: new Date(), startDate: new Date(), endDate: new Date(), // endDate: new Date(new Date().getTime() + 24*60*60*1000), } }, watch: { showPopup(val) { this.showPopupvalue = val }, }, methods: { // 弹框处理函数 onConfirm() { this.showPopupvalue = false let value = [ fixTime(this.startDate, 'YYYY-MM-DD'), fixTime(this.endDate, 'YYYY-MM-DD'), ].join(' 至 ') this.$emit('onConfirm', { value: value, falg: false }) }, onCancel() { this.showPopupvalue = false this.$emit('onCancel', false) }, startChange() { let tmpDate = new Date(this.endDate) this.endMinDate = new Date(this.startDate) setTimeout(() => { if (new Date(tmpDate).getTime() > new Date(this.endMinDate).getTime()) { this.endDate = tmpDate } else { this.endDate = this.endMinDate } }, 0) }, // 时间日期 formatter(type, val) { if (type === 'year') { return `${val}年` } else if (type === 'month') { return `${val}月` } else if (type === 'day') { return `${val}日` } return val }, }, } </script> <style lang="less"> .range-date { .van-checkbox-group { display: flex; flex-direction: column; padding-top: 1rem; justify-content: center; min-height: 5rem; .van-checkbox { height: 0.88rem; justify-content: center; font-size: 0.3rem; } } .van-datetime-picker { margin-top: 1.3rem; &+.van-datetime-picker { margin-top: 0.68rem; } .van-picker__toolbar { height: 0.66rem; color: #36395c; font-size: 0.3rem; background-color: #f5f6fb; margin: 0 0.3rem; justify-content: center; button { display: none; } } } } </style> <style lang="less" scoped> .header { position: fixed; background-color: #fff; z-index: 99; left: 0; right: 0; margin: 0 auto; height: 0.88rem; padding: 0 0.3rem; border-radius: 0.24rem 0.24rem 0 0; display: flex; justify-content: space-between; align-items: center; .h-left, .h-right { font-size: 0.28rem; } .h-left { display: block; text-align: left; font-size: 32px; color: rgba(0, 0, 0, 0.9); } .h-right { display: block; text-align: right; font-size: 32px; color: rgb(43, 77, 255); } .h-center { font-size: 34px; font-weight: 600; } } </style>
http://www.jsqmd.com/news/1079695/

相关文章:

  • 员工手机里的客户,如何变成公司资产?剪流AI员工手机如何防止销售飞单
  • 艺术涂料和普通涂料的区别?这篇说透了
  • MMD与ANOVA核在量子机器学习中的应用解析
  • 隔震支座厂家怎么选?从技术标准到实力解析,2026年选型避坑指南
  • 【C++并发系列】第七章:memory_order_relaxed 能用在哪里
  • 软铺砌算法:从离散网格到连续曲面的几何优化与工程实践
  • DVWA命令注入漏洞实战:跨平台Payload构造与防御解析
  • 【计算机毕业设计】在线投票系统的设计与实现
  • 基于51单片机智能电表插座交流电压流Proteus仿真资料设计24-392-1(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_可以扫码
  • 【计算机毕设】基于Spring Boot的生产设备保养与维修智能管理系统的设计与实现
  • 陶瓷流延厚度波动追溯方案:AI+MES如何串接浆料、测厚、母卷与后道质量
  • 如何在VPS上更新Ubuntu
  • 相符公证是什么?相符公证怎么办理?
  • 批量下载合集避坑指南,多款免费去水印工具踩雷汇总|博主自用无广实测
  • 工业机器人自动化改造实战:CNC 上下料场景技术选型与落地指南
  • 在云服务器AutoDL实现分子动力学模拟全流程
  • Widevine L3解密技术解析:从DRM原理到密钥提取实战
  • C*-单群与受限子代数:算子代数视角下的结构新刻画
  • 输出、输入函数以及数据类型转换细节
  • 核方法计算加速:Nyström逼近原理与工程实践指南
  • 大模型应用-筑基期【08:构建你的Prompt模板库】
  • 安卓群控项目——根据开源项目QtScrcpy二次开发
  • NewAPI网关部署与企业Token监管实操指南
  • 数位DP:从“穷举数字”到“逐位拆解”
  • AI大模型应用开发工程师到底做什么?
  • 超长型材拉弯加工,实测数据与效果差异几何?
  • 11.3% 稳健增长!2026年温度敏感导电碳浆市场发展现状及未来前景趋势分析
  • 从 Demo 到上线,Agent 还差一套工程化底座
  • 住所地公证书去哪里办理?住所地公证需要什么材料?
  • ouTube Data API v3 视频详情接口(videos.list)完整介绍与标准 JSON 返回示例