/* * @Author: your name * @Date: 2021-12-13 09:43:22 * @LastEditTime: 2022-01-08 12:21:58 * @LastEditors: Please set LastEditors * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @FilePath: \Foshan4A2.0\src\utils\validate.js */ /** * Created by PanJiaChen on 16/11/18. */ /** * @param {string} path * @returns {Boolean} */ export function isExternal(path) { return /^(https?:|mailto:|tel:)/.test(path) } /** * @param {string} str * @returns {Boolean} */ export function validUsername(str) { const valid_map = ['admin', 'editor'] return valid_map.indexOf(str.trim()) >= 0 } /** * @param {string} str * @returns {Object} */ export function orgTree(str) { const valid_map = ['admin', 'editor'] return valid_map.indexOf(str.trim()) >= 0 } //  账号组树构造 export function translateDataToTreeAll(data, parentKey, parentIDKey) { let parent = data.filter((value) => Number(value[parentKey]) <= 0);// 父数据 let children = data.filter((value) => Number(value[parentKey]) > 0);// 子数据 //console.log('--parent', parent) //console.log('--children', children) let translator = (parent, children) => { parent.forEach((parent) => { parent.children = []; children.forEach((current, index) => { if (current[parentKey] === parent[parentIDKey]) { const temp = JSON.parse(JSON.stringify(children)); temp.splice(index, 1); translator([current], temp); typeof parent.children !== "undefined" ? parent.children.push(current) : (parent.children = [current]); } }); }); }; translator(parent, children); return parent; } export function deteleObject(obj) { var uniques = []; var stringify = {}; for (var i = 0; i < obj.length; i++) { var keys = Object.keys(obj[i]); keys.sort(function (a, b) { return (Number(a) - Number(b)); }); var str = ''; for (var j = 0; j < keys.length; j++) { str += JSON.stringify(keys[j]); str += JSON.stringify(obj[i][keys[j]]); } if (!stringify.hasOwnProperty(str)) { uniques.push(obj[i]); stringify[str] = true; } } uniques = uniques; return uniques; } // 随机长度 function randomNum(start, end) { return Math.floor(Math.random() * (Number(end) - Number(start)) + start) } //字母随机 function randomAlp(arr, count) { let shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index; while (i-- > min) { index = Math.floor((i + 1) * Math.random()); temp = shuffled[index]; shuffled[index] = shuffled[i]; shuffled[i] = temp; } return shuffled.slice(min); } /** * @param {minLen} 密码最小长度 * @param {maxLen} 密码最大长度 * @param {struc} 密码规则 * @returns {Object} * 4位密码规则 1111 = 大写 小写 特殊字符 数字 都开启 */ export function pwdProduce(minLen, maxLen, struc) { // 密码规则转化 const pwdStruc = typeof (struc) === 'string' ? struc.split('') : `${struc}`.split('') // 字母 const alphabet = 'abcdefghijklmnopqrstuvwxyz' // 特殊字符 const special = ['~','!','@','#','$','%','^','&','*','_','+','.'] //数字 const numbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] // 密码随机长度 const pwdLen = randomNum(minLen, maxLen) const datas = [] if (pwdStruc.length) { let typeLong = Number(pwdStruc[0]) + Number(pwdStruc[1]) + Number(pwdStruc[2]) + Number(pwdStruc[3]); let passLong = Math.ceil(pwdLen / typeLong); let dis=""; if(pwdStruc[0]==1){ let arr = alphabet.toLocaleUpperCase().split(''); let v = randomAlp(arr,passLong); for(let i = 0 ; i < passLong ; i++){ dis+=v[i] } } if(pwdStruc[1]==1){ let arr = alphabet.split(''); let v = randomAlp(arr,passLong); for(let i = 0 ; i < passLong ; i++){ dis+=v[i] } } if(pwdStruc[2]==1){ let arr = special let v = randomAlp(arr,passLong); for(let i = 0 ; i < passLong ; i++){ dis+=v[i] } } if(pwdStruc[3]==1){ let arr = numbers let v = randomAlp(arr,passLong); for(let i = 0 ; i < passLong ; i++){ dis+=v[i] } } return dis //缓存当前的密码规则 // pwdStruc.forEach((item, index) => { // if (item == 1) { // datas.push(index) // } // }) // // 只有一种规则时 // if (datas.length === 1) { // const num = datas[0] // const dis = randomAlp(alphabet.split('')).splice(0, pwdLen).join('') // switch (num) { // case 0: // return dis.toLocaleUpperCase() // break; // case 1: // return dis // break; // default: // break; // } // } } else { return new Error('密码规则转换失败') } }