t20-common-lib 0.10.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<el-date-picker
|
|
3
|
+
ref="date-picker"
|
|
4
|
+
v-model="valueC"
|
|
5
|
+
class="n20-date-editor"
|
|
6
|
+
:class="{
|
|
7
|
+
'has-value': clearable && valueC,
|
|
8
|
+
[this.$attrs && this.$attrs['rule-form']]: !valueC
|
|
9
|
+
}"
|
|
10
|
+
:popper-class="
|
|
11
|
+
!clearable && type === 'datetimerange'
|
|
12
|
+
? 'clearable-datetimerange' + ' ' + $attrs['popper-class']
|
|
13
|
+
: $attrs['popper-class']
|
|
14
|
+
"
|
|
15
|
+
:type="type"
|
|
16
|
+
:value-format="valueFormat"
|
|
17
|
+
:placeholder="$l('选择日期')"
|
|
18
|
+
:start-placeholder="$l('开始日期')"
|
|
19
|
+
:end-placeholder="$l('结束日期')"
|
|
20
|
+
:picker-options="pickerOptionsAs"
|
|
21
|
+
:clearable="clearable"
|
|
22
|
+
v-bind="$attrs"
|
|
23
|
+
v-on="listeners"
|
|
24
|
+
/>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script>
|
|
28
|
+
import dayjs from 'dayjs'
|
|
29
|
+
|
|
30
|
+
const getShortcutDefinitions = () => ({
|
|
31
|
+
'today': {
|
|
32
|
+
text: this.$l('今天'),
|
|
33
|
+
onClick(picker) {
|
|
34
|
+
const start = new Date()
|
|
35
|
+
const end = new Date()
|
|
36
|
+
picker.$emit('pick', [start, end])
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
'recent-week': {
|
|
40
|
+
text: this.$l('最近一周'),
|
|
41
|
+
onClick(picker) {
|
|
42
|
+
const end = new Date()
|
|
43
|
+
const start = new Date()
|
|
44
|
+
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
|
|
45
|
+
picker.$emit('pick', [start, end])
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
'recent-month': {
|
|
49
|
+
text: this.$l('最近一月'),
|
|
50
|
+
onClick(picker) {
|
|
51
|
+
const start = new Date()
|
|
52
|
+
const end = new Date()
|
|
53
|
+
start.setMonth(start.getMonth() - 1)
|
|
54
|
+
start.setHours(0, 0, 0)
|
|
55
|
+
end.setHours(23, 59, 59)
|
|
56
|
+
picker.$emit('pick', [start, end])
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
'recent-3-months': {
|
|
60
|
+
text: this.$l('最近三月'),
|
|
61
|
+
onClick(picker) {
|
|
62
|
+
const start = new Date()
|
|
63
|
+
const end = new Date()
|
|
64
|
+
start.setMonth(start.getMonth() - 3)
|
|
65
|
+
start.setHours(0, 0, 0)
|
|
66
|
+
end.setHours(23, 59, 59)
|
|
67
|
+
picker.$emit('pick', [start, end])
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
'recent-6-months': {
|
|
71
|
+
text: this.$l('最近六月'),
|
|
72
|
+
onClick(picker) {
|
|
73
|
+
const start = new Date()
|
|
74
|
+
const end = new Date()
|
|
75
|
+
start.setMonth(start.getMonth() - 6)
|
|
76
|
+
start.setHours(0, 0, 0)
|
|
77
|
+
end.setHours(23, 59, 59)
|
|
78
|
+
picker.$emit('pick', [start, end])
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
'recent-year': {
|
|
82
|
+
text: this.$l('最近一年'),
|
|
83
|
+
onClick(picker) {
|
|
84
|
+
const start = new Date()
|
|
85
|
+
const end = new Date()
|
|
86
|
+
start.setFullYear(start.getFullYear() - 1)
|
|
87
|
+
start.setHours(0, 0, 0)
|
|
88
|
+
end.setHours(23, 59, 59)
|
|
89
|
+
picker.$emit('pick', [start, end])
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
'recent-3-years': {
|
|
93
|
+
text: this.$l('最近三年'),
|
|
94
|
+
onClick(picker) {
|
|
95
|
+
const start = new Date()
|
|
96
|
+
const end = new Date()
|
|
97
|
+
start.setFullYear(start.getFullYear() - 3)
|
|
98
|
+
start.setHours(0, 0, 0)
|
|
99
|
+
end.setHours(23, 59, 59)
|
|
100
|
+
picker.$emit('pick', [start, end])
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
'start-from-today': {
|
|
104
|
+
text: this.$l('今天开始'),
|
|
105
|
+
onClick(picker) {
|
|
106
|
+
const start = dayjs().format('YYYY-MM-DD')
|
|
107
|
+
const end = dayjs().add(99, 'year').format('YYYY-MM-DD')
|
|
108
|
+
picker.$emit('pick', [start, end])
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
'end-today': {
|
|
112
|
+
text: this.$l('今天截止'),
|
|
113
|
+
onClick(picker) {
|
|
114
|
+
const end = dayjs().format('YYYY-MM-DD')
|
|
115
|
+
const start = dayjs().subtract(100, 'year').format('YYYY-MM-DD')
|
|
116
|
+
picker.$emit('pick', [start, end])
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
'current-month': {
|
|
120
|
+
text: this.$l('当月'),
|
|
121
|
+
onClick(picker) {
|
|
122
|
+
const start = dayjs().startOf('month').toDate()
|
|
123
|
+
const end = dayjs().endOf('month').toDate()
|
|
124
|
+
picker.$emit('pick', [start, end])
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
'current-year': {
|
|
128
|
+
text: this.$l('当年'),
|
|
129
|
+
onClick(picker) {
|
|
130
|
+
const start = dayjs().startOf('year').toDate()
|
|
131
|
+
const end = dayjs().endOf('year').toDate()
|
|
132
|
+
picker.$emit('pick', [start, end])
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
const defaultShortcuts1Keys = [
|
|
138
|
+
'today',
|
|
139
|
+
'recent-week',
|
|
140
|
+
'recent-month',
|
|
141
|
+
'recent-3-months',
|
|
142
|
+
'recent-6-months',
|
|
143
|
+
'recent-year',
|
|
144
|
+
'recent-3-years'
|
|
145
|
+
]
|
|
146
|
+
|
|
147
|
+
const defaultShortcuts2Keys = [
|
|
148
|
+
'recent-month',
|
|
149
|
+
'recent-3-months',
|
|
150
|
+
'recent-6-months',
|
|
151
|
+
'recent-year',
|
|
152
|
+
'recent-3-years'
|
|
153
|
+
]
|
|
154
|
+
|
|
155
|
+
let disabledDate_1 = (t) => {
|
|
156
|
+
let now = new Date()
|
|
157
|
+
now.setHours(0, 0, -1)
|
|
158
|
+
return t < now
|
|
159
|
+
}
|
|
160
|
+
let disabledDate_2 = (t) => {
|
|
161
|
+
let now = new Date()
|
|
162
|
+
now.setHours(23, 59, 59)
|
|
163
|
+
return t > now
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export default {
|
|
167
|
+
name: 'DatePickerPor',
|
|
168
|
+
props: {
|
|
169
|
+
type: {
|
|
170
|
+
type: String,
|
|
171
|
+
default: 'daterange'
|
|
172
|
+
},
|
|
173
|
+
value: {
|
|
174
|
+
type: [String, Number, Date],
|
|
175
|
+
default: undefined
|
|
176
|
+
},
|
|
177
|
+
startDate: {
|
|
178
|
+
type: [String, Number, Date],
|
|
179
|
+
default: null
|
|
180
|
+
},
|
|
181
|
+
endDate: {
|
|
182
|
+
type: [String, Number, Date],
|
|
183
|
+
default: null
|
|
184
|
+
},
|
|
185
|
+
valueFormat: {
|
|
186
|
+
type: String,
|
|
187
|
+
default: 'yyyy-MM-dd'
|
|
188
|
+
},
|
|
189
|
+
minNow: {
|
|
190
|
+
type: Boolean,
|
|
191
|
+
default: false
|
|
192
|
+
},
|
|
193
|
+
maxNow: {
|
|
194
|
+
type: Boolean,
|
|
195
|
+
default: false
|
|
196
|
+
},
|
|
197
|
+
shortcuts: {
|
|
198
|
+
type: Boolean,
|
|
199
|
+
default: true
|
|
200
|
+
},
|
|
201
|
+
startStop: {
|
|
202
|
+
type: Boolean,
|
|
203
|
+
default: false
|
|
204
|
+
},
|
|
205
|
+
clearable: {
|
|
206
|
+
type: Boolean,
|
|
207
|
+
default: true
|
|
208
|
+
},
|
|
209
|
+
pickerOptions: {
|
|
210
|
+
type: Object,
|
|
211
|
+
default: () => ({})
|
|
212
|
+
},
|
|
213
|
+
shortcutConfig: {
|
|
214
|
+
type: Array,
|
|
215
|
+
default: null
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
data() {
|
|
219
|
+
let shortcuts = undefined
|
|
220
|
+
const allShortcuts = getShortcutDefinitions()
|
|
221
|
+
|
|
222
|
+
let config = this.shortcutConfig
|
|
223
|
+
if (!config) {
|
|
224
|
+
if (this.shortcuts && ['daterange', 'datetimerange'].includes(this.type)) {
|
|
225
|
+
config = this.startStop ? defaultShortcuts2Keys : defaultShortcuts1Keys
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if (config) {
|
|
230
|
+
shortcuts = config.map(item => {
|
|
231
|
+
if (typeof item === 'string') {
|
|
232
|
+
return allShortcuts[item]
|
|
233
|
+
}
|
|
234
|
+
return item
|
|
235
|
+
}).filter(Boolean)
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
this.pickerOptionsAs = Object.assign(
|
|
239
|
+
{
|
|
240
|
+
disabledDate: this.minNow ? disabledDate_1 : this.maxNow ? disabledDate_2 : undefined,
|
|
241
|
+
shortcuts
|
|
242
|
+
},
|
|
243
|
+
this.pickerOptions
|
|
244
|
+
)
|
|
245
|
+
|
|
246
|
+
this.listeners = Object.assign({}, this.$listeners, {
|
|
247
|
+
input: () => {},
|
|
248
|
+
change: () => {}
|
|
249
|
+
})
|
|
250
|
+
return {}
|
|
251
|
+
},
|
|
252
|
+
computed: {
|
|
253
|
+
valueC: {
|
|
254
|
+
get() {
|
|
255
|
+
if (['daterange', 'monthrange', 'datetimerange'].includes(this.type)) {
|
|
256
|
+
if (this.startDate && this.endDate) {
|
|
257
|
+
return [this.startDate, this.endDate]
|
|
258
|
+
} else {
|
|
259
|
+
return null
|
|
260
|
+
}
|
|
261
|
+
} else {
|
|
262
|
+
return this.value
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
set(val) {
|
|
266
|
+
if (['daterange', 'monthrange', 'datetimerange'].includes(this.type)) {
|
|
267
|
+
if (val && val[0]) {
|
|
268
|
+
if (this.type === 'monthrange' && ['yyyy-MM-dd', 'yyyy-MM-dd HH:mm:ss'].includes(this.valueFormat)) {
|
|
269
|
+
let end = new Date(val[1])
|
|
270
|
+
end.setMonth(end.getMonth() + 1)
|
|
271
|
+
end.setDate(0)
|
|
272
|
+
let Y = end.getFullYear()
|
|
273
|
+
let M = end.getMonth() + 1
|
|
274
|
+
let D = end.getDate()
|
|
275
|
+
let str = `${Y}-${M > 9 ? M : '0' + M}-${D > 9 ? D : '0' + D}`
|
|
276
|
+
if (this.valueFormat === 'yyyy-MM-dd HH:mm:ss') str = str + ' 23:59:59'
|
|
277
|
+
this.$emit('update:start-date', val[0])
|
|
278
|
+
this.$emit('update:end-date', str)
|
|
279
|
+
this.$emit('start', val[0])
|
|
280
|
+
this.$emit('end', str)
|
|
281
|
+
this.$emit('change', [val[0], str])
|
|
282
|
+
} else {
|
|
283
|
+
this.$emit('update:start-date', val[0])
|
|
284
|
+
this.$emit('update:end-date', val[1])
|
|
285
|
+
this.$emit('start', val[0])
|
|
286
|
+
this.$emit('end', val[1])
|
|
287
|
+
this.$emit('change', val)
|
|
288
|
+
}
|
|
289
|
+
} else {
|
|
290
|
+
this.$emit('update:start-date', null)
|
|
291
|
+
this.$emit('update:end-date', null)
|
|
292
|
+
this.$emit('start', null)
|
|
293
|
+
this.$emit('end', null)
|
|
294
|
+
this.$emit('change', val)
|
|
295
|
+
}
|
|
296
|
+
} else {
|
|
297
|
+
this.$emit('input', val)
|
|
298
|
+
this.$emit('change', val)
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
methods: {
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
</script>
|
package/src/index.js
CHANGED
|
@@ -15,6 +15,7 @@ import MultiCurrencyStatistics from '../packages/multi-currency-statistics/index
|
|
|
15
15
|
import BranchBankSelect from '../packages/branch-bank-select/index.js'
|
|
16
16
|
import TabPage from '../packages/tab-page/index.js'
|
|
17
17
|
import InputNumber from '../packages/input-number/index.js'
|
|
18
|
+
import DatePickerPor from '../packages/date-picker-por/index.js'
|
|
18
19
|
|
|
19
20
|
// 存储组件列表
|
|
20
21
|
const components = [
|
|
@@ -28,7 +29,8 @@ const components = [
|
|
|
28
29
|
MultiCurrencyStatistics,
|
|
29
30
|
BranchBankSelect,
|
|
30
31
|
TabPage,
|
|
31
|
-
InputNumber
|
|
32
|
+
InputNumber,
|
|
33
|
+
DatePickerPor
|
|
32
34
|
]
|
|
33
35
|
|
|
34
36
|
// 定义 install 方法,接收 Vue 作为参数
|
|
@@ -68,6 +70,7 @@ export {
|
|
|
68
70
|
MultiCurrencyStatistics,
|
|
69
71
|
BranchBankSelect,
|
|
70
72
|
InputNumber,
|
|
73
|
+
DatePickerPor,
|
|
71
74
|
// 工具方法
|
|
72
75
|
repairEl,
|
|
73
76
|
getColumnWidth,
|