mirror of
https://gitee.com/wot-design-uni/wot-design-uni.git
synced 2025-12-06 09:08:51 +08:00
refactor: ♻️ 完善 month-panel 的属性定义 (#1351)
* refactor: ♻️ 完善 month-panel 的属性定义 * refactor: ♻️ 解决潜在的跨天日期默认值异常问题
This commit is contained in:
parent
c84af08cfd
commit
c913cf7a9a
@ -77,7 +77,8 @@ import { ref } from 'vue'
|
|||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
|
||||||
const minDate = ref<number>(new Date(new Date().getFullYear() - 20, new Date().getMonth() - 6, new Date().getDate()).getTime())
|
const now = new Date()
|
||||||
|
const minDate = ref<number>(new Date(now.getFullYear() - 20, now.getMonth() - 6, now.getDate()).getTime())
|
||||||
|
|
||||||
const value1 = ref<number>(Date.now())
|
const value1 = ref<number>(Date.now())
|
||||||
const value2 = ref<number[]>([Date.now() - 24 * 60 * 60 * 1000 * 3, Date.now()])
|
const value2 = ref<number[]>([Date.now() - 24 * 60 * 60 * 1000 * 3, Date.now()])
|
||||||
|
|||||||
@ -117,7 +117,8 @@ const valueClear2 = ref<any[]>([Date.now(), Date.now()])
|
|||||||
const valueEllipsis = ref<number>(Date.now())
|
const valueEllipsis = ref<number>(Date.now())
|
||||||
const valueRangeEllipsis = ref<any[]>([Date.now(), Date.now() + 7 * 24 * 60 * 60 * 1000])
|
const valueRangeEllipsis = ref<any[]>([Date.now(), Date.now() + 7 * 24 * 60 * 60 * 1000])
|
||||||
const minDate = ref<number>(Date.now())
|
const minDate = ref<number>(Date.now())
|
||||||
const maxDate = ref<number>(new Date(new Date().getFullYear() + 1, new Date().getMonth(), new Date().getDate()).getTime())
|
const now = new Date()
|
||||||
|
const maxDate = ref<number>(new Date(now.getFullYear() + 1, now.getMonth(), now.getDate()).getTime())
|
||||||
|
|
||||||
const formatter: DatetimePickerViewFormatter = (type, value) => {
|
const formatter: DatetimePickerViewFormatter = (type, value) => {
|
||||||
let formatValue = ''
|
let formatValue = ''
|
||||||
|
|||||||
@ -1,7 +1,11 @@
|
|||||||
import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
|
import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
|
||||||
import { makeBooleanProp, makeRequiredProp } from '../../common/props'
|
import { makeBooleanProp, makeNumberProp, makeStringProp } from '../../common/props'
|
||||||
import type { CalendarFormatter, CalendarTimeFilter, CalendarType } from '../types'
|
import type { CalendarFormatter, CalendarTimeFilter, CalendarType } from '../types'
|
||||||
|
|
||||||
|
const now = new Date()
|
||||||
|
const defaultMinDate = new Date(now.getFullYear(), now.getMonth() - 6, now.getDate()).getTime()
|
||||||
|
const defaultMaxDate = new Date(now.getFullYear(), now.getMonth() + 6, now.getDate(), 23, 59, 59).getTime()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 月份信息
|
* 月份信息
|
||||||
*/
|
*/
|
||||||
@ -11,22 +15,66 @@ export interface MonthInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const monthPanelProps = {
|
export const monthPanelProps = {
|
||||||
type: makeRequiredProp(String as PropType<CalendarType>),
|
/**
|
||||||
value: makeRequiredProp([Number, Array, null] as PropType<number | (number | null)[] | null>),
|
* 日期类型
|
||||||
minDate: makeRequiredProp(Number),
|
*/
|
||||||
maxDate: makeRequiredProp(Number),
|
type: makeStringProp<CalendarType>('date'),
|
||||||
firstDayOfWeek: makeRequiredProp(Number),
|
/**
|
||||||
|
* 选中值,为 13 位时间戳或时间戳数组
|
||||||
|
*/
|
||||||
|
value: {
|
||||||
|
type: [Number, Array, null] as PropType<number | (number | null)[] | null>,
|
||||||
|
default: null
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 最小日期,为 13 位时间戳
|
||||||
|
*/
|
||||||
|
minDate: makeNumberProp(defaultMinDate),
|
||||||
|
/**
|
||||||
|
* 最大日期,为 13 位时间戳
|
||||||
|
*/
|
||||||
|
maxDate: makeNumberProp(defaultMaxDate),
|
||||||
|
/**
|
||||||
|
* 周起始天
|
||||||
|
*/
|
||||||
|
firstDayOfWeek: makeNumberProp(0),
|
||||||
|
/**
|
||||||
|
* 日期格式化函数
|
||||||
|
*/
|
||||||
formatter: Function as PropType<CalendarFormatter>,
|
formatter: Function as PropType<CalendarFormatter>,
|
||||||
|
/**
|
||||||
|
* type 为范围选择时有效,最大日期范围
|
||||||
|
*/
|
||||||
maxRange: Number,
|
maxRange: Number,
|
||||||
|
/**
|
||||||
|
* type 为范围选择时有效,选择超出最大日期范围时的错误提示文案
|
||||||
|
*/
|
||||||
rangePrompt: String,
|
rangePrompt: String,
|
||||||
|
/**
|
||||||
|
* type 为范围选择时有效,是否允许选择同一天
|
||||||
|
*/
|
||||||
allowSameDay: makeBooleanProp(false),
|
allowSameDay: makeBooleanProp(false),
|
||||||
|
/**
|
||||||
|
* 是否展示面板标题,自动计算当前滚动的日期月份
|
||||||
|
*/
|
||||||
showPanelTitle: makeBooleanProp(false),
|
showPanelTitle: makeBooleanProp(false),
|
||||||
|
/**
|
||||||
|
* 选中日期所使用的当日内具体时刻
|
||||||
|
*/
|
||||||
defaultTime: {
|
defaultTime: {
|
||||||
type: [Array] as PropType<Array<number[]>>
|
type: [Array] as PropType<Array<number[]>>
|
||||||
},
|
},
|
||||||
panelHeight: makeRequiredProp(Number),
|
/**
|
||||||
// type 为 'datetime' 或 'datetimerange' 时有效,用于过滤时间选择器的数据
|
* 可滚动面板的高度
|
||||||
|
*/
|
||||||
|
panelHeight: makeNumberProp(378),
|
||||||
|
/**
|
||||||
|
* type 为 'datetime' 或 'datetimerange' 时有效,用于过滤时间选择器的数据
|
||||||
|
*/
|
||||||
timeFilter: Function as PropType<CalendarTimeFilter>,
|
timeFilter: Function as PropType<CalendarTimeFilter>,
|
||||||
|
/**
|
||||||
|
* type 为 'datetime' 或 'datetimerange' 时有效,是否不展示秒修改
|
||||||
|
*/
|
||||||
hideSecond: makeBooleanProp(false),
|
hideSecond: makeBooleanProp(false),
|
||||||
/**
|
/**
|
||||||
* 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。
|
* 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。
|
||||||
|
|||||||
@ -1,6 +1,10 @@
|
|||||||
import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
|
import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
|
||||||
import { baseProps, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props'
|
import { baseProps, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props'
|
||||||
|
|
||||||
|
const now = new Date()
|
||||||
|
const defaultMinDate = new Date(now.getFullYear(), now.getMonth() - 6, now.getDate()).getTime()
|
||||||
|
const defaultMaxDate = new Date(now.getFullYear(), now.getMonth() + 6, now.getDate(), 23, 59, 59).getTime()
|
||||||
|
|
||||||
export type CalendarType = 'date' | 'dates' | 'datetime' | 'week' | 'month' | 'daterange' | 'datetimerange' | 'weekrange' | 'monthrange'
|
export type CalendarType = 'date' | 'dates' | 'datetime' | 'week' | 'month' | 'daterange' | 'datetimerange' | 'weekrange' | 'monthrange'
|
||||||
|
|
||||||
export const calendarViewProps = {
|
export const calendarViewProps = {
|
||||||
@ -16,11 +20,11 @@ export const calendarViewProps = {
|
|||||||
/**
|
/**
|
||||||
* 最小日期,为 13 位时间戳
|
* 最小日期,为 13 位时间戳
|
||||||
*/
|
*/
|
||||||
minDate: makeNumberProp(new Date(new Date().getFullYear(), new Date().getMonth() - 6, new Date().getDate()).getTime()),
|
minDate: makeNumberProp(defaultMinDate),
|
||||||
/**
|
/**
|
||||||
* 最大日期,为 13 位时间戳
|
* 最大日期,为 13 位时间戳
|
||||||
*/
|
*/
|
||||||
maxDate: makeNumberProp(new Date(new Date().getFullYear(), new Date().getMonth() + 6, new Date().getDate(), 23, 59, 59).getTime()),
|
maxDate: makeNumberProp(defaultMaxDate),
|
||||||
/**
|
/**
|
||||||
* 周起始天
|
* 周起始天
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -12,6 +12,10 @@ import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeRequired
|
|||||||
import type { CalendarFormatter, CalendarTimeFilter, CalendarType } from '../wd-calendar-view/types'
|
import type { CalendarFormatter, CalendarTimeFilter, CalendarType } from '../wd-calendar-view/types'
|
||||||
import type { FormItemRule } from '../wd-form/types'
|
import type { FormItemRule } from '../wd-form/types'
|
||||||
|
|
||||||
|
const now = new Date()
|
||||||
|
const defaultMinDate = new Date(now.getFullYear(), now.getMonth() - 6, now.getDate()).getTime()
|
||||||
|
const defaultMaxDate = new Date(now.getFullYear(), now.getMonth() + 6, now.getDate(), 23, 59, 59).getTime()
|
||||||
|
|
||||||
export const calendarProps = {
|
export const calendarProps = {
|
||||||
...baseProps,
|
...baseProps,
|
||||||
/**
|
/**
|
||||||
@ -25,11 +29,11 @@ export const calendarProps = {
|
|||||||
/**
|
/**
|
||||||
* 最小日期,为 13 位时间戳
|
* 最小日期,为 13 位时间戳
|
||||||
*/
|
*/
|
||||||
minDate: makeNumberProp(new Date(new Date().getFullYear(), new Date().getMonth() - 6, new Date().getDate()).getTime()),
|
minDate: makeNumberProp(defaultMinDate),
|
||||||
/**
|
/**
|
||||||
* 最大日期,为 13 位时间戳
|
* 最大日期,为 13 位时间戳
|
||||||
*/
|
*/
|
||||||
maxDate: makeNumberProp(new Date(new Date().getFullYear(), new Date().getMonth() + 6, new Date().getDate(), 23, 59, 59).getTime()),
|
maxDate: makeNumberProp(defaultMaxDate),
|
||||||
/**
|
/**
|
||||||
* 周起始天
|
* 周起始天
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -3,6 +3,10 @@ import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeRequired
|
|||||||
import type { DateTimeType, DatetimePickerViewFilter, DatetimePickerViewFormatter } from '../wd-datetime-picker-view/types'
|
import type { DateTimeType, DatetimePickerViewFilter, DatetimePickerViewFormatter } from '../wd-datetime-picker-view/types'
|
||||||
import type { FormItemRule } from '../wd-form/types'
|
import type { FormItemRule } from '../wd-form/types'
|
||||||
|
|
||||||
|
const now = new Date()
|
||||||
|
const defaultMinDate = new Date(now.getFullYear() - 10, 0, 1).getTime()
|
||||||
|
const defaultMaxDate = new Date(now.getFullYear() + 10, 11, 31, 23, 59, 59).getTime()
|
||||||
|
|
||||||
export const datetimePickerProps = {
|
export const datetimePickerProps = {
|
||||||
...baseProps,
|
...baseProps,
|
||||||
/**
|
/**
|
||||||
@ -96,11 +100,11 @@ export const datetimePickerProps = {
|
|||||||
/**
|
/**
|
||||||
* 最小日期
|
* 最小日期
|
||||||
*/
|
*/
|
||||||
minDate: makeNumberProp(new Date(new Date().getFullYear() - 10, 0, 1).getTime()),
|
minDate: makeNumberProp(defaultMinDate),
|
||||||
/**
|
/**
|
||||||
* 最大日期
|
* 最大日期
|
||||||
*/
|
*/
|
||||||
maxDate: makeNumberProp(new Date(new Date().getFullYear() + 10, 11, 31, 23, 59, 59).getTime()),
|
maxDate: makeNumberProp(defaultMaxDate),
|
||||||
/**
|
/**
|
||||||
* 最小小时,time类型时生效
|
* 最小小时,time类型时生效
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user