uni-app时间选择器并选择时间段

效果图:

1.在script中引用自定义组件:mx-datepicker.vue

import MxDatePicker from "@/components/mx-datepicker/mx-datepicker.vue";

2.注册组件:

components: {
            MxDatePicker
        },

 3.新建时间选择页面代码:

<template>
    <view>
        <view class="test">
            <view>日期选择 - 示例</view>
            { {date}}
            <button type="primary" @click="onShowDatePicker('date')">选择日期</button>
            { {time}}
            <button type="primary" @click="onShowDatePicker('time')">选择时间</button>
            { {datetime}}
            <button type="primary" @click="onShowDatePicker('datetime')">选择日期时间</button>
            { {range[0]}} - { {range[1]}}
            <button type="primary" @click="onShowDatePicker('range')">选择日期范围</button>
            { {rangetime[0]}} - { {rangetime[1]}}
            <button type="primary" @click="onShowDatePicker('rangetime')">选择日期时间范围</button>
        </view>
        <mx-date-picker :show="showPicker" :type="type" :value="value" :show-tips="true" :begin-text="'开始'"
            :end-text="'结束'" :show-seconds="true" @confirm="onSelected" @cancel="onSelected" />
    </view>
</template>
<script>
    import MxDatePicker from "@/components/mx-datepicker/mx-datepicker.vue";
    export default {
        components: {
            MxDatePicker
        },
        data() {
            return {
                showPicker: false,
                date: '2019/01/01',
                time: '15:00:12',
                datetime: '2019/01/01 15:00:12',
                range: [],
                rangetime: ['2019/01/08 14:00', '2019/01/16 13:59'],
                type: 'rangetime',
                value: ''
            }
        },
        methods: {
            onShowDatePicker(type) { //显示
                console.log(JSON.stringify(type))
                this.type = type;
                this.showPicker = true;
                this.value = this[type];
            },
            onSelected(e) { //选择
                console.log(JSON.stringify(e))
                this.showPicker = false;
                if (e) {
                    this[this.type] = e.value;
                    //选择的值
                    console.log('value => ' + e.value);
                    //原始的Date对象
                    console.log('date => ' + e.date);
                }
            }
        }
    }
</script>
<style>
    .test {
        text-align: center;
        padding: 10px 0;
    }

    button {
        margin: 20upx;
        font-size: 28upx;
    }
</style>

代码说明:

(1).时间、日期点击事件onShowDatePicker,传递的参数是选择时间日期的类型

type:date =》日期选择

type:time =》时间选择

 

type:datetime =》日期+时间选择

 

 type:range =》日期范围选择

 type:rangetime =》时间+日期范围选择

 

 组件使用:

 


4.mx-datepicker.vue

 

<template>
    <view v-if="isShow" class="picker">
        <!-- 日期选择器 -->
        <view v-if="type!='time'" class="picker-modal">
            <view class="picker-modal-header">
                <view class="picker-icon picker-icon-zuozuo" :hover-stay-time="100" hover-class="picker-icon-active" @click="onSetYear('-1')"></view>
                <view class="picker-icon picker-icon-zuo" :hover-stay-time="100" hover-class="picker-icon-active" @click="onSetMonth('-1')"></view>
                <text class="picker-modal-header-title">{ {title}}</text>
                <view class="picker-icon picker-icon-you" :hover-stay-time="100" hover-class="picker-icon-active" @click="onSetMonth('+1')"></view>
                <view class="picker-icon picker-icon-youyou" :hover-stay-time="100" hover-class="picker-icon-active" @click="onSetYear('+1')"></view>
            </view>
            <swiper class="picker-modal-body" :circular="true" :duration="200" :skip-hidden-item-layout="true" :current="calendarIndex" @change="onSwiperChange">
                <swiper-item class="picker-calendar" v-for="(calendar,calendarIndex2) in calendars" :key="calendarIndex2">
                    <view class="picker-calendar-view" v-for="(week,index) in weeks" :key="index - 7">
                        <view class="picker-calendar-view-item">{ {week}}</view>
                    </view>
                    <view class="picker-calendar-view" v-for="(date,dateIndex) in calendar" :key="dateIndex" @click="onSelectDate(date)">
                        <!-- 背景样式 -->
                        <view v-show="date.bgStyle.type" :class="'picker-calendar-view-'+date.bgStyle.type" :style="{background: date.bgStyle.background}"></view>
                        <!-- 正常和选中样式 -->
                        <view class="picker-calendar-view-item" :style="{opacity: date.statusStyle.opacity, color: date.statusStyle.color, background: date.statusStyle.background}">
                            <text>{ {date.title}}</text>
                        </view>
                        <!-- 小圆点样式 -->
                        <view class="picker-calendar-view-dot" :style="{opacity: date.dotStyle.opacity, background: date.dotStyle.background}"></view>
                        <!-- 信息样式 -->
                        <view v-show="date.tips" class="picker-calendar-view-tips">{ {date.tips}}</view>
                    </view>
              

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yyxhzdm

你的鼓励是我创作的最大动力!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值