100 Star 968 Fork 268

umicro / uView2.0

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
datetimePicker.nvue 4.90 KB
一键复制 编辑 原始数据 按行查看 历史
<template>
<view class="u-page">
<u-navbar
title="datetimePicker 时间日期选择器"
@leftClick="navigateBack"
safeAreaInsetTop
fixed
placeholder
></u-navbar>
<u-cell-group>
<u-cell
@click="showDatetimePicker(index)"
:title="item.title"
v-for="(item, index) in list"
:key="index"
isLink
>
<image
slot="icon"
class="u-cell-icon"
:src="item.iconUrl"
mode="widthFix"
></image>
</u-cell>
</u-cell-group>
<u-datetime-picker
:show="show1"
v-model="value1"
mode="datetime"
closeOnClickOverlay
@confirm="confirm"
@cancel="cancel"
@change="change"
@close="close"
></u-datetime-picker>
<u-datetime-picker
:show="show2"
v-model="value2"
mode="date"
closeOnClickOverlay
@confirm="confirm"
@cancel="cancel"
@change="change"
@close="close"
></u-datetime-picker>
<u-datetime-picker
:show="show3"
v-model="value3"
mode="year-month"
closeOnClickOverlay
@confirm="confirm"
@cancel="cancel"
@change="change"
@close="close"
></u-datetime-picker>
<u-datetime-picker
:show="show4"
v-model="value4"
mode="time"
closeOnClickOverlay
@confirm="confirm"
@cancel="cancel"
@change="change"
@close="close"
></u-datetime-picker>
<u-datetime-picker
:show="show5"
v-model="value5"
:filter="filter"
mode="date"
closeOnClickOverlay
@confirm="confirm"
@cancel="cancel"
@change="change"
@close="close"
></u-datetime-picker>
<u-datetime-picker
:show="show6"
v-model="value6"
mode="date"
:formatter="formatter"
closeOnClickOverlay
@confirm="confirm"
@cancel="cancel"
@change="change"
@close="close"
></u-datetime-picker>
<u-datetime-picker
:show="show7"
v-model="value7"
mode="datetime"
:minDate="1587524800000"
:maxDate="1786778555000"
closeOnClickOverlay
@confirm="confirm"
@cancel="cancel"
@change="change"
@close="close"
></u-datetime-picker>
</view>
</template>
<script>
export default {
data() {
const d = new Date()
const year = d.getFullYear()
let month = uni.$u.padZero(d.getMonth() + 1)
const date = d.getDate()
return {
current: 0,
value1: Number(new Date()),
value2: Number(new Date()),
value3: Number(new Date()),
value4: '05:28',
value5: Number(new Date()),
value6: Number(new Date()),
value7: Number(new Date()),
show1: false,
show2: false,
show3: false,
show4: false,
show5: false,
show6: false,
show7: false,
list: [{
title: '完整日期时间',
iconUrl: 'https://cdn.uviewui.com/uview/demo/datetime-picker/6.png'
},
{
title: '年月日',
iconUrl: 'https://cdn.uviewui.com/uview/demo/datetime-picker/4.png'
},
{
title: '年月',
iconUrl: 'https://cdn.uviewui.com/uview/demo/datetime-picker/3.png'
},
{
title: '时间',
iconUrl: 'https://cdn.uviewui.com/uview/demo/datetime-picker/5.png'
}, {
title: '过滤器(保留偶数年)',
iconUrl: 'https://cdn.uviewui.com/uview/demo/datetime-picker/2.png'
}, {
title: '格式化',
iconUrl: 'https://cdn.uviewui.com/uview/demo/datetime-picker/1.png'
}, {
title: '限制最大最小值',
iconUrl: 'https://cdn.uviewui.com/uview/demo/datetime-picker/7.png'
}
]
}
},
methods: {
close() {
this[`show${this.current}`] = false
},
cancel() {
this[`show${this.current}`] = false
},
confirm(e) {
this[`show${this.current}`] = false
this.result(e.value, e.mode)
},
change(e) {
// console.log('change', e)
},
navigateBack() {
uni.navigateBack()
},
formatter(mode, value) {
if (mode === 'year') {
return `${value}年`;
}
if (mode === 'month') {
return `${value}月`;
}
return value;
},
filter(mode, options) {
if (mode === 'year') {
return options.filter((option) => option % 2 === 0);
}
return options;
},
showDatetimePicker(index) {
this.current = index + 1
this[`show${index + 1}`] = true
},
result(time, mode) {
const timeFormat = uni.$u.timeFormat,
toast = uni.$u.toast
switch (mode) {
case 'datetime':
return toast(timeFormat(time, 'yyyy-mm-dd hh:MM'))
case 'date':
return toast(timeFormat(time, 'yyyy-mm-dd'))
case 'year-month':
return toast(timeFormat(time, 'yyyy-mm'))
case 'time':
return toast(time)
default:
return ''
}
},
filter(type, options) {
if (type === 'year') {
return options.filter((option) => option % 2 === 0)
}
return options;
},
formatter(type, value) {
if (type === 'year') {
return `${value}年`
}
if (type === 'month') {
return `${value}月`
}
if (type === 'day') {
return `${value}日`
}
return value
},
},
}
</script>
<style lang="scss">
.u-page {
padding: 0;
}
</style>
JavaScript
1
https://gitee.com/umicro/uView2.0.git
git@gitee.com:umicro/uView2.0.git
umicro
uView2.0
uView2.0
master

搜索帮助