From 7db97082316828904546fe7013d33cca15f8c603 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=99=8C?= Date: Fri, 7 Jul 2023 08:33:06 +0800 Subject: [PATCH] no message --- src/store/modules/cache.js | 22 ++ src/utils/request.js | 6 + src/utils/tool.js | 354 ++++++++++++++++--------------- src/views/system/table/index.vue | 9 + 4 files changed, 220 insertions(+), 171 deletions(-) create mode 100644 src/store/modules/cache.js diff --git a/src/store/modules/cache.js b/src/store/modules/cache.js new file mode 100644 index 0000000..7aee258 --- /dev/null +++ b/src/store/modules/cache.js @@ -0,0 +1,22 @@ +export default { + state: { + cacheList: {} + }, + mutations: { + setCache(state, { name, value }) { + state.cacheList[name] = value; + }, + getCache(state, name) { + if (!Object.prototype.hasOwnProperty.call(state.cacheList, name)) { + state.cacheList[name] = null; + } + return state.cacheList[name]; + }, + removeCache(state, name) { + delete state.cacheList[name]; + }, + clearCache(state) { + state.cacheList = {}; + } + } +} \ No newline at end of file diff --git a/src/utils/request.js b/src/utils/request.js index 15799f9..c851ac6 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -6,6 +6,8 @@ import { import sysConfig from "@/config"; import tool from '@/utils/tool'; import router from '@/router'; + + axios.defaults.baseURL = sysConfig.API_URL axios.defaults.timeout = sysConfig.TIMEOUT // HTTP request 拦截器 @@ -91,6 +93,10 @@ var http = { var cacheKey = ''; if (typeof config.cache !== 'undefined' && !isNaN(config.cache) && config.cache > 0) { cacheKey = tool.crypto.MD5(url + (new URLSearchParams(params)).toString()); + + + + const cachedData = tool.data.get(cacheKey); if (cachedData) { return resolve(cachedData); diff --git a/src/utils/tool.js b/src/utils/tool.js index 61725b5..ad1f1c4 100644 --- a/src/utils/tool.js +++ b/src/utils/tool.js @@ -4,26 +4,46 @@ * @LastEditors: sakuya * @LastEditTime: 2022年5月24日00:28:56 */ - import CryptoJS from 'crypto-js'; import sysConfig from "@/config"; +import store from '@/store' + const tool = {} +/* store */ +tool.store = { + set(key, data) { + return store.commit('setCache', key, data); + }, + get(key) { + try { + return store.commit('getCache', key); + } catch (err) { + return null + } + }, + remove(key) { + return store.commit('removeCache', key); + }, + clear() { + return store.commit('clearCache'); + } +} /* localStorage */ tool.data = { - set(key, data, datetime = 0) { - //加密 - if(sysConfig.LS_ENCRYPTION == "AES"){ - data = tool.crypto.AES.encrypt(JSON.stringify(data), sysConfig.LS_ENCRYPTION_key) - } + set(key, data, datetime = 0) { + //加密 + if (sysConfig.LS_ENCRYPTION == "AES") { + data = tool.crypto.AES.encrypt(JSON.stringify(data), sysConfig.LS_ENCRYPTION_key) + } let cacheValue = { content: data, datetime: parseInt(datetime) === 0 ? 0 : new Date().getTime() + parseInt(datetime) * 1000 } return localStorage.setItem(key, JSON.stringify(cacheValue)) - }, - get(key) { + }, + get(key) { try { const value = JSON.parse(localStorage.getItem(key)) if (value) { @@ -32,190 +52,182 @@ tool.data = { localStorage.removeItem(key) return null; } - //解密 - if(sysConfig.LS_ENCRYPTION == "AES"){ - value.content = JSON.parse(tool.crypto.AES.decrypt(value.content, sysConfig.LS_ENCRYPTION_key)) - } + //解密 + if (sysConfig.LS_ENCRYPTION == "AES") { + value.content = JSON.parse(tool.crypto.AES.decrypt(value.content, sysConfig.LS_ENCRYPTION_key)) + } return value.content } return null } catch (err) { return null } - }, - remove(key) { - return localStorage.removeItem(key) - }, - clear() { - return localStorage.clear() - } + }, + 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(); - } + 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()}` - } + 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.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.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.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.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("[X-PHP 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); - } - } + //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("[X-PHP 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); + } + } } - -export default tool +export default tool \ No newline at end of file diff --git a/src/views/system/table/index.vue b/src/views/system/table/index.vue index 5b5a9f5..afc3384 100644 --- a/src/views/system/table/index.vue +++ b/src/views/system/table/index.vue @@ -106,6 +106,15 @@ } }); } + + + this.$tool.store.set('cacheKey', {uid:1}); + + + + console.log(this.$tool.store.get('cacheKey')) + + }, computed: { filterObj(){