diff --git a/nezha-fronted/src/components/common/js/tools.js b/nezha-fronted/src/components/common/js/tools.js index 24d6e842e..dbbc17ab5 100644 --- a/nezha-fronted/src/components/common/js/tools.js +++ b/nezha-fronted/src/components/common/js/tools.js @@ -1,6 +1,7 @@ import PerfectScrollbar from "perfect-scrollbar"; import {getChart} from "./common"; import MessageBox from "element-ui/packages/message-box/src/main"; +import vuex from 'vuex' import i18n from "../i18n"; /*弹窗点击外部后关闭*/ const exceptClassName = ["config-dropdown", "nz-pop", "el-picker", "chart-box-dropdown", 'metric-dropdown', 'el-cascader__dropdown', "asset-dropdown", "no-style-class", 'el-message-box','nz-dashboard-dropdown', "el-autocomplete-suggestion"]; //clickoutside排除的class(白名单) no-style-class:没有任何样式的class @@ -8,6 +9,7 @@ export const clickoutside = { // 初始化指令 bind(el, binding, vnode) { if(!binding.expression) return; + let unsavedChange = localStorage.getItem('nz-unnsaved-change'); let oldValue; try{ oldValue= JSON.parse(JSON.stringify(binding.value.obj)); @@ -33,7 +35,7 @@ export const clickoutside = { } if(oldValue){ let newValue = JSON.parse(JSON.stringify(binding.value.obj)); - if(!isEqual(oldValue,newValue)){ + if(unsavedChange=='on'&&!isEqual(oldValue,newValue)){ MessageBox.confirm(i18n.t("tip.confirmCancel"), { confirmButtonText: i18n.t("tip.yes"), cancelButtonText: i18n.t("tip.no"), @@ -69,7 +71,6 @@ export const clickoutside = { }, }; function isEqual (o1, o2) { - console.log(o1,o2) var isEqualForInner = function (obj1, obj2) { var o1 = obj1 instanceof Object; var o2 = obj2 instanceof Object; @@ -99,10 +100,11 @@ function isEqual (o1, o2) { export const cancelWithChange={ bind:function(el,binding){ if(!binding.value||!binding.value.obj) return; + let unsavedChange = localStorage.getItem('nz-unnsaved-change'); let oldValue = JSON.parse(JSON.stringify(binding.value.obj)); function domClick(e){ let newValue = JSON.parse(JSON.stringify(binding.value.obj)); - if(!isEqual(oldValue,newValue)){ + if(unsavedChange=='on'&&!isEqual(oldValue,newValue)){ MessageBox.confirm(i18n.t("tip.confirmCancel"), { confirmButtonText: i18n.t("tip.yes"), cancelButtonText: i18n.t("tip.no"), diff --git a/nezha-fronted/src/components/common/language/cn.js b/nezha-fronted/src/components/common/language/cn.js index e95a9c99d..b3a6165ba 100644 --- a/nezha-fronted/src/components/common/language/cn.js +++ b/nezha-fronted/src/components/common/language/cn.js @@ -743,6 +743,7 @@ const cn = { second:'秒', day:'天', maxSeries:'Query max series', + unsaved:'未保存提示' }, email: { email: "邮件", diff --git a/nezha-fronted/src/components/common/language/en.js b/nezha-fronted/src/components/common/language/en.js index 2007c740a..f5ccb6a91 100644 --- a/nezha-fronted/src/components/common/language/en.js +++ b/nezha-fronted/src/components/common/language/en.js @@ -747,6 +747,7 @@ const en = { second:'second', day:'day', maxSeries:'Query max series', + unsaved:'Unsaved tip' }, email:{ email:'Email', diff --git a/nezha-fronted/src/components/page/config/system.vue b/nezha-fronted/src/components/page/config/system.vue index 2126c8166..ecc99fd93 100644 --- a/nezha-fronted/src/components/page/config/system.vue +++ b/nezha-fronted/src/components/page/config/system.vue @@ -38,6 +38,10 @@ + + + +