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 @@ + + + + + +