vux日期时间组件:Calendar/DateTimePicker

vux日期时间组件:Calendar/DateTimePicker

【免费下载链接】vux Mobile UI Components based on Vue & WeUI 【免费下载链接】vux 项目地址: https://gitcode.com/gh_mirrors/vu/vux

组件概述

VUX(Mobile UI Components based on Vue & WeUI)提供了两个强大的日期时间选择组件:Calendar(日历)和DateTimePicker(日期时间选择器)。这两个组件能够满足移动端应用中各种日期时间选择需求,从简单的日期选择到复杂的时间范围选择。

组件位置

Calendar组件详解

基本用法

Calendar组件提供了直观的日历界面,支持单选、多选等多种选择模式。基本用法如下:

<group>
  <calendar 
    :readonly="readonly" 
    v-model="demo1" 
    :title="$t('Basic Usage')" 
    disable-past 
    placeholder="placeholder" 
    @on-show="log('show')" 
    @on-hide="log('hide')">
  </calendar>
</group>

主要功能

Calendar组件提供了丰富的功能选项:

  1. 日期限制:可通过disable-pastdisable-future属性限制选择过去或未来的日期
  2. 多选功能:支持选择多个日期
  3. 自定义格式化:可自定义选中日期的显示格式
  4. 日期标记:支持标记特定日期
  5. 周未禁用:可通过disable-weekend禁用周末选择

代码示例

以下是一个多选日期并自定义格式化的示例:

<group>
  <calendar 
    disable-weekend 
    :display-format="displayFormat" 
    :placeholder="$t('Please select')" 
    @on-change="onChange" 
    v-model="demo6" 
    :title="$t('Format multiple dates')" 
    :popup-header-title="$t('please select')">
  </calendar>
  <cell-box align-items="flex-start">
    <span class="selected-days">value:</span>
    <div>
      <badge v-for="day in demo6" :text="day" :key="day" style="margin-right:10px;"></badge>
    </div>
  </cell-box>
</group>

<script>
export default {
  data () {
    return {
      demo6: [],
      displayFormat (value, type) {
        if (type === 'string') {
          return value
        } else {
          return value.length ? (value.length + ' days') : ''
        }
      }
    }
  },
  methods: {
    onChange (val) {
      console.log('on change', val)
    }
  }
}
</script>

DateTimePicker组件详解

基本用法

DateTimePicker组件提供了日期和时间的选择功能,支持多种格式的日期时间选择:

<group :title="$t('Default format: YYYY-MM-DD')">
  <datetime
    v-model="value1"
    @on-change="change"
    :title="$t('Birthday')"
    @on-cancel="log('cancel')"
    @on-confirm="onConfirm"
    @on-hide="log('hide', $event)">
  </datetime>
</group>

主要功能

DateTimePicker组件提供了以下主要功能:

  1. 自定义格式:支持多种日期时间格式,如YYYY-MM-DDYYYY-MM-DD HH:mm
  2. 时间范围限制:可设置最小/最大年份、小时等
  3. 自定义选项:可自定义年、月、日、时、分的显示格式
  4. 步长设置:支持自定义分钟步长(如每15分钟)
  5. 插件调用:支持以插件形式调用

代码示例

以下是一个自定义小时和分钟列表的示例:

<group :title="$t('Custom minute list: every 15 minutes')">
  <datetime 
    v-model="minuteListValue" 
    format="YYYY-MM-DD HH:mm" 
    :minute-list="['00', '15', '30', '45']" 
    @on-change="change" 
    :title="$t('Birthday')">
  </datetime>
</group>

<group :title="$t('Custom hour list')">
  <datetime 
    v-model="hourListValue" 
    format="YYYY-MM-DD HH:mm" 
    :hour-list="['09', '10', '11', '12', '13', '14', '15', '16']" 
    :minute-list="['00', '15', '30', '45']" 
    @on-change="change" 
    :title="$t('Birthday')">
  </datetime>
</group>

DateTimePicker高级用法

日期时间范围限制

DateTimePicker支持通过多种方式限制可选的日期时间范围:

<group :title="$t('Define range of hours')">
  <datetime 
    v-model="limitHourValue" 
    format="YYYY-MM-DD HH:mm" 
    :min-hour=9 
    :max-hour=18 
    @on-change="change" 
    :title="$t('Define range of hours')" 
    :inline-desc="$t('Working hours: 09-18')">
  </datetime>
</group>

<group :title="$t('Set start-date and end-date') + ' 2015-11-11 ~ 2017-10-11'">
  <datetime 
    v-model="limitHourValue" 
    :start-date="startDate" 
    :end-date="endDate" 
    format="YYYY-MM-DD HH:mm" 
    @on-change="change" 
    :title="$t('Start time')">
  </datetime>
</group>

<script>
export default {
  data () {
    return {
      startDate: '2015-11-11',
      endDate: '2017-10-11'
    }
  }
}
</script>

自定义模板

可以自定义年、月、日、时、分的显示格式,使其更符合特定的语言或格式需求:

<group :title="$t('Specified template text in Chinese')">
  <datetime 
    v-model="value5" 
    :placeholder="$t('Please select')" 
    :min-year=2000 
    :max-year=2016 
    format="YYYY-MM-DD HH:mm" 
    @on-change="change" 
    :title="$t('Chinese')" 
    year-row="{value}年" 
    month-row="{value}月" 
    day-row="{value}日" 
    hour-row="{value}点" 
    minute-row="{value}分" 
    confirm-text="完成" 
    cancel-text="取消">
  </datetime>
</group>

插件形式调用

除了作为组件使用外,DateTimePicker还支持以插件形式调用:

<div style="padding:15px;">
  <x-button type="primary" plain @click.native="showPlugin">{{ $t('Used as a plugin') }}</x-button>
</div>

<script>
export default {
  methods: {
    showPlugin () {
      this.$vux.datetime.show({
        cancelText: '取消',
        confirmText: '确定',
        format: 'YYYY-MM-DD HH',
        value: '2017-05-20 18',
        onConfirm (val) {
          console.log('plugin confirm', val)
        },
        onShow () {
          console.log('plugin show')
        },
        onHide () {
          console.log('plugin hide')
        }
      })
    }
  }
}
</script>

组件对比与选择建议

功能Calendar组件DateTimePicker组件
界面形式日历视图滚动选择器
日期选择支持支持
时间选择不支持支持
多选功能支持不支持
日期范围支持不支持
自定义格式有限支持丰富支持
占用空间较大较小

选择建议

  1. 日程安排:选择Calendar组件,其日历视图更直观
  2. 生日选择:选择DateTimePicker组件,可精确到时分
  3. 酒店预订:选择Calendar组件,支持日期范围选择
  4. 会议时间:选择DateTimePicker组件,可精确到分钟
  5. 多日期选择:必须使用Calendar组件

常见问题与解决方案

问题1:如何在Calendar组件中禁用特定日期?

解决方案:使用disable-date-function属性自定义禁用逻辑:

<calendar
  :disable-date-function="disableDate"
  v-model="selectedDate"
  :title="选择日期">
</calendar>

<script>
export default {
  methods: {
    disableDate(date) {
      // 禁用所有偶数日期
      return date.getDate() % 2 === 0;
    }
  }
}
</script>

问题2:如何自定义DateTimePicker的日期顺序?

解决方案:使用order-map属性自定义年月日的显示顺序:

<datetime
  v-model="value1"
  @on-change="change"
  title="customize column order"
  :order-map="{
    year: 3,
    month: 2,
    day: 1
  }">
</datetime>

问题3:如何在选择日期后立即触发事件?

解决方案:使用@on-change事件监听日期变化:

<calendar
  @on-change="handleDateChange"
  v-model="selectedDate"
  :title="选择日期">
</calendar>

<script>
export default {
  methods: {
    handleDateChange(date) {
      console.log("选择的日期是:", date);
      // 在这里处理日期变化后的逻辑
    }
  }
}
</script>

总结

VUX的Calendar和DateTimePicker组件为移动端日期时间选择提供了完整的解决方案。通过本文的介绍,您应该已经掌握了这两个组件的基本用法、高级特性和最佳实践。

无论是需要直观的日历视图,还是精确的时间选择,VUX都能满足您的需求。合理选择组件并充分利用其特性,将为您的移动应用带来更好的用户体验。

建议您查看官方示例代码,进一步探索组件的更多功能和用法:

VUX Logo

【免费下载链接】vux Mobile UI Components based on Vue & WeUI 【免费下载链接】vux 项目地址: https://gitcode.com/gh_mirrors/vu/vux

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值