From 8aa3afbf1950d224f2ea70cb9b833c51c04bc547 Mon Sep 17 00:00:00 2001 From: zkl <1019675918@qq.com> Date: Wed, 15 Jun 2022 16:51:19 +0800 Subject: [PATCH] =?UTF-8?q?plugins=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=9C=B0?= =?UTF-8?q?=E7=90=86=E4=BD=8D=E7=BD=AE=E3=80=81=E6=B8=85=E9=99=A4=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E4=B8=A4=E4=B8=AA=E6=A8=A1=E5=9D=97=EF=BC=9B=20?= =?UTF-8?q?=E5=85=B6=E4=B8=AD=E2=80=9C=E6=B8=85=E9=99=A4=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E2=80=9D=E5=9C=A8=E2=80=9C=E5=AD=98=E5=82=A8=E2=80=9D=E7=9A=84?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E4=B8=8A=E6=B7=BB=E5=8A=A0=E4=BA=86=E6=B8=85?= =?UTF-8?q?=E7=A9=BA=E6=89=80=E6=9C=89=E5=AD=98=E5=82=A8=E9=A1=B9=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Web/packages/web/src/feature.js | 6 +- .../web/src/plugins/clear-cache/cookie.vue | 39 +++++ .../web/src/plugins/clear-cache/index.js | 12 ++ .../web/src/plugins/clear-cache/info-card.vue | 161 ++++++++++++++++++ .../web/src/plugins/clear-cache/js/storage.js | 70 ++++++++ .../src/plugins/clear-cache/local-storage.vue | 47 +++++ .../web/src/plugins/clear-cache/main.vue | 120 +++++++++++++ .../plugins/clear-cache/session-storage.vue | 47 +++++ .../web/src/plugins/element/elementTree.vue | 19 +-- .../web/src/plugins/geolocation/index.js | 9 + .../web/src/plugins/geolocation/main.vue | 98 +++++++++++ 11 files changed, 615 insertions(+), 13 deletions(-) create mode 100644 Web/packages/web/src/plugins/clear-cache/cookie.vue create mode 100644 Web/packages/web/src/plugins/clear-cache/index.js create mode 100644 Web/packages/web/src/plugins/clear-cache/info-card.vue create mode 100644 Web/packages/web/src/plugins/clear-cache/js/storage.js create mode 100644 Web/packages/web/src/plugins/clear-cache/local-storage.vue create mode 100644 Web/packages/web/src/plugins/clear-cache/main.vue create mode 100644 Web/packages/web/src/plugins/clear-cache/session-storage.vue create mode 100644 Web/packages/web/src/plugins/geolocation/index.js create mode 100644 Web/packages/web/src/plugins/geolocation/main.vue diff --git a/Web/packages/web/src/feature.js b/Web/packages/web/src/feature.js index 0fccb245e..06338a20d 100644 --- a/Web/packages/web/src/feature.js +++ b/Web/packages/web/src/feature.js @@ -14,11 +14,15 @@ import Resource from './plugins/resources/index' import ApiMock from './plugins/api-mock/index' import WebVitals from './plugins/web-vitals-time/index' +import Geolocation from './plugins/geolocation/index' +import ClearCache from './plugins/clear-cache/index' + import {IndependPlugin, RouterPlugin} from '@dokit/web-core' export const BasicFeatures = { title: '常用工具', - list: [Console, AppInfo, Resource, Network, Storage, DemoPlugin, DemoIndependPlugin, H5DoorPlugin, WebVitals, Element, OneMachineWithMultipleControls, scanCode] + list: [Console, AppInfo, Resource, Network, Storage, DemoPlugin, DemoIndependPlugin, H5DoorPlugin, WebVitals, Element, + OneMachineWithMultipleControls, scanCode, Geolocation, ClearCache] // list: [Console, AppInfo, Resource, Network, Storage, H5DoorPlugin] } diff --git a/Web/packages/web/src/plugins/clear-cache/cookie.vue b/Web/packages/web/src/plugins/clear-cache/cookie.vue new file mode 100644 index 000000000..5ad7c6f13 --- /dev/null +++ b/Web/packages/web/src/plugins/clear-cache/cookie.vue @@ -0,0 +1,39 @@ + + + \ No newline at end of file diff --git a/Web/packages/web/src/plugins/clear-cache/index.js b/Web/packages/web/src/plugins/clear-cache/index.js new file mode 100644 index 000000000..8eba3bcdf --- /dev/null +++ b/Web/packages/web/src/plugins/clear-cache/index.js @@ -0,0 +1,12 @@ +import ClearCache from './main.vue' +// import {overrideConsole,restoreConsole} from './js/console' +import {getGlobalData, RouterPlugin} from '@dokit/web-core' + +export default new RouterPlugin({ + name: 'ClearCache', + nameZh: '清除缓存', + component: ClearCache, + icon: "https://pt-starimg.didistatic.com/static/starimg/img/nU9RCY0E1e1655278941997.pic", + onLoad(){}, + onUnload(){} +}) \ No newline at end of file diff --git a/Web/packages/web/src/plugins/clear-cache/info-card.vue b/Web/packages/web/src/plugins/clear-cache/info-card.vue new file mode 100644 index 000000000..1e00dd7a6 --- /dev/null +++ b/Web/packages/web/src/plugins/clear-cache/info-card.vue @@ -0,0 +1,161 @@ + + + + \ No newline at end of file diff --git a/Web/packages/web/src/plugins/clear-cache/js/storage.js b/Web/packages/web/src/plugins/clear-cache/js/storage.js new file mode 100644 index 000000000..f8d66408c --- /dev/null +++ b/Web/packages/web/src/plugins/clear-cache/js/storage.js @@ -0,0 +1,70 @@ +export const overrideLocalStorage = function(callback) { + const originSetItem = localStorage.setItem.bind(localStorage); + localStorage.setItem = function (key, value) { + // if (!isStr(key) || !isStr(value)) return; + originSetItem(key, value); + callback({type: 'setItem'}) + }; + + const originRemoveItem = localStorage.removeItem.bind(localStorage); + localStorage.removeItem = function (key) { + originRemoveItem(key); + callback({type: 'removeItem'}) + }; + + const originClear = localStorage.clear.bind(localStorage); + localStorage.clear = function (key) { + originClear(); + callback({type: 'clear'}) + }; +} + +export const overrideSessionStorage = function(callback) { + const originSetItem = sessionStorage.setItem.bind(sessionStorage); + sessionStorage.setItem = function (key, value) { + // if (!isStr(key) || !isStr(value)) return; + originSetItem(key, value); + callback({type: 'setItem'}) + }; + + const originRemoveItem = sessionStorage.removeItem.bind(sessionStorage); + sessionStorage.removeItem = function (key) { + originRemoveItem(key); + callback({type: 'removeItem'}) + }; + + const originClear = sessionStorage.clear.bind(sessionStorage); + sessionStorage.clear = function (key) { + originClear(); + callback({type: 'clear'}) + }; +} + +export const clearCookie = function () { + let cookieMap = getCookieMap() + for (const key in cookieMap) { + if (cookieMap.hasOwnProperty.call(cookieMap, key)) { + removeCookieItem(key) + } + } +} + +export const removeCookieItem = function (key) { + document.cookie = encodeURIComponent(key) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT"; +} + +export const getCookieMap = function (params) { + const cookieMap = Object.create({}) + const cookie = document.cookie; + if (cookie.trim() !== '') { + cookie.split(';').forEach(ele => { + ele = ele.split('='); + const key = ele.shift().trim(); + ele = decodeURIComponent(ele.join('=')); + cookieMap[key] = ele + }) + } + + return cookieMap; +} + diff --git a/Web/packages/web/src/plugins/clear-cache/local-storage.vue b/Web/packages/web/src/plugins/clear-cache/local-storage.vue new file mode 100644 index 000000000..3fdca2a7b --- /dev/null +++ b/Web/packages/web/src/plugins/clear-cache/local-storage.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/Web/packages/web/src/plugins/clear-cache/main.vue b/Web/packages/web/src/plugins/clear-cache/main.vue new file mode 100644 index 000000000..b6f52bebd --- /dev/null +++ b/Web/packages/web/src/plugins/clear-cache/main.vue @@ -0,0 +1,120 @@ + + + + \ No newline at end of file diff --git a/Web/packages/web/src/plugins/clear-cache/session-storage.vue b/Web/packages/web/src/plugins/clear-cache/session-storage.vue new file mode 100644 index 000000000..bc2a2963b --- /dev/null +++ b/Web/packages/web/src/plugins/clear-cache/session-storage.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/Web/packages/web/src/plugins/element/elementTree.vue b/Web/packages/web/src/plugins/element/elementTree.vue index acadb2996..3ccb9ab7e 100644 --- a/Web/packages/web/src/plugins/element/elementTree.vue +++ b/Web/packages/web/src/plugins/element/elementTree.vue @@ -69,18 +69,13 @@ export default { $bus.off(this.node.key + "refreshChild", this.refreshSon); } }, - parentIsUnfold:{ - handler: function (val) { - if(this.node?.key){ - if (val) { - $bus.on(this.node.key + "refreshMy", this.refresh); - } else { - $bus.off(this.node.key + "refreshMy", this.refresh); - } - } - }, - immediate: true, - } + parentIsUnfold(val) { + if (val) { + $bus.on(this.node.key + "refreshMy", this.refresh); + } else { + $bus.off(this.node.key + "refreshMy", this.refresh); + } + }, }, created() { if (this?.node?.tagName === "HTML") { diff --git a/Web/packages/web/src/plugins/geolocation/index.js b/Web/packages/web/src/plugins/geolocation/index.js new file mode 100644 index 000000000..da5b0430b --- /dev/null +++ b/Web/packages/web/src/plugins/geolocation/index.js @@ -0,0 +1,9 @@ +import {RouterPlugin} from '@dokit/web-core' +import Geolocation from './main.vue' + +export default new RouterPlugin({ + nameZh: '位置信息', + name: 'geolocation-information', + icon: 'https://pt-starimg.didistatic.com/static/starimg/img/lxFgOzH5HN1655278941999.png', + component: Geolocation +}) \ No newline at end of file diff --git a/Web/packages/web/src/plugins/geolocation/main.vue b/Web/packages/web/src/plugins/geolocation/main.vue new file mode 100644 index 000000000..e41d1859b --- /dev/null +++ b/Web/packages/web/src/plugins/geolocation/main.vue @@ -0,0 +1,98 @@ + + + + + +