t20-common-lib 0.10.0 → 0.10.2

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "t20-common-lib",
3
- "version": "0.10.0",
3
+ "version": "0.10.2",
4
4
  "description": "T20",
5
5
  "private": false,
6
6
  "main": "dist/index.js",
@@ -61,4 +61,4 @@
61
61
  "last 2 versions",
62
62
  "not dead"
63
63
  ]
64
- }
64
+ }
@@ -0,0 +1,8 @@
1
+ import DatePickerPor from './src/main';
2
+
3
+ /* istanbul ignore next */
4
+ DatePickerPor.install = function(Vue) {
5
+ Vue.component(DatePickerPor.name, DatePickerPor);
6
+ };
7
+
8
+ export default DatePickerPor;
@@ -0,0 +1,310 @@
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="$lc('选择日期')"
18
+ :start-placeholder="$lc('开始日期')"
19
+ :end-placeholder="$lc('结束日期')"
20
+ :picker-options="pickerOptionsAs"
21
+ :clearable="clearable"
22
+ v-bind="$attrs"
23
+ v-on="listeners"
24
+ />
25
+ </template>
26
+
27
+ <script>
28
+ import { $lc } from '../../../src/utils/i18n/index'
29
+ import dayjs from 'dayjs'
30
+
31
+ const getShortcutDefinitions = () => ({
32
+ 'today': {
33
+ text: $lc('今天'),
34
+ onClick(picker) {
35
+ const start = new Date()
36
+ const end = new Date()
37
+ picker.$emit('pick', [start, end])
38
+ }
39
+ },
40
+ 'recent-week': {
41
+ text: $lc('最近一周'),
42
+ onClick(picker) {
43
+ const end = new Date()
44
+ const start = new Date()
45
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
46
+ picker.$emit('pick', [start, end])
47
+ }
48
+ },
49
+ 'recent-month': {
50
+ text: $lc('最近一月'),
51
+ onClick(picker) {
52
+ const start = new Date()
53
+ const end = new Date()
54
+ start.setMonth(start.getMonth() - 1)
55
+ start.setHours(0, 0, 0)
56
+ end.setHours(23, 59, 59)
57
+ picker.$emit('pick', [start, end])
58
+ }
59
+ },
60
+ 'recent-3-months': {
61
+ text: $lc('最近三月'),
62
+ onClick(picker) {
63
+ const start = new Date()
64
+ const end = new Date()
65
+ start.setMonth(start.getMonth() - 3)
66
+ start.setHours(0, 0, 0)
67
+ end.setHours(23, 59, 59)
68
+ picker.$emit('pick', [start, end])
69
+ }
70
+ },
71
+ 'recent-6-months': {
72
+ text: $lc('最近六月'),
73
+ onClick(picker) {
74
+ const start = new Date()
75
+ const end = new Date()
76
+ start.setMonth(start.getMonth() - 6)
77
+ start.setHours(0, 0, 0)
78
+ end.setHours(23, 59, 59)
79
+ picker.$emit('pick', [start, end])
80
+ }
81
+ },
82
+ 'recent-year': {
83
+ text: $lc('最近一年'),
84
+ onClick(picker) {
85
+ const start = new Date()
86
+ const end = new Date()
87
+ start.setFullYear(start.getFullYear() - 1)
88
+ start.setHours(0, 0, 0)
89
+ end.setHours(23, 59, 59)
90
+ picker.$emit('pick', [start, end])
91
+ }
92
+ },
93
+ 'recent-3-years': {
94
+ text: $lc('最近三年'),
95
+ onClick(picker) {
96
+ const start = new Date()
97
+ const end = new Date()
98
+ start.setFullYear(start.getFullYear() - 3)
99
+ start.setHours(0, 0, 0)
100
+ end.setHours(23, 59, 59)
101
+ picker.$emit('pick', [start, end])
102
+ }
103
+ },
104
+ 'start-from-today': {
105
+ text: $lc('今天开始'),
106
+ onClick(picker) {
107
+ const start = dayjs().format('YYYY-MM-DD')
108
+ const end = dayjs().add(99, 'year').format('YYYY-MM-DD')
109
+ picker.$emit('pick', [start, end])
110
+ }
111
+ },
112
+ 'end-today': {
113
+ text: $lc('今天截止'),
114
+ onClick(picker) {
115
+ const end = dayjs().format('YYYY-MM-DD')
116
+ const start = dayjs().subtract(100, 'year').format('YYYY-MM-DD')
117
+ picker.$emit('pick', [start, end])
118
+ }
119
+ },
120
+ 'current-month': {
121
+ text: $lc('当月'),
122
+ onClick(picker) {
123
+ const start = dayjs().startOf('month').toDate()
124
+ const end = dayjs().endOf('month').toDate()
125
+ picker.$emit('pick', [start, end])
126
+ }
127
+ },
128
+ 'current-year': {
129
+ text: $lc('当年'),
130
+ onClick(picker) {
131
+ const start = dayjs().startOf('year').toDate()
132
+ const end = dayjs().endOf('year').toDate()
133
+ picker.$emit('pick', [start, end])
134
+ }
135
+ }
136
+ })
137
+
138
+ const defaultShortcuts1Keys = [
139
+ 'today',
140
+ 'recent-week',
141
+ 'recent-month',
142
+ 'recent-3-months',
143
+ 'recent-6-months',
144
+ 'recent-year',
145
+ 'recent-3-years'
146
+ ]
147
+
148
+ const defaultShortcuts2Keys = [
149
+ 'recent-month',
150
+ 'recent-3-months',
151
+ 'recent-6-months',
152
+ 'recent-year',
153
+ 'recent-3-years'
154
+ ]
155
+
156
+ let disabledDate_1 = (t) => {
157
+ let now = new Date()
158
+ now.setHours(0, 0, -1)
159
+ return t < now
160
+ }
161
+ let disabledDate_2 = (t) => {
162
+ let now = new Date()
163
+ now.setHours(23, 59, 59)
164
+ return t > now
165
+ }
166
+
167
+ export default {
168
+ name: 'DatePickerPor',
169
+ props: {
170
+ type: {
171
+ type: String,
172
+ default: 'daterange'
173
+ },
174
+ value: {
175
+ type: [String, Number, Date],
176
+ default: undefined
177
+ },
178
+ startDate: {
179
+ type: [String, Number, Date],
180
+ default: null
181
+ },
182
+ endDate: {
183
+ type: [String, Number, Date],
184
+ default: null
185
+ },
186
+ valueFormat: {
187
+ type: String,
188
+ default: 'yyyy-MM-dd'
189
+ },
190
+ minNow: {
191
+ type: Boolean,
192
+ default: false
193
+ },
194
+ maxNow: {
195
+ type: Boolean,
196
+ default: false
197
+ },
198
+ shortcuts: {
199
+ type: Boolean,
200
+ default: true
201
+ },
202
+ startStop: {
203
+ type: Boolean,
204
+ default: false
205
+ },
206
+ clearable: {
207
+ type: Boolean,
208
+ default: true
209
+ },
210
+ pickerOptions: {
211
+ type: Object,
212
+ default: () => ({})
213
+ },
214
+ shortcutConfig: {
215
+ type: Array,
216
+ default: null
217
+ }
218
+ },
219
+ data() {
220
+ let shortcuts = undefined
221
+ const allShortcuts = getShortcutDefinitions()
222
+
223
+ let config = this.shortcutConfig
224
+ if (!config) {
225
+ if (this.shortcuts && ['daterange', 'datetimerange'].includes(this.type)) {
226
+ config = this.startStop ? defaultShortcuts2Keys : defaultShortcuts1Keys
227
+ }
228
+ }
229
+
230
+ if (config) {
231
+ shortcuts = config.map(item => {
232
+ if (typeof item === 'string') {
233
+ return allShortcuts[item]
234
+ }
235
+ return item
236
+ }).filter(Boolean)
237
+ }
238
+
239
+ const pickerOptionsAs = Object.assign(
240
+ {
241
+ disabledDate: this.minNow ? disabledDate_1 : this.maxNow ? disabledDate_2 : undefined,
242
+ shortcuts
243
+ },
244
+ this.pickerOptions
245
+ )
246
+
247
+ const listeners = Object.assign({}, this.$listeners, {
248
+ input: () => {},
249
+ change: () => {}
250
+ })
251
+ return {
252
+ pickerOptionsAs,
253
+ listeners
254
+ }
255
+ },
256
+ computed: {
257
+ valueC: {
258
+ get() {
259
+ if (['daterange', 'monthrange', 'datetimerange'].includes(this.type)) {
260
+ if (this.startDate && this.endDate) {
261
+ return [this.startDate, this.endDate]
262
+ } else {
263
+ return null
264
+ }
265
+ } else {
266
+ return this.value
267
+ }
268
+ },
269
+ set(val) {
270
+ if (['daterange', 'monthrange', 'datetimerange'].includes(this.type)) {
271
+ if (val && val[0]) {
272
+ if (this.type === 'monthrange' && ['yyyy-MM-dd', 'yyyy-MM-dd HH:mm:ss'].includes(this.valueFormat)) {
273
+ let end = new Date(val[1])
274
+ end.setMonth(end.getMonth() + 1)
275
+ end.setDate(0)
276
+ let Y = end.getFullYear()
277
+ let M = end.getMonth() + 1
278
+ let D = end.getDate()
279
+ let str = `${Y}-${M > 9 ? M : '0' + M}-${D > 9 ? D : '0' + D}`
280
+ if (this.valueFormat === 'yyyy-MM-dd HH:mm:ss') str = str + ' 23:59:59'
281
+ this.$emit('update:start-date', val[0])
282
+ this.$emit('update:end-date', str)
283
+ this.$emit('start', val[0])
284
+ this.$emit('end', str)
285
+ this.$emit('change', [val[0], str])
286
+ } else {
287
+ this.$emit('update:start-date', val[0])
288
+ this.$emit('update:end-date', val[1])
289
+ this.$emit('start', val[0])
290
+ this.$emit('end', val[1])
291
+ this.$emit('change', val)
292
+ }
293
+ } else {
294
+ this.$emit('update:start-date', null)
295
+ this.$emit('update:end-date', null)
296
+ this.$emit('start', null)
297
+ this.$emit('end', null)
298
+ this.$emit('change', val)
299
+ }
300
+ } else {
301
+ this.$emit('input', val)
302
+ this.$emit('change', val)
303
+ }
304
+ }
305
+ }
306
+ },
307
+ methods: {
308
+ }
309
+ }
310
+ </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,