├── .gitignore ├── static ├── preview.png └── date-picker │ └── gif.gif ├── main.js ├── App.vue ├── pages.json ├── ReleaseNote.md ├── manifest.json ├── README.md ├── pages └── index │ └── index.vue └── components └── date-picker └── date-picker.vue /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | unpackage/* 3 | *.zip 4 | *.rar -------------------------------------------------------------------------------- /static/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangdaren/uni-app-date-picker/HEAD/static/preview.png -------------------------------------------------------------------------------- /static/date-picker/gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangdaren/uni-app-date-picker/HEAD/static/date-picker/gif.gif -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App' 3 | 4 | Vue.config.productionTip = false 5 | 6 | App.mpType = 'app' 7 | 8 | const app = new Vue({ 9 | ...App 10 | }) 11 | app.$mount() 12 | -------------------------------------------------------------------------------- /App.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 18 | -------------------------------------------------------------------------------- /pages.json: -------------------------------------------------------------------------------- 1 | { 2 | "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages 3 | { 4 | "path": "pages/index/index", 5 | "style": { 6 | "navigationBarTitleText": "uni-app datePicker" 7 | } 8 | } 9 | ], 10 | "globalStyle": { 11 | "navigationBarTextStyle": "black", 12 | "navigationBarTitleText": "uni-app", 13 | "navigationBarBackgroundColor": "#F8F8F8", 14 | "backgroundColor": "#F8F8F8" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ReleaseNote.md: -------------------------------------------------------------------------------- 1 | # 历史更新记录 2 | ====================================== 3 | 4 | ## v1.0.17(20191020) 5 | * 新增动态调整初始日期,调整startDate和endDate绑定的值即可,示例有做描述 6 | 7 | ## v1.0.16(20190928) 8 | * 修复H5确认按钮被覆盖的bug 9 | 10 | ## v1.0.15(20190824) 11 | * 新增singleDate模式,可以选择单个日期,赋值使用startDate,后面会支持选择今天之前的日期(架构需要做大的调整才行) 12 | * 修复非今年的星期有误的bug 13 | 14 | ## v1.0.14(20190613) 15 | * 修复星期不对的问题(┑( ̄Д  ̄)┍,几个版本终于修复好) 16 | * 小修小补,支持显示今天、明天、后天。 17 | 18 | ## v1.0.13(20190604) 19 | * [新增] 主题颜色支持修改:修改date-picker.vue里$themeColor的值即可,暂未想到更好的方法,欢迎给意见~ 20 | * [新增] 支持回填数据,参数为startDate和endDate,仅支持字符串,如"2019-06-05",已做好防错处理(如小于今天的情况,开始时间在结束时间之后的情况等) 21 | * [新增] 支持修改总共显示多少天,参数daysCount,范围为60 < x < 360,考虑到性能,将最大天数限制在360天内 22 | * 修复首月星期显示不对的问题 23 | 24 | ## v1.0.12(20190523) 25 | * 修改完成按钮显示逻辑,根据是否选择日期来决定完成按钮显示状态,避免选择单个日期产生的bug(之前参考某网友建议,设置按钮为常开,现修改按钮为按需显示,与美图保持一致,特此说明。) 26 | * 修改显示逻辑,支持onBackPress()事件 27 | 28 | ## v1.0.11(20190523) 29 | * 修复星期显示问题 30 | 31 | ## v1.0.10(20190523) 32 | * 隐藏日期上面的星期显示(忙乱中忘记改回去了) 33 | 34 | ## v1.0.9(20190522) 35 | * 回调里,新增日期的星期参数 36 | 37 | ## v1.0.8(20190522) 38 | * 新增支持无界面、纯弹窗模式,代码如``` html```,modal设为true,通过属性show来控制显示/隐藏 39 | * 修复最新小程序报错的问题(Some selectors are not allowed in component wxss, including tag name selectors, ID selectors, and attribute selectors) 40 | * 修复多次弹出弹窗后,重置天数为1的问题 41 | * 修复样式问题 42 | 43 | ## v1.0.7(20190521) 44 | * 解决月星期显示不对的问题,感谢网友指正 45 | * 适配最新自定义组件编译模式,如遇小程序/app不能正常使用时,请下载最新版 46 | 47 | ## v1.0.6(20190403) 48 | * 解决日期显示禁用的重大bug(感谢976996406@qq.com反馈) 49 | * 解决时间显示错误的问题。 50 | * 近段时间有点忙,时间回显的功能看了看还需要点时间。 51 | 52 | ## v1.0.5(20190322) 53 | * 小众问题修改 54 | 55 | ## v1.0.4 56 | * 组件内view设置为flex布局,防止样式污染 57 | 58 | ## v1.0.3 59 | * 回调参数修改 60 | 61 | ## v1.0.2 62 | * 支持H5平台 63 | 64 | ## v1.0.1 65 | * 增加change事件,回调函数里返回所选区间和入住的时间(即几晚) 66 | * 限制只能点击确认按钮选择日期,点击遮罩或点击x都会重置时间到选择之前的数据 67 | 68 | ## v1.0.0 69 | * 初次提交 70 | 71 | 72 | ## Future 73 | * 无标签式启动 74 | * 配置参数:颜色 75 | * ps:因近段时间较忙,节后将尽快更新。 -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "datePicker", 3 | "appid": "", 4 | "description": "", 5 | "versionName": "1.0.0", 6 | "versionCode": "100", 7 | "transformPx": false, 8 | "app-plus": { 9 | "usingComponents": true, 10 | "nvueCompiler": "uni-app", //是否启用 uni-app 模式 11 | /* 5+App特有相关 */ 12 | "modules": {}, 13 | /* 模块配置 */ 14 | "distribute": { 15 | /* 应用发布信息 */ 16 | "android": { 17 | /* android打包配置 */ 18 | "permissions": [ 19 | "", 20 | "", 21 | "", 22 | "", 23 | "", 24 | "", 25 | "", 26 | "", 27 | "", 28 | "", 29 | "", 30 | "", 31 | "", 32 | "", 33 | "", 34 | "", 35 | "", 36 | "", 37 | "", 38 | "", 39 | "", 40 | "" 41 | ] 42 | }, 43 | "ios": {}, 44 | /* ios打包配置 */ 45 | "sdkConfigs": {} 46 | } 47 | }, 48 | /* SDK配置 */ 49 | "quickapp": {}, 50 | /* 快应用特有相关 */ 51 | "mp-weixin": { 52 | /* 小程序特有相关 */ 53 | "appid": "", 54 | "setting": { 55 | "urlCheck": true 56 | }, 57 | "usingComponents": true 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # uni-app-date-picker 2 | uni-app 酒店日期选择插件 3 | 4 | 功能基本参照美团APP来实现的,期间因uniapp框架限制,判断代码只能长串写在标签上,导致元素也增了许多,性能和操控受影响,因而将滑动固定月份标题功能砍掉了,后续再考虑加入。 5 | 6 | 说明:目前支持APP、微信小程序和H5平台。其他平台未测试,理论支持 7 | 8 | 9 | ##### 大更新:新增支持无界面、纯弹窗模式。 10 | ##### 代码如: 11 | ``` html``` 12 | ##### 使用方式:modal设为true,通过属性show来控制显示/隐藏 13 | 14 | 15 | 部分代码来源于:[https://github.com/zrxisme/date-for-wx](https://github.com/zrxisme/date-for-wx)。 16 | 17 | 反馈问题请描述所使用的平台和重现步骤,谢谢~~ 18 | 19 | 20 | --- 21 | ## 回调函数示例: 22 | 23 | ``` html 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | {{ dateStr }} 32 | 33 | ``` 34 | 35 | 36 | 37 | ``` javascript 38 | export default { 39 | data() { 40 | return { 41 | showCaledar: false, 42 | dateStr: '' 43 | }; 44 | }, 45 | components: { 46 | calendar 47 | }, 48 | methods: { 49 | change({ choiceDate, dayCount }) { 50 | //参数解释 51 | //1.choiceDate 时间区间(开始时间和结束时间) 52 | //2.dayCount 共多少晚 53 | 54 | console.log(choiceDate, dayCount); 55 | console.log('入住从 ' + choiceDate[0].re + ' 到 ' + choiceDate[1].re + ' 共 ' + dayCount + ' 晚'); 56 | }, 57 | change2({ choiceDate, dayCount }) { 58 | this.dateStr = '入住从 ' + choiceDate[0].re + ' (星期' + choiceDate[0].week + ') 到 ' + choiceDate[1].re + '(星期' + choiceDate[1].week + ')' + ' 共 ' + dayCount + ' 晚 '; 59 | } 60 | } 61 | } 62 | ``` 63 | 64 | 65 | --- 66 | ## 参数示例: 67 | | 属性名 | 类型 | 默认值 | 说明 | 68 | |---|---|---|---| 69 | | modal | Boolean | false | 是否为弹窗模式,默认为false| 70 | | show | Boolean | false | 是否显示弹窗(与modal一起使用),默认为false| 71 | | singleDate | Boolean | false | 表示是否只选择一个日期,默认为false | 72 | | startDate | String | 今天 | 开始时间,默认为今天| 73 | | endDate |String |明天 | 开始时间,默认为明天 | 74 | | daysCount | String | 150天 | 显示的天数范围: 60 < x < 360(从今天算起) | 75 | | change | EventHandle | | 选择日期后的回调事件,event.detail = {choiceDate: value1,dayCount:value2} | 76 | 77 | --- 78 | ## 效果图: 79 | ![效果图](https://zhangdaren.github.io/uni-app-date-picker/static/date-picker/gif.gif) 80 | 81 | 82 | ## TODO 83 | * 选中的日期可能会被挡掉 84 | * 语种 85 | * nvue版本 86 | * 历史时间选择(优先级低) 87 | ------------------------- 88 | 弹窗模式上,不能根据show变量来显示/隐藏 89 | ------------------------ 90 | 91 | --- 92 | ## 更新历史说明: 93 | ## v1.0.20(20201029) 94 | * 修复2021没有假日数据出错的问题 95 | 96 | ## v1.0.19(20200110) 97 | * 增加法定节假日和补班的显示,替换之前的假日显示,更符合国情 98 | * 优化dayCount为从今天开始算起 99 | 100 | ## v1.0.18(20191107) 101 | * 修复单个日期显示错误 102 | * 修复app平台上弹窗模式,没有完成按钮 103 | -------------------------------------------------------------------------------- /pages/index/index.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 84 | 85 | 149 | -------------------------------------------------------------------------------- /components/date-picker/date-picker.vue: -------------------------------------------------------------------------------- 1 | 82 | 83 | 860 | 861 | 1290 | --------------------------------------------------------------------------------