Skip to content

Commit f420945

Browse files
committed
!309 feat(datePicker): 新增default-time属性
* feat(datePicker): 新增default-time属性 #I9HA34
1 parent bb5ccee commit f420945

File tree

7 files changed

+60
-11
lines changed

7 files changed

+60
-11
lines changed

docs/document-component/src/document/zh-CN/components/datePicker.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,10 @@ export default {
234234
<lay-date-picker v-model="rangeTime2" range type="datetime" :placeholder="['开始日期','结束日期']"></lay-date-picker>
235235
modelValue:{{rangeTime2}}
236236
</lay-space>
237+
<lay-space>
238+
<lay-date-picker v-model="rangeTime5" range :default-time="defaultTime1" type="datetime" :placeholder="['开始日期','结束日期']"></lay-date-picker>
239+
default-time: 12:30:00
240+
</lay-space>
237241
<lay-space>
238242
<lay-date-picker v-model="rangeTime3" range type="yearmonth" :placeholder="['开始日期','结束日期']"></lay-date-picker>
239243
modelValue:{{rangeTime3}}
@@ -251,6 +255,9 @@ const rangeTime1 = ref([]);
251255
const rangeTime2 = ref(['2001-01-01 01:01:00','2001-02-1 01:01:00']);
252256
const rangeTime3 = ref(['2022-01-01','2023-02-1']);
253257
const rangeTime4 = ref(['01:01:00', '03:03:03']);
258+
const rangeTime5 = ref([]);
259+
260+
const defaultTime1 = '12:30:00'
254261
</script>
255262

256263
:::
@@ -391,6 +398,7 @@ export default {
391398
| suffix-icon | 后置图标 | `string` | -- | 内置图标集 | `1.4.0` |
392399
| timestamp | 时间戳模式(13 位),仅对 date 和 datetime 有效 | `boolean` | `false` | `true` `false` | `1.6.5` |
393400
| format | 输出格式化 | `string` | -- | 例如`YYYY-MM-DD` | - |
401+
| default-time | 范围日期 `type=datetime` 时分秒默认时间 | `string` `Array<string>` | -- | 例如`12:30:00` | `2.17.2` |
394402
| contentStyle | 内容自定义样式 | `StyleValue` | -- | -- | -- |
395403
| contentClass | 内容自定义 Class | `string` `Array<string \| object>` `object` | -- | -- | -- |
396404

packages/component/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
"@vueuse/core": "8.7.3",
5858
"async-validator": "^4.1.1",
5959
"cropperjs": "^1.5.12",
60-
"dayjs": "^1.11.7",
60+
"dayjs": "^1.11.10",
6161
"evtd": "^0.2.3",
6262
"jsbarcode": "3.11.5",
6363
"qrcode": "1.5.0",

packages/component/src/component/datePicker/components/DateRange.vue

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@
185185
</template>
186186

187187
<script lang="ts" setup>
188+
import type { Dayjs } from "dayjs";
188189
import { computed, inject, reactive, ref, watch } from "vue";
189190
import { provideType } from "../interface";
190191
import { setDateList } from "../day";
@@ -196,6 +197,8 @@ import MonthPanel from "./MonthPanel.vue";
196197
import LayDropdown from "../../dropdown/index.vue";
197198
import dayjs from "dayjs";
198199
import { useI18n } from "../../../language";
200+
import { isString } from "../../../utils";
201+
199202
export interface DateRangeProps {
200203
startTime: string;
201204
endTime: string;
@@ -231,26 +234,57 @@ const MONTH_NAME = computed(() => [
231234
t("datePicker.december"),
232235
]);
233236
237+
const formatDayHMS = (v: string) => dayjs(`2020-01-01 ${v}`);
238+
239+
const setDefaultTime = (before = true): Dayjs | undefined => {
240+
if (!datePicker.defaultTime) return;
241+
242+
if (Array.isArray(datePicker.defaultTime)) {
243+
if (isString(datePicker.defaultTime[0]) && before) {
244+
return formatDayHMS(datePicker.defaultTime[0]);
245+
}
246+
if (isString(datePicker.defaultTime[1]) && !before) {
247+
return formatDayHMS(datePicker.defaultTime[1]);
248+
}
249+
}
250+
251+
if (isString(datePicker.defaultTime)) {
252+
return formatDayHMS(datePicker.defaultTime);
253+
}
254+
};
255+
234256
const prevDateList = ref<any>([]);
235257
const nextDateList = ref<any>([]);
236258
const startTime = reactive({
237259
year: props.startTime ? dayjs(props.startTime).year() : dayjs().year(),
238260
month: props.startTime ? dayjs(props.startTime).month() : dayjs().month(),
239261
day: props.startTime ? dayjs(props.startTime).startOf("day").valueOf() : -1,
240262
hms: {
241-
hh: props.startTime ? dayjs(props.startTime).hour() : 0,
242-
mm: props.startTime ? dayjs(props.startTime).minute() : 0,
243-
ss: props.startTime ? dayjs(props.startTime).second() : 0,
263+
hh: props.startTime
264+
? dayjs(props.startTime).hour()
265+
: setDefaultTime()?.hour() || 0,
266+
mm: props.startTime
267+
? dayjs(props.startTime).minute()
268+
: setDefaultTime()?.minute() || 0,
269+
ss: props.startTime
270+
? dayjs(props.startTime).second()
271+
: setDefaultTime()?.second() || 0,
244272
},
245273
});
246274
const endTime = reactive({
247275
year: props.endTime ? dayjs(props.endTime).year() : dayjs().year(),
248276
month: props.endTime ? dayjs(props.endTime).month() : dayjs().month(),
249277
day: props.endTime ? dayjs(props.endTime).startOf("day").valueOf() : -1,
250278
hms: {
251-
hh: props.endTime ? dayjs(props.endTime).hour() : 0,
252-
mm: props.endTime ? dayjs(props.endTime).minute() : 0,
253-
ss: props.endTime ? dayjs(props.endTime).second() : 0,
279+
hh: props.endTime
280+
? dayjs(props.endTime).hour()
281+
: setDefaultTime(false)?.hour() || 0,
282+
mm: props.endTime
283+
? dayjs(props.endTime).minute()
284+
: setDefaultTime(false)?.minute() || 0,
285+
ss: props.endTime
286+
? dayjs(props.endTime).second()
287+
: setDefaultTime(false)?.second() || 0,
254288
},
255289
});
256290
const hoverDate = ref(-1);

packages/component/src/component/datePicker/index.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ export interface DatePickerProps {
150150
contentClass?: string | Array<string | object> | object;
151151
contentStyle?: StyleValue;
152152
format?: string;
153+
defaultTime: string | string[];
153154
}
154155
155156
defineOptions({
@@ -450,5 +451,6 @@ provide("datePicker", {
450451
timestamp: props.timestamp,
451452
min: props.min,
452453
max: props.max,
454+
defaultTime: props.defaultTime,
453455
});
454456
</script>

packages/component/src/component/datePicker/interface.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,5 @@ export type provideType = {
2626
timestamp: boolean;
2727
max: string;
2828
min: string;
29+
defaultTime: string | string[];
2930
};

packages/component/src/utils/vueUtil.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,7 @@ export const isFunction = (val: unknown): val is Function =>
6262
export const isUndefined = (val: any): val is undefined => val === undefined;
6363

6464
export const isNumber = (val: any): val is number => typeof val === "number";
65+
66+
export const isString = (val: any): val is string => typeof val === "string";
67+
export const isDate = (val: Date): boolean =>
68+
val instanceof Date && !isNaN(val.valueOf());

pnpm-lock.yaml

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy