写这个文章主要是记录下用法,官网已经说的很详细了
npm install vue-datepicker --save
html代码
<myDatepicker :date=\"startTime\" :option=\"multiOption\" :limit=\"limit\"></myDatepicker> <myDatepicker :date=\"endtime\" :option=\"timeoption\" :limit=\"limit\"></myDatepicker>
js代码
<script> import myDatepicker from \'vue-datepicker\' export default { name: \'PillDetail\', components:{ myDatepicker }, data () { return { startTime: { // 相当于变量 time: \'\' }, endtime: { // 相当于变量 time: \'\' }, timeoption: { type: \'min\', // day , multi-day week: [\'周一\', \'周二\', \'周三\', \'周四\', \'周五\', \'周六\', \'周日\'], month: [\'1月\', \'2月\', \'3月\', \'4月\', \'5月\', \'6月\', \'7月\', \'8月\', \'9月\', \'10月\', \'11月\', \'12月\'], format: \'YYYY-M-D HH:mm\', // YYYY-MM-DD 日期 inputStyle: { // input 样式 \'display\': \'inline-block\', \'padding\': \'6px\', \'line-height\': \'22px\', \'width\':\'160px\', \'font-size\': \'16px\', \'border\': \'2px solid #fff\', \'box-shadow\': \'0 1px 3px 0 rgba(0, 0, 0, 0.2)\', \'border-radius\': \'2px\', \'color\': \'#5F5F5F\', \'margin\':\'0\' }, color: { // 字体颜色 header: \'#35acff\', // 头部 headerText: \'#fff\', // 头部文案 }, buttons: { // button 文案 ok: \'确定\', cancel: \'取消\' }, overlayOpacity: 0.5, // 遮罩透明度 placeholder: \'请选时间\', // 提示日期 dismissible: true // 默认true 待定 }, multiOption: { type: \'min\', week: [\'周一\', \'周二\', \'周三\', \'周四\', \'周五\', \'周六\', \'周日\'], month: [\'1月\', \'2月\', \'3月\', \'4月\', \'5月\', \'6月\', \'7月\', \'8月\', \'9月\', \'10月\', \'11月\', \'12月\'], format:\"YYYY-M-D HH:mm\", inputStyle: { \'display\': \'inline-block\', \'padding\': \'6px\', \'line-height\': \'22px\', \'width\':\'160px\', \'font-size\': \'16px\', \'border\': \'2px solid #fff\', \'box-shadow\': \'0 1px 3px 0 rgba(0, 0, 0, 0.2)\', \'border-radius\': \'2px\', \'color\': \'#5F5F5F\', \'margin\':\'0\' }, color: { // 字体颜色 header: \'#35acff\', // 头部 headerText: \'#fff\', // 头部文案 }, buttons: { // button 文案 ok: \'确定\', cancel: \'取消\' }, placeholder: \'请选时间\', dismissible: true }, limit: [{ type: \'weekday\', available: [1, 2, 3, 4, 5,6,0] }, { type: \'fromto\', from: \'2016-02-01\', to: \'2050-02-20\' }] } }, methods: { } } </script>
设置前一天和后一天的时间,我的实现是通过watch来监听startTime的值,发现变化后,对当前日期和选择的日期进行对比,超过未来时间就不进行变更,而计算后一天或前一天,只需让当前时间进行加或减一天的时间即可
参考代码:
<template> <div class=\"menu-container\"> <Header :title=\"title\" :xian=\"xian\" :name=\"name\" :food=\"food\"></Header> <div class=\"box\"> <div class=\"timeselectbox\"> <li class=\"daybefore\" @click=\"getYesterday(startTime.time)\"> < 前一天 </li> <li class=\"dateselect\"> <myDatepicker :date=\"startTime\" :option=\"multiOption\" :limit=\"limit\"></myDatepicker> <!-- 2018-04-05 --> </li> <li class=\"nextday\" @click=\"getTomorrow(startTime.time)\"> 后一天 > </li> </div> <div class=\"databox\"> <div class=\"allsale\" style=\"border-right:1px solid white\"> <p class=\"p-top\">总金额(元)</p> <p class=\"p-bott\">{{statistics.amount}}</p> </div> <div class=\"eff\"> <p class=\"p-top\">总数量(张)</p> <p class=\"p-bott\">{{statistics.sum}}</p> </div> </div> <div class=\"paydetail\"> <li @click=\"countvouchertype({ use_date:startTime.time, ticket_type:1, active:\'koubei\' })\" :class=\"{active:active.koubei}\"><span>口碑券:</span>{{statistics.koubei}}笔</li> <li @click=\"countvouchertype({ use_date:startTime.time, ticket_type:2, active:\'meituan\' })\" :class=\"{active:active.meituan}\"><span>美团券:</span>{{statistics.meituan}}笔</li> <li @click=\"countvouchertype({ use_date:startTime.time, ticket_type:3, active:\'nuomi\' })\" :class=\"{active:active.nuomi}\"><span>糯米券:</span>{{statistics.nuomi}}笔</li> </div> <div class=\"allsale_price\"> 总金额:¥{{checkCouponList.amount}} </div> <div class=\"table\"> <table class=\"table_data\"> <tr class=\"describe\"> <th></th> <th>券码</th> <th>类型</th> <th>状态</th> <th>金额</th> </tr> <tr @click=\"topath({ name:\'/checkCouponInfo\', item:item })\" v-for=\"(item,index) in checkCouponList.data\"> <td></td> <td>{{item.ticket_code}}</td> <td>{{item.ticket_type}}</td> <td class=\"status\" :class=\"item.active == \'t\' ? \'status-active\' : \'\'\">{{item.active == \'t\' ? \'成功\' : \'失败\'}}</td> <td>¥{{item.amount}}<b class=\"right_j\"></b></td> </tr> </table> </div> </div> </div> </template> <script type=\"text/javascript\"> import Header from \'../Mast/Header\' import myDatepicker from \'vue-datepicker\' export default{ name:\'CertificateDetail\', data () { return { title:\'验券明细\', xian:false, name:\'launcher\', food:true, active:{ koubei:true, meituan:false, nuomi:false, }, checkCouponList:{ data:[] }, statistics:{}, startTime: { time: \'\' }, multiOption: { type: \'day\', week: [\'周一\', \'周二\', \'周三\', \'周四\', \'周五\', \'周六\', \'周日\'], month: [\'1月\', \'2月\', \'3月\', \'4月\', \'5月\', \'6月\', \'7月\', \'8月\', \'9月\', \'10月\', \'11月\', \'12月\'], format:\"YYYY-MM-DD\", inputStyle: { \'display\': \'inline-block\', \'height\':\'35px\', \'line-height\': \'35px\', \'width\':\'141px\', \'font-size\': \'16px\', \'border\': \'none\', \'color\': \'#5F5F5F\', \'margin\':\'0\', \'text-align\':\'center\' }, color: { // 字体颜色 header: \'#ff5534\', // 头部 headerText: \'#fff\', // 头部文案 }, buttons: { // button 文案 ok: \'确定\', cancel: \'取消\' }, placeholder: \'请选时间\', dismissible: true }, limit: [{ type: \'weekday\', available: [1, 2, 3, 4, 5,6,0] }, { type: \'fromto\', from: \'2016-02-01\', to: \'2050-02-20\' }] } }, methods:{ topath: function (params) { this.$store.state.cashtime1 = this.startTime.time; if(params[\'name\'] == \'/checkCouponInfo\'){ this.$store.commit(\'couponInfo\',params[\'item\']); } this.$router.push({\'path\':params[\'name\']}); }, getYesterday: function (time) { let yesterday = new Date(time); yesterday.setTime(yesterday.getTime() - 24 * 60 * 60 * 1000); let reduce = \'-\'; this.startTime.time = yesterday.getFullYear() + reduce + this.addZero(yesterday.getMonth() + 1) + reduce + this.addZero(yesterday.getDate()); }, getTomorrow: function (time) { let tomorrow = new Date(time); let nowDate = this.getNowFormatDate(); tomorrow.setTime(tomorrow.getTime() + 24 * 60 * 60 * 1000); let reduce = \'-\'; let year = tomorrow.getFullYear() + reduce + this.addZero(tomorrow.getMonth() + 1) + reduce + this.addZero(tomorrow.getDate()); let t_timestamp = Math.round(new Date(year) / 1000); let n_timestamp = Math.round(new Date(nowDate) / 1000); if(t_timestamp > n_timestamp){ return mui.toast(\'不能超过今天\'); }else{ this.startTime.time = year; } }, getNowFormatDate: function () { let date = new Date(); let reduce = \"-\"; let currentdate = date.getFullYear() + reduce + this.addZero(date.getMonth() + 1) + reduce + this.addZero(date.getDate()); return currentdate; }, addZero: function (time) { if (time >= 1 && time <= 9) { time = \"0\" + time; } return time; }, countvouchertype: function (params) { // 设置选项卡 for(let key in this.active){ if(params[\'active\'] == key){ this.active[key] = true; }else{ this.active[key] = false; } } this.$store.state.mastloadding = true; console.dir(params); this.API.countvouchertype(params).then((response) => { this.checkCouponList = response; console.dir(this.checkCouponList); this.$store.state.mastloadding = false; }, (response) => { this.$store.state.mastloadding = false; mui.toast(\'网络错误\'); }); }, countvoucherinfo: function (params) { this.API.countvoucherinfo(params).then((response) => { console.dir(response); this.statistics = response; }, (response) => { mui.toast(\'网络错误\'); }); } }, components:{ Header, myDatepicker }, mounted(){ this.startTime.time = this.$store.state.cashtime1 ? this.$store.state.cashtime1 : this.getNowFormatDate(); // this.startTime.time = this.getNowFormatDate(); }, watch: { startTime: { handler(newValue, oldValue) { console.log(newValue); let newTimestamp = Math.round(new Date(newValue .time) / 1000); let oldTimestamp = Math.round(new Date(this.getNowFormatDate()) / 1000); if(newTimestamp > oldTimestamp){ this.startTime.time = this.getNowFormatDate(); mui.toast(\'不能超过今天\'); }else{ let active = \'\'; let ticket_type = 1; for(let key in this.active){ if(this.active[key]){ active = key if(key==\'meituan\'){ ticket_type = 2 } if(key == \'nuomi\') { ticket_type = 3 } } } this.countvoucherinfo({ use_date:this.startTime.time }); this.countvouchertype({ use_date:this.startTime.time, ticket_type:ticket_type, active:active }); } }, deep:true } } } </script> <style type=\"text/css\" scoped> .menu-container{ background:#fff; } .box{ width:100%; margin-top:45px; background:#fff; } .timeselectbox{ height:60px; background:#edeeef; } .timeselectbox li{ list-style: none; float:left; height:35px; line-height:35px; margin-top:10px; color:black; } .daybefore{ width:28%; padding-left:10px; font-size:13.5px; } .dateselect{ border-radius: 3px; background:#fff; width:44%; text-align:center; } .nextday{ text-align: right; width:28%; padding-right:10px; font-size:13.5px; } .databox{ height:115px; background:#ff5534; } .databox div{ float:left; height:80px; margin-top:17.5px; text-align:center; } .allsale{ width:50%; } .databox p{ color:white; } .p-top{ color:#eaebec; margin-top:15px; } .p-bott{ font-size:18px; margin-top:5px; font-weight: bold; } .eff{ width:49.7%; border-left:1px solid #cccccc96; } .paydetail{ height:52px; background:white; width:100%; } .paydetail li{ display: inline-block; float:left; width:33.3%; font-size:12px; text-align:center; height:100%; line-height: 50px; overflow: hidden; } .line{ display: block; margin-left: 32px; width: 25%; border: 1px solid #40AAEB; } .active{ color:#ff5534; border-bottom:1px solid #ff5534; } .allsale_price{ height:40px; background:#f4f4f4; text-align: center; line-height: 40px; font-size: 12px; } .table{ width:100%; } .table_data{ width:100%; } .table_data th{ height:30px; font-size:15px; } .describe{ border-bottom:1px solid #f4f4f4; } .describe th:nth-child(1){ width:5%; /*text-align: left;*/ } .describe th:nth-child(2){ text-align: left; } .table_data tr{ width:100%; } .table_data tr td{ text-align:center; height:30px; line-height: 30px; font-size:13px; position:relative; } .table_data tr td:nth-child(1){ width:3%; } .table_data tr td:nth-child(2){ text-align: left; } .status{ color:red; } .status-active{ color:green; } .right_j{ /*background:url(\'/static/img/scancode_right.png\') no-repeat;*/ background-size:9px !important; display: inline-block; position:absolute; width:15px; height:15px; line-height: 30px; font-size:18px; right:5px; top:5px; } </style>
以上所述是小编给大家介绍的vue中datepicker的使用教程实例代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
© 版权声明
THE END
暂无评论内容