| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- /*
- * @Descripttion: 工具集
- * @version: 1.2
- * @LastEditors: sakuya
- * @LastEditTime: 2022年5月24日00:28:56
- */
- // import CryptoJS from 'crypto-js';
- const tool = {};
- /* localStorage */
- tool.data = {
- set(key, data, datetime = 0) {
- let cacheValue = {
- content: data,
- datetime: parseInt(datetime) === 0 ? 0 : new Date().getTime() + parseInt(datetime) * 1000,
- };
- return localStorage.setItem(key, JSON.stringify(cacheValue));
- },
- get(key) {
- try {
- const value = JSON.parse(localStorage.getItem(key));
- if (value) {
- let nowTime = new Date().getTime();
- if (nowTime > value.datetime && value.datetime != 0) {
- localStorage.removeItem(key);
- return null;
- }
- return value.content;
- }
- return null;
- } catch (err) {
- return null;
- }
- },
- remove(key) {
- return localStorage.removeItem(key);
- },
- clear() {
- return localStorage.clear();
- },
- };
- /*sessionStorage*/
- tool.session = {
- set(table, settings) {
- var _set = JSON.stringify(settings);
- return sessionStorage.setItem(table, _set);
- },
- get(table) {
- var data = sessionStorage.getItem(table);
- try {
- data = JSON.parse(data);
- } catch (err) {
- return null;
- }
- return data;
- },
- remove(table) {
- return sessionStorage.removeItem(table);
- },
- clear() {
- return sessionStorage.clear();
- },
- };
- /*cookie*/
- tool.cookie = {
- set(name, value, config = {}) {
- var cfg = {
- expires: null,
- path: null,
- domain: null,
- secure: false,
- httpOnly: false,
- ...config,
- };
- var cookieStr = `${name}=${escape(value)}`;
- if (cfg.expires) {
- var exp = new Date();
- exp.setTime(exp.getTime() + parseInt(cfg.expires) * 1000);
- cookieStr += `;expires=${exp.toGMTString()}`;
- }
- if (cfg.path) {
- cookieStr += `;path=${cfg.path}`;
- }
- if (cfg.domain) {
- cookieStr += `;domain=${cfg.domain}`;
- }
- document.cookie = cookieStr;
- },
- get(name) {
- var arr = document.cookie.match(new RegExp('(^| )' + name + '=([^;]*)(;|$)'));
- if (arr != null) {
- return unescape(arr[2]);
- } else {
- return null;
- }
- },
- remove(name) {
- var exp = new Date();
- exp.setTime(exp.getTime() - 1);
- document.cookie = `${name}=;expires=${exp.toGMTString()}`;
- },
- };
- /* Fullscreen */
- tool.screen = function (element) {
- var isFull = !!(document.webkitIsFullScreen || document.mozFullScreen || document.msFullscreenElement || document.fullscreenElement);
- if (isFull) {
- if (document.exitFullscreen) {
- document.exitFullscreen();
- } else if (document.msExitFullscreen) {
- document.msExitFullscreen();
- } else if (document.mozCancelFullScreen) {
- document.mozCancelFullScreen();
- } else if (document.webkitExitFullscreen) {
- document.webkitExitFullscreen();
- }
- } else {
- if (element.requestFullscreen) {
- element.requestFullscreen();
- } else if (element.msRequestFullscreen) {
- element.msRequestFullscreen();
- } else if (element.mozRequestFullScreen) {
- element.mozRequestFullScreen();
- } else if (element.webkitRequestFullscreen) {
- element.webkitRequestFullscreen();
- }
- }
- };
- /* 复制对象 */
- tool.objCopy = function (obj) {
- return JSON.parse(JSON.stringify(obj));
- };
- /* 日期格式化 */
- tool.dateFormat = function (date, fmt = 'yyyy-MM-dd hh:mm:ss') {
- date = new Date(date);
- var o = {
- 'M+': date.getMonth() + 1, //月份
- 'd+': date.getDate(), //日
- 'h+': date.getHours(), //小时
- 'm+': date.getMinutes(), //分
- 's+': date.getSeconds(), //秒
- 'q+': Math.floor((date.getMonth() + 3) / 3), //季度
- S: date.getMilliseconds(), //毫秒
- };
- if (/(y+)/.test(fmt)) {
- fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
- }
- for (var k in o) {
- if (new RegExp('(' + k + ')').test(fmt)) {
- fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
- }
- }
- return fmt;
- };
- /* 千分符 */
- tool.groupSeparator = function (num) {
- num = num + '';
- if (!num.includes('.')) {
- num += '.';
- }
- return num
- .replace(/(\d)(?=(\d{3})+\.)/g, function ($0, $1) {
- return $1 + ',';
- })
- .replace(/\.$/, '');
- };
- // /* 常用加解密 */
- // tool.crypto = {
- // //MD5加密
- // MD5(data){
- // return CryptoJS.MD5(data).toString()
- // },
- // //BASE64加解密
- // BASE64: {
- // encrypt(data){
- // return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(data))
- // },
- // decrypt(cipher){
- // return CryptoJS.enc.Base64.parse(cipher).toString(CryptoJS.enc.Utf8)
- // }
- // },
- // //AES加解密
- // AES: {
- // encrypt(data, secretKey, config={}){
- // if(secretKey.length % 8 != 0){
- // console.warn("[SCUI error]: 秘钥长度需为8的倍数,否则解密将会失败。")
- // }
- // const result = CryptoJS.AES.encrypt(data, CryptoJS.enc.Utf8.parse(secretKey), {
- // iv: CryptoJS.enc.Utf8.parse(config.iv || ""),
- // mode: CryptoJS.mode[config.mode || "ECB"],
- // padding: CryptoJS.pad[config.padding || "Pkcs7"]
- // })
- // return result.toString()
- // },
- // decrypt(cipher, secretKey, config={}){
- // const result = CryptoJS.AES.decrypt(cipher, CryptoJS.enc.Utf8.parse(secretKey), {
- // iv: CryptoJS.enc.Utf8.parse(config.iv || ""),
- // mode: CryptoJS.mode[config.mode || "ECB"],
- // padding: CryptoJS.pad[config.padding || "Pkcs7"]
- // })
- // return CryptoJS.enc.Utf8.stringify(result);
- // }
- // }
- // }
- // 查找树
- tool.treeFind = (tree, func) => {
- for (const data of tree) {
- if (func(data)) return data;
- if (data.children) {
- const res = tool.treeFind(data.children, func);
- if (res) return res;
- }
- }
- return null;
- };
- export default tool;
|