diff --git a/nezha-fronted/src/components/cli/webSSH.vue b/nezha-fronted/src/components/cli/webSSH.vue index e84f2d4d3..3c760bfa0 100644 --- a/nezha-fronted/src/components/cli/webSSH.vue +++ b/nezha-fronted/src/components/cli/webSSH.vue @@ -235,7 +235,7 @@ :rules="[ { required: customConnect.authType ===1, message:$t('validate.required'), trigger: 'change'}, ]"> - + - + { + if (!binding.expression) return + const unsavedChange = localStorage.getItem('nz-unsaved-change') + let oldValue + try { + oldValue = JSON.parse(JSON.stringify(binding.value.obj)) + el.__newValue__ = oldValue + } catch (e) { - } - function documentHandler (e) { - if (el.contains(e.target)) { - return false - } else { - let flag = true - const path = e.path || (e.composedPath && e.composedPath()) - // eslint-disable-next-line no-labels - top: for (let i = 0; i < path.length; i++) { - for (let j = 0; j < exceptClassName.length; j++) { - if (path[i].className && path[i].className.indexOf && path[i].className.indexOf(exceptClassName[j]) !== -1) { - flag = false - // eslint-disable-next-line no-labels - break top + } + function documentHandler (e) { + if (el.contains(e.target)) { + return false + } else { + let flag = true + const path = e.path || (e.composedPath && e.composedPath()) + // eslint-disable-next-line no-labels + top: for (let i = 0; i < path.length; i++) { + for (let j = 0; j < exceptClassName.length; j++) { + if (path[i].className && path[i].className.indexOf && path[i].className.indexOf(exceptClassName[j]) !== -1) { + flag = false + // eslint-disable-next-line no-labels + break top + } } } - } - if (!flag) { - return false - } - if (oldValue) { - // const newValue = JSON.parse(JSON.stringify(binding.value.obj)) - if (unsavedChange == 'on' && !isEqual(oldValue, el.__newValue__) && !el.isShow) { - el.isShow = true - MessageBox.confirm(i18n.t('tip.confirmCancel'), { - confirmButtonText: i18n.t('tip.yes'), - cancelButtonText: i18n.t('tip.no'), - type: 'warning' - }).then(() => { - el.isShow = false - if (binding.value.func) { - binding.value.func() - } - }).catch(err => { - el.isShow = false - console.log(err) - }) - } else if (!el.isShow) { - binding.value.func() + if (!flag) { + return false } - } else { - if (binding.arg) { - binding.value(e, binding.arg) + if (oldValue) { + console.log(oldValue, el.__newValue__) + // const newValue = JSON.parse(JSON.stringify(binding.value.obj)) + if (unsavedChange == 'on' && !isEqual(oldValue, el.__newValue__) && !el.isShow) { + el.isShow = true + MessageBox.confirm(i18n.t('tip.confirmCancel'), { + confirmButtonText: i18n.t('tip.yes'), + cancelButtonText: i18n.t('tip.no'), + type: 'warning' + }).then(() => { + el.isShow = false + if (binding.value.func) { + binding.value.func() + } + }).catch(err => { + el.isShow = false + }) + } else if (!el.isShow) { + binding.value.func() + } } else { - if (binding.value) { - binding.value(e) + if (binding.arg) { + binding.value(e, binding.arg) + } else { + if (binding.value) { + binding.value(e) + } } } } } - } - // 给当前元素绑定个私有变量,方便在unbind中可以解除事件监听 - el.__vueClickOutside__ = documentHandler - document.addEventListener('mousedown', documentHandler) + // 给当前元素绑定个私有变量,方便在unbind中可以解除事件监听 + el.__vueClickOutside__ = documentHandler + document.addEventListener('mousedown', documentHandler) + }, 100) }, update (el, binding, vnode) { el.__newValue__ = binding.value.obj @@ -208,27 +210,29 @@ function myLoadingFunctionUpdate (el, binding, vnode) { } export const cancelWithChange = { bind: function (el, binding) { - if (!binding.value || !binding.value.obj) return - const unsavedChange = localStorage.getItem('nz-unnsaved-change') - const oldValue = JSON.parse(JSON.stringify(binding.value.obj)) - el.__newValue__ = oldValue - function domClick (e) { - if (unsavedChange == 'on' && !isEqual(oldValue, el.__newValue__)) { - MessageBox.confirm(i18n.t('tip.confirmCancel'), { - confirmButtonText: i18n.t('tip.yes'), - cancelButtonText: i18n.t('tip.no'), - type: 'warning' - }).then(() => { - if (binding.value.func) { - binding.value.func() - } - }) - } else { - binding.value.func() + setTimeout(() => { + if (!binding.value || !binding.value.obj) return + const unsavedChange = localStorage.getItem('nz-unsaved-change') + const oldValue = JSON.parse(JSON.stringify(binding.value.obj)) + el.__newValue__ = oldValue + function domClick (e) { + if (unsavedChange == 'on' && !isEqual(oldValue, el.__newValue__)) { + MessageBox.confirm(i18n.t('tip.confirmCancel'), { + confirmButtonText: i18n.t('tip.yes'), + cancelButtonText: i18n.t('tip.no'), + type: 'warning' + }).then(() => { + if (binding.value.func) { + binding.value.func() + } + }) + } else { + binding.value.func() + } } - } - el.__vueDomClick__ = domClick - el.addEventListener('click', domClick) + el.__vueDomClick__ = domClick + el.addEventListener('click', domClick) + }, 100) }, update (el, binding, vnode) { el.__newValue__ = binding.value.obj diff --git a/nezha-fronted/src/components/common/login.vue b/nezha-fronted/src/components/common/login.vue index 87a529339..16e7464aa 100644 --- a/nezha-fronted/src/components/common/login.vue +++ b/nezha-fronted/src/components/common/login.vue @@ -38,7 +38,7 @@ @@ -101,7 +101,7 @@ - + diff --git a/nezha-fronted/src/components/page/config/profileChangePin.vue b/nezha-fronted/src/components/page/config/profileChangePin.vue index 2167af9cd..76d6369a5 100644 --- a/nezha-fronted/src/components/page/config/profileChangePin.vue +++ b/nezha-fronted/src/components/page/config/profileChangePin.vue @@ -4,13 +4,13 @@
- + - + - +
diff --git a/nezha-fronted/src/components/page/config/setup.vue b/nezha-fronted/src/components/page/config/setup.vue index 20a52b28f..421a9263e 100644 --- a/nezha-fronted/src/components/page/config/setup.vue +++ b/nezha-fronted/src/components/page/config/setup.vue @@ -102,7 +102,7 @@ - +
@@ -125,7 +125,7 @@ - +
@@ -145,7 +145,7 @@ - + diff --git a/nezha-fronted/src/components/page/config/system.vue b/nezha-fronted/src/components/page/config/system.vue index a2a34e49f..56b4f77f6 100644 --- a/nezha-fronted/src/components/page/config/system.vue +++ b/nezha-fronted/src/components/page/config/system.vue @@ -253,7 +253,7 @@ autocomplete="off" - +
{{$t("config.system.email.pinTip")}}
@@ -319,7 +319,7 @@ - + @@ -368,7 +368,7 @@ - + {{$t('overall.reset')}} diff --git a/nezha-fronted/src/components/page/config/terminal.vue b/nezha-fronted/src/components/page/config/terminal.vue index 7d12161da..65ed17a4a 100644 --- a/nezha-fronted/src/components/page/config/terminal.vue +++ b/nezha-fronted/src/components/page/config/terminal.vue @@ -40,7 +40,7 @@ - +
diff --git a/nezha-fronted/src/store/user.js b/nezha-fronted/src/store/user.js index c0a5424f9..1e963bffc 100644 --- a/nezha-fronted/src/store/user.js +++ b/nezha-fronted/src/store/user.js @@ -98,7 +98,7 @@ const user = { localStorage.setItem('nz-sys-default-cabinet-usize', res.data.defaultCabinetUsize) localStorage.setItem('nz-sys-max-terminal-num', res.data.maxTerminalNum) localStorage.setItem('nz-sys-asset-ping-switch', res.data.assetPingSwitch) - localStorage.setItem('nz-unnsaved-change', res.data.unsavedChange) + localStorage.setItem('nz-unsaved-change', res.data.unsavedChange) localStorage.setItem('nz-mfa-enable', Number(res.data.mfaAuthEnable) ? 1 : 0) store.commit('setLanguage', res.data.user.lang || defaultAppearance.language) store.commit('setTimeFormatMain', localStorage.getItem('nz-default-dateFormat') || 'YYYY-MM-DD HH:mm:ss')