/** * 根据屏幕宽度自适应计算字体大小(基于1920设计稿) * @param {number} res - 设计稿上的原始尺寸 * @returns {number} 自适应后的尺寸 */ export function fontSize(res) { let clientWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth if (!clientWidth) return let fontSize = clientWidth / 1920 return res * fontSize } /** * 生成随机背景色 * @param {String} type 'hex' | 'rgb' 输出格式,默认 hex * @returns {String} '#RRGGBB' 或 'rgb(r,g,b)' * @example randomBgColor() */ export function randomBgColor(type = 'hex') { if (type === 'rgb') { const r = Math.floor(Math.random() * 256) const g = Math.floor(Math.random() * 256) const b = Math.floor(Math.random() * 256) return `rgb(${r},${g},${b})` } // 默认 hex return ( '#' + Math.floor(Math.random() * 0xffffff) .toString(16) .padStart(6, '0') ) } /** * 根据 url 递归查找对应的 label * @param {Array} tree - header 数组 * @param {String} path - 要匹配的 url * @returns {String|undefined} 找到返回 label,否则 undefined */ export function findLabelByUrl(tree, path) { for (const node of tree) { if (node.url === path) return node.label if (node.hasChildren && node.children) { const child = findLabelByUrl(node.children, path) if (child) return child } } } /** * get参数处理 * @param {*} params 参数 */ export function tansParams(params) { let result = '' for (const propName of Object.keys(params)) { const value = params[propName] const part = `${encodeURIComponent(propName)}=` if (value !== null && typeof value !== 'undefined') { if (typeof value === 'object') { for (const key of Object.keys(value)) { if (value[key] !== null && typeof value[key] !== 'undefined') { const params = `${propName}[${key}]` const subPart = `${encodeURIComponent(params)}=` result += `${subPart + encodeURIComponent(value[key])}&` } } } else { result += `${part + encodeURIComponent(value)}&` } } } return result }