@ivujs/i-utils 1.1.1
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/LICENSE +21 -0
- package/README.md +149 -0
- package/dist/cjs/ID-card/index.cjs +122 -0
- package/dist/cjs/array/index.cjs +465 -0
- package/dist/cjs/clipboard/index.cjs +135 -0
- package/dist/cjs/color/index.cjs +210 -0
- package/dist/cjs/constants/date.cjs +186 -0
- package/dist/cjs/constants/lang.cjs +13 -0
- package/dist/cjs/constants/math.cjs +13 -0
- package/dist/cjs/constants/regexp.cjs +57 -0
- package/dist/cjs/constants/sort.cjs +15 -0
- package/dist/cjs/cookie/index.cjs +71 -0
- package/dist/cjs/crypto/aes/aes.cjs +533 -0
- package/dist/cjs/crypto/aes/index.cjs +28 -0
- package/dist/cjs/crypto/base32/base32.cjs +385 -0
- package/dist/cjs/crypto/base32/index.cjs +44 -0
- package/dist/cjs/crypto/base64/base64.cjs +433 -0
- package/dist/cjs/crypto/base64/index.cjs +64 -0
- package/dist/cjs/crypto/des/des.cjs +1054 -0
- package/dist/cjs/crypto/des/index.cjs +30 -0
- package/dist/cjs/crypto/md5/index.cjs +25 -0
- package/dist/cjs/crypto/md5/md5.cjs +944 -0
- package/dist/cjs/crypto/sha/sha1/index.cjs +25 -0
- package/dist/cjs/crypto/sha/sha1/sha1.cjs +602 -0
- package/dist/cjs/crypto/sha/sha256/index.cjs +46 -0
- package/dist/cjs/crypto/sha/sha256/sha256.cjs +654 -0
- package/dist/cjs/crypto/sha/sha3/index.cjs +44 -0
- package/dist/cjs/crypto/sha/sha3/sha3.cjs +747 -0
- package/dist/cjs/crypto/sha/sha512/index.cjs +88 -0
- package/dist/cjs/crypto/sha/sha512/sha512.cjs +1186 -0
- package/dist/cjs/crypto/sm/lib/asn1.cjs +167 -0
- package/dist/cjs/crypto/sm/lib/ec.cjs +352 -0
- package/dist/cjs/crypto/sm/lib/jsbn.cjs +1633 -0
- package/dist/cjs/crypto/sm/lib/sm3.cjs +173 -0
- package/dist/cjs/crypto/sm/lib/utils.cjs +198 -0
- package/dist/cjs/crypto/sm/sm2/index.cjs +122 -0
- package/dist/cjs/crypto/sm/sm2/sm2.cjs +269 -0
- package/dist/cjs/crypto/sm/sm3/index.cjs +15 -0
- package/dist/cjs/crypto/sm/sm3/sm3.cjs +103 -0
- package/dist/cjs/crypto/sm/sm4/index.cjs +28 -0
- package/dist/cjs/crypto/sm/sm4/sm4.cjs +362 -0
- package/dist/cjs/crypto/tea/index.cjs +26 -0
- package/dist/cjs/crypto/tea/tea.cjs +215 -0
- package/dist/cjs/date/index.cjs +1349 -0
- package/dist/cjs/desensitized/index.cjs +74 -0
- package/dist/cjs/device/index.cjs +159 -0
- package/dist/cjs/dom/index.cjs +176 -0
- package/dist/cjs/file/index.cjs +339 -0
- package/dist/cjs/function/index.cjs +67 -0
- package/dist/cjs/id/index.cjs +46 -0
- package/dist/cjs/index.cjs +399 -0
- package/dist/cjs/keycode/index.cjs +142 -0
- package/dist/cjs/math/index.cjs +284 -0
- package/dist/cjs/number/index.cjs +14 -0
- package/dist/cjs/object/index.cjs +216 -0
- package/dist/cjs/pagination/index.cjs +140 -0
- package/dist/cjs/random/index.cjs +25 -0
- package/dist/cjs/regexp/index.cjs +109 -0
- package/dist/cjs/storage/index.cjs +11 -0
- package/dist/cjs/storage/localStorage.cjs +40 -0
- package/dist/cjs/storage/sessionStorage.cjs +40 -0
- package/dist/cjs/string/index.cjs +338 -0
- package/dist/cjs/url/index.cjs +279 -0
- package/dist/cjs/validate/index.cjs +487 -0
- package/dist/cjs/weapp/index.cjs +151 -0
- package/dist/es/ID-card/index.mjs +116 -0
- package/dist/es/array/index.mjs +437 -0
- package/dist/es/clipboard/index.mjs +129 -0
- package/dist/es/color/index.mjs +200 -0
- package/dist/es/constants/date.mjs +184 -0
- package/dist/es/constants/lang.mjs +11 -0
- package/dist/es/constants/math.mjs +11 -0
- package/dist/es/constants/regexp.mjs +55 -0
- package/dist/es/constants/sort.mjs +13 -0
- package/dist/es/cookie/index.mjs +65 -0
- package/dist/es/crypto/aes/aes.mjs +529 -0
- package/dist/es/crypto/aes/index.mjs +25 -0
- package/dist/es/crypto/base32/base32.mjs +381 -0
- package/dist/es/crypto/base32/index.mjs +39 -0
- package/dist/es/crypto/base64/base64.mjs +427 -0
- package/dist/es/crypto/base64/index.mjs +57 -0
- package/dist/es/crypto/des/des.mjs +1050 -0
- package/dist/es/crypto/des/index.mjs +27 -0
- package/dist/es/crypto/md5/index.mjs +22 -0
- package/dist/es/crypto/md5/md5.mjs +941 -0
- package/dist/es/crypto/sha/sha1/index.mjs +22 -0
- package/dist/es/crypto/sha/sha1/sha1.mjs +599 -0
- package/dist/es/crypto/sha/sha256/index.mjs +41 -0
- package/dist/es/crypto/sha/sha256/sha256.mjs +649 -0
- package/dist/es/crypto/sha/sha3/index.mjs +39 -0
- package/dist/es/crypto/sha/sha3/sha3.mjs +742 -0
- package/dist/es/crypto/sha/sha512/index.mjs +79 -0
- package/dist/es/crypto/sha/sha512/sha512.mjs +1177 -0
- package/dist/es/crypto/sm/lib/asn1.mjs +164 -0
- package/dist/es/crypto/sm/lib/ec.mjs +349 -0
- package/dist/es/crypto/sm/lib/jsbn.mjs +1630 -0
- package/dist/es/crypto/sm/lib/sm3.mjs +170 -0
- package/dist/es/crypto/sm/lib/utils.mjs +186 -0
- package/dist/es/crypto/sm/sm2/index.mjs +111 -0
- package/dist/es/crypto/sm/sm2/sm2.mjs +258 -0
- package/dist/es/crypto/sm/sm3/index.mjs +13 -0
- package/dist/es/crypto/sm/sm3/sm3.mjs +99 -0
- package/dist/es/crypto/sm/sm4/index.mjs +25 -0
- package/dist/es/crypto/sm/sm4/sm4.mjs +359 -0
- package/dist/es/crypto/tea/index.mjs +23 -0
- package/dist/es/crypto/tea/tea.mjs +211 -0
- package/dist/es/date/index.mjs +1262 -0
- package/dist/es/desensitized/index.mjs +69 -0
- package/dist/es/device/index.mjs +145 -0
- package/dist/es/dom/index.mjs +164 -0
- package/dist/es/file/index.mjs +323 -0
- package/dist/es/function/index.mjs +63 -0
- package/dist/es/id/index.mjs +43 -0
- package/dist/es/index.mjs +59 -0
- package/dist/es/keycode/index.mjs +139 -0
- package/dist/es/math/index.mjs +274 -0
- package/dist/es/number/index.mjs +12 -0
- package/dist/es/object/index.mjs +203 -0
- package/dist/es/pagination/index.mjs +134 -0
- package/dist/es/random/index.mjs +22 -0
- package/dist/es/regexp/index.mjs +98 -0
- package/dist/es/storage/index.mjs +9 -0
- package/dist/es/storage/localStorage.mjs +35 -0
- package/dist/es/storage/sessionStorage.mjs +35 -0
- package/dist/es/string/index.mjs +321 -0
- package/dist/es/url/index.mjs +261 -0
- package/dist/es/validate/index.mjs +451 -0
- package/dist/es/weapp/index.mjs +140 -0
- package/dist/lib/index.full.esm.js +15825 -0
- package/dist/lib/index.full.esm.min.js +58 -0
- package/dist/lib/index.full.umd.js +16179 -0
- package/package.json +54 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { isEmpty, isObject, isArray, isDate } from '../validate/index.mjs';
|
|
2
|
+
|
|
3
|
+
/* 对象转换 */
|
|
4
|
+
/**
|
|
5
|
+
* map转object
|
|
6
|
+
* @param {Map} map 参数
|
|
7
|
+
* @returns {Object} 返回Object
|
|
8
|
+
*/
|
|
9
|
+
function mapToObject(map) {
|
|
10
|
+
let obj = Object.create(null);
|
|
11
|
+
for (let [k, v] of map) {
|
|
12
|
+
obj[k] = v;
|
|
13
|
+
}
|
|
14
|
+
return obj;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* map转json字符串
|
|
19
|
+
* @param {Map} map 参数
|
|
20
|
+
* @returns {String} 返回Json字符串
|
|
21
|
+
*/
|
|
22
|
+
function mapToJson(map) {
|
|
23
|
+
return JSON.stringify(mapToObject(map));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* object转map
|
|
28
|
+
* @param {Object} obj 参数
|
|
29
|
+
* @returns {Map} 返回Map
|
|
30
|
+
*/
|
|
31
|
+
function objectToMap(obj) {
|
|
32
|
+
let map = new Map();
|
|
33
|
+
for (let k of Object.keys(obj)) {
|
|
34
|
+
map.set(k, obj[k]);
|
|
35
|
+
}
|
|
36
|
+
return map;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* json字符串转map
|
|
41
|
+
* @param {String} json json字符串
|
|
42
|
+
* @returns {Map} 返回Map
|
|
43
|
+
*/
|
|
44
|
+
function jsonToMap(json) {
|
|
45
|
+
return objectToMap(JSON.parse(json));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* json对象转json字符串
|
|
50
|
+
* @param {Object} json json对象
|
|
51
|
+
* @returns {String} 返回Json字符串
|
|
52
|
+
*/
|
|
53
|
+
function stringifyJson(json) {
|
|
54
|
+
return JSON.stringify(json);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* json字符串转json对象
|
|
59
|
+
* @param {String} json json字符串
|
|
60
|
+
* @returns {Object} 返回Json对象
|
|
61
|
+
*/
|
|
62
|
+
function parseJson(json) {
|
|
63
|
+
if (isEmpty(json)) return;
|
|
64
|
+
return JSON.parse(json);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* 数据拷贝,对比,合并等操作 */
|
|
68
|
+
/**
|
|
69
|
+
* 浅拷贝数据
|
|
70
|
+
* @param {*} source 拷贝的数据
|
|
71
|
+
* @returns {*} 返回浅拷贝的数据
|
|
72
|
+
*/
|
|
73
|
+
function clone(source) {
|
|
74
|
+
return Object.assign(source);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* 深拷贝数据
|
|
79
|
+
* @param {*} source 拷贝的数据
|
|
80
|
+
* @returns {*} 返回深拷贝的数据
|
|
81
|
+
*/
|
|
82
|
+
function cloneDeep(source) {
|
|
83
|
+
// Object
|
|
84
|
+
if (isObject(source)) {
|
|
85
|
+
let copy = {};
|
|
86
|
+
for (let attr in source) {
|
|
87
|
+
if (source.hasOwnProperty(attr)) copy[attr] = cloneDeep(source[attr]);
|
|
88
|
+
}
|
|
89
|
+
return copy;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Array
|
|
93
|
+
else if (isArray(source)) {
|
|
94
|
+
let copy = [];
|
|
95
|
+
for (let i = 0, len = source.length; i < len; i++) {
|
|
96
|
+
copy[i] = cloneDeep(source[i]);
|
|
97
|
+
}
|
|
98
|
+
return copy;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Date
|
|
102
|
+
else if (isDate(source)) {
|
|
103
|
+
let copy = new Date();
|
|
104
|
+
copy.setTime(source.getTime());
|
|
105
|
+
return copy;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Other 原路返回源数据
|
|
109
|
+
else {
|
|
110
|
+
return source;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* 比较两个对象是否相等
|
|
116
|
+
* @description 方法只能对比简单的对象,不能包含function,另外对象的属性顺序不一致也是相等的
|
|
117
|
+
* @param {Object} obj1 对象1
|
|
118
|
+
* @param {Object} obj2 对象2
|
|
119
|
+
* @returns {Boolean} 返回true和false
|
|
120
|
+
*/
|
|
121
|
+
function objectEquals(obj1, obj2) {
|
|
122
|
+
// 比较值相等
|
|
123
|
+
if (obj1 === obj2) {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
// 比较Date
|
|
127
|
+
if (obj1 instanceof Date && obj2 instanceof Date) {
|
|
128
|
+
return obj1.getTime() === obj2.getTime();
|
|
129
|
+
}
|
|
130
|
+
// 对象比较引用
|
|
131
|
+
if (!obj1 || !obj2 || (typeof obj1 !== "object" && typeof obj2 !== "object")) {
|
|
132
|
+
return obj1 === obj2;
|
|
133
|
+
}
|
|
134
|
+
// 比较原型
|
|
135
|
+
if (obj1.prototype !== obj2.prototype) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
// 比较对象的值
|
|
139
|
+
const keys = Object.keys(obj1);
|
|
140
|
+
if (keys.length !== Object.keys(obj2).length) {
|
|
141
|
+
return false;
|
|
142
|
+
} else {
|
|
143
|
+
return keys.every((k) => objectEquals(obj1[k], obj2[k]));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* 合并对象
|
|
149
|
+
* @param {Object} target 目标对象
|
|
150
|
+
* @param {Object[]} source 原对象列表
|
|
151
|
+
* @returns {Object} 返回合并后的对象
|
|
152
|
+
*/
|
|
153
|
+
function merge(target, ...source) {
|
|
154
|
+
return Object.assign(target, ...source);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* 根据字符串属性路径操作目标对象 */
|
|
158
|
+
/**
|
|
159
|
+
* 根据字符串属性路径获取目标对象的值
|
|
160
|
+
* @example
|
|
161
|
+
* let res = {code:200, data:{rows:[], pages:{current:1,pageSize:20}}}
|
|
162
|
+
* this._getTargetValueByPath(res, 'data.pages.pageSize'); // 这里会输出20
|
|
163
|
+
* @param {Object} target 目标对象
|
|
164
|
+
* @param {String} path 字符串属性路径
|
|
165
|
+
* @returns {Object} 返回目标对象
|
|
166
|
+
*/
|
|
167
|
+
function getTargetValueByPath(target, path = "data") {
|
|
168
|
+
const paths = (path || "data").split(".");
|
|
169
|
+
let data = target;
|
|
170
|
+
// 属性总个数
|
|
171
|
+
let lastIndex = paths.length - 1;
|
|
172
|
+
for (const index in paths) {
|
|
173
|
+
// 如果路径中没有该属性,则创建一个
|
|
174
|
+
if (data[paths[index]] === null || data[paths[index]] === undefined) {
|
|
175
|
+
data[paths[index]] = Number(index) !== lastIndex ? {} : undefined;
|
|
176
|
+
}
|
|
177
|
+
// 逐层向下找到对应属性的值
|
|
178
|
+
data = data[paths[index]];
|
|
179
|
+
}
|
|
180
|
+
return data;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* 根据字符串属性路径设置目标对象的值
|
|
185
|
+
* @example
|
|
186
|
+
* let res = {code:200, data:{rows:[], pages:{current:1,pageSize:20}}}
|
|
187
|
+
* this._setTargetValueByPath(res, 'data.pages.pageSize', 30); // 打印res对象会发现pageSize的值改为了30
|
|
188
|
+
* @param {Object} target 目标对象
|
|
189
|
+
* @param {String} path 字符串属性路径
|
|
190
|
+
* @param {*} value 值
|
|
191
|
+
*/
|
|
192
|
+
function setTargetValueByPath(target, path = "data", value) {
|
|
193
|
+
const paths = (path || "data").split(".");
|
|
194
|
+
// 变量表达式拼接,最终结果如:target['personInfo']['personName']='xxx';
|
|
195
|
+
let fxStr = "";
|
|
196
|
+
for (const name of paths) {
|
|
197
|
+
fxStr += `['${name}']`;
|
|
198
|
+
}
|
|
199
|
+
const fn = new Function("target", `target${fxStr}=${value}`);
|
|
200
|
+
fn(target);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export { clone, cloneDeep, getTargetValueByPath, jsonToMap, mapToJson, mapToObject, merge, objectEquals, objectToMap, parseJson, setTargetValueByPath, stringifyJson };
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 获得分页起始数
|
|
3
|
+
* @param {Object} pagination 分页参数
|
|
4
|
+
* @returns {Array} 返回起始数
|
|
5
|
+
*/
|
|
6
|
+
function getLimit(pagination = { page: 1, pageSize: 10, total: 0, totalPage: 0, pagerCount: 7 }) {
|
|
7
|
+
return [pagination.pageSize * (pagination.page - 1), pagination.pageSize * pagination.page];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* 获得总条数
|
|
12
|
+
* @param {Object} pagination 分页参数
|
|
13
|
+
* @returns {Number} 返回总条数
|
|
14
|
+
*/
|
|
15
|
+
function getTotalPage(pagination = { page: 1, pageSize: 10, total: 0, totalPage: 0, pagerCount: 7 }) {
|
|
16
|
+
return Math.ceil((pagination.total || 0) / (pagination.pageSize || 0));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* 获得彩虹分页器
|
|
21
|
+
* @param {Object} pagination 分页参数
|
|
22
|
+
* @param {Function} callback 回调函数
|
|
23
|
+
* @returns {Promise} 返回彩虹分页器数据
|
|
24
|
+
*/
|
|
25
|
+
function getRainbowPager(
|
|
26
|
+
pagination = {
|
|
27
|
+
page: 1,
|
|
28
|
+
pageSize: 10,
|
|
29
|
+
total: 0,
|
|
30
|
+
totalPage: 0,
|
|
31
|
+
pagerCount: 7,
|
|
32
|
+
},
|
|
33
|
+
callback,
|
|
34
|
+
) {
|
|
35
|
+
return new Promise((resolve) => {
|
|
36
|
+
// 分页参数
|
|
37
|
+
let page = pagination.page || 1;
|
|
38
|
+
let totalPage = pagination.totalPage > 0 ? pagination.totalPage : getTotalPage(pagination);
|
|
39
|
+
let pagerCount = pagination.pagerCount || 7;
|
|
40
|
+
|
|
41
|
+
// 计算参数
|
|
42
|
+
let isEven = (pagerCount & 1) === 0;
|
|
43
|
+
let left = pagerCount >> 1;
|
|
44
|
+
let right = pagerCount >> 1;
|
|
45
|
+
let pagerLength = pagerCount;
|
|
46
|
+
|
|
47
|
+
// 计算生成的分页器数量
|
|
48
|
+
if (isEven) {
|
|
49
|
+
right++;
|
|
50
|
+
}
|
|
51
|
+
if (totalPage < pagerCount) {
|
|
52
|
+
pagerLength = totalPage;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// 分页器数组
|
|
56
|
+
let pager = new Array(pagerLength);
|
|
57
|
+
|
|
58
|
+
// 生成分页器
|
|
59
|
+
if (totalPage >= pagerCount) {
|
|
60
|
+
if (page <= left) {
|
|
61
|
+
for (let i = 0; i < pager.length; i++) {
|
|
62
|
+
pager[i] = i + 1;
|
|
63
|
+
}
|
|
64
|
+
} else if (page > totalPage - right) {
|
|
65
|
+
for (let i = 0; i < pager.length; i++) {
|
|
66
|
+
pager[i] = i + totalPage - pagerCount + 1;
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
for (let i = 0; i < pager.length; i++) {
|
|
70
|
+
pager[i] = i + page - left + (isEven ? 1 : 0);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
} else {
|
|
74
|
+
for (let i = 0; i < pager.length; i++) {
|
|
75
|
+
pager[i] = i + 1;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// 支持回调函数和Promise
|
|
80
|
+
callback && callback(pager);
|
|
81
|
+
resolve(pager);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* 获得上一页
|
|
87
|
+
* @param {Object} pagination 分页参数
|
|
88
|
+
* @param {Function} callback 回调函数
|
|
89
|
+
* @returns {Promise} 返回上一页
|
|
90
|
+
*/
|
|
91
|
+
function getPrevPage(pagination = { page: 1, pageSize: 10, total: 0, totalPage: 0, pagerCount: 7 }, callback) {
|
|
92
|
+
return new Promise((resolve) => {
|
|
93
|
+
if (pagination.page > 1) {
|
|
94
|
+
pagination.page--;
|
|
95
|
+
} else {
|
|
96
|
+
pagination.page = 1;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// 支持回调函数和Promise
|
|
100
|
+
callback && callback(pagination.page);
|
|
101
|
+
resolve(pagination.page);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* 获得下一页
|
|
107
|
+
* @description 最后一页会根据totalPage参数判断,如果不传此参数,则会根据参数中pageSize和total重新计算总页数
|
|
108
|
+
* @param {Object} pagination 分页参数
|
|
109
|
+
* @param {Function} callback 回调函数
|
|
110
|
+
* @returns {Promise} 返回下一页
|
|
111
|
+
*/
|
|
112
|
+
function getNextPage(pagination = { page: 1, pageSize: 10, total: 0, totalPage: 0, pagerCount: 7 }, callback) {
|
|
113
|
+
return new Promise((resolve) => {
|
|
114
|
+
// 获得总页数,如果没有传totalPage,则需要根据传的pageSize和total计算
|
|
115
|
+
let totalPage = pagination.totalPage > 0 ? pagination.totalPage : getTotalPage(pagination);
|
|
116
|
+
|
|
117
|
+
// 计算当前页大于0和小与0的情况
|
|
118
|
+
if (pagination.page > 0) {
|
|
119
|
+
if (pagination.page < totalPage) {
|
|
120
|
+
pagination.page++;
|
|
121
|
+
} else {
|
|
122
|
+
pagination.page = totalPage;
|
|
123
|
+
}
|
|
124
|
+
} else {
|
|
125
|
+
pagination.page = 1;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// 支持回调函数和Promise
|
|
129
|
+
callback && callback(pagination.page);
|
|
130
|
+
resolve(pagination.page);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export { getLimit, getNextPage, getPrevPage, getRainbowPager, getTotalPage };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 生成指定大小的随机整数
|
|
3
|
+
* @description n和m参数表示最小和最大范围值,默认0-9之间范围
|
|
4
|
+
* @param {Number} min 随机数的最小值,默认 0
|
|
5
|
+
* @param {Number} max 随机数的最大值,默认 9
|
|
6
|
+
* @returns {Number} 返回指定大小的随机整数
|
|
7
|
+
*/
|
|
8
|
+
function getRandom(min = 0, max = 9) {
|
|
9
|
+
return Math.floor(Math.random() * (max - min + 1) + min);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 生成固定位数的随机整数
|
|
14
|
+
* @description 默认是1,代表生成0-9之间一位,如果是2,则生成10-99之间两位,以此类推
|
|
15
|
+
* @param {Number} len 固定的位数
|
|
16
|
+
* @returns {Number} 返回固定位数的随机数
|
|
17
|
+
*/
|
|
18
|
+
function getRandomDigit(len = 1) {
|
|
19
|
+
return Math.floor((Math.random() + Math.floor(Math.random() * 9 + 1)) * Math.pow(10, len - 1));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { getRandom, getRandomDigit };
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { REGEXP } from '../constants/regexp.mjs';
|
|
2
|
+
|
|
3
|
+
/* 正则校验方法 */
|
|
4
|
+
/**
|
|
5
|
+
* 正则校验的方法
|
|
6
|
+
* @description 类型为REGEXP对应的正则
|
|
7
|
+
* @param {String|Number} value 校验的参数
|
|
8
|
+
* @param {RegExp} regex 使用的REGEXP中的正则
|
|
9
|
+
* @returns {Boolean} 返回校验的结果
|
|
10
|
+
*/
|
|
11
|
+
function regexpTest(value, regex) {
|
|
12
|
+
return new RegExp(regex).test(value);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* 常用校验 */
|
|
16
|
+
/**
|
|
17
|
+
* 是中文
|
|
18
|
+
* @param {String} value 校验的参数
|
|
19
|
+
* @returns {Boolean} 返回校验的结果
|
|
20
|
+
*/
|
|
21
|
+
function isChinese(value) {
|
|
22
|
+
return regexpTest(value, REGEXP.CH);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* 是英文
|
|
27
|
+
* @param {String} value 校验的参数
|
|
28
|
+
* @returns {Boolean} 返回校验的结果
|
|
29
|
+
*/
|
|
30
|
+
function isEnglish(value) {
|
|
31
|
+
return regexpTest(value, REGEXP.EN);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* 是外链
|
|
36
|
+
* @description 支持http,https,mail,tel电话
|
|
37
|
+
* @param {String} value 校验的参数
|
|
38
|
+
* @returns {Boolean} 返回校验的结果
|
|
39
|
+
*/
|
|
40
|
+
function isExternal(value) {
|
|
41
|
+
return regexpTest(value, REGEXP.EXTERNAL);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 是小写字母
|
|
46
|
+
* @param {String} value 校验的参数
|
|
47
|
+
* @returns {Boolean} 返回校验的结果
|
|
48
|
+
*/
|
|
49
|
+
function isLowerCase(value) {
|
|
50
|
+
return regexpTest(value, REGEXP.LOWER_CASE);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* 是大写字母
|
|
55
|
+
* @param {String} value 校验的参数
|
|
56
|
+
* @returns {Boolean} 返回校验的结果
|
|
57
|
+
*/
|
|
58
|
+
function isUpperCase(value) {
|
|
59
|
+
return regexpTest(value, REGEXP.UPPER_CASE);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* 是11位手机号码
|
|
64
|
+
* @param {String} value 校验的参数
|
|
65
|
+
* @returns {Boolean} 返回校验的结果
|
|
66
|
+
*/
|
|
67
|
+
function isMobile(value) {
|
|
68
|
+
return regexpTest(value, REGEXP.MOBILE);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* 是邮箱
|
|
73
|
+
* @param {String} value 校验的参数
|
|
74
|
+
* @returns {Boolean} 返回校验的结果
|
|
75
|
+
*/
|
|
76
|
+
function isEmail(value) {
|
|
77
|
+
return regexpTest(value, REGEXP.EMAIL);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* 是身份证号码(15-18位)
|
|
82
|
+
* @param {String} value 校验的参数
|
|
83
|
+
* @returns {Boolean} 返回校验的结果
|
|
84
|
+
*/
|
|
85
|
+
function isIdCard(value) {
|
|
86
|
+
return regexpTest(value, REGEXP.ID_CARD);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* 是url链接
|
|
91
|
+
* @param {String} value 校验的参数
|
|
92
|
+
* @returns {Boolean} 返回校验的结果
|
|
93
|
+
*/
|
|
94
|
+
function isUrl(value) {
|
|
95
|
+
return regexpTest(value, REGEXP.URL);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export { isChinese, isEmail, isEnglish, isExternal, isIdCard, isLowerCase, isMobile, isUpperCase, isUrl, regexpTest };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* localStorage存储 */
|
|
2
|
+
/**
|
|
3
|
+
* 通过key从localStorage缓存中获取数据
|
|
4
|
+
* @param {String} key key值
|
|
5
|
+
* @returns {String} 返回数据
|
|
6
|
+
*/
|
|
7
|
+
function getLocalStorage(key) {
|
|
8
|
+
return window.localStorage.getItem(key) || undefined;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* 设置localStorage缓存数据
|
|
13
|
+
* @param {String} key key值
|
|
14
|
+
* @param {String} value value值
|
|
15
|
+
*/
|
|
16
|
+
function setLocalStorage(key, value) {
|
|
17
|
+
window.localStorage.setItem(key, value);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 通过key从localStorage缓存中删除数据
|
|
22
|
+
* @param {String} key key值
|
|
23
|
+
*/
|
|
24
|
+
function removeLocalStorage(key) {
|
|
25
|
+
window.localStorage.removeItem(key);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* 清空localStorage缓存中所有数据
|
|
30
|
+
*/
|
|
31
|
+
function clearLocalStorage() {
|
|
32
|
+
window.localStorage.clear();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { clearLocalStorage, getLocalStorage, removeLocalStorage, setLocalStorage };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* sessionStorage存储 */
|
|
2
|
+
/**
|
|
3
|
+
* 通过key从sessionStorage缓存中获取数据
|
|
4
|
+
* @param {String} key key值
|
|
5
|
+
* @returns {String} 返回数据
|
|
6
|
+
*/
|
|
7
|
+
function getSessionStorage(key) {
|
|
8
|
+
return window.sessionStorage.getItem(key) || "";
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* 设置sessionStorage缓存数据
|
|
13
|
+
* @param {String} key key值
|
|
14
|
+
* @param {String} value value值
|
|
15
|
+
*/
|
|
16
|
+
function setSessionStorage(key, value) {
|
|
17
|
+
window.sessionStorage.setItem(key, value);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 通过key从sessionStorage缓存中删除数据
|
|
22
|
+
* @param {String} key key值
|
|
23
|
+
*/
|
|
24
|
+
function removeSessionStorage(key) {
|
|
25
|
+
window.sessionStorage.removeItem(key);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* 清空sessionStorage缓存中所有数据
|
|
30
|
+
*/
|
|
31
|
+
function clearSessionStorage() {
|
|
32
|
+
window.sessionStorage.clear();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { clearSessionStorage, getSessionStorage, removeSessionStorage, setSessionStorage };
|