yfs/common/util.js
2025-06-25 16:52:08 +08:00

110 lines
3.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 延迟执行
* @param {Number} ms
* @returns
*/
export function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
/**
* 解析查询字符串
* @param {string} urlOrQueryString
* @returns {Object} 查询参数对象
*/
export function parseQueryString(urlOrQueryString) {
// 如果传入的是完整URL如 "/path?name=value"),提取查询部分
let queryString = urlOrQueryString;
const questionMarkIndex = queryString.indexOf('?');
if (questionMarkIndex !== -1) {
queryString = queryString.slice(questionMarkIndex + 1);
}
const params = {};
if (!queryString) return params; // 如果没有查询参数,返回空对象
const pairs = queryString.split('&');
for (const pair of pairs) {
const [key, value] = pair.split('=');
// 解码 URI 组件,并处理无值情况(如 "key" 而不是 "key=value"
params[key] = value ? decodeURIComponent(value) : '';
}
return params;
}
/**
* 提示
* @param {string} msg
*/
export function msg(msg) {
let title = msg || ''
let icon = 'none'
let mask = false
let duration = 1500
let position = 'center'
uni.showToast({
title,
icon,
mask,
duration,
position,
});
};
/**
* 生成GUID
* @returns {string} 返回格式为'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'的GUID
*/
export function generateGUID() {
return 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.replace(/[x]/g, function(c) {
const r = Math.random() * 16 | 0;
const v = c === 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
/**
* 生成指定长度的随机GUID
* @param {Number} length 指定GUID的长度
* @returns {string} 返回指定长度的随机GUID
*/
export function generateGUIDWithLength(length = 32) {
let guid = '';
const characters = 'abcdef0123456789';
// 生成指定长度的随机字符
for (let i = 0; i < length; i++) {
guid += characters.charAt(Math.floor(Math.random() * characters.length));
}
// 如果长度大于等于36则添加破折号使其格式类似标准GUID
if (length >= 36) {
return guid.substring(0, 8) + '-' +
guid.substring(8, 12) + '-' +
guid.substring(12, 16) + '-' +
guid.substring(16, 20) + '-' +
guid.substring(20, 32) +
guid.substring(32);
}
return guid;
}
/**
* 生成固定长度的随机字符串
* @param {Number} length 字符串长度默认为16
* @param {Boolean} includeSpecial 是否包含特殊字符默认为false
* @returns {string} 返回生成的随机字符串
*/
export function generateRandomString(length = 16, includeSpecial = false) {
let result = '';
let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
// 如果需要包含特殊字符
if (includeSpecial) {
characters += '!@#$%^&*()_+~`|}{[]:;?><,./-=';
}
const charactersLength = characters.length;
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}