eoss 0.1.0-alpha.5 → 0.1.0-alpha.7

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 (105) hide show
  1. package/lib/account-login.js +3631 -3413
  2. package/lib/autocomplete.js +3635 -3393
  3. package/lib/button-group.js +7391 -7172
  4. package/lib/button.js +3632 -3390
  5. package/lib/ca-login.js +3621 -3379
  6. package/lib/calendar.js +7401 -7182
  7. package/lib/carousel.js +3 -3
  8. package/lib/cascader-panel.js +4692 -4450
  9. package/lib/cascader.js +4701 -4459
  10. package/lib/checkbox-group.js +4842 -4623
  11. package/lib/checkbox.js +70 -70
  12. package/lib/collapse-item.js +3632 -3390
  13. package/lib/color-picker.js +3621 -3379
  14. package/lib/data-table.js +19264 -19046
  15. package/lib/date-picker.js +3620 -3378
  16. package/lib/dialog.js +3632 -3390
  17. package/lib/dropdown.js +7830 -7611
  18. package/lib/email-login.js +3634 -3415
  19. package/lib/eoss.common.js +588 -358
  20. package/lib/flow-group.js +3623 -3376
  21. package/lib/flow.js +3637 -3418
  22. package/lib/form-item.js +3635 -3392
  23. package/lib/form.js +10123 -9904
  24. package/lib/icon.js +3632 -3390
  25. package/lib/image.js +3632 -3390
  26. package/lib/index.js +1 -1
  27. package/lib/index.js.LICENSE.txt +1 -1
  28. package/lib/input-number.js +2615 -2373
  29. package/lib/input.js +3632 -3390
  30. package/lib/loading.js +3632 -3390
  31. package/lib/login.js +5273 -5052
  32. package/lib/main.js +3622 -3403
  33. package/lib/menu-item-group.js +3632 -3390
  34. package/lib/menu-item.js +3632 -3390
  35. package/lib/menu.js +3632 -3390
  36. package/lib/message-box.js +3632 -3390
  37. package/lib/message.js +3632 -3390
  38. package/lib/notification.js +3632 -3390
  39. package/lib/option.js +4447 -4205
  40. package/lib/pagination.js +9941 -9723
  41. package/lib/phone-login.js +3634 -3415
  42. package/lib/popconfirm.js +4834 -4592
  43. package/lib/popover.js +3635 -3393
  44. package/lib/qrcode-login.js +3633 -3414
  45. package/lib/radio-group.js +4430 -4211
  46. package/lib/radio.js +24 -24
  47. package/lib/rate.js +3632 -3390
  48. package/lib/scrollbar.js +3632 -3390
  49. package/lib/select.js +3633 -3415
  50. package/lib/selector-panel.js +3670 -3447
  51. package/lib/selector.js +3638 -3415
  52. package/lib/slider.js +2618 -2376
  53. package/lib/step.js +3632 -3390
  54. package/lib/steps.js +3632 -3390
  55. package/lib/submenu.js +3632 -3390
  56. package/lib/switch.js +3632 -3390
  57. package/lib/table-column.js +3817 -3574
  58. package/lib/table.js +4884 -4665
  59. package/lib/tabs.js +3632 -3390
  60. package/lib/theme-chalk/base.css +1 -1
  61. package/lib/theme-chalk/icon.css +1 -1
  62. package/lib/theme-chalk/index.css +1 -1
  63. package/lib/theme-chalk/main.css +1 -1
  64. package/lib/time-picker.js +3620 -3378
  65. package/lib/time-select.js +3621 -3379
  66. package/lib/tips.js +4419 -4200
  67. package/lib/tooltip.js +3632 -3390
  68. package/lib/transfer.js +4853 -4634
  69. package/lib/tree-group.js +3614 -3372
  70. package/lib/tree.js +3503 -3261
  71. package/lib/upload.js +3636 -3417
  72. package/lib/utils/ajax.js +25 -51
  73. package/lib/utils/index.js +8 -6
  74. package/lib/utils/util.js +378 -145
  75. package/lib/wujie.js +3618 -3373
  76. package/package.json +1 -1
  77. package/packages/autocomplete/src/autocomplete.vue +1 -1
  78. package/packages/carousel/src/item.vue +1 -1
  79. package/packages/carousel/src/main.vue +1 -1
  80. package/packages/cascader/src/cascader.vue +1 -1
  81. package/packages/checkbox/src/checkbox-group.vue +1 -1
  82. package/packages/checkbox/src/checkbox.vue +29 -29
  83. package/packages/flow-group/src/main.vue +2 -2
  84. package/packages/form/src/form.vue +3 -5
  85. package/packages/input/src/input.vue +2 -2
  86. package/packages/input-number/src/input-number.vue +2 -2
  87. package/packages/login/src/login.vue +4 -4
  88. package/packages/main/src/main.vue +13 -12
  89. package/packages/popover/src/main.vue +1 -1
  90. package/packages/radio/src/radio-group.vue +1 -1
  91. package/packages/radio/src/radio.vue +1 -1
  92. package/packages/select/src/select.vue +1 -1
  93. package/packages/slider/src/slider.vue +2 -4
  94. package/packages/table/src/layout-observer.js +5 -5
  95. package/packages/table/src/table copy.vue +1 -1
  96. package/packages/table/src/table-body.js +11 -11
  97. package/packages/table/src/table-column.js +1 -1
  98. package/packages/theme-chalk/package.json +6 -6
  99. package/packages/theme-chalk/src/common/var.scss +2 -2
  100. package/packages/theme-chalk/src/mixins/function.scss +21 -1
  101. package/packages/upload/src/index.vue +2 -2
  102. package/src/index.js +2 -2
  103. package/src/utils/ajax.js +0 -14
  104. package/src/utils/index.js +3 -3
  105. package/src/utils/util.js +320 -104
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,17 +40,18 @@ 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"));
58
51
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
59
52
  var _now = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/date/now"));
60
53
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
54
+ var _map2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
61
55
  var _trim = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/trim"));
62
56
  var _some = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/some"));
63
57
  var _startsWith = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/starts-with"));
@@ -68,9 +62,9 @@ var _types = require("./types");
68
62
  var _messageBox = _interopRequireDefault(require("../../packages/message-box"));
69
63
  var _date = require("./date");
70
64
  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; } }
65
+ function _extends() { var _context1; return _extends = _Object$assign ? _bindInstanceProperty(_context1 = _Object$assign).call(_context1) : 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); }
66
+ function _createForOfIteratorHelperLoose(r, e) { var _context0; var t = "undefined" != typeof _Symbol && _getIteratorMethod(r) || r["@@iterator"]; if (t) return _bindInstanceProperty(_context0 = (t = t.call(r)).next).call(_context0, 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."); }
67
+ function _unsupportedIterableToArray(r, a) { if (r) { var _context9; if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = _sliceInstanceProperty2(_context9 = {}.toString.call(r)).call(_context9, 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
68
  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
69
  function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); }
76
70
  var _get = require('lodash/get');
@@ -81,22 +75,57 @@ var hasOwnProperty = Object.prototype.hasOwnProperty;
81
75
  // 导入date中的formatDate函数
82
76
 
83
77
  var publicKey = 'abcdefghijklmnopqrstuvwxyz12345678';
84
- function noop() {}
85
- ;
86
- function hasOwn(obj, key) {
78
+
79
+ /**
80
+ * 空函数
81
+ * @desc 不执行任何操作的空函数
82
+ * @return {undefined}
83
+ **/
84
+ var noop = exports.noop = function noop() {};
85
+
86
+ /**
87
+ * 检查对象是否拥有指定属性
88
+ * @desc 检查对象自身是否包含指定的属性(不包括原型链上的属性)
89
+ * @param {Object} obj - 要检查的对象
90
+ * @param {string} key - 要检查的属性名
91
+ * @return {boolean} 是否拥有该属性
92
+ **/
93
+ var hasOwn = exports.hasOwn = function hasOwn(obj, key) {
94
+ if (!(0, _types.isObject)(obj) && typeof obj !== 'object') {
95
+ return false;
96
+ }
87
97
  return hasOwnProperty.call(obj, key);
88
- }
89
- ;
90
- function toObject(arr) {
98
+ };
99
+
100
+ /**
101
+ * 将数组转换为对象
102
+ * @desc 将对象数组合并为一个对象
103
+ * @param {Array} [arr=[]] - 对象数组
104
+ * @return {Object} 合并后的对象
105
+ **/
106
+ var toObject = exports.toObject = function toObject(arr) {
107
+ if (arr === void 0) {
108
+ arr = [];
109
+ }
91
110
  var res = {};
111
+ if (!(0, _isArray.default)(arr)) {
112
+ return res;
113
+ }
92
114
  for (var i = 0; i < arr.length; i++) {
93
115
  if (arr[i]) {
94
116
  _extend(res, arr[i]);
95
117
  }
96
118
  }
97
119
  return res;
98
- }
99
- ;
120
+ };
121
+
122
+ /**
123
+ * 根据路径获取对象属性值
124
+ * @desc 根据点分隔的路径字符串获取对象中的属性值
125
+ * @param {Object} object - 源对象
126
+ * @param {string} prop - 属性路径(如 'a.b.c')
127
+ * @return {*} 获取到的属性值,如果路径不存在则返回null
128
+ **/
100
129
  var getValueByPath = exports.getValueByPath = function getValueByPath(object, prop) {
101
130
  if (Object.prototype.toString.call(object).toLowerCase() !== '[object object]') {
102
131
  return object;
@@ -116,7 +145,33 @@ var getValueByPath = exports.getValueByPath = function getValueByPath(object, pr
116
145
  }
117
146
  return result;
118
147
  };
119
- function getPropByPath(obj, path, strict) {
148
+
149
+ /**
150
+ * 获取属性路径信息
151
+ * @desc 获取对象属性路径的详细信息,包括父对象、属性名和属性值
152
+ * @param {Object} obj - 源对象
153
+ * @param {string} path - 属性路径(如 'a.b.c' 或 'a[0].b')
154
+ * @param {boolean} [strict=false] - 是否严格模式,严格模式下路径不存在会抛出错误
155
+ * @return {Object} 包含父对象(o)、属性名(k)和属性值(v)的对象
156
+ **/
157
+ var getPropByPath = exports.getPropByPath = function getPropByPath(obj, path, strict) {
158
+ if (strict === void 0) {
159
+ strict = false;
160
+ }
161
+ if (!(0, _types.isObject)(obj) && typeof obj !== 'object') {
162
+ return {
163
+ o: null,
164
+ k: '',
165
+ v: null
166
+ };
167
+ }
168
+ if (!(0, _types.isString)(path)) {
169
+ return {
170
+ o: obj,
171
+ k: '',
172
+ v: null
173
+ };
174
+ }
120
175
  var tempObj = obj;
121
176
  path = path.replace(/\[(\w+)\]/g, '.$1');
122
177
  path = path.replace(/^\./, '');
@@ -139,11 +194,24 @@ function getPropByPath(obj, path, strict) {
139
194
  k: keyArr[i],
140
195
  v: tempObj ? tempObj[keyArr[i]] : null
141
196
  };
142
- }
143
- ;
197
+ };
198
+
199
+ /**
200
+ * 生成随机ID
201
+ * @desc 生成一个1-9999之间的随机整数作为ID
202
+ * @return {number} 随机ID
203
+ **/
144
204
  var generateId = exports.generateId = function generateId() {
145
205
  return Math.floor(Math.random() * 10000);
146
206
  };
207
+
208
+ /**
209
+ * 检查两个数组是否值相等
210
+ * @desc 深度比较两个数组是否包含相同的元素(严格相等比较)
211
+ * @param {Array} a - 第一个数组
212
+ * @param {Array} b - 第二个数组
213
+ * @return {boolean} 数组是否值相等
214
+ **/
147
215
  var valueEquals = exports.valueEquals = function valueEquals(a, b) {
148
216
  // see: https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
149
217
  if (a === b) return true;
@@ -155,6 +223,13 @@ var valueEquals = exports.valueEquals = function valueEquals(a, b) {
155
223
  }
156
224
  return true;
157
225
  };
226
+
227
+ /**
228
+ * 转义正则表达式特殊字符
229
+ * @desc 将字符串中的正则表达式特殊字符转义,使其可以安全地用于正则表达式
230
+ * @param {*} [value=''] - 要转义的字符串
231
+ * @return {string} 转义后的字符串
232
+ **/
158
233
  var escapeRegexpString = exports.escapeRegexpString = function escapeRegexpString(value) {
159
234
  if (value === void 0) {
160
235
  value = '';
@@ -163,7 +238,20 @@ var escapeRegexpString = exports.escapeRegexpString = function escapeRegexpStrin
163
238
  };
164
239
 
165
240
  // TODO: use native Array.find, Array.findIndex when IE support is dropped
241
+ /**
242
+ * 查找数组中符合条件的元素索引
243
+ * @desc 查找数组中第一个满足测试函数的元素的索引
244
+ * @param {Array} arr - 要查找的数组
245
+ * @param {Function} pred - 测试函数,返回true表示找到匹配元素
246
+ * @return {number} 找到的元素索引,未找到返回-1
247
+ **/
166
248
  var arrayFindIndex = exports.arrayFindIndex = function arrayFindIndex(arr, pred) {
249
+ if (!(0, _isArray.default)(arr)) {
250
+ return -1;
251
+ }
252
+ if (typeof pred !== 'function') {
253
+ return -1;
254
+ }
167
255
  for (var i = 0; i !== arr.length; ++i) {
168
256
  if (pred(arr[i])) {
169
257
  return i;
@@ -171,12 +259,32 @@ var arrayFindIndex = exports.arrayFindIndex = function arrayFindIndex(arr, pred)
171
259
  }
172
260
  return -1;
173
261
  };
262
+
263
+ /**
264
+ * 查找数组中符合条件的元素
265
+ * @desc 查找数组中第一个满足测试函数的元素
266
+ * @param {Array} arr - 要查找的数组
267
+ * @param {Function} pred - 测试函数,返回true表示找到匹配元素
268
+ * @return {*} 找到的元素,未找到返回undefined
269
+ **/
174
270
  var arrayFind = exports.arrayFind = function arrayFind(arr, pred) {
271
+ if (!(0, _isArray.default)(arr)) {
272
+ return undefined;
273
+ }
274
+ if (typeof pred !== 'function') {
275
+ return undefined;
276
+ }
175
277
  var idx = arrayFindIndex(arr, pred);
176
278
  return idx !== -1 ? arr[idx] : undefined;
177
279
  };
178
280
 
179
281
  // coerce truthy value to array
282
+ /**
283
+ * 将真值转换为数组
284
+ * @desc 如果输入是数组则直接返回,否则将真值包装为数组,假值返回空数组
285
+ * @param {*} val - 要转换的值
286
+ * @return {Array} 转换后的数组
287
+ **/
180
288
  var coerceTruthyValueToArray = exports.coerceTruthyValueToArray = function coerceTruthyValueToArray(val) {
181
289
  if ((0, _isArray.default)(val)) {
182
290
  return val;
@@ -282,7 +390,7 @@ function objToArray(obj) {
282
390
  }
283
391
 
284
392
  // requestAnimationFrame 适配函数
285
- var raFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || function (callback) {
393
+ var raFrame = window.requestAnimationFrame || window['webkitRequestAnimationFrame'] || function (callback) {
286
394
  return (0, _setTimeout2.default)(callback, 1000 / 60);
287
395
  };
288
396
 
@@ -315,7 +423,7 @@ var requestAnimationFrame = exports.requestAnimationFrame = raFrame;
315
423
  * })
316
424
  * cancelAnimationFrame(id)
317
425
  */
318
- var cancelAnimationFrame = exports.cancelAnimationFrame = window.cancelAnimationFrame || window.webkitRequestAnimationFrame || function (id) {
426
+ var cancelAnimationFrame = exports.cancelAnimationFrame = window.cancelAnimationFrame || window['webkitCancelAnimationFrame'] || function (id) {
319
427
  window.clearTimeout(id);
320
428
  };
321
429
 
@@ -499,7 +607,8 @@ function pager(data, page, size) {
499
607
  /**
500
608
  * getWinTop
501
609
  * @desc 获取同域的top窗口
502
- * @param {object} wind - window对象
610
+ * @param {object} [wind] - window对象
611
+ * @return {Window} 同域的top窗口
503
612
  **/
504
613
  var _getWinTop = exports.getWinTop = function getWinTop(wind) {
505
614
  wind = wind ? wind : window.__WUJIE_RAW_WINDOW__ ? window.__WUJIE_RAW_WINDOW__ : window;
@@ -645,28 +754,35 @@ var getFileType = exports.getFileType = function getFileType(fileName) {
645
754
 
646
755
  /**
647
756
  * arrUnique
648
- * @desc:数组元素对象去重
757
+ * @desc 数组元素对象去重
649
758
  * @author huangbo
650
759
  * @date 2022年5月7日
651
- * @param {Object} [data] - 原始数组
760
+ * @param {Array} [data] - 原始数组
652
761
  * @param {String} [key] - 对象子元素的属性名
762
+ * @return {Array} 去重后的数组
653
763
  **/
654
764
  var arrUnique = exports.arrUnique = function arrUnique(data, key) {
765
+ // 验证输入参数
766
+ if (!(0, _isArray.default)(data) || data.length === 0) return [];
655
767
  var newArr = [];
656
768
  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]);
769
+ var _context2, _context3;
770
+ // 对基本类型数组去重
771
+ var sortedData = (0, _sort.default)(_context2 = (0, _concat.default)(_context3 = []).call(_context3, data)).call(_context2); // 避免修改原数组
772
+ newArr = [sortedData[0]];
773
+ for (var i = 1; i < sortedData.length; i++) {
774
+ if (sortedData[i] !== newArr[newArr.length - 1]) {
775
+ newArr.push(sortedData[i]);
662
776
  }
663
777
  }
664
778
  } else {
779
+ // 对对象数组按指定键去重
665
780
  var obj = {};
666
781
  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;
782
+ var item = data[_i];
783
+ if (item && obj[item[key]] === undefined) {
784
+ newArr.push(item);
785
+ obj[item[key]] = true;
670
786
  }
671
787
  }
672
788
  }
@@ -685,17 +801,19 @@ var average = exports.average = function average() {
685
801
  for (var _len2 = arguments.length, numbers = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
686
802
  numbers[_key2] = arguments[_key2];
687
803
  }
688
- // Ensure that all arguments are valid numbers
804
+ // 处理空参数情况
805
+ if (numbers.length === 0) return 0;
806
+
807
+ // 确保所有参数都是有效数字
689
808
  if (!(0, _every.default)(numbers).call(numbers, _isFinite.default)) {
690
809
  throw new Error('Invalid input. Please provide valid numbers.');
691
810
  }
692
811
 
693
- // Calculate the average of the numbers
812
+ // 计算平均值
694
813
  var sum = (0, _reduce.default)(numbers).call(numbers, function (acc, num) {
695
814
  return acc + num;
696
815
  }, 0);
697
- var average = sum / numbers.length;
698
- return average;
816
+ return sum / numbers.length;
699
817
  };
700
818
 
701
819
  /**
@@ -711,7 +829,9 @@ var formatFileSize = exports.formatFileSize = function formatFileSize(size, digi
711
829
  if (digits === void 0) {
712
830
  digits = 2;
713
831
  }
714
- if (size === 0) return '';
832
+ // 验证输入参数
833
+ if (size === 0 || typeof size !== 'number' || isNaN(size)) return '';
834
+ if (typeof digits !== 'number' || isNaN(digits)) digits = 2;
715
835
  var k = 1024;
716
836
  var sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
717
837
  var i = Math.floor(Math.log(size) / Math.log(k));
@@ -724,9 +844,10 @@ var formatFileSize = exports.formatFileSize = function formatFileSize(size, digi
724
844
 
725
845
  /**
726
846
  * browser
727
- * @desc:浏览器类型
847
+ * @desc 浏览器类型
728
848
  * @author huangbo
729
849
  * @date 2022年5月7日
850
+ * @return {string|undefined} 浏览器类型标识
730
851
  **/
731
852
  var browser = exports.browser = function browser() {
732
853
  var reg = {
@@ -744,9 +865,14 @@ var browser = exports.browser = function browser() {
744
865
 
745
866
  /**
746
867
  * busEmit
747
- * @desc:发送事件
868
+ * @desc 发送事件
748
869
  * @author huangbo
749
870
  * @date 2022年5月7日
871
+ * @param {Object} that - Vue实例或包含bus的对象
872
+ * @param {Object} options - 事件选项
873
+ * @param {string} options.method - 事件名称
874
+ * @param {Array|*} options.args - 事件参数
875
+ * @param {Object} [options.opener] - 窗口对象(用于跨窗口通信)
750
876
  **/
751
877
  var busEmit = exports.busEmit = function busEmit(that, _ref) {
752
878
  var method = _ref.method,
@@ -763,7 +889,7 @@ var busEmit = exports.busEmit = function busEmit(that, _ref) {
763
889
  return;
764
890
  }
765
891
  if (isIE()) {
766
- var _context2;
892
+ var _context4;
767
893
  if (window.top !== window.self) {
768
894
  window.top.postMessage({
769
895
  method: method,
@@ -773,14 +899,14 @@ var busEmit = exports.busEmit = function busEmit(that, _ref) {
773
899
  return;
774
900
  }
775
901
  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));
902
+ bus && ((0, _isArray.default)(args) ? bus.$emit.apply(bus, (0, _concat.default)(_context4 = [method]).call(_context4, args)) : bus.$emit(method, args));
777
903
  } else {
778
- var _context4;
904
+ var _context6;
779
905
  if (window.top !== window.self) {
780
906
  var _bus = window.$wujie ? window.$wujie.bus : null;
781
907
  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);
908
+ var _context5;
909
+ (0, _isArray.default)(args) ? _bus.$emit.apply(_bus, (0, _concat.default)(_context5 = [method]).call(_context5, args)) : _bus.$emit(method, args);
784
910
  } else {
785
911
  window.top.postMessage({
786
912
  method: method,
@@ -791,7 +917,7 @@ var busEmit = exports.busEmit = function busEmit(that, _ref) {
791
917
  return;
792
918
  }
793
919
  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));
920
+ _bus2 && ((0, _isArray.default)(args) ? _bus2.$emit.apply(_bus2, (0, _concat.default)(_context6 = [method]).call(_context6, args)) : _bus2.$emit(method, args));
795
921
  }
796
922
  };
797
923
 
@@ -799,6 +925,7 @@ var busEmit = exports.busEmit = function busEmit(that, _ref) {
799
925
  * chunkToChinese
800
926
  * @desc 将四位数的整数转换为中文大写
801
927
  * @param {number} chunk - 数字
928
+ * @return {string} 中文大写数字
802
929
  **/
803
930
  var chunkToChinese = exports.chunkToChinese = function chunkToChinese(chunk) {
804
931
  var numberToChinese = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
@@ -823,7 +950,6 @@ var chunkToChinese = exports.chunkToChinese = function chunkToChinese(chunk) {
823
950
 
824
951
  /**
825
952
  * concatenate
826
- * @desc 指定连接符合并文本
827
953
  * @desc 使用指定的连接符合并文本字符串
828
954
  * @author SuTao
829
955
  * @date 2023年12月14日
@@ -845,11 +971,13 @@ var concatenate = exports.concatenate = function concatenate(separator) {
845
971
 
846
972
  /**
847
973
  * delUrlParam
848
- * @desc:删除url指定参数
974
+ * @desc 删除url指定参数
849
975
  * @author huangbo
850
976
  * @date 2022年5月7日
851
- * @param {String} [url] - url地址
852
- * @param {String,Array} [key] - 参数名
977
+ * @param {Object} options - 参数选项
978
+ * @param {String} [options.url] - url地址
979
+ * @param {String|Array} [options.key] - 参数名
980
+ * @return {string} 删除参数后的url
853
981
  **/
854
982
  var delUrlParam = exports.delUrlParam = function delUrlParam(_ref2) {
855
983
  var url = _ref2.url,
@@ -897,7 +1025,7 @@ var delUrlParam = exports.delUrlParam = function delUrlParam(_ref2) {
897
1025
 
898
1026
  /**
899
1027
  * domEval
900
- * @desc:添加js内容
1028
+ * @desc 添加js内容
901
1029
  * @author huangbo
902
1030
  * @date 2022年5月7日
903
1031
  * @param {String} [code] - js内容
@@ -910,10 +1038,10 @@ var domEval = exports.domEval = function domEval(code) {
910
1038
 
911
1039
  /**
912
1040
  * downloadFile
913
- * @desc:下载附件
1041
+ * @desc 下载附件
914
1042
  * @author huangbo
915
1043
  * @date 2022年5月7日
916
- * @param {String} [code] - js内容
1044
+ * @param {String} fileUrl - 文件下载地址
917
1045
  **/
918
1046
  var downloadFile = exports.downloadFile = function downloadFile(fileUrl) {
919
1047
  var link = document.createElement('a');
@@ -927,10 +1055,11 @@ var downloadFile = exports.downloadFile = function downloadFile(fileUrl) {
927
1055
 
928
1056
  /**
929
1057
  * encode
930
- * @desc:加密
1058
+ * @desc 加密
931
1059
  * @author huangbo
932
1060
  * @date 2022年5月7日
933
- * @param {string} [data] - 被加密的字符串
1061
+ * @param {string} value - 被加密的字符串
1062
+ * @return {string} 加密后的字符串
934
1063
  **/
935
1064
  var encode = exports.encode = function encode(value) {
936
1065
  var kleng = publicKey.length;
@@ -954,11 +1083,11 @@ var encode = exports.encode = function encode(value) {
954
1083
 
955
1084
  /**
956
1085
  * decode
957
- * @desc:解密
1086
+ * @desc 解密
958
1087
  * @author huangbo
959
1088
  * @date 2022年5月7日
960
- * @param {string} [value] - 被解密的加密字符串
961
- * @param {string} [key] - 私钥
1089
+ * @param {string} value - 被解密的加密字符串
1090
+ * @return {string} 解密后的字符串
962
1091
  **/
963
1092
  var decode = exports.decode = function decode(value) {
964
1093
  var kleng = publicKey.length;
@@ -985,11 +1114,14 @@ var decode = exports.decode = function decode(value) {
985
1114
  };
986
1115
 
987
1116
  /**
988
- * 排除属性
989
- * @desc:exclAttribute
1117
+ * exclAttribute
1118
+ * @desc 排除对象中的指定属性
990
1119
  * @author huangbo
991
1120
  * @date 2022年5月7日
992
- * @param {String/Array} [attrs] - 要排除的属性
1121
+ * @param {Object} options - 参数选项
1122
+ * @param {String|Array} [options.attrs='value'] - 要排除的属性
1123
+ * @param {Object} options.data - 源对象
1124
+ * @return {Object} 排除属性后的新对象
993
1125
  **/
994
1126
  // 用于缓存exclAttribute的结果
995
1127
  var _exclAttributeCache = new _map.default();
@@ -1035,8 +1167,9 @@ var exclAttribute = exports.exclAttribute = function exclAttribute(_ref3) {
1035
1167
  * @desc 导出表格数据
1036
1168
  * @author huangbo
1037
1169
  * @date 2022年5月7日
1038
- * @param {Object} [data] - 导出数据
1039
- * @param {String} [name] - 文件名
1170
+ * @param {Object} options - 参数选项
1171
+ * @param {Object} options.data - 导出数据
1172
+ * @param {String} [options.name] - 文件名
1040
1173
  **/
1041
1174
  var exportXls = exports.exportXls = function exportXls(_ref4) {
1042
1175
  var data = _ref4.data,
@@ -1070,6 +1203,7 @@ var exportXls = exports.exportXls = function exportXls(_ref4) {
1070
1203
  * @param {Boolean} [deep] - 是否深拷贝
1071
1204
  * @param {Object} [target] - 目标对象
1072
1205
  * @param {...Object} [source] - 源对象
1206
+ * @return {Object} 拷贝后的对象
1073
1207
  **/
1074
1208
  var _extend = exports.extend = function extend() {
1075
1209
  // target目标对象 source源对象
@@ -1126,7 +1260,8 @@ var _extend = exports.extend = function extend() {
1126
1260
  * @desc 获取数据类型
1127
1261
  * @author huangbo
1128
1262
  * @date 2022年5月7日
1129
- * @param {Any} [obj] - 任意值
1263
+ * @param {*} [obj] - 任意值
1264
+ * @return {string} 数据类型
1130
1265
  **/
1131
1266
  var getObjectType = exports.getObjectType = function getObjectType(obj) {
1132
1267
  return Object.prototype.toString.call(obj).replace(/\[object (.*)\]/, '$1').toLowerCase();
@@ -1137,10 +1272,15 @@ var getObjectType = exports.getObjectType = function getObjectType(obj) {
1137
1272
  * @desc 获取URL参数
1138
1273
  * @author huangbo
1139
1274
  * @date 2022年5月7日
1140
- * @param {String} [url] - url地址
1275
+ * @param {Object} options - 参数配置对象
1276
+ * @param {String} [options.url] - url地址,可选
1277
+ * @param {String} [options.name] - 参数名,可选
1278
+ * @return {Object|string} 参数对象或指定参数值
1141
1279
  **/
1142
- var getParams = exports.getParams = function getParams(key, url) {
1143
- var _context5;
1280
+ var getParams = exports.getParams = function getParams(_temp) {
1281
+ var _ref5 = _temp === void 0 ? {} : _temp,
1282
+ url = _ref5.url,
1283
+ name = _ref5.name;
1144
1284
  var href = '';
1145
1285
  try {
1146
1286
  href = window.top.location.href;
@@ -1148,17 +1288,30 @@ var getParams = exports.getParams = function getParams(key, url) {
1148
1288
  href = window.location.href;
1149
1289
  }
1150
1290
  var paramStr = (url || href).split('?')[1] || '';
1151
- if (!paramStr) return '';
1152
1291
  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;
1292
+ if (paramStr) {
1293
+ var _context7;
1294
+ (0, _forEach.default)(_context7 = paramStr.split('&')).call(_context7, function (item) {
1295
+ var _item$split = item.split('='),
1296
+ k = _item$split[0],
1297
+ value = _item$split[1];
1298
+ if (k) {
1299
+ var decodedKey = decodeURIComponent(k);
1300
+ var decodedValue = decodeURIComponent(value || '');
1301
+
1302
+ // 处理重复参数,保存为数组
1303
+ if (params[decodedKey] !== undefined) {
1304
+ if (!(0, _isArray.default)(params[decodedKey])) {
1305
+ params[decodedKey] = [params[decodedKey]];
1306
+ }
1307
+ params[decodedKey].push(decodedValue);
1308
+ } else {
1309
+ params[decodedKey] = decodedValue;
1310
+ }
1311
+ }
1312
+ });
1313
+ }
1314
+ return name ? params[name] || '' : params;
1162
1315
  };
1163
1316
 
1164
1317
  /**
@@ -1166,7 +1319,8 @@ var getParams = exports.getParams = function getParams(key, url) {
1166
1319
  * @desc 获取并执行JS文件
1167
1320
  * @author huangbo
1168
1321
  * @date 2022年5月7日
1169
- * @param {String} [url] - 脚本地址
1322
+ * @param {String} url - 脚本地址
1323
+ * @return {Promise} Promise对象
1170
1324
  **/
1171
1325
  var getScript = exports.getScript = function getScript(url) {
1172
1326
  return new _promise.default(function (resolve, reject) {
@@ -1191,6 +1345,7 @@ var getScript = exports.getScript = function getScript(url) {
1191
1345
  * @date 2022年5月7日
1192
1346
  * @param {Element} [el] - dom元素
1193
1347
  * @param {String} [style] - 样式名称
1348
+ * @return {string} 样式值
1194
1349
  **/
1195
1350
  var getStyle = exports.getStyle = function getStyle(el, style) {
1196
1351
  if (!el || !style) return '';
@@ -1215,6 +1370,7 @@ var getStyle = exports.getStyle = function getStyle(el, style) {
1215
1370
  * @author huangbo
1216
1371
  * @date 2022年5月7日
1217
1372
  * @param {String} [type] - 类型
1373
+ * @return {string} 转换后的类型文本
1218
1374
  **/
1219
1375
  var getTypeName = exports.getTypeName = function getTypeName(type) {
1220
1376
  if (!type) return '';
@@ -1240,8 +1396,9 @@ var getTypeName = exports.getTypeName = function getTypeName(type) {
1240
1396
  * @desc 处理数据获取值
1241
1397
  * @author huangbo
1242
1398
  * @date 2022年5月7日
1243
- * @param {Any} [obj] - 数据源
1399
+ * @param {Object} [obj] - 数据源
1244
1400
  * @param {String} [key] - 键名,支持a.b.c形式
1401
+ * @return {*} 获取的值
1245
1402
  **/
1246
1403
  var getValues = exports.getValues = function getValues(obj, key) {
1247
1404
  if (!obj || !key) return obj;
@@ -1259,6 +1416,7 @@ var getValues = exports.getValues = function getValues(obj, key) {
1259
1416
  * @desc 获取缩放比
1260
1417
  * @author huangbo
1261
1418
  * @date 2022年5月7日
1419
+ * @return {number} 缩放比例
1262
1420
  **/
1263
1421
  var getZoom = exports.getZoom = function getZoom() {
1264
1422
  // 获取当前页面的缩放比例
@@ -1289,6 +1447,7 @@ var getZoom = exports.getZoom = function getZoom() {
1289
1447
  * @desc 获取同域top窗口
1290
1448
  * @author huangbo
1291
1449
  * @date 2022年5月7日
1450
+ * @return {Window} 同域的top窗口
1292
1451
  **/
1293
1452
  var getMyWinTop = exports.getMyWinTop = function getMyWinTop() {
1294
1453
  var win = window.__WUJIE_RAW_WINDOW__ ? window.__WUJIE_RAW_WINDOW__ : window;
@@ -1312,6 +1471,7 @@ var getMyWinTop = exports.getMyWinTop = function getMyWinTop() {
1312
1471
  * @author huangbo
1313
1472
  * @date 2022年5月7日
1314
1473
  * @param {String} [str] - 字符串
1474
+ * @return {number} 字符个数(中文算2个,其他算1个)
1315
1475
  **/
1316
1476
  var getLength = exports.getLength = function getLength(str) {
1317
1477
  if (!str) return 0;
@@ -1336,6 +1496,7 @@ var getLength = exports.getLength = function getLength(str) {
1336
1496
  * @author huangbo
1337
1497
  * @date 2022年5月7日
1338
1498
  * @param {String} [url] - url地址
1499
+ * @return {string} 更新时间戳后的url
1339
1500
  **/
1340
1501
  var timestampUrl = exports.timestampUrl = function timestampUrl(url) {
1341
1502
  if (!url) return '';
@@ -1357,7 +1518,8 @@ var timestampUrl = exports.timestampUrl = function timestampUrl(url) {
1357
1518
  * @author huangbo
1358
1519
  * @date 2022年5月7日
1359
1520
  * @param {String} [str] - 被检测字符串
1360
- * @param {String} [chars] - 目标字符
1521
+ * @param {String|Array} [chars] - 目标字符
1522
+ * @return {boolean} 是否包含目标字符
1361
1523
  **/
1362
1524
  var hasChars = exports.hasChars = function hasChars(str, chars) {
1363
1525
  if (!str || !chars) return false;
@@ -1379,8 +1541,9 @@ var hasChars = exports.hasChars = function hasChars(str, chars) {
1379
1541
  * @desc 验证值是否相同
1380
1542
  * @author huangbo
1381
1543
  * @date 2022年5月7日
1382
- * @param {Any} [a] - 第一个值
1383
- * @param {Any} [b] - 第二个值
1544
+ * @param {*} [a] - 第一个值
1545
+ * @param {*} [b] - 第二个值
1546
+ * @return {boolean} 值是否相同
1384
1547
  **/
1385
1548
  var _identical = exports.identical = function identical(a, b) {
1386
1549
  // 如果是严格相等,直接返回
@@ -1421,17 +1584,52 @@ var _identical = exports.identical = function identical(a, b) {
1421
1584
  /**
1422
1585
  * indexOfObj
1423
1586
  * @desc 查找数组对象下标
1424
- * @author huangbo
1425
- * @date 2022年5月7日
1426
- * @param {Array} [arr] - 源数组
1427
- * @param {String} [key] - 键名
1428
- * @param {String} [value] - 键值
1429
- **/
1430
- var indexOfObj = exports.indexOfObj = function indexOfObj(arr, key, value) {
1431
- if (!(0, _isArray.default)(arr) || !key) return -1;
1432
- for (var i = 0; i < arr.length; i++) {
1433
- if (arr[i] && arr[i][key] === value) {
1434
- return i;
1587
+ * @param {Array} arry - 被查找的数组
1588
+ * @param {Object|string} target - 目标对象或字符串值
1589
+ * @param {string|Array<string>} key - 目标对象的属性名,可以是逗号分隔的字符串或数组
1590
+ * @returns {number} 找到返回下标,未找到返回-1
1591
+ */
1592
+ var indexOfObj = exports.indexOfObj = function indexOfObj(arry, target, key) {
1593
+ var _context8;
1594
+ // 参数校验
1595
+ if (!(0, _isArray.default)(arry)) {
1596
+ return -1;
1597
+ }
1598
+
1599
+ // 没有key的情况:直接比较对象
1600
+ if (!key) {
1601
+ var targetStr = (0, _stringify.default)(target);
1602
+ for (var i = 0; i < arry.length; i++) {
1603
+ if ((0, _stringify.default)(arry[i]) === targetStr) {
1604
+ return i;
1605
+ }
1606
+ }
1607
+ return -1;
1608
+ }
1609
+
1610
+ // 统一处理key为数组
1611
+ var keys = (0, _isArray.default)(key) ? key : typeof key === 'string' ? (0, _map2.default)(_context8 = key.split(',')).call(_context8, function (k) {
1612
+ return (0, _trim.default)(k).call(k);
1613
+ }) : [];
1614
+
1615
+ // 遍历数组查找匹配项
1616
+ for (var _i2 = 0; _i2 < arry.length; _i2++) {
1617
+ var currentItem = arry[_i2];
1618
+
1619
+ // 遍历所有key进行匹配
1620
+ for (var j = 0; j < keys.length; j++) {
1621
+ var currentKey = keys[j];
1622
+
1623
+ // 如果target是字符串,直接比较
1624
+ if (typeof target === 'string') {
1625
+ if (currentItem[currentKey] === target) {
1626
+ return _i2;
1627
+ }
1628
+ } else if (target && typeof target === 'object') {
1629
+ if (currentItem[currentKey] === target[currentKey]) {
1630
+ return _i2;
1631
+ }
1632
+ }
1435
1633
  }
1436
1634
  }
1437
1635
  return -1;
@@ -1442,7 +1640,8 @@ var indexOfObj = exports.indexOfObj = function indexOfObj(arr, key, value) {
1442
1640
  * @desc 判断是否为空
1443
1641
  * @author huangbo
1444
1642
  * @date 2022年5月7日
1445
- * @param {Any} [value] - 任意值
1643
+ * @param {*} [value] - 任意值
1644
+ * @return {boolean} 是否为空
1446
1645
  **/
1447
1646
  var isEmpty = exports.isEmpty = function isEmpty(value) {
1448
1647
  if (value === undefined || value === null) {
@@ -1465,7 +1664,8 @@ var isEmpty = exports.isEmpty = function isEmpty(value) {
1465
1664
  * @desc 判断是否存在
1466
1665
  * @author huangbo
1467
1666
  * @date 2022年5月7日
1468
- * @param {Any} [value] - 任意值
1667
+ * @param {*} [value] - 任意值
1668
+ * @return {boolean} 是否存在
1469
1669
  **/
1470
1670
  var isExist = exports.isExist = function isExist(value) {
1471
1671
  return value !== undefined && value !== null;
@@ -1476,7 +1676,8 @@ var isExist = exports.isExist = function isExist(value) {
1476
1676
  * @desc 判断是否是函数
1477
1677
  * @author huangbo
1478
1678
  * @date 2022年5月7日
1479
- * @param {Any} [value] - 任意值
1679
+ * @param {*} [value] - 任意值
1680
+ * @return {boolean} 是否是函数
1480
1681
  **/
1481
1682
  var isFunction = exports.isFunction = function isFunction(value) {
1482
1683
  return typeof value === 'function';
@@ -1487,8 +1688,9 @@ var isFunction = exports.isFunction = function isFunction(value) {
1487
1688
  * @desc 判断对象是否相等
1488
1689
  * @author huangbo
1489
1690
  * @date 2022年5月7日
1490
- * @param {Object} [a] - 第一个对象
1491
- * @param {Object} [b] - 第二个对象
1691
+ * @param {*} [a] - 第一个值
1692
+ * @param {*} [b] - 第二个值
1693
+ * @return {boolean} 对象是否相等
1492
1694
  **/
1493
1695
  var _isObjectEqual = exports.isObjectEqual = function isObjectEqual(a, b) {
1494
1696
  // 如果两者严格相等,直接返回true
@@ -1547,26 +1749,19 @@ var _isObjectEqual = exports.isObjectEqual = function isObjectEqual(a, b) {
1547
1749
  return true;
1548
1750
  };
1549
1751
 
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
1752
  /**
1560
1753
  * joinUrl
1561
1754
  * @desc 拼接路径
1562
1755
  * @author huangbo
1563
1756
  * @date 2022年5月7日
1564
- * @param {string} [url] - 地址
1565
- * @param {string/array} [reg] - 域名或者路径前缀
1757
+ * @param {Object} options - 参数选项
1758
+ * @param {string} options.url - 地址
1759
+ * @param {string|array} options.reg - 域名或者路径前缀
1760
+ * @return {string} 拼接后的url
1566
1761
  **/
1567
- var joinUrl = exports.joinUrl = function joinUrl(_ref5) {
1568
- var url = _ref5.url,
1569
- reg = _ref5.reg;
1762
+ var joinUrl = exports.joinUrl = function joinUrl(_ref6) {
1763
+ var url = _ref6.url,
1764
+ reg = _ref6.reg;
1570
1765
  // 类型检查
1571
1766
  if (typeof url !== 'string') {
1572
1767
  return url;
@@ -1618,7 +1813,7 @@ var joinUrl = exports.joinUrl = function joinUrl(_ref5) {
1618
1813
  * @desc 加载JS文件
1619
1814
  * @author huangbo
1620
1815
  * @date 2022年5月7日
1621
- * @param {String} [url] - JS文件地址
1816
+ * @param {String} url - JS文件地址
1622
1817
  * @param {Function} [callback] - 回调函数
1623
1818
  **/
1624
1819
  var loadJs = exports.loadJs = function loadJs(url, callback) {
@@ -1637,7 +1832,8 @@ var loadJs = exports.loadJs = function loadJs(url, callback) {
1637
1832
  * @desc 加载动画
1638
1833
  * @author huangbo
1639
1834
  * @date 2022年5月7日
1640
- * @param {String} [text] - 提示文本
1835
+ * @param {String} [text='请求中...'] - 提示文本
1836
+ * @return {Object} Loading实例
1641
1837
  **/
1642
1838
  var loading = exports.loading = function loading(text) {
1643
1839
  if (text === void 0) {
@@ -1656,6 +1852,7 @@ var loading = exports.loading = function loading(text) {
1656
1852
  * @author huangbo
1657
1853
  * @date 2022年5月7日
1658
1854
  * @param {String} [str] - 字符串
1855
+ * @return {string} 转换后的字符串
1659
1856
  **/
1660
1857
  var lowerCase = exports.lowerCase = function lowerCase(str) {
1661
1858
  if (typeof str !== 'string') return str;
@@ -1668,6 +1865,7 @@ var lowerCase = exports.lowerCase = function lowerCase(str) {
1668
1865
  * @author huangbo
1669
1866
  * @date 2022年5月7日
1670
1867
  * @param {Element} [el] - dom元素
1868
+ * @return {boolean} 是否溢出
1671
1869
  **/
1672
1870
  var overbrim = exports.overbrim = function overbrim(el) {
1673
1871
  if (!el) return false;
@@ -1698,6 +1896,7 @@ var overbrim = exports.overbrim = function overbrim(el) {
1698
1896
  * @author huangbo
1699
1897
  * @date 2022年5月7日
1700
1898
  * @param {Object} [obj] - 源对象
1899
+ * @return {string} URL参数字符串
1701
1900
  **/
1702
1901
  var queryParams = exports.queryParams = function queryParams(obj) {
1703
1902
  if (!obj || typeof obj !== 'object') return '';
@@ -1727,6 +1926,7 @@ var queryParams = exports.queryParams = function queryParams(obj) {
1727
1926
  * @author huangbo
1728
1927
  * @date 2022年5月7日
1729
1928
  * @param {Function} [callback] - 回调函数
1929
+ * @return {Function} 移除监听器的函数
1730
1930
  **/
1731
1931
  var receiveMessage = exports.receiveMessage = function receiveMessage(callback) {
1732
1932
  var handleMessage = function handleMessage(event) {
@@ -1748,7 +1948,8 @@ var receiveMessage = exports.receiveMessage = function receiveMessage(callback)
1748
1948
  * @author huangbo
1749
1949
  * @date 2022年5月7日
1750
1950
  * @param {Number} [num] - 数字
1751
- * @param {Number} [digits] - 小数位数
1951
+ * @param {Number} [digits=2] - 小数位数
1952
+ * @return {string} 补全后的数字字符串
1752
1953
  **/
1753
1954
  var replenish = exports.replenish = function replenish(num, digits) {
1754
1955
  if (digits === void 0) {
@@ -1767,6 +1968,7 @@ var replenish = exports.replenish = function replenish(num, digits) {
1767
1968
  * @author huangbo
1768
1969
  * @date 2022年5月7日
1769
1970
  * @param {Number} [num] - 金额
1971
+ * @return {string} 人民币大写
1770
1972
  **/
1771
1973
  var rmbToCapital = exports.rmbToCapital = function rmbToCapital(num) {
1772
1974
  // 检查输入是否为数字
@@ -1805,10 +2007,10 @@ var rmbToCapital = exports.rmbToCapital = function rmbToCapital(num) {
1805
2007
  // 处理小数部分
1806
2008
  var decimalCapital = '';
1807
2009
  if ((0, _parseInt2.default)(decimalPart, 10) > 0) {
1808
- for (var _i2 = 0; _i2 < decimalPart.length; _i2++) {
1809
- var _digit = (0, _parseInt2.default)(decimalPart[_i2], 10);
2010
+ for (var _i3 = 0; _i3 < decimalPart.length; _i3++) {
2011
+ var _digit = (0, _parseInt2.default)(decimalPart[_i3], 10);
1810
2012
  if (_digit > 0) {
1811
- decimalCapital += chineseNumbers[_digit] + decimalUnits[_i2];
2013
+ decimalCapital += chineseNumbers[_digit] + decimalUnits[_i3];
1812
2014
  } else if (decimalCapital[decimalCapital.length - 1] !== chineseNumbers[0]) {
1813
2015
  decimalCapital += chineseNumbers[_digit];
1814
2016
  }
@@ -1867,12 +2069,13 @@ var setScale = exports.setScale = function setScale(scale) {
1867
2069
  * @desc 向iframe发送信息
1868
2070
  * @author huangbo
1869
2071
  * @date 2022年5月7日
1870
- * @param {String} [id] - iframe元素id
1871
- * @param {Object} [data] - 发送的数据
2072
+ * @param {Object} options - 参数选项
2073
+ * @param {String} options.id - iframe元素id
2074
+ * @param {Object} options.data - 发送的数据
1872
2075
  **/
1873
- var sendMessage = exports.sendMessage = function sendMessage(_ref6) {
1874
- var id = _ref6.id,
1875
- data = _ref6.data;
2076
+ var sendMessage = exports.sendMessage = function sendMessage(_ref7) {
2077
+ var id = _ref7.id,
2078
+ data = _ref7.data;
1876
2079
  var iframe = document.getElementById(id);
1877
2080
  if (!iframe) {
1878
2081
  console.error("iframe with id " + id + " not found");
@@ -1891,7 +2094,7 @@ var sendMessage = exports.sendMessage = function sendMessage(_ref6) {
1891
2094
  * @desc 设置浏览器图标
1892
2095
  * @author huangbo
1893
2096
  * @date 2022年5月7日
1894
- * @param {String} [url] - 图标URL
2097
+ * @param {String} url - 图标URL
1895
2098
  **/
1896
2099
  var setFavicon = exports.setFavicon = function setFavicon(url) {
1897
2100
  if (!url) {
@@ -1923,7 +2126,8 @@ var setFavicon = exports.setFavicon = function setFavicon(url) {
1923
2126
  * @desc 求和
1924
2127
  * @author huangbo
1925
2128
  * @date 2022年5月7日
1926
- * @param {...number} [numbers] - 数字
2129
+ * @param {...number} numbers - 数字
2130
+ * @return {number} 数字的总和
1927
2131
  **/
1928
2132
  var sum = exports.sum = function sum() {
1929
2133
  for (var _len4 = arguments.length, numbers = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
@@ -1946,6 +2150,7 @@ var sum = exports.sum = function sum() {
1946
2150
  * @date 2022年5月7日
1947
2151
  * @param {String} [str] - 源字符串
1948
2152
  * @param {String} [searchString] - 搜索字符串
2153
+ * @return {boolean} 是否以指定字符开头
1949
2154
  **/
1950
2155
  var startWith = exports.startWith = function startWith(str, searchString) {
1951
2156
  if (typeof str !== 'string' || typeof searchString !== 'string') {
@@ -1961,6 +2166,7 @@ var startWith = exports.startWith = function startWith(str, searchString) {
1961
2166
  * @date 2022年5月7日
1962
2167
  * @param {String} [str] - 源字符串
1963
2168
  * @param {Number} [length] - 提取长度
2169
+ * @return {string} 提取后的字符串
1964
2170
  **/
1965
2171
  var takeLeft = exports.takeLeft = function takeLeft(str, length) {
1966
2172
  if (typeof str !== 'string' || typeof length !== 'number' || length < 0) {
@@ -1976,6 +2182,7 @@ var takeLeft = exports.takeLeft = function takeLeft(str, length) {
1976
2182
  * @date 2022年5月7日
1977
2183
  * @param {String} [str] - 源字符串
1978
2184
  * @param {Number} [length] - 提取长度
2185
+ * @return {string} 提取后的字符串
1979
2186
  **/
1980
2187
  var takeRight = exports.takeRight = function takeRight(str, length) {
1981
2188
  if (typeof str !== 'string' || typeof length !== 'number' || length < 0) {
@@ -1990,6 +2197,7 @@ var takeRight = exports.takeRight = function takeRight(str, length) {
1990
2197
  * @author huangbo
1991
2198
  * @date 2022年5月7日
1992
2199
  * @param {String} [str] - 源字符串
2200
+ * @return {string} 删除空格后的字符串
1993
2201
  **/
1994
2202
  var trimWhitespace = exports.trimWhitespace = function trimWhitespace(str) {
1995
2203
  if (typeof str !== 'string') {
@@ -2004,7 +2212,8 @@ var trimWhitespace = exports.trimWhitespace = function trimWhitespace(str) {
2004
2212
  * @author huangbo
2005
2213
  * @date 2022年5月7日
2006
2214
  * @param {Number} [num] - 浮点数
2007
- * @param {Number} [digits] - 小数位数
2215
+ * @param {Number} [digits=2] - 小数位数
2216
+ * @return {number} 保留小数位后的数字
2008
2217
  **/
2009
2218
  var toFixed = exports.toFixed = function toFixed(num, digits) {
2010
2219
  if (digits === void 0) {
@@ -2023,6 +2232,7 @@ var toFixed = exports.toFixed = function toFixed(num, digits) {
2023
2232
  * @author huangbo
2024
2233
  * @date 2022年5月7日
2025
2234
  * @param {String} [str] - 函数字符串
2235
+ * @return {Function|null} 转换后的函数或null
2026
2236
  **/
2027
2237
  var toFunction = exports.toFunction = function toFunction(str) {
2028
2238
  if (typeof str !== 'string') {
@@ -2071,6 +2281,7 @@ var updateTheme = exports.updateTheme = function updateTheme(color) {
2071
2281
  * @author huangbo
2072
2282
  * @date 2022年5月7日
2073
2283
  * @param {String} [str] - 字符串
2284
+ * @return {string} 转换后的字符串
2074
2285
  **/
2075
2286
  var upperType = exports.upperType = function upperType(str) {
2076
2287
  if (typeof str !== 'string') {
@@ -2084,25 +2295,47 @@ var upperType = exports.upperType = function upperType(str) {
2084
2295
  * @desc 对象转url拼接参数
2085
2296
  * @author huangbo
2086
2297
  * @date 2022年5月7日
2087
- * @param {String} [url] - 源url
2088
- * @param {Object} [params] - 参数对象
2298
+ * @param {String} [options.url] - 源url
2299
+ * @param {Object} [options.params] - 参数对象
2300
+ * @param {Boolean} [options.timestamp] - 是否添加时间戳
2089
2301
  **/
2090
- var urlJoinParams = exports.urlJoinParams = function urlJoinParams(url, params) {
2302
+ var urlJoinParams = exports.urlJoinParams = function urlJoinParams(_temp2) {
2303
+ var _ref8 = _temp2 === void 0 ? {} : _temp2,
2304
+ _ref8$url = _ref8.url,
2305
+ url = _ref8$url === void 0 ? '' : _ref8$url,
2306
+ _ref8$params = _ref8.params,
2307
+ params = _ref8$params === void 0 ? {} : _ref8$params,
2308
+ _ref8$timestamp = _ref8.timestamp,
2309
+ timestamp = _ref8$timestamp === void 0 ? false : _ref8$timestamp;
2091
2310
  if (typeof url !== 'string') {
2092
- return url;
2311
+ return '';
2093
2312
  }
2094
- if (!params || typeof params !== 'object') {
2095
- return url;
2313
+ if (!url) {
2314
+ return '';
2315
+ }
2316
+ // 处理URL中的锚点
2317
+ var urlWithoutHash = url;
2318
+ var hash = '';
2319
+ var hashIndex = (0, _indexOf.default)(url).call(url, '#');
2320
+ if (hashIndex > -1) {
2321
+ urlWithoutHash = (0, _slice.default)(url).call(url, 0, hashIndex);
2322
+ hash = (0, _slice.default)(url).call(url, hashIndex);
2323
+ }
2324
+ // 复制参数对象以避免修改原对象
2325
+ var paramsCopy = _extends({}, params);
2326
+ // 添加时间戳
2327
+ if (timestamp) {
2328
+ paramsCopy._t = (0, _now.default)();
2096
2329
  }
2097
2330
  // 将参数对象转换为URL参数字符串
2098
- var queryString = queryParams(params);
2331
+ var queryString = queryParams(paramsCopy);
2099
2332
  if (!queryString) {
2100
2333
  return url;
2101
2334
  }
2102
2335
  // 检查URL是否已经包含查询参数
2103
- var hasQuery = (0, _includes.default)(url).call(url, '?');
2336
+ var hasQuery = (0, _includes.default)(urlWithoutHash).call(urlWithoutHash, '?');
2104
2337
  // 拼接URL和查询参数
2105
- return "" + url + (hasQuery ? '&' : '?') + queryString;
2338
+ return "" + urlWithoutHash + (hasQuery ? '&' : '?') + queryString + hash;
2106
2339
  };
2107
2340
 
2108
2341
  /**
@@ -2207,11 +2440,11 @@ var watermark = exports.watermark = function watermark(text, options) {
2207
2440
  * @param {String} [target] - 打开方式
2208
2441
  * @param {String} [name] - 窗口名称
2209
2442
  **/
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;
2443
+ var winTopOpen = exports.winTopOpen = function winTopOpen(_ref9) {
2444
+ var url = _ref9.url,
2445
+ _ref9$target = _ref9.target,
2446
+ target = _ref9$target === void 0 ? '_blank' : _ref9$target,
2447
+ name = _ref9.name;
2215
2448
  try {
2216
2449
  if (target === '_blank') {
2217
2450
  window.top.open(url, name);