|  | @@ -1,9 +1,17 @@
 | 
	
		
			
				|  |  |  const state = {
 | 
	
		
			
				|  |  |    visitedViews: [],
 | 
	
		
			
				|  |  | -  cachedViews: []
 | 
	
		
			
				|  |  | +  cachedViews: [],
 | 
	
		
			
				|  |  | +  iframeViews: []
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const mutations = {
 | 
	
		
			
				|  |  | +  ADD_IFRAME_VIEW: (state, view) => {
 | 
	
		
			
				|  |  | +    if (state.iframeViews.some(v => v.path === view.path)) {
 | 
	
		
			
				|  |  | +      return
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +      state.iframeViews.push(view)
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  |    ADD_VISITED_VIEW: (state, view) => {
 | 
	
		
			
				|  |  |      if (state.visitedViews.some(v => v.path === view.path)) return
 | 
	
		
			
				|  |  |      state.visitedViews.push(
 | 
	
	
		
			
				|  | @@ -18,7 +26,6 @@ const mutations = {
 | 
	
		
			
				|  |  |        state.cachedViews.push(view.name)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    DEL_VISITED_VIEW: (state, view) => {
 | 
	
		
			
				|  |  |      for (const [i, v] of state.visitedViews.entries()) {
 | 
	
		
			
				|  |  |        if (v.path === view.path) {
 | 
	
	
		
			
				|  | @@ -26,6 +33,10 @@ const mutations = {
 | 
	
		
			
				|  |  |          break
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    state.iframeViews = state.iframeViews.filter(item => item.path !== view.path)
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  DEL_IFRAME_VIEW: (state, view) => {
 | 
	
		
			
				|  |  | +    state.iframeViews = state.iframeViews.filter(item => item.path !== view.path)
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    DEL_CACHED_VIEW: (state, view) => {
 | 
	
		
			
				|  |  |      const index = state.cachedViews.indexOf(view.name)
 | 
	
	
		
			
				|  | @@ -36,6 +47,7 @@ const mutations = {
 | 
	
		
			
				|  |  |      state.visitedViews = state.visitedViews.filter(v => {
 | 
	
		
			
				|  |  |        return v.meta.affix || v.path === view.path
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  | +    state.iframeViews = state.iframeViews.filter(item => item.path === view.path)
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    DEL_OTHERS_CACHED_VIEWS: (state, view) => {
 | 
	
		
			
				|  |  |      const index = state.cachedViews.indexOf(view.name)
 | 
	
	
		
			
				|  | @@ -45,16 +57,15 @@ const mutations = {
 | 
	
		
			
				|  |  |        state.cachedViews = []
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    DEL_ALL_VISITED_VIEWS: state => {
 | 
	
		
			
				|  |  |      // keep affix tags
 | 
	
		
			
				|  |  |      const affixTags = state.visitedViews.filter(tag => tag.meta.affix)
 | 
	
		
			
				|  |  |      state.visitedViews = affixTags
 | 
	
		
			
				|  |  | +    state.iframeViews = []
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    DEL_ALL_CACHED_VIEWS: state => {
 | 
	
		
			
				|  |  |      state.cachedViews = []
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    UPDATE_VISITED_VIEW: (state, view) => {
 | 
	
		
			
				|  |  |      for (let v of state.visitedViews) {
 | 
	
		
			
				|  |  |        if (v.path === view.path) {
 | 
	
	
		
			
				|  | @@ -63,7 +74,6 @@ const mutations = {
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  |    DEL_RIGHT_VIEWS: (state, view) => {
 | 
	
		
			
				|  |  |      const index = state.visitedViews.findIndex(v => v.path === view.path)
 | 
	
		
			
				|  |  |      if (index === -1) {
 | 
	
	
		
			
				|  | @@ -79,8 +89,9 @@ const mutations = {
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        return false
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  | +    const iframeIndex = state.iframeViews.findIndex(v => v.path === view.path)
 | 
	
		
			
				|  |  | +    state.iframeViews = state.iframeViews.filter((item, idx) => idx <= iframeIndex)
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    DEL_LEFT_VIEWS: (state, view) => {
 | 
	
		
			
				|  |  |      const index = state.visitedViews.findIndex(v => v.path === view.path)
 | 
	
		
			
				|  |  |      if (index === -1) {
 | 
	
	
		
			
				|  | @@ -96,6 +107,8 @@ const mutations = {
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        return false
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  | +    const iframeIndex = state.iframeViews.findIndex(v => v.path === view.path)
 | 
	
		
			
				|  |  | +    state.iframeViews = state.iframeViews.filter((item, idx) => idx >= iframeIndex)
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -104,13 +117,15 @@ const actions = {
 | 
	
		
			
				|  |  |      dispatch('addVisitedView', view)
 | 
	
		
			
				|  |  |      dispatch('addCachedView', view)
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | +  addIframeView({ commit }, view) {
 | 
	
		
			
				|  |  | +    commit('ADD_IFRAME_VIEW', view)
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  |    addVisitedView({ commit }, view) {
 | 
	
		
			
				|  |  |      commit('ADD_VISITED_VIEW', view)
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    addCachedView({ commit }, view) {
 | 
	
		
			
				|  |  |      commit('ADD_CACHED_VIEW', view)
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    delView({ dispatch, state }, view) {
 | 
	
		
			
				|  |  |      return new Promise(resolve => {
 | 
	
		
			
				|  |  |        dispatch('delVisitedView', view)
 | 
	
	
		
			
				|  | @@ -127,13 +142,18 @@ const actions = {
 | 
	
		
			
				|  |  |        resolve([...state.visitedViews])
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | +  delIframeView({ commit, state }, view) {
 | 
	
		
			
				|  |  | +    return new Promise(resolve => {
 | 
	
		
			
				|  |  | +      commit('DEL_IFRAME_VIEW', view)
 | 
	
		
			
				|  |  | +      resolve([...state.iframeViews])
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  |    delCachedView({ commit, state }, view) {
 | 
	
		
			
				|  |  |      return new Promise(resolve => {
 | 
	
		
			
				|  |  |        commit('DEL_CACHED_VIEW', view)
 | 
	
		
			
				|  |  |        resolve([...state.cachedViews])
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    delOthersViews({ dispatch, state }, view) {
 | 
	
		
			
				|  |  |      return new Promise(resolve => {
 | 
	
		
			
				|  |  |        dispatch('delOthersVisitedViews', view)
 | 
	
	
		
			
				|  | @@ -156,7 +176,6 @@ const actions = {
 | 
	
		
			
				|  |  |        resolve([...state.cachedViews])
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    delAllViews({ dispatch, state }, view) {
 | 
	
		
			
				|  |  |      return new Promise(resolve => {
 | 
	
		
			
				|  |  |        dispatch('delAllVisitedViews', view)
 | 
	
	
		
			
				|  | @@ -179,18 +198,15 @@ const actions = {
 | 
	
		
			
				|  |  |        resolve([...state.cachedViews])
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    updateVisitedView({ commit }, view) {
 | 
	
		
			
				|  |  |      commit('UPDATE_VISITED_VIEW', view)
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    delRightTags({ commit }, view) {
 | 
	
		
			
				|  |  |      return new Promise(resolve => {
 | 
	
		
			
				|  |  |        commit('DEL_RIGHT_VIEWS', view)
 | 
	
		
			
				|  |  |        resolve([...state.visitedViews])
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    delLeftTags({ commit }, view) {
 | 
	
		
			
				|  |  |      return new Promise(resolve => {
 | 
	
		
			
				|  |  |        commit('DEL_LEFT_VIEWS', view)
 |