t20-common-lib 0.9.14 → 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.
Files changed (43) hide show
  1. package/package.json +64 -86
  2. package/packages/branch-bank-select/index.js +8 -8
  3. package/packages/branch-bank-select/src/main.vue +179 -179
  4. package/packages/common-collapse/index.js +8 -8
  5. package/packages/common-collapse/src/main.vue +147 -147
  6. package/packages/date-picker-por/index.js +8 -0
  7. package/packages/date-picker-por/src/main.vue +306 -0
  8. package/packages/form-page/index.js +8 -8
  9. package/packages/form-page/src/main.vue +55 -55
  10. package/packages/input-number/index.js +8 -0
  11. package/packages/input-number/src/main.vue +184 -0
  12. package/packages/main-page/index.js +8 -8
  13. package/packages/main-page/src/main.vue +43 -43
  14. package/packages/multi-currency-statistics/index.js +8 -8
  15. package/packages/multi-currency-statistics/src/main.vue +229 -229
  16. package/packages/page-header/index.js +8 -8
  17. package/packages/page-header/src/main.vue +95 -95
  18. package/packages/statis-card/index.js +8 -8
  19. package/packages/statis-card/src/main.vue +250 -250
  20. package/packages/tab-page/index.js +8 -8
  21. package/packages/tab-page/src/main.vue +101 -101
  22. package/packages/tab-pane/index.js +8 -8
  23. package/packages/tab-pane/src/main.vue +185 -185
  24. package/packages/table-page/index.js +8 -8
  25. package/packages/table-page/src/main.vue +42 -42
  26. package/packages/theme-chalk/src/common/element-variables.scss +1045 -1045
  27. package/packages/theme-chalk/src/common/normalize.scss +869 -869
  28. package/packages/theme-chalk/src/index.scss +8 -8
  29. package/src/api/common.js +20 -20
  30. package/src/i18n.json +4 -4
  31. package/src/index.js +78 -71
  32. package/src/store/index.js +25 -25
  33. package/src/store/modules/user.js +42 -42
  34. package/src/utils/asciiWidth.js +107 -107
  35. package/src/utils/common.js +12 -12
  36. package/src/utils/date.js +43 -43
  37. package/src/utils/exportFile.js +6 -6
  38. package/src/utils/i18n/cn2hk.json +1270 -1270
  39. package/src/utils/i18n/index.js +69 -69
  40. package/src/utils/repairElementUI.js +141 -141
  41. package/src/utils/tableCellUtils.js +54 -54
  42. package/src/utils/tableheaderFilterpanel.vue +257 -257
  43. package/style/index.css +25 -25
@@ -1,148 +1,148 @@
1
- <template>
2
- <div class="collapse" :class="{ 'm-b-s': !_isCollapse }">
3
- <el-collapse-transition v-if="$slots.default && showCard">
4
- <div class="collapse-content" v-show="!_isCollapse">
5
- <slot />
6
- </div>
7
- </el-collapse-transition>
8
- <div class="collapse-slot">
9
- <el-button v-if="showCard" class="rotate90" :icon="_isCollapse? 'el-icon-d-arrow-right': 'el-icon-d-arrow-left'" plain onlyicon size="mini" @click="handleToggle"/>
10
- <el-button icon="el-icon-setting" plain onlyicon size="mini" @click="toSettings" />
11
- <slot name="action" />
12
- </div>
13
- </div>
14
- </template>
15
-
16
- <script>
17
- export default {
18
- name: 'CommonCollapse',
19
- props: {
20
- permission: {
21
- type: String,
22
- default: ''
23
- },
24
- value: {
25
- type: Boolean,
26
- default: false
27
- },
28
- showCard: {
29
- type: Boolean,
30
- default: true
31
- }
32
- },
33
- data() {
34
- return {
35
- isCollapse: false
36
- }
37
- },
38
- computed: {
39
- hasUsedVModel() {
40
- return 'value' in this.$options.propsData
41
- },
42
- _isCollapse: {
43
- get() {
44
- return this.hasUsedVModel ? this.value : this.isCollapse
45
- },
46
- set(val) {
47
- if (this.hasUsedVModel) {
48
- this.$emit('input', val)
49
- } else {
50
- this.isCollapse = val
51
- }
52
- }
53
- }
54
- },
55
- methods: {
56
- toSettings() {
57
- this.$emit('toSettings')
58
- },
59
- // 切换 显示/隐藏
60
- handleToggle() {
61
- this._isCollapse = !this._isCollapse
62
- }
63
- }
64
- }
65
- </script>
66
-
67
- <style lang="scss" scoped>
68
- .collapse {
69
- position: relative;
70
- &-slot {
71
- z-index: 99999;
72
- position: absolute;
73
- top: -28px;
74
- right: 0;
75
- height: 24px;
76
- display: flex;
77
- justify-content: space-around;
78
- align-items: center;
79
- .el-icon {
80
- color: var(--color-text-regular);
81
- cursor: pointer;
82
- font-weight: bold;
83
- font-size: 18px;
84
- }
85
- }
86
- }
87
- </style>
88
-
89
- <style lang="scss">
90
- $--button-margin-left: 6px;
91
-
92
- .el-button--primary,
93
- .el-button--default,
94
- .el-button--default.is-plain,
95
- .el-button--warning.is-plain,
96
- .el-button--danger.is-plain {
97
- min-width: 72px;
98
- }
99
-
100
- .el-dropdown__caret-button,
101
- .el-button[onlyicon] {
102
- min-width: auto;
103
- }
104
-
105
- .el-button.button-4em {
106
- min-width: 72px;
107
- }
108
-
109
- .el-button+.el-button {
110
- margin-left: $--button-margin-left;
111
- }
112
-
113
- .el-button+.el-dropdown {
114
- margin-left: $--button-margin-left;
115
- }
116
-
117
- .el-button--mini+.el-button--mini {
118
- margin-left: $--button-margin-left;
119
- }
120
-
121
- .el-button[onlyicon] {
122
-
123
- &.el-button--default,
124
- &.el-button--medium,
125
- &.el-button--small {
126
- padding: 8px;
127
- }
128
-
129
- &.el-button--mini {
130
- padding: 5px;
131
- }
132
- }
133
-
134
- .el-button--info {
135
-
136
- &,
137
- &:focus {
138
- background-color: var(--color-info);
139
- border-color: var(--color-info);
140
- }
141
-
142
- &:hover {
143
- background: var(--color-info-hover);
144
- border-color: var(--color-info-hover);
145
- }
146
- }
147
-
1
+ <template>
2
+ <div class="collapse" :class="{ 'm-b-s': !_isCollapse }">
3
+ <el-collapse-transition v-if="$slots.default && showCard">
4
+ <div class="collapse-content" v-show="!_isCollapse">
5
+ <slot />
6
+ </div>
7
+ </el-collapse-transition>
8
+ <div class="collapse-slot">
9
+ <el-button v-if="showCard" class="rotate90" :icon="_isCollapse? 'el-icon-d-arrow-right': 'el-icon-d-arrow-left'" plain onlyicon size="mini" @click="handleToggle"/>
10
+ <el-button icon="el-icon-setting" plain onlyicon size="mini" @click="toSettings" />
11
+ <slot name="action" />
12
+ </div>
13
+ </div>
14
+ </template>
15
+
16
+ <script>
17
+ export default {
18
+ name: 'CommonCollapse',
19
+ props: {
20
+ permission: {
21
+ type: String,
22
+ default: ''
23
+ },
24
+ value: {
25
+ type: Boolean,
26
+ default: false
27
+ },
28
+ showCard: {
29
+ type: Boolean,
30
+ default: true
31
+ }
32
+ },
33
+ data() {
34
+ return {
35
+ isCollapse: false
36
+ }
37
+ },
38
+ computed: {
39
+ hasUsedVModel() {
40
+ return 'value' in this.$options.propsData
41
+ },
42
+ _isCollapse: {
43
+ get() {
44
+ return this.hasUsedVModel ? this.value : this.isCollapse
45
+ },
46
+ set(val) {
47
+ if (this.hasUsedVModel) {
48
+ this.$emit('input', val)
49
+ } else {
50
+ this.isCollapse = val
51
+ }
52
+ }
53
+ }
54
+ },
55
+ methods: {
56
+ toSettings() {
57
+ this.$emit('toSettings')
58
+ },
59
+ // 切换 显示/隐藏
60
+ handleToggle() {
61
+ this._isCollapse = !this._isCollapse
62
+ }
63
+ }
64
+ }
65
+ </script>
66
+
67
+ <style lang="scss" scoped>
68
+ .collapse {
69
+ position: relative;
70
+ &-slot {
71
+ z-index: 99999;
72
+ position: absolute;
73
+ top: -28px;
74
+ right: 0;
75
+ height: 24px;
76
+ display: flex;
77
+ justify-content: space-around;
78
+ align-items: center;
79
+ .el-icon {
80
+ color: var(--color-text-regular);
81
+ cursor: pointer;
82
+ font-weight: bold;
83
+ font-size: 18px;
84
+ }
85
+ }
86
+ }
87
+ </style>
88
+
89
+ <style lang="scss">
90
+ $--button-margin-left: 6px;
91
+
92
+ .el-button--primary,
93
+ .el-button--default,
94
+ .el-button--default.is-plain,
95
+ .el-button--warning.is-plain,
96
+ .el-button--danger.is-plain {
97
+ min-width: 72px;
98
+ }
99
+
100
+ .el-dropdown__caret-button,
101
+ .el-button[onlyicon] {
102
+ min-width: auto;
103
+ }
104
+
105
+ .el-button.button-4em {
106
+ min-width: 72px;
107
+ }
108
+
109
+ .el-button+.el-button {
110
+ margin-left: $--button-margin-left;
111
+ }
112
+
113
+ .el-button+.el-dropdown {
114
+ margin-left: $--button-margin-left;
115
+ }
116
+
117
+ .el-button--mini+.el-button--mini {
118
+ margin-left: $--button-margin-left;
119
+ }
120
+
121
+ .el-button[onlyicon] {
122
+
123
+ &.el-button--default,
124
+ &.el-button--medium,
125
+ &.el-button--small {
126
+ padding: 8px;
127
+ }
128
+
129
+ &.el-button--mini {
130
+ padding: 5px;
131
+ }
132
+ }
133
+
134
+ .el-button--info {
135
+
136
+ &,
137
+ &:focus {
138
+ background-color: var(--color-info);
139
+ border-color: var(--color-info);
140
+ }
141
+
142
+ &:hover {
143
+ background: var(--color-info-hover);
144
+ border-color: var(--color-info-hover);
145
+ }
146
+ }
147
+
148
148
  </style>
@@ -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,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>
@@ -1,8 +1,8 @@
1
- import FormPage from './src/main';
2
-
3
- /* istanbul ignore next */
4
- FormPage.install = function(Vue) {
5
- Vue.component(FormPage.name, FormPage);
6
- };
7
-
8
- export default FormPage;
1
+ import FormPage from './src/main';
2
+
3
+ /* istanbul ignore next */
4
+ FormPage.install = function(Vue) {
5
+ Vue.component(FormPage.name, FormPage);
6
+ };
7
+
8
+ export default FormPage;