cnhis-design-vue 0.3.3-beta → 0.3.6-beta

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 (81) hide show
  1. package/env.d.ts +2 -0
  2. package/es/big-table/index.css +1 -0
  3. package/es/big-table/index.js +116 -74
  4. package/es/button-print/index.css +1 -0
  5. package/es/drag-layout/index.css +2 -1
  6. package/es/drag-layout/index.js +33 -58
  7. package/es/grid/index.css +2 -1
  8. package/es/grid/index.js +2 -3
  9. package/es/index.css +2 -1
  10. package/es/index.js +152 -135
  11. package/package.json +5 -2
  12. package/packages/big-table/index.ts +17 -0
  13. package/packages/big-table/src/BigTable.vue +2511 -0
  14. package/packages/big-table/src/assets/iconfont/iconfont.less +21 -0
  15. package/packages/big-table/src/assets/iconfont/iconfont.ttf +0 -0
  16. package/packages/big-table/src/assets/img/failure.png +0 -0
  17. package/packages/big-table/src/assets/img/icon-asc.png +0 -0
  18. package/packages/big-table/src/assets/img/icon-desc.png +0 -0
  19. package/packages/big-table/src/assets/img/no-permission.png +0 -0
  20. package/packages/big-table/src/assets/img/nodata.png +0 -0
  21. package/packages/big-table/src/assets/img/notfound.png +0 -0
  22. package/packages/big-table/src/assets/img/qr.png +0 -0
  23. package/packages/big-table/src/assets/img/video_default_cover.png +0 -0
  24. package/packages/big-table/src/assets/img/xb_big.png +0 -0
  25. package/packages/big-table/src/assets/img/xb_small.png +0 -0
  26. package/packages/big-table/src/assets/style/table-base.less +275 -0
  27. package/packages/big-table/src/assets/style/table-global.less +167 -0
  28. package/packages/big-table/src/bigTableEmits.ts +46 -0
  29. package/packages/big-table/src/bigTableProps.ts +125 -0
  30. package/packages/big-table/src/bigTableState.ts +62 -0
  31. package/packages/big-table/src/components/NoData.vue +90 -0
  32. package/packages/big-table/src/components/SvgIcon.vue +49 -0
  33. package/packages/big-table/src/components/TextOverTooltip.vue +110 -0
  34. package/packages/big-table/src/components/edit-form/EditForm.vue +426 -0
  35. package/packages/big-table/src/components/edit-form/edit-component/edit-date-picker/edit-date-picker.vue +66 -0
  36. package/packages/big-table/src/components/edit-form/edit-component/edit-digital/edit-digital.vue +60 -0
  37. package/packages/big-table/src/components/edit-form/edit-component/edit-input/edit-input.vue +38 -0
  38. package/packages/big-table/src/components/edit-form/edit-component/edit-input-password/edit-input-password.vue +89 -0
  39. package/packages/big-table/src/components/edit-form/edit-component/edit-month-picker/edit-month-picker.vue +38 -0
  40. package/packages/big-table/src/components/edit-form/edit-component/edit-search/edit-search.vue +63 -0
  41. package/packages/big-table/src/components/edit-form/edit-component/edit-search-more/edit-search-more.vue +69 -0
  42. package/packages/big-table/src/components/edit-form/edit-component/edit-select/edit-select.vue +51 -0
  43. package/packages/big-table/src/components/edit-form/edit-component/edit-select-multiple/edit-select-multiple.vue +60 -0
  44. package/packages/big-table/src/components/edit-form/edit-component/edit-textarea/edit-textarea.vue +34 -0
  45. package/packages/big-table/src/components/edit-form/edit-component/edit-time-picker/edit-time-picker.vue +42 -0
  46. package/packages/big-table/src/components/edit-form/edit-component/editFormProps.ts +91 -0
  47. package/packages/big-table/src/components/edit-form/edit-component/register-com.ts +18 -0
  48. package/packages/big-table/src/components/edit-form/hooks/useConfigData.ts +79 -0
  49. package/packages/big-table/src/components/edit-form/hooks/useDateType.ts +184 -0
  50. package/packages/big-table/src/components/edit-form/hooks/useFormCommon.ts +373 -0
  51. package/packages/big-table/src/components/edit-form/hooks/useItemDefault.ts +638 -0
  52. package/packages/big-table/src/components/edit-form/hooks/useSearch.ts +910 -0
  53. package/packages/big-table/src/components/edit-form/hooks/useValidateRules.ts +387 -0
  54. package/packages/big-table/src/components/edit-form/interface.ts +53 -0
  55. package/packages/big-table/src/components/edit-form/types.ts +3 -0
  56. package/packages/big-table/src/components/edit-form/utils.ts +247 -0
  57. package/packages/big-table/src/hooks/useBatchEditing.ts +574 -0
  58. package/packages/big-table/src/hooks/useFormat.ts +612 -0
  59. package/packages/big-table/src/hooks/useNestTable.ts +109 -0
  60. package/packages/big-table/src/hooks/useTableParse.ts +169 -0
  61. package/packages/big-table/src/utils.ts +705 -0
  62. package/packages/button-print/index.ts +15 -0
  63. package/packages/button-print/src/ButtonPrint.vue +697 -0
  64. package/packages/button-print/src/components/IdentityVerification.vue +149 -0
  65. package/packages/button-print/src/interfaces.ts +19 -0
  66. package/packages/button-print/src/utils/crypto.js +25 -0
  67. package/packages/button-print/src/utils/print.es.min.js +1 -0
  68. package/packages/drag-layout/index.ts +15 -0
  69. package/packages/drag-layout/src/DragFormLeftItem.vue +131 -0
  70. package/packages/drag-layout/src/DragFormRightItem.vue +277 -0
  71. package/packages/drag-layout/src/DragLayout.vue +712 -0
  72. package/packages/grid/index.ts +17 -0
  73. package/packages/grid/src/Grid.tsx +22 -0
  74. package/packages/grid/src/hooks.ts +168 -0
  75. package/packages/index.ts +36 -0
  76. package/src/component/svg/index.vue +49 -0
  77. package/src/core/create.ts +5 -0
  78. package/src/global/variable.ts +2 -0
  79. package/src/utils/clickoutside.ts +80 -0
  80. package/src/utils/crypto.js +25 -0
  81. package/src/utils/vexutils.ts +811 -0
@@ -0,0 +1,811 @@
1
+ import XEUtils from 'xe-utils';
2
+ import moment from 'moment';
3
+ // com内容来源于老项目
4
+ const com = {
5
+ parseCondition: function(conList: any, data: any, fieldList: any) {
6
+ if (conList && conList.length > 0 && data && data.table) {
7
+ for (let i = 0; i < conList.length; i++) {
8
+ let conObj = conList[i];
9
+ if (conObj && conObj.field_key && conObj.con) {
10
+ let value = data.table[conObj.field_key];
11
+ let fieldObj = XEUtils.getFieldByKey(conObj.field_key, fieldList);
12
+ // 缺少fieldObj 或 value 则条件不成立 2020.09.09。
13
+ if (!fieldObj || (!value && String(value) !== '0')) return false;
14
+ if (!XEUtils.getConnection(conObj, value, fieldObj)) {
15
+ return false;
16
+ }
17
+ }
18
+ }
19
+ }
20
+ return true;
21
+ },
22
+ getFieldByKey: function(fieldKey: any, fieldList: any) {
23
+ if (fieldList && fieldList.length > 0) {
24
+ for (let i = 0; i < fieldList.length; i++) {
25
+ let fobj = fieldList[i];
26
+ if (fobj.columnName == fieldKey) {
27
+ return fobj;
28
+ }
29
+ }
30
+ }
31
+ },
32
+ getConnection: function(cObj: any, fVal: any, field: any) {
33
+ let con = cObj.con;
34
+ let value = cObj.value;
35
+ // 修改 #['NULL','NOT_NULL'] 的判断: value => fval 2020-09-15.
36
+ if ('NULL' == con) {
37
+ if (fVal) {
38
+ return false;
39
+ }
40
+ } else if ('NOT_NULL' == con) {
41
+ if (!fVal) {
42
+ return false;
43
+ }
44
+ }
45
+
46
+ if ('TEXT' == field.fieldType) {
47
+ if ('CL' == con) {
48
+ if (fVal.indexOf(value) == -1) {
49
+ return false;
50
+ }
51
+ } else if ('NC' == con) {
52
+ if (fVal.indexOf(value) != -1) {
53
+ return false;
54
+ }
55
+ } else if ('EQ' == con || 'QUOTE' == con) {
56
+ if (value.indexOf('|#|') != -1) {
57
+ for (let kw in value.split('|#|')) {
58
+ if (fVal.indexOf(kw) == -1) {
59
+ return false;
60
+ }
61
+ }
62
+ } else {
63
+ if (fVal != value) {
64
+ return false;
65
+ }
66
+ }
67
+ } else if ('NEQ' == con) {
68
+ if (fVal == value) {
69
+ return false;
70
+ }
71
+ }
72
+ } else {
73
+ if ('NUMBER' == field.fieldType) {
74
+ if (!XEUtils.isNumber(fVal)) {
75
+ return false;
76
+ }
77
+ if ('EQ' == con || 'QUOTE' == con) {
78
+ if (XEUtils.isNumber(value)) {
79
+ if (fVal * 1 != value * 1) {
80
+ return false;
81
+ }
82
+ } else {
83
+ if (!XEUtils.getBetween(value, 'number', fVal)) {
84
+ return false;
85
+ }
86
+ }
87
+ } else if ('NEQ' == con) {
88
+ if (XEUtils.isNumber(value)) {
89
+ if (fVal * 1 == value * 1) {
90
+ return false;
91
+ }
92
+ }
93
+ } else if ('BIG' == con) {
94
+ if (XEUtils.isNumber(value)) {
95
+ if (fVal * 1 <= value * 1) {
96
+ return false;
97
+ }
98
+ }
99
+ } else if ('LESS' == con) {
100
+ if (XEUtils.isNumber(value)) {
101
+ if (fVal * 1 >= value * 1) {
102
+ return false;
103
+ }
104
+ }
105
+ }
106
+ } else {
107
+ if (
108
+ 'TODAY' == con ||
109
+ 'TOMORROW' == con ||
110
+ 'YESTERDAY' == con ||
111
+ 'THIS_WEEK' == con ||
112
+ 'NEXT_WEEK' == con ||
113
+ 'UP_WEEK' == con ||
114
+ 'THIS_MONTH' == con ||
115
+ 'NEXT_MONTH' == con ||
116
+ 'UP_MONTH' == con ||
117
+ 'THIS_SEASON' == con ||
118
+ 'NEXT_SEASON' == con ||
119
+ 'UP_SEASON' == con ||
120
+ 'THIS_YEAR' == con ||
121
+ 'NEXT_YEAR' == con ||
122
+ 'UP_YEAR' == con
123
+ ) {
124
+ if (XEUtils.isDate(fVal)) {
125
+ let curDate = new Date();
126
+ let startDate;
127
+ let endDate;
128
+ let oneDayTime = 24 * 60 * 60 * 1000;
129
+ let fDate = XEUtils.convertDate(fVal);
130
+ let curDateStr = XEUtils.toDateString(curDate, 'yyyy-MM-dd');
131
+ if ('TODAY' == con) {
132
+ startDate = XEUtils.convertDate(curDateStr + ' 00:00:00');
133
+ endDate = XEUtils.convertDate(curDateStr + ' 23:59:59');
134
+ } else if ('TOMORROW' == con) {
135
+ let tomorrowDate = XEUtils.addDate(curDate, 1, 'D');
136
+ let dateStr = tomorrowDate.format('yyyy-MM-dd');
137
+ startDate = XEUtils.convertDate(dateStr + ' 00:00:00');
138
+ endDate = XEUtils.convertDate(dateStr + ' 23:59:59');
139
+ } else if ('YESTERDAY' == con) {
140
+ let tomorrowDate = XEUtils.addDate(curDate, -1, 'D');
141
+ let dateStr = tomorrowDate.format('yyyy-MM-dd');
142
+ startDate = XEUtils.convertDate(dateStr + ' 00:00:00');
143
+ endDate = XEUtils.convertDate(dateStr + ' 23:59:59');
144
+ } else if ('THIS_WEEK' == con) {
145
+ let day = curDate.getDay() || 7;
146
+ let mondayTime = curDate.getTime() - (day - 1) * oneDayTime;
147
+ let mundayTime = curDate.getTime() + (7 - day) * oneDayTime;
148
+ startDate = new Date(mondayTime);
149
+ endDate = new Date(mundayTime);
150
+ } else if ('NEXT_WEEK' == con) {
151
+ let sevenDays = XEUtils.addDate(curDate, 1, 'W');
152
+ let day = sevenDays.getDay() || 7;
153
+ let mondayTime = sevenDays.getTime() - (day - 1) * oneDayTime;
154
+ let mundayTime = sevenDays.getTime() + (7 - day) * oneDayTime;
155
+ startDate = new Date(mondayTime);
156
+ endDate = new Date(mundayTime);
157
+ } else if ('UP_WEEK' == con) {
158
+ let sevenDays = XEUtils.addDate(curDate, -1, 'W');
159
+ let day = sevenDays.getDay() || 7;
160
+ let mondayTime = sevenDays.getTime() - (day - 1) * oneDayTime;
161
+ let mundayTime = sevenDays.getTime() + (7 - day) * oneDayTime;
162
+ startDate = new Date(mondayTime);
163
+ endDate = new Date(mundayTime);
164
+ } else if ('THIS_MONTH' == con) {
165
+ let date = new Date();
166
+ date.setDate(1);
167
+ startDate = date;
168
+ endDate = XEUtils.addDate(date, 1, 'M');
169
+ } else if ('NEXT_MONTH' == con) {
170
+ let date = new Date();
171
+ date.setDate(1);
172
+ startDate = XEUtils.addDate(date, 1, 'M');
173
+ endDate = XEUtils.addDate(date, 2, 'M');
174
+ } else if ('UP_MONTH' == con) {
175
+ let date = new Date();
176
+ date.setDate(1);
177
+ startDate = XEUtils.addDate(date, -1, 'M');
178
+ endDate = date;
179
+ } else if ('THIS_SEASON' == con) {
180
+ startDate = XEUtils.getCurSeasonFirstDay();
181
+ endDate = XEUtils.addDate(startDate, 3, 'M');
182
+ } else if ('NEXT_SEASON' == con) {
183
+ startDate = XEUtils.addDate(XEUtils.getCurSeasonFirstDay(), 3, 'M');
184
+ endDate = XEUtils.addDate(startDate, 3, 'M');
185
+ } else if ('UP_SEASON' == con) {
186
+ endDate = XEUtils.getCurSeasonFirstDay();
187
+ startDate = XEUtils.addDate(endDate, -3, 'M');
188
+ } else if ('THIS_YEAR' == con) {
189
+ let date = new Date();
190
+ startDate = new Date(date.getFullYear() + '/01/01');
191
+ endDate = XEUtils.addDate(startDate, 1, 'Y');
192
+ } else if ('NEXT_YEAR' == con) {
193
+ let date = new Date();
194
+ startDate = XEUtils.addDate(new Date(date.getFullYear() + '/01/01'), 1, 'Y');
195
+ endDate = XEUtils.addDate(startDate, 1, 'Y');
196
+ } else if ('UP_YEAR' == con) {
197
+ let date = new Date();
198
+ endDate = new Date(date.getFullYear() + '/01/01');
199
+ startDate = XEUtils.addDate(endDate, -1, 'Y');
200
+ }
201
+ if (startDate && endDate) {
202
+ if (!(startDate.getTime() <= fDate.getTime() && fDate.getTime() < endDate.getTime())) {
203
+ return false;
204
+ }
205
+ }
206
+ } else {
207
+ return false;
208
+ }
209
+ } else if ('L_' == con || 'N_' == con || 'IN_THE_PAST' == con || 'IN_THE_FUTURE' == con || 'IN_THE_PAST_DI' == con || 'IN_THE_FUTURE_DI' == con) {
210
+ if (cObj['unit'] && XEUtils.isNumber(value)) {
211
+ if (XEUtils.isDate(fVal)) {
212
+ let fDate = XEUtils.convertDate(fVal);
213
+ let curDate = new Date();
214
+ let unit = cObj['unit'];
215
+ if ('DAY' == unit || 'WEEK' == unit || 'MONTH' == unit || 'QUARTER' == unit || 'YEAR' == unit || 'HOUR' == unit) {
216
+ let type = 'D';
217
+ if ('WEEK' == unit) {
218
+ type = 'W';
219
+ } else if ('MONTH' == unit) {
220
+ type = 'M';
221
+ } else if ('QUARTER' == unit) {
222
+ type = 'Q';
223
+ } else if ('YEAR' == unit) {
224
+ type = 'Y';
225
+ } else if ('HOUR' == unit) {
226
+ type = 'H';
227
+ }
228
+ let count = value * 1;
229
+ if ('L_' == con) {
230
+ let targetDate = XEUtils.addDate(new Date(), count * -1, type);
231
+ if (fDate.getTime() < targetDate.getTime()) {
232
+ return false;
233
+ }
234
+ } else if ('N_' == con) {
235
+ let targetDate = XEUtils.addDate(new Date(), count, type);
236
+ if (fDate.getTime() > targetDate.getTime()) {
237
+ return false;
238
+ }
239
+ } else if ('IN_THE_PAST' == con) {
240
+ let curTime = fDate.getTime();
241
+ let endTime = curDate.getTime();
242
+ let startTime = XEUtils.addDate(curDate, count * -1, type).getTime();
243
+ if (curTime < startTime || curTime > endTime) {
244
+ return false;
245
+ }
246
+ } else if ('IN_THE_FUTURE' == con) {
247
+ let curTime = fDate.getTime();
248
+ let startTime = curDate.getTime();
249
+ let endTime = XEUtils.addDate(curDate, count, type).getTime();
250
+ if (curTime < startTime || curTime > endTime) {
251
+ return false;
252
+ }
253
+ } else if ('IN_THE_PAST_DI' == con || 'IN_THE_FUTURE_DI' == con) {
254
+ let curTime = fDate.getTime();
255
+ let useType = con == 'IN_THE_FUTURE_DI' ? 'add' : 'subtract';
256
+ let { startTime, endTime } = XEUtils.addDiDate(curDate, count, unit, useType);
257
+ if (curTime < startTime || curTime > endTime) {
258
+ return false;
259
+ }
260
+ }
261
+ }
262
+ } else {
263
+ return false;
264
+ }
265
+ }
266
+ } else if ('IN' == con) {
267
+ if (XEUtils.isDate(fVal)) {
268
+ let fDate = XEUtils.convertDate(fVal);
269
+ if (!value) {
270
+ if (cObj['start_val'] && cObj['end_val']) {
271
+ let start_val = cObj['start_val'];
272
+ let end_val = cObj['end_val'];
273
+ if (start_val && end_val && XEUtils.isDate(start_val) && XEUtils.isDate(end_val)) {
274
+ let startDate = XEUtils.convertDate(start_val);
275
+ let endDate = XEUtils.convertDate(end_val);
276
+ if (!(startDate.getTime() <= fDate.getTime() && fDate.getTime() < endDate.getTime())) {
277
+ return false;
278
+ }
279
+ } else {
280
+ return false;
281
+ }
282
+ } else if (cObj['start_val']) {
283
+ let start_val = cObj['start_val'];
284
+ if (XEUtils.isDate(start_val)) {
285
+ let startDate = XEUtils.convertDate(start_val);
286
+ if (!(startDate.getTime() <= fDate.getTime())) {
287
+ return false;
288
+ }
289
+ } else {
290
+ return false;
291
+ }
292
+ } else if (cObj['end_val']) {
293
+ let end_val = cObj['end_val'];
294
+ if (XEUtils.isDate(end_val)) {
295
+ let endDate = XEUtils.convertDate(end_val);
296
+ if (!(fDate.getTime() < endDate.getTime())) {
297
+ return false;
298
+ }
299
+ } else {
300
+ return false;
301
+ }
302
+ }
303
+ }
304
+ }
305
+ }
306
+ }
307
+ }
308
+ if ('compare' == con) {
309
+ if ('TEXT' == field.fieldType) {
310
+ if (value.indexOf('|#|') != -1) {
311
+ for (let kw in value.split('|#|')) {
312
+ if (fVal.indexOf(kw) == -1) {
313
+ return false;
314
+ }
315
+ }
316
+ } else {
317
+ if (cObj['mk'] && 'like' == cObj['mk']) {
318
+ if (fVal.indexOf(value) == -1) {
319
+ return false;
320
+ }
321
+ } else {
322
+ if (fVal.indexOf(value) == -1) {
323
+ return false;
324
+ }
325
+ }
326
+ }
327
+ } else if ('NUMBER' == field.fieldType()) {
328
+ if (XEUtils.isNumber(value) && XEUtils.isNumber(fVal)) {
329
+ if (fVal * 1 != value * 1) {
330
+ return false;
331
+ }
332
+ } else {
333
+ return false;
334
+ }
335
+ } else {
336
+ if (fVal != value) {
337
+ return false;
338
+ }
339
+ }
340
+ }
341
+ return true;
342
+ },
343
+ getBetween: function(value: any, type: any, comVal: any) {
344
+ if (value && value.indexOf('~') != -1 && value.split('~').length == 2) {
345
+ let start = value.split('~')[0];
346
+ let end = value.split('~')[1];
347
+ if ('number' == type) {
348
+ if (XEUtils.isNumber(start) && XEUtils.isNumber(end)) {
349
+ return start * 1 <= comVal * 1 && comVal * 1 < end * 1;
350
+ }
351
+ }
352
+ }
353
+ },
354
+ convertDate: function(str: string) {
355
+ if (str) {
356
+ if (str.indexOf('-') != -1) {
357
+ str = str = str.replace(/-/g, '/');
358
+ try {
359
+ let date = new Date(str);
360
+ return date;
361
+ } catch (e) {
362
+ console.log(e);
363
+ }
364
+ } else {
365
+ try {
366
+ let date = new Date(str);
367
+ return date;
368
+ } catch (e) {
369
+ console.log(e);
370
+ }
371
+ }
372
+ }
373
+ },
374
+ addDate: function(tempDate: any, days: any, unit: any) {
375
+ let date = tempDate;
376
+ if (['D', 'H', 'W'].includes(unit)) {
377
+ if (tempDate && XEUtils.isValidDate(tempDate)) {
378
+ date = date.getTime();
379
+ }
380
+ }
381
+ if (unit == 'D') {
382
+ return new Date(date + days * 24 * 3600 * 1000);
383
+ } else if (unit == 'W') {
384
+ return new Date(date + days * 7 * 24 * 3600 * 1000);
385
+ } else if (unit == 'M') {
386
+ let newDate = new Date(date);
387
+ newDate.setMonth(date.getMonth() + days);
388
+ return newDate;
389
+ } else if (unit == 'Q') {
390
+ let newDate = new Date(date);
391
+ newDate.setMonth(date.getMonth() + days * 3);
392
+ return newDate;
393
+ } else if (unit == 'Y') {
394
+ let newDate = new Date(date);
395
+ newDate.setMonth(date.getMonth() + days * 12);
396
+ return newDate;
397
+ } else if (unit == 'H') {
398
+ return new Date(date + days * 3600 * 1000);
399
+ }
400
+ },
401
+ addDiDate: function(curDate: any, count: any, unit = 'day', type: any) {
402
+ let useTime: any,
403
+ res: any = {};
404
+ let getUnit = unit.toLowerCase();
405
+ let useUnit = getUnit + 's';
406
+ if (type == 'add') {
407
+ useTime = moment(curDate).add(count, useUnit);
408
+ } else {
409
+ useTime = moment(curDate).subtract(count, useUnit);
410
+ }
411
+ res.startTime = useTime.startOf(getUnit).valueOf();
412
+ res.endTime = useTime.endOf(getUnit).valueOf();
413
+ return res;
414
+ },
415
+ // 获取当前季度第一天
416
+ getCurSeasonFirstDay: function() {
417
+ let curDate = new Date();
418
+ let year = curDate.getFullYear();
419
+ let month = curDate.getMonth() + 1;
420
+ if (month >= 1 && month <= 3) {
421
+ return new Date(year + '/01/01');
422
+ } else if (4 <= month && month <= 6) {
423
+ return new Date(year + '/04/01');
424
+ } else if (7 <= month && month <= 9) {
425
+ return new Date(year + '/07/01');
426
+ } else {
427
+ return new Date(year + '/10/01');
428
+ }
429
+ },
430
+ isNumber: function(val: any) {
431
+ try {
432
+ let i = val * 1 + 100;
433
+ if (i > 0 || i < 0 || i == 0) {
434
+ return true;
435
+ }
436
+ } catch (e) {
437
+ console.log(e);
438
+ }
439
+ return false;
440
+ },
441
+ isDate: function(data: any) {
442
+ if (isNaN(data) && !isNaN(Date.parse(data))) {
443
+ return true;
444
+ }
445
+ return false;
446
+ }
447
+ };
448
+ XEUtils.mixin({
449
+ ...com,
450
+ isJSON(str: any) {
451
+ if (typeof str == 'string') {
452
+ try {
453
+ let obj = JSON.parse(str);
454
+ if (typeof obj == 'object' && obj) {
455
+ return true;
456
+ } else {
457
+ return false;
458
+ }
459
+ } catch (e) {
460
+ return false;
461
+ }
462
+ }
463
+ return false;
464
+ },
465
+ /**
466
+ * 获取按钮自定义颜色
467
+ * @param {string} v
468
+ */
469
+ getBtnStyle(v: any) {
470
+ // custom_bg, white_bg, none_bg
471
+ if (v.showStyle == 'white_bg') {
472
+ return {
473
+ 'border-color': v.color,
474
+ color: v.color
475
+ };
476
+ } else if (v.showStyle == 'none_bg') {
477
+ return {
478
+ color: v.color
479
+ };
480
+ } else if (v.showStyle == 'only_icon') {
481
+ return {
482
+ 'background-color': v.color,
483
+ 'border-color': v.color
484
+ // color: v.color
485
+ };
486
+ }
487
+ return {
488
+ 'background-color': v.color,
489
+ 'border-color': v.color
490
+ };
491
+ },
492
+
493
+ oldColorMap(str: string) {
494
+ let oldMap: any = {
495
+ blue: 'blue',
496
+ sky: 'skyblue',
497
+ azure: 'azure',
498
+ palegreen: 'palegreen',
499
+ yellow: 'yellow',
500
+ darkorange: 'darkorange',
501
+ magenta: 'magenta',
502
+ purple: 'purple',
503
+ maroon: 'maroon',
504
+ orange: 'orange',
505
+ green: 'green',
506
+ red: 'red',
507
+ grey: 'grey'
508
+ };
509
+ if (!str || !oldMap[str]) return '';
510
+ return oldMap[str];
511
+ },
512
+
513
+ validateBirthday(val: string, title: string, type: string) {
514
+ let res = true;
515
+ if (!type) return false;
516
+ let regObj: any = {
517
+ DAYReg: /^([0-9]|[1-9][0-9]|[1-2][0-9][0-9]|[3][0-5][0-9]|(360|361|363|362|364|365))$/,
518
+ MONTHReg: /^(?:[0-9]|1[0-2])$/,
519
+ YEARReg: /^(?:[1-9]?\d|100)$/
520
+ };
521
+ let testReg = `${type}Reg`;
522
+ if (!regObj[testReg].test(+val)) {
523
+ (window as any).$message.warning(`${title}${this.$t('1.9.40')}`, 2);
524
+ res = false;
525
+ }
526
+ return res;
527
+ },
528
+
529
+ handleImageSize(item: any, defaultHeight: any) {
530
+ let res: any = {
531
+ display: 'inline-block',
532
+ height: defaultHeight
533
+ };
534
+ if (item.h) {
535
+ res.height = item.h === 'adaptive' ? 'auto' : item.h + 'px';
536
+ }
537
+ if (item.w) {
538
+ res.width = item.w === 'adaptive' ? 'auto' : item.w + 'px';
539
+ }
540
+ return res;
541
+ },
542
+
543
+ /**
544
+ * 大数组复制
545
+ * @param {*} arr 复制的数据
546
+ * @param {*} size 每次操作的数据量
547
+ * @returns {Array}
548
+ */
549
+ handleBigArrayCopy(arr: any, size = 1000) {
550
+ if (!Array.isArray(arr)) return arr;
551
+ let cSize = size || 1000;
552
+ const list: any = XEUtils.chunk(arr, cSize);
553
+
554
+ const copyFunc = (list = [], type = 'json') => {
555
+ const obj: any = {
556
+ json: (v: any) => JSON.parse(JSON.stringify(v)),
557
+ clone: (v: any) => XEUtils.clone(v, true)
558
+ };
559
+ let copyList: any[] = [];
560
+ list.forEach(v => {
561
+ let rs = obj[type](v);
562
+ copyList.push(rs);
563
+ });
564
+ return XEUtils.flatten(copyList);
565
+ };
566
+ let res = [];
567
+ try {
568
+ res = copyFunc(list, 'json');
569
+ } catch (error) {
570
+ // 防止数据大,使用JSON.stringify 超出字符串长度
571
+ res = copyFunc(list, 'clone');
572
+ }
573
+ return res;
574
+ },
575
+
576
+ // color 获取 alpha
577
+ getAlphafloat(a?: number, alpha?: number) {
578
+ if (typeof a !== 'undefined') {
579
+ return parseFloat((a / 256).toFixed(2));
580
+ }
581
+ if (typeof alpha !== 'undefined') {
582
+ if (1 < alpha && alpha <= 100) {
583
+ return parseFloat((alpha / 100).toFixed(2));
584
+ }
585
+ if (0 <= alpha && alpha <= 1) {
586
+ return parseFloat(alpha.toFixed(2));
587
+ }
588
+ }
589
+ return 1;
590
+ },
591
+
592
+ // hex 转 rgba
593
+ hexToRGBA(hex: any, alpha: any) {
594
+ const isValidHex = (hex: any) => /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);
595
+ const getChunksFromString = (st: string, chunkSize: number) => st.match(new RegExp(`.{${chunkSize}}`, 'g'));
596
+
597
+ const convertHexUnitTo256 = (hexStr: any) => parseInt(hexStr.repeat(2 / hexStr.length), 16);
598
+
599
+ if (!isValidHex(hex)) {
600
+ console.log('Invalid HEX');
601
+ return '';
602
+ }
603
+ const chunkSize = Math.floor((hex.length - 1) / 3);
604
+ const hexArr = getChunksFromString(hex.slice(1), chunkSize);
605
+ const [r, g, b, a] = (hexArr as any).map(convertHexUnitTo256);
606
+ return {
607
+ r: r,
608
+ g: g,
609
+ b: b,
610
+ a: XEUtils.getAlphafloat(a, alpha)
611
+ };
612
+ },
613
+
614
+ /**
615
+ *
616
+ * 时间转换
617
+ * @param {type} type 时间戳类型
618
+ * @param {time} time 时间戳
619
+ */
620
+ formatTime(type: string, time: string) {
621
+ let format = '';
622
+ if (!time) return '';
623
+ switch (type) {
624
+ case 'DATE':
625
+ format = 'yyyy-MM-dd';
626
+ break;
627
+ case 'DATETIME':
628
+ format = 'yyyy-MM-dd HH:mm:ss';
629
+ break;
630
+ case 'TIME':
631
+ format = 'HH:mm:ss';
632
+ break;
633
+ case 'MOUTH':
634
+ format = 'MM-dd';
635
+ break;
636
+ case 'DATETIMESTR':
637
+ format = 'yyyy年M月dd日 HH:mm';
638
+ break;
639
+ case 'MOUTHTIME':
640
+ format = 'M月d日 HH:mm';
641
+ break;
642
+ case 'HM':
643
+ format = ' HH:mm';
644
+ break;
645
+ default:
646
+ break;
647
+ }
648
+ return XEUtils.toDateString(time, format);
649
+ },
650
+ formatDate(date: any, isShowYear: boolean = false) {
651
+ const today = new Date();
652
+ const curDate = date || today.getTime();
653
+
654
+ const todayStr = XEUtils.formatTime('DATE', today.getTime());
655
+ const todayTimeStamp = XEUtils.convertDate(todayStr + ' 00:00:00').getTime();
656
+ // const yesterdayTimeStamp = todayTimeStamp - 24 * 60 * 60 * 1000;
657
+ const thisYear = today.getFullYear();
658
+ const curYear = new Date(+curDate).getFullYear();
659
+ if (curDate > todayTimeStamp) {
660
+ return XEUtils.formatTime('TIME', curDate);
661
+ }
662
+ // else if (curDate > yesterdayTimeStamp) {
663
+ // return "昨天 " + XEUtils.formatTime("TIME", curDate);
664
+ // }
665
+ else {
666
+ if (!isShowYear) return XEUtils.formatTime('DATETIME', curDate);
667
+ if (thisYear !== curYear) {
668
+ return XEUtils.formatTime('DATETIMESTR', curDate);
669
+ }
670
+ return XEUtils.formatTime('MOUTHTIME', curDate);
671
+ }
672
+ },
673
+ imgs2imgArr(imgs?: string) {
674
+ if (!imgs) return [];
675
+
676
+ return imgs
677
+ .replace(/(,)(data|http)/g, (match, p1, p2) => {
678
+ return `|${p2}`;
679
+ })
680
+ .split('|');
681
+ },
682
+ filterOption(input: string, option: any) {
683
+ try {
684
+ let text = option.componentOptions.children[0].text;
685
+ let lowText = text.toLowerCase();
686
+ let lowInput = input.toLowerCase();
687
+ let flag = false;
688
+ var reg = /^[a-zA-Z]+$/;
689
+ if (typeof text === 'string' && reg.test(input) && ('' as any)._toPinYin) {
690
+ flag = lowText._toPinYin().indexOf(lowInput) >= 0;
691
+ }
692
+ return flag || lowText.indexOf(lowInput) >= 0;
693
+ } catch (error) {
694
+ return false;
695
+ }
696
+ },
697
+
698
+ /**
699
+ * 转换含有###的值
700
+ * @param {*} item
701
+ * @param {*} k key
702
+ * @returns
703
+ */
704
+ stringToValue(item: any, k = "value") {
705
+ if (XEUtils.isString(item)) {
706
+ if (item && item.startsWith("###{")) {
707
+ let temp = JSON.parse(item.replace("###", ""));
708
+ item = temp[k];
709
+ }
710
+ }
711
+ return item;
712
+ },
713
+
714
+ notEmpty(text: any) {
715
+ return XEUtils.isBoolean(text) || String(text) === "0" || !!text;
716
+ },
717
+
718
+ /**
719
+ * 变量转换
720
+ * @param {string} str
721
+ * @param {object} obj
722
+ * @param {string | number} noval // 没有值,默认赋值
723
+ */
724
+ handleSysParams(str: any, obj = {}, noval = "") {
725
+ let p = {
726
+ ...obj
727
+ };
728
+ const that = this;
729
+ // 解析变量
730
+ const getValList = (plsList = [], obj = {}) => {
731
+ var l: any[] = [];
732
+ var o = obj;
733
+ plsList.forEach((v: any) => {
734
+ let c = v;
735
+ // xx.xx
736
+ if (v.includes(".")) {
737
+ try {
738
+ // 使用 eval 解析 'result.map.map.filed'
739
+ eval(`c=o.${v}`);
740
+ } catch (error) {
741
+ c = "";
742
+ }
743
+ }
744
+ if (XEUtils.notEmpty(c)) {
745
+ l.push(c);
746
+ }
747
+ });
748
+ return l;
749
+ };
750
+ const getVal = (t: any, r: any, k: any) => {
751
+ return t.replace(r, function() {
752
+ var pKey = arguments[1];
753
+ // 切割
754
+ var pls = pKey.split("!");
755
+ // 取值
756
+ var l = getValList(pls, p);
757
+ var f = l.find(v => XEUtils.notEmpty(v));
758
+ var res = f;
759
+ res = XEUtils.notEmpty(res) ? res : noval;
760
+ return res;
761
+ });
762
+ };
763
+ if (typeof str === "string") {
764
+ if (str.includes("form")) {
765
+ str = getVal(str, /\${(.*?)\}/g, "form");
766
+ }
767
+ if (str.includes("sys")) {
768
+ str = getVal(str, /\${(.*?)\}/g, "sys");
769
+ }
770
+ if (str.includes("db")) {
771
+ str = getVal(str, /\${(.*?)\}/g, "db");
772
+ }
773
+ if (str.includes("table")) {
774
+ str = getVal(str, /\${(.*?)\}/g, "table");
775
+ }
776
+ if (str.includes("result")) {
777
+ str = getVal(str, /\${(.*?)\}/g, "result");
778
+ }
779
+ }
780
+ return str;
781
+ },
782
+
783
+ });
784
+
785
+ export default XEUtils;
786
+
787
+ export { moment };
788
+
789
+ export function formatReleaseTime(type: string, time: any) {
790
+ if (time < 0) {
791
+ return '';
792
+ }
793
+ let format = '';
794
+ switch (type) {
795
+ case 'DATE':
796
+ format = 'yyyy-MM-dd';
797
+ break;
798
+ case 'DATETIMENew':
799
+ format = 'yyyy-MM-dd HH:mm';
800
+ break;
801
+ case 'DATETIME':
802
+ format = 'yyyy-MM-dd HH:mm:ss';
803
+ break;
804
+ case 'TIME':
805
+ format = 'HH:mm:ss';
806
+ break;
807
+ default:
808
+ break;
809
+ }
810
+ return XEUtils.toDateString(time, format);
811
+ }