123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- /*
- * @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('密码规则转换失败')
- }
- }
|