花裤衩 преди 6 години
родител
ревизия
5d769533ac

+ 12 - 14
.eslintrc.js

@@ -1,7 +1,7 @@
1 1
 module.exports = {
2 2
   root: true,
3
-  parser: 'babel-eslint',
4 3
   parserOptions: {
4
+    parser: 'babel-eslint',
5 5
     sourceType: 'module'
6 6
   },
7 7
   env: {
@@ -9,22 +9,19 @@ module.exports = {
9 9
     node: true,
10 10
     es6: true,
11 11
   },
12
-  extends: 'eslint:recommended',
13
-  // required to lint *.vue files
14
-  plugins: [
15
-    'html'
16
-  ],
17
-  // check if imports actually resolve
18
-  'settings': {
19
-    'import/resolver': {
20
-      'webpack': {
21
-        'config': 'build/webpack.base.conf.js'
22
-      }
23
-    }
24
-  },
12
+  extends: ['plugin:vue/recommended', 'eslint:recommended'],
13
+
25 14
   // add your custom rules here
26 15
   //it is base on https://github.com/vuejs/eslint-config-vue
27 16
   rules: {
17
+    "vue/max-attributes-per-line": [2, {
18
+      "singleline": 10,
19
+      "multiline": {
20
+        "max": 1,
21
+        "allowFirstLine": false
22
+      }
23
+    }],
24
+    "vue/name-property-casing": ["error", "PascalCase"],
28 25
     'accessor-pairs': 2,
29 26
     'arrow-spacing': [2, {
30 27
       'before': true,
@@ -196,3 +193,4 @@ module.exports = {
196 193
     'array-bracket-spacing': [2, 'never']
197 194
   }
198 195
 }
196
+

+ 1 - 1
package.json

@@ -39,7 +39,7 @@
39 39
     "eslint": "4.19.1",
40 40
     "eslint-friendly-formatter": "4.0.1",
41 41
     "eslint-loader": "2.0.0",
42
-    "eslint-plugin-html": "4.0.5",
42
+    "eslint-plugin-vue": "4.7.1",
43 43
     "eventsource-polyfill": "0.9.6",
44 44
     "file-loader": "1.1.11",
45 45
     "friendly-errors-webpack-plugin": "1.7.0",

+ 1 - 1
src/App.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div id="app">
3
-    <router-view></router-view>
3
+    <router-view/>
4 4
   </div>
5 5
 </template>
6 6
 

+ 6 - 6
src/components/Breadcrumb/index.vue

@@ -1,9 +1,9 @@
1 1
 <template>
2 2
   <el-breadcrumb class="app-breadcrumb" separator="/">
3 3
     <transition-group name="breadcrumb">
4
-      <el-breadcrumb-item v-for="(item,index)  in levelList" :key="item.path" v-if="item.meta.title">
5
-        <span v-if="item.redirect==='noredirect'||index==levelList.length-1" class="no-redirect">{{item.meta.title}}</span>
6
-        <router-link v-else :to="item.redirect||item.path">{{item.meta.title}}</router-link>
4
+      <el-breadcrumb-item v-for="(item,index) in levelList" v-if="item.meta.title" :key="item.path">
5
+        <span v-if="item.redirect==='noredirect'||index==levelList.length-1" class="no-redirect">{{ item.meta.title }}</span>
6
+        <router-link v-else :to="item.redirect||item.path">{{ item.meta.title }}</router-link>
7 7
       </el-breadcrumb-item>
8 8
     </transition-group>
9 9
   </el-breadcrumb>
@@ -11,9 +11,6 @@
11 11
 
12 12
 <script>
13 13
 export default {
14
-  created() {
15
-    this.getBreadcrumb()
16
-  },
17 14
   data() {
18 15
     return {
19 16
       levelList: null
@@ -24,6 +21,9 @@ export default {
24 21
       this.getBreadcrumb()
25 22
     }
26 23
   },
24
+  created() {
25
+    this.getBreadcrumb()
26
+  },
27 27
   methods: {
28 28
     getBreadcrumb() {
29 29
       let matched = this.$route.matched.filter(item => item.name)

+ 23 - 9
src/components/Hamburger/index.vue

@@ -1,20 +1,34 @@
1 1
 <template>
2 2
   <div>
3
-    <svg t="1492500959545" @click="toggleClick" class="hamburger" :class="{'is-active':isActive}" style="" viewBox="0 0 1024 1024"
4
-      version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1691" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64">
5
-      <path d="M966.8023 568.849776 57.196677 568.849776c-31.397081 0-56.850799-25.452695-56.850799-56.850799l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 543.397081 998.200404 568.849776 966.8023 568.849776z"
6
-        p-id="1692"></path>
7
-      <path d="M966.8023 881.527125 57.196677 881.527125c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 856.07443 998.200404 881.527125 966.8023 881.527125z"
8
-        p-id="1693"></path>
9
-      <path d="M966.8023 256.17345 57.196677 256.17345c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.850799 56.850799-56.850799l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.850799l0 0C1023.653099 230.720755 998.200404 256.17345 966.8023 256.17345z"
10
-        p-id="1694"></path>
3
+    <svg
4
+      :class="{'is-active':isActive}"
5
+      t="1492500959545"
6
+      class="hamburger"
7
+      style=""
8
+      viewBox="0 0 1024 1024"
9
+      version="1.1"
10
+      xmlns="http://www.w3.org/2000/svg"
11
+      p-id="1691"
12
+      xmlns:xlink="http://www.w3.org/1999/xlink"
13
+      width="64"
14
+      height="64"
15
+      @click="toggleClick">
16
+      <path
17
+        d="M966.8023 568.849776 57.196677 568.849776c-31.397081 0-56.850799-25.452695-56.850799-56.850799l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 543.397081 998.200404 568.849776 966.8023 568.849776z"
18
+        p-id="1692" />
19
+      <path
20
+        d="M966.8023 881.527125 57.196677 881.527125c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 856.07443 998.200404 881.527125 966.8023 881.527125z"
21
+        p-id="1693" />
22
+      <path
23
+        d="M966.8023 256.17345 57.196677 256.17345c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.850799 56.850799-56.850799l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.850799l0 0C1023.653099 230.720755 998.200404 256.17345 966.8023 256.17345z"
24
+        p-id="1694" />
11 25
     </svg>
12 26
   </div>
13 27
 </template>
14 28
 
15 29
 <script>
16 30
 export default {
17
-  name: 'hamburger',
31
+  name: 'Hamburger',
18 32
   props: {
19 33
     isActive: {
20 34
       type: Boolean,

+ 4 - 3
src/components/SvgIcon/index.vue

@@ -1,19 +1,20 @@
1 1
 <template>
2 2
   <svg :class="svgClass" aria-hidden="true">
3
-    <use :xlink:href="iconName"></use>
3
+    <use :xlink:href="iconName"/>
4 4
   </svg>
5 5
 </template>
6 6
 
7 7
 <script>
8 8
 export default {
9
-  name: 'svg-icon',
9
+  name: 'SvgIcon',
10 10
   props: {
11 11
     iconClass: {
12 12
       type: String,
13 13
       required: true
14 14
     },
15 15
     className: {
16
-      type: String
16
+      type: String,
17
+      default: ''
17 18
     }
18 19
   },
19 20
   computed: {

+ 7 - 8
src/router/index.js

@@ -76,7 +76,7 @@ export const constantRouterMap = [
76 76
     path: '/nested',
77 77
     component: Layout,
78 78
     redirect: '/nested/menu1',
79
-    name: 'nested',
79
+    name: 'Nested',
80 80
     meta: {
81 81
       title: 'nested',
82 82
       icon: 'nested'
@@ -85,31 +85,31 @@ export const constantRouterMap = [
85 85
       {
86 86
         path: 'menu1',
87 87
         component: () => import('@/views/nested/menu1/index'), // Parent router-view
88
-        name: 'menu1',
88
+        name: 'Menu1',
89 89
         meta: { title: 'menu1' },
90 90
         children: [
91 91
           {
92 92
             path: 'menu1-1',
93 93
             component: () => import('@/views/nested/menu1/menu1-1'),
94
-            name: 'menu1-1',
94
+            name: 'Menu1-1',
95 95
             meta: { title: 'menu1-1' }
96 96
           },
97 97
           {
98 98
             path: 'menu1-2',
99 99
             component: () => import('@/views/nested/menu1/menu1-2'),
100
-            name: 'menu1-2',
100
+            name: 'Menu1-2',
101 101
             meta: { title: 'menu1-2' },
102 102
             children: [
103 103
               {
104 104
                 path: 'menu1-2-1',
105 105
                 component: () => import('@/views/nested/menu1/menu1-2/menu1-2-1'),
106
-                name: 'menu1-2-1',
106
+                name: 'Menu1-2-1',
107 107
                 meta: { title: 'menu1-2-1' }
108 108
               },
109 109
               {
110 110
                 path: 'menu1-2-2',
111 111
                 component: () => import('@/views/nested/menu1/menu1-2/menu1-2-2'),
112
-                name: 'menu1-2-2',
112
+                name: 'Menu1-2-2',
113 113
                 meta: { title: 'menu1-2-2' }
114 114
               }
115 115
             ]
@@ -117,7 +117,7 @@ export const constantRouterMap = [
117 117
           {
118 118
             path: 'menu1-3',
119 119
             component: () => import('@/views/nested/menu1/menu1-3'),
120
-            name: 'menu1-3',
120
+            name: 'Menu1-3',
121 121
             meta: { title: 'menu1-3' }
122 122
           }
123 123
         ]
@@ -138,4 +138,3 @@ export default new Router({
138 138
   scrollBehavior: () => ({ y: 0 }),
139 139
   routes: constantRouterMap
140 140
 })
141
-

+ 2 - 2
src/views/404.vue

@@ -10,7 +10,7 @@
10 10
       <div class="bullshit">
11 11
         <div class="bullshit__oops">OOPS!</div>
12 12
         <div class="bullshit__info">版权所有
13
-          <a class='link-type' href='https://wallstreetcn.com' target='_blank'>华尔街见闻</a>
13
+          <a class="link-type" href="https://wallstreetcn.com" target="_blank">华尔街见闻</a>
14 14
         </div>
15 15
         <div class="bullshit__headline">{{ message }}</div>
16 16
         <div class="bullshit__info">请检查您输入的网址是否正确,请点击以下按钮返回主页或者发送错误报告</div>
@@ -23,7 +23,7 @@
23 23
 <script>
24 24
 
25 25
 export default {
26
-  name: 'page404',
26
+  name: 'Page404',
27 27
   computed: {
28 28
     message() {
29 29
       return '网管说这个页面你不能进......'

+ 3 - 3
src/views/dashboard/index.vue

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <div class="dashboard-container">
3
-    <div class="dashboard-text">name:{{name}}</div>
4
-    <div class="dashboard-text">roles:<span v-for='role in roles' :key='role'>{{role}}</span></div>
3
+    <div class="dashboard-text">name:{{ name }}</div>
4
+    <div class="dashboard-text">roles:<span v-for="role in roles" :key="role">{{ role }}</span></div>
5 5
   </div>
6 6
 </template>
7 7
 
@@ -9,7 +9,7 @@
9 9
 import { mapGetters } from 'vuex'
10 10
 
11 11
 export default {
12
-  name: 'dashboard',
12
+  name: 'Dashboard',
13 13
   computed: {
14 14
     ...mapGetters([
15 15
       'name',

+ 14 - 14
src/views/form/index.vue

@@ -2,42 +2,42 @@
2 2
   <div class="app-container">
3 3
     <el-form ref="form" :model="form" label-width="120px">
4 4
       <el-form-item label="Activity name">
5
-        <el-input v-model="form.name"></el-input>
5
+        <el-input v-model="form.name"/>
6 6
       </el-form-item>
7 7
       <el-form-item label="Activity zone">
8 8
         <el-select v-model="form.region" placeholder="please select your zone">
9
-          <el-option label="Zone one" value="shanghai"></el-option>
10
-          <el-option label="Zone two" value="beijing"></el-option>
9
+          <el-option label="Zone one" value="shanghai"/>
10
+          <el-option label="Zone two" value="beijing"/>
11 11
         </el-select>
12 12
       </el-form-item>
13 13
       <el-form-item label="Activity time">
14 14
         <el-col :span="11">
15
-          <el-date-picker type="date" placeholder="Pick a date" v-model="form.date1" style="width: 100%;"></el-date-picker>
15
+          <el-date-picker v-model="form.date1" type="date" placeholder="Pick a date" style="width: 100%;"/>
16 16
         </el-col>
17
-        <el-col class="line" :span="2">-</el-col>
17
+        <el-col :span="2" class="line">-</el-col>
18 18
         <el-col :span="11">
19
-          <el-time-picker type="fixed-time" placeholder="Pick a time" v-model="form.date2" style="width: 100%;"></el-time-picker>
19
+          <el-time-picker v-model="form.date2" type="fixed-time" placeholder="Pick a time" style="width: 100%;"/>
20 20
         </el-col>
21 21
       </el-form-item>
22 22
       <el-form-item label="Instant delivery">
23
-        <el-switch v-model="form.delivery"></el-switch>
23
+        <el-switch v-model="form.delivery"/>
24 24
       </el-form-item>
25 25
       <el-form-item label="Activity type">
26 26
         <el-checkbox-group v-model="form.type">
27
-          <el-checkbox label="Online activities" name="type"></el-checkbox>
28
-          <el-checkbox label="Promotion activities" name="type"></el-checkbox>
29
-          <el-checkbox label="Offline activities" name="type"></el-checkbox>
30
-          <el-checkbox label="Simple brand exposure" name="type"></el-checkbox>
27
+          <el-checkbox label="Online activities" name="type"/>
28
+          <el-checkbox label="Promotion activities" name="type"/>
29
+          <el-checkbox label="Offline activities" name="type"/>
30
+          <el-checkbox label="Simple brand exposure" name="type"/>
31 31
         </el-checkbox-group>
32 32
       </el-form-item>
33 33
       <el-form-item label="Resources">
34 34
         <el-radio-group v-model="form.resource">
35
-          <el-radio label="Sponsor"></el-radio>
36
-          <el-radio label="Venue"></el-radio>
35
+          <el-radio label="Sponsor"/>
36
+          <el-radio label="Venue"/>
37 37
         </el-radio-group>
38 38
       </el-form-item>
39 39
       <el-form-item label="Activity form">
40
-        <el-input type="textarea" v-model="form.desc"></el-input>
40
+        <el-input v-model="form.desc" type="textarea"/>
41 41
       </el-form-item>
42 42
       <el-form-item>
43 43
         <el-button type="primary" @click="onSubmit">Create</el-button>

+ 6 - 6
src/views/layout/Layout.vue

@@ -1,10 +1,10 @@
1 1
 <template>
2
-  <div class="app-wrapper" :class="classObj">
3
-    <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"></div>
4
-    <sidebar class="sidebar-container"></sidebar>
2
+  <div :class="classObj" class="app-wrapper">
3
+    <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"/>
4
+    <sidebar class="sidebar-container"/>
5 5
     <div class="main-container">
6
-      <navbar></navbar>
7
-      <app-main></app-main>
6
+      <navbar/>
7
+      <app-main/>
8 8
     </div>
9 9
   </div>
10 10
 </template>
@@ -14,7 +14,7 @@ import { Navbar, Sidebar, AppMain } from './components'
14 14
 import ResizeMixin from './mixin/ResizeHandler'
15 15
 
16 16
 export default {
17
-  name: 'layout',
17
+  name: 'Layout',
18 18
   components: {
19 19
     Navbar,
20 20
     Sidebar,

+ 1 - 1
src/views/layout/components/AppMain.vue

@@ -2,7 +2,7 @@
2 2
   <section class="app-main">
3 3
     <transition name="fade" mode="out-in">
4 4
       <!-- <router-view :key="key"></router-view> -->
5
-      <router-view></router-view>
5
+      <router-view/>
6 6
     </transition>
7 7
   </section>
8 8
 </template>

+ 6 - 6
src/views/layout/components/Navbar.vue

@@ -1,20 +1,20 @@
1 1
 <template>
2 2
   <el-menu class="navbar" mode="horizontal">
3
-    <hamburger class="hamburger-container" :toggleClick="toggleSideBar" :isActive="sidebar.opened"></hamburger>
4
-    <breadcrumb></breadcrumb>
3
+    <hamburger :toggle-click="toggleSideBar" :is-active="sidebar.opened" class="hamburger-container"/>
4
+    <breadcrumb />
5 5
     <el-dropdown class="avatar-container" trigger="click">
6 6
       <div class="avatar-wrapper">
7
-        <img class="user-avatar" :src="avatar+'?imageView2/1/w/80/h/80'">
8
-        <i class="el-icon-caret-bottom"></i>
7
+        <img :src="avatar+'?imageView2/1/w/80/h/80'" class="user-avatar">
8
+        <i class="el-icon-caret-bottom"/>
9 9
       </div>
10
-      <el-dropdown-menu class="user-dropdown" slot="dropdown">
10
+      <el-dropdown-menu slot="dropdown" class="user-dropdown">
11 11
         <router-link class="inlineBlock" to="/">
12 12
           <el-dropdown-item>
13 13
             Home
14 14
           </el-dropdown-item>
15 15
         </router-link>
16 16
         <el-dropdown-item divided>
17
-          <span @click="logout" style="display:block;">LogOut</span>
17
+          <span style="display:block;" @click="logout">LogOut</span>
18 18
         </el-dropdown-item>
19 19
       </el-dropdown-menu>
20 20
     </el-dropdown>

+ 27 - 21
src/views/layout/components/Sidebar/SidebarItem.vue

@@ -1,30 +1,36 @@
1 1
 <template>
2 2
   <div v-if="!item.hidden&&item.children" class="menu-wrapper">
3 3
 
4
-      <router-link v-if="hasOneShowingChild(item.children) && !onlyOneChild.children&&!item.alwaysShow" :to="resolvePath(onlyOneChild.path)">
5
-        <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
6
-          <svg-icon v-if="onlyOneChild.meta&&onlyOneChild.meta.icon" :icon-class="onlyOneChild.meta.icon"></svg-icon>
7
-          <span v-if="onlyOneChild.meta&&onlyOneChild.meta.title" slot="title">{{onlyOneChild.meta.title}}</span>
8
-        </el-menu-item>
9
-      </router-link>
4
+    <router-link v-if="hasOneShowingChild(item.children) && !onlyOneChild.children&&!item.alwaysShow" :to="resolvePath(onlyOneChild.path)">
5
+      <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
6
+        <svg-icon v-if="onlyOneChild.meta&&onlyOneChild.meta.icon" :icon-class="onlyOneChild.meta.icon"/>
7
+        <span v-if="onlyOneChild.meta&&onlyOneChild.meta.title" slot="title">{{ onlyOneChild.meta.title }}</span>
8
+      </el-menu-item>
9
+    </router-link>
10 10
 
11
-      <el-submenu v-else :index="item.name||item.path">
12
-        <template slot="title">
13
-          <svg-icon v-if="item.meta&&item.meta.icon" :icon-class="item.meta.icon"></svg-icon>
14
-          <span v-if="item.meta&&item.meta.title" slot="title">{{item.meta.title}}</span>
15
-        </template>
11
+    <el-submenu v-else :index="item.name||item.path">
12
+      <template slot="title">
13
+        <svg-icon v-if="item.meta&&item.meta.icon" :icon-class="item.meta.icon"/>
14
+        <span v-if="item.meta&&item.meta.title" slot="title">{{ item.meta.title }}</span>
15
+      </template>
16 16
 
17
-        <template v-for="child in item.children" v-if="!child.hidden">
18
-          <sidebar-item :is-nest="true" class="nest-menu" v-if="child.children&&child.children.length>0" :item="child" :key="child.path" :base-path="resolvePath(child.path)"></sidebar-item>
17
+      <template v-for="child in item.children" v-if="!child.hidden">
18
+        <sidebar-item
19
+          v-if="child.children&&child.children.length>0"
20
+          :is-nest="true"
21
+          :item="child"
22
+          :key="child.path"
23
+          :base-path="resolvePath(child.path)"
24
+          class="nest-menu"/>
19 25
 
20
-          <router-link v-else :to="resolvePath(child.path)" :key="child.name">
21
-            <el-menu-item :index="resolvePath(child.path)">
22
-              <svg-icon v-if="child.meta&&child.meta.icon" :icon-class="child.meta.icon"></svg-icon>
23
-              <span v-if="child.meta&&child.meta.title" slot="title">{{child.meta.title}}</span>
24
-            </el-menu-item>
25
-          </router-link>
26
-        </template>
27
-      </el-submenu>
26
+        <router-link v-else :to="resolvePath(child.path)" :key="child.name">
27
+          <el-menu-item :index="resolvePath(child.path)">
28
+            <svg-icon v-if="child.meta&&child.meta.icon" :icon-class="child.meta.icon"/>
29
+            <span v-if="child.meta&&child.meta.title" slot="title">{{ child.meta.title }}</span>
30
+          </el-menu-item>
31
+        </router-link>
32
+      </template>
33
+    </el-submenu>
28 34
 
29 35
   </div>
30 36
 </template>

+ 3 - 3
src/views/layout/components/Sidebar/index.vue

@@ -1,15 +1,15 @@
1 1
 <template>
2
-  <el-scrollbar wrapClass="scrollbar-wrapper">
2
+  <el-scrollbar wrap-class="scrollbar-wrapper">
3 3
     <el-menu
4
-      mode="vertical"
5 4
       :show-timeout="200"
6 5
       :default-active="$route.path"
7 6
       :collapse="isCollapse"
7
+      mode="vertical"
8 8
       background-color="#304156"
9 9
       text-color="#bfcbd9"
10 10
       active-text-color="#409EFF"
11 11
     >
12
-      <sidebar-item v-for="route in routes" :key="route.name" :item="route" :base-path="route.path"></sidebar-item>
12
+      <sidebar-item v-for="route in routes" :key="route.name" :item="route" :base-path="route.path"/>
13 13
     </el-menu>
14 14
   </el-scrollbar>
15 15
 </template>

+ 15 - 8
src/views/login/index.vue

@@ -1,23 +1,30 @@
1 1
 <template>
2 2
   <div class="login-container">
3
-    <el-form class="login-form" autoComplete="on" :model="loginForm" :rules="loginRules" ref="loginForm" label-position="left">
3
+    <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left">
4 4
       <h3 class="title">vue-element-admin</h3>
5 5
       <el-form-item prop="username">
6 6
         <span class="svg-container svg-container_login">
7 7
           <svg-icon icon-class="user" />
8 8
         </span>
9
-        <el-input name="username" type="text" v-model="loginForm.username" autoComplete="on" placeholder="username" />
9
+        <el-input v-model="loginForm.username" name="username" type="text" auto-complete="on" placeholder="username" />
10 10
       </el-form-item>
11 11
       <el-form-item prop="password">
12 12
         <span class="svg-container">
13
-          <svg-icon icon-class="password"></svg-icon>
13
+          <svg-icon icon-class="password" />
14
+        </span>
15
+        <el-input
16
+          :type="pwdType"
17
+          v-model="loginForm.password"
18
+          name="password"
19
+          auto-complete="on"
20
+          placeholder="password"
21
+          @keyup.enter.native="handleLogin" />
22
+        <span class="show-pwd" @click="showPwd">
23
+          <svg-icon icon-class="eye" />
14 24
         </span>
15
-        <el-input name="password" :type="pwdType" @keyup.enter.native="handleLogin" v-model="loginForm.password" autoComplete="on"
16
-          placeholder="password"></el-input>
17
-          <span class="show-pwd" @click="showPwd"><svg-icon icon-class="eye" /></span>
18 25
       </el-form-item>
19 26
       <el-form-item>
20
-        <el-button type="primary" style="width:100%;" :loading="loading" @click.native.prevent="handleLogin">
27
+        <el-button :loading="loading" type="primary" style="width:100%;" @click.native.prevent="handleLogin">
21 28
           Sign in
22 29
         </el-button>
23 30
       </el-form-item>
@@ -33,7 +40,7 @@
33 40
 import { isvalidUsername } from '@/utils/validate'
34 41
 
35 42
 export default {
36
-  name: 'login',
43
+  name: 'Login',
37 44
   data() {
38 45
     const validateUsername = (rule, value, callback) => {
39 46
       if (!isvalidUsername(value)) {

+ 1 - 1
src/views/nested/menu1/index.vue

@@ -1,6 +1,6 @@
1 1
 <template >
2 2
   <div style="padding:30px;">
3
-    <el-alert title="menu 1" :closable="false">
3
+    <el-alert :closable="false" title="menu 1">
4 4
       <router-view />
5 5
     </el-alert>
6 6
   </div>

+ 1 - 1
src/views/nested/menu1/menu1-1/index.vue

@@ -1,6 +1,6 @@
1 1
 <template >
2 2
   <div style="padding:30px;">
3
-    <el-alert title="menu 1-1" type="success" :closable="false">
3
+    <el-alert :closable="false" title="menu 1-1" type="success">
4 4
       <router-view />
5 5
     </el-alert>
6 6
   </div>

+ 1 - 1
src/views/nested/menu1/menu1-2/index.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div style="padding:30px;">
3
-    <el-alert title="menu 1-2" type="success" :closable="false">
3
+    <el-alert :closable="false" title="menu 1-2" type="success">
4 4
       <router-view />
5 5
     </el-alert>
6 6
   </div>

+ 1 - 1
src/views/nested/menu1/menu1-2/menu1-2-1/index.vue

@@ -1,5 +1,5 @@
1 1
 <template functional>
2 2
   <div style="padding:30px;">
3
-    <el-alert title="menu 1-2-1" type="warning" :closable="false" />
3
+    <el-alert :closable="false" title="menu 1-2-1" type="warning" />
4 4
   </div>
5 5
 </template>

+ 1 - 1
src/views/nested/menu1/menu1-2/menu1-2-2/index.vue

@@ -1,5 +1,5 @@
1 1
 <template functional>
2 2
   <div style="padding:30px;">
3
-    <el-alert title="menu 1-2-2" type="warning" :closable="false" />
3
+    <el-alert :closable="false" title="menu 1-2-2" type="warning" />
4 4
   </div>
5 5
 </template>

+ 1 - 1
src/views/nested/menu1/menu1-3/index.vue

@@ -1,5 +1,5 @@
1 1
 <template functional>
2 2
   <div style="padding:30px;">
3
-    <el-alert title="menu 1-3" type="success" :closable="false" />
3
+    <el-alert :closable="false" title="menu 1-3" type="success" />
4 4
   </div>
5 5
 </template>

+ 1 - 1
src/views/nested/menu2/index.vue

@@ -1,5 +1,5 @@
1 1
 <template>
2 2
   <div style="padding:30px;">
3
-    <el-alert title="menu 2" :closable="false" />
3
+    <el-alert :closable="false" title="menu 2" />
4 4
   </div>
5 5
 </template>

+ 21 - 15
src/views/table/index.vue

@@ -1,35 +1,41 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-table :data="list" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
4
-      <el-table-column align="center" label='ID' width="95">
3
+    <el-table
4
+      v-loading="listLoading"
5
+      :data="list"
6
+      element-loading-text="Loading"
7
+      border
8
+      fit
9
+      highlight-current-row>
10
+      <el-table-column align="center" label="ID" width="95">
5 11
         <template slot-scope="scope">
6
-          {{scope.$index}}
12
+          {{ scope.$index }}
7 13
         </template>
8 14
       </el-table-column>
9 15
       <el-table-column label="Title">
10 16
         <template slot-scope="scope">
11
-          {{scope.row.title}}
17
+          {{ scope.row.title }}
12 18
         </template>
13 19
       </el-table-column>
14 20
       <el-table-column label="Author" width="110" align="center">
15 21
         <template slot-scope="scope">
16
-          <span>{{scope.row.author}}</span>
22
+          <span>{{ scope.row.author }}</span>
17 23
         </template>
18 24
       </el-table-column>
19 25
       <el-table-column label="Pageviews" width="110" align="center">
20 26
         <template slot-scope="scope">
21
-          {{scope.row.pageviews}}
27
+          {{ scope.row.pageviews }}
22 28
         </template>
23 29
       </el-table-column>
24 30
       <el-table-column class-name="status-col" label="Status" width="110" align="center">
25 31
         <template slot-scope="scope">
26
-          <el-tag :type="scope.row.status | statusFilter">{{scope.row.status}}</el-tag>
32
+          <el-tag :type="scope.row.status | statusFilter">{{ scope.row.status }}</el-tag>
27 33
         </template>
28 34
       </el-table-column>
29 35
       <el-table-column align="center" prop="created_at" label="Display_time" width="200">
30 36
         <template slot-scope="scope">
31
-          <i class="el-icon-time"></i>
32
-          <span>{{scope.row.display_time}}</span>
37
+          <i class="el-icon-time"/>
38
+          <span>{{ scope.row.display_time }}</span>
33 39
         </template>
34 40
       </el-table-column>
35 41
     </el-table>
@@ -40,12 +46,6 @@
40 46
 import { getList } from '@/api/table'
41 47
 
42 48
 export default {
43
-  data() {
44
-    return {
45
-      list: null,
46
-      listLoading: true
47
-    }
48
-  },
49 49
   filters: {
50 50
     statusFilter(status) {
51 51
       const statusMap = {
@@ -56,6 +56,12 @@ export default {
56 56
       return statusMap[status]
57 57
     }
58 58
   },
59
+  data() {
60
+    return {
61
+      list: null,
62
+      listLoading: true
63
+    }
64
+  },
59 65
   created() {
60 66
     this.fetchData()
61 67
   },

+ 21 - 14
src/views/tree/index.vue

@@ -1,26 +1,21 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-input placeholder="Filter keyword" v-model="filterText" style="margin-bottom:30px;"></el-input>
3
+    <el-input v-model="filterText" placeholder="Filter keyword" style="margin-bottom:30px;" />
4 4
 
5
-    <el-tree class="filter-tree" :data="data2" :props="defaultProps" default-expand-all :filter-node-method="filterNode" ref="tree2"></el-tree>
5
+    <el-tree
6
+      ref="tree2"
7
+      :data="data2"
8
+      :props="defaultProps"
9
+      :filter-node-method="filterNode"
10
+      class="filter-tree"
11
+      default-expand-all
12
+    />
6 13
 
7 14
   </div>
8 15
 </template>
9 16
 
10 17
 <script>
11 18
 export default {
12
-  watch: {
13
-    filterText(val) {
14
-      this.$refs.tree2.filter(val)
15
-    }
16
-  },
17
-
18
-  methods: {
19
-    filterNode(value, data) {
20
-      if (!value) return true
21
-      return data.label.indexOf(value) !== -1
22
-    }
23
-  },
24 19
 
25 20
   data() {
26 21
     return {
@@ -65,6 +60,18 @@ export default {
65 60
         label: 'label'
66 61
       }
67 62
     }
63
+  },
64
+  watch: {
65
+    filterText(val) {
66
+      this.$refs.tree2.filter(val)
67
+    }
68
+  },
69
+
70
+  methods: {
71
+    filterNode(value, data) {
72
+      if (!value) return true
73
+      return data.label.indexOf(value) !== -1
74
+    }
68 75
   }
69 76
 }
70 77
 </script>