From f7aee3b5a349481bfa67ce1cb12eafe4938f32a4 Mon Sep 17 00:00:00 2001
From: Pan <panfree23@gmail.com>
Date: Mon, 28 Aug 2017 13:12:44 +0800
Subject: [PATCH] refactor

---
 index.html                                    |   1 -
 src/api/article.js                            |  17 +-
 src/api/article_table.js                      |  17 --
 src/api/login.js                              |   2 +-
 src/api/qiniu.js                              |   2 +-
 src/api/remoteSearch.js                       |   2 +-
 src/components/Github/index.vue               |  13 ++
 src/components/Screenfull/index.vue           |   1 +
 src/components/TodoList/index.vue             |   1 +
 src/components/Upload/singleImage.vue         |   2 +-
 src/components/Upload/singleImage2.vue        |  48 ++---
 src/components/Upload/singleImage3.vue        |  50 +++---
 src/main.js                                   |   2 +-
 src/mock/article.js                           |  39 +++-
 src/mock/article_table.js                     |  44 -----
 src/mock/index.js                             |   6 +-
 src/mock/login.js                             |   2 +-
 src/mock/remoteSearch.js                      |   2 +-
 src/router/index.js                           |   3 +-
 src/store/modules/permission.js               |   2 +-
 src/store/modules/user.js                     |   4 +-
 src/views/charts/keyboard.vue                 |   2 +-
 src/views/charts/keyboard2.vue                |   2 +-
 src/views/charts/line.vue                     |   2 +-
 src/views/charts/mixChart.vue                 |   2 +-
 src/views/components/dndList.vue              |  12 +-
 src/views/components/markdown.vue             |   1 +
 src/views/components/mixin.vue                |   2 +-
 src/views/components/tinymce.vue              |   2 +-
 .../dashboard/{editor => admin}/barChart.vue  |   0
 src/views/dashboard/admin/index.vue           | 131 ++++++++++++++
 .../dashboard/{editor => admin}/lineChart.vue |   4 +-
 .../dashboard/{editor => admin}/pieChart.vue  |   0
 src/views/dashboard/default/index.vue         |  82 ---------
 src/views/dashboard/editor/index.vue          | 168 ++++++------------
 src/views/dashboard/index.vue                 |  16 +-
 src/views/errorPage/401.vue                   |   2 +-
 src/views/example/form.vue                    |  17 +-
 src/views/example/tab/components/tabPane.vue  |  12 +-
 src/views/example/table/dragTable.vue         |  15 +-
 .../example/table/dynamictable/fixedThead.vue |   2 +-
 .../index.vue}                                |   4 +-
 src/views/example/table/inlineEditTable.vue   |  11 +-
 src/views/example/table/table.vue             |  14 +-
 src/views/excel/index.vue                     |  14 +-
 src/views/excel/selectExcel.vue               |  14 +-
 src/views/login/index.vue                     |   2 +-
 src/views/login/socialsignin.vue              |   2 +-
 src/views/qiniu/upload.vue                    |   5 +-
 src/views/theme/index.vue                     |   2 +-
 50 files changed, 386 insertions(+), 416 deletions(-)
 delete mode 100644 src/api/article_table.js
 create mode 100644 src/components/Github/index.vue
 delete mode 100644 src/mock/article_table.js
 rename src/views/dashboard/{editor => admin}/barChart.vue (100%)
 create mode 100644 src/views/dashboard/admin/index.vue
 rename src/views/dashboard/{editor => admin}/lineChart.vue (97%)
 rename src/views/dashboard/{editor => admin}/pieChart.vue (100%)
 delete mode 100644 src/views/dashboard/default/index.vue
 rename src/views/example/table/{dynamictable.vue => dynamictable/index.vue} (78%)

diff --git a/index.html b/index.html
index 13d25065..830bf1f8 100644
--- a/index.html
+++ b/index.html
@@ -12,5 +12,4 @@
 <div id="app"></div>
 <!-- built files will be auto injected -->
 </body>
-
 </html>
diff --git a/src/api/article.js b/src/api/article.js
index 6f541127..2583f0d0 100644
--- a/src/api/article.js
+++ b/src/api/article.js
@@ -1,16 +1,25 @@
-import fetch from 'utils/fetch'
+import fetch from '@/utils/fetch'
 
-export function getList() {
+export function fetchList(query) {
   return fetch({
     url: '/article/list',
-    method: 'get'
+    method: 'get',
+    params: query
   })
 }
 
-export function getArticle() {
+export function fetchArticle() {
   return fetch({
     url: '/article/detail',
     method: 'get'
   })
 }
 
+export function fetchPv(pv) {
+  return fetch({
+    url: '/article/pv',
+    method: 'get',
+    params: { pv }
+  })
+}
+
diff --git a/src/api/article_table.js b/src/api/article_table.js
deleted file mode 100644
index f4ae1af4..00000000
--- a/src/api/article_table.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import fetch from 'utils/fetch'
-
-export function fetchList(query) {
-  return fetch({
-    url: '/article_table/list',
-    method: 'get',
-    params: query
-  })
-}
-
-export function fetchPv(pv) {
-  return fetch({
-    url: '/article_table/pv',
-    method: 'get',
-    params: { pv }
-  })
-}
diff --git a/src/api/login.js b/src/api/login.js
index 4f61222e..16775960 100644
--- a/src/api/login.js
+++ b/src/api/login.js
@@ -1,4 +1,4 @@
-import fetch from 'utils/fetch'
+import fetch from '@/utils/fetch'
 
 export function loginByUsername(username, password) {
   const data = {
diff --git a/src/api/qiniu.js b/src/api/qiniu.js
index 59e82a37..a5facdc0 100644
--- a/src/api/qiniu.js
+++ b/src/api/qiniu.js
@@ -1,4 +1,4 @@
-import fetch from 'utils/fetch'
+import fetch from '@/utils/fetch'
 
 export function getToken() {
   return fetch({
diff --git a/src/api/remoteSearch.js b/src/api/remoteSearch.js
index 6ba64443..01ca9109 100644
--- a/src/api/remoteSearch.js
+++ b/src/api/remoteSearch.js
@@ -1,4 +1,4 @@
-import fetch from 'utils/fetch'
+import fetch from '@/utils/fetch'
 
 export function userSearch(name) {
   return fetch({
diff --git a/src/components/Github/index.vue b/src/components/Github/index.vue
new file mode 100644
index 00000000..cd2677ca
--- /dev/null
+++ b/src/components/Github/index.vue
@@ -0,0 +1,13 @@
+<template>
+  <a href="https://github.com/PanJiaChen/vue-element-admin" target="_blank" class="github-corner" aria-label="View source on Github">
+    <svg width="80" height="80" viewBox="0 0 250 250" style="fill:#4AB7BD; color:#fff; position: absolute; top: 50px; border: 0; right: 0;"
+      aria-hidden="true">
+      <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
+      <path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
+        fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path>
+      <path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
+        fill="currentColor" class="octo-body"></path>
+    </svg>
+  </a>
+</template>
+
diff --git a/src/components/Screenfull/index.vue b/src/components/Screenfull/index.vue
index 9d174bb7..ceca3c81 100644
--- a/src/components/Screenfull/index.vue
+++ b/src/components/Screenfull/index.vue
@@ -8,6 +8,7 @@
 
 <script>
 import screenfull from 'screenfull'
+
 export default {
   name: 'hamburger',
   props: {
diff --git a/src/components/TodoList/index.vue b/src/components/TodoList/index.vue
index fba1ce9f..8ce6af46 100644
--- a/src/components/TodoList/index.vue
+++ b/src/components/TodoList/index.vue
@@ -33,6 +33,7 @@
 
 <script>
 import Todo from './Todo.vue'
+
 const STORAGE_KEY = 'todos'
 const filters = {
   all: todos => todos,
diff --git a/src/components/Upload/singleImage.vue b/src/components/Upload/singleImage.vue
index 0ed4f784..18b892fe 100644
--- a/src/components/Upload/singleImage.vue
+++ b/src/components/Upload/singleImage.vue
@@ -18,7 +18,7 @@
 
 <script>
 // 预览效果见付费文章
-import { getToken } from 'api/qiniu'
+import { getToken } from '@/api/qiniu'
 
 export default {
   name: 'singleImageUpload',
diff --git a/src/components/Upload/singleImage2.vue b/src/components/Upload/singleImage2.vue
index 6c923463..a353713a 100644
--- a/src/components/Upload/singleImage2.vue
+++ b/src/components/Upload/singleImage2.vue
@@ -17,39 +17,39 @@
 </template>
 
 <script>
-	// 预览效果见专题
-import { getToken } from 'api/qiniu'
+import { getToken } from '@/api/qiniu'
+
 export default {
-	  name: 'singleImageUpload2',
-	  props: {
-	    value: String
+  name: 'singleImageUpload2',
+  props: {
+    value: String
   },
-	  computed: {
-	    imageUrl() {
-	      return this.value
+  computed: {
+    imageUrl() {
+      return this.value
     }
   },
-	  data() {
-	    return {
-	      tempUrl: '',
-	      dataObj: { token: '', key: '' }
+  data() {
+    return {
+      tempUrl: '',
+      dataObj: { token: '', key: '' }
     }
   },
-	  methods: {
-	    rmImage() {
-	      this.emitInput('')
+  methods: {
+    rmImage() {
+      this.emitInput('')
     },
-	    emitInput(val) {
-	      this.$emit('input', val)
+    emitInput(val) {
+      this.$emit('input', val)
     },
-	    handleImageScucess() {
-	      this.emitInput(this.tempUrl)
+    handleImageScucess() {
+      this.emitInput(this.tempUrl)
     },
-	    beforeUpload() {
-	      const _self = this
+    beforeUpload() {
+      const _self = this
       return new Promise((resolve, reject) => {
-	        getToken().then(response => {
-	          const key = response.data.qiniu_key
+        getToken().then(response => {
+          const key = response.data.qiniu_key
           const token = response.data.qiniu_token
           _self._data.dataObj.token = token
           _self._data.dataObj.key = key
@@ -61,7 +61,7 @@ export default {
       })
     }
   }
-	}
+}
 </script>
 
 <style rel="stylesheet/scss" lang="scss" scoped>
diff --git a/src/components/Upload/singleImage3.vue b/src/components/Upload/singleImage3.vue
index 83118064..4183b88c 100644
--- a/src/components/Upload/singleImage3.vue
+++ b/src/components/Upload/singleImage3.vue
@@ -26,52 +26,52 @@
 </template>
 
 <script>
-	// 预览效果见文章
-	import { getToken } from 'api/qiniu'
+import { getToken } from '@/api/qiniu'
+
 export default {
-	  name: 'singleImageUpload',
-	  props: {
-	    value: String
+  name: 'singleImageUpload',
+  props: {
+    value: String
   },
-	  computed: {
-	    imageUrl() {
-	      return this.value
+  computed: {
+    imageUrl() {
+      return this.value
     }
   },
-	  data() {
-	    return {
-	      tempUrl: '',
-	      dataObj: { token: '', key: '' }
+  data() {
+    return {
+      tempUrl: '',
+      dataObj: { token: '', key: '' }
     }
   },
-	  methods: {
-	    rmImage() {
-	      this.emitInput('')
+  methods: {
+    rmImage() {
+      this.emitInput('')
     },
-	    emitInput(val) {
-	      this.$emit('input', val)
+    emitInput(val) {
+      this.$emit('input', val)
     },
-	    handleImageScucess(file) {
-	      this.emitInput(file.files.file)
+    handleImageScucess(file) {
+      this.emitInput(file.files.file)
     },
-	    beforeUpload() {
-	      const _self = this
+    beforeUpload() {
+      const _self = this
       return new Promise((resolve, reject) => {
-	        getToken().then(response => {
-	          const key = response.data.qiniu_key
+        getToken().then(response => {
+          const key = response.data.qiniu_key
           const token = response.data.qiniu_token
           _self._data.dataObj.token = token
           _self._data.dataObj.key = key
           this.tempUrl = response.data.qiniu_url
           resolve(true)
         }).catch(err => {
-	          console.log(err)
+          console.log(err)
           reject(false)
         })
       })
     }
   }
-	}
+}
 </script>
 
 <style rel="stylesheet/scss" lang="scss" scoped>
diff --git a/src/main.js b/src/main.js
index 04bd223d..08c499a7 100644
--- a/src/main.js
+++ b/src/main.js
@@ -4,7 +4,7 @@ import 'element-ui/lib/theme-default/index.css'
 import App from './App'
 import router from './router'
 import store from './store'
-import '@/assets/iconfont/iconfont' // iconfont 具体图标见https://github.com/PanJiaChen/vue-element-admin/wiki
+import '@/assets/iconfont/iconfont' // iconfont 具体图标见wiki
 import IconSvg from '@/components/Icon-svg'// svg组件
 import * as filters from '@/filters' // 全局filter
 import '@/errorLog'// error log
diff --git a/src/mock/article.js b/src/mock/article.js
index 05a16eeb..f6ed1751 100644
--- a/src/mock/article.js
+++ b/src/mock/article.js
@@ -1,21 +1,50 @@
 import Mock from 'mockjs'
+import { param2Obj } from '@/utils'
 
 const List = []
-const count = 20
+const count = 100
 
 for (let i = 0; i < count; i++) {
   List.push(Mock.mock({
-    id: '@id',
-    title: '@ctitle(10, 20)',
-    'status|1': ['published', 'draft'],
+    id: '@increment',
+    timestamp: +Mock.Random.date('T'),
     author: '@cname',
+    auditor: '@cname',
+    title: '@ctitle(10, 20)',
+    forecast: '@float(0, 100, 2, 2)',
+    importance: '@integer(1, 3)',
+    'type|1': ['CN', 'US', 'JP', 'EU'],
+    'status|1': ['published', 'draft', 'deleted'],
     display_time: '@datetime',
     pageviews: '@integer(300, 5000)'
   }))
 }
 
 export default {
-  getList: () => List,
+  getList: config => {
+    const { importance, type, title, page = 1, limit = 20, sort } = param2Obj(config.url)
+
+    let mockList = List.filter(item => {
+      if (importance && item.importance !== +importance) return false
+      if (type && item.type !== type) return false
+      if (title && item.title.indexOf(title) < 0) return false
+      return true
+    })
+
+    if (sort === '-id') {
+      mockList = mockList.reverse()
+    }
+
+    const pageList = mockList.filter((item, index) => index < limit * page && index >= limit * (page - 1))
+
+    return {
+      total: mockList.length,
+      items: pageList
+    }
+  },
+  getPv: () => ({
+    pvData: [{ key: 'PC网站', pv: 1024 }, { key: 'mobile网站', pv: 1024 }, { key: 'ios', pv: 1024 }, { key: 'android', pv: 1024 }]
+  }),
   getArticle: () => ({
     id: 120000000001,
     author: { key: 'mockPan' },
diff --git a/src/mock/article_table.js b/src/mock/article_table.js
deleted file mode 100644
index 686f7114..00000000
--- a/src/mock/article_table.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import Mock from 'mockjs'
-import { param2Obj } from 'utils'
-
-const List = []
-const count = 100
-
-for (let i = 0; i < count; i++) {
-  List.push(Mock.mock({
-    id: '@increment',
-    timestamp: +Mock.Random.date('T'),
-    author: '@cname',
-    auditor: '@cname',
-    title: '@ctitle(10, 20)',
-    forecast: '@float(0, 100, 2, 2)',
-    importance: '@integer(1, 3)',
-    'type|1': ['CN', 'US', 'JP', 'EU'],
-    'status|1': ['published', 'draft', 'deleted'],
-    pageviews: '@integer(300, 5000)'
-  }))
-}
-
-export default {
-  getList: config => {
-    const { importance, type, title, page, limit, sort } = param2Obj(config.url)
-    let mockList = List.filter(item => {
-      if (importance && item.importance !== +importance) return false
-      if (type && item.type !== type) return false
-      if (title && item.title.indexOf(title) < 0) return false
-      return true
-    })
-    if (sort === '-id') {
-      mockList = mockList.reverse()
-    }
-
-    const pageList = mockList.filter((item, index) => index < limit * page && index >= limit * (page - 1))
-    return {
-      total: mockList.length,
-      items: pageList
-    }
-  },
-  getPv: () => ({
-    pvData: [{ key: 'PC网站', pv: 1024 }, { key: 'mobile网站', pv: 1024 }, { key: 'ios', pv: 1024 }, { key: 'android', pv: 1024 }]
-  })
-}
diff --git a/src/mock/index.js b/src/mock/index.js
index 900af72d..15cea12b 100644
--- a/src/mock/index.js
+++ b/src/mock/index.js
@@ -1,7 +1,6 @@
 import Mock from 'mockjs'
 import loginAPI from './login'
 import articleAPI from './article'
-import article_tableAPI from './article_table'
 import remoteSearchAPI from './remoteSearch'
 
 Mock.setup({
@@ -16,10 +15,7 @@ Mock.mock(/\/user\/info\.*/, 'get', loginAPI.getUserInfo)
 // 文章相关
 Mock.mock(/\/article\/list/, 'get', articleAPI.getList)
 Mock.mock(/\/article\/detail/, 'get', articleAPI.getArticle)
-
-// table example相关
-Mock.mock(/\/article_table\/list/, 'get', article_tableAPI.getList)
-Mock.mock(/\/article_table\/p/, 'get', article_tableAPI.getPv)
+Mock.mock(/\/article\/pv/, 'get', articleAPI.getPv)
 
 // 搜索相关
 Mock.mock(/\/search\/user/, 'get', remoteSearchAPI.searchUser)
diff --git a/src/mock/login.js b/src/mock/login.js
index 6582a9c8..00ce9bde 100644
--- a/src/mock/login.js
+++ b/src/mock/login.js
@@ -1,4 +1,4 @@
-import { param2Obj } from 'utils'
+import { param2Obj } from '@/utils'
 
 const userMap = {
   admin: {
diff --git a/src/mock/remoteSearch.js b/src/mock/remoteSearch.js
index b620f769..b70f6f7d 100644
--- a/src/mock/remoteSearch.js
+++ b/src/mock/remoteSearch.js
@@ -1,5 +1,5 @@
 import Mock from 'mockjs'
-import { param2Obj } from 'utils'
+import { param2Obj } from '@/utils'
 
 const NameList = []
 const count = 100
diff --git a/src/router/index.js b/src/router/index.js
index 78ab7857..b2e79253 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -104,7 +104,7 @@ export const asyncRouterMap = [
         name: 'Table',
         icon: 'table',
         children: [
-          { path: 'dynamictable', component: _import('example/table/dynamictable'), name: '动态table' },
+          { path: 'dynamictable', component: _import('example/table/dynamictable/index'), name: '动态table' },
           { path: 'dragtable', component: _import('example/table/dragTable'), name: '拖拽table' },
           { path: 'inline_edit_table', component: _import('example/table/inlineEditTable'), name: 'table内编辑' },
           { path: 'table', component: _import('example/table/table'), name: '综合table' }
@@ -112,7 +112,6 @@ export const asyncRouterMap = [
       },
       { path: 'form/edit', icon: 'ziliaoshouce', component: _import('example/form'), name: '编辑Form', meta: { isEdit: true }},
       { path: 'form/create', icon: 'yinhangqia', component: _import('example/form'), name: '创建Form' },
-
       { path: 'tab/index', icon: 'mobankuangjia', component: _import('example/tab/index'), name: 'Tab' }
     ]
   },
diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js
index e21a1400..50e2bbe8 100644
--- a/src/store/modules/permission.js
+++ b/src/store/modules/permission.js
@@ -1,4 +1,4 @@
-import { asyncRouterMap, constantRouterMap } from 'src/router'
+import { asyncRouterMap, constantRouterMap } from '@/router'
 
 /**
  * 通过meta.role判断是否与当前用户权限匹配
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 8fde9e06..9c706978 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -1,5 +1,5 @@
-import { loginByUsername, logout, getUserInfo } from 'api/login'
-import { getToken, setToken, removeToken } from 'utils/auth'
+import { loginByUsername, logout, getUserInfo } from '@/api/login'
+import { getToken, setToken, removeToken } from '@/utils/auth'
 
 const user = {
   state: {
diff --git a/src/views/charts/keyboard.vue b/src/views/charts/keyboard.vue
index dd90922f..bfc4db82 100644
--- a/src/views/charts/keyboard.vue
+++ b/src/views/charts/keyboard.vue
@@ -7,7 +7,7 @@
 </template>
 
 <script>
-import keyboardChart from 'components/Charts/keyboard'
+import keyboardChart from '@/components/Charts/keyboard'
 
 export default {
   components: { keyboardChart }
diff --git a/src/views/charts/keyboard2.vue b/src/views/charts/keyboard2.vue
index 77795172..b7b53c20 100644
--- a/src/views/charts/keyboard2.vue
+++ b/src/views/charts/keyboard2.vue
@@ -7,7 +7,7 @@
 </template>
 
 <script>
-import keyboardChart2 from 'components/Charts/keyboard2'
+import keyboardChart2 from '@/components/Charts/keyboard2'
 
 export default {
   components: { keyboardChart2 }
diff --git a/src/views/charts/line.vue b/src/views/charts/line.vue
index 536065f8..63b73a39 100644
--- a/src/views/charts/line.vue
+++ b/src/views/charts/line.vue
@@ -7,7 +7,7 @@
 </template>
 
 <script>
-import lineMarker from 'components/Charts/lineMarker'
+import lineMarker from '@/components/Charts/lineMarker'
 
 export default {
   components: { lineMarker }
diff --git a/src/views/charts/mixChart.vue b/src/views/charts/mixChart.vue
index 9868c48c..647c1ec6 100644
--- a/src/views/charts/mixChart.vue
+++ b/src/views/charts/mixChart.vue
@@ -7,7 +7,7 @@
 </template>
 
 <script>
-import mixChart from 'components/Charts/mixChart'
+import mixChart from '@/components/Charts/mixChart'
 
 export default {
   components: { mixChart }
diff --git a/src/views/components/dndList.vue b/src/views/components/dndList.vue
index 6e77ab36..0c5ab73f 100644
--- a/src/views/components/dndList.vue
+++ b/src/views/components/dndList.vue
@@ -9,7 +9,7 @@
 
 <script>
 import DndList from '@/components/twoDndList'
-import { getList } from 'api/article'
+import { fetchList } from '@/api/article'
 
 export default {
   components: { DndList },
@@ -20,14 +20,14 @@ export default {
     }
   },
   created() {
-    this.fetchData()
+    this.getData()
   },
   methods: {
-    fetchData() {
+    getData() {
       this.listLoading = true
-      getList(this.listQuery).then(response => {
-        this.list1 = response.data.splice(0, 5)
-        this.list2 = response.data
+      fetchList().then(response => {
+        this.list1 = response.data.items.splice(0, 5)
+        this.list2 = response.data.items
       })
     }
   }
diff --git a/src/views/components/markdown.vue b/src/views/components/markdown.vue
index 066cbe34..c50752cb 100644
--- a/src/views/components/markdown.vue
+++ b/src/views/components/markdown.vue
@@ -11,6 +11,7 @@
 
 <script>
 import MdEditor from '@/components/MarkdownEditor'
+
 export default {
   components: { MdEditor },
   data() {
diff --git a/src/views/components/mixin.vue b/src/views/components/mixin.vue
index 8a0d158d..f78ab1e0 100644
--- a/src/views/components/mixin.vue
+++ b/src/views/components/mixin.vue
@@ -24,7 +24,7 @@
 <script>
 import MdInput from '@/components/MDinput'
 import PanThumb from '@/components/PanThumb'
-import waves from '@/directive/waves.js'// 水波纹指令
+import waves from '@/directive/waves.js' // 水波纹指令
 
 export default {
   components: { MdInput, PanThumb },
diff --git a/src/views/components/tinymce.vue b/src/views/components/tinymce.vue
index cba85e1d..441b6b30 100644
--- a/src/views/components/tinymce.vue
+++ b/src/views/components/tinymce.vue
@@ -2,7 +2,7 @@
   <div class="components-container">
     <code>公司做的后台主要是一个cms系统,公司也是以自媒体为核心的,所以富文本是后台很核心的功能。在选择富文本的过程中也走了不少的弯路,市面上常见的富文本都基本用过了,最终选择了Tinymce<a target='_blank' href='https://segmentfault.com/a/1190000009762198#articleHeader13'> 相关文章 </a> <a target='_blank' href='https://www.tinymce.com/'> 官网 </a></code>
     <div>
-      <Tinymce :height=200 ref="editor" v-model="content"></Tinymce>
+      <tinymce :height=200 ref="editor" v-model="content"></tinymce>
     </div>
     <div class='editor-content' v-html='content'></div>
   </div>
diff --git a/src/views/dashboard/editor/barChart.vue b/src/views/dashboard/admin/barChart.vue
similarity index 100%
rename from src/views/dashboard/editor/barChart.vue
rename to src/views/dashboard/admin/barChart.vue
diff --git a/src/views/dashboard/admin/index.vue b/src/views/dashboard/admin/index.vue
new file mode 100644
index 00000000..9517c2a4
--- /dev/null
+++ b/src/views/dashboard/admin/index.vue
@@ -0,0 +1,131 @@
+<template>
+	<div class="dashboard-editor-container">
+		<github></github>
+		<el-row class="btn-group">
+			<el-col :span="4" class='text-center'>
+				<router-link class="pan-btn blue-btn" to="/components/index">Components</router-link>
+			</el-col>
+			<el-col :span="4" class='text-center'>
+				<router-link class="pan-btn light-blue-btn" to="/charts/index">Charts</router-link>
+			</el-col>
+			<el-col :span="4" class='text-center'>
+				<router-link class="pan-btn pink-btn" to="/excel/download">Excel</router-link>
+			</el-col>
+			<el-col :span="4" class='text-center'>
+				<router-link class="pan-btn green-btn" to="/example/table/table">Table</router-link>
+			</el-col>
+			<el-col :span="4" class='text-center'>
+				<router-link class="pan-btn tiffany-btn" to="/example/form/edit">Form</router-link>
+			</el-col>
+			<el-col :span="4" class='text-center'>
+				<router-link class="pan-btn yellow-btn" to="/theme/index">Theme</router-link>
+			</el-col>
+		</el-row>
+
+		<el-row>
+			<el-col :span="6">
+				<el-card class="box-card">
+					<div slot="header" class="box-card-header">
+						<pan-thumb class="panThumb" :image="avatar"> 你的权限:
+							<span class="pan-info-roles" :key='item' v-for="item in roles">{{item}}</span>
+						</pan-thumb>
+					</div>
+					<span class="display_name">{{name}}</span>
+					<div class="info-item">
+						<count-to class="info-item-num" :startVal='0' :endVal='statisticsData.article_count' :duration='3400'></count-to>
+						<span class="info-item-text">文章</span>
+						<icon-svg icon-class="a" class="dashboard-editor-icon"></icon-svg>
+					</div>
+					<div class="info-item">
+						<count-to class="info-item-num" :startVal='0' :endVal='statisticsData.pageviews_count' :duration='3600'></count-to>
+						<span class="info-item-text">浏览量</span>
+						<icon-svg icon-class="b" class="dashboard-editor-icon"></icon-svg>
+					</div>
+				</el-card>
+			</el-col>
+
+			<el-col :span="8">
+				<pie-chart></pie-chart>
+			</el-col>
+
+			<el-col :span="10">
+				<bar-chart></bar-chart>
+			</el-col>
+		</el-row>
+
+		<el-row :gutter="20">
+			<el-col :span="15">
+				<line-chart></line-chart>
+			</el-col>
+			<el-col :span="9">
+				<todo-list></todo-list>
+			</el-col>
+		</el-row>
+
+	</div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import countTo from 'vue-count-to'
+import panThumb from '@/components/PanThumb'
+import todoList from '@/components/TodoList'
+import Github from '@/components/Github'
+import pieChart from './pieChart'
+import barChart from './barChart'
+import lineChart from './lineChart'
+
+export default {
+  name: 'dashboard-admin',
+  components: { countTo, panThumb, todoList, Github, pieChart, lineChart, barChart },
+  data() {
+    return {
+      statisticsData: {
+        article_count: 1024,
+        pageviews_count: 1024
+      }
+    }
+  },
+  computed: {
+    ...mapGetters([
+      'name',
+      'avatar',
+      'roles'
+    ])
+  }
+}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+.dashboard-editor-container {
+    margin: 30px;
+    .btn-group {
+        margin-bottom: 60px;
+    }
+    .box-card-header {
+        position: relative;
+        height: 160px;
+    }
+    .panThumb {
+        z-index: 100;
+        height: 150px;
+        width: 150px;
+        position: absolute;
+        left: 0px;
+        right: 0px;
+        margin: auto;
+    }
+    .display_name{
+        font-size: 30px;
+        display: block;
+    }
+    .info-item{
+        display: inline-block;
+        margin-top: 10px;
+        font-size: 14px;
+        &:last-of-type{
+            margin-left: 15px;
+        }
+    }
+}
+</style>
diff --git a/src/views/dashboard/editor/lineChart.vue b/src/views/dashboard/admin/lineChart.vue
similarity index 97%
rename from src/views/dashboard/editor/lineChart.vue
rename to src/views/dashboard/admin/lineChart.vue
index 2b17f0ba..59aa61e6 100644
--- a/src/views/dashboard/editor/lineChart.vue
+++ b/src/views/dashboard/admin/lineChart.vue
@@ -5,7 +5,7 @@
 <script>
 import echarts from 'echarts'
 require('echarts/theme/macarons') // echarts 主题
-import { debounce } from 'utils'
+import { debounce } from '@/utils'
 
 export default {
   props: {
@@ -42,7 +42,7 @@ export default {
       window.addEventListener('resize', this.__resizeHanlder)
     }
 
-      // 监听侧边栏的变化
+    // 监听侧边栏的变化
     const sidebarElm = document.getElementsByClassName('sidebar-container')[0]
     sidebarElm.addEventListener('transitionend', this.__resizeHanlder)
   },
diff --git a/src/views/dashboard/editor/pieChart.vue b/src/views/dashboard/admin/pieChart.vue
similarity index 100%
rename from src/views/dashboard/editor/pieChart.vue
rename to src/views/dashboard/admin/pieChart.vue
diff --git a/src/views/dashboard/default/index.vue b/src/views/dashboard/default/index.vue
deleted file mode 100644
index f019ee5c..00000000
--- a/src/views/dashboard/default/index.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-<template>
-	<div class="dashboard-editor-container">
-		<div class=" clearfix">
-			<pan-thumb style="float: left" :image="avatar"> 你的权限:
-				<span class="pan-info-roles" v-for="item in roles">{{item}}</span>
-			</pan-thumb>
-			<a href="https://github.com/PanJiaChen/vue-element-admin" target="_blank" class="github-corner" aria-label="View source on Github">
-				<svg width="80" height="80" viewBox="0 0 250 250" style="fill:#4AB7BD; color:#fff; position: absolute; top: 50px; border: 0; right: 0;"
-				  aria-hidden="true">
-					<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
-					<path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
-					  fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path>
-					<path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
-					  fill="currentColor" class="octo-body"></path>
-				</svg>
-			</a>
-			<div class="info-container">
-				<span class="display_name">{{name}}</span>
-				<span style='font-size:20px;padding-top:20px;display:inline-block;'>普通编辑dashboard</span>
-			</div>
-		</div>
-		<div>
-			<img class='emptyGif' :src="emptyGif">
-		</div>
-	</div>
-</template>
-
-<script>
-import { mapGetters } from 'vuex'
-import PanThumb from 'components/PanThumb'
-
-export default {
-  name: 'dashboard-default',
-  components: { PanThumb },
-  data() {
-    return {
-      emptyGif: 'https://wpimg.wallstcn.com/0e03b7da-db9e-4819-ba10-9016ddfdaed3'
-    }
-  },
-  computed: {
-    ...mapGetters([
-      'name',
-      'avatar',
-      'roles'
-    ])
-  }
-}
-</script>
-
-<style rel="stylesheet/scss" lang="scss" scoped>
-	.emptyGif {
-		display: block;
-		width: 45%;
-		margin: 0 auto;
-	}
-
-	.dashboard-editor-container {
-		background-color: #e3e3e3;
-		min-height: 100vh;
-		margin-top: -50px;
-		padding: 100px 60px 0px;
-		.pan-info-roles {
-			font-size: 12px;
-			font-weight: 700;
-			color: #333;
-			display: block;
-		}
-		.info-container {
-			position: relative;
-			margin-left: 190px;
-			height: 150px;
-			line-height: 200px;
-			.display_name {
-				font-size: 48px;
-				line-height: 48px;
-				color: #212121;
-				position: absolute;
-				top: 25px;
-			}
-		}
-	}
-</style>
diff --git a/src/views/dashboard/editor/index.vue b/src/views/dashboard/editor/index.vue
index 8ce93317..07f30ee6 100644
--- a/src/views/dashboard/editor/index.vue
+++ b/src/views/dashboard/editor/index.vue
@@ -1,100 +1,32 @@
 <template>
-	<div class="dashboard-editor-container">
-		<a href="https://github.com/PanJiaChen/vue-element-admin" target="_blank" class="github-corner" aria-label="View source on Github">
-			<svg width="80" height="80" viewBox="0 0 250 250" style="fill:#4AB7BD; color:#fff; position: absolute; top: 50px; border: 0; right: 0;"
-			  aria-hidden="true">
-				<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
-				<path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
-				  fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path>
-				<path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
-				  fill="currentColor" class="octo-body"></path>
-			</svg>
-		</a>
-		<el-row class="btn-group">
-			<el-col :span="4" class='text-center'>
-				<router-link class="pan-btn blue-btn" to="/components/index">Components</router-link>
-			</el-col>
-			<el-col :span="4" class='text-center'>
-				<router-link class="pan-btn light-blue-btn" to="/charts/index">Charts</router-link>
-			</el-col>
-			<el-col :span="4" class='text-center'>
-				<router-link class="pan-btn pink-btn" to="/excel/download">Excel</router-link>
-			</el-col>
-			<el-col :span="4" class='text-center'>
-				<router-link class="pan-btn green-btn" to="/example/table/table">Table</router-link>
-			</el-col>
-			<el-col :span="4" class='text-center'>
-				<router-link class="pan-btn tiffany-btn" to="/example/form/edit">Form</router-link>
-			</el-col>
-			<el-col :span="4" class='text-center'>
-				<router-link class="pan-btn yellow-btn" to="/theme/index">Theme</router-link>
-			</el-col>
-		</el-row>
-
-		<el-row>
-			<el-col :span="6">
-				<el-card class="box-card">
-					<div slot="header" class="box-card-header">
-						<pan-thumb class="panThumb" :image="avatar"> 你的权限:
-							<span class="pan-info-roles" :key='item' v-for="item in roles">{{item}}</span>
-						</pan-thumb>
-					</div>
-					<span class="display_name">{{name}}</span>
-					<div class="info-item">
-						<countTo class="info-item-num" :startVal='0' :endVal='statisticsData.article_count' :duration='3400'></countTo>
-						<span class="info-item-text">文章</span>
-						<icon-svg icon-class="a" class="dashboard-editor-icon"></icon-svg>
-					</div>
-					<div class="info-item">
-						<countTo class="info-item-num" :startVal='0' :endVal='statisticsData.pageviews_count' :duration='3600'></countTo>
-						<span class="info-item-text">浏览量</span>
-						<icon-svg icon-class="b" class="dashboard-editor-icon"></icon-svg>
-					</div>
-				</el-card>
-			</el-col>
-
-			<el-col :span="8">
-				<pie-chart></pie-chart>
-			</el-col>
-
-			<el-col :span="10">
-				<bar-chart></bar-chart>
-			</el-col>
-		</el-row>
-
-		<el-row :gutter="20">
-			<el-col :span="15">
-				<line-chart></line-chart>
-			</el-col>
-			<el-col :span="9">
-				<todo-list></todo-list>
-			</el-col>
-		</el-row>
-
-	</div>
+  <div class="dashboard-editor-container">
+    <div class=" clearfix">
+      <pan-thumb style="float: left" :image="avatar"> 你的权限:
+        <span class="pan-info-roles" :key='item' v-for="item in roles">{{item}}</span>
+      </pan-thumb>
+      <github></github>
+      <div class="info-container">
+        <span class="display_name">{{name}}</span>
+        <span style='font-size:20px;padding-top:20px;display:inline-block;'>普通编辑dashboard</span>
+      </div>
+    </div>
+    <div>
+      <img class='emptyGif' :src="emptyGif">
+    </div>
+  </div>
 </template>
 
 <script>
 import { mapGetters } from 'vuex'
-import panThumb from 'components/PanThumb'
-import pieChart from './pieChart'
-import barChart from './barChart'
-import lineChart from './lineChart'
-import countTo from 'vue-count-to'
-import todoList from 'components/TodoList'
+import PanThumb from '@/components/PanThumb'
+import Github from '@/components/Github'
 
 export default {
   name: 'dashboard-editor',
-  components: { panThumb, countTo, pieChart, lineChart, barChart, todoList },
+  components: { PanThumb, Github },
   data() {
     return {
-      statisticsData: {
-        article_count: 1024,
-        comment_count: 102400,
-        latest_article: [],
-        month_article_count: 28,
-        pageviews_count: 1024
-      }
+      emptyGif: 'https://wpimg.wallstcn.com/0e03b7da-db9e-4819-ba10-9016ddfdaed3'
     }
   },
   computed: {
@@ -108,35 +40,35 @@ export default {
 </script>
 
 <style rel="stylesheet/scss" lang="scss" scoped>
-.dashboard-editor-container {
-    margin: 30px;
-    .btn-group {
-        margin-bottom: 60px;
-    }
-    .box-card-header {
-        position: relative;
-        height: 160px;
-    }
-    .panThumb {
-        z-index: 100;
-        height: 150px;
-        width: 150px;
-        position: absolute;
-        left: 0px;
-        right: 0px;
-        margin: auto;
-    }
-    .display_name{
-        font-size: 30px;
-        display: block;
-    }
-    .info-item{
-        display: inline-block;
-        margin-top: 10px;
-        font-size: 14px;
-        &:last-of-type{
-            margin-left: 15px;
-        }
-    }
-}
+	.emptyGif {
+		display: block;
+		width: 45%;
+		margin: 0 auto;
+	}
+
+	.dashboard-editor-container {
+		background-color: #e3e3e3;
+		min-height: 100vh;
+		margin-top: -50px;
+		padding: 100px 60px 0px;
+		.pan-info-roles {
+			font-size: 12px;
+			font-weight: 700;
+			color: #333;
+			display: block;
+		}
+		.info-container {
+			position: relative;
+			margin-left: 190px;
+			height: 150px;
+			line-height: 200px;
+			.display_name {
+				font-size: 48px;
+				line-height: 48px;
+				color: #212121;
+				position: absolute;
+				top: 25px;
+			}
+		}
+	}
 </style>
diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue
index c62149c1..e347595d 100644
--- a/src/views/dashboard/index.vue
+++ b/src/views/dashboard/index.vue
@@ -1,35 +1,33 @@
 <template>
   <div class="dashboard-container">
-    <component v-bind:is="currentRole"> </component>
+    <component :is="currentRole"></component>
   </div>
 </template>
 
 <script>
 import { mapGetters } from 'vuex'
-import EditorDashboard from './editor/index'
-import DefaultDashboard from './default/index'
+import adminDashboard from './admin/index'
+import editorDashboard from './editor/index'
 
 export default {
   name: 'dashboard',
-  components: { EditorDashboard, DefaultDashboard },
+  components: { adminDashboard, editorDashboard },
   data() {
     return {
-      currentRole: 'EditorDashboard'
+      currentRole: 'adminDashboard'
     }
   },
   computed: {
     ...mapGetters([
-      'name',
-      'avatar',
-      'introduction',
       'roles'
     ])
   },
   created() {
+    console.log(this.roles)
     if (this.roles.indexOf('admin') >= 0) {
       return
     }
-    this.currentRole = 'DefaultDashboard'
+    this.currentRole = 'editorDashboard'
   }
 }
 </script>
diff --git a/src/views/errorPage/401.vue b/src/views/errorPage/401.vue
index 5e265287..888e9df6 100644
--- a/src/views/errorPage/401.vue
+++ b/src/views/errorPage/401.vue
@@ -27,7 +27,7 @@
 </template>
 
 <script>
-import errGif from 'assets/401_images/401.gif'
+import errGif from '@/assets/401_images/401.gif'
 
 export default {
   data() {
diff --git a/src/views/example/form.vue b/src/views/example/form.vue
index 5a0a7850..9a09c846 100644
--- a/src/views/example/form.vue
+++ b/src/views/example/form.vue
@@ -120,15 +120,15 @@
 </template>
 
 <script>
-import Tinymce from 'components/Tinymce'
-import Upload from 'components/Upload/singleImage3'
-import MDinput from 'components/MDinput'
+import Tinymce from '@/components/Tinymce'
+import Upload from '@/components/Upload/singleImage3'
+import MDinput from '@/components/MDinput'
 import Multiselect from 'vue-multiselect'// 使用的一个多选框组件,element-ui的select不能满足所有需求
 import 'vue-multiselect/dist/vue-multiselect.min.css'// 多选框组件css
-import Sticky from 'components/Sticky' // 粘性header组件
-import { validateURL } from 'utils/validate'
-import { getArticle } from 'api/article'
-import { userSearch } from 'api/remoteSearch'
+import Sticky from '@/components/Sticky' // 粘性header组件
+import { validateURL } from '@/utils/validate'
+import { fetchArticle } from '@/api/article'
+import { userSearch } from '@/api/remoteSearch'
 
 export default {
   name: 'articleDetail',
@@ -204,7 +204,7 @@ export default {
   },
   methods: {
     fetchData() {
-      getArticle().then(response => {
+      fetchArticle().then(response => {
         this.postForm = response.data
       }).catch(err => {
         this.fetchSuccess = false
@@ -259,6 +259,7 @@ export default {
   }
 }
 </script>
+
 <style rel="stylesheet/scss" lang="scss" scoped>
   @import "src/styles/mixin.scss";
   .title-prompt{
diff --git a/src/views/example/tab/components/tabPane.vue b/src/views/example/tab/components/tabPane.vue
index cd2f55e1..8a8575e0 100644
--- a/src/views/example/tab/components/tabPane.vue
+++ b/src/views/example/tab/components/tabPane.vue
@@ -1,7 +1,8 @@
 <template>
   <el-table :data="list" border fit highlight-current-row style="width: 100%">
 
-    <el-table-column align="center" label="序号" width="65">
+    <el-table-column align="center" label="序号" width="65"  v-loading="loading"
+    element-loading-text="请给我点时间!">
       <template scope="scope">
         <span>{{scope.row.id}}</span>
       </template>
@@ -15,7 +16,7 @@
 
     <el-table-column min-width="300px" label="标题">
       <template scope="scope">
-        <span class="link-type" @click="handleUpdate(scope.row)">{{scope.row.title}}</span>
+        <span>{{scope.row.title}}</span>
         <el-tag>{{scope.row.type}}</el-tag>
       </template>
     </el-table-column>
@@ -48,7 +49,7 @@
 </template>
 
 <script>
-import { fetchList } from 'api/article_table'
+import { fetchList } from '@/api/article'
 
 export default {
   props: {
@@ -65,7 +66,8 @@ export default {
         limit: 5,
         type: this.type,
         sort: '+id'
-      }
+      },
+      loading: false
     }
   },
   filters: {
@@ -83,9 +85,11 @@ export default {
   },
   methods: {
     getList() {
+      this.loading = true
       this.$emit('create') // for test
       fetchList(this.listQuery).then(response => {
         this.list = response.data.items
+        this.loading = false
       })
     }
   }
diff --git a/src/views/example/table/dragTable.vue b/src/views/example/table/dragTable.vue
index 773ac496..864e2c7b 100644
--- a/src/views/example/table/dragTable.vue
+++ b/src/views/example/table/dragTable.vue
@@ -47,20 +47,20 @@
 
       <el-table-column align="center" label="拖拽" width="95">
         <template scope="scope">
-          <icon-svg class='drag-handler' icon-class="tuozhuai" ></icon-svg>
+          <icon-svg class='drag-handler' icon-class="tuozhuai"></icon-svg>
         </template>
       </el-table-column>
 
     </el-table>
 
-    <div class='show-d'>默认顺序  &nbsp;  {{ olderList}}</div>
+    <div class='show-d'>默认顺序 &nbsp; {{ olderList}}</div>
     <div class='show-d'>拖拽后顺序{{newList}}</div>
 
   </div>
 </template>
 
 <script>
-import { fetchList } from 'api/article_table'
+import { fetchList } from '@/api/article'
 import Sortable from 'sortablejs'
 
 export default {
@@ -79,9 +79,6 @@ export default {
       newList: []
     }
   },
-  created() {
-    this.getList()
-  },
   filters: {
     statusFilter(status) {
       const statusMap = {
@@ -92,6 +89,9 @@ export default {
       return statusMap[status]
     }
   },
+  created() {
+    this.getList()
+  },
   methods: {
     getList() {
       this.listLoading = true
@@ -109,7 +109,6 @@ export default {
     setSort() {
       const el = document.querySelectorAll('.el-table__body-wrapper > table > tbody')[0]
       this.sortable = Sortable.create(el, {
-          // handle: '.drag-handler',
         onEnd: evt => {
           const tempIndex = this.newList.splice(evt.oldIndex, 1)[0]
           this.newList.splice(evt.newIndex, 0, tempIndex)
@@ -120,7 +119,7 @@ export default {
 }
 </script>
 
-<style >
+<style scoped>
 .drag-handler{
   width: 30px;
   height: 30px;
diff --git a/src/views/example/table/dynamictable/fixedThead.vue b/src/views/example/table/dynamictable/fixedThead.vue
index f7b44985..5c088490 100644
--- a/src/views/example/table/dynamictable/fixedThead.vue
+++ b/src/views/example/table/dynamictable/fixedThead.vue
@@ -2,7 +2,7 @@
   <div class="app-container">
 
     <div class="filter-container">
-      <el-checkbox-group v-model="checkboxVal"	>
+      <el-checkbox-group v-model="checkboxVal">
         <el-checkbox label="apple">apple</el-checkbox>
         <el-checkbox label="banana">banana</el-checkbox>
         <el-checkbox label="orange">orange</el-checkbox>
diff --git a/src/views/example/table/dynamictable.vue b/src/views/example/table/dynamictable/index.vue
similarity index 78%
rename from src/views/example/table/dynamictable.vue
rename to src/views/example/table/dynamictable/index.vue
index e3f96093..6182f0e7 100644
--- a/src/views/example/table/dynamictable.vue
+++ b/src/views/example/table/dynamictable/index.vue
@@ -9,8 +9,8 @@
 </template>
 
 <script>
-import fixedThead from './dynamictable/fixedThead'
-import unfixedThead from './dynamictable/unfixedThead'
+import fixedThead from './fixedThead'
+import unfixedThead from './unfixedThead'
 
 export default {
   components: { fixedThead, unfixedThead }
diff --git a/src/views/example/table/inlineEditTable.vue b/src/views/example/table/inlineEditTable.vue
index 858c63fc..fc07a379 100644
--- a/src/views/example/table/inlineEditTable.vue
+++ b/src/views/example/table/inlineEditTable.vue
@@ -42,8 +42,7 @@
 
       <el-table-column align="center" label="编辑" width="120">
         <template scope="scope">
-          <el-button v-show='!scope.row.edit' type="primary" @click='scope.row.edit=true' size="small" icon="edit">编辑</el-button>
-          <el-button v-show='scope.row.edit' type="success" @click='scope.row.edit=false' size="small" icon="check">完成</el-button>
+          <el-button :type="scope.row.edit?'success':'primary'" @click='scope.row.edit=!scope.row.edit' size="small" icon="edit">{{scope.row.edit?'完成':'编辑'}}</el-button>
         </template>
       </el-table-column>
 
@@ -52,7 +51,7 @@
 </template>
 
 <script>
-import { fetchList } from 'api/article_table'
+import { fetchList } from '@/api/article'
 
 export default {
   name: 'inline_edit-table_demo',
@@ -66,9 +65,6 @@ export default {
       }
     }
   },
-  created() {
-    this.getList()
-  },
   filters: {
     statusFilter(status) {
       const statusMap = {
@@ -79,6 +75,9 @@ export default {
       return statusMap[status]
     }
   },
+  created() {
+    this.getList()
+  },
   methods: {
     getList() {
       this.listLoading = true
diff --git a/src/views/example/table/table.vue b/src/views/example/table/table.vue
index 2f35cb68..6cf70554 100644
--- a/src/views/example/table/table.vue
+++ b/src/views/example/table/table.vue
@@ -25,7 +25,7 @@
       <el-checkbox class="filter-item" @change='tableKey=tableKey+1' v-model="showAuditor">显示审核人</el-checkbox>
     </div>
 
-    <el-table :key='tableKey' :data="list" v-loading.body="listLoading" border fit highlight-current-row style="width: 100%">
+    <el-table :key='tableKey' :data="list" v-loading="listLoading" element-loading-text="给我一点时间" border fit highlight-current-row style="width: 100%">
 
       <el-table-column align="center" label="序号" width="65">
         <template scope="scope">
@@ -150,9 +150,9 @@
 </template>
 
 <script>
-import { fetchList, fetchPv } from 'api/article_table'
+import { fetchList, fetchPv } from '@/api/article'
 import waves from '@/directive/waves.js'// 水波纹指令
-import { parseTime } from 'utils'
+import { parseTime } from '@/utils'
 
 const calendarTypeOptions = [
       { key: 'CN', display_name: '中国' },
@@ -161,7 +161,7 @@ const calendarTypeOptions = [
       { key: 'EU', display_name: '欧元区' }
 ]
 
-  // arr to obj
+// arr to obj
 const calendarTypeKeyValue = calendarTypeOptions.reduce((acc, cur) => {
   acc[cur.key] = cur.display_name
   return acc
@@ -210,9 +210,6 @@ export default {
       tableKey: 0
     }
   },
-  created() {
-    this.getList()
-  },
   filters: {
     statusFilter(status) {
       const statusMap = {
@@ -226,6 +223,9 @@ export default {
       return calendarTypeKeyValue[type]
     }
   },
+  created() {
+    this.getList()
+  },
   methods: {
     getList() {
       this.listLoading = true
diff --git a/src/views/excel/index.vue b/src/views/excel/index.vue
index cab49c9c..20e55ff1 100644
--- a/src/views/excel/index.vue
+++ b/src/views/excel/index.vue
@@ -12,17 +12,17 @@
           {{scope.row.title}}
         </template>
       </el-table-column>
-      <el-table-column label="作者" width="110">
+      <el-table-column label="作者" width="95" align="center">
         <template scope="scope">
-          <span>{{scope.row.author}}</span>
+          <el-tag>{{scope.row.author}}</el-tag>
         </template>
       </el-table-column>
-      <el-table-column label="阅读数" width="105" align="center">
+      <el-table-column label="阅读数" width="115" align="center">
         <template scope="scope">
           {{scope.row.pageviews}}
         </template>
       </el-table-column>
-      <el-table-column align="center" prop="created_at" label="发布时间" width="200">
+      <el-table-column align="center" prop="created_at" label="发布时间" width="220">
         <template scope="scope">
           <i class="el-icon-time"></i>
           <span>{{scope.row.display_time}}</span>
@@ -33,7 +33,7 @@
 </template>
 
 <script>
-import { getList } from 'api/article'
+import { fetchList } from '@/api/article'
 
 export default {
   data() {
@@ -49,8 +49,8 @@ export default {
   methods: {
     fetchData() {
       this.listLoading = true
-      getList().then(response => {
-        this.list = response.data
+      fetchList().then(response => {
+        this.list = response.data.items
         this.listLoading = false
       })
     },
diff --git a/src/views/excel/selectExcel.vue b/src/views/excel/selectExcel.vue
index e8a6b3f0..61a67d03 100644
--- a/src/views/excel/selectExcel.vue
+++ b/src/views/excel/selectExcel.vue
@@ -14,17 +14,17 @@
           {{scope.row.title}}
         </template>
       </el-table-column>
-      <el-table-column label="作者" width="110">
+      <el-table-column label="作者" width="95" align="center">
         <template scope="scope">
-          <span>{{scope.row.author}}</span>
+          <el-tag>{{scope.row.author}}</el-tag>
         </template>
       </el-table-column>
-      <el-table-column label="阅读数" width="105" align="center">
+      <el-table-column label="阅读数" width="115" align="center">
         <template scope="scope">
           {{scope.row.pageviews}}
         </template>
       </el-table-column>
-      <el-table-column align="center" prop="created_at" label="发布时间" width="200">
+      <el-table-column align="center" prop="created_at" label="发布时间" width="220">
         <template scope="scope">
           <i class="el-icon-time"></i>
           <span>{{scope.row.display_time}}</span>
@@ -35,7 +35,7 @@
 </template>
 
 <script>
-import { getList } from 'api/article'
+import { fetchList } from '@/api/article'
 
 export default {
   data() {
@@ -52,8 +52,8 @@ export default {
   methods: {
     fetchData() {
       this.listLoading = true
-      getList(this.listQuery).then(response => {
-        this.list = response.data
+      fetchList(this.listQuery).then(response => {
+        this.list = response.data.items
         this.listLoading = false
       })
     },
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index e05e7b3f..1adbc394 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -37,7 +37,7 @@
 </template>
 
 <script>
-import { isvalidUsername } from 'utils/validate'
+import { isvalidUsername } from '@/utils/validate'
 import socialSign from './socialsignin'
 
 export default {
diff --git a/src/views/login/socialsignin.vue b/src/views/login/socialsignin.vue
index 22b7c599..71b9d60a 100644
--- a/src/views/login/socialsignin.vue
+++ b/src/views/login/socialsignin.vue
@@ -10,7 +10,7 @@
 </template>
 
 <script>
-import openWindow from 'utils/openWindow'
+import openWindow from '@/utils/openWindow'
 
 export default {
   name: 'social-signin',
diff --git a/src/views/qiniu/upload.vue b/src/views/qiniu/upload.vue
index b5554969..5f05789b 100644
--- a/src/views/qiniu/upload.vue
+++ b/src/views/qiniu/upload.vue
@@ -7,8 +7,9 @@
 
 
 <script>
-import { getToken } from 'api/qiniu' // 获取七牛token 后端通过Access Key,Secret Key,bucket等生成token
-    // 七牛官方sdk https://developer.qiniu.com/sdk#official-sdk
+import { getToken } from '@/api/qiniu'
+// 获取七牛token 后端通过Access Key,Secret Key,bucket等生成token
+// 七牛官方sdk https://developer.qiniu.com/sdk#official-sdk
 
 export default{
   data() {
diff --git a/src/views/theme/index.vue b/src/views/theme/index.vue
index 9fe5d683..4fe9fc1f 100644
--- a/src/views/theme/index.vue
+++ b/src/views/theme/index.vue
@@ -44,7 +44,7 @@
 
 
 <script>
-import { toggleClass } from 'utils'
+import { toggleClass } from '@/utils'
 import '@/assets/custom-theme/index.css' // 换肤版本element-ui css
 
 export default {
-- 
GitLab