Skip to content
On this page

组件库文档 tmui.design

时间范围选择器 Time-between

tm-time-between 时间范围选择器,这是一个实用组件,用来时间日期的范围选择(相比日历范围选择,这个可以精确到时分秒)


🌶️ 时间选择器 Time 示例

查看模拟效果
示例模板
vue
<template>
	<tm-app>
		<tm-sheet :margin="[0, 0]" :padding="[16, 24]" :round="0">
			<tm-text label="平铺式,这是一个时间范围选择器,主要应用于数据查询"></tm-text>
			<tm-divider></tm-divider>
			<tm-time-between
				:asyncModel="false"
				format="MM月DD日"
				v-model="datevalue"
				v-model:model-str="datevalue_str_ar"
				:default-value="datevalue"
			></tm-time-between>
		</tm-sheet>

		<tm-cell @click="show = true" :margin="[16, 16]" :round="6" :right-text="datevalue_str || '请选择时间'" title="弹层式选择时间"></tm-cell>
		<tm-drawer v-model:show="show" :height="900" hideHeader>
			<view class="pa-16">
				<tm-time-between @confirm="show = false" :asyncModel="false"></tm-time-between>
			</view>
		</tm-drawer>
	</tm-app>
</template>

<script lang="ts" setup>
import tmSheet from '@/tmui/components/tm-sheet/tm-sheet.vue'
import tmApp from '@/tmui/components/tm-app/tm-app.vue'
import tmText from '@/tmui/components/tm-text/tm-text.vue'
import tmCell from '@/tmui/components/tm-cell/tm-cell.vue'
import tmDrawer from '@/tmui/components/tm-drawer/tm-drawer.vue'
import tmDivider from '@/tmui/components/tm-divider/tm-divider.vue'
import tmTimeBetween from '@/tmui/components/tm-time-between/tm-time-between.vue'
import { computed, ref } from 'vue'
const datevalue = ref([])
const datevalue_str_ar = ref([])
const datevalue_str = computed(() => datevalue_str_ar.value.join('~'))
const show = ref(false)
</script>

<style></style>

🌶️ 兼容性

APP-VUEAPP-NVUE小程序WEB/H5VUE3/TS
✔️✔️✔️✔️✔️

关于nvue切换时间时有加载动画过程,这里我当前的sdk3.6.5在赋值时不会触发选中

🌱 Time-between 参数

本组件含有公共属性 公共属性

参数名类型默认值描述
modelValue[Number / String / Date][]动态返回时间戳。这是一个标准的时间,不管showDetail是如何设置都将不影响这里的输出,format也不会被影响
modelStr[][]这里是受format影响的,输出使用v-model:model-str.一般用来显示,因为可能是一个不标准的时间格式,给后台时请使用v-model变量
defaultValue[Number / String / Date][]默认显示的时间,格式与modelValue相同
formatStringYYYY/MM/DD这里会影响到modelValue的输出形式,请一定要规范,时间格式化形式,如:YYYY-MM-DD
showDetailObject见下方说明下:这里不会影响输出,只会影响到当前显示的列,设置选择时间的精度,最小可到秒
startNumber / String / Date2008/01/01 00:00:00选择器开始的日期
endNumber / String / Date""选择器结束的日期
immediateChangebooleanfalse是否关闭滚动动画触发change
asyncModelbooleantrue改变日期时,是否需要同步到vmodel变量中,立即执行双向同步,如果为false日期的改变不会同步到vmodel中
showBtnbooleantrue是否显示底部的确认按钮
quickBtn[quickBtnType]见下方快捷日期的选中按钮,如果不想显示快捷按钮请设置空数组。

showDetail:{year:true,month:true,day:true,hour:false,minute:false,second:false}

asyncModel 这是一个有意思的参数 我之所以提供这个是我们在交互的时候,经常弹出或者让用户选择时间,也许不是我们想要的日期。需要让用记点击确认按钮再同步我们选中的数据。如果 不点确认,用户再次打开本组件时,时间不会 回退到最初的日期,而不是上一次选中的日期。相信大家能理解这个参数的意思。 然后通过内部的按钮点击后再同步数据。如果如果你想要自定同步可以使用refs.getNowDate这个函数来获取并同步。

quickBtn格式如下 quickBtn默认已经提供下下方7个快捷按钮。

ts
interface quickBtnType {
	    label:string,
		/** 返回的日期一定是数组并且长度是2,当然如果提供了下面的type内置函数值,这里的这个fun返回可以随意 或者不提供。 */
		fun?:()=>[string|number|Date|Da,string],
		color?:'primary',
		//这个是内部代号,使用的内部函数方法,如果提供了,上面的fun可以不用提供,且无效
		// br:本日,bz:本周,by:本月,jsy:近三个月,bn:本年,d7:近7天,d30:近30天
		type?:'br'|'bz'|'by'|'jsy'|'bn'|'d7'|'d30', 
	}

🌹 Time-view 事件

事件名参数返回数据描述
change/[start,end]时间被拨动时触发
confirm/[start,end]按钮被点击触发
clear/-点了清除按钮时触发,记住是清除用户选中的日期,不是清除双向绑定中的vmodel数据

🌽 slot插槽

🥗 Time-view ref方法

方法名参数返回值描述
getNowDate-[start,end]手动获取并同步当前用户选中的数据到vmodel中