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.
- package/env.d.ts +2 -0
- package/es/big-table/index.css +1 -0
- package/es/big-table/index.js +116 -74
- package/es/button-print/index.css +1 -0
- package/es/drag-layout/index.css +2 -1
- package/es/drag-layout/index.js +33 -58
- package/es/grid/index.css +2 -1
- package/es/grid/index.js +2 -3
- package/es/index.css +2 -1
- package/es/index.js +152 -135
- package/package.json +5 -2
- package/packages/big-table/index.ts +17 -0
- package/packages/big-table/src/BigTable.vue +2511 -0
- package/packages/big-table/src/assets/iconfont/iconfont.less +21 -0
- package/packages/big-table/src/assets/iconfont/iconfont.ttf +0 -0
- package/packages/big-table/src/assets/img/failure.png +0 -0
- package/packages/big-table/src/assets/img/icon-asc.png +0 -0
- package/packages/big-table/src/assets/img/icon-desc.png +0 -0
- package/packages/big-table/src/assets/img/no-permission.png +0 -0
- package/packages/big-table/src/assets/img/nodata.png +0 -0
- package/packages/big-table/src/assets/img/notfound.png +0 -0
- package/packages/big-table/src/assets/img/qr.png +0 -0
- package/packages/big-table/src/assets/img/video_default_cover.png +0 -0
- package/packages/big-table/src/assets/img/xb_big.png +0 -0
- package/packages/big-table/src/assets/img/xb_small.png +0 -0
- package/packages/big-table/src/assets/style/table-base.less +275 -0
- package/packages/big-table/src/assets/style/table-global.less +167 -0
- package/packages/big-table/src/bigTableEmits.ts +46 -0
- package/packages/big-table/src/bigTableProps.ts +125 -0
- package/packages/big-table/src/bigTableState.ts +62 -0
- package/packages/big-table/src/components/NoData.vue +90 -0
- package/packages/big-table/src/components/SvgIcon.vue +49 -0
- package/packages/big-table/src/components/TextOverTooltip.vue +110 -0
- package/packages/big-table/src/components/edit-form/EditForm.vue +426 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-date-picker/edit-date-picker.vue +66 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-digital/edit-digital.vue +60 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-input/edit-input.vue +38 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-input-password/edit-input-password.vue +89 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-month-picker/edit-month-picker.vue +38 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-search/edit-search.vue +63 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-search-more/edit-search-more.vue +69 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-select/edit-select.vue +51 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-select-multiple/edit-select-multiple.vue +60 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-textarea/edit-textarea.vue +34 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-time-picker/edit-time-picker.vue +42 -0
- package/packages/big-table/src/components/edit-form/edit-component/editFormProps.ts +91 -0
- package/packages/big-table/src/components/edit-form/edit-component/register-com.ts +18 -0
- package/packages/big-table/src/components/edit-form/hooks/useConfigData.ts +79 -0
- package/packages/big-table/src/components/edit-form/hooks/useDateType.ts +184 -0
- package/packages/big-table/src/components/edit-form/hooks/useFormCommon.ts +373 -0
- package/packages/big-table/src/components/edit-form/hooks/useItemDefault.ts +638 -0
- package/packages/big-table/src/components/edit-form/hooks/useSearch.ts +910 -0
- package/packages/big-table/src/components/edit-form/hooks/useValidateRules.ts +387 -0
- package/packages/big-table/src/components/edit-form/interface.ts +53 -0
- package/packages/big-table/src/components/edit-form/types.ts +3 -0
- package/packages/big-table/src/components/edit-form/utils.ts +247 -0
- package/packages/big-table/src/hooks/useBatchEditing.ts +574 -0
- package/packages/big-table/src/hooks/useFormat.ts +612 -0
- package/packages/big-table/src/hooks/useNestTable.ts +109 -0
- package/packages/big-table/src/hooks/useTableParse.ts +169 -0
- package/packages/big-table/src/utils.ts +705 -0
- package/packages/button-print/index.ts +15 -0
- package/packages/button-print/src/ButtonPrint.vue +697 -0
- package/packages/button-print/src/components/IdentityVerification.vue +149 -0
- package/packages/button-print/src/interfaces.ts +19 -0
- package/packages/button-print/src/utils/crypto.js +25 -0
- package/packages/button-print/src/utils/print.es.min.js +1 -0
- package/packages/drag-layout/index.ts +15 -0
- package/packages/drag-layout/src/DragFormLeftItem.vue +131 -0
- package/packages/drag-layout/src/DragFormRightItem.vue +277 -0
- package/packages/drag-layout/src/DragLayout.vue +712 -0
- package/packages/grid/index.ts +17 -0
- package/packages/grid/src/Grid.tsx +22 -0
- package/packages/grid/src/hooks.ts +168 -0
- package/packages/index.ts +36 -0
- package/src/component/svg/index.vue +49 -0
- package/src/core/create.ts +5 -0
- package/src/global/variable.ts +2 -0
- package/src/utils/clickoutside.ts +80 -0
- package/src/utils/crypto.js +25 -0
- 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
|
+
}
|