| | |
| | | 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(
|
| | |
| | | state.cachedViews.push(view.name)
|
| | | }
|
| | | },
|
| | |
|
| | | DEL_VISITED_VIEW: (state, view) => {
|
| | | for (const [i, v] of state.visitedViews.entries()) {
|
| | | if (v.path === view.path) {
|
| | |
| | | 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)
|
| | |
| | | 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)
|
| | |
| | | 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) {
|
| | |
| | | }
|
| | | }
|
| | | },
|
| | | |
| | | DEL_RIGHT_VIEWS: (state, view) => {
|
| | | const index = state.visitedViews.findIndex(v => v.path === view.path)
|
| | | if (index === -1) {
|
| | |
| | | }
|
| | | 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) {
|
| | |
| | | }
|
| | | return false
|
| | | })
|
| | | const iframeIndex = state.iframeViews.findIndex(v => v.path === view.path)
|
| | | state.iframeViews = state.iframeViews.filter((item, idx) => idx >= iframeIndex)
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | 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)
|
| | |
| | | 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)
|
| | |
| | | resolve([...state.cachedViews])
|
| | | })
|
| | | },
|
| | |
|
| | | delAllViews({ dispatch, state }, view) {
|
| | | return new Promise(resolve => {
|
| | | dispatch('delAllVisitedViews', view)
|
| | |
| | | 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)
|