From 5cd245ac15bc561b3fe757d58932bbdc2356ef01 Mon Sep 17 00:00:00 2001
From: Pan <panfree23@gmail.com>
Date: Fri, 23 Jun 2017 17:56:45 +0800
Subject: [PATCH] split tabs-view to separate files

---
 src/views/layout/Levelbar.vue | 22 -----------------
 src/views/layout/Navbar.vue   |  5 +++-
 src/views/layout/TabsView.vue | 45 +++++++++++++++++++++++++++++++++++
 3 files changed, 49 insertions(+), 23 deletions(-)
 create mode 100644 src/views/layout/TabsView.vue

diff --git a/src/views/layout/Levelbar.vue b/src/views/layout/Levelbar.vue
index af850ff..cb40084 100644
--- a/src/views/layout/Levelbar.vue
+++ b/src/views/layout/Levelbar.vue
@@ -4,25 +4,14 @@
       <router-link v-if='item.redirect==="noredirect"||index==levelList.length-1' to="" class="no-redirect">{{item.name}}</router-link>
       <router-link v-else :to="item.path">{{item.name}}</router-link>
     </el-breadcrumb-item>
-    <router-link class="view-tabs" v-for="tag in Array.from(visitedViews)" :to="tag.path" :key="tag.path">
-      <el-tag :closable="true" @close='closeViewTabs(tag,$event)'>
-        {{tag.name}}
-      </el-tag>
-    </router-link>
   </el-breadcrumb>
 </template>
 
 <script>
-
     export default {
       created() {
         this.getBreadcrumb()
       },
-      computed: {
-        visitedViews() {
-          return this.$store.state.app.visitedViews.slice(-6)
-        }
-      },
       data() {
         return {
           levelList: null
@@ -36,18 +25,10 @@
             matched = [{ name: '首页', path: '/' }].concat(matched)
           }
           this.levelList = matched;
-        },
-        closeViewTabs(view, $event) {
-          this.$store.dispatch('delVisitedViews', view)
-          $event.preventDefault()
-        },
-        addViewTabs() {
-          this.$store.dispatch('addVisitedViews', this.$route.matched[this.$route.matched.length - 1])
         }
       },
       watch: {
         $route() {
-          this.addViewTabs();
           this.getBreadcrumb();
         }
       }
@@ -65,7 +46,4 @@
           cursor:text;
         }
     }
-    .view-tabs{
-      margin-left: 10px;
-    }
 </style>
diff --git a/src/views/layout/Navbar.vue b/src/views/layout/Navbar.vue
index 8871b59..025b1f7 100644
--- a/src/views/layout/Navbar.vue
+++ b/src/views/layout/Navbar.vue
@@ -2,12 +2,13 @@
     <el-menu class="navbar" mode="horizontal">
         <hamburger class="hamburger-container" :toggleClick="toggleSideBar" :isActive="sidebar.opened"></hamburger>
         <levelbar></levelbar>
+        <tabs-view></tabs-view>
         <error-log v-if="log.length>0" class="errLog-container" :logsList="log"></error-log>
         <screenfull class='screenfull'></screenfull>
         <el-dropdown class="avatar-container" trigger="click">
             <div class="avatar-wrapper">
                 <img class="user-avatar" :src="avatar+'?imageView2/1/w/80/h/80'">
-                <i class="el-icon-caret-bottom" />
+                <i class="el-icon-caret-bottom"></i>
             </div>
             <el-dropdown-menu class="user-dropdown" slot="dropdown">
                 <router-link class='inlineBlock' to="/">
@@ -29,6 +30,7 @@
 <script>
     import { mapGetters } from 'vuex';
     import Levelbar from './Levelbar';
+    import TabsView from './TabsView';
     import Hamburger from 'components/Hamburger';
     import Screenfull from 'components/Screenfull';
     import ErrorLog from 'components/ErrLog';
@@ -37,6 +39,7 @@
     export default {
       components: {
         Levelbar,
+        TabsView,
         Hamburger,
         ErrorLog,
         Screenfull
diff --git a/src/views/layout/TabsView.vue b/src/views/layout/TabsView.vue
new file mode 100644
index 0000000..5d3a2e1
--- /dev/null
+++ b/src/views/layout/TabsView.vue
@@ -0,0 +1,45 @@
+<template>
+  <div class='tabs-view-container'>
+    <router-link class="tabs-view" v-for="tag in Array.from(visitedViews)" :to="tag.path" :key="tag.path">
+      <el-tag :closable="true" @close='closeViewTabs(tag,$event)'>
+        {{tag.name}}
+      </el-tag>
+    </router-link>
+    </div>
+</template>
+
+<script>
+    export default {
+      computed: {
+        visitedViews() {
+          return this.$store.state.app.visitedViews.slice(-6)
+        }
+      },
+      methods: {
+        closeViewTabs(view, $event) {
+          this.$store.dispatch('delVisitedViews', view)
+          $event.preventDefault()
+        },
+        addViewTabs() {
+          this.$store.dispatch('addVisitedViews', this.$route.matched[this.$route.matched.length - 1])
+        }
+      },
+      watch: {
+        $route() {
+          this.addViewTabs()
+        }
+      }
+    }
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+  .tabs-view-container{
+    display: inline-block;
+    vertical-align: top;
+    margin-left: 10px;
+    .tabs-view{
+      margin-left: 10px;
+    }
+  }
+
+</style>
-- 
2.21.0