Forráskód Böngészése

回滚到 commit id 7413234b, 相当于今天的改动全部作废

reghao 2 éve
szülő
commit
05ab6fbbeb

+ 8 - 8
src/App.vue

@@ -1,28 +1,28 @@
 <template>
   <div id="app">
     <!--导航栏-->
-    <!--    <nav-bar v-if="type===1" />-->
+    <nav-bar />
     <!--下面的部分通过路由动态决定渲染与否-->
     <!--exclude,其值为正则,匹配到的组件的名称会被排除在keep-alive之外-->
     <keep-alive exclude="Collection,History">
       <router-view />
     </keep-alive>
     <!--页脚-->
-<!--    <footer-bar />-->
+    <footer-bar />
     <!--回到顶部按钮-->
-<!--    <el-backtop :visibility-height="100" :bottom="60" />-->
+    <el-backtop :visibility-height="100" :bottom="60" />
   </div>
 </template>
 
 <script>
+import NavBar from 'components/layout/NavBar'
+import FooterBar from 'components/layout/FooterBar'
+
 export default {
   name: 'App',
   components: {
-  },
-  data() {
-    return {
-      type: 2
-    }
+    FooterBar,
+    NavBar
   },
   created() {
     /**

+ 0 - 81
src/components/layout/LoginBar.vue

@@ -1,81 +0,0 @@
-<template>
-  <el-row class="el-menu-demo">
-    <el-col :md="2">
-      <ul role="menubar" class="el-menu--horizontal el-menu">
-        <li role="menuitem" class="el-menu-item">
-          <a href="/" style="color: #007bff;text-decoration-line: none">
-            <img src="@/assets/img/icon/logo.png" class="logo" alt="img">
-            tnb
-          </a>
-        </li>
-      </ul>
-    </el-col>
-    <el-col :md="8">
-      <el-menu
-        mode="horizontal"
-      >
-        <el-menu-item index="1">
-          <a href="/video" style="text-decoration-line: none">
-            <span style="color: #007bff">视频</span>
-          </a>
-        </el-menu-item>
-        <el-menu-item index="2">
-          <a href="/shortvideo" style="text-decoration-line: none">
-            <span style="color: #007bff">短视频</span>
-          </a>
-        </el-menu-item>
-        <el-menu-item index="3">
-          <a href="/image" style="text-decoration-line: none">
-            <span style="color: #007bff">相册</span>
-          </a>
-        </el-menu-item>
-        <el-menu-item index="4">
-          <a href="/article" style="text-decoration-line: none">
-            <span style="color: #007bff">文章</span>
-          </a>
-        </el-menu-item>
-        <el-menu-item index="5">
-          <a href="/discover" style="text-decoration-line: none">
-            <span style="color: #007bff">发现</span>
-          </a>
-        </el-menu-item>
-      </el-menu>
-    </el-col>
-    <el-col :md="8">
-      <ul class="el-menu--horizontal el-menu">
-        <li class="el-menu-item">
-        </li>
-      </ul>
-    </el-col>
-    <el-col :md="6">
-      <ul class="el-menu--horizontal el-menu">
-        <li class="el-menu-item">
-        </li>
-      </ul>
-    </el-col>
-  </el-row>
-</template>
-
-<script>
-export default {
-  name: 'LoginBar',
-  data() {
-    return {
-    }
-  },
-  created() {
-  },
-  methods: {
-  }
-}
-</script>
-
-<style scoped>
-@media screen and (max-width: 768px) {
-}
-
-.logo {
-  width: 30px;
-  position: relative;
-}
-</style>

+ 0 - 283
src/components/layout/MyBar.vue

@@ -1,283 +0,0 @@
-<template>
-  <el-row class="el-menu-demo">
-    <el-col :md="2">
-      <ul role="menubar" class="el-menu--horizontal el-menu">
-        <li role="menuitem" class="el-menu-item">
-          <a href="/my" style="color: #007bff;text-decoration-line: none">
-            <img src="@/assets/img/icon/logo.png" class="logo" alt="img">
-            my
-          </a>
-        </li>
-      </ul>
-    </el-col>
-    <el-col :md="8">
-      <el-menu
-        mode="horizontal"
-      >
-        <el-submenu index="1">
-          <template slot="title">稿件发布</template>
-          <el-menu-item index="1-1">
-            <a href="/my/post/publish/video" style="text-decoration-line: none">
-              <span style="color: #007bff">视频</span>
-            </a>
-          </el-menu-item>
-        </el-submenu>
-        <el-submenu index="2">
-          <template slot="title">稿件列表</template>
-          <el-menu-item index="2-1">
-            <a href="/my/post/list/video" style="text-decoration-line: none">
-              <span style="color: #007bff">视频</span>
-            </a>
-          </el-menu-item>
-        </el-submenu>
-        <el-submenu index="3">
-          <template slot="title">收藏夹</template>
-          <el-menu-item index="3-1">
-            <a href="/my/post/list/video" style="text-decoration-line: none">
-              <span style="color: #007bff">视频</span>
-            </a>
-          </el-menu-item>
-        </el-submenu>
-        <el-menu-item index="4">
-          <a href="//my/visit" style="text-decoration-line: none">
-            <span style="color: #007bff">历史记录</span>
-          </a>
-        </el-menu-item>
-      </el-menu>
-    </el-col>
-    <el-col :md="8">
-      <ul class="el-menu--horizontal el-menu">
-        <li class="el-menu-item">
-        </li>
-      </ul>
-    </el-col>
-    <el-col :md="6">
-      <ul class="el-menu--horizontal el-menu">
-        <li class="el-menu-item">
-          <el-dropdown v-if="user">
-            <img
-              :src="user.avatarUrl"
-              class="el-avatar--circle el-avatar--medium"
-              alt=""
-            >
-            <el-dropdown-menu v-if="user" slot="dropdown" class="iconsize">
-              <el-dropdown-item
-                icon="el-icon-error"
-                class="size"
-                @click.native="goToLogout"
-              >退出</el-dropdown-item>
-            </el-dropdown-menu>
-          </el-dropdown>
-        </li>
-        <li class="el-menu-item" @click="goToTimeline">
-          <el-badge v-if="statusCount > 0" class="item" :value="statusCount" :max="99">
-            <span class="el-icon-view" style="color: #007bff">状态</span>
-          </el-badge>
-          <span v-else class="el-icon-view" style="color: #007bff">状态</span>
-        </li>
-      </ul>
-    </el-col>
-  </el-row>
-</template>
-
-<script>
-import { userMixin } from 'assets/js/mixin'
-import { keywordSuggest } from '@/api/search'
-import { getAuthedUser } from '@/utils/auth'
-
-export default {
-  name: 'MyBar',
-  mixins: [userMixin],
-  data() {
-    return {
-      user: null,
-      activeIndex: '1',
-      restaurants: [],
-      placeholder: '想要搜点神马呢',
-      keyword: '',
-      statusCount: 0,
-      msgCount: 0
-    }
-  },
-  created() {
-    /* const userdata = Vue.$cookies.get('USERDATA')
-    const userId = userdata.split(':')[0]*/
-    const userInfo = getAuthedUser()
-    if (userInfo !== null) {
-      this.user = userInfo
-    }
-  },
-  methods: {
-    handleSelect(key, keyPath) {
-      console.log(key, keyPath)
-    },
-    // ****************************************************************************************************************
-    // 重点:当框中的改变时触发该方法,elementui自动设置了防抖,参见debounce属性
-    // queryString 为输入框中的值。cb为返回显示列表的回调函数
-    querySearchAsync(queryString, cb) {
-      if (queryString === '') {
-        return
-      }
-
-      setTimeout(() => {
-        keywordSuggest(queryString).then(res => {
-          if (res.code === 0) {
-            this.restaurants = res.data.map((item) => {
-              return {
-                value: item.keyword,
-                rank: 1
-              }
-            })
-
-            // 如果 cb 返回一个空数组, 那么模糊搜索输入建议的下拉选项会因为 length 为 0 而消失
-            // cb([])
-            cb(this.restaurants)
-            // eslint-disable-next-line no-empty
-          } else {
-          }
-        })
-      }, 500)
-    },
-    // select 事件或 enter 键事件
-    onSearch() {
-      console.log('回车事件')
-      // 正则去空格
-      if (this.keyword.replace(/\s*/g, '')) {
-        this.toSearchPage()
-      } else {
-        this.$message({
-          showClose: true,
-          message: '不能为空!',
-          type: 'warning'
-        })
-      }
-    },
-    // 跳转搜索页面,传递搜索框的参数
-    toSearchPage() {
-      const currentPath = this.$route.path
-      if (currentPath === '/search') {
-        this.$router.push({
-          path: '/search',
-          query: {
-            keyword: this.keyword,
-            pageNumber: 1
-          }
-        })
-        this.$router.go(0)
-      } else {
-        const routeUrl = this.$router.resolve({
-          path: '/search',
-          query: {
-            keyword: this.keyword,
-            pageNumber: 1
-          }
-        })
-        window.open(routeUrl.href, '_blank')
-      }
-    },
-    // ****************************************************************************************************************
-    login1() {
-      this.fetchPubkey()
-      this.dialogVisible = true
-    },
-    login() {
-      const path = '/login'
-      if (this.$route.path === path) {
-        this.$router.go(0)
-        return
-      }
-      this.$router.push(path)
-    },
-    register() {
-      window.open('//account.reghao.cn/login', '_blank')
-    },
-    // ****************************************************************************************************************
-    goToDisk() {
-      const path = '/disk'
-      if (this.$route.path === path) {
-        this.$router.go(0)
-        return
-      }
-      this.$router.push(path)
-    },
-    goToProfile() {
-      const path = '/my'
-      if (this.$route.path === path) {
-        this.$router.go(0)
-        return
-      }
-      this.$router.push(path)
-    },
-    goToTimeline() {
-      const path = '/timeline'
-      if (this.$route.path === path) {
-        this.$router.go(0)
-        return
-      }
-      this.$router.push(path)
-    },
-    goToHome() {
-      const path = '/user/' + this.user.userId
-      if (this.$route.path === path) {
-        this.$router.go(0)
-        return
-      }
-      this.$router.push(path)
-    },
-    goToPost() {
-      if (this.$route.path === '/my/post/list/video') {
-        this.$router.go(0)
-        return
-      }
-      this.$router.push('/my/post/list/video')
-    },
-    goToFavlist() {
-      if (this.$route.path === '/my/favlist/video') {
-        this.$router.go(0)
-        return
-      }
-      this.$router.push('/my/favlist/video')
-    },
-    goToHistory() {
-      if (this.$route.path === '/my/visit') {
-        this.$router.go(0)
-        return
-      }
-      this.$router.push('/my/visit')
-    },
-    goToMessage() {
-      if (this.$route.path === '/my/message/receive') {
-        this.$router.go(0)
-        return
-      }
-      this.$router.push('/my/message/receive')
-    },
-    goToPublish() {
-      if (this.$route.path === '/my/post/publish/video') {
-        this.$router.go(0)
-        return
-      }
-      this.$router.push('/my/post/publish/video')
-    }
-  }
-}
-</script>
-
-<style scoped>
-@media screen and (max-width: 768px) {
-}
-
-.logo {
-  width: 30px;
-  position: relative;
-}
-
-.size {
-  font-size: 16px;
-}
-
-.item {
-  margin-top: 10px;
-  margin-right: 10px;
-}
-</style>

+ 157 - 205
src/router/index.js

@@ -4,7 +4,6 @@ import Vue from 'vue'
 // 懒加载引入页面组件,es6语法
 // ********************************************************************************************************************
 // 应用主页
-const Index = () => import('views/Index')
 const Home = () => import('views/home/Index')
 const TimelineIndex = () => import('views/home/Timeline')
 const VideoIndex = () => import('views/home/Video')
@@ -38,16 +37,14 @@ const UserRelation = () => import('views/user/UserRelation')
 // 用户后台主页
 const My = () => import('views/my/My')
 const MyProfile = () => import('views/my/MyProfile')
-// 消息
-const MessageIndex = () => import('views/my/Message')
 const MyVip = () => import('views/my/MyVip')
-
-const MyPost = () => import('views/my/MyPost')
 // 收藏夹
 const FavlistVideo = () => import('views/my/FavlistVideo')
 const FavlistImage = () => import('views/my/FavlistImage')
 // 浏览记录
 const HistoryIndex = () => import('views/my/History')
+// 消息
+const MessageIndex = () => import('views/my/Message')
 
 const CamList = () => import('views/post/CamList')
 
@@ -110,44 +107,6 @@ const routes = [
       }
     ]
   },
-  {
-    path: '/my/post',
-    name: 'MyPost',
-    /* component: MyPost,*/
-    meta: { needAuth: true },
-    children: [
-      {
-        path: '/my/post/publish/video',
-        name: '发布视频',
-        component: PostPublishVideo,
-        meta: { needAuth: true }
-      },
-      {
-        path: '/my/post/publish/audio',
-        name: '发布音频',
-        component: PostPublishAudio,
-        meta: { needAuth: true }
-      },
-      {
-        path: '/my/post/publish/image',
-        name: '发布相册',
-        component: PostPublishAlbum,
-        meta: { needAuth: true }
-      },
-      {
-        path: '/my/post/publish/article',
-        name: '发布文章',
-        component: PostPublishArticle,
-        meta: { needAuth: true }
-      },
-      {
-        path: '/my/post/publish/file',
-        name: '发布文件',
-        component: PostPublishFile,
-        meta: { needAuth: true }
-      }
-    ]
-  },
   {
     path: '/my/post/publish',
     name: 'MyPostPublish',
@@ -189,7 +148,7 @@ const routes = [
   {
     path: '/my/post/list',
     name: 'MyPostList',
-    component: MyPost,
+    component: My,
     meta: { needAuth: true },
     children: [
       {
@@ -401,175 +360,168 @@ const routes = [
     component: PostEditArticle,
     meta: { needAuth: true }
   },
+
   {
     path: '/',
-    name: 'Index',
-    component: Index,
-    meta: { needAuth: true },
-    children: [
-      {
-        path: '',
-        name: 'Home',
-        component: Home,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/video',
-        name: 'VideoIndex',
-        component: VideoIndex,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/shortvideo',
-        name: 'ShortVideoIndex',
-        component: ShortVideoIndex,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/video/:id',
-        name: 'VideoPage',
-        component: VideoPage,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/vidlist/:id',
-        name: 'VideoList',
-        component: VideoList,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/audio',
-        name: 'AudioIndex',
-        component: AudioIndex,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/audio/:audioId',
-        name: 'AudioPage',
-        component: AudioPage,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/image',
-        name: 'ImageIndex',
-        component: ImageIndex,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/image/album/:albumId',
-        name: 'ImagePage',
-        component: ImagePage,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/article',
-        name: 'ArticleIndex',
-        component: ArticleIndex,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/stream',
-        name: 'MessageStream',
-        component: MessageStream,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/article/:articleId',
-        name: 'ArticlePage',
-        component: ArticlePage,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/discover',
-        name: 'DiscoverIndex',
-        component: DiscoverIndex,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/search',
-        name: 'search',
-        component: Search,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/user/:id',
-        name: 'UserHome',
-        component: UserHome,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/user/:id/video',
-        name: 'UserVideo',
-        component: UserVideo,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/user/:id/image',
-        name: 'UserImage',
-        component: UserImage,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/user/:id/audio',
-        name: 'UserAudio',
-        component: UserAudio,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/user/:id/article',
-        name: 'UserArticle',
-        component: UserArticle,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/user/:id/following',
-        name: 'UserRelation',
-        component: UserRelation,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/user/:id/follower',
-        name: 'UserRelation',
-        component: UserRelation,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/map',
-        name: 'AMap',
-        component: AMap,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/bdmap',
-        name: 'BdMap',
-        component: BdMap,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/amap',
-        name: 'AMap',
-        component: AMap,
-        meta: { needAuth: false }
-      },
-      {
-        path: '/vip',
-        name: 'Vip',
-        component: Vip,
-        meta: { needAuth: false }
-      },
-      {
-        path: '*',
-        name: '404',
-        component: () => import('@/views/404.vue'),
-        meta: { needAuth: false }
-      }
-    ]
+    name: 'index',
+    component: Home,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/video',
+    name: 'VideoIndex',
+    component: VideoIndex,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/shortvideo',
+    name: 'ShortVideoIndex',
+    component: ShortVideoIndex,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/video/:id',
+    name: 'VideoPage',
+    component: VideoPage,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/vidlist/:id',
+    name: 'VideoList',
+    component: VideoList,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/audio',
+    name: 'AudioIndex',
+    component: AudioIndex,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/audio/:audioId',
+    name: 'AudioPage',
+    component: AudioPage,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/image',
+    name: 'ImageIndex',
+    component: ImageIndex,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/image/album/:albumId',
+    name: 'ImagePage',
+    component: ImagePage,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/article',
+    name: 'ArticleIndex',
+    component: ArticleIndex,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/stream',
+    name: 'MessageStream',
+    component: MessageStream,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/article/:articleId',
+    name: 'ArticlePage',
+    component: ArticlePage,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/discover',
+    name: 'DiscoverIndex',
+    component: DiscoverIndex,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/search',
+    name: 'search',
+    component: Search,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/user/:id',
+    name: 'UserHome',
+    component: UserHome,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/user/:id/video',
+    name: 'UserVideo',
+    component: UserVideo,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/user/:id/image',
+    name: 'UserImage',
+    component: UserImage,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/user/:id/audio',
+    name: 'UserAudio',
+    component: UserAudio,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/user/:id/article',
+    name: 'UserArticle',
+    component: UserArticle,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/user/:id/following',
+    name: 'UserRelation',
+    component: UserRelation,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/user/:id/follower',
+    name: 'UserRelation',
+    component: UserRelation,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/map',
+    name: 'AMap',
+    component: AMap,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/bdmap',
+    name: 'BdMap',
+    component: BdMap,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/amap',
+    name: 'AMap',
+    component: AMap,
+    meta: { needAuth: false }
+  },
+  {
+    path: '/vip',
+    name: 'Vip',
+    component: Vip,
+    meta: { needAuth: false }
   },
   {
     path: '/login',
     name: 'Login',
     component: () => import('@/views/login.vue'),
     meta: { needAuth: false }
+  },
+  {
+    path: '*',
+    name: '404',
+    component: () => import('@/views/404.vue'),
+    meta: { needAuth: false }
   }
 ]
 

+ 0 - 57
src/views/Index.vue

@@ -1,57 +0,0 @@
-<template>
-  <el-container>
-    <el-main>
-      <nav-bar />
-      <router-view />
-    </el-main>
-  </el-container>
-</template>
-
-<script>
-import NavBar from 'components/layout/NavBar'
-
-export default {
-  name: 'Index',
-  components: {
-    NavBar
-  },
-  data() {
-    return {
-      isCollapse: false,
-      navList: [
-        { path: '/my/account', name: '我的帐号', icon: 'el-icon-upload' }
-      ]
-    }
-  },
-  /*  watch: {
-    // 地址栏 url 发生变化时重新加载本页面
-    $route() {
-      this.$router.go()
-    }
-  },*/
-  created() {
-    document.title = 'tnb'
-  },
-  methods: {
-    handleOpen(key, keyPath) {
-      console.log(key, keyPath)
-    },
-    handleClose(key, keyPath) {
-      console.log(key, keyPath)
-    }
-  }
-}
-</script>
-
-<style>
-.el-menu-vertical-demo:not(.el-menu--collapse) {
-  width: 200px;
-  min-height: 800px;
-}
-
-#aside-style {
-  min-width: 120px;
-  max-width: 240px;
-  width: 30%;
-}
-</style>

+ 64 - 76
src/views/admin/Admin.vue

@@ -1,97 +1,85 @@
 <template>
-  <el-container style="height: 650px; border: 1px solid #eee">
-    <el-header style="text-align: right; font-size: 12px">
-      <el-col :md="2">
-        <ul class="el-menu--horizontal el-menu">
-          <li class="el-menu-item">
-            <a href="/admin" style="text-decoration-line: none">
-              <img src="@/assets/img/icon/logo.png" class="el-avatar--circle el-avatar--medium" alt="img">
-              admin
-            </a>
-          </li>
-        </ul>
-      </el-col>
-      <el-dropdown>
-        <img
-          :src="user.avatarUrl"
-          class="el-avatar--circle el-avatar--medium"
-          style="margin-right: 10px; margin-top: 15px"
-          alt=""
-        >
-        <el-dropdown-menu slot="dropdown">
-          <el-dropdown-item
-            icon="el-icon-error"
-            class="size"
-            @click.native="goToLogout"
-          >退出</el-dropdown-item>
-          <el-dropdown-item>查看</el-dropdown-item>
-          <el-dropdown-item>新增</el-dropdown-item>
-          <el-dropdown-item>删除</el-dropdown-item>
-        </el-dropdown-menu>
-      </el-dropdown>
-    </el-header>
-    <el-container>
-      <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
-        <el-menu
-          :default-active="this.$route.path"
-          router
-          class="el-menu-vertical-demo"
-          :collapse="isCollapse"
-          @open="handleOpen"
-          @close="handleClose"
-        >
-          <el-menu-item index="/admin/site">
-            <i class="el-icon-apple" />
-            <span slot="title">站点配置</span>
-          </el-menu-item>
-          <el-menu-item index="/admin/user">
-            <i class="el-icon-user" />
-            <span slot="title">用户列表</span>
-          </el-menu-item>
-          <el-menu-item index="/admin/post">
-            <i class="el-icon-postcard" />
-            <span slot="title">稿件列表</span>
-          </el-menu-item>
-          <el-menu-item index="/admin/datasource">
-            <i class="el-icon-date" />
-            <span slot="title">数据源</span>
-          </el-menu-item>
-        </el-menu>
-      </el-aside>
-      <el-main>
-        <router-view />
-      </el-main>
-    </el-container>
+  <el-container>
+    <el-aside id="aside-style">
+      <el-radio-group v-model="isCollapse" style="margin-bottom: 20px;">
+        <el-radio-button :label="false">展开</el-radio-button>
+        <el-radio-button :label="true">收起</el-radio-button>
+      </el-radio-group>
+      <el-menu
+        :default-active="this.$route.path"
+        router
+        class="el-menu-vertical-demo"
+        :collapse="isCollapse"
+        @open="handleOpen"
+        @close="handleClose"
+      >
+        <el-menu-item index="/admin/site">
+          <i class="el-icon-apple" />
+          <span slot="title">站点配置</span>
+        </el-menu-item>
+        <el-menu-item index="/admin/user">
+          <i class="el-icon-user" />
+          <span slot="title">用户列表</span>
+        </el-menu-item>
+        <el-menu-item index="/admin/post">
+          <i class="el-icon-postcard" />
+          <span slot="title">稿件列表</span>
+        </el-menu-item>
+        <el-menu-item index="/admin/datasource">
+          <i class="el-icon-date" />
+          <span slot="title">数据源</span>
+        </el-menu-item>
+      </el-menu>
+    </el-aside>
+    <el-main>
+      <!--      <el-breadcrumb separator-class="el-icon-arrow-right">
+        <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+        <el-breadcrumb-item v-text="this.$router.currentRoute.name"></el-breadcrumb-item>
+      </el-breadcrumb>-->
+      <router-view />
+    </el-main>
   </el-container>
 </template>
 
 <script>
-import { getAuthedUser } from '@/utils/auth'
-
 export default {
   data() {
     return {
-      user: null
+      isCollapse: false,
+      navList: [
+        { path: '/my/account', name: '我的帐号', icon: 'el-icon-upload' }
+      ]
     }
   },
+  /*  watch: {
+    // 地址栏 url 发生变化时重新加载本页面
+    $route() {
+      this.$router.go()
+    }
+  },*/
   created() {
-    document.title = '后台管理'
-    const userInfo = getAuthedUser()
-    if (userInfo !== null) {
-      this.user = userInfo
+    document.title = '后台主页'
+  },
+  methods: {
+    handleOpen(key, keyPath) {
+      console.log(key, keyPath)
+    },
+    handleClose(key, keyPath) {
+      console.log(key, keyPath)
     }
   }
 }
 </script>
 
 <style>
-.el-header {
-  background-color: #B3C0D1;
-  color: #333;
-  line-height: 60px;
+.el-menu-vertical-demo:not(.el-menu--collapse) {
+  width: 200px;
+  min-height: 800px;
 }
 
-.el-aside {
-  color: #333;
+#aside-style {
+  min-width: 120px;
+  max-width: 240px;
+  width: 30%;
 }
 </style>

+ 61 - 70
src/views/disk/Disk.vue

@@ -1,91 +1,82 @@
 <template>
-  <el-container style="height: 650px; border: 1px solid #eee">
-    <el-header style="text-align: right; font-size: 12px">
-      <el-col :md="2">
-        <ul class="el-menu--horizontal el-menu">
-          <li class="el-menu-item">
-            <a href="/disk" style="text-decoration-line: none">
-              <img src="@/assets/img/icon/logo.png" class="el-avatar--circle el-avatar--medium" alt="img">
-              disk
-            </a>
-          </li>
-        </ul>
-      </el-col>
-      <el-dropdown>
-        <img
-          :src="user.avatarUrl"
-          class="el-avatar--circle el-avatar--medium"
-          style="margin-right: 10px; margin-top: 15px"
-          alt=""
-        >
-        <el-dropdown-menu slot="dropdown">
-          <el-dropdown-item
-            icon="el-icon-error"
-            class="size"
-            @click.native="goToLogout"
-          >退出</el-dropdown-item>
-        </el-dropdown-menu>
-      </el-dropdown>
-    </el-header>
-    <el-container>
-      <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
-        <el-menu
-          :default-active="this.$route.path"
-          router
-          class="el-menu-vertical-demo"
-        >
-          <el-menu-item index="/disk/list">
-            <i class="el-icon-files" />
-            <span slot="title">文件</span>
-          </el-menu-item>
-          <el-menu-item index="/disk/image">
-            <i class="el-icon-picture" />
-            <span slot="title">图片</span>
-          </el-menu-item>
-          <el-menu-item index="/disk/video">
-            <i class="el-icon-video-camera" />
-            <span slot="title">视频</span>
-          </el-menu-item>
-          <el-menu-item index="/disk/audio">
-            <i class="el-icon-headset" />
-            <span slot="title">音频</span>
-          </el-menu-item>
-        </el-menu>
-      </el-aside>
-      <el-main>
-        <router-view />
-      </el-main>
-    </el-container>
+  <el-container>
+    <el-aside id="aside-style">
+      <el-menu
+        :default-active="this.$route.path"
+        router
+        class="el-menu-vertical-demo"
+        :collapse="isCollapse"
+        @open="handleOpen"
+        @close="handleClose"
+      >
+        <el-menu-item index="/disk/list">
+          <i class="el-icon-files" />
+          <span slot="title">文件</span>
+        </el-menu-item>
+        <el-menu-item index="/disk/image">
+          <i class="el-icon-picture" />
+          <span slot="title">图片</span>
+        </el-menu-item>
+        <el-menu-item index="/disk/video">
+          <i class="el-icon-video-camera" />
+          <span slot="title">视频</span>
+        </el-menu-item>
+        <el-menu-item index="/disk/audio">
+          <i class="el-icon-headset" />
+          <span slot="title">音频</span>
+        </el-menu-item>
+      </el-menu>
+    </el-aside>
+    <el-main>
+      <!--      <el-breadcrumb separator-class="el-icon-arrow-right">
+        <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+        <el-breadcrumb-item v-text="this.$router.currentRoute.name"></el-breadcrumb-item>
+      </el-breadcrumb>-->
+      <router-view />
+    </el-main>
   </el-container>
 </template>
 
 <script>
-import { getAuthedUser } from '@/utils/auth'
-
 export default {
+  name: 'Disk',
   data() {
     return {
-      user: null
+      isCollapse: false,
+      navList: [
+        { path: '/my/account', name: '我的帐号', icon: 'el-icon-upload' }
+      ]
     }
   },
+  /*  watch: {
+    // 地址栏 url 发生变化时重新加载本页面
+    $route() {
+      this.$router.go()
+    }
+  },*/
   created() {
-    document.title = '我的网盘'
-    const userInfo = getAuthedUser()
-    if (userInfo !== null) {
-      this.user = userInfo
+    document.title = '网盘主页'
+  },
+  methods: {
+    handleOpen(key, keyPath) {
+      console.log(key, keyPath)
+    },
+    handleClose(key, keyPath) {
+      console.log(key, keyPath)
     }
   }
 }
 </script>
 
 <style>
-.el-header {
-  background-color: #B3C0D1;
-  color: #333;
-  line-height: 60px;
+.el-menu-vertical-demo:not(.el-menu--collapse) {
+  width: 200px;
+  min-height: 800px;
 }
 
-.el-aside {
-  color: #333;
+#aside-style {
+  min-width: 120px;
+  max-width: 240px;
+  width: 30%;
 }
 </style>

+ 48 - 59
src/views/login.vue

@@ -1,77 +1,66 @@
 <template>
-  <el-container>
-    <el-main>
-      <login-bar />
-      <router-view />
-      <el-row class="movie-list">
-        <el-col :md="8" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px" />
-        <el-col :md="8" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px" />
-        <el-col :md="8" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
-          <el-row style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px; text-align: center">
-            <el-card class="box-card">
-              <div slot="header" class="clearfix">
-                <span>用户登录</span>
-              </div>
-              <div class="text item">
-                <el-form ref="form" :model="userLogin" label-width="80px">
-                  <el-form-item label="帐号">
-                    <el-input
-                      v-model="userLogin.principal"
-                      placeholder="请输入手机号或邮箱"
-                      style="padding-right: 1px"
-                      clearable
-                    />
-                  </el-form-item>
-                  <el-form-item label="密码">
-                    <el-input
-                      v-model="userLogin.credential"
-                      type="password"
-                      placeholder="请输入密码"
-                      style="padding-right: 1px"
-                    />
-                  </el-form-item>
-                  <el-form-item label="图形验证码" label-width="90px">
-                    <el-image :src="captchaCode" @click="getCaptcha" />
-                    <el-input
-                      v-model="userLogin.captchaCode"
-                      placeholder="请输入图形验证码"
-                      style="width: 50%; padding-right: 1px"
-                    />
-                  </el-form-item>
-                  <el-form-item>
-                    <el-button
-                      type="primary"
-                      :loading="isLoading"
-                      @click.native="loginBtn"
-                    >登 录</el-button>
-                    <el-button type="plain" @click="register">注册/忘记密码?</el-button>
-                  </el-form-item>
-                </el-form>
-              </div>
-            </el-card>
-          </el-row>
-        </el-col>
+  <el-row class="movie-list">
+    <el-col :md="8" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px" />
+    <el-col :md="8" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px" />
+    <el-col :md="8" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
+      <el-row style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px; text-align: center">
+        <el-card class="box-card">
+          <div slot="header" class="clearfix">
+            <span>用户登录</span>
+          </div>
+          <div class="text item">
+            <el-form ref="form" :model="userLogin" label-width="80px">
+              <el-form-item label="帐号">
+                <el-input
+                  v-model="userLogin.principal"
+                  placeholder="请输入手机号或邮箱"
+                  style="padding-right: 1px"
+                  clearable
+                />
+              </el-form-item>
+              <el-form-item label="密码">
+                <el-input
+                  v-model="userLogin.credential"
+                  type="password"
+                  placeholder="请输入密码"
+                  style="padding-right: 1px"
+                />
+              </el-form-item>
+              <el-form-item label="图形验证码" label-width="90px">
+                <el-image :src="captchaCode" @click="getCaptcha" />
+                <el-input
+                  v-model="userLogin.captchaCode"
+                  placeholder="请输入图形验证码"
+                  style="width: 50%; padding-right: 1px"
+                />
+              </el-form-item>
+              <el-form-item>
+                <el-button
+                  type="primary"
+                  :loading="isLoading"
+                  @click.native="loginBtn"
+                >登 录</el-button>
+                <el-button type="plain" @click="register">注册/忘记密码?</el-button>
+              </el-form-item>
+            </el-form>
+          </div>
+        </el-card>
       </el-row>
-    </el-main>
-  </el-container>
+    </el-col>
+  </el-row>
 </template>
 
 <script>
 import { userMixin } from 'assets/js/mixin'
-import LoginBar from 'components/layout/LoginBar'
 
 export default {
   name: 'Login',
-  components: {
-    LoginBar
-  },
   mixins: [userMixin],
   data() {
     return {
     }
   },
   created() {
-    document.title = '用户登录'
     this.fetchPubkey()
   },
   methods: {

+ 153 - 163
src/views/my/My.vue

@@ -1,205 +1,195 @@
 <template>
-  <el-container style="height: 650px; border: 1px solid #eee">
-    <el-header style="text-align: right; font-size: 12px">
-      <el-col :md="2">
-        <ul class="el-menu--horizontal el-menu">
-          <li class="el-menu-item">
-            <a href="/my" style="text-decoration-line: none">
-              <img src="@/assets/img/icon/logo.png" class="el-avatar--circle el-avatar--medium" alt="img">
-              my
-            </a>
-          </li>
-        </ul>
-      </el-col>
-      <el-dropdown>
-        <img
-          :src="user.avatarUrl"
-          class="el-avatar--circle el-avatar--medium"
-          style="margin-right: 10px; margin-top: 15px"
-          alt=""
-        >
-        <el-dropdown-menu slot="dropdown">
-          <el-dropdown-item
-            icon="el-icon-error"
-            class="size"
-            @click.native="goToLogout"
-          >退出</el-dropdown-item>
-          <el-dropdown-item>查看</el-dropdown-item>
-        </el-dropdown-menu>
-      </el-dropdown>
-    </el-header>
-    <el-container>
-      <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
-        <el-menu
-          :default-active="this.$route.path"
-          router
-          class="el-menu-vertical-demo"
-          :collapse="isCollapse"
-          @open="handleOpen"
-          @close="handleClose"
-        >
-          <el-submenu index="/my/account">
+  <el-container>
+    <el-aside id="aside-style">
+      <!--    <el-radio-group v-model="isCollapse" style="margin-bottom: 20px;">
+      <el-radio-button :label="false">展开</el-radio-button>
+      <el-radio-button :label="true">收起</el-radio-button>
+    </el-radio-group>-->
+      <el-menu
+        :default-active="this.$route.path"
+        router
+        class="el-menu-vertical-demo"
+        :collapse="isCollapse"
+        @open="handleOpen"
+        @close="handleClose"
+      >
+        <el-submenu index="/my/account">
+          <template slot="title">
+            <i class="el-icon-user" />
+            <span slot="title">帐号管理</span>
+          </template>
+          <el-menu-item-group>
+            <el-menu-item index="/my/account/profile">
+              <i class="el-icon-film" />
+              <span slot="title">个人资料</span>
+            </el-menu-item>
+            <el-menu-item index="/my/account/vip">
+              <i class="el-icon-film" />
+              <span slot="title">小会员</span>
+            </el-menu-item>
+          </el-menu-item-group>
+        </el-submenu>
+        <el-submenu index="/my/post">
+          <template slot="title">
+            <i class="el-icon-postcard" />
+            <span slot="title">稿件管理</span>
+          </template>
+          <el-submenu index="/my/post/publish">
             <template slot="title">
-              <i class="el-icon-user" />
-              <span slot="title">帐号管理</span>
+              <i class="el-icon-plus" />
+              <span slot="title">发布</span>
             </template>
             <el-menu-item-group>
-              <el-menu-item index="/my/account/profile">
+              <el-menu-item index="/my/post/publish/video">
                 <i class="el-icon-film" />
-                <span slot="title">个人资料</span>
+                <span slot="title">视频</span>
               </el-menu-item>
-              <el-menu-item index="/my/account/vip">
-                <i class="el-icon-film" />
-                <span slot="title">小会员</span>
+              <el-menu-item index="/my/post/publish/audio">
+                <i class="el-icon-headset" />
+                <span slot="title">音频</span>
+              </el-menu-item>
+              <el-menu-item index="/my/post/publish/image">
+                <i class="el-icon-picture" />
+                <span slot="title">相册</span>
+              </el-menu-item>
+              <el-menu-item index="/my/post/publish/article">
+                <i class="el-icon-document" />
+                <span slot="title">文章</span>
+              </el-menu-item>
+              <el-menu-item index="/my/post/publish/file">
+                <i class="el-icon-files" />
+                <span slot="title">文件</span>
               </el-menu-item>
             </el-menu-item-group>
           </el-submenu>
-          <el-submenu index="/my/post">
+          <el-submenu index="/my/post/list">
             <template slot="title">
-              <i class="el-icon-postcard" />
-              <span slot="title">稿件管理</span>
-            </template>
-            <el-submenu index="/my/post/publish">
-              <template slot="title">
-                <i class="el-icon-plus" />
-                <span slot="title">发布</span>
-              </template>
-              <el-menu-item-group>
-                <el-menu-item index="/my/post/publish/video">
-                  <i class="el-icon-film" />
-                  <span slot="title">视频</span>
-                </el-menu-item>
-                <el-menu-item index="/my/post/publish/audio">
-                  <i class="el-icon-headset" />
-                  <span slot="title">音频</span>
-                </el-menu-item>
-                <el-menu-item index="/my/post/publish/image">
-                  <i class="el-icon-picture" />
-                  <span slot="title">相册</span>
-                </el-menu-item>
-                <el-menu-item index="/my/post/publish/article">
-                  <i class="el-icon-document" />
-                  <span slot="title">文章</span>
-                </el-menu-item>
-                <el-menu-item index="/my/post/publish/file">
-                  <i class="el-icon-files" />
-                  <span slot="title">文件</span>
-                </el-menu-item>
-              </el-menu-item-group>
-            </el-submenu>
-            <el-submenu index="/my/post/list">
-              <template slot="title">
-                <i class="el-icon-s-data" />
-                <span slot="title">稿件</span>
-              </template>
-              <el-menu-item-group>
-                <el-menu-item index="/my/post/list/video">
-                  <i class="el-icon-film" />
-                  <span slot="title">视频</span>
-                </el-menu-item>
-                <el-menu-item index="/my/post/list/audio">
-                  <i class="el-icon-headset" />
-                  <span slot="title">音频</span>
-                </el-menu-item>
-                <el-menu-item index="/my/post/list/image">
-                  <i class="el-icon-picture" />
-                  <span slot="title">相册</span>
-                </el-menu-item>
-                <el-menu-item index="/my/post/list/article">
-                  <i class="el-icon-document" />
-                  <span slot="title">文章</span>
-                </el-menu-item>
-              </el-menu-item-group>
-            </el-submenu>
-          </el-submenu>
-          <el-submenu index="/my/favlist">
-            <template slot="title">
-              <i class="el-icon-collection" />
-              <span slot="title">收藏夹</span>
+              <i class="el-icon-s-data" />
+              <span slot="title">稿件</span>
             </template>
             <el-menu-item-group>
-              <el-menu-item index="/my/favlist/video">
+              <el-menu-item index="/my/post/list/video">
                 <i class="el-icon-film" />
                 <span slot="title">视频</span>
               </el-menu-item>
-              <el-menu-item index="/my/favlist/image">
+              <el-menu-item index="/my/post/list/audio">
+                <i class="el-icon-headset" />
+                <span slot="title">音频</span>
+              </el-menu-item>
+              <el-menu-item index="/my/post/list/image">
                 <i class="el-icon-picture" />
                 <span slot="title">相册</span>
               </el-menu-item>
-            </el-menu-item-group>
-          </el-submenu>
-          <el-menu-item index="/my/visit">
-            <i class="el-icon-document" />
-            <span slot="title">历史记录</span>
-          </el-menu-item>
-          <el-submenu index="/my/message">
-            <template slot="title">
-              <i class="el-icon-message" />
-              <span slot="title">我的消息</span>
-            </template>
-            <el-menu-item-group>
-              <el-menu-item index="/my/message/send">
-                <i class="el-icon-right" />
-                <span slot="title">发出的消息</span>
-              </el-menu-item>
-              <el-menu-item index="/my/message/receive">
-                <i class="el-icon-back" />
-                <span slot="title">收到的消息</span>
-              </el-menu-item>
-              <el-menu-item index="/my/message/private">
-                <i class="el-icon-bell" />
-                <span slot="title">私信</span>
+              <el-menu-item index="/my/post/list/article">
+                <i class="el-icon-document" />
+                <span slot="title">文章</span>
               </el-menu-item>
             </el-menu-item-group>
           </el-submenu>
-          <el-submenu index="/my/cam">
-            <template slot="title">
+        </el-submenu>
+        <el-submenu index="/my/favlist">
+          <template slot="title">
+            <i class="el-icon-collection" />
+            <span slot="title">收藏夹</span>
+          </template>
+          <el-menu-item-group>
+            <el-menu-item index="/my/favlist/video">
+              <i class="el-icon-film" />
+              <span slot="title">视频</span>
+            </el-menu-item>
+            <el-menu-item index="/my/favlist/image">
+              <i class="el-icon-picture" />
+              <span slot="title">相册</span>
+            </el-menu-item>
+          </el-menu-item-group>
+        </el-submenu>
+        <el-menu-item index="/my/visit">
+          <i class="el-icon-document" />
+          <span slot="title">历史记录</span>
+        </el-menu-item>
+        <el-submenu index="/my/message">
+          <template slot="title">
+            <i class="el-icon-message" />
+            <span slot="title">我的消息</span>
+          </template>
+          <el-menu-item-group>
+            <el-menu-item index="/my/message/send">
+              <i class="el-icon-right" />
+              <span slot="title">发出的消息</span>
+            </el-menu-item>
+            <el-menu-item index="/my/message/receive">
+              <i class="el-icon-back" />
+              <span slot="title">收到的消息</span>
+            </el-menu-item>
+            <el-menu-item index="/my/message/private">
+              <i class="el-icon-bell" />
+              <span slot="title">私信</span>
+            </el-menu-item>
+          </el-menu-item-group>
+        </el-submenu>
+        <el-submenu index="/my/cam">
+          <template slot="title">
+            <i class="el-icon-camera" />
+            <span slot="title">我的监控</span>
+          </template>
+          <el-menu-item-group>
+            <el-menu-item index="/my/cam/list">
               <i class="el-icon-camera" />
-              <span slot="title">我的监控</span>
-            </template>
-            <el-menu-item-group>
-              <el-menu-item index="/my/cam/list">
-                <i class="el-icon-camera" />
-                <span slot="title">摄像头列表</span>
-              </el-menu-item>
-            </el-menu-item-group>
-          </el-submenu>
-        </el-menu>
-      </el-aside>
-      <el-main>
-        <router-view />
-      </el-main>
-    </el-container>
+              <span slot="title">摄像头列表</span>
+            </el-menu-item>
+          </el-menu-item-group>
+        </el-submenu>
+      </el-menu>
+    </el-aside>
+    <el-main>
+      <!--      <el-breadcrumb separator-class="el-icon-arrow-right">
+        <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+        <el-breadcrumb-item v-text="this.$router.currentRoute.name"></el-breadcrumb-item>
+      </el-breadcrumb>-->
+      <router-view />
+    </el-main>
   </el-container>
 </template>
 
 <script>
-import { getAuthedUser } from '@/utils/auth'
-
 export default {
   data() {
     return {
-      user: null
+      isCollapse: false,
+      navList: [
+        { path: '/my/account', name: '我的帐号', icon: 'el-icon-upload' }
+      ]
     }
   },
+  /*  watch: {
+    // 地址栏 url 发生变化时重新加载本页面
+    $route() {
+      this.$router.go()
+    }
+  },*/
   created() {
-    document.title = '我的帐号'
-    const userInfo = getAuthedUser()
-    if (userInfo !== null) {
-      this.user = userInfo
+    document.title = '我的主页'
+  },
+  methods: {
+    handleOpen(key, keyPath) {
+      console.log(key, keyPath)
+    },
+    handleClose(key, keyPath) {
+      console.log(key, keyPath)
     }
   }
 }
 </script>
 
 <style>
-.el-header {
-  background-color: #B3C0D1;
-  color: #333;
-  line-height: 60px;
+.el-menu-vertical-demo:not(.el-menu--collapse) {
+  width: 200px;
+  min-height: 800px;
 }
 
-.el-aside {
-  color: #333;
+#aside-style {
+  min-width: 120px;
+  max-width: 240px;
+  width: 30%;
 }
 </style>

+ 0 - 40
src/views/my/MyPost.vue

@@ -1,40 +0,0 @@
-<template>
-  <el-container>
-    <el-main>
-      <router-view />
-    </el-main>
-  </el-container>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-    }
-  },
-  /*  watch: {
-    // 地址栏 url 发生变化时重新加载本页面
-    $route() {
-      this.$router.go()
-    }
-  },*/
-  created() {
-    document.title = '我的稿件'
-  },
-  methods: {
-  }
-}
-</script>
-
-<style>
-.el-menu-vertical-demo:not(.el-menu--collapse) {
-  width: 200px;
-  min-height: 800px;
-}
-
-#aside-style {
-  min-width: 120px;
-  max-width: 240px;
-  width: 30%;
-}
-</style>