eoss 0.1.0-alpha.4 → 0.1.0-alpha.6

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 (103) hide show
  1. package/lib/account-login.js +3591 -3410
  2. package/lib/autocomplete.js +3585 -3380
  3. package/lib/button-group.js +7675 -7493
  4. package/lib/button.js +3582 -3377
  5. package/lib/ca-login.js +3580 -3375
  6. package/lib/calendar.js +7683 -7501
  7. package/lib/carousel.js +3 -3
  8. package/lib/cascader-panel.js +3612 -3407
  9. package/lib/cascader.js +3612 -3407
  10. package/lib/checkbox-group.js +3563 -3381
  11. package/lib/checkbox.js +70 -70
  12. package/lib/collapse-item.js +3580 -3375
  13. package/lib/color-picker.js +3581 -3376
  14. package/lib/data-table.js +19151 -18970
  15. package/lib/date-picker.js +3579 -3374
  16. package/lib/dialog.js +3582 -3377
  17. package/lib/dropdown.js +7832 -7650
  18. package/lib/email-login.js +3593 -3411
  19. package/lib/eoss.common.js +521 -326
  20. package/lib/flow-group.js +3576 -3366
  21. package/lib/flow.js +4385 -4203
  22. package/lib/form-item.js +3583 -3377
  23. package/lib/form.js +10064 -9883
  24. package/lib/icon.js +3580 -3375
  25. package/lib/image.js +3580 -3375
  26. package/lib/index.js +1 -1
  27. package/lib/index.js.LICENSE.txt +1 -1
  28. package/lib/input-number.js +2563 -2358
  29. package/lib/input.js +3582 -3377
  30. package/lib/loading.js +3582 -3377
  31. package/lib/login.js +5237 -5053
  32. package/lib/main.js +3581 -3402
  33. package/lib/menu-item-group.js +3582 -3377
  34. package/lib/menu-item.js +3582 -3377
  35. package/lib/menu.js +3582 -3377
  36. package/lib/message-box.js +3582 -3377
  37. package/lib/message.js +3582 -3377
  38. package/lib/notification.js +3582 -3377
  39. package/lib/option.js +3601 -3396
  40. package/lib/pagination.js +9907 -9726
  41. package/lib/phone-login.js +3593 -3411
  42. package/lib/popconfirm.js +4794 -4589
  43. package/lib/popover.js +3585 -3380
  44. package/lib/qrcode-login.js +3593 -3411
  45. package/lib/radio-group.js +4389 -4207
  46. package/lib/radio.js +24 -24
  47. package/lib/rate.js +3582 -3377
  48. package/lib/scrollbar.js +3582 -3377
  49. package/lib/select.js +3596 -3415
  50. package/lib/selector-panel.js +3629 -3446
  51. package/lib/selector.js +3597 -3414
  52. package/lib/slider.js +2566 -2361
  53. package/lib/step.js +3580 -3375
  54. package/lib/steps.js +3582 -3377
  55. package/lib/submenu.js +3582 -3377
  56. package/lib/switch.js +3582 -3377
  57. package/lib/table-column.js +3770 -3564
  58. package/lib/table.js +4844 -4662
  59. package/lib/tabs.js +3580 -3375
  60. package/lib/time-picker.js +3581 -3376
  61. package/lib/time-select.js +3581 -3376
  62. package/lib/tips.js +4378 -4196
  63. package/lib/tooltip.js +3582 -3377
  64. package/lib/transfer.js +3563 -3381
  65. package/lib/tree-group.js +3568 -3363
  66. package/lib/tree.js +4652 -4447
  67. package/lib/upload.js +3595 -3413
  68. package/lib/utils/ajax.js +25 -51
  69. package/lib/utils/util.js +330 -132
  70. package/lib/wujie.js +3571 -3363
  71. package/package.json +1 -1
  72. package/packages/autocomplete/src/autocomplete.vue +1 -1
  73. package/packages/carousel/src/item.vue +1 -1
  74. package/packages/carousel/src/main.vue +1 -1
  75. package/packages/checkbox/src/checkbox-group.vue +1 -1
  76. package/packages/checkbox/src/checkbox.vue +29 -29
  77. package/packages/flow-group/src/main.vue +2 -2
  78. package/packages/form/src/form.vue +3 -5
  79. package/packages/input/src/input.vue +2 -2
  80. package/packages/input-number/src/input-number.vue +2 -2
  81. package/packages/login/src/login.vue +4 -4
  82. package/packages/popover/src/main.vue +1 -1
  83. package/packages/radio/src/radio-group.vue +1 -1
  84. package/packages/radio/src/radio.vue +1 -1
  85. package/packages/select/src/select.vue +1 -1
  86. package/packages/slider/src/slider.vue +2 -4
  87. package/packages/table/src/layout-observer.js +5 -5
  88. package/packages/table/src/table-body.js +11 -11
  89. package/packages/table/src/table-column.js +1 -1
  90. package/packages/theme-chalk/package.json +6 -6
  91. package/packages/theme-chalk/src/button.scss +29 -8
  92. package/packages/theme-chalk/src/common/color/colorPalette.scss +5 -5
  93. package/packages/theme-chalk/src/common/var.scss +1 -1
  94. package/packages/theme-chalk/src/dropdown.scss +7 -2
  95. package/packages/theme-chalk/src/link.scss +3 -2
  96. package/packages/theme-chalk/src/mixins/_button.scss +28 -15
  97. package/packages/theme-chalk/src/mixins/color.scss +21 -18
  98. package/packages/theme-chalk/src/mixins/function.scss +108 -44
  99. package/packages/theme-chalk/src/tag.scss +49 -20
  100. package/packages/upload/src/index.vue +2 -2
  101. package/src/index.js +2 -2
  102. package/src/utils/ajax.js +0 -14
  103. package/src/utils/util.js +274 -94
package/lib/utils/util.js CHANGED
@@ -14,15 +14,10 @@ exports.confirm = exports.concatenate = exports.coerceTruthyValueToArray = void
14
14
  exports.debounce = debounce;
15
15
  exports.generateId = exports.formatFileSize = exports.extend = exports.exportXls = exports.exclAttribute = exports.escapeRegexpString = exports.error = exports.encode = exports.downloadFile = exports.domEval = exports.delUrlParam = exports.decode = void 0;
16
16
  exports.get = get;
17
- exports.getParams = exports.getObjectType = exports.getMyWinTop = exports.getLength = exports.getFileType = void 0;
18
- exports.getPropByPath = getPropByPath;
19
- exports.getZoom = exports.getWinTop = exports.getValues = exports.getValueByPath = exports.getTypeName = exports.getStyle = exports.getScript = void 0;
17
+ exports.getZoom = exports.getWinTop = exports.getValues = exports.getValueByPath = exports.getTypeName = exports.getStyle = exports.getScript = exports.getPropByPath = exports.getParams = exports.getObjectType = exports.getMyWinTop = exports.getLength = exports.getFileType = void 0;
20
18
  exports.grouping = grouping;
21
19
  exports.guid = guid;
22
- exports.hasChars = void 0;
23
- exports.hasOwn = hasOwn;
24
- exports.lowerCase = exports.looseEqual = exports.loading = exports.loadJs = exports.kebabCase = exports.joinUrl = exports.isObjectEqual = exports.isIE = exports.isFunction = exports.isFirefox = exports.isExist = exports.isEqual = exports.isEmpty = exports.isEdge = exports.indexOfObj = exports.identical = void 0;
25
- exports.noop = noop;
20
+ exports.noop = exports.lowerCase = exports.looseEqual = exports.loading = exports.loadJs = exports.kebabCase = exports.joinUrl = exports.isObjectEqual = exports.isIE = exports.isFunction = exports.isFirefox = exports.isExist = exports.isEqual = exports.isEmpty = exports.isEdge = exports.indexOfObj = exports.identical = exports.hasOwn = exports.hasChars = void 0;
26
21
  exports.objToArray = objToArray;
27
22
  exports.overbrim = void 0;
28
23
  exports.pager = pager;
@@ -32,9 +27,7 @@ exports.sendMessage = exports.rmbToCapital = exports.requestAnimationFrame = exp
32
27
  exports.set = set;
33
28
  exports.takeRight = exports.takeLeft = exports.sum = exports.success = exports.startWith = exports.setScale = exports.setFavicon = void 0;
34
29
  exports.throttle = throttle;
35
- exports.toFunction = exports.toFixed = exports.timestampUrl = void 0;
36
- exports.toObject = toObject;
37
- exports.trimWhitespace = void 0;
30
+ exports.trimWhitespace = exports.toObject = exports.toFunction = exports.toFixed = exports.timestampUrl = void 0;
38
31
  exports.uid = uid;
39
32
  exports.winTopOpen = exports.watermark = exports.warning = exports.valueEquals = exports.uuid = exports.urlJoinParams = exports.upperType = exports.updateTheme = void 0;
40
33
  var _isArray = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/is-array"));
@@ -47,11 +40,11 @@ var _setTimeout2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-j
47
40
  var _lastIndexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/last-index-of"));
48
41
  var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
49
42
  var _sort = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/sort"));
43
+ var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
50
44
  var _every = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/every"));
51
45
  var _isFinite = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/number/is-finite"));
52
46
  var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
53
47
  var _parseFloat2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/parse-float"));
54
- var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
55
48
  var _endsWith = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/ends-with"));
56
49
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/map"));
57
50
  var _url = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/url"));
@@ -68,9 +61,9 @@ var _types = require("./types");
68
61
  var _messageBox = _interopRequireDefault(require("../../packages/message-box"));
69
62
  var _date = require("./date");
70
63
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
71
- function _extends() { var _context8; return _extends = _Object$assign ? _bindInstanceProperty(_context8 = _Object$assign).call(_context8) : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
72
- function _createForOfIteratorHelperLoose(r, e) { var _context7; var t = "undefined" != typeof _Symbol && _getIteratorMethod(r) || r["@@iterator"]; if (t) return _bindInstanceProperty(_context7 = (t = t.call(r)).next).call(_context7, t); if (_Array$isArray2(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
73
- function _unsupportedIterableToArray(r, a) { if (r) { var _context6; if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = _sliceInstanceProperty2(_context6 = {}.toString.call(r)).call(_context6, 8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? _Array$from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
64
+ function _extends() { var _context0; return _extends = _Object$assign ? _bindInstanceProperty(_context0 = _Object$assign).call(_context0) : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
65
+ function _createForOfIteratorHelperLoose(r, e) { var _context9; var t = "undefined" != typeof _Symbol && _getIteratorMethod(r) || r["@@iterator"]; if (t) return _bindInstanceProperty(_context9 = (t = t.call(r)).next).call(_context9, t); if (_Array$isArray2(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
66
+ function _unsupportedIterableToArray(r, a) { if (r) { var _context8; if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = _sliceInstanceProperty2(_context8 = {}.toString.call(r)).call(_context8, 8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? _Array$from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
74
67
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
75
68
  function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); }
76
69
  var _get = require('lodash/get');
@@ -81,22 +74,57 @@ var hasOwnProperty = Object.prototype.hasOwnProperty;
81
74
  // 导入date中的formatDate函数
82
75
 
83
76
  var publicKey = 'abcdefghijklmnopqrstuvwxyz12345678';
84
- function noop() {}
85
- ;
86
- function hasOwn(obj, key) {
77
+
78
+ /**
79
+ * 空函数
80
+ * @desc 不执行任何操作的空函数
81
+ * @return {undefined}
82
+ **/
83
+ var noop = exports.noop = function noop() {};
84
+
85
+ /**
86
+ * 检查对象是否拥有指定属性
87
+ * @desc 检查对象自身是否包含指定的属性(不包括原型链上的属性)
88
+ * @param {Object} obj - 要检查的对象
89
+ * @param {string} key - 要检查的属性名
90
+ * @return {boolean} 是否拥有该属性
91
+ **/
92
+ var hasOwn = exports.hasOwn = function hasOwn(obj, key) {
93
+ if (!(0, _types.isObject)(obj) && typeof obj !== 'object') {
94
+ return false;
95
+ }
87
96
  return hasOwnProperty.call(obj, key);
88
- }
89
- ;
90
- function toObject(arr) {
97
+ };
98
+
99
+ /**
100
+ * 将数组转换为对象
101
+ * @desc 将对象数组合并为一个对象
102
+ * @param {Array} [arr=[]] - 对象数组
103
+ * @return {Object} 合并后的对象
104
+ **/
105
+ var toObject = exports.toObject = function toObject(arr) {
106
+ if (arr === void 0) {
107
+ arr = [];
108
+ }
91
109
  var res = {};
110
+ if (!(0, _isArray.default)(arr)) {
111
+ return res;
112
+ }
92
113
  for (var i = 0; i < arr.length; i++) {
93
114
  if (arr[i]) {
94
115
  _extend(res, arr[i]);
95
116
  }
96
117
  }
97
118
  return res;
98
- }
99
- ;
119
+ };
120
+
121
+ /**
122
+ * 根据路径获取对象属性值
123
+ * @desc 根据点分隔的路径字符串获取对象中的属性值
124
+ * @param {Object} object - 源对象
125
+ * @param {string} prop - 属性路径(如 'a.b.c')
126
+ * @return {*} 获取到的属性值,如果路径不存在则返回null
127
+ **/
100
128
  var getValueByPath = exports.getValueByPath = function getValueByPath(object, prop) {
101
129
  if (Object.prototype.toString.call(object).toLowerCase() !== '[object object]') {
102
130
  return object;
@@ -116,7 +144,33 @@ var getValueByPath = exports.getValueByPath = function getValueByPath(object, pr
116
144
  }
117
145
  return result;
118
146
  };
119
- function getPropByPath(obj, path, strict) {
147
+
148
+ /**
149
+ * 获取属性路径信息
150
+ * @desc 获取对象属性路径的详细信息,包括父对象、属性名和属性值
151
+ * @param {Object} obj - 源对象
152
+ * @param {string} path - 属性路径(如 'a.b.c' 或 'a[0].b')
153
+ * @param {boolean} [strict=false] - 是否严格模式,严格模式下路径不存在会抛出错误
154
+ * @return {Object} 包含父对象(o)、属性名(k)和属性值(v)的对象
155
+ **/
156
+ var getPropByPath = exports.getPropByPath = function getPropByPath(obj, path, strict) {
157
+ if (strict === void 0) {
158
+ strict = false;
159
+ }
160
+ if (!(0, _types.isObject)(obj) && typeof obj !== 'object') {
161
+ return {
162
+ o: null,
163
+ k: '',
164
+ v: null
165
+ };
166
+ }
167
+ if (!(0, _types.isString)(path)) {
168
+ return {
169
+ o: obj,
170
+ k: '',
171
+ v: null
172
+ };
173
+ }
120
174
  var tempObj = obj;
121
175
  path = path.replace(/\[(\w+)\]/g, '.$1');
122
176
  path = path.replace(/^\./, '');
@@ -139,11 +193,24 @@ function getPropByPath(obj, path, strict) {
139
193
  k: keyArr[i],
140
194
  v: tempObj ? tempObj[keyArr[i]] : null
141
195
  };
142
- }
143
- ;
196
+ };
197
+
198
+ /**
199
+ * 生成随机ID
200
+ * @desc 生成一个1-9999之间的随机整数作为ID
201
+ * @return {number} 随机ID
202
+ **/
144
203
  var generateId = exports.generateId = function generateId() {
145
204
  return Math.floor(Math.random() * 10000);
146
205
  };
206
+
207
+ /**
208
+ * 检查两个数组是否值相等
209
+ * @desc 深度比较两个数组是否包含相同的元素(严格相等比较)
210
+ * @param {Array} a - 第一个数组
211
+ * @param {Array} b - 第二个数组
212
+ * @return {boolean} 数组是否值相等
213
+ **/
147
214
  var valueEquals = exports.valueEquals = function valueEquals(a, b) {
148
215
  // see: https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
149
216
  if (a === b) return true;
@@ -155,6 +222,13 @@ var valueEquals = exports.valueEquals = function valueEquals(a, b) {
155
222
  }
156
223
  return true;
157
224
  };
225
+
226
+ /**
227
+ * 转义正则表达式特殊字符
228
+ * @desc 将字符串中的正则表达式特殊字符转义,使其可以安全地用于正则表达式
229
+ * @param {*} [value=''] - 要转义的字符串
230
+ * @return {string} 转义后的字符串
231
+ **/
158
232
  var escapeRegexpString = exports.escapeRegexpString = function escapeRegexpString(value) {
159
233
  if (value === void 0) {
160
234
  value = '';
@@ -163,7 +237,20 @@ var escapeRegexpString = exports.escapeRegexpString = function escapeRegexpStrin
163
237
  };
164
238
 
165
239
  // TODO: use native Array.find, Array.findIndex when IE support is dropped
240
+ /**
241
+ * 查找数组中符合条件的元素索引
242
+ * @desc 查找数组中第一个满足测试函数的元素的索引
243
+ * @param {Array} arr - 要查找的数组
244
+ * @param {Function} pred - 测试函数,返回true表示找到匹配元素
245
+ * @return {number} 找到的元素索引,未找到返回-1
246
+ **/
166
247
  var arrayFindIndex = exports.arrayFindIndex = function arrayFindIndex(arr, pred) {
248
+ if (!(0, _isArray.default)(arr)) {
249
+ return -1;
250
+ }
251
+ if (typeof pred !== 'function') {
252
+ return -1;
253
+ }
167
254
  for (var i = 0; i !== arr.length; ++i) {
168
255
  if (pred(arr[i])) {
169
256
  return i;
@@ -171,12 +258,32 @@ var arrayFindIndex = exports.arrayFindIndex = function arrayFindIndex(arr, pred)
171
258
  }
172
259
  return -1;
173
260
  };
261
+
262
+ /**
263
+ * 查找数组中符合条件的元素
264
+ * @desc 查找数组中第一个满足测试函数的元素
265
+ * @param {Array} arr - 要查找的数组
266
+ * @param {Function} pred - 测试函数,返回true表示找到匹配元素
267
+ * @return {*} 找到的元素,未找到返回undefined
268
+ **/
174
269
  var arrayFind = exports.arrayFind = function arrayFind(arr, pred) {
270
+ if (!(0, _isArray.default)(arr)) {
271
+ return undefined;
272
+ }
273
+ if (typeof pred !== 'function') {
274
+ return undefined;
275
+ }
175
276
  var idx = arrayFindIndex(arr, pred);
176
277
  return idx !== -1 ? arr[idx] : undefined;
177
278
  };
178
279
 
179
280
  // coerce truthy value to array
281
+ /**
282
+ * 将真值转换为数组
283
+ * @desc 如果输入是数组则直接返回,否则将真值包装为数组,假值返回空数组
284
+ * @param {*} val - 要转换的值
285
+ * @return {Array} 转换后的数组
286
+ **/
180
287
  var coerceTruthyValueToArray = exports.coerceTruthyValueToArray = function coerceTruthyValueToArray(val) {
181
288
  if ((0, _isArray.default)(val)) {
182
289
  return val;
@@ -282,7 +389,7 @@ function objToArray(obj) {
282
389
  }
283
390
 
284
391
  // requestAnimationFrame 适配函数
285
- var raFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || function (callback) {
392
+ var raFrame = window.requestAnimationFrame || window['webkitRequestAnimationFrame'] || function (callback) {
286
393
  return (0, _setTimeout2.default)(callback, 1000 / 60);
287
394
  };
288
395
 
@@ -315,7 +422,7 @@ var requestAnimationFrame = exports.requestAnimationFrame = raFrame;
315
422
  * })
316
423
  * cancelAnimationFrame(id)
317
424
  */
318
- var cancelAnimationFrame = exports.cancelAnimationFrame = window.cancelAnimationFrame || window.webkitRequestAnimationFrame || function (id) {
425
+ var cancelAnimationFrame = exports.cancelAnimationFrame = window.cancelAnimationFrame || window['webkitCancelAnimationFrame'] || function (id) {
319
426
  window.clearTimeout(id);
320
427
  };
321
428
 
@@ -499,7 +606,8 @@ function pager(data, page, size) {
499
606
  /**
500
607
  * getWinTop
501
608
  * @desc 获取同域的top窗口
502
- * @param {object} wind - window对象
609
+ * @param {object} [wind] - window对象
610
+ * @return {Window} 同域的top窗口
503
611
  **/
504
612
  var _getWinTop = exports.getWinTop = function getWinTop(wind) {
505
613
  wind = wind ? wind : window.__WUJIE_RAW_WINDOW__ ? window.__WUJIE_RAW_WINDOW__ : window;
@@ -645,28 +753,35 @@ var getFileType = exports.getFileType = function getFileType(fileName) {
645
753
 
646
754
  /**
647
755
  * arrUnique
648
- * @desc:数组元素对象去重
756
+ * @desc 数组元素对象去重
649
757
  * @author huangbo
650
758
  * @date 2022年5月7日
651
- * @param {Object} [data] - 原始数组
759
+ * @param {Array} [data] - 原始数组
652
760
  * @param {String} [key] - 对象子元素的属性名
761
+ * @return {Array} 去重后的数组
653
762
  **/
654
763
  var arrUnique = exports.arrUnique = function arrUnique(data, key) {
764
+ // 验证输入参数
765
+ if (!(0, _isArray.default)(data) || data.length === 0) return [];
655
766
  var newArr = [];
656
767
  if (key === undefined) {
657
- (0, _sort.default)(data).call(data);
658
- newArr = [data[0]];
659
- for (var i = 1; i < data.length; i++) {
660
- if (data[i] !== newArr[newArr.length - 1]) {
661
- newArr.push(data[i]);
768
+ var _context2, _context3;
769
+ // 对基本类型数组去重
770
+ var sortedData = (0, _sort.default)(_context2 = (0, _concat.default)(_context3 = []).call(_context3, data)).call(_context2); // 避免修改原数组
771
+ newArr = [sortedData[0]];
772
+ for (var i = 1; i < sortedData.length; i++) {
773
+ if (sortedData[i] !== newArr[newArr.length - 1]) {
774
+ newArr.push(sortedData[i]);
662
775
  }
663
776
  }
664
777
  } else {
778
+ // 对对象数组按指定键去重
665
779
  var obj = {};
666
780
  for (var _i = 0; _i < data.length; _i++) {
667
- if (!obj[data[_i][key]]) {
668
- newArr.push(data[_i]);
669
- obj[data[_i][key]] = true;
781
+ var item = data[_i];
782
+ if (item && obj[item[key]] === undefined) {
783
+ newArr.push(item);
784
+ obj[item[key]] = true;
670
785
  }
671
786
  }
672
787
  }
@@ -685,17 +800,19 @@ var average = exports.average = function average() {
685
800
  for (var _len2 = arguments.length, numbers = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
686
801
  numbers[_key2] = arguments[_key2];
687
802
  }
688
- // Ensure that all arguments are valid numbers
803
+ // 处理空参数情况
804
+ if (numbers.length === 0) return 0;
805
+
806
+ // 确保所有参数都是有效数字
689
807
  if (!(0, _every.default)(numbers).call(numbers, _isFinite.default)) {
690
808
  throw new Error('Invalid input. Please provide valid numbers.');
691
809
  }
692
810
 
693
- // Calculate the average of the numbers
811
+ // 计算平均值
694
812
  var sum = (0, _reduce.default)(numbers).call(numbers, function (acc, num) {
695
813
  return acc + num;
696
814
  }, 0);
697
- var average = sum / numbers.length;
698
- return average;
815
+ return sum / numbers.length;
699
816
  };
700
817
 
701
818
  /**
@@ -711,7 +828,9 @@ var formatFileSize = exports.formatFileSize = function formatFileSize(size, digi
711
828
  if (digits === void 0) {
712
829
  digits = 2;
713
830
  }
714
- if (size === 0) return '';
831
+ // 验证输入参数
832
+ if (size === 0 || typeof size !== 'number' || isNaN(size)) return '';
833
+ if (typeof digits !== 'number' || isNaN(digits)) digits = 2;
715
834
  var k = 1024;
716
835
  var sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
717
836
  var i = Math.floor(Math.log(size) / Math.log(k));
@@ -724,9 +843,10 @@ var formatFileSize = exports.formatFileSize = function formatFileSize(size, digi
724
843
 
725
844
  /**
726
845
  * browser
727
- * @desc:浏览器类型
846
+ * @desc 浏览器类型
728
847
  * @author huangbo
729
848
  * @date 2022年5月7日
849
+ * @return {string|undefined} 浏览器类型标识
730
850
  **/
731
851
  var browser = exports.browser = function browser() {
732
852
  var reg = {
@@ -744,9 +864,14 @@ var browser = exports.browser = function browser() {
744
864
 
745
865
  /**
746
866
  * busEmit
747
- * @desc:发送事件
867
+ * @desc 发送事件
748
868
  * @author huangbo
749
869
  * @date 2022年5月7日
870
+ * @param {Object} that - Vue实例或包含bus的对象
871
+ * @param {Object} options - 事件选项
872
+ * @param {string} options.method - 事件名称
873
+ * @param {Array|*} options.args - 事件参数
874
+ * @param {Object} [options.opener] - 窗口对象(用于跨窗口通信)
750
875
  **/
751
876
  var busEmit = exports.busEmit = function busEmit(that, _ref) {
752
877
  var method = _ref.method,
@@ -763,7 +888,7 @@ var busEmit = exports.busEmit = function busEmit(that, _ref) {
763
888
  return;
764
889
  }
765
890
  if (isIE()) {
766
- var _context2;
891
+ var _context4;
767
892
  if (window.top !== window.self) {
768
893
  window.top.postMessage({
769
894
  method: method,
@@ -773,14 +898,14 @@ var busEmit = exports.busEmit = function busEmit(that, _ref) {
773
898
  return;
774
899
  }
775
900
  var bus = that ? that.bus || that.$root.Bus || that.$root.$bus : null;
776
- bus && ((0, _isArray.default)(args) ? bus.$emit.apply(bus, (0, _concat.default)(_context2 = [method]).call(_context2, args)) : bus.$emit(method, args));
901
+ bus && ((0, _isArray.default)(args) ? bus.$emit.apply(bus, (0, _concat.default)(_context4 = [method]).call(_context4, args)) : bus.$emit(method, args));
777
902
  } else {
778
- var _context4;
903
+ var _context6;
779
904
  if (window.top !== window.self) {
780
905
  var _bus = window.$wujie ? window.$wujie.bus : null;
781
906
  if (_bus) {
782
- var _context3;
783
- (0, _isArray.default)(args) ? _bus.$emit.apply(_bus, (0, _concat.default)(_context3 = [method]).call(_context3, args)) : _bus.$emit(method, args);
907
+ var _context5;
908
+ (0, _isArray.default)(args) ? _bus.$emit.apply(_bus, (0, _concat.default)(_context5 = [method]).call(_context5, args)) : _bus.$emit(method, args);
784
909
  } else {
785
910
  window.top.postMessage({
786
911
  method: method,
@@ -791,7 +916,7 @@ var busEmit = exports.busEmit = function busEmit(that, _ref) {
791
916
  return;
792
917
  }
793
918
  var _bus2 = that ? that.bus || that.$root.Bus || that.$root.$bus : null;
794
- _bus2 && ((0, _isArray.default)(args) ? _bus2.$emit.apply(_bus2, (0, _concat.default)(_context4 = [method]).call(_context4, args)) : _bus2.$emit(method, args));
919
+ _bus2 && ((0, _isArray.default)(args) ? _bus2.$emit.apply(_bus2, (0, _concat.default)(_context6 = [method]).call(_context6, args)) : _bus2.$emit(method, args));
795
920
  }
796
921
  };
797
922
 
@@ -799,6 +924,7 @@ var busEmit = exports.busEmit = function busEmit(that, _ref) {
799
924
  * chunkToChinese
800
925
  * @desc 将四位数的整数转换为中文大写
801
926
  * @param {number} chunk - 数字
927
+ * @return {string} 中文大写数字
802
928
  **/
803
929
  var chunkToChinese = exports.chunkToChinese = function chunkToChinese(chunk) {
804
930
  var numberToChinese = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
@@ -823,7 +949,6 @@ var chunkToChinese = exports.chunkToChinese = function chunkToChinese(chunk) {
823
949
 
824
950
  /**
825
951
  * concatenate
826
- * @desc 指定连接符合并文本
827
952
  * @desc 使用指定的连接符合并文本字符串
828
953
  * @author SuTao
829
954
  * @date 2023年12月14日
@@ -845,11 +970,13 @@ var concatenate = exports.concatenate = function concatenate(separator) {
845
970
 
846
971
  /**
847
972
  * delUrlParam
848
- * @desc:删除url指定参数
973
+ * @desc 删除url指定参数
849
974
  * @author huangbo
850
975
  * @date 2022年5月7日
851
- * @param {String} [url] - url地址
852
- * @param {String,Array} [key] - 参数名
976
+ * @param {Object} options - 参数选项
977
+ * @param {String} [options.url] - url地址
978
+ * @param {String|Array} [options.key] - 参数名
979
+ * @return {string} 删除参数后的url
853
980
  **/
854
981
  var delUrlParam = exports.delUrlParam = function delUrlParam(_ref2) {
855
982
  var url = _ref2.url,
@@ -897,7 +1024,7 @@ var delUrlParam = exports.delUrlParam = function delUrlParam(_ref2) {
897
1024
 
898
1025
  /**
899
1026
  * domEval
900
- * @desc:添加js内容
1027
+ * @desc 添加js内容
901
1028
  * @author huangbo
902
1029
  * @date 2022年5月7日
903
1030
  * @param {String} [code] - js内容
@@ -910,10 +1037,10 @@ var domEval = exports.domEval = function domEval(code) {
910
1037
 
911
1038
  /**
912
1039
  * downloadFile
913
- * @desc:下载附件
1040
+ * @desc 下载附件
914
1041
  * @author huangbo
915
1042
  * @date 2022年5月7日
916
- * @param {String} [code] - js内容
1043
+ * @param {String} fileUrl - 文件下载地址
917
1044
  **/
918
1045
  var downloadFile = exports.downloadFile = function downloadFile(fileUrl) {
919
1046
  var link = document.createElement('a');
@@ -927,10 +1054,11 @@ var downloadFile = exports.downloadFile = function downloadFile(fileUrl) {
927
1054
 
928
1055
  /**
929
1056
  * encode
930
- * @desc:加密
1057
+ * @desc 加密
931
1058
  * @author huangbo
932
1059
  * @date 2022年5月7日
933
- * @param {string} [data] - 被加密的字符串
1060
+ * @param {string} value - 被加密的字符串
1061
+ * @return {string} 加密后的字符串
934
1062
  **/
935
1063
  var encode = exports.encode = function encode(value) {
936
1064
  var kleng = publicKey.length;
@@ -954,11 +1082,11 @@ var encode = exports.encode = function encode(value) {
954
1082
 
955
1083
  /**
956
1084
  * decode
957
- * @desc:解密
1085
+ * @desc 解密
958
1086
  * @author huangbo
959
1087
  * @date 2022年5月7日
960
- * @param {string} [value] - 被解密的加密字符串
961
- * @param {string} [key] - 私钥
1088
+ * @param {string} value - 被解密的加密字符串
1089
+ * @return {string} 解密后的字符串
962
1090
  **/
963
1091
  var decode = exports.decode = function decode(value) {
964
1092
  var kleng = publicKey.length;
@@ -985,11 +1113,14 @@ var decode = exports.decode = function decode(value) {
985
1113
  };
986
1114
 
987
1115
  /**
988
- * 排除属性
989
- * @desc:exclAttribute
1116
+ * exclAttribute
1117
+ * @desc 排除对象中的指定属性
990
1118
  * @author huangbo
991
1119
  * @date 2022年5月7日
992
- * @param {String/Array} [attrs] - 要排除的属性
1120
+ * @param {Object} options - 参数选项
1121
+ * @param {String|Array} [options.attrs='value'] - 要排除的属性
1122
+ * @param {Object} options.data - 源对象
1123
+ * @return {Object} 排除属性后的新对象
993
1124
  **/
994
1125
  // 用于缓存exclAttribute的结果
995
1126
  var _exclAttributeCache = new _map.default();
@@ -1035,8 +1166,9 @@ var exclAttribute = exports.exclAttribute = function exclAttribute(_ref3) {
1035
1166
  * @desc 导出表格数据
1036
1167
  * @author huangbo
1037
1168
  * @date 2022年5月7日
1038
- * @param {Object} [data] - 导出数据
1039
- * @param {String} [name] - 文件名
1169
+ * @param {Object} options - 参数选项
1170
+ * @param {Object} options.data - 导出数据
1171
+ * @param {String} [options.name] - 文件名
1040
1172
  **/
1041
1173
  var exportXls = exports.exportXls = function exportXls(_ref4) {
1042
1174
  var data = _ref4.data,
@@ -1070,6 +1202,7 @@ var exportXls = exports.exportXls = function exportXls(_ref4) {
1070
1202
  * @param {Boolean} [deep] - 是否深拷贝
1071
1203
  * @param {Object} [target] - 目标对象
1072
1204
  * @param {...Object} [source] - 源对象
1205
+ * @return {Object} 拷贝后的对象
1073
1206
  **/
1074
1207
  var _extend = exports.extend = function extend() {
1075
1208
  // target目标对象 source源对象
@@ -1126,7 +1259,8 @@ var _extend = exports.extend = function extend() {
1126
1259
  * @desc 获取数据类型
1127
1260
  * @author huangbo
1128
1261
  * @date 2022年5月7日
1129
- * @param {Any} [obj] - 任意值
1262
+ * @param {*} [obj] - 任意值
1263
+ * @return {string} 数据类型
1130
1264
  **/
1131
1265
  var getObjectType = exports.getObjectType = function getObjectType(obj) {
1132
1266
  return Object.prototype.toString.call(obj).replace(/\[object (.*)\]/, '$1').toLowerCase();
@@ -1137,10 +1271,15 @@ var getObjectType = exports.getObjectType = function getObjectType(obj) {
1137
1271
  * @desc 获取URL参数
1138
1272
  * @author huangbo
1139
1273
  * @date 2022年5月7日
1140
- * @param {String} [url] - url地址
1274
+ * @param {Object} options - 参数配置对象
1275
+ * @param {String} [options.url] - url地址,可选
1276
+ * @param {String} [options.name] - 参数名,可选
1277
+ * @return {Object|string} 参数对象或指定参数值
1141
1278
  **/
1142
- var getParams = exports.getParams = function getParams(key, url) {
1143
- var _context5;
1279
+ var getParams = exports.getParams = function getParams(_temp) {
1280
+ var _ref5 = _temp === void 0 ? {} : _temp,
1281
+ url = _ref5.url,
1282
+ name = _ref5.name;
1144
1283
  var href = '';
1145
1284
  try {
1146
1285
  href = window.top.location.href;
@@ -1148,17 +1287,30 @@ var getParams = exports.getParams = function getParams(key, url) {
1148
1287
  href = window.location.href;
1149
1288
  }
1150
1289
  var paramStr = (url || href).split('?')[1] || '';
1151
- if (!paramStr) return '';
1152
1290
  var params = {};
1153
- (0, _forEach.default)(_context5 = paramStr.split('&')).call(_context5, function (item) {
1154
- var _item$split = item.split('='),
1155
- k = _item$split[0],
1156
- value = _item$split[1];
1157
- if (k) {
1158
- params[decodeURIComponent(k)] = decodeURIComponent(value || '');
1159
- }
1160
- });
1161
- return key ? params[key] || '' : params;
1291
+ if (paramStr) {
1292
+ var _context7;
1293
+ (0, _forEach.default)(_context7 = paramStr.split('&')).call(_context7, function (item) {
1294
+ var _item$split = item.split('='),
1295
+ k = _item$split[0],
1296
+ value = _item$split[1];
1297
+ if (k) {
1298
+ var decodedKey = decodeURIComponent(k);
1299
+ var decodedValue = decodeURIComponent(value || '');
1300
+
1301
+ // 处理重复参数,保存为数组
1302
+ if (params[decodedKey] !== undefined) {
1303
+ if (!(0, _isArray.default)(params[decodedKey])) {
1304
+ params[decodedKey] = [params[decodedKey]];
1305
+ }
1306
+ params[decodedKey].push(decodedValue);
1307
+ } else {
1308
+ params[decodedKey] = decodedValue;
1309
+ }
1310
+ }
1311
+ });
1312
+ }
1313
+ return name ? params[name] || '' : params;
1162
1314
  };
1163
1315
 
1164
1316
  /**
@@ -1166,7 +1318,8 @@ var getParams = exports.getParams = function getParams(key, url) {
1166
1318
  * @desc 获取并执行JS文件
1167
1319
  * @author huangbo
1168
1320
  * @date 2022年5月7日
1169
- * @param {String} [url] - 脚本地址
1321
+ * @param {String} url - 脚本地址
1322
+ * @return {Promise} Promise对象
1170
1323
  **/
1171
1324
  var getScript = exports.getScript = function getScript(url) {
1172
1325
  return new _promise.default(function (resolve, reject) {
@@ -1191,6 +1344,7 @@ var getScript = exports.getScript = function getScript(url) {
1191
1344
  * @date 2022年5月7日
1192
1345
  * @param {Element} [el] - dom元素
1193
1346
  * @param {String} [style] - 样式名称
1347
+ * @return {string} 样式值
1194
1348
  **/
1195
1349
  var getStyle = exports.getStyle = function getStyle(el, style) {
1196
1350
  if (!el || !style) return '';
@@ -1215,6 +1369,7 @@ var getStyle = exports.getStyle = function getStyle(el, style) {
1215
1369
  * @author huangbo
1216
1370
  * @date 2022年5月7日
1217
1371
  * @param {String} [type] - 类型
1372
+ * @return {string} 转换后的类型文本
1218
1373
  **/
1219
1374
  var getTypeName = exports.getTypeName = function getTypeName(type) {
1220
1375
  if (!type) return '';
@@ -1240,8 +1395,9 @@ var getTypeName = exports.getTypeName = function getTypeName(type) {
1240
1395
  * @desc 处理数据获取值
1241
1396
  * @author huangbo
1242
1397
  * @date 2022年5月7日
1243
- * @param {Any} [obj] - 数据源
1398
+ * @param {Object} [obj] - 数据源
1244
1399
  * @param {String} [key] - 键名,支持a.b.c形式
1400
+ * @return {*} 获取的值
1245
1401
  **/
1246
1402
  var getValues = exports.getValues = function getValues(obj, key) {
1247
1403
  if (!obj || !key) return obj;
@@ -1259,6 +1415,7 @@ var getValues = exports.getValues = function getValues(obj, key) {
1259
1415
  * @desc 获取缩放比
1260
1416
  * @author huangbo
1261
1417
  * @date 2022年5月7日
1418
+ * @return {number} 缩放比例
1262
1419
  **/
1263
1420
  var getZoom = exports.getZoom = function getZoom() {
1264
1421
  // 获取当前页面的缩放比例
@@ -1289,6 +1446,7 @@ var getZoom = exports.getZoom = function getZoom() {
1289
1446
  * @desc 获取同域top窗口
1290
1447
  * @author huangbo
1291
1448
  * @date 2022年5月7日
1449
+ * @return {Window} 同域的top窗口
1292
1450
  **/
1293
1451
  var getMyWinTop = exports.getMyWinTop = function getMyWinTop() {
1294
1452
  var win = window.__WUJIE_RAW_WINDOW__ ? window.__WUJIE_RAW_WINDOW__ : window;
@@ -1312,6 +1470,7 @@ var getMyWinTop = exports.getMyWinTop = function getMyWinTop() {
1312
1470
  * @author huangbo
1313
1471
  * @date 2022年5月7日
1314
1472
  * @param {String} [str] - 字符串
1473
+ * @return {number} 字符个数(中文算2个,其他算1个)
1315
1474
  **/
1316
1475
  var getLength = exports.getLength = function getLength(str) {
1317
1476
  if (!str) return 0;
@@ -1336,6 +1495,7 @@ var getLength = exports.getLength = function getLength(str) {
1336
1495
  * @author huangbo
1337
1496
  * @date 2022年5月7日
1338
1497
  * @param {String} [url] - url地址
1498
+ * @return {string} 更新时间戳后的url
1339
1499
  **/
1340
1500
  var timestampUrl = exports.timestampUrl = function timestampUrl(url) {
1341
1501
  if (!url) return '';
@@ -1357,7 +1517,8 @@ var timestampUrl = exports.timestampUrl = function timestampUrl(url) {
1357
1517
  * @author huangbo
1358
1518
  * @date 2022年5月7日
1359
1519
  * @param {String} [str] - 被检测字符串
1360
- * @param {String} [chars] - 目标字符
1520
+ * @param {String|Array} [chars] - 目标字符
1521
+ * @return {boolean} 是否包含目标字符
1361
1522
  **/
1362
1523
  var hasChars = exports.hasChars = function hasChars(str, chars) {
1363
1524
  if (!str || !chars) return false;
@@ -1379,8 +1540,9 @@ var hasChars = exports.hasChars = function hasChars(str, chars) {
1379
1540
  * @desc 验证值是否相同
1380
1541
  * @author huangbo
1381
1542
  * @date 2022年5月7日
1382
- * @param {Any} [a] - 第一个值
1383
- * @param {Any} [b] - 第二个值
1543
+ * @param {*} [a] - 第一个值
1544
+ * @param {*} [b] - 第二个值
1545
+ * @return {boolean} 值是否相同
1384
1546
  **/
1385
1547
  var _identical = exports.identical = function identical(a, b) {
1386
1548
  // 如果是严格相等,直接返回
@@ -1425,7 +1587,8 @@ var _identical = exports.identical = function identical(a, b) {
1425
1587
  * @date 2022年5月7日
1426
1588
  * @param {Array} [arr] - 源数组
1427
1589
  * @param {String} [key] - 键名
1428
- * @param {String} [value] - 键值
1590
+ * @param {*} [value] - 键值
1591
+ * @return {number} 数组下标,没找到返回-1
1429
1592
  **/
1430
1593
  var indexOfObj = exports.indexOfObj = function indexOfObj(arr, key, value) {
1431
1594
  if (!(0, _isArray.default)(arr) || !key) return -1;
@@ -1442,7 +1605,8 @@ var indexOfObj = exports.indexOfObj = function indexOfObj(arr, key, value) {
1442
1605
  * @desc 判断是否为空
1443
1606
  * @author huangbo
1444
1607
  * @date 2022年5月7日
1445
- * @param {Any} [value] - 任意值
1608
+ * @param {*} [value] - 任意值
1609
+ * @return {boolean} 是否为空
1446
1610
  **/
1447
1611
  var isEmpty = exports.isEmpty = function isEmpty(value) {
1448
1612
  if (value === undefined || value === null) {
@@ -1465,7 +1629,8 @@ var isEmpty = exports.isEmpty = function isEmpty(value) {
1465
1629
  * @desc 判断是否存在
1466
1630
  * @author huangbo
1467
1631
  * @date 2022年5月7日
1468
- * @param {Any} [value] - 任意值
1632
+ * @param {*} [value] - 任意值
1633
+ * @return {boolean} 是否存在
1469
1634
  **/
1470
1635
  var isExist = exports.isExist = function isExist(value) {
1471
1636
  return value !== undefined && value !== null;
@@ -1476,7 +1641,8 @@ var isExist = exports.isExist = function isExist(value) {
1476
1641
  * @desc 判断是否是函数
1477
1642
  * @author huangbo
1478
1643
  * @date 2022年5月7日
1479
- * @param {Any} [value] - 任意值
1644
+ * @param {*} [value] - 任意值
1645
+ * @return {boolean} 是否是函数
1480
1646
  **/
1481
1647
  var isFunction = exports.isFunction = function isFunction(value) {
1482
1648
  return typeof value === 'function';
@@ -1487,8 +1653,9 @@ var isFunction = exports.isFunction = function isFunction(value) {
1487
1653
  * @desc 判断对象是否相等
1488
1654
  * @author huangbo
1489
1655
  * @date 2022年5月7日
1490
- * @param {Object} [a] - 第一个对象
1491
- * @param {Object} [b] - 第二个对象
1656
+ * @param {*} [a] - 第一个值
1657
+ * @param {*} [b] - 第二个值
1658
+ * @return {boolean} 对象是否相等
1492
1659
  **/
1493
1660
  var _isObjectEqual = exports.isObjectEqual = function isObjectEqual(a, b) {
1494
1661
  // 如果两者严格相等,直接返回true
@@ -1547,26 +1714,19 @@ var _isObjectEqual = exports.isObjectEqual = function isObjectEqual(a, b) {
1547
1714
  return true;
1548
1715
  };
1549
1716
 
1550
- /**
1551
- * joinUrl
1552
- * @desc:判断url地址是否以字符开头,没有则添加
1553
- * @author huangbo
1554
- * @date 2022年5月7日
1555
- * @param {string} [reg] - 域名或者路径
1556
- * @param {string/array} [url] - 地址
1557
- * @param {boolean} [single] - 是否做js沙箱隔离
1558
- **/
1559
1717
  /**
1560
1718
  * joinUrl
1561
1719
  * @desc 拼接路径
1562
1720
  * @author huangbo
1563
1721
  * @date 2022年5月7日
1564
- * @param {string} [url] - 地址
1565
- * @param {string/array} [reg] - 域名或者路径前缀
1722
+ * @param {Object} options - 参数选项
1723
+ * @param {string} options.url - 地址
1724
+ * @param {string|array} options.reg - 域名或者路径前缀
1725
+ * @return {string} 拼接后的url
1566
1726
  **/
1567
- var joinUrl = exports.joinUrl = function joinUrl(_ref5) {
1568
- var url = _ref5.url,
1569
- reg = _ref5.reg;
1727
+ var joinUrl = exports.joinUrl = function joinUrl(_ref6) {
1728
+ var url = _ref6.url,
1729
+ reg = _ref6.reg;
1570
1730
  // 类型检查
1571
1731
  if (typeof url !== 'string') {
1572
1732
  return url;
@@ -1618,7 +1778,7 @@ var joinUrl = exports.joinUrl = function joinUrl(_ref5) {
1618
1778
  * @desc 加载JS文件
1619
1779
  * @author huangbo
1620
1780
  * @date 2022年5月7日
1621
- * @param {String} [url] - JS文件地址
1781
+ * @param {String} url - JS文件地址
1622
1782
  * @param {Function} [callback] - 回调函数
1623
1783
  **/
1624
1784
  var loadJs = exports.loadJs = function loadJs(url, callback) {
@@ -1637,7 +1797,8 @@ var loadJs = exports.loadJs = function loadJs(url, callback) {
1637
1797
  * @desc 加载动画
1638
1798
  * @author huangbo
1639
1799
  * @date 2022年5月7日
1640
- * @param {String} [text] - 提示文本
1800
+ * @param {String} [text='请求中...'] - 提示文本
1801
+ * @return {Object} Loading实例
1641
1802
  **/
1642
1803
  var loading = exports.loading = function loading(text) {
1643
1804
  if (text === void 0) {
@@ -1656,6 +1817,7 @@ var loading = exports.loading = function loading(text) {
1656
1817
  * @author huangbo
1657
1818
  * @date 2022年5月7日
1658
1819
  * @param {String} [str] - 字符串
1820
+ * @return {string} 转换后的字符串
1659
1821
  **/
1660
1822
  var lowerCase = exports.lowerCase = function lowerCase(str) {
1661
1823
  if (typeof str !== 'string') return str;
@@ -1668,6 +1830,7 @@ var lowerCase = exports.lowerCase = function lowerCase(str) {
1668
1830
  * @author huangbo
1669
1831
  * @date 2022年5月7日
1670
1832
  * @param {Element} [el] - dom元素
1833
+ * @return {boolean} 是否溢出
1671
1834
  **/
1672
1835
  var overbrim = exports.overbrim = function overbrim(el) {
1673
1836
  if (!el) return false;
@@ -1698,6 +1861,7 @@ var overbrim = exports.overbrim = function overbrim(el) {
1698
1861
  * @author huangbo
1699
1862
  * @date 2022年5月7日
1700
1863
  * @param {Object} [obj] - 源对象
1864
+ * @return {string} URL参数字符串
1701
1865
  **/
1702
1866
  var queryParams = exports.queryParams = function queryParams(obj) {
1703
1867
  if (!obj || typeof obj !== 'object') return '';
@@ -1727,6 +1891,7 @@ var queryParams = exports.queryParams = function queryParams(obj) {
1727
1891
  * @author huangbo
1728
1892
  * @date 2022年5月7日
1729
1893
  * @param {Function} [callback] - 回调函数
1894
+ * @return {Function} 移除监听器的函数
1730
1895
  **/
1731
1896
  var receiveMessage = exports.receiveMessage = function receiveMessage(callback) {
1732
1897
  var handleMessage = function handleMessage(event) {
@@ -1748,7 +1913,8 @@ var receiveMessage = exports.receiveMessage = function receiveMessage(callback)
1748
1913
  * @author huangbo
1749
1914
  * @date 2022年5月7日
1750
1915
  * @param {Number} [num] - 数字
1751
- * @param {Number} [digits] - 小数位数
1916
+ * @param {Number} [digits=2] - 小数位数
1917
+ * @return {string} 补全后的数字字符串
1752
1918
  **/
1753
1919
  var replenish = exports.replenish = function replenish(num, digits) {
1754
1920
  if (digits === void 0) {
@@ -1767,6 +1933,7 @@ var replenish = exports.replenish = function replenish(num, digits) {
1767
1933
  * @author huangbo
1768
1934
  * @date 2022年5月7日
1769
1935
  * @param {Number} [num] - 金额
1936
+ * @return {string} 人民币大写
1770
1937
  **/
1771
1938
  var rmbToCapital = exports.rmbToCapital = function rmbToCapital(num) {
1772
1939
  // 检查输入是否为数字
@@ -1867,12 +2034,13 @@ var setScale = exports.setScale = function setScale(scale) {
1867
2034
  * @desc 向iframe发送信息
1868
2035
  * @author huangbo
1869
2036
  * @date 2022年5月7日
1870
- * @param {String} [id] - iframe元素id
1871
- * @param {Object} [data] - 发送的数据
2037
+ * @param {Object} options - 参数选项
2038
+ * @param {String} options.id - iframe元素id
2039
+ * @param {Object} options.data - 发送的数据
1872
2040
  **/
1873
- var sendMessage = exports.sendMessage = function sendMessage(_ref6) {
1874
- var id = _ref6.id,
1875
- data = _ref6.data;
2041
+ var sendMessage = exports.sendMessage = function sendMessage(_ref7) {
2042
+ var id = _ref7.id,
2043
+ data = _ref7.data;
1876
2044
  var iframe = document.getElementById(id);
1877
2045
  if (!iframe) {
1878
2046
  console.error("iframe with id " + id + " not found");
@@ -1891,7 +2059,7 @@ var sendMessage = exports.sendMessage = function sendMessage(_ref6) {
1891
2059
  * @desc 设置浏览器图标
1892
2060
  * @author huangbo
1893
2061
  * @date 2022年5月7日
1894
- * @param {String} [url] - 图标URL
2062
+ * @param {String} url - 图标URL
1895
2063
  **/
1896
2064
  var setFavicon = exports.setFavicon = function setFavicon(url) {
1897
2065
  if (!url) {
@@ -1923,7 +2091,8 @@ var setFavicon = exports.setFavicon = function setFavicon(url) {
1923
2091
  * @desc 求和
1924
2092
  * @author huangbo
1925
2093
  * @date 2022年5月7日
1926
- * @param {...number} [numbers] - 数字
2094
+ * @param {...number} numbers - 数字
2095
+ * @return {number} 数字的总和
1927
2096
  **/
1928
2097
  var sum = exports.sum = function sum() {
1929
2098
  for (var _len4 = arguments.length, numbers = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
@@ -1946,6 +2115,7 @@ var sum = exports.sum = function sum() {
1946
2115
  * @date 2022年5月7日
1947
2116
  * @param {String} [str] - 源字符串
1948
2117
  * @param {String} [searchString] - 搜索字符串
2118
+ * @return {boolean} 是否以指定字符开头
1949
2119
  **/
1950
2120
  var startWith = exports.startWith = function startWith(str, searchString) {
1951
2121
  if (typeof str !== 'string' || typeof searchString !== 'string') {
@@ -1961,6 +2131,7 @@ var startWith = exports.startWith = function startWith(str, searchString) {
1961
2131
  * @date 2022年5月7日
1962
2132
  * @param {String} [str] - 源字符串
1963
2133
  * @param {Number} [length] - 提取长度
2134
+ * @return {string} 提取后的字符串
1964
2135
  **/
1965
2136
  var takeLeft = exports.takeLeft = function takeLeft(str, length) {
1966
2137
  if (typeof str !== 'string' || typeof length !== 'number' || length < 0) {
@@ -1976,6 +2147,7 @@ var takeLeft = exports.takeLeft = function takeLeft(str, length) {
1976
2147
  * @date 2022年5月7日
1977
2148
  * @param {String} [str] - 源字符串
1978
2149
  * @param {Number} [length] - 提取长度
2150
+ * @return {string} 提取后的字符串
1979
2151
  **/
1980
2152
  var takeRight = exports.takeRight = function takeRight(str, length) {
1981
2153
  if (typeof str !== 'string' || typeof length !== 'number' || length < 0) {
@@ -1990,6 +2162,7 @@ var takeRight = exports.takeRight = function takeRight(str, length) {
1990
2162
  * @author huangbo
1991
2163
  * @date 2022年5月7日
1992
2164
  * @param {String} [str] - 源字符串
2165
+ * @return {string} 删除空格后的字符串
1993
2166
  **/
1994
2167
  var trimWhitespace = exports.trimWhitespace = function trimWhitespace(str) {
1995
2168
  if (typeof str !== 'string') {
@@ -2004,7 +2177,8 @@ var trimWhitespace = exports.trimWhitespace = function trimWhitespace(str) {
2004
2177
  * @author huangbo
2005
2178
  * @date 2022年5月7日
2006
2179
  * @param {Number} [num] - 浮点数
2007
- * @param {Number} [digits] - 小数位数
2180
+ * @param {Number} [digits=2] - 小数位数
2181
+ * @return {number} 保留小数位后的数字
2008
2182
  **/
2009
2183
  var toFixed = exports.toFixed = function toFixed(num, digits) {
2010
2184
  if (digits === void 0) {
@@ -2023,6 +2197,7 @@ var toFixed = exports.toFixed = function toFixed(num, digits) {
2023
2197
  * @author huangbo
2024
2198
  * @date 2022年5月7日
2025
2199
  * @param {String} [str] - 函数字符串
2200
+ * @return {Function|null} 转换后的函数或null
2026
2201
  **/
2027
2202
  var toFunction = exports.toFunction = function toFunction(str) {
2028
2203
  if (typeof str !== 'string') {
@@ -2071,6 +2246,7 @@ var updateTheme = exports.updateTheme = function updateTheme(color) {
2071
2246
  * @author huangbo
2072
2247
  * @date 2022年5月7日
2073
2248
  * @param {String} [str] - 字符串
2249
+ * @return {string} 转换后的字符串
2074
2250
  **/
2075
2251
  var upperType = exports.upperType = function upperType(str) {
2076
2252
  if (typeof str !== 'string') {
@@ -2084,25 +2260,47 @@ var upperType = exports.upperType = function upperType(str) {
2084
2260
  * @desc 对象转url拼接参数
2085
2261
  * @author huangbo
2086
2262
  * @date 2022年5月7日
2087
- * @param {String} [url] - 源url
2088
- * @param {Object} [params] - 参数对象
2263
+ * @param {String} [options.url] - 源url
2264
+ * @param {Object} [options.params] - 参数对象
2265
+ * @param {Boolean} [options.timestamp] - 是否添加时间戳
2089
2266
  **/
2090
- var urlJoinParams = exports.urlJoinParams = function urlJoinParams(url, params) {
2267
+ var urlJoinParams = exports.urlJoinParams = function urlJoinParams(_temp2) {
2268
+ var _ref8 = _temp2 === void 0 ? {} : _temp2,
2269
+ _ref8$url = _ref8.url,
2270
+ url = _ref8$url === void 0 ? '' : _ref8$url,
2271
+ _ref8$params = _ref8.params,
2272
+ params = _ref8$params === void 0 ? {} : _ref8$params,
2273
+ _ref8$timestamp = _ref8.timestamp,
2274
+ timestamp = _ref8$timestamp === void 0 ? false : _ref8$timestamp;
2091
2275
  if (typeof url !== 'string') {
2092
- return url;
2276
+ return '';
2093
2277
  }
2094
- if (!params || typeof params !== 'object') {
2095
- return url;
2278
+ if (!url) {
2279
+ return '';
2280
+ }
2281
+ // 处理URL中的锚点
2282
+ var urlWithoutHash = url;
2283
+ var hash = '';
2284
+ var hashIndex = (0, _indexOf.default)(url).call(url, '#');
2285
+ if (hashIndex > -1) {
2286
+ urlWithoutHash = (0, _slice.default)(url).call(url, 0, hashIndex);
2287
+ hash = (0, _slice.default)(url).call(url, hashIndex);
2288
+ }
2289
+ // 复制参数对象以避免修改原对象
2290
+ var paramsCopy = _extends({}, params);
2291
+ // 添加时间戳
2292
+ if (timestamp) {
2293
+ paramsCopy._t = (0, _now.default)();
2096
2294
  }
2097
2295
  // 将参数对象转换为URL参数字符串
2098
- var queryString = queryParams(params);
2296
+ var queryString = queryParams(paramsCopy);
2099
2297
  if (!queryString) {
2100
2298
  return url;
2101
2299
  }
2102
2300
  // 检查URL是否已经包含查询参数
2103
- var hasQuery = (0, _includes.default)(url).call(url, '?');
2301
+ var hasQuery = (0, _includes.default)(urlWithoutHash).call(urlWithoutHash, '?');
2104
2302
  // 拼接URL和查询参数
2105
- return "" + url + (hasQuery ? '&' : '?') + queryString;
2303
+ return "" + urlWithoutHash + (hasQuery ? '&' : '?') + queryString + hash;
2106
2304
  };
2107
2305
 
2108
2306
  /**
@@ -2207,11 +2405,11 @@ var watermark = exports.watermark = function watermark(text, options) {
2207
2405
  * @param {String} [target] - 打开方式
2208
2406
  * @param {String} [name] - 窗口名称
2209
2407
  **/
2210
- var winTopOpen = exports.winTopOpen = function winTopOpen(_ref7) {
2211
- var url = _ref7.url,
2212
- _ref7$target = _ref7.target,
2213
- target = _ref7$target === void 0 ? '_blank' : _ref7$target,
2214
- name = _ref7.name;
2408
+ var winTopOpen = exports.winTopOpen = function winTopOpen(_ref9) {
2409
+ var url = _ref9.url,
2410
+ _ref9$target = _ref9.target,
2411
+ target = _ref9$target === void 0 ? '_blank' : _ref9$target,
2412
+ name = _ref9.name;
2215
2413
  try {
2216
2414
  if (target === '_blank') {
2217
2415
  window.top.open(url, name);