@yh-kit/utils 1.10.0 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/utils.js +189 -121
- package/dist/utils.umd.cjs +1 -1
- package/package.json +1 -1
- package/types/utils/lib/date/index.d.ts +14 -0
- package/types/utils/lib/download/index.d.ts +6 -0
package/dist/utils.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
const
|
|
1
|
+
const w = (e) => {
|
|
2
2
|
if (!e || !e.length) return {};
|
|
3
3
|
const n = {};
|
|
4
4
|
return e.forEach((t) => {
|
|
5
5
|
const o = Object.assign({ label: t.label, text: t.label }, t);
|
|
6
6
|
n[t?.value] = o;
|
|
7
7
|
}), n;
|
|
8
|
-
},
|
|
8
|
+
}, b = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
9
9
|
__proto__: null,
|
|
10
|
-
toEnumObj:
|
|
11
|
-
}, Symbol.toStringTag, { value: "Module" })),
|
|
10
|
+
toEnumObj: w
|
|
11
|
+
}, Symbol.toStringTag, { value: "Module" })), A = Object.assign(
|
|
12
12
|
{
|
|
13
13
|
/**
|
|
14
14
|
* 数组去重
|
|
@@ -130,10 +130,10 @@ const y = (e) => {
|
|
|
130
130
|
}
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
|
-
...
|
|
133
|
+
...b
|
|
134
134
|
}
|
|
135
135
|
);
|
|
136
|
-
class
|
|
136
|
+
class U {
|
|
137
137
|
/** Base64 编码表 */
|
|
138
138
|
static BASE64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
139
139
|
/**
|
|
@@ -146,15 +146,15 @@ class _ {
|
|
|
146
146
|
* @returns 返回转换后的Blob对象,如果转换失败,则返回null。
|
|
147
147
|
*/
|
|
148
148
|
static toBlob(n, t = "", o = 512) {
|
|
149
|
-
const s = (n.split(",")[1] || n).replace(/-/g, "+").replace(/_/g, "/"),
|
|
149
|
+
const s = (n.split(",")[1] || n).replace(/-/g, "+").replace(/_/g, "/"), a = "=".repeat((4 - s.length % 4) % 4), u = s + a;
|
|
150
150
|
try {
|
|
151
|
-
const i = atob(
|
|
152
|
-
for (let
|
|
153
|
-
const
|
|
154
|
-
for (let f = 0; f <
|
|
155
|
-
h[f] =
|
|
156
|
-
const
|
|
157
|
-
d.push(
|
|
151
|
+
const i = atob(u), d = [];
|
|
152
|
+
for (let c = 0; c < i.length; c += o) {
|
|
153
|
+
const l = i.slice(c, c + o), h = new Array(l.length);
|
|
154
|
+
for (let f = 0; f < l.length; f++)
|
|
155
|
+
h[f] = l.charCodeAt(f);
|
|
156
|
+
const p = new Uint8Array(h);
|
|
157
|
+
d.push(p);
|
|
158
158
|
}
|
|
159
159
|
return new Blob(d, { type: t });
|
|
160
160
|
} catch (i) {
|
|
@@ -172,15 +172,15 @@ class _ {
|
|
|
172
172
|
* @returns 返回一个File对象,包含解码后的数据。
|
|
173
173
|
*/
|
|
174
174
|
static toFile(n, t = "file.txt", o = "text/plain") {
|
|
175
|
-
const s = n.replace(/^data:.+;base64,/, "").replace(/-/g, "+").replace(/_/g, "/"),
|
|
176
|
-
for (let
|
|
177
|
-
const h = i.slice(
|
|
175
|
+
const s = n.replace(/^data:.+;base64,/, "").replace(/-/g, "+").replace(/_/g, "/"), a = "=".repeat((4 - s.length % 4) % 4), u = s + a, i = atob(u), d = [];
|
|
176
|
+
for (let l = 0; l < i.length; l += 512) {
|
|
177
|
+
const h = i.slice(l, l + 512), p = new Array(h.length);
|
|
178
178
|
for (let f = 0; f < h.length; f++)
|
|
179
|
-
|
|
180
|
-
d.push(new Uint8Array(
|
|
179
|
+
p[f] = h.charCodeAt(f);
|
|
180
|
+
d.push(new Uint8Array(p));
|
|
181
181
|
}
|
|
182
|
-
const
|
|
183
|
-
return new File([
|
|
182
|
+
const c = new Blob(d, { type: o });
|
|
183
|
+
return new File([c], t, { type: o });
|
|
184
184
|
}
|
|
185
185
|
/**
|
|
186
186
|
* base64加密 -- 普通字符串转 Base64 编码
|
|
@@ -218,10 +218,10 @@ class _ {
|
|
|
218
218
|
t.push(224 | r >> 12), t.push(128 | r >> 6 & 63), t.push(128 | r & 63);
|
|
219
219
|
else {
|
|
220
220
|
o++;
|
|
221
|
-
const s = r,
|
|
222
|
-
if (isNaN(
|
|
221
|
+
const s = r, a = n.charCodeAt(o);
|
|
222
|
+
if (isNaN(a))
|
|
223
223
|
throw new Error("代理对不完整");
|
|
224
|
-
r = 65536 + ((s & 1023) << 10) + (
|
|
224
|
+
r = 65536 + ((s & 1023) << 10) + (a & 1023), t.push(240 | r >> 18), t.push(128 | r >> 12 & 63), t.push(128 | r >> 6 & 63), t.push(128 | r & 63);
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
227
|
return t;
|
|
@@ -239,11 +239,11 @@ class _ {
|
|
|
239
239
|
const s = n[o++] & 63;
|
|
240
240
|
t += String.fromCharCode((r & 31) << 6 | s);
|
|
241
241
|
} else if (r >= 224 && r < 240) {
|
|
242
|
-
const s = n[o++] & 63,
|
|
243
|
-
t += String.fromCharCode((r & 15) << 12 | s << 6 |
|
|
242
|
+
const s = n[o++] & 63, a = n[o++] & 63;
|
|
243
|
+
t += String.fromCharCode((r & 15) << 12 | s << 6 | a);
|
|
244
244
|
} else if (r >= 240 && r < 248) {
|
|
245
|
-
const s = n[o++] & 63,
|
|
246
|
-
t += String.fromCharCode(d,
|
|
245
|
+
const s = n[o++] & 63, a = n[o++] & 63, u = n[o++] & 63, i = (r & 7) << 18 | s << 12 | a << 6 | u, d = Math.floor((i - 65536) / 1024) + 55296, c = (i - 65536) % 1024 + 56320;
|
|
246
|
+
t += String.fromCharCode(d, c);
|
|
247
247
|
} else
|
|
248
248
|
t += "�";
|
|
249
249
|
}
|
|
@@ -255,8 +255,8 @@ class _ {
|
|
|
255
255
|
static _bytesToBase64(n) {
|
|
256
256
|
let t = "", o = 0;
|
|
257
257
|
for (; o < n.length; ) {
|
|
258
|
-
const r = n[o++], s = o < n.length,
|
|
259
|
-
s ?
|
|
258
|
+
const r = n[o++], s = o < n.length, a = s ? n[o++] : 0, u = o < n.length, i = u ? n[o++] : 0, d = r >> 2, c = (r & 3) << 4 | a >> 4, l = (a & 15) << 2 | i >> 6, h = i & 63;
|
|
259
|
+
s ? u ? t += this.BASE64_CHARS.charAt(d) + this.BASE64_CHARS.charAt(c) + this.BASE64_CHARS.charAt(l) + this.BASE64_CHARS.charAt(h) : t += this.BASE64_CHARS.charAt(d) + this.BASE64_CHARS.charAt(c) + this.BASE64_CHARS.charAt(l) + "=" : t += this.BASE64_CHARS.charAt(d) + this.BASE64_CHARS.charAt(c) + "==";
|
|
260
260
|
}
|
|
261
261
|
return t;
|
|
262
262
|
}
|
|
@@ -267,27 +267,27 @@ class _ {
|
|
|
267
267
|
const t = n.length;
|
|
268
268
|
let o = 0;
|
|
269
269
|
t >= 2 && (n[t - 1] === "=" && o++, n[t - 2] === "=" && o++);
|
|
270
|
-
const r = Math.floor(t * 3 / 4) - o, s = new Array(r),
|
|
270
|
+
const r = Math.floor(t * 3 / 4) - o, s = new Array(r), a = new Array(256).fill(-1);
|
|
271
271
|
for (let d = 0; d < this.BASE64_CHARS.length; d++)
|
|
272
|
-
|
|
273
|
-
let
|
|
272
|
+
a[this.BASE64_CHARS.charCodeAt(d)] = d;
|
|
273
|
+
let u = 0, i = 0;
|
|
274
274
|
for (; i < t; ) {
|
|
275
|
-
const d =
|
|
276
|
-
if (d === -1 ||
|
|
275
|
+
const d = a[n.charCodeAt(i++)], c = a[n.charCodeAt(i++)], l = i < t ? a[n.charCodeAt(i++)] : -1, h = i < t ? a[n.charCodeAt(i++)] : -1;
|
|
276
|
+
if (d === -1 || c === -1)
|
|
277
277
|
throw new Error("无效的 Base64 字符");
|
|
278
|
-
const
|
|
279
|
-
if (s[
|
|
280
|
-
const f = (
|
|
281
|
-
if (s[
|
|
282
|
-
const
|
|
283
|
-
s[
|
|
278
|
+
const p = d << 2 | c >> 4;
|
|
279
|
+
if (s[u++] = p, l !== -1) {
|
|
280
|
+
const f = (c & 15) << 4 | l >> 2;
|
|
281
|
+
if (s[u++] = f, h !== -1) {
|
|
282
|
+
const g = (l & 3) << 6 | h;
|
|
283
|
+
s[u++] = g;
|
|
284
284
|
}
|
|
285
285
|
}
|
|
286
286
|
}
|
|
287
287
|
return s;
|
|
288
288
|
}
|
|
289
289
|
}
|
|
290
|
-
const
|
|
290
|
+
const S = {
|
|
291
291
|
/**
|
|
292
292
|
* 检查是否为空字符串
|
|
293
293
|
* @param str 要检查的字符串
|
|
@@ -431,7 +431,7 @@ const A = {
|
|
|
431
431
|
isMobile() {
|
|
432
432
|
return /Mobi|Android|iPhone/i.test(navigator.userAgent);
|
|
433
433
|
}
|
|
434
|
-
},
|
|
434
|
+
}, O = {
|
|
435
435
|
/**
|
|
436
436
|
* 通过传入的name获取cookie的值
|
|
437
437
|
* @param name cookie的name
|
|
@@ -461,7 +461,7 @@ const A = {
|
|
|
461
461
|
deleteCookie(e) {
|
|
462
462
|
this.setCookie(e, "", -1);
|
|
463
463
|
}
|
|
464
|
-
},
|
|
464
|
+
}, T = {
|
|
465
465
|
/**
|
|
466
466
|
* 获取当前时间字符串
|
|
467
467
|
* @param locales 区域设置。如:'zh-CN','en-US',"chinese"。默认'zh-CN'。
|
|
@@ -509,15 +509,74 @@ const A = {
|
|
|
509
509
|
o += 31;
|
|
510
510
|
break;
|
|
511
511
|
case 2:
|
|
512
|
-
|
|
512
|
+
S.isLeapYear(e) ? o += 29 : o += 28;
|
|
513
513
|
break;
|
|
514
514
|
default:
|
|
515
515
|
o += 30;
|
|
516
516
|
break;
|
|
517
517
|
}
|
|
518
518
|
return o;
|
|
519
|
+
},
|
|
520
|
+
/**
|
|
521
|
+
* 获取时间字符串(自动短化)
|
|
522
|
+
* @param timestamp 时间戳
|
|
523
|
+
* @param mustIncludeTime 是否必须包含时间
|
|
524
|
+
* @returns 时间字符串
|
|
525
|
+
*/
|
|
526
|
+
getTimeStringAutoShort2(e, n) {
|
|
527
|
+
const t = /* @__PURE__ */ new Date(), o = new Date(e), r = t.getFullYear(), s = t.getMonth() + 1, a = t.getDate(), u = o.getFullYear(), i = o.getMonth() + 1, d = o.getDate();
|
|
528
|
+
let c = "";
|
|
529
|
+
const l = n ? " " + this.formatDate(o, "hh:mm") : "";
|
|
530
|
+
if (r === u) {
|
|
531
|
+
const f = t.getTime() - e;
|
|
532
|
+
if (s === i && a === d)
|
|
533
|
+
f < 60 * 1e3 ? c = "刚刚" : c = this.formatDate(o, "hh:mm");
|
|
534
|
+
else {
|
|
535
|
+
const g = /* @__PURE__ */ new Date();
|
|
536
|
+
g.setDate(g.getDate() - 1);
|
|
537
|
+
const m = /* @__PURE__ */ new Date();
|
|
538
|
+
if (m.setDate(m.getDate() - 2), i === g.getMonth() + 1 && d === g.getDate())
|
|
539
|
+
c = "昨天" + l;
|
|
540
|
+
else if (i === m.getMonth() + 1 && d === m.getDate())
|
|
541
|
+
c = "前天" + l;
|
|
542
|
+
else if (f / 36e5 <= 7 * 24) {
|
|
543
|
+
const y = new Array(7);
|
|
544
|
+
y[0] = "星期日", y[1] = "星期一", y[2] = "星期二", y[3] = "星期三", y[4] = "星期四", y[5] = "星期五", y[6] = "星期六", c = y[o.getDay()] + l;
|
|
545
|
+
} else c = this.formatDate(o, "yyyy/M/d") + l;
|
|
546
|
+
}
|
|
547
|
+
} else
|
|
548
|
+
c = this.formatDate(o, "yyyy/M/d") + l;
|
|
549
|
+
return c;
|
|
550
|
+
},
|
|
551
|
+
/**
|
|
552
|
+
* 格式化日期
|
|
553
|
+
* @param date 日期对象
|
|
554
|
+
* @param fmt 格式化字符串
|
|
555
|
+
* @returns 格式化后的日期字符串
|
|
556
|
+
*/
|
|
557
|
+
formatDate(e, n) {
|
|
558
|
+
const t = {
|
|
559
|
+
"M+": e.getMonth() + 1,
|
|
560
|
+
//月份
|
|
561
|
+
"d+": e.getDate(),
|
|
562
|
+
//日
|
|
563
|
+
"h+": e.getHours(),
|
|
564
|
+
//小时
|
|
565
|
+
"m+": e.getMinutes(),
|
|
566
|
+
//分
|
|
567
|
+
"s+": e.getSeconds(),
|
|
568
|
+
//秒
|
|
569
|
+
"q+": Math.floor((e.getMonth() + 3) / 3),
|
|
570
|
+
//季度
|
|
571
|
+
S: e.getMilliseconds()
|
|
572
|
+
//毫秒
|
|
573
|
+
};
|
|
574
|
+
/(y+)/.test(n) && (n = n.replace(RegExp.$1, (e.getFullYear() + "").substr(4 - RegExp.$1.length)));
|
|
575
|
+
for (const o in t)
|
|
576
|
+
new RegExp("(" + o + ")").test(n) && (n = n.replace(RegExp.$1, RegExp.$1.length === 1 ? t[o] : ("00" + t[o]).substr(("" + t[o]).length)));
|
|
577
|
+
return n;
|
|
519
578
|
}
|
|
520
|
-
},
|
|
579
|
+
}, L = {
|
|
521
580
|
/**
|
|
522
581
|
* 获取元素相对于文档顶部的偏移量(距离)
|
|
523
582
|
* 处理了SVG元素的特殊情况。
|
|
@@ -588,7 +647,7 @@ const A = {
|
|
|
588
647
|
getViewportHeight() {
|
|
589
648
|
return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
|
|
590
649
|
}
|
|
591
|
-
},
|
|
650
|
+
}, I = {
|
|
592
651
|
/**
|
|
593
652
|
* 将blob对象转化成文件并导出到本地
|
|
594
653
|
* @param blob blob对象
|
|
@@ -597,8 +656,17 @@ const A = {
|
|
|
597
656
|
saveAsBlob(e, n) {
|
|
598
657
|
const t = document.createElement("a"), o = window.URL.createObjectURL(e);
|
|
599
658
|
t.href = o, t.download = n, document.body.appendChild(t), t.click(), URL.revokeObjectURL(o), document.body.removeChild(t);
|
|
659
|
+
},
|
|
660
|
+
/**
|
|
661
|
+
* 直接下载url
|
|
662
|
+
* @param url 下载url
|
|
663
|
+
* @param filename 文件名
|
|
664
|
+
*/
|
|
665
|
+
saveAsUrl(e, n) {
|
|
666
|
+
const t = document.createElement("a");
|
|
667
|
+
t.href = e, t.download = n, document.body.appendChild(t), t.click(), URL.revokeObjectURL(e), document.body.removeChild(t);
|
|
600
668
|
}
|
|
601
|
-
},
|
|
669
|
+
}, k = {
|
|
602
670
|
/**
|
|
603
671
|
* echarts动画函数
|
|
604
672
|
* @param option echarts配置
|
|
@@ -630,7 +698,7 @@ const A = {
|
|
|
630
698
|
});
|
|
631
699
|
});
|
|
632
700
|
}
|
|
633
|
-
},
|
|
701
|
+
}, H = {
|
|
634
702
|
/**
|
|
635
703
|
* 将选中的字母数组从A-Z排序:用于试题选择答案的排序实例
|
|
636
704
|
* @param arr 字母数组
|
|
@@ -642,7 +710,7 @@ const A = {
|
|
|
642
710
|
return r < s ? -1 : r > s ? 1 : 0;
|
|
643
711
|
}) : void 0;
|
|
644
712
|
}
|
|
645
|
-
},
|
|
713
|
+
}, j = {
|
|
646
714
|
/**
|
|
647
715
|
* 角度(度数)转弧度
|
|
648
716
|
* 在数学和编程里,角度有两种常用单位,分别是度(°)和弧度(rad)。
|
|
@@ -663,10 +731,10 @@ const A = {
|
|
|
663
731
|
* @returns 距离值 单位:km
|
|
664
732
|
*/
|
|
665
733
|
getDistance(e, n, t, o) {
|
|
666
|
-
const r = this.degrees2Radians(e), s = this.degrees2Radians(t),
|
|
734
|
+
const r = this.degrees2Radians(e), s = this.degrees2Radians(t), a = r - s, u = this.degrees2Radians(n) - this.degrees2Radians(o);
|
|
667
735
|
let i = 2 * Math.asin(
|
|
668
736
|
Math.sqrt(
|
|
669
|
-
Math.pow(Math.sin(
|
|
737
|
+
Math.pow(Math.sin(a / 2), 2) + Math.cos(r) * Math.cos(s) * Math.pow(Math.sin(u / 2), 2)
|
|
670
738
|
)
|
|
671
739
|
);
|
|
672
740
|
return i = i * 6378.137, i = Math.round(i * 1e4) / 1e4, i = +i.toFixed(2), console.log("经纬度计算的距离为:" + i), i;
|
|
@@ -687,22 +755,22 @@ const A = {
|
|
|
687
755
|
* @returns 距离值
|
|
688
756
|
*/
|
|
689
757
|
calculateDistanceByHaversine(e, n, t = "km") {
|
|
690
|
-
const o = this, r = e.longitude ?? e.lng, s = e.latitude ?? e.lat,
|
|
691
|
-
if (r === void 0 || s === void 0 ||
|
|
758
|
+
const o = this, r = e.longitude ?? e.lng, s = e.latitude ?? e.lat, a = n.longitude ?? n.lng, u = n.latitude ?? n.lat;
|
|
759
|
+
if (r === void 0 || s === void 0 || a === void 0 || u === void 0)
|
|
692
760
|
throw new Error("无效的坐标格式,缺少经纬度信息");
|
|
693
|
-
const i = 6371, d = o.degrees2Radians(s),
|
|
761
|
+
const i = 6371, d = o.degrees2Radians(s), c = o.degrees2Radians(u), l = o.degrees2Radians(u - s), h = o.degrees2Radians(a - r), p = Math.sin(l / 2) * Math.sin(l / 2) + Math.cos(d) * Math.cos(c) * Math.sin(h / 2) * Math.sin(h / 2), f = 2 * Math.atan2(Math.sqrt(p), Math.sqrt(1 - p)), g = i * f;
|
|
694
762
|
switch (t) {
|
|
695
763
|
case "m":
|
|
696
|
-
return
|
|
764
|
+
return g * 1e3;
|
|
697
765
|
// 米
|
|
698
766
|
case "mi":
|
|
699
|
-
return
|
|
767
|
+
return g * 0.621371;
|
|
700
768
|
// 英里
|
|
701
769
|
case "nmi":
|
|
702
|
-
return
|
|
770
|
+
return g * 0.539957;
|
|
703
771
|
// 海里
|
|
704
772
|
default:
|
|
705
|
-
return
|
|
773
|
+
return g;
|
|
706
774
|
}
|
|
707
775
|
},
|
|
708
776
|
/**
|
|
@@ -718,8 +786,8 @@ const A = {
|
|
|
718
786
|
const o = [];
|
|
719
787
|
let r = 0;
|
|
720
788
|
for (let s = 0; s < e.length - 1; s++) {
|
|
721
|
-
const
|
|
722
|
-
o.push(
|
|
789
|
+
const a = this.calculateDistanceByHaversine(e[s], e[s + 1], n);
|
|
790
|
+
o.push(a), r += a;
|
|
723
791
|
}
|
|
724
792
|
if (t && e.length > 2) {
|
|
725
793
|
const s = this.calculateDistanceByHaversine(e[e.length - 1], e[0], n);
|
|
@@ -728,7 +796,7 @@ const A = {
|
|
|
728
796
|
return { segments: o, total: r };
|
|
729
797
|
}
|
|
730
798
|
};
|
|
731
|
-
class
|
|
799
|
+
class $ {
|
|
732
800
|
/**
|
|
733
801
|
* 转换为标准金额格式(带千分位和两位小数)
|
|
734
802
|
* @param num 要转换的数字
|
|
@@ -758,40 +826,40 @@ class j {
|
|
|
758
826
|
throw new Error("输入不是有效的数字");
|
|
759
827
|
if (t > 9999999999999e-2 || t < -9999999999999e-2)
|
|
760
828
|
throw new Error("输入数字超出范围");
|
|
761
|
-
const o = t < 0, r = Math.abs(t), s = Math.floor(r),
|
|
762
|
-
let
|
|
763
|
-
if (
|
|
764
|
-
|
|
829
|
+
const o = t < 0, r = Math.abs(t), s = Math.floor(r), a = Math.round((r - s) * 100), u = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"], i = ["", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"], d = ["角", "分"];
|
|
830
|
+
let c = "", l = s;
|
|
831
|
+
if (l === 0)
|
|
832
|
+
c = u[0];
|
|
765
833
|
else {
|
|
766
834
|
let f = 0;
|
|
767
|
-
for (;
|
|
768
|
-
const
|
|
769
|
-
|
|
835
|
+
for (; l > 0; ) {
|
|
836
|
+
const g = l % 10;
|
|
837
|
+
g !== 0 ? c = u[g] + i[f] + c : c.charAt(0) !== u[0] && (c = u[g] + c), l = Math.floor(l / 10), f++;
|
|
770
838
|
}
|
|
771
|
-
|
|
839
|
+
c = c.replace(/零+/g, "零"), c = c.replace(/零+$/, "");
|
|
772
840
|
}
|
|
773
841
|
let h = "";
|
|
774
|
-
if (
|
|
775
|
-
const f = Math.floor(
|
|
776
|
-
f > 0 && (h +=
|
|
842
|
+
if (a > 0) {
|
|
843
|
+
const f = Math.floor(a / 10), g = a % 10;
|
|
844
|
+
f > 0 && (h += u[f] + d[0]), g > 0 && (h += u[g] + d[1]);
|
|
777
845
|
} else
|
|
778
846
|
h = "整";
|
|
779
|
-
let
|
|
780
|
-
return
|
|
847
|
+
let p = (o ? "负" : "") + c + "圆" + h;
|
|
848
|
+
return p === "零圆整" && (p = "零圆"), p;
|
|
781
849
|
} catch (t) {
|
|
782
850
|
return console.error("转换失败:", t), "格式错误";
|
|
783
851
|
}
|
|
784
852
|
}
|
|
785
853
|
}
|
|
786
|
-
const
|
|
854
|
+
const M = (e) => e > 25 || e < 0 ? "" : "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e], x = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
787
855
|
__proto__: null,
|
|
788
|
-
toLetter:
|
|
789
|
-
}, Symbol.toStringTag, { value: "Module" })),
|
|
856
|
+
toLetter: M
|
|
857
|
+
}, Symbol.toStringTag, { value: "Module" })), E = (e) => e.toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","), C = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
790
858
|
__proto__: null,
|
|
791
|
-
toMoney:
|
|
792
|
-
}, Symbol.toStringTag, { value: "Module" })),
|
|
793
|
-
...
|
|
794
|
-
...
|
|
859
|
+
toMoney: E
|
|
860
|
+
}, Symbol.toStringTag, { value: "Module" })), N = {
|
|
861
|
+
...x,
|
|
862
|
+
...C,
|
|
795
863
|
/**
|
|
796
864
|
* 判断是否为数字
|
|
797
865
|
* @param val 待判断的值
|
|
@@ -800,7 +868,7 @@ const b = (e) => e > 25 || e < 0 ? "" : "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e], S = /*
|
|
|
800
868
|
isNumber(e) {
|
|
801
869
|
return typeof e == "number" && !isNaN(e);
|
|
802
870
|
}
|
|
803
|
-
},
|
|
871
|
+
}, P = {
|
|
804
872
|
/**
|
|
805
873
|
* 判断对象是否为空
|
|
806
874
|
* @param obj 对象
|
|
@@ -831,7 +899,7 @@ const b = (e) => e > 25 || e < 0 ? "" : "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e], S = /*
|
|
|
831
899
|
o instanceof Object ? (n[t] = {}, this.deepCopy(o, n[t])) : o instanceof Array ? (n[t] = [], this.deepCopy(o, n[t])) : n[t] = e[t];
|
|
832
900
|
}
|
|
833
901
|
}
|
|
834
|
-
},
|
|
902
|
+
}, F = {
|
|
835
903
|
/**
|
|
836
904
|
* 脱敏
|
|
837
905
|
* @param phone 电话号码/手机号码
|
|
@@ -840,7 +908,7 @@ const b = (e) => e > 25 || e < 0 ? "" : "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e], S = /*
|
|
|
840
908
|
desensitize(e) {
|
|
841
909
|
return e ? e.replace(/^(\d{3})\d{4}(\d{4})$/, "$1****$2") || e.slice(0, 3) + "****" + e.slice(7) : "";
|
|
842
910
|
}
|
|
843
|
-
},
|
|
911
|
+
}, V = {
|
|
844
912
|
/**
|
|
845
913
|
* 生成随机颜色
|
|
846
914
|
* @returns 随机颜色值
|
|
@@ -864,7 +932,7 @@ const b = (e) => e > 25 || e < 0 ? "" : "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e], S = /*
|
|
|
864
932
|
uniqueId() {
|
|
865
933
|
return Date.now().toString(36) + Math.random().toString(36).substr(2, 5);
|
|
866
934
|
}
|
|
867
|
-
},
|
|
935
|
+
}, W = {
|
|
868
936
|
/**
|
|
869
937
|
* 验证手机号
|
|
870
938
|
*/
|
|
@@ -901,7 +969,7 @@ const b = (e) => e > 25 || e < 0 ? "" : "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e], S = /*
|
|
|
901
969
|
* 验证0.01~0.99正则:最多两位小数。0.1、0.10、0.9、0.90
|
|
902
970
|
*/
|
|
903
971
|
decimal: /^0\.(0[1-9]|[1-9][0-9]*)$/
|
|
904
|
-
},
|
|
972
|
+
}, Y = {
|
|
905
973
|
/**
|
|
906
974
|
* 通过key值获取 localStorage 中存储的某个值
|
|
907
975
|
* @param key 获取的key
|
|
@@ -948,7 +1016,7 @@ const b = (e) => e > 25 || e < 0 ? "" : "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e], S = /*
|
|
|
948
1016
|
removeSession(e) {
|
|
949
1017
|
sessionStorage.removeItem(e);
|
|
950
1018
|
}
|
|
951
|
-
},
|
|
1019
|
+
}, z = {
|
|
952
1020
|
/**
|
|
953
1021
|
* 判断某元素是否在字符串中-比includes()方法更兼容,includes为ES6新增方法,IE不支持。小程序也不支持
|
|
954
1022
|
* @param str 字符串
|
|
@@ -1004,8 +1072,8 @@ const b = (e) => e > 25 || e < 0 ? "" : "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e], S = /*
|
|
|
1004
1072
|
getMaxTimesAndVal(e) {
|
|
1005
1073
|
const n = [0, ""], t = {};
|
|
1006
1074
|
for (let s = 0; s < e.length; s++) {
|
|
1007
|
-
const
|
|
1008
|
-
t[
|
|
1075
|
+
const a = e.charAt(s);
|
|
1076
|
+
t[a] ? t[a]++ : t[a] = 1;
|
|
1009
1077
|
}
|
|
1010
1078
|
let o = 1;
|
|
1011
1079
|
for (const s in t)
|
|
@@ -1019,15 +1087,15 @@ const b = (e) => e > 25 || e < 0 ? "" : "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e], S = /*
|
|
|
1019
1087
|
const t = new RegExp("[?&]" + e + "=([^&#]*)", "i").exec(window.location.href);
|
|
1020
1088
|
return t ? decodeURIComponent(t[1]) : null;
|
|
1021
1089
|
};
|
|
1022
|
-
function
|
|
1090
|
+
function D(e) {
|
|
1023
1091
|
return new URLSearchParams(window.location.search).get(e);
|
|
1024
1092
|
}
|
|
1025
|
-
const
|
|
1093
|
+
const R = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
1026
1094
|
__proto__: null,
|
|
1027
1095
|
getQueryInfoByName: B,
|
|
1028
|
-
getQueryParam:
|
|
1029
|
-
}, Symbol.toStringTag, { value: "Module" })),
|
|
1030
|
-
...
|
|
1096
|
+
getQueryParam: D
|
|
1097
|
+
}, Symbol.toStringTag, { value: "Module" })), q = {
|
|
1098
|
+
...R,
|
|
1031
1099
|
/**
|
|
1032
1100
|
* 获取当前域名
|
|
1033
1101
|
* @returns 当前url链接的host信息
|
|
@@ -1042,7 +1110,7 @@ const E = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
1042
1110
|
getPath() {
|
|
1043
1111
|
return window.location.pathname;
|
|
1044
1112
|
}
|
|
1045
|
-
},
|
|
1113
|
+
}, Z = {
|
|
1046
1114
|
/**
|
|
1047
1115
|
* 处理瀑布流数据,使其竖向瀑布流布局呈现横向瀑布流的展现形式。适用于 column-gap: 20rpx; column-count: 2; 布局的瀑布流
|
|
1048
1116
|
* @param list 瀑布流数据-数组
|
|
@@ -1067,37 +1135,37 @@ const E = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
1067
1135
|
* @param step 间距
|
|
1068
1136
|
*/
|
|
1069
1137
|
jsLayout(e, n, t) {
|
|
1070
|
-
const o = e.offsetWidth, r = n[0].offsetWidth, s = parseInt((o / r).toString()),
|
|
1138
|
+
const o = e.offsetWidth, r = n[0].offsetWidth, s = parseInt((o / r).toString()), a = (o - r * s) / (s - 1), u = [];
|
|
1071
1139
|
for (let i = 0, d = n.length; i < d; i++) {
|
|
1072
|
-
const
|
|
1140
|
+
const c = n[i];
|
|
1073
1141
|
if (i < s)
|
|
1074
|
-
|
|
1142
|
+
c.style.left = (r + a) * i + "px", u[i] = c.offsetHeight;
|
|
1075
1143
|
else {
|
|
1076
|
-
const { index:
|
|
1077
|
-
|
|
1144
|
+
const { index: l, value: h } = A.getMinValueAndIndex(u);
|
|
1145
|
+
c.style.left = (r + a) * l + "px", c.style.top = h + t + "px", u[l] = c.offsetHeight + t + h;
|
|
1078
1146
|
}
|
|
1079
1147
|
}
|
|
1080
1148
|
}
|
|
1081
1149
|
};
|
|
1082
1150
|
export {
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1151
|
+
U as Base64Utils,
|
|
1152
|
+
$ as MoneyFormatter,
|
|
1153
|
+
A as arrayUtils,
|
|
1154
|
+
S as booleanUtils,
|
|
1155
|
+
O as cookieUtils,
|
|
1156
|
+
T as dateUtils,
|
|
1157
|
+
L as documentUtils,
|
|
1158
|
+
I as downloadUtils,
|
|
1159
|
+
k as echartsUtils,
|
|
1160
|
+
H as letterUtils,
|
|
1161
|
+
j as mapUtils,
|
|
1162
|
+
N as numberUtils,
|
|
1163
|
+
P as objectUtils,
|
|
1164
|
+
F as phoneUtils,
|
|
1165
|
+
V as randomUtils,
|
|
1166
|
+
W as regexpUtils,
|
|
1167
|
+
Y as storageUtils,
|
|
1168
|
+
z as stringUtils,
|
|
1169
|
+
q as urlUtils,
|
|
1170
|
+
Z as waterfallUtils
|
|
1103
1171
|
};
|
package/dist/utils.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(h,m){typeof exports=="object"&&typeof module<"u"?m(exports):typeof define=="function"&&define.amd?define(["exports"],m):(h=typeof globalThis<"u"?globalThis:h||self,m(h.yhkitUtils={}))})(this,function(h){"use strict";const b=Object.assign({unique(t){return t?Array.from(new Set(t)):[]},isExist(t,n){return!t||!n?!1:t.indexOf(n)!==-1},countOfAppear(t,n){let e=0;for(const o of t)o===n&&e++;return e},indexsOfAppear(t,n){let e=-1;const o=[];do e=t.indexOf(n,e+1),e!==-1&&o.push(e);while(e!==-1);return o},sort(t,n="asc"){return t?t.sort((e,o)=>n==="asc"?e>o?1:-1:e<o?1:-1):[]},shuffle(t){if(!t)return[];for(let n=t.length-1;n>0;n--){const e=Math.floor(Math.random()*(n+1));[t[n],t[e]]=[t[e],t[n]]}return t},getMaxValue(t){return t?Math.max(...t):0},getMinValue(t){return t?Math.min(...t):0},getMinValueAndIndex(t){if(t.length===0)return{value:0,index:0};const n={value:t[0],index:0};for(let e=1,o=t.length;e<o;e++){const r=t[e];n.value>r&&(n.value=r,n.index=e)}return n},getMaxValueAndIndex(t){return t.length===0?{value:0,index:0}:t.reduce((n,e,o)=>e<n.value?{value:e,index:o}:n,{value:t[0],index:0})}},{...Object.freeze(Object.defineProperty({__proto__:null,toEnumObj:t=>{if(!t||!t.length)return{};const n={};return t.forEach(e=>{const o=Object.assign({label:e.label,text:e.label},e);n[e?.value]=o}),n}},Symbol.toStringTag,{value:"Module"}))});class A{static BASE64_CHARS="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";static toBlob(n,e="",o=512){const s=(n.split(",")[1]||n).replace(/-/g,"+").replace(/_/g,"/"),c="=".repeat((4-s.length%4)%4),l=s+c;try{const i=atob(l),d=[];for(let a=0;a<i.length;a+=o){const u=i.slice(a,a+o),f=new Array(u.length);for(let g=0;g<u.length;g++)f[g]=u.charCodeAt(g);const p=new Uint8Array(f);d.push(p)}return new Blob(d,{type:e})}catch(i){return console.error("Failed to convert base64 to blob:",i),null}}static toFile(n,e="file.txt",o="text/plain"){const s=n.replace(/^data:.+;base64,/,"").replace(/-/g,"+").replace(/_/g,"/"),c="=".repeat((4-s.length%4)%4),l=s+c,i=atob(l),d=[];for(let u=0;u<i.length;u+=512){const f=i.slice(u,u+512),p=new Array(f.length);for(let g=0;g<f.length;g++)p[g]=f.charCodeAt(g);d.push(new Uint8Array(p))}const a=new Blob(d,{type:o});return new File([a],e,{type:o})}static encode(n){if(!n)return"";const e=this._stringToUtf8Bytes(n);return this._bytesToBase64(e)}static decode(n){if(!n)return"";n=n.replace(/\s/g,"");const e=this._base64ToBytes(n);return this._utf8BytesToString(e)}static _stringToUtf8Bytes(n){const e=[];for(let o=0;o<n.length;o++){let r=n.charCodeAt(o);if(r<128)e.push(r);else if(r<2048)e.push(192|r>>6),e.push(128|r&63);else if(r<55296||r>=57344)e.push(224|r>>12),e.push(128|r>>6&63),e.push(128|r&63);else{o++;const s=r,c=n.charCodeAt(o);if(isNaN(c))throw new Error("代理对不完整");r=65536+((s&1023)<<10)+(c&1023),e.push(240|r>>18),e.push(128|r>>12&63),e.push(128|r>>6&63),e.push(128|r&63)}}return e}static _utf8BytesToString(n){let e="",o=0;for(;o<n.length;){const r=n[o++];if(r<128)e+=String.fromCharCode(r);else if(r>=192&&r<224){const s=n[o++]&63;e+=String.fromCharCode((r&31)<<6|s)}else if(r>=224&&r<240){const s=n[o++]&63,c=n[o++]&63;e+=String.fromCharCode((r&15)<<12|s<<6|c)}else if(r>=240&&r<248){const s=n[o++]&63,c=n[o++]&63,l=n[o++]&63,i=(r&7)<<18|s<<12|c<<6|l,d=Math.floor((i-65536)/1024)+55296,a=(i-65536)%1024+56320;e+=String.fromCharCode(d,a)}else e+="�"}return e}static _bytesToBase64(n){let e="",o=0;for(;o<n.length;){const r=n[o++],s=o<n.length,c=s?n[o++]:0,l=o<n.length,i=l?n[o++]:0,d=r>>2,a=(r&3)<<4|c>>4,u=(c&15)<<2|i>>6,f=i&63;s?l?e+=this.BASE64_CHARS.charAt(d)+this.BASE64_CHARS.charAt(a)+this.BASE64_CHARS.charAt(u)+this.BASE64_CHARS.charAt(f):e+=this.BASE64_CHARS.charAt(d)+this.BASE64_CHARS.charAt(a)+this.BASE64_CHARS.charAt(u)+"=":e+=this.BASE64_CHARS.charAt(d)+this.BASE64_CHARS.charAt(a)+"=="}return e}static _base64ToBytes(n){const e=n.length;let o=0;e>=2&&(n[e-1]==="="&&o++,n[e-2]==="="&&o++);const r=Math.floor(e*3/4)-o,s=new Array(r),c=new Array(256).fill(-1);for(let d=0;d<this.BASE64_CHARS.length;d++)c[this.BASE64_CHARS.charCodeAt(d)]=d;let l=0,i=0;for(;i<e;){const d=c[n.charCodeAt(i++)],a=c[n.charCodeAt(i++)],u=i<e?c[n.charCodeAt(i++)]:-1,f=i<e?c[n.charCodeAt(i++)]:-1;if(d===-1||a===-1)throw new Error("无效的 Base64 字符");const p=d<<2|a>>4;if(s[l++]=p,u!==-1){const g=(a&15)<<4|u>>2;if(s[l++]=g,f!==-1){const y=(u&3)<<6|f;s[l++]=y}}}return s}}const w={isEmptyString(t){return typeof t=="string"&&t.trim()===""},isNumber(t){return typeof t=="number"&&!isNaN(t)},isObject(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)},isEmptyObject(t){return t?Object.keys(t).length===0&&t.constructor===Object:!0},isBoolean(t){return typeof t=="boolean"},isArray(t){return Array.isArray(t)},isFunction(t){return typeof t=="function"},isPromise(t){return!!t&&(typeof t=="object"||typeof t=="function")&&typeof t.then=="function"},isElement(t){return t instanceof Element},isPhone(t){return/^1[3-9]\d{9}$/.test(t)},isEmail(t){return/^[\w.-]+@[\w.-]+\.\w+$/.test(t)},isJSON(t){try{return JSON.parse(t),!0}catch{return!1}},isImageLoaded(t){return t.complete&&t.naturalWidth!==0},isInViewport(t){const n=t.getBoundingClientRect();return n.top>=0&&n.left>=0&&n.bottom<=window.innerHeight&&n.right<=window.innerWidth},isLeapYear(t){return t%4===0&&t%100!==0||t%400===0},isMobile(){return/Mobi|Android|iPhone/i.test(navigator.userAgent)}},S={getCookie(t){if(!t)return;const n=document.cookie.match(new RegExp("(^| )"+t+"=([^;]+)"));return n?decodeURIComponent(n[2]):null},setCookie(t,n,e=7){const o=new Date;o.setTime(o.getTime()+e*24*60*60*1e3),document.cookie=`${t}=${encodeURIComponent(n)};expires=${o.toUTCString()};path=/`},deleteCookie(t){this.setCookie(t,"",-1)}},M={getTimeString(t,n=!1){return n?new Date().toLocaleString(t,{hour12:!0}):new Date().toLocaleString("chinese",{hour12:!1})},diffDays(t,n){const e=new Date(t).getTime(),o=new Date(n).getTime();return e>o?Math.abs(Math.floor((e-o)/(24*3600*1e3))):Math.abs(Math.floor((o-e)/(24*3600*1e3)))},uniqueId(){return Date.now().toString(36)+Math.random().toString(36).substr(2,5)},getWhichDays(t,n,e){let o=e;for(let r=1;r<n;r++)switch(r){case 1:case 3:case 5:case 7:case 8:case 10:case 12:o+=31;break;case 2:w.isLeapYear(t)?o+=29:o+=28;break;default:o+=30;break}return o}},U={getOffsetTop(t){if(!t)throw new Error("Element is not provided");if(t instanceof SVGElement){const e=t.getBoundingClientRect(),o=window.pageYOffset||document.documentElement.scrollTop;return e.top+o}let n=0;for(;t;)n+=t.offsetTop,t=t.offsetParent;return n},getScrollValue(){const t={scrollLeft:0,scrollTop:0};return t.scrollLeft=document.body.scrollLeft||document.documentElement.scrollLeft,t.scrollTop=document.body.scrollTop||document.documentElement.scrollTop,t},getPageValue(t){t=t||window.event;const n=t.pageX||t.clientX+this.getScrollValue().scrollLeft,e=t.pageY||t.clientY+this.getScrollValue().scrollTop;return{pageX:n,pageY:e}},addEventListener(t,n,e){t.addEventListener?t.addEventListener(n,e):t.attachEvent?t.attachEvent("on"+n,e):t["on"+n]=e},getViewportWidth(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth},getViewportHeight(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}},B={saveAsBlob(t,n){const e=document.createElement("a"),o=window.URL.createObjectURL(t);e.href=o,e.download=n,document.body.appendChild(e),e.click(),URL.revokeObjectURL(o),document.body.removeChild(e)}},E={animate(t,n){let e=-1;const o=t.series[0].data.length;let r;r=setInterval(()=>{n.dispatchAction({type:"downplay",seriesIndex:0,dataIndex:e}),e=(e+1)%o,n.dispatchAction({type:"highlight",seriesIndex:0,dataIndex:e}),n.dispatchAction({type:"showTip",seriesIndex:0,dataIndex:e}),e>o&&(e=0)},2e3),n.on("mouseover",()=>{clearInterval(r),n.dispatchAction({type:"downplay",seriesIndex:0,dataIndex:e})})}},C={sortFromA2Z(t){return t?.length?t.sort((e,o)=>{const r=e.toUpperCase(),s=o.toUpperCase();return r<s?-1:r>s?1:0}):void 0}},_={degrees2Radians(t){return t*Math.PI/180},getDistance(t,n,e,o){const r=this.degrees2Radians(t),s=this.degrees2Radians(e),c=r-s,l=this.degrees2Radians(n)-this.degrees2Radians(o);let i=2*Math.asin(Math.sqrt(Math.pow(Math.sin(c/2),2)+Math.cos(r)*Math.cos(s)*Math.pow(Math.sin(l/2),2)));return i=i*6378.137,i=Math.round(i*1e4)/1e4,i=+i.toFixed(2),console.log("经纬度计算的距离为:"+i),i},calculateDistanceByHaversine(t,n,e="km"){const o=this,r=t.longitude??t.lng,s=t.latitude??t.lat,c=n.longitude??n.lng,l=n.latitude??n.lat;if(r===void 0||s===void 0||c===void 0||l===void 0)throw new Error("无效的坐标格式,缺少经纬度信息");const i=6371,d=o.degrees2Radians(s),a=o.degrees2Radians(l),u=o.degrees2Radians(l-s),f=o.degrees2Radians(c-r),p=Math.sin(u/2)*Math.sin(u/2)+Math.cos(d)*Math.cos(a)*Math.sin(f/2)*Math.sin(f/2),g=2*Math.atan2(Math.sqrt(p),Math.sqrt(1-p)),y=i*g;switch(e){case"m":return y*1e3;case"mi":return y*.621371;case"nmi":return y*.539957;default:return y}},calculateDistancesByHaversine(t,n="km",e=!1){if(t.length<2)return{segments:[],total:0};const o=[];let r=0;for(let s=0;s<t.length-1;s++){const c=this.calculateDistanceByHaversine(t[s],t[s+1],n);o.push(c),r+=c}if(e&&t.length>2){const s=this.calculateDistanceByHaversine(t[t.length-1],t[0],n);o.push(s),r+=s}return{segments:o,total:r}}};class v{static toStandardFormat(n){try{const e=typeof n=="string"?parseFloat(n):n;if(isNaN(e))throw new Error("输入不是有效的数字");if(!isFinite(e))throw new Error("输入是无穷大");return e.toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}catch(e){return console.error("格式化失败:",e),"格式错误"}}static toChineseFormat(n){try{const e=typeof n=="string"?parseFloat(n):n;if(isNaN(e))throw new Error("输入不是有效的数字");if(e>9999999999999e-2||e<-9999999999999e-2)throw new Error("输入数字超出范围");const o=e<0,r=Math.abs(e),s=Math.floor(r),c=Math.round((r-s)*100),l=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"],i=["","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟"],d=["角","分"];let a="",u=s;if(u===0)a=l[0];else{let g=0;for(;u>0;){const y=u%10;y!==0?a=l[y]+i[g]+a:a.charAt(0)!==l[0]&&(a=l[y]+a),u=Math.floor(u/10),g++}a=a.replace(/零+/g,"零"),a=a.replace(/零+$/,"")}let f="";if(c>0){const g=Math.floor(c/10),y=c%10;g>0&&(f+=l[g]+d[0]),y>0&&(f+=l[y]+d[1])}else f="整";let p=(o?"负":"")+a+"圆"+f;return p==="零圆整"&&(p="零圆"),p}catch(e){return console.error("转换失败:",e),"格式错误"}}}const O={...Object.freeze(Object.defineProperty({__proto__:null,toLetter:t=>t>25||t<0?"":"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[t]},Symbol.toStringTag,{value:"Module"})),...Object.freeze(Object.defineProperty({__proto__:null,toMoney:t=>t.toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},Symbol.toStringTag,{value:"Module"})),isNumber(t){return typeof t=="number"&&!isNaN(t)}},x={isEmptyObject(t){return t?Object.keys(t).length===0&&t.constructor===Object:!0},copy(t,n){for(const e in t)n[e]=t[e]},deepCopy(t,n){for(const e in t){const o=t[e];o instanceof Object?(n[e]={},this.deepCopy(o,n[e])):o instanceof Array?(n[e]=[],this.deepCopy(o,n[e])):n[e]=t[e]}}},R={desensitize(t){return t?t.replace(/^(\d{3})\d{4}(\d{4})$/,"$1****$2")||t.slice(0,3)+"****"+t.slice(7):""}},L={color:function(){return`#${Math.random().toString(16).slice(2,8)}`},int(t,n){return Math.floor(Math.random()*(n-t+1))+t},uniqueId(){return Date.now().toString(36)+Math.random().toString(36).substr(2,5)}},T={mobile:/^1[3-9]\d{9}$/,email:/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/,chinese:/^[\u4e00-\u9fa5]+$/,english:/^[a-zA-Z]+$/,chineseStart:/^[\u4e00-\u9fa5]+\w*$/,integer:/^\d+$/,integerAndzero:/^(0|[1-9]+[0-9]*)$/,strongPassword:/^(?!.*[\s\p{C}])(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[\d\W])|(?=.*\d)(?=.*[^\w\s])).{8,}$/u,decimal:/^0\.(0[1-9]|[1-9][0-9]*)$/},I={getLocal(t){return localStorage.getItem(t)},setLocal(t,n){localStorage.setItem(t,n)},removeLocal(t){localStorage.removeItem(t)},getSession(t){return sessionStorage.getItem(t)},setSession(t,n){sessionStorage.setItem(t,n)},removeSession(t){sessionStorage.removeItem(t)}},j={isExist(t,n){if(!t||!n)return!1;const e=t.split(",");return console.log("判断某元素是否在字符串中",e.indexOf(n)===-1),e.indexOf(n)!==-1},includes(t,n){return!t||!n?!1:t.includes(n)},isJSON(t){try{return JSON.parse(t),!0}catch{return!1}},indexsOfAppear(t,n){let e=-1;const o=[];do e=t.indexOf(n,e+1),e!==-1&&o.push(e);while(e!==-1);return o},getMaxTimesAndVal(t){const n=[0,""],e={};for(let s=0;s<t.length;s++){const c=t.charAt(s);e[c]?e[c]++:e[c]=1}let o=1;for(const s in e)o<e[s]&&(o=e[s]);const r=[];for(const s in e)o==e[s]&&r.push(s);return n[0]=o,n[1]=r.join(),n}},k=t=>{const e=new RegExp("[?&]"+t+"=([^&#]*)","i").exec(window.location.href);return e?decodeURIComponent(e[1]):null};function H(t){return new URLSearchParams(window.location.search).get(t)}const P={...Object.freeze(Object.defineProperty({__proto__:null,getQueryInfoByName:k,getQueryParam:H},Symbol.toStringTag,{value:"Module"})),getHost(){return window.location.host},getPath(){return window.location.pathname}},N={toList(t,n=2){console.log(t,n);const e={};for(let r=0;r<n;r++)e[r]=[];t.forEach((r,s)=>e[s%n].push(r));const o=[];for(const r in e)o.push(...e[r]);return o},jsLayout(t,n,e){const o=t.offsetWidth,r=n[0].offsetWidth,s=parseInt((o/r).toString()),c=(o-r*s)/(s-1),l=[];for(let i=0,d=n.length;i<d;i++){const a=n[i];if(i<s)a.style.left=(r+c)*i+"px",l[i]=a.offsetHeight;else{const{index:u,value:f}=b.getMinValueAndIndex(l);a.style.left=(r+c)*u+"px",a.style.top=f+e+"px",l[u]=a.offsetHeight+e+f}}}};h.Base64Utils=A,h.MoneyFormatter=v,h.arrayUtils=b,h.booleanUtils=w,h.cookieUtils=S,h.dateUtils=M,h.documentUtils=U,h.downloadUtils=B,h.echartsUtils=E,h.letterUtils=C,h.mapUtils=_,h.numberUtils=O,h.objectUtils=x,h.phoneUtils=R,h.randomUtils=L,h.regexpUtils=T,h.storageUtils=I,h.stringUtils=j,h.urlUtils=P,h.waterfallUtils=N,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(h,w){typeof exports=="object"&&typeof module<"u"?w(exports):typeof define=="function"&&define.amd?define(["exports"],w):(h=typeof globalThis<"u"?globalThis:h||self,w(h.yhkitUtils={}))})(this,function(h){"use strict";const A=Object.assign({unique(e){return e?Array.from(new Set(e)):[]},isExist(e,n){return!e||!n?!1:e.indexOf(n)!==-1},countOfAppear(e,n){let t=0;for(const o of e)o===n&&t++;return t},indexsOfAppear(e,n){let t=-1;const o=[];do t=e.indexOf(n,t+1),t!==-1&&o.push(t);while(t!==-1);return o},sort(e,n="asc"){return e?e.sort((t,o)=>n==="asc"?t>o?1:-1:t<o?1:-1):[]},shuffle(e){if(!e)return[];for(let n=e.length-1;n>0;n--){const t=Math.floor(Math.random()*(n+1));[e[n],e[t]]=[e[t],e[n]]}return e},getMaxValue(e){return e?Math.max(...e):0},getMinValue(e){return e?Math.min(...e):0},getMinValueAndIndex(e){if(e.length===0)return{value:0,index:0};const n={value:e[0],index:0};for(let t=1,o=e.length;t<o;t++){const r=e[t];n.value>r&&(n.value=r,n.index=t)}return n},getMaxValueAndIndex(e){return e.length===0?{value:0,index:0}:e.reduce((n,t,o)=>t<n.value?{value:t,index:o}:n,{value:e[0],index:0})}},{...Object.freeze(Object.defineProperty({__proto__:null,toEnumObj:e=>{if(!e||!e.length)return{};const n={};return e.forEach(t=>{const o=Object.assign({label:t.label,text:t.label},t);n[t?.value]=o}),n}},Symbol.toStringTag,{value:"Module"}))});class M{static BASE64_CHARS="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";static toBlob(n,t="",o=512){const s=(n.split(",")[1]||n).replace(/-/g,"+").replace(/_/g,"/"),c="=".repeat((4-s.length%4)%4),u=s+c;try{const i=atob(u),d=[];for(let a=0;a<i.length;a+=o){const l=i.slice(a,a+o),f=new Array(l.length);for(let g=0;g<l.length;g++)f[g]=l.charCodeAt(g);const p=new Uint8Array(f);d.push(p)}return new Blob(d,{type:t})}catch(i){return console.error("Failed to convert base64 to blob:",i),null}}static toFile(n,t="file.txt",o="text/plain"){const s=n.replace(/^data:.+;base64,/,"").replace(/-/g,"+").replace(/_/g,"/"),c="=".repeat((4-s.length%4)%4),u=s+c,i=atob(u),d=[];for(let l=0;l<i.length;l+=512){const f=i.slice(l,l+512),p=new Array(f.length);for(let g=0;g<f.length;g++)p[g]=f.charCodeAt(g);d.push(new Uint8Array(p))}const a=new Blob(d,{type:o});return new File([a],t,{type:o})}static encode(n){if(!n)return"";const t=this._stringToUtf8Bytes(n);return this._bytesToBase64(t)}static decode(n){if(!n)return"";n=n.replace(/\s/g,"");const t=this._base64ToBytes(n);return this._utf8BytesToString(t)}static _stringToUtf8Bytes(n){const t=[];for(let o=0;o<n.length;o++){let r=n.charCodeAt(o);if(r<128)t.push(r);else if(r<2048)t.push(192|r>>6),t.push(128|r&63);else if(r<55296||r>=57344)t.push(224|r>>12),t.push(128|r>>6&63),t.push(128|r&63);else{o++;const s=r,c=n.charCodeAt(o);if(isNaN(c))throw new Error("代理对不完整");r=65536+((s&1023)<<10)+(c&1023),t.push(240|r>>18),t.push(128|r>>12&63),t.push(128|r>>6&63),t.push(128|r&63)}}return t}static _utf8BytesToString(n){let t="",o=0;for(;o<n.length;){const r=n[o++];if(r<128)t+=String.fromCharCode(r);else if(r>=192&&r<224){const s=n[o++]&63;t+=String.fromCharCode((r&31)<<6|s)}else if(r>=224&&r<240){const s=n[o++]&63,c=n[o++]&63;t+=String.fromCharCode((r&15)<<12|s<<6|c)}else if(r>=240&&r<248){const s=n[o++]&63,c=n[o++]&63,u=n[o++]&63,i=(r&7)<<18|s<<12|c<<6|u,d=Math.floor((i-65536)/1024)+55296,a=(i-65536)%1024+56320;t+=String.fromCharCode(d,a)}else t+="�"}return t}static _bytesToBase64(n){let t="",o=0;for(;o<n.length;){const r=n[o++],s=o<n.length,c=s?n[o++]:0,u=o<n.length,i=u?n[o++]:0,d=r>>2,a=(r&3)<<4|c>>4,l=(c&15)<<2|i>>6,f=i&63;s?u?t+=this.BASE64_CHARS.charAt(d)+this.BASE64_CHARS.charAt(a)+this.BASE64_CHARS.charAt(l)+this.BASE64_CHARS.charAt(f):t+=this.BASE64_CHARS.charAt(d)+this.BASE64_CHARS.charAt(a)+this.BASE64_CHARS.charAt(l)+"=":t+=this.BASE64_CHARS.charAt(d)+this.BASE64_CHARS.charAt(a)+"=="}return t}static _base64ToBytes(n){const t=n.length;let o=0;t>=2&&(n[t-1]==="="&&o++,n[t-2]==="="&&o++);const r=Math.floor(t*3/4)-o,s=new Array(r),c=new Array(256).fill(-1);for(let d=0;d<this.BASE64_CHARS.length;d++)c[this.BASE64_CHARS.charCodeAt(d)]=d;let u=0,i=0;for(;i<t;){const d=c[n.charCodeAt(i++)],a=c[n.charCodeAt(i++)],l=i<t?c[n.charCodeAt(i++)]:-1,f=i<t?c[n.charCodeAt(i++)]:-1;if(d===-1||a===-1)throw new Error("无效的 Base64 字符");const p=d<<2|a>>4;if(s[u++]=p,l!==-1){const g=(a&15)<<4|l>>2;if(s[u++]=g,f!==-1){const y=(l&3)<<6|f;s[u++]=y}}}return s}}const S={isEmptyString(e){return typeof e=="string"&&e.trim()===""},isNumber(e){return typeof e=="number"&&!isNaN(e)},isObject(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)},isEmptyObject(e){return e?Object.keys(e).length===0&&e.constructor===Object:!0},isBoolean(e){return typeof e=="boolean"},isArray(e){return Array.isArray(e)},isFunction(e){return typeof e=="function"},isPromise(e){return!!e&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function"},isElement(e){return e instanceof Element},isPhone(e){return/^1[3-9]\d{9}$/.test(e)},isEmail(e){return/^[\w.-]+@[\w.-]+\.\w+$/.test(e)},isJSON(e){try{return JSON.parse(e),!0}catch{return!1}},isImageLoaded(e){return e.complete&&e.naturalWidth!==0},isInViewport(e){const n=e.getBoundingClientRect();return n.top>=0&&n.left>=0&&n.bottom<=window.innerHeight&&n.right<=window.innerWidth},isLeapYear(e){return e%4===0&&e%100!==0||e%400===0},isMobile(){return/Mobi|Android|iPhone/i.test(navigator.userAgent)}},U={getCookie(e){if(!e)return;const n=document.cookie.match(new RegExp("(^| )"+e+"=([^;]+)"));return n?decodeURIComponent(n[2]):null},setCookie(e,n,t=7){const o=new Date;o.setTime(o.getTime()+t*24*60*60*1e3),document.cookie=`${e}=${encodeURIComponent(n)};expires=${o.toUTCString()};path=/`},deleteCookie(e){this.setCookie(e,"",-1)}},E={getTimeString(e,n=!1){return n?new Date().toLocaleString(e,{hour12:!0}):new Date().toLocaleString("chinese",{hour12:!1})},diffDays(e,n){const t=new Date(e).getTime(),o=new Date(n).getTime();return t>o?Math.abs(Math.floor((t-o)/(24*3600*1e3))):Math.abs(Math.floor((o-t)/(24*3600*1e3)))},uniqueId(){return Date.now().toString(36)+Math.random().toString(36).substr(2,5)},getWhichDays(e,n,t){let o=t;for(let r=1;r<n;r++)switch(r){case 1:case 3:case 5:case 7:case 8:case 10:case 12:o+=31;break;case 2:S.isLeapYear(e)?o+=29:o+=28;break;default:o+=30;break}return o},getTimeStringAutoShort2(e,n){const t=new Date,o=new Date(e),r=t.getFullYear(),s=t.getMonth()+1,c=t.getDate(),u=o.getFullYear(),i=o.getMonth()+1,d=o.getDate();let a="";const l=n?" "+this.formatDate(o,"hh:mm"):"";if(r===u){const g=t.getTime()-e;if(s===i&&c===d)g<60*1e3?a="刚刚":a=this.formatDate(o,"hh:mm");else{const y=new Date;y.setDate(y.getDate()-1);const b=new Date;if(b.setDate(b.getDate()-2),i===y.getMonth()+1&&d===y.getDate())a="昨天"+l;else if(i===b.getMonth()+1&&d===b.getDate())a="前天"+l;else if(g/36e5<=7*24){const m=new Array(7);m[0]="星期日",m[1]="星期一",m[2]="星期二",m[3]="星期三",m[4]="星期四",m[5]="星期五",m[6]="星期六",a=m[o.getDay()]+l}else a=this.formatDate(o,"yyyy/M/d")+l}}else a=this.formatDate(o,"yyyy/M/d")+l;return a},formatDate(e,n){const t={"M+":e.getMonth()+1,"d+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3),S:e.getMilliseconds()};/(y+)/.test(n)&&(n=n.replace(RegExp.$1,(e.getFullYear()+"").substr(4-RegExp.$1.length)));for(const o in t)new RegExp("("+o+")").test(n)&&(n=n.replace(RegExp.$1,RegExp.$1.length===1?t[o]:("00"+t[o]).substr((""+t[o]).length)));return n}},C={getOffsetTop(e){if(!e)throw new Error("Element is not provided");if(e instanceof SVGElement){const t=e.getBoundingClientRect(),o=window.pageYOffset||document.documentElement.scrollTop;return t.top+o}let n=0;for(;e;)n+=e.offsetTop,e=e.offsetParent;return n},getScrollValue(){const e={scrollLeft:0,scrollTop:0};return e.scrollLeft=document.body.scrollLeft||document.documentElement.scrollLeft,e.scrollTop=document.body.scrollTop||document.documentElement.scrollTop,e},getPageValue(e){e=e||window.event;const n=e.pageX||e.clientX+this.getScrollValue().scrollLeft,t=e.pageY||e.clientY+this.getScrollValue().scrollTop;return{pageX:n,pageY:t}},addEventListener(e,n,t){e.addEventListener?e.addEventListener(n,t):e.attachEvent?e.attachEvent("on"+n,t):e["on"+n]=t},getViewportWidth(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth},getViewportHeight(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}},B={saveAsBlob(e,n){const t=document.createElement("a"),o=window.URL.createObjectURL(e);t.href=o,t.download=n,document.body.appendChild(t),t.click(),URL.revokeObjectURL(o),document.body.removeChild(t)},saveAsUrl(e,n){const t=document.createElement("a");t.href=e,t.download=n,document.body.appendChild(t),t.click(),URL.revokeObjectURL(e),document.body.removeChild(t)}},D={animate(e,n){let t=-1;const o=e.series[0].data.length;let r;r=setInterval(()=>{n.dispatchAction({type:"downplay",seriesIndex:0,dataIndex:t}),t=(t+1)%o,n.dispatchAction({type:"highlight",seriesIndex:0,dataIndex:t}),n.dispatchAction({type:"showTip",seriesIndex:0,dataIndex:t}),t>o&&(t=0)},2e3),n.on("mouseover",()=>{clearInterval(r),n.dispatchAction({type:"downplay",seriesIndex:0,dataIndex:t})})}},R={sortFromA2Z(e){return e?.length?e.sort((t,o)=>{const r=t.toUpperCase(),s=o.toUpperCase();return r<s?-1:r>s?1:0}):void 0}},v={degrees2Radians(e){return e*Math.PI/180},getDistance(e,n,t,o){const r=this.degrees2Radians(e),s=this.degrees2Radians(t),c=r-s,u=this.degrees2Radians(n)-this.degrees2Radians(o);let i=2*Math.asin(Math.sqrt(Math.pow(Math.sin(c/2),2)+Math.cos(r)*Math.cos(s)*Math.pow(Math.sin(u/2),2)));return i=i*6378.137,i=Math.round(i*1e4)/1e4,i=+i.toFixed(2),console.log("经纬度计算的距离为:"+i),i},calculateDistanceByHaversine(e,n,t="km"){const o=this,r=e.longitude??e.lng,s=e.latitude??e.lat,c=n.longitude??n.lng,u=n.latitude??n.lat;if(r===void 0||s===void 0||c===void 0||u===void 0)throw new Error("无效的坐标格式,缺少经纬度信息");const i=6371,d=o.degrees2Radians(s),a=o.degrees2Radians(u),l=o.degrees2Radians(u-s),f=o.degrees2Radians(c-r),p=Math.sin(l/2)*Math.sin(l/2)+Math.cos(d)*Math.cos(a)*Math.sin(f/2)*Math.sin(f/2),g=2*Math.atan2(Math.sqrt(p),Math.sqrt(1-p)),y=i*g;switch(t){case"m":return y*1e3;case"mi":return y*.621371;case"nmi":return y*.539957;default:return y}},calculateDistancesByHaversine(e,n="km",t=!1){if(e.length<2)return{segments:[],total:0};const o=[];let r=0;for(let s=0;s<e.length-1;s++){const c=this.calculateDistanceByHaversine(e[s],e[s+1],n);o.push(c),r+=c}if(t&&e.length>2){const s=this.calculateDistanceByHaversine(e[e.length-1],e[0],n);o.push(s),r+=s}return{segments:o,total:r}}};class x{static toStandardFormat(n){try{const t=typeof n=="string"?parseFloat(n):n;if(isNaN(t))throw new Error("输入不是有效的数字");if(!isFinite(t))throw new Error("输入是无穷大");return t.toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}catch(t){return console.error("格式化失败:",t),"格式错误"}}static toChineseFormat(n){try{const t=typeof n=="string"?parseFloat(n):n;if(isNaN(t))throw new Error("输入不是有效的数字");if(t>9999999999999e-2||t<-9999999999999e-2)throw new Error("输入数字超出范围");const o=t<0,r=Math.abs(t),s=Math.floor(r),c=Math.round((r-s)*100),u=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"],i=["","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟"],d=["角","分"];let a="",l=s;if(l===0)a=u[0];else{let g=0;for(;l>0;){const y=l%10;y!==0?a=u[y]+i[g]+a:a.charAt(0)!==u[0]&&(a=u[y]+a),l=Math.floor(l/10),g++}a=a.replace(/零+/g,"零"),a=a.replace(/零+$/,"")}let f="";if(c>0){const g=Math.floor(c/10),y=c%10;g>0&&(f+=u[g]+d[0]),y>0&&(f+=u[y]+d[1])}else f="整";let p=(o?"负":"")+a+"圆"+f;return p==="零圆整"&&(p="零圆"),p}catch(t){return console.error("转换失败:",t),"格式错误"}}}const T={...Object.freeze(Object.defineProperty({__proto__:null,toLetter:e=>e>25||e<0?"":"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e]},Symbol.toStringTag,{value:"Module"})),...Object.freeze(Object.defineProperty({__proto__:null,toMoney:e=>e.toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},Symbol.toStringTag,{value:"Module"})),isNumber(e){return typeof e=="number"&&!isNaN(e)}},_={isEmptyObject(e){return e?Object.keys(e).length===0&&e.constructor===Object:!0},copy(e,n){for(const t in e)n[t]=e[t]},deepCopy(e,n){for(const t in e){const o=e[t];o instanceof Object?(n[t]={},this.deepCopy(o,n[t])):o instanceof Array?(n[t]=[],this.deepCopy(o,n[t])):n[t]=e[t]}}},O={desensitize(e){return e?e.replace(/^(\d{3})\d{4}(\d{4})$/,"$1****$2")||e.slice(0,3)+"****"+e.slice(7):""}},L={color:function(){return`#${Math.random().toString(16).slice(2,8)}`},int(e,n){return Math.floor(Math.random()*(n-e+1))+e},uniqueId(){return Date.now().toString(36)+Math.random().toString(36).substr(2,5)}},j={mobile:/^1[3-9]\d{9}$/,email:/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/,chinese:/^[\u4e00-\u9fa5]+$/,english:/^[a-zA-Z]+$/,chineseStart:/^[\u4e00-\u9fa5]+\w*$/,integer:/^\d+$/,integerAndzero:/^(0|[1-9]+[0-9]*)$/,strongPassword:/^(?!.*[\s\p{C}])(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[\d\W])|(?=.*\d)(?=.*[^\w\s])).{8,}$/u,decimal:/^0\.(0[1-9]|[1-9][0-9]*)$/},I={getLocal(e){return localStorage.getItem(e)},setLocal(e,n){localStorage.setItem(e,n)},removeLocal(e){localStorage.removeItem(e)},getSession(e){return sessionStorage.getItem(e)},setSession(e,n){sessionStorage.setItem(e,n)},removeSession(e){sessionStorage.removeItem(e)}},k={isExist(e,n){if(!e||!n)return!1;const t=e.split(",");return console.log("判断某元素是否在字符串中",t.indexOf(n)===-1),t.indexOf(n)!==-1},includes(e,n){return!e||!n?!1:e.includes(n)},isJSON(e){try{return JSON.parse(e),!0}catch{return!1}},indexsOfAppear(e,n){let t=-1;const o=[];do t=e.indexOf(n,t+1),t!==-1&&o.push(t);while(t!==-1);return o},getMaxTimesAndVal(e){const n=[0,""],t={};for(let s=0;s<e.length;s++){const c=e.charAt(s);t[c]?t[c]++:t[c]=1}let o=1;for(const s in t)o<t[s]&&(o=t[s]);const r=[];for(const s in t)o==t[s]&&r.push(s);return n[0]=o,n[1]=r.join(),n}},H=e=>{const t=new RegExp("[?&]"+e+"=([^&#]*)","i").exec(window.location.href);return t?decodeURIComponent(t[1]):null};function $(e){return new URLSearchParams(window.location.search).get(e)}const P={...Object.freeze(Object.defineProperty({__proto__:null,getQueryInfoByName:H,getQueryParam:$},Symbol.toStringTag,{value:"Module"})),getHost(){return window.location.host},getPath(){return window.location.pathname}},F={toList(e,n=2){console.log(e,n);const t={};for(let r=0;r<n;r++)t[r]=[];e.forEach((r,s)=>t[s%n].push(r));const o=[];for(const r in t)o.push(...t[r]);return o},jsLayout(e,n,t){const o=e.offsetWidth,r=n[0].offsetWidth,s=parseInt((o/r).toString()),c=(o-r*s)/(s-1),u=[];for(let i=0,d=n.length;i<d;i++){const a=n[i];if(i<s)a.style.left=(r+c)*i+"px",u[i]=a.offsetHeight;else{const{index:l,value:f}=A.getMinValueAndIndex(u);a.style.left=(r+c)*l+"px",a.style.top=f+t+"px",u[l]=a.offsetHeight+t+f}}}};h.Base64Utils=M,h.MoneyFormatter=x,h.arrayUtils=A,h.booleanUtils=S,h.cookieUtils=U,h.dateUtils=E,h.documentUtils=C,h.downloadUtils=B,h.echartsUtils=D,h.letterUtils=R,h.mapUtils=v,h.numberUtils=T,h.objectUtils=_,h.phoneUtils=O,h.randomUtils=L,h.regexpUtils=j,h.storageUtils=I,h.stringUtils=k,h.urlUtils=P,h.waterfallUtils=F,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
|
@@ -29,4 +29,18 @@ export declare const dateUtils: {
|
|
|
29
29
|
* @returns 当年的第几天
|
|
30
30
|
*/
|
|
31
31
|
getWhichDays(year: number, month: number, day: number): number;
|
|
32
|
+
/**
|
|
33
|
+
* 获取时间字符串(自动短化)
|
|
34
|
+
* @param timestamp 时间戳
|
|
35
|
+
* @param mustIncludeTime 是否必须包含时间
|
|
36
|
+
* @returns 时间字符串
|
|
37
|
+
*/
|
|
38
|
+
getTimeStringAutoShort2(timestamp: number, mustIncludeTime: boolean): string;
|
|
39
|
+
/**
|
|
40
|
+
* 格式化日期
|
|
41
|
+
* @param date 日期对象
|
|
42
|
+
* @param fmt 格式化字符串
|
|
43
|
+
* @returns 格式化后的日期字符串
|
|
44
|
+
*/
|
|
45
|
+
formatDate(date: Date, fmt: string): string;
|
|
32
46
|
};
|
|
@@ -8,4 +8,10 @@ export declare const downloadUtils: {
|
|
|
8
8
|
* @param filename 文件名
|
|
9
9
|
*/
|
|
10
10
|
saveAsBlob(blob: Blob | MediaSource, filename: string): void;
|
|
11
|
+
/**
|
|
12
|
+
* 直接下载url
|
|
13
|
+
* @param url 下载url
|
|
14
|
+
* @param filename 文件名
|
|
15
|
+
*/
|
|
16
|
+
saveAsUrl(url: string, filename: string): void;
|
|
11
17
|
};
|