loulijun2021
2023-02-09 b31d0bdae5ab5e7c24eadf08fea270c6bb9f3c7a
src/layout/components/TagsView/index.vue
@@ -1,20 +1,23 @@
<template>
  <div id="tags-view-container" class="tags-view-container">
    <scroll-pane ref="scrollPane" class="tags-view-wrapper" @scroll="handleScroll">
      <router-link
        v-for="tag 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)"
      >
        {{ tag.title }}
        <span v-if="!isAffix(tag)" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)" />
      </router-link>
      <draggable :list="visitedViews" animation="300">
        <router-link
          v-for="tag 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"
          :style="{background:isActive(tag)?$store.state.settings.theme:'',border:isActive(tag)?'1px solid'+$store.state.settings.theme:''}"
          @click.middle.native="!isAffix(tag)?closeSelectedTag(tag):''"
          @contextmenu.prevent.native="openMenu(tag,$event)"
        >
          {{ tag.title }}
          <span v-if="!isAffix(tag)" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)" />
        </router-link>
      </draggable>
    </scroll-pane>
    <ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
      <li @click="refreshSelectedTag(selectedTag)">刷新</li>
@@ -47,9 +50,9 @@
import path from 'path'
import { getCookie } from '@/utils/auth'
import $ from 'jquery'
import draggable from 'vuedraggable'
export default {
  components: { ScrollPane },
  components: { ScrollPane, draggable },
  data() {
    return {
      visible: false,
@@ -62,10 +65,11 @@
  },
  computed: {
    visitedViews() {
      if (this.$store.state.tagsView.visitedViews.length > 10) {
        // eslint-disable-next-line vue/no-side-effects-in-computed-properties
        this.dialogVisible = true
      }
      // 暂时取消十个标签页限制提示
      // if (this.$store.state.tagsView.visitedViews.length > 10) {
      //   // eslint-disable-next-line vue/no-side-effects-in-computed-properties
      //   this.dialogVisible = true
      // }
      return this.$store.state.tagsView.visitedViews
    },
    routes() {
@@ -263,7 +267,7 @@
}
</script>
<style lang="scss" scoped>
<style lang="scss">
$main_color: #42b983;
.tags-view-container {
  height: 34px;