uniapp日历uni-calendar搭配酒店入住离店时间段

2023-10-25 11:50

本文主要是介绍uniapp日历uni-calendar搭配酒店入住离店时间段,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目想要实现用户点击日期选择 入住日期 及 离店日期(一个范围)。

注: 本文章没有修改组件源码,另有大佬通过修改原源码实现第三次点击即可进行下一次日期范围的选择:uni-calendar日历组件日期范围默认选中及优化存在日期范围后点击第一下、第二下选中为下一日期范围_新手前端王老四的博客-CSDN博客

一、初出茅庐:

但是发现,第一次点击是入住时间,第二次点击是离店时间。通过测试uni-calendar发现只有点击日历第三次才在离店日期下面出现 ‘离店’ 字体,显然达不到我要的结果。具体如下:

 二、小心翼翼

当我突然想试试在月底与下月初选择看看效果时,有个惊奇的发现:好像有点是我想要的了。如下:第一次点击选择2月27,第二次点击是选择3月3,第三次点击敲重点)是切换了右上角的月份的图标,切换回2月份康康。发现27号下面有文字(正常,因为选择3月3的时候就会显示入住文字)。第四次点击是切换回3月康康。哦吼,也有了(不用我再选择一下其他日期了)

 

 

 这就奇怪了,突然可以了,我总觉得很多时候实现各种代码需要一些运气(不止这次)~

三、牛刀小试

这时我又想起携程的这个交互是在用户第二次选择时就把日历弹窗关闭,再次进来时就能看到选择的日期范围。于是我也试了一下:

 嘿嘿,也能显示文字了,但是背景效果没有填充,不急不急,再康康先。

这时候我发现刚刚点击第三下切回2月份时,应该是与选择24号时是一样的效果,也就是选择完入住时间与离店时间之后还需要再任意点一下,组件才会返回离店文字。

四、循环渐进

 问题又来了。继续以上操作,发现可以选两次范围,这肯定是不可取的:

 于是我去看看组件change返回的数据是怎样的,毕竟它只返回这一个方法。就发现了选择数据返回的range不一样

 那么我就可以通过这个range判断选择日期之前是否有数据,也就是通过查看info.selected长度是否大于0判断的。当用户选择入住日期时,在change函数内先判断是否有info.selected长度是否大于0,大于0就把日期数据清空。这样每次就只能选一个时间段了。

 此时,大工快告成了。就差时间段的背景色没有显示出来,这时候我有了发个scdn的念头,于是就先还原下这个交互的实时(需要上面那些截图嘛),这时候,神器的事情又发生了,当我把选择离店日期后弹窗关闭那一代码注释时(已经写了第四步的判断的),发现时间段的背景竟然出来了!!但是试了一下,如果不关闭弹窗,选择完日期确实能完整展现我最初要的结果,但是想重新选日期的话,还是会出现得点击第三下再点击第四下,此时不会再出现完整的第二段时间段,而需要点第五个日期时,第四和第五才会组成新的日期,也就是说选择完日期后还是需要点击一下(第三次点击:算是清空吧,这一下是无任何作用的,应该是组件问题)

五、大功告成

所以最后的结果还是跟某程一样,选完时间段关闭弹窗,再次点击(第三次点击)展示弹框时就能出现最初的效果了。

主要代码:

// 选择日历
const change = (e: any) => {console.log('change 返回:', e)// 点击时日期信息已有数据,清空if (state.info.selected.length > 0) {state.info.selected = []}// 模拟动态打卡console.log(state.info.selected)if (state.info.selected.length > 5) returnstate.info.selected.push({date: e.range.before,info: '入住',})state.info.selected.push({date: e.range.after,info: '离店',})// 已有日期范围时,关闭弹窗if (e.range.data.length > 0) {popupCalendarRef.value.close()}
}

 原创不易,给小弟点点赞拨~

这篇关于uniapp日历uni-calendar搭配酒店入住离店时间段的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/282374

相关文章

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

C#关闭指定时间段的Excel进程的方法

private DateTime beforeTime;            //Excel启动之前时间          private DateTime afterTime;               //Excel启动之后时间          //举例          beforeTime = DateTime.Now;          Excel.Applicat

基于springboot+vue+uniapp的“共享书角”图书借还管理系统小程序

开发语言:Java框架:springboot+uniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9 系统展示 后台登录界面 管理员功能界面 出借者管理 图书信息管理 图书归还管理 出租收入管理

uniapp小程序下载缓存服务器上的图片

1. 使用uni.downloadFile,但是注意下载图片的地址里的域名,需要在微信公众平台里面的downloadFile合法域名进行配置。 export default function downloadAndCacheImage(imageUrl, name) {return new Promise((resolve, reject) => {console.log("imageUrl",

Unity协程搭配队列开发Tips弹窗模块

概述 在Unity游戏开发过程中,提示系统是提升用户体验的重要组成部分。一个设计良好的提示窗口不仅能及时传达信息给玩家,还应当做到不干扰游戏流程。本文将探讨如何使用Unity的协程(Coroutine)配合队列(Queue)数据结构来构建一个高效且可扩展的Tips弹窗模块。 技术模块介绍 1. Unity协程(Coroutines) 协程是Unity中的一种特殊函数类型,允许异步操作的实现

uniapp,vite整合windicss

官方文档:https://weapp-tw.icebreaker.top/docs/quick-start/frameworks/hbuilderx 安装: npm i -D tailwindcss postcss autoprefixer# 初始化 tailwind.config.js 文件npx tailwindcss initnpm i -D weapp-tailwindcss# 假

UniApp实现漂亮的音乐歌词滚动播放效果

在现代的音乐播放应用中,歌词的展示和滚动播放已经成为了一个非常常见的功能。今天,我们将通过UniApp来实现一个漂亮的歌词滚动播放功能。我们将使用UniApp提供的组件和API来完成这个任务。 页面结构 在页面的模板部分,我们需要创建一个音频播放器和歌词展示区域。使用<scroll-view>组件来实现歌词的滚动效果。 <template><view class="audio-co

分享一个基于uniapp科技馆服务微信小程序 博物馆管理小程序(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流! 💕💕学习资料、程序开发、技术解答、文档报告 💕💕如需要源码,可以扫取文章下方二维码联系咨询 💕💕Java项目 💕💕微信小程序项目 💕💕Android项目 �

构建现代API:FastAPI中Query与Body参数的最佳搭配

在FastAPI中,Query 和 Body 是两种不同的依赖注入器,它们的应用场景取决于你的具体需求。以下是它们各自常见的使用场景: Query 参数 使用场景: 当你需要从URL中获取一些简单的参数时,例如过滤、排序、分页等。 当数据量不大,且可以作为URL的一部分安全传输时。当数据不需要复杂的结构时。 Body 参数 使用场景: 当你需要发送较为复杂的数据结构时,例如包含多个字段