dlt-for-react 1.0.3 → 1.0.5
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/README.md +4 -1
- package/assets/components/KyCheckButton/index.less +23 -0
- package/assets/components/KyCollapse/index.less +15 -0
- package/assets/components/KyContainerFrame/index.less +21 -0
- package/assets/components/KyEditableTable/index.less +116 -0
- package/assets/components/KyEmpty/index.less +8 -0
- package/assets/components/KyIcon/index.less +6 -0
- package/assets/components/KyMore/index.less +9 -0
- package/assets/components/KyTable/checkbuttons.less +23 -0
- package/assets/components/KyTable/highSearchForm.less +16 -0
- package/assets/components/KyTable/index.less +558 -0
- package/assets/components/KyTitle/index.less +39 -0
- package/assets/images/noData.png +0 -0
- package/lib/components/KyBtnBox/index.js +137 -0
- package/lib/components/KyCheckBox/index.js +361 -0
- package/lib/components/KyCheckButton/index.js +256 -0
- package/lib/components/KyCollapse/index.js +144 -0
- package/lib/components/KyContainerFrame/index.js +239 -0
- package/lib/components/KyEditableTable/component.js +216 -0
- package/lib/components/KyEditableTable/index.js +1537 -0
- package/lib/components/KyEmpty/index.js +102 -0
- package/lib/components/KyExcel/ExcelForm.js +111 -0
- package/lib/components/KyExcel/index.js +601 -0
- package/lib/components/KyIcon/index.js +51 -0
- package/lib/components/KyModal/buildTitle.js +1 -0
- package/lib/components/KyModal/dragM.js +1 -0
- package/lib/components/KyMore/index.js +74 -0
- package/lib/components/KyPreview/index.js +1 -0
- package/lib/components/KyTable/AddFieldsModal.js +360 -0
- package/lib/components/KyTable/action.js +222 -0
- package/lib/components/KyTable/checkButtons.js +244 -0
- package/lib/components/KyTable/data.js +726 -0
- package/lib/components/KyTable/expexcel.js +269 -0
- package/lib/components/KyTable/highSearchForm.js +749 -0
- package/lib/components/KyTable/highSelect.js +313 -0
- package/lib/components/KyTable/index.js +2075 -0
- package/lib/components/KyTable/marqueenText.js +142 -0
- package/lib/components/KyTable/overflowColumn.js +113 -0
- package/lib/components/KyTable/text.js +96 -0
- package/lib/components/KyTable/textGroup.js +108 -0
- package/lib/components/KyTitle/index.js +127 -0
- package/lib/components/KyUpload/index.js +1 -0
- package/lib/index.js +240 -59
- package/lib/layouts/Exception/403/index.js +1 -0
- package/lib/layouts/Exception/403.js +1 -0
- package/lib/layouts/Exception/404.js +1 -0
- package/lib/layouts/Exception/500.js +1 -0
- package/lib/layouts/LeftMenu/index.js +1 -0
- package/lib/layouts/Login/lyPassword.js +1 -0
- package/lib/layouts/NavigationBar/index.js +1 -0
- package/lib/layouts/Top/index.js +1 -0
- package/lib/layouts/TopMenu/index.js +1 -0
- package/lib/layouts/layout/index.js +1 -0
- package/lib/layouts/mixTop/index.js +1 -0
- package/lib/layouts/settingDrawer/colorChange.js +1 -0
- package/lib/layouts/settingDrawer/colorPicker.js +1 -0
- package/lib/utils/MD5.js +256 -0
- package/lib/utils/NHCore.js +273 -0
- package/lib/utils/NHFetch.js +451 -0
- package/lib/utils/common.js +516 -0
- package/lib/utils/createUuid.js +37 -0
- package/lib/utils/equalsObj.js +59 -0
- package/lib/utils/getLoginUser.js +10 -0
- package/lib/utils/getSize.js +27 -0
- package/lib/utils/index.js +804 -0
- package/package.json +2 -2
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.download = exports.specialParams = exports.isArrayFn = exports.deepCopy = exports.filterAuthMenus = exports.filterChildrenMenus = exports.findAuth = exports.handleMenus = exports.deepCheckField = exports.isEmpty = exports.updateDataSource = exports.exactAdd = exports.exactAdd1 = exports.summation = exports.deepTreeChildSum = exports.calcAfterBudgetSum = exports.setBudget = exports.setRowId = exports.deepTreeEditing = exports.deepTree = exports.removeTreeListItem = exports.formatFloat = exports.keepDecimal = exports.convertSmallHump = exports.ellipsis = exports.getOptions = exports.commonDataSource = exports.zipCodeRegExp = exports.emailRegExp = exports.officePhoneRegExp = exports.phoneRegExp = undefined;
|
|
7
|
+
|
|
8
|
+
var _message2 = require('antd/lib/message');
|
|
9
|
+
|
|
10
|
+
var _message3 = _interopRequireDefault(_message2);
|
|
11
|
+
|
|
12
|
+
var _typeof2 = require('babel-runtime/helpers/typeof');
|
|
13
|
+
|
|
14
|
+
var _typeof3 = _interopRequireDefault(_typeof2);
|
|
15
|
+
|
|
16
|
+
var _keys = require('babel-runtime/core-js/object/keys');
|
|
17
|
+
|
|
18
|
+
var _keys2 = _interopRequireDefault(_keys);
|
|
19
|
+
|
|
20
|
+
var _extends2 = require('babel-runtime/helpers/extends');
|
|
21
|
+
|
|
22
|
+
var _extends3 = _interopRequireDefault(_extends2);
|
|
23
|
+
|
|
24
|
+
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
|
|
25
|
+
|
|
26
|
+
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
|
|
27
|
+
|
|
28
|
+
var _select = require('antd/lib/select');
|
|
29
|
+
|
|
30
|
+
var _select2 = _interopRequireDefault(_select);
|
|
31
|
+
|
|
32
|
+
var _arguments = arguments; /*
|
|
33
|
+
* @Description:
|
|
34
|
+
* @Author: jiangzhongxin
|
|
35
|
+
* @Date: 2022-04-29 14:03:50
|
|
36
|
+
* @LastEditors: jiangzhongxin
|
|
37
|
+
* @LastEditTime: 2023-09-28 16:31:07
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
require('antd/lib/message/style');
|
|
41
|
+
|
|
42
|
+
require('antd/lib/select/style');
|
|
43
|
+
|
|
44
|
+
var _NHCore = require('./NHCore');
|
|
45
|
+
|
|
46
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
47
|
+
|
|
48
|
+
var phoneRegExp = exports.phoneRegExp = new RegExp('^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$'
|
|
49
|
+
// '(\\d{11})|^((\\d{7,8})|(\\d{4}|\\d{3})-(\\d{7,8})|(\\d{4}|\\d{3})-(\\d{7,8})-(\\d{4}|\\d{3}|\\d{2}|\\d{1})|(\\d{7,8})-(\\d{4}|\\d{3}|\\d{2}|\\d{1}))$'
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
var officePhoneRegExp = exports.officePhoneRegExp = new RegExp('^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))d{8}$|^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))d{8}$|^0d{2,3}-?d{7,8}$');
|
|
53
|
+
|
|
54
|
+
var emailRegExp = exports.emailRegExp = new RegExp('^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$');
|
|
55
|
+
|
|
56
|
+
var zipCodeRegExp = exports.zipCodeRegExp = new RegExp('^[1-9][0-9]{5}$');
|
|
57
|
+
|
|
58
|
+
var commonDataSource = exports.commonDataSource = [{ value: '1', label: '是' }, { value: '0', label: '否' }];
|
|
59
|
+
|
|
60
|
+
var getOptions = exports.getOptions = function getOptions(data) {
|
|
61
|
+
return data && data.length > 0 ? data.map(function (v, i) {
|
|
62
|
+
return React.createElement(
|
|
63
|
+
_select2.default.Option,
|
|
64
|
+
{ value: v.VALUE || v.value, key: i },
|
|
65
|
+
v.LABEL || v.label
|
|
66
|
+
);
|
|
67
|
+
}) : null;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
var ellipsis = exports.ellipsis = function ellipsis(data) {
|
|
71
|
+
return data && data.length > 0 ? data.map(function (v, i) {
|
|
72
|
+
v.ellipsis = true;
|
|
73
|
+
return v;
|
|
74
|
+
}) : [];
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
var convertSmallHump = exports.convertSmallHump = function convertSmallHump(s) {
|
|
78
|
+
return s.toLowerCase().replace(/_(\w)/g, function (all, letter) {
|
|
79
|
+
return letter.toUpperCase();
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
var keepDecimal = exports.keepDecimal = function keepDecimal(num) {
|
|
84
|
+
var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4;
|
|
85
|
+
|
|
86
|
+
return formatFloat(!isNaN(parseFloat(num)) && isFinite(num) ? num : Number(num), n);
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
var formatFloat = exports.formatFloat = function formatFloat(num, n) {
|
|
90
|
+
if (num === 0) return Number(0).toFixed(n);
|
|
91
|
+
var list = [].concat((0, _toConsumableArray3.default)(Math.round(num * Math.pow(10, n)).toString()));
|
|
92
|
+
if (num < 1) list.unshift('0');
|
|
93
|
+
// 在数组的倒数第n位插入一个小数点
|
|
94
|
+
list.splice(-n, 0, '.');
|
|
95
|
+
return list.join('');
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* 根据id属性从数组(树结构)中移除元素
|
|
100
|
+
* @param {*} treeList
|
|
101
|
+
* @param {*} key
|
|
102
|
+
* @param {*} childField
|
|
103
|
+
* @param {*} keyField
|
|
104
|
+
*/
|
|
105
|
+
var removeTreeListItem = exports.removeTreeListItem = function removeTreeListItem(treeList, key, childField, keyField) {
|
|
106
|
+
var childField = _arguments[2] ? _arguments[2] : 'children';
|
|
107
|
+
var keyField = _arguments[3] ? _arguments[3] : 'id';
|
|
108
|
+
if (!treeList || !treeList.length) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
for (var i = 0; i < treeList.length; i++) {
|
|
112
|
+
if (treeList[i][keyField] === key) {
|
|
113
|
+
treeList.splice(i, 1);
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
removeTreeListItem(treeList[i][childField], key, childField, keyField);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
var deepTree = exports.deepTree = function deepTree(tree, arr) {
|
|
121
|
+
var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'id';
|
|
122
|
+
var children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'children';
|
|
123
|
+
|
|
124
|
+
tree && tree.length > 0 && tree.map(function (x) {
|
|
125
|
+
if (x[key]) {
|
|
126
|
+
arr.push(x[key]);
|
|
127
|
+
}
|
|
128
|
+
if (x && x[children]) {
|
|
129
|
+
deepTree(x[children], arr, key, children);
|
|
130
|
+
}
|
|
131
|
+
return x;
|
|
132
|
+
});
|
|
133
|
+
return arr;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
var deepTreeEditing = exports.deepTreeEditing = function deepTreeEditing(tree, arr) {
|
|
137
|
+
var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'editableOperationFlag';
|
|
138
|
+
var id = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'id';
|
|
139
|
+
var children = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'children';
|
|
140
|
+
|
|
141
|
+
tree && tree.length > 0 && tree.map(function (x) {
|
|
142
|
+
if (x[key]) {
|
|
143
|
+
arr.push(x[id]);
|
|
144
|
+
}
|
|
145
|
+
if (x && x[children]) {
|
|
146
|
+
deepTree(x[children], arr, key, children);
|
|
147
|
+
}
|
|
148
|
+
return x;
|
|
149
|
+
});
|
|
150
|
+
return arr;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
var setRowId = exports.setRowId = function setRowId(tree) {
|
|
154
|
+
var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'rowId';
|
|
155
|
+
var children = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'children';
|
|
156
|
+
|
|
157
|
+
tree && tree.length > 0 && tree.map(function (x, i) {
|
|
158
|
+
x[key] = i + 1;
|
|
159
|
+
if (x && x[children]) {
|
|
160
|
+
setRowId(x[children], key, children);
|
|
161
|
+
}
|
|
162
|
+
return x;
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
var setBudget = exports.setBudget = function setBudget(tree, id, value) {
|
|
167
|
+
var fieldName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'retentionBudget';
|
|
168
|
+
var key = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'id';
|
|
169
|
+
var children = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'children';
|
|
170
|
+
|
|
171
|
+
tree && tree.length > 0 && tree.map(function (x, i) {
|
|
172
|
+
if (x[key] === id) {
|
|
173
|
+
x[fieldName] = value;
|
|
174
|
+
return x;
|
|
175
|
+
} else if (x && x[children]) {
|
|
176
|
+
setBudget(x[children], id, value, fieldName, key, children);
|
|
177
|
+
}
|
|
178
|
+
return x;
|
|
179
|
+
});
|
|
180
|
+
};
|
|
181
|
+
/*******
|
|
182
|
+
* @description: [递归]通过父id计算子元素的预算总和
|
|
183
|
+
* @author: 琴时
|
|
184
|
+
* @param {*} list [递归数组树对象]
|
|
185
|
+
* @param {*} parentId [父级id]
|
|
186
|
+
* @param {*} parentField [父级id字段名]
|
|
187
|
+
* @param {*} childParentField [记录父级id字段名]
|
|
188
|
+
* @param {*} childField [所计算的目标字段名]
|
|
189
|
+
*/
|
|
190
|
+
var calcAfterBudgetSum = exports.calcAfterBudgetSum = function calcAfterBudgetSum(list, parentId, childParentField, childField) {
|
|
191
|
+
var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'id';
|
|
192
|
+
|
|
193
|
+
var loopNode = function loopNode(array) {
|
|
194
|
+
array.some(function (item) {
|
|
195
|
+
if (item[parentField] === parentId) {
|
|
196
|
+
var sum = 0;
|
|
197
|
+
/* 计算当前节点的子元素children里面的预算总和 */
|
|
198
|
+
item.children && item.children.length > 0 && item.children.forEach(function (itemN) {
|
|
199
|
+
sum = exactAdd(sum, Number(itemN[childField] || 0)); //计算子元素总和
|
|
200
|
+
});
|
|
201
|
+
item[childField] = sum.toFixed(4);
|
|
202
|
+
// 若还有上一级节点
|
|
203
|
+
item[childParentField] && calcAfterBudgetSum(list, item[childParentField], childParentField, childField, parentField);
|
|
204
|
+
return true;
|
|
205
|
+
} else if (item.children && item.children.length > 0) {
|
|
206
|
+
loopNode(item.children);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
};
|
|
210
|
+
loopNode(list);
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
/*******
|
|
214
|
+
* @description: [递归]计算树的某字段所有的最后节点总和
|
|
215
|
+
* @author: 琴时
|
|
216
|
+
* @param {Array} list [递归数组树对象]
|
|
217
|
+
* @param {Array} sumList [缓存最后节点值]
|
|
218
|
+
* @param {String} field [子节点名称]
|
|
219
|
+
* @param {String} children [递归节点名称]
|
|
220
|
+
*/
|
|
221
|
+
|
|
222
|
+
var deepTreeChildSum = exports.deepTreeChildSum = function deepTreeChildSum(list, sumList) {
|
|
223
|
+
var field = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'id';
|
|
224
|
+
var children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'children';
|
|
225
|
+
|
|
226
|
+
list.forEach(function (item) {
|
|
227
|
+
if (item[children] && item[children].length > 0) {
|
|
228
|
+
deepTreeChildSum(item[children], sumList, field, children);
|
|
229
|
+
} else if (item[field]) {
|
|
230
|
+
sumList.push(item[field]);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
var summation = exports.summation = function summation(sumList) {
|
|
236
|
+
var sum = 0;
|
|
237
|
+
if (sumList && sumList.length > 0) {
|
|
238
|
+
sum = sumList.reduce(function (n, m) {
|
|
239
|
+
return exactAdd(n, m);
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
return sum;
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* 精确加法
|
|
247
|
+
*/
|
|
248
|
+
var exactAdd1 = exports.exactAdd1 = function exactAdd1(num1, num2) {
|
|
249
|
+
var num1Digits = (num1.toString().split('.')[1] || '').length;
|
|
250
|
+
var num2Digits = (num2.toString().split('.')[1] || '').length;
|
|
251
|
+
var baseNum = Math.pow(10, Math.max(num1Digits, num2Digits));
|
|
252
|
+
return (num1 * baseNum + num2 * baseNum) / baseNum;
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
*加法函数,用来得到精确的加法结果
|
|
257
|
+
* 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
|
|
258
|
+
* 调用:accAdd(arg1,arg2)
|
|
259
|
+
* 返回值:arg1加上arg2的精确结果
|
|
260
|
+
**/
|
|
261
|
+
var exactAdd = exports.exactAdd = function exactAdd(arg1, arg2) {
|
|
262
|
+
if (isNaN(arg1)) {
|
|
263
|
+
arg1 = 0;
|
|
264
|
+
}
|
|
265
|
+
if (isNaN(arg2)) {
|
|
266
|
+
arg2 = 0;
|
|
267
|
+
}
|
|
268
|
+
arg1 = Number(arg1);
|
|
269
|
+
arg2 = Number(arg2);
|
|
270
|
+
var r1, r2, m, c;
|
|
271
|
+
try {
|
|
272
|
+
r1 = arg1.toString().split(".")[1].length;
|
|
273
|
+
} catch (e) {
|
|
274
|
+
r1 = 0;
|
|
275
|
+
}
|
|
276
|
+
try {
|
|
277
|
+
r2 = arg2.toString().split(".")[1].length;
|
|
278
|
+
} catch (e) {
|
|
279
|
+
r2 = 0;
|
|
280
|
+
}
|
|
281
|
+
c = Math.abs(r1 - r2);
|
|
282
|
+
m = Math.pow(10, Math.max(r1, r2));
|
|
283
|
+
if (c > 0) {
|
|
284
|
+
var cm = Math.pow(10, c);
|
|
285
|
+
if (r1 > r2) {
|
|
286
|
+
arg1 = Number(arg1.toString().replace(".", ""));
|
|
287
|
+
arg2 = Number(arg2.toString().replace(".", "")) * cm;
|
|
288
|
+
} else {
|
|
289
|
+
arg1 = Number(arg1.toString().replace(".", "")) * cm;
|
|
290
|
+
arg2 = Number(arg2.toString().replace(".", ""));
|
|
291
|
+
}
|
|
292
|
+
} else {
|
|
293
|
+
arg1 = Number(arg1.toString().replace(".", ""));
|
|
294
|
+
arg2 = Number(arg2.toString().replace(".", ""));
|
|
295
|
+
}
|
|
296
|
+
return (arg1 + arg2) / m;
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
var updateDataSource = exports.updateDataSource = function updateDataSource(dataSource, updateObject, value) {
|
|
300
|
+
var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
301
|
+
var name = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'id';
|
|
302
|
+
|
|
303
|
+
var data = [].concat((0, _toConsumableArray3.default)(dataSource));
|
|
304
|
+
var index = data.findIndex(function (r) {
|
|
305
|
+
return value === r[name];
|
|
306
|
+
});
|
|
307
|
+
if (~index) {
|
|
308
|
+
var item = data[index];
|
|
309
|
+
data.splice(index, 1, (0, _extends3.default)({}, item, updateObject));
|
|
310
|
+
}
|
|
311
|
+
if (callback) {
|
|
312
|
+
callback(data);
|
|
313
|
+
} else {
|
|
314
|
+
return data;
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
/*******
|
|
319
|
+
* @description: 校验空值参数:在判断参数是否为空时,希望把null,undefined,{},[],"",NaN这六类都判定为空
|
|
320
|
+
* @author: 琴时
|
|
321
|
+
* @param {params} [需要校验的参数]
|
|
322
|
+
* @return {*} [返回值:布尔值(空:true,非空:false)]
|
|
323
|
+
*/
|
|
324
|
+
var isEmpty = exports.isEmpty = function isEmpty(params) {
|
|
325
|
+
/* 检验字符串类型 */
|
|
326
|
+
/* 空字符串/字符串null/字符串undefined/字符串{}/字符串[]==>判断为空 */
|
|
327
|
+
var array = ['', 'null', 'undefined', '{}', '[]'];
|
|
328
|
+
if (array.some(function (element) {
|
|
329
|
+
return params === element;
|
|
330
|
+
})) return true;
|
|
331
|
+
if (params === 0 || params === 1) return false; //过滤0/1
|
|
332
|
+
if (!Boolean(params)) return true; //校验undefined/null/NaN
|
|
333
|
+
/* 检验空对象 */
|
|
334
|
+
if (Array.prototype.isPrototypeOf(params) && params.length === 0) return true; //检验空数组[]
|
|
335
|
+
if (Object.prototype.isPrototypeOf(params) && (0, _keys2.default)(params).length === 0) return true; //检验空对象{}
|
|
336
|
+
/* 经过层层判断,确定为非空则返回false */
|
|
337
|
+
return false;
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
/*******
|
|
341
|
+
* @description: 校验数组对象树中是否存在指定的字段为空
|
|
342
|
+
* @author: 琴时
|
|
343
|
+
* @param {*} treeList [校验的数组对象]
|
|
344
|
+
* @param {*} fieldList [校验指定的字段-数组形式]
|
|
345
|
+
* @return {*} 返回存在空的字段数组
|
|
346
|
+
*/
|
|
347
|
+
var deepCheckField = exports.deepCheckField = function deepCheckField(treeList, fieldList) {
|
|
348
|
+
var temp = [];
|
|
349
|
+
var loops = function loops(array, field) {
|
|
350
|
+
array.some(function (item) {
|
|
351
|
+
if (!item[field]) {
|
|
352
|
+
temp.push(field);
|
|
353
|
+
return true;
|
|
354
|
+
} else if (item.children && item.children.length > 0) {
|
|
355
|
+
loops(item.children, field);
|
|
356
|
+
}
|
|
357
|
+
});
|
|
358
|
+
};
|
|
359
|
+
fieldList.forEach(function (field) {
|
|
360
|
+
loops(treeList, field);
|
|
361
|
+
});
|
|
362
|
+
return temp;
|
|
363
|
+
};
|
|
364
|
+
|
|
365
|
+
var handleMenus = exports.handleMenus = function handleMenus(allMenu) {
|
|
366
|
+
var auths = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
367
|
+
var routes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
368
|
+
|
|
369
|
+
//过滤掉没有权限的菜单
|
|
370
|
+
var leftMenu = filterAuthMenus(deepCopy(allMenu), auths, routes);
|
|
371
|
+
//过滤掉没有子项的菜单
|
|
372
|
+
leftMenu = filterChildrenMenus(leftMenu);
|
|
373
|
+
//一个菜单都没有,说明该用户没有访问这个服务的权限
|
|
374
|
+
if (leftMenu.length <= 0) {
|
|
375
|
+
leftMenu.push({
|
|
376
|
+
name: '首页',
|
|
377
|
+
key: '403',
|
|
378
|
+
url: '/403',
|
|
379
|
+
icon: 'home'
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
return leftMenu;
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
var findAuth = exports.findAuth = function findAuth(routes, menu) {
|
|
386
|
+
var authority = undefined;
|
|
387
|
+
var item = routes.find(function (r) {
|
|
388
|
+
return r.path == menu.url;
|
|
389
|
+
});
|
|
390
|
+
if (item && item.authority) {
|
|
391
|
+
authority = item.authority;
|
|
392
|
+
}
|
|
393
|
+
return authority;
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
var filterChildrenMenus = exports.filterChildrenMenus = function filterChildrenMenus(menus) {
|
|
397
|
+
var filterMenus = [];
|
|
398
|
+
menus.map(function (item, index) {
|
|
399
|
+
if (item.children) {
|
|
400
|
+
//存在子菜单,只需要处理子菜单即可
|
|
401
|
+
item.children = filterChildrenMenus(item.children);
|
|
402
|
+
if (item.children.length > 0) {
|
|
403
|
+
filterMenus.push(item);
|
|
404
|
+
}
|
|
405
|
+
} else {
|
|
406
|
+
filterMenus.push(item);
|
|
407
|
+
}
|
|
408
|
+
return item;
|
|
409
|
+
});
|
|
410
|
+
return filterMenus;
|
|
411
|
+
};
|
|
412
|
+
|
|
413
|
+
var filterAuthMenus = exports.filterAuthMenus = function filterAuthMenus(menus, auths, routes) {
|
|
414
|
+
var filterMenus = [];
|
|
415
|
+
menus.map(function (item) {
|
|
416
|
+
// item.key = createUuid();
|
|
417
|
+
var authority = item.authority;
|
|
418
|
+
if (item.url && routes && routes.length > 0) {
|
|
419
|
+
authority = findAuth(routes, item);
|
|
420
|
+
}
|
|
421
|
+
if (item.children) {
|
|
422
|
+
//存在子菜单,只需要处理子菜单即可
|
|
423
|
+
item.children = filterAuthMenus(item.children, auths, routes);
|
|
424
|
+
filterMenus.push(item);
|
|
425
|
+
} else if (authority) {
|
|
426
|
+
//存在权限判断,此时需要判断用户是否有该权限
|
|
427
|
+
if (auths.includes(authority)) {
|
|
428
|
+
filterMenus.push(item);
|
|
429
|
+
}
|
|
430
|
+
} else {
|
|
431
|
+
filterMenus.push(item);
|
|
432
|
+
}
|
|
433
|
+
return item;
|
|
434
|
+
});
|
|
435
|
+
return filterMenus;
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
var deepCopy = exports.deepCopy = function deepCopy(obj) {
|
|
439
|
+
if ((typeof obj === 'undefined' ? 'undefined' : (0, _typeof3.default)(obj)) !== 'object') {
|
|
440
|
+
return obj;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
if (isArrayFn(obj)) {
|
|
444
|
+
var newObj = [];
|
|
445
|
+
for (var i = 0; i < obj.length; i++) {
|
|
446
|
+
newObj.push(deepCopy(obj[i]));
|
|
447
|
+
}
|
|
448
|
+
return newObj;
|
|
449
|
+
} else {
|
|
450
|
+
var _newObj = {};
|
|
451
|
+
for (var attr in obj) {
|
|
452
|
+
_newObj[attr] = deepCopy(obj[attr]);
|
|
453
|
+
}
|
|
454
|
+
return _newObj;
|
|
455
|
+
}
|
|
456
|
+
};
|
|
457
|
+
|
|
458
|
+
var isArrayFn = exports.isArrayFn = function isArrayFn(value) {
|
|
459
|
+
if (typeof value === 'function') {
|
|
460
|
+
return Array.isArray(value);
|
|
461
|
+
} else {
|
|
462
|
+
return Object.prototype.toString.call(value) === '[object Array]';
|
|
463
|
+
}
|
|
464
|
+
};
|
|
465
|
+
|
|
466
|
+
var specialParams = exports.specialParams = {
|
|
467
|
+
specialFunc: function specialFunc(dataIndex, record) {
|
|
468
|
+
return record.authorType === '1' && ['workCompany', 'title', 'degree'].includes(dataIndex);
|
|
469
|
+
}
|
|
470
|
+
};
|
|
471
|
+
|
|
472
|
+
// 下载成绩单
|
|
473
|
+
var download = exports.download = function download(res) {
|
|
474
|
+
var blob = new Blob([res.data]);
|
|
475
|
+
// 提取文件名
|
|
476
|
+
var contentDisposition = '';
|
|
477
|
+
if (res.headers['content-disposition']) {
|
|
478
|
+
contentDisposition = res.headers['content-disposition'];
|
|
479
|
+
}
|
|
480
|
+
if (res.headers['Content-disposition']) {
|
|
481
|
+
contentDisposition = res.headers['Content-disposition'];
|
|
482
|
+
}
|
|
483
|
+
var err = contentDisposition.match(/err=(.*)/);
|
|
484
|
+
if (err && err[1]) {
|
|
485
|
+
_message3.default.error(decodeURI(err[1]));
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
var fileNameArr = contentDisposition.match(/filename=(.*)/);
|
|
489
|
+
if (!fileNameArr || !fileNameArr.length) {
|
|
490
|
+
return false;
|
|
491
|
+
}
|
|
492
|
+
var fileName = fileNameArr[1];
|
|
493
|
+
if (typeof window.navigator.msSaveBlob !== 'undefined') {
|
|
494
|
+
// 兼容IE,window.navigator.msSaveBlob:以本地方式保存文件
|
|
495
|
+
window.navigator.msSaveBlob(blob, decodeURI(fileName));
|
|
496
|
+
} else {
|
|
497
|
+
// 创建新的URL并指向File对象或者Blob对象的地址
|
|
498
|
+
var blobURL = window.URL.createObjectURL(blob);
|
|
499
|
+
// 创建a标签,用于跳转至下载链接
|
|
500
|
+
var tempLink = document.createElement('a');
|
|
501
|
+
tempLink.style.display = 'none';
|
|
502
|
+
tempLink.href = blobURL;
|
|
503
|
+
tempLink.setAttribute('download', decodeURI(fileName));
|
|
504
|
+
// 兼容:某些浏览器不支持HTML5的download属性
|
|
505
|
+
if (typeof tempLink.download === 'undefined') {
|
|
506
|
+
tempLink.setAttribute('target', '_blank');
|
|
507
|
+
}
|
|
508
|
+
// 挂载a标签
|
|
509
|
+
document.body.appendChild(tempLink);
|
|
510
|
+
tempLink.click();
|
|
511
|
+
document.body.removeChild(tempLink);
|
|
512
|
+
// 释放blob URL地址
|
|
513
|
+
window.URL.revokeObjectURL(blobURL);
|
|
514
|
+
}
|
|
515
|
+
return true;
|
|
516
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
//获取UUID
|
|
7
|
+
var createUuid = function createUuid() {
|
|
8
|
+
var chars = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');
|
|
9
|
+
var uuid = [],
|
|
10
|
+
i;
|
|
11
|
+
radix = radix || chars.length;
|
|
12
|
+
|
|
13
|
+
if (len) {
|
|
14
|
+
// Compact form
|
|
15
|
+
for (i = 0; i < len; i++) {
|
|
16
|
+
uuid[i] = chars[0 | Math.random() * radix];
|
|
17
|
+
}
|
|
18
|
+
} else {
|
|
19
|
+
// rfc4122, version 4 form
|
|
20
|
+
var r;
|
|
21
|
+
|
|
22
|
+
// rfc4122 requires these characters
|
|
23
|
+
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
|
|
24
|
+
uuid[14] = '4';
|
|
25
|
+
|
|
26
|
+
// Fill in random data. At i==19 set the high bits of clock sequence as
|
|
27
|
+
// per rfc4122, sec. 4.1.5
|
|
28
|
+
for (i = 0; i < 36; i++) {
|
|
29
|
+
if (!uuid[i]) {
|
|
30
|
+
r = 0 | Math.random() * 16;
|
|
31
|
+
uuid[i] = chars[i == 19 ? r & 0x3 | 0x8 : r];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return uuid.join('');
|
|
36
|
+
};
|
|
37
|
+
exports.default = createUuid;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isArray = exports.isObject = undefined;
|
|
7
|
+
|
|
8
|
+
var _keys = require('babel-runtime/core-js/object/keys');
|
|
9
|
+
|
|
10
|
+
var _keys2 = _interopRequireDefault(_keys);
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
//判断是否为{}形式对象
|
|
15
|
+
var isObject = exports.isObject = function isObject(obj) {
|
|
16
|
+
return Object.prototype.toString.call(obj) === '[object Object]';
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
//判断是否为数组
|
|
20
|
+
var isArray = exports.isArray = function isArray(arr) {
|
|
21
|
+
return Object.prototype.toString.call(arr) === '[object Array]';
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/*******
|
|
25
|
+
* @description: 判断对象是否相同
|
|
26
|
+
* @author: 琴时
|
|
27
|
+
* @param {DataFirst} [比较的第一个参数]
|
|
28
|
+
* @param {DataSecond} [比较的第二个参数]
|
|
29
|
+
* @return {Boolean}
|
|
30
|
+
*/
|
|
31
|
+
var equalsObj = function equalsObj(DataFirst, DataSecond) {
|
|
32
|
+
// 类型为基本类型时,如果相同,则返回true
|
|
33
|
+
if (DataFirst === DataSecond) return true;
|
|
34
|
+
if (isObject(DataFirst) && isObject(DataSecond) && (0, _keys2.default)(DataFirst).length === (0, _keys2.default)(DataSecond).length) {
|
|
35
|
+
// 若两个参数都为对象,先判断对象长度是否相同
|
|
36
|
+
// 遍历对象内元素是否相同
|
|
37
|
+
for (var key in DataFirst) {
|
|
38
|
+
if (DataFirst.hasOwnProperty(key)) {
|
|
39
|
+
if (!equalsObj(DataFirst[key], DataSecond[key]))
|
|
40
|
+
// 对象中具有不相同属性 返回false
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
} else if (isArray(DataFirst) && isArray(DataSecond) && DataFirst.length === DataSecond.length) {
|
|
45
|
+
// 若两个参数都为数组,则先判断数组长度是否相同
|
|
46
|
+
//遍历数组值是否相同
|
|
47
|
+
for (var i = 0, length = DataFirst.length; i < length; i++) {
|
|
48
|
+
if (!equalsObj(DataFirst[i], DataSecond[i])) {
|
|
49
|
+
// 如果数组元素中具有不相同元素,返回false
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
return false; // 其它类型,均返回false
|
|
55
|
+
}
|
|
56
|
+
return true;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
exports.default = equalsObj;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var getLoginUser = function getLoginUser(auth) {
|
|
7
|
+
var loginUser = sessionStorage.getItem('userLogin') ? JSON.parse(sessionStorage.getItem('userLogin')) : { authorization: {}, menus: [] };
|
|
8
|
+
return loginUser;
|
|
9
|
+
};
|
|
10
|
+
exports.default = getLoginUser;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var getSize = function getSize() {
|
|
7
|
+
var setting = sessionStorage.getItem('setting');
|
|
8
|
+
var breadcrumbHeight = 0; //面包屑高度
|
|
9
|
+
if (setting) {
|
|
10
|
+
// 存在布局配置
|
|
11
|
+
var _JSON$parse = JSON.parse(setting),
|
|
12
|
+
layout = _JSON$parse.layout;
|
|
13
|
+
|
|
14
|
+
breadcrumbHeight = layout === 'mixmenu' ? 40 : 0; //若是混合布局 contentH高度需要减去面包屑高度
|
|
15
|
+
}
|
|
16
|
+
var windowW = void 0,
|
|
17
|
+
windowH = void 0,
|
|
18
|
+
contentH = void 0,
|
|
19
|
+
scrollT = void 0;
|
|
20
|
+
windowH = window.innerHeight;
|
|
21
|
+
windowW = window.innerWidth;
|
|
22
|
+
scrollT = document.documentElement.scrollTop || document.body.scrollTop;
|
|
23
|
+
contentH = windowH - 65 - breadcrumbHeight;
|
|
24
|
+
return { windowW: windowW, windowH: windowH, contentH: contentH, scrollT: scrollT };
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
exports.default = getSize;
|