import Vue from 'vue' import store from './store'; Vue.mixin({ beforeRouteEnter: function (to, from, next) { next(() => { let avueView = document.getElementById('avue-view'); if (avueView && to.meta.savedPosition) { avueView.scrollTop = to.meta.savedPosition } }) }, beforeRouteLeave: function (to, from, next) { let avueView = document.getElementById('avue-view'); if (from && from.meta.keepAlive) { if (avueView) { from.meta.savedPosition = avueView.scrollTop } const result = this.$route.meta.keepAlive === true && store.state.tags.tagList.some(ele => { return ele.value === this.$route.fullPath; }) if (this.$vnode && !result) { from.meta.savedPosition = 0 if (this.$vnode.parent && this.$vnode.parent.componentInstance && this.$vnode.parent.componentInstance.cache) { if (this.$vnode.componentOptions) { var key = this.$vnode.key == null ? this.$vnode.componentOptions.Ctor.cid + (this.$vnode.componentOptions.tag ? `::${this.$vnode.componentOptions.tag}` : '') : this.$vnode.key; var cache = this.$vnode.parent.componentInstance.cache; var keys = this.$vnode.parent.componentInstance.keys; if (cache[key]) { if (keys.length) { var index = keys.indexOf(key); if (index > -1) { keys.splice(index, 1); } } delete cache[key]; } } } } } next(); }, });