123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325 |
- /*
- * @Author: your name
- * @Date: 2021-12-13 09:43:22
- * @LastEditTime: 2022-03-17 09:41:18
- * @LastEditors: your name
- * @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]);
- // }
- // });
- for (let i = 0; i < children.length;) {
- if (children[i][parentKey] === parent[parentIDKey]) {
- const temp = children.splice(i, 1)
- typeof parent.children !== 'undefined'
- ? parent.children.push(...temp)
- : (parent.children = temp)
- translator(temp, children)
- } else {
- i++
- }
- }
- });
- };
- 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)
- let i = arr.length
- if (count > i) {
- i = count
- }
- let min = i - count, temp, index;
- while (i-- > min) {
- index = Math.floor((arr.length) * Math.random());
- temp = shuffled[index];
- if (shuffled[i]) {
- shuffled[index] = shuffled[i];
- }
- else {
- shuffled[index] = shuffled[index]
- }
- 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 pwdLen = maxLen
- const datas = []
- if (pwdStruc.length) {
- let typeLong = Number(pwdStruc[0]) + Number(pwdStruc[1]) + Number(pwdStruc[2]) + Number(pwdStruc[3]);
- let passLong = Math.floor(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);
- console.log(v)
- for (let i = 0; i < passLong; i++) {
- dis += v[i]
- }
- }
- let strlong = pwdLen - (passLong * typeLong);
- if (strlong > 0) {
- if (pwdStruc[0] == 1) {
- let arr = alphabet.toLocaleUpperCase().split('');
- let v = randomAlp(arr, strlong);
- for (let i = 0; i < strlong; i++) {
- dis += v[i]
- }
- }
- else if (pwdStruc[1] == 1) {
- let arr = alphabet.split('');
- let v = randomAlp(arr, strlong);
- for (let i = 0; i < strlong; i++) {
- dis += v[i]
- }
- }
- else if (pwdStruc[2] == 1) {
- let arr = special
- let v = randomAlp(arr, strlong);
- for (let i = 0; i < strlong; i++) {
- dis += v[i]
- }
- }
- else if (pwdStruc[3] == 1) {
- let arr = numbers
- let v = randomAlp(arr, strlong);
- for (let i = 0; i < strlong; 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('密码规则转换失败')
- }
- }
- //模糊查询
- export function findarrays(ar, feature, v) {
- var arr = [];
- for (var i = 0; i < ar.length; i++) {
- var atxt = ar[i][feature];
- var btxt = v;
- var type = 0;
- if (atxt) {
- if (atxt.match(btxt) == btxt) {
- type = 1;
- }
- }
- if (type == 1) {
- arr.push(ar[i]);
- }
- }
- // var arr = [];
- // for (var i = 0; i < ar.length; i++) {
- // var atxt = ar[i][feature];
- // var btxt = v;
- // // 将字符串按某个字符切割成若干个字符串,并以数组形式返回
- // var atxtarr = atxt;
- // var btxtarr = btxt;
- // var type = 0;
- // // for (var k = 0; k < atxtarr.length; k++) {
- // // if (btxtarr[0].length >= atxtarr[k].length) {
- // // if (atxtarr[k] == btxtarr[0]) {
- // // type = 1;
- // // }
- // // }
- // // }
- // if (atxtarr == btxtarr) {
- // type = 1;
- // } else if (atxtarr.length > btxtarr.length) {
- // for (var k = 0; k < atxtarr.length; k++) {
- // if (btxtarr[0].length >= atxtarr[k].length) {
- // if (atxtarr[k] == btxtarr) {
- // type = 1;
- // }
- // }
- // }
- // }
- // if (type == 1) {
- // arr.push(ar[i]);
- // }
- // }
- return arr;
- }
- // 表单输入长度验证
- function getRealLength(string) {
- let realLength = 0,
- len = string.length,
- charCode = -1
- for (let i = 0; i < len; i++) {
- charCode = string.charCodeAt(i)
- if (charCode >= 0 && charCode <= 128) {
- realLength += 1
- } else {
- realLength += 2
- }
- }
- return realLength
- }
- export function lengthValidator(rule, value, callback) {
- value = value ?? ''
- const realLength = getRealLength(value)
- if (realLength === 0) {
- callback()
- } else if (rule.min && realLength < rule.min) {
- rule.message += ` ${realLength}/${rule.min}`
- callback(new Error('长度小于最小值'))
- } else if (rule.max && realLength > rule.max) {
- rule.message += ` ${realLength}/${rule.max}`
- callback(new Error('长度超出最大值'))
- } else {
- callback()
- }
- }
- // 表单验证输入内容验证
- export const regular = {
- integer: /^[0-9]*$/,
- name: /^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$/,
- nameMessage: '只能包含中文、英文、数字和下划线切不能以下划线开头'
- }
|