Commit ad03228a authored by huangjie's avatar huangjie

F5刷新不关闭页面

parent a4b6e2e6
<template> <template>
<div id="tags-view-container" class="tags-view-container"> <div id="tags-view-container" class="tags-view-container">
<div class="alltags" v-if="visitedViews.length > 0"> <div id="getviews">
<div class="imgs" @click="closeall"> <div class="alltags" v-if="visitedViews.length > 0">
<img src="@/assets/images/all.png" v-if="!showall"/> <div class="imgs" @click="closeall">
<img src="@/assets/images/all_on.png" v-if="showall"/> <img src="@/assets/images/all.png" v-if="!showall"/>
<!--<i class="el-icon-arrow-down" v-if="!showall"></i> <i class="el-icon-arrow-up" v-if="showall"></i>--> <img src="@/assets/images/all_on.png" v-if="showall"/>
<!--<i class="el-icon-arrow-down" v-if="!showall"></i> <i class="el-icon-arrow-up" v-if="showall"></i>-->
</div>
<div class="tagslist" v-if="showall">
<draggable v-model="visitedViews" :options="dragOptions" @end="end">
<router-link
v-for="(tag, index) in visitedViews"
ref="tag"
:key="tag.path"
:class="isActive(tag)?'active':''"
:to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }"
tag="span"
class="tags-view-item"
@contextmenu.prevent.native="openMenu(tag,$event)"
>
<div @click="changetags">
<i class="el-icon-check"></i>
<span :id="isActive(tag)?'tagTitle':''">{{ tag.title }}</span>
</div>
</router-link>
<div class="clasall" @click="closeAllTag(selectedTag)">关闭全部标签</div>
</draggable>
</div> </div>
<div class="tagslist" v-if="showall"> </div>
<scroll-pane ref="scrollPane" class="tags-view-wrapper" @scroll="handleScroll">
<draggable v-model="visitedViews" :options="dragOptions" @end="end"> <draggable v-model="visitedViews" :options="dragOptions" @end="end">
<router-link <router-link
v-for="(tag, index) in visitedViews" v-for="(tag, index) in visitedViews"
...@@ -16,41 +39,19 @@ ...@@ -16,41 +39,19 @@
:to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }" :to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }"
tag="span" tag="span"
class="tags-view-item" class="tags-view-item"
@click.middle.native="!isAffix(tag)?closeSelectedTag(tag):''"
@contextmenu.prevent.native="openMenu(tag,$event)" @contextmenu.prevent.native="openMenu(tag,$event)"
> >
<div @click="changetags"> <svg :class="isActive(tag)?'tags-icon tags-icon-active':'tags-icon'" aria-hidden="true">
<i class="el-icon-check"></i> <use :xlink:href="iconName(tag)" />
<span :id="isActive(tag)?'tagTitle':''">{{ tag.title }}</span> </svg>
</div> <span :id="isActive(tag)?'tagTitle':''">{{ tag.title }}</span>
<span v-if="!isAffix(tag)" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)" />
<i :class="index!=visitedViews.length-1 && index != isActiveIndex() && index != isActiveIndex()-1?'tags-item-line':'tags-item-line item-color'" />
</router-link> </router-link>
<div class="clasall" @click="closeAllTag(selectedTag)">关闭全部标签</div>
</draggable> </draggable>
</div> </scroll-pane>
</div> <ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
<scroll-pane ref="scrollPane" class="tags-view-wrapper" @scroll="handleScroll">
<draggable v-model="visitedViews" :options="dragOptions" @end="end">
<router-link
v-for="(tag, index) in visitedViews"
ref="tag"
:key="tag.path"
:class="isActive(tag)?'active':''"
:to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }"
tag="span"
class="tags-view-item"
@click.middle.native="!isAffix(tag)?closeSelectedTag(tag):''"
@contextmenu.prevent.native="openMenu(tag,$event)"
>
<svg :class="isActive(tag)?'tags-icon tags-icon-active':'tags-icon'" aria-hidden="true">
<use :xlink:href="iconName(tag)" />
</svg>
<span :id="isActive(tag)?'tagTitle':''">{{ tag.title }}</span>
<span v-if="!isAffix(tag)" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)" />
<i :class="index!=visitedViews.length-1 && index != isActiveIndex() && index != isActiveIndex()-1?'tags-item-line':'tags-item-line item-color'" />
</router-link>
</draggable>
</scroll-pane>
<ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
<li @click="refreshSelectedTag(selectedTag)"><i class="el-icon-refresh-right"></i> 刷新页面</li> <li @click="refreshSelectedTag(selectedTag)"><i class="el-icon-refresh-right"></i> 刷新页面</li>
<li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)"><i class="el-icon-close"></i> 关闭当前</li> <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)"><i class="el-icon-close"></i> 关闭当前</li>
<li @click="closeOthersTags"><i class="el-icon-circle-close"></i> 关闭其他</li> <li @click="closeOthersTags"><i class="el-icon-circle-close"></i> 关闭其他</li>
...@@ -58,6 +59,7 @@ ...@@ -58,6 +59,7 @@
<li v-if="!isLastView()" @click="closeRightTags"><i class="el-icon-right"></i> 关闭右侧</li> <li v-if="!isLastView()" @click="closeRightTags"><i class="el-icon-right"></i> 关闭右侧</li>
<li @click="closeAllTags(selectedTag)"><i class="el-icon-circle-close"></i> 全部关闭</li> <li @click="closeAllTags(selectedTag)"><i class="el-icon-circle-close"></i> 全部关闭</li>
</ul> </ul>
</div>
</div> </div>
</template> </template>
...@@ -118,6 +120,7 @@ export default { ...@@ -118,6 +120,7 @@ export default {
$route() { $route() {
this.addTags() this.addTags()
this.moveToCurrentTag() this.moveToCurrentTag()
this.getviews()
}, },
visible(value) { visible(value) {
if (value) { if (value) {
...@@ -130,8 +133,27 @@ export default { ...@@ -130,8 +133,27 @@ export default {
mounted() { mounted() {
this.initTags() this.initTags()
this.addTags() this.addTags()
// this.getviews()
}, },
methods: { methods: {
getviews(){
let viewlist = []
let views = this.$store.state.tagsView.visitedViews
views.forEach(view =>{
let li = {}
li.fullPath = view.fullPath
li.hash = view.hash
li.meta = view.meta
li.name = view.name
li.params = view.params
li.path = view.path
li.query = view.query
li.title = view.title
// li.matched = view.matched //此条数据放出会报错
viewlist.push(li)
})
localStorage.setItem("views",JSON.stringify(viewlist))
},
changetags(){ changetags(){
this.showall = false this.showall = false
}, },
......
...@@ -21,6 +21,7 @@ import ResizeMixin from './mixin/ResizeHandler' ...@@ -21,6 +21,7 @@ import ResizeMixin from './mixin/ResizeHandler'
import { mapState } from 'vuex' import { mapState } from 'vuex'
import variables from '@/assets/styles/variables.scss' import variables from '@/assets/styles/variables.scss'
import elementResizeDetectorMaker from "element-resize-detector" import elementResizeDetectorMaker from "element-resize-detector"
import { parse,stringify } from 'flatted';
export default { export default {
name: 'Layout', name: 'Layout',
components: { components: {
...@@ -64,10 +65,11 @@ export default { ...@@ -64,10 +65,11 @@ export default {
this.listenSider() this.listenSider()
}) })
// console.log(9999) // console.log(9999)
// let views = localStorage.getItem('views') let views = localStorage.getItem('views')
// console.log(views) if(views!=null){
// this.$store.state.tagsView.visitedViews = JSON.parse(views) this.$store.state.tagsView.visitedViews = JSON.parse(views)
// localStorage.removeItem('views') localStorage.removeItem('views')
}
}, },
methods: { methods: {
handleClickOutside() { handleClickOutside() {
......
import {parse, stringify} from 'flatted';
import { parse,stringify } from 'flatted';
const state = { const state = {
visitedViews: [], visitedViews: [],
cachedViews: [], cachedViews: [],
...@@ -22,8 +23,27 @@ const mutations = { ...@@ -22,8 +23,27 @@ const mutations = {
}) })
) )
// console.log(state.visitedViews) // console.log(state.visitedViews)
// let visitedViews = stringify(state.visitedViews) // try {
// localStorage.setItem("views",visitedViews) // stringify(view)
// }catch(e)
// {
//
// }
// console.log(
// localStorage.removeItem('views')
// let views =view
// let viewlist = localStorage.getItem("views")==null?[]:JSON.parse(localStorage.getItem("views"))
// let li = {}
// li.fullPath = view.fullPath
// li.hash = view.hash
// li.meta = view.meta
// li.name = view.name
// li.params = view.params
// li.path = view.path
// li.query = view.query
// viewlist.push(li)
// viewlist.push(parse(stringify(view)))
// localStorage.setItem("views",stringify(viewlist))
}, },
ADD_CACHED_VIEW: (state, view) => { ADD_CACHED_VIEW: (state, view) => {
if (state.cachedViews.includes(view.name)) return if (state.cachedViews.includes(view.name)) return
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment