vue.js 프로젝트 시 검색조건에서 기간을 설정하는 부분에 el-date-picker로 볼 수도 있다.
el-date-picker를 처음 보는 사람은 많이 당황스러울 것이다.
el-date-picker에 대해 몇가지 옵션들을 살펴보도록 하자.
이것만 알면 el-date-picker 옵션에 대해 편하게 설정할 수 있을 것이다.
아래 el-date-picker 속성값을 하나씩 살펴보겠다.
1
2 3 4 5 6 7 8 |
<el-date-picker
v-model="startDate" type="date" placeholder="시작일" value-format="yyyyMMdd" @change="changeDate('start')" :picker-options="startDateOptions" ></el-date-picker> |
cs |
el-date-picker태그에 type 속성을 보게 되면 대표적으로 4가지를 들 수 있다.
type="date" |
type="week" |
type="month" |
type="year" |
value-format 속성으로 해당 value값을 원하는 형식으로 설정할 수 있다.
value-format="yyyyMMdd" 해당 값을 찍어보면 "20210813"과 같이 찍힐 것이다.
:picker-option을 통해 지정한 범위밖의 날짜를 선택할 수 없도록 날짜 범위를 설정할 수 있다.
picker-option을 설정할 경우 달력에서 선택된 날짜가 지정된 기간범위를 벗어나는 날짜부터 선택할 수 없도록 사진과 같이 disabled처리 해준다.
아래 로직은 현재날짜의 1년전 날짜부터 오늘까지 선택이 가능하고 시작일과 종료일 기간이 최대 한달로 설정되도록 짠 로직이다.
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
<template>
<div> <div> <el-date-picker v-model="startDate" type="date" placeholder="시작일" value-format="yyyyMMdd" @change="changeDate('start')" :picker-options="startDateOptions" ></el-date-picker> </div> <div> <el-date-picker v-model="endDate" type="date" placeholder="종료일" value-format="yyyyMMdd" @change="changeDate('end')" :picker-options="endDateOptions" ></el-date-picker> </div> </div> </template> <script> import moment from 'moment' export default { name: 'DateCheck', data() { return { startDate: '', endDate: '', startDateOptions: { disabledDate: this.disabledStDate }, endDateOptions: { disabledDate: this.disabledEdDate }, } }, created() { this.startDate = moment().format('YYYYMMDD') this.endDate = moment().add(-1, 'months').format('YYYYMMDD') }, methods: { disabledStDate(date) { date = moment(String(date)).format('YYYYMMDD') return date > moment().format('YYYYMMDD') || date < moment().add(-1, 'years').format('YYYYMMDD') }, disabledEdDate(date) { date = moment(String(date)).format('YYYYMMDD') return date > moment().format('YYYYMMDD') || date < this.searchData.startDate }, changeDate(type) { if (type === 'start') { if (this.endDate === null || this.startDate > this.endDate) { this.endDate = this.startDate } if (moment(this.startDate).isBefore(moment(this.endDate).subtract(1, 'months').format('YYYYMMDD'))) { alert('검색 기간은 최대 1개월까지 선택 가능 합니다.') this.startDate = moment(this.endDate).subtract(1, 'months').format('YYYYMMDD') } } else if (type === 'end') { if (this.startDate === null) { this.startDate = this.endDate } if (moment(this.endDate).isAfter(moment(this.startDate).add(1, 'months').format('YYYYMMDD'))) { alert('검색 기간은 최대 1개월까지 선택 가능 합니다.') this.endDate = moment(this.startDate).add(1, 'months').format('YYYYMMDD') } } } } } </script> <style> </style> |
cs |
'SPA > Vue.js' 카테고리의 다른 글
[Vue.js] moment.js 날짜계산 (0) | 2021.09.13 |
---|---|
[Vue.js] 엑셀 다운로드(Excel Download) (1) | 2021.08.11 |
[Vue.js] 뷰 스크립트 라이프사이클 구조 정리(Life Cycle) (0) | 2021.07.29 |