bill 8 months ago
parent
commit
f0884e3a19
1 changed files with 8 additions and 5 deletions
  1. 8 5
      src/store/sys.ts

+ 8 - 5
src/store/sys.ts

@@ -100,12 +100,15 @@ export const unSetModelUpdate = (run: () => void) => {
   nextTick(() => isUnset = false)
 }
 export const autoSetModeCallback = <T extends object>(current: T, setting: AutoSetModeSetting<T>, last = true) => {
+  let isLeaveIng = false
   let isSave = false
   const leaveCallback = (setting.recovery || setting.backup)
-    && (() => {
-      setting.recovery && setting.recovery()
-      setting.backup && setting.backup()
-      setting.leave && setting.leave()
+    && (async () => {
+      isLeaveIng = true
+      setting.recovery && await setting.recovery()
+      setting.backup && await setting.backup()
+      setting.leave && await setting.leave()
+      isLeaveIng = false
     })
   
   const saveCallback = async () => {
@@ -117,7 +120,7 @@ export const autoSetModeCallback = <T extends object>(current: T, setting: AutoS
   }
 
   const handler = (newv: UnwrapRef<T>, oldv?: UnwrapRef<T>) => {
-    if (isSave || isUnset) return
+    if (isSave || isUnset || isLeaveIng) return
     if (!setting.isUpdate || setting.isUpdate(newv, oldv)) {
       isEdit.value || enterEdit()
       isOld.value ||  enterOld()