17e1fcf1
梁灏
init DatePicker
|
1
|
<template>
|
2533a192
梁灏
update DatePicker
|
2
|
<div :class="classes">
|
3cf7cfd1
梁灏
update DatePicker
|
3
|
<div :class="[prefixCls + '-sidebar']" v-if="shortcuts.length">
|
0f677893
梁灏
update DatePicker
|
4
5
6
7
8
9
10
11
12
|
<div
:class="[prefixCls + '-shortcut']"
v-for="shortcut in shortcuts"
@click="handleShortcutClick(shortcut)">{{ shortcut.text }}</div>
</div>
<div :class="[prefixCls + '-body']">
<div :class="[datePrefixCls + '-header']" v-show="currentView !== 'time'">
<span
:class="iconBtnCls('prev', '-double')"
|
c46f385a
梁灏
update DatePicker
|
13
|
@click="prevYear"><Icon type="ios-arrow-left"></Icon></span>
|
0f677893
梁灏
update DatePicker
|
14
15
16
|
<span
:class="iconBtnCls('prev')"
@click="prevMonth"
|
c46f385a
梁灏
update DatePicker
|
17
|
v-show="currentView === 'date'"><Icon type="ios-arrow-left"></Icon></span>
|
0f677893
梁灏
update DatePicker
|
18
19
|
<span
:class="[datePrefixCls + '-header-label']"
|
c46f385a
梁灏
update DatePicker
|
20
|
@click="showYearPicker">{{ yearLabel }}</span>
|
0f677893
梁灏
update DatePicker
|
21
22
23
|
<span
:class="[datePrefixCls + '-header-label']"
@click="showMonthPicker"
|
c46f385a
梁灏
update DatePicker
|
24
25
26
27
|
v-show="currentView === 'date'">{{ month + 1 + '月' }}</span>
<span
:class="iconBtnCls('next', '-double')"
@click="nextYear"><Icon type="ios-arrow-right"></Icon></span>
|
0f677893
梁灏
update DatePicker
|
28
29
30
|
<span
:class="iconBtnCls('next')"
@click="nextMonth"
|
c46f385a
梁灏
update DatePicker
|
31
|
v-show="currentView === 'date'"><Icon type="ios-arrow-right"></Icon></span>
|
0f677893
梁灏
update DatePicker
|
32
33
34
|
</div>
<div :class="[prefixCls + '-content']">
<date-table
|
50637863
梁灏
update DatePicker
|
35
36
37
38
39
|
v-show="currentView === 'date'"
:year="year"
:month="month"
:date="date"
:value="value"
|
50637863
梁灏
update DatePicker
|
40
|
:selection-mode="selectionMode"
|
c46f385a
梁灏
update DatePicker
|
41
|
:disabled-date="disabledDate"
|
68e9b100
梁灏
update DatePicker
|
42
43
|
@on-pick="handleDatePick"
@on-pick-click="handlePickClick"></date-table>
|
0f677893
梁灏
update DatePicker
|
44
|
<year-table
|
c46f385a
梁灏
update DatePicker
|
45
46
47
48
|
v-ref:year-table
v-show="currentView === 'year'"
:year="year"
:date="date"
|
13be4434
梁灏
update DatePicker
|
49
|
:selection-mode="selectionMode"
|
c46f385a
梁灏
update DatePicker
|
50
|
:disabled-date="disabledDate"
|
68e9b100
梁灏
update DatePicker
|
51
52
|
@on-pick="handleYearPick"
@on-pick-click="handlePickClick"></year-table>
|
0f677893
梁灏
update DatePicker
|
53
|
<month-table
|
c46f385a
梁灏
update DatePicker
|
54
55
56
57
|
v-ref:month-table
v-show="currentView === 'month'"
:month="month"
:date="date"
|
13be4434
梁灏
update DatePicker
|
58
|
:selection-mode="selectionMode"
|
c46f385a
梁灏
update DatePicker
|
59
|
:disabled-date="disabledDate"
|
68e9b100
梁灏
update DatePicker
|
60
61
|
@on-pick="handleMonthPick"
@on-pick-click="handlePickClick"></month-table>
|
0f677893
梁灏
update DatePicker
|
62
|
</div>
|
b9041a0d
梁灏
DatePicker add co...
|
63
64
65
66
|
<Confirm
v-if="confirm"
@on-pick-clear="handlePickClear"
@on-pick-success="handlePickSuccess"></Confirm>
|
0f677893
梁灏
update DatePicker
|
67
68
|
</div>
</div>
|
17e1fcf1
梁灏
init DatePicker
|
69
70
|
</template>
<script>
|
c46f385a
梁灏
update DatePicker
|
71
|
import Icon from '../../icon/icon.vue';
|
0f677893
梁灏
update DatePicker
|
72
73
74
|
import DateTable from '../base/date-table.vue';
import YearTable from '../base/year-table.vue';
import MonthTable from '../base/month-table.vue';
|
b9041a0d
梁灏
DatePicker add co...
|
75
|
import Confirm from '../base/confirm.vue';
|
0f677893
梁灏
update DatePicker
|
76
|
|
3cf7cfd1
梁灏
update DatePicker
|
77
78
|
import Mixin from './mixin';
|
0f677893
梁灏
update DatePicker
|
79
80
81
|
const prefixCls = 'ivu-picker-panel';
const datePrefixCls = 'ivu-date-picker';
|
17e1fcf1
梁灏
init DatePicker
|
82
|
export default {
|
3cf7cfd1
梁灏
update DatePicker
|
83
|
mixins: [Mixin],
|
b9041a0d
梁灏
DatePicker add co...
|
84
|
components: { Icon, DateTable, YearTable, MonthTable, Confirm },
|
17e1fcf1
梁灏
init DatePicker
|
85
|
data () {
|
0f677893
梁灏
update DatePicker
|
86
87
88
89
|
return {
prefixCls: prefixCls,
datePrefixCls: datePrefixCls,
shortcuts: [],
|
50637863
梁灏
update DatePicker
|
90
91
92
93
94
|
currentView: 'date',
date: new Date(),
value: '',
showTime: false,
selectionMode: 'day',
|
50637863
梁灏
update DatePicker
|
95
96
97
|
disabledDate: '',
year: null,
month: null,
|
b9041a0d
梁灏
DatePicker add co...
|
98
|
confirm: false
|
b0893113
jingsam
add eslint
|
99
|
};
|
50637863
梁灏
update DatePicker
|
100
101
|
},
computed: {
|
2533a192
梁灏
update DatePicker
|
102
103
104
105
106
107
|
classes () {
return [
`${prefixCls}-body-wrapper`,
{
[`${prefixCls}-with-sidebar`]: this.shortcuts.length
}
|
b0893113
jingsam
add eslint
|
108
|
];
|
2533a192
梁灏
update DatePicker
|
109
|
},
|
c46f385a
梁灏
update DatePicker
|
110
111
112
113
114
115
116
|
yearLabel () {
const year = this.year;
if (!year) return '';
if (this.currentView === 'year') {
const startYear = Math.floor(year / 10) * 10;
return `${startYear}年 - ${startYear + 9}年`;
}
|
0a5c5f41
梁灏
update DatePicker
|
117
|
return `${year}年`;
|
c46f385a
梁灏
update DatePicker
|
118
|
}
|
50637863
梁灏
update DatePicker
|
119
120
121
|
},
watch: {
value (newVal) {
|
c46f385a
梁灏
update DatePicker
|
122
|
if (!newVal) return;
|
50637863
梁灏
update DatePicker
|
123
124
|
newVal = new Date(newVal);
if (!isNaN(newVal)) {
|
50637863
梁灏
update DatePicker
|
125
126
127
|
this.date = newVal;
this.year = newVal.getFullYear();
this.month = newVal.getMonth();
|
50637863
梁灏
update DatePicker
|
128
|
}
|
0f677893
梁灏
update DatePicker
|
129
|
}
|
17e1fcf1
梁灏
init DatePicker
|
130
|
},
|
0f677893
梁灏
update DatePicker
|
131
|
methods: {
|
f92ef70f
梁灏
update DatePicker
|
132
133
134
|
resetDate () {
this.date = new Date(this.date);
},
|
c46f385a
梁灏
update DatePicker
|
135
136
137
138
|
handleClear() {
this.date = new Date();
this.$emit('on-pick', '');
},
|
0a5c5f41
梁灏
update DatePicker
|
139
140
141
142
143
144
145
146
147
148
149
|
resetView() {
if (this.selectionMode === 'month') {
this.currentView = 'month';
} else if (this.selectionMode === 'year') {
this.currentView = 'year';
} else {
this.currentView = 'date';
}
this.year = this.date.getFullYear();
this.month = this.date.getMonth();
|
c46f385a
梁灏
update DatePicker
|
150
|
},
|
0f677893
梁灏
update DatePicker
|
151
|
prevYear () {
|
c46f385a
梁灏
update DatePicker
|
152
153
154
155
156
157
158
|
if (this.currentView === 'year') {
this.$refs.yearTable.prevTenYear();
} else {
this.year--;
this.date.setFullYear(this.year);
this.resetDate();
}
|
0f677893
梁灏
update DatePicker
|
159
160
|
},
nextYear () {
|
c46f385a
梁灏
update DatePicker
|
161
162
163
164
165
166
167
|
if (this.currentView === 'year') {
this.$refs.yearTable.nextTenYear();
} else {
this.year++;
this.date.setFullYear(this.year);
this.resetDate();
}
|
0f677893
梁灏
update DatePicker
|
168
169
|
},
prevMonth () {
|
c46f385a
梁灏
update DatePicker
|
170
171
172
173
174
|
this.month--;
if (this.month < 0) {
this.month = 11;
this.year--;
}
|
0f677893
梁灏
update DatePicker
|
175
176
|
},
nextMonth () {
|
c46f385a
梁灏
update DatePicker
|
177
178
179
180
181
|
this.month++;
if (this.month > 11) {
this.month = 0;
this.year++;
}
|
0f677893
梁灏
update DatePicker
|
182
183
|
},
showYearPicker () {
|
c46f385a
梁灏
update DatePicker
|
184
|
this.currentView = 'year';
|
0f677893
梁灏
update DatePicker
|
185
186
|
},
showMonthPicker () {
|
c46f385a
梁灏
update DatePicker
|
187
188
189
190
191
|
this.currentView = 'month';
},
handleYearPick(year, close = true) {
this.year = year;
if (!close) return;
|
0f677893
梁灏
update DatePicker
|
192
|
|
c46f385a
梁灏
update DatePicker
|
193
194
|
this.date.setFullYear(year);
if (this.selectionMode === 'year') {
|
344131a7
梁灏
update DatePicker
|
195
|
this.$emit('on-pick', new Date(year, 0, 1));
|
c46f385a
梁灏
update DatePicker
|
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
} else {
this.currentView = 'month';
}
this.resetDate();
},
handleMonthPick (month) {
this.month = month;
const selectionMode = this.selectionMode;
if (selectionMode !== 'month') {
this.date.setMonth(month);
this.currentView = 'date';
this.resetDate();
} else {
this.date.setMonth(month);
this.year && this.date.setFullYear(this.year);
this.resetDate();
const value = new Date(this.date.getFullYear(), month, 1);
this.$emit('on-pick', value);
}
},
handleDatePick (value) {
if (this.selectionMode === 'day') {
if (!this.showTime) {
this.$emit('on-pick', new Date(value.getTime()));
}
this.date.setFullYear(value.getFullYear());
this.date.setMonth(value.getMonth());
this.date.setDate(value.getDate());
}
this.resetDate();
|
0f677893
梁灏
update DatePicker
|
228
229
|
}
},
|
50637863
梁灏
update DatePicker
|
230
231
232
233
234
235
236
237
238
|
compiled () {
if (this.selectionMode === 'month') {
this.currentView = 'month';
}
if (this.date && !this.year) {
this.year = this.date.getFullYear();
this.month = this.date.getMonth();
}
|
0f677893
梁灏
update DatePicker
|
239
|
}
|
b0893113
jingsam
add eslint
|
240
241
|
};
</script>
|