<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Vue中Element-UI構建管理后臺代碼分享

        來源:懂視網 責編:小采 時間:2020-11-27 20:03:03
        文檔

        Vue中Element-UI構建管理后臺代碼分享

        Vue中Element-UI構建管理后臺代碼分享:本文主要和大家分享Vue中Elememt-UI構建管理后臺代碼,希望能幫助到大家。安裝我使用的是 vue-cli 初始化項目,命令如下: npm i -g vue-cli mkdir my-project && cd my-project vue init webpack修改 package.js
        推薦度:
        導讀Vue中Element-UI構建管理后臺代碼分享:本文主要和大家分享Vue中Elememt-UI構建管理后臺代碼,希望能幫助到大家。安裝我使用的是 vue-cli 初始化項目,命令如下: npm i -g vue-cli mkdir my-project && cd my-project vue init webpack修改 package.js

        本文主要和大家分享Vue中Elememt-UI構建管理后臺代碼,希望能幫助到大家。

        安裝

        我使用的是 vue-cli 初始化項目,命令如下:

         npm i -g vue-cli
        mkdir my-project && cd my-project
        vue init webpack

        修改 package.json 文件:

         ...
        "dependencies": {
         "vue": "^2.5.2",
         "vue-router": "^3.0.1",
         "element-ui": "^2.0.7", // element-ui
         "axios": "^0.17.1" // http 請求庫
        }
        ...

        之后執行 npm install 進行安裝依賴,如果安裝速度有點慢的話,可以試一下 cnpm ,具體安裝和用法自行查找。

        簡單介紹下項目的目錄結構:

        ├─build // 構建配置
        ├─config // 配置文件
        ├─src // vue 開發源文件目錄
        ├────assets // css/js 文件
        ├────components // vue 組件
        ├────router // 路由
        ├────App.vue // 啟動組件
        ├────main.js // 入口文件
        ├─static // 靜態文件目錄
        ├─test // 測試目錄

        之后在項目根目錄執行 npm run dev ,打開瀏覽器輸入 http://localhost:8080 就可以查看了。

        目標

        登錄頁面,登錄,退出功能

        首頁,調用接口渲染列表

        路由

        路由使用的是 vue-router,具體用法可參考 官方文檔
        我們這里需要兩個路由:
        src/router/index.js

         import Vue from 'vue'
        import Router from 'vue-router'
        import Index from '@/components/Index'
        import Login from '@/components/Login'
        Vue.use(Router)
        const routers = new Router({
         routes: [
         {
         path: '/index',
         name: 'index',
         component: Index
         },
         {
         path: '/login',
         name: 'login',
         component: Login
         }
         ]
        })
        routers.beforeEach((to, from, next) => {
         if (to.name !== 'login' && !localStorage.getItem('token')) {
         next({path: 'login'})
         } else {
         next()
         }
        })
        export default routers

        登錄頁面

        src/components/Login.vue

         <template>
         <p class="login">
         <el-form name="aa" :inline="true" label-position="right" label-width="80px">
         <el-form-item label="用戶名">
         <el-input v-model="user.name"></el-input>
         </el-form-item>
         <el-form-item label="密碼">
         <el-input type="password" v-model="user.password"></el-input>
         </el-form-item>
         <el-form-item label=" ">
         <el-button type="primary" @click="login()">登錄</el-button>
         </el-form-item>
         </el-form>
         </p>
        </template>
        <script>
        import $http from '@/api/'
        import config from '@/config'
        export default {
         data () {
         return {
         user: {
         name: '',
         password: ''
         }
         }
         },
         mounted: function () {
         var token = localStorage.getItem('token')
         if (token) {
         this.$router.push('/index')
         }
         },
         methods: {
         login: function () {
         var data = {
         grant_type: 'password',
         client_id: config.oauth_client_id,
         client_secret: config.oauth_secret,
         username: this.user.name,
         password: this.user.password
         }
         var _this = this
         $http.login(data).then(function (res) {
         if (res.status === 200) {
         $http.setToken(res.data.access_token)
         _this.$message({
         showClose: false,
         message: '登錄成功',
         type: 'success'
         })
         _this.$router.push('/index')
         } else {
         _this.$message({
         showClose: false,
         message: '登錄失敗',
         type: 'error'
         })
         }
         })
         }
         }
        }
        </script>
        <style>
        .login{
         width: 300px;
         margin: 100px auto;
         background-color: #ffffff;
         padding: 30px 30px 5px;
         border-radius: 5px;
        }
        </style>

        首頁

        src/components/Index.vue

         <template>
         <p class="main">
         <el-table
         stripe
         v-loading="loading"
         element-loading-background="#dddddd"
         :data="tableData"
         style="width: 100%">
         <el-table-column
         prop="id"
         label="ID">
         </el-table-column>
         <el-table-column
         prop="name"
         label="名稱">
         </el-table-column>
         </el-table>
         <el-pagination
         background
         layout="prev, pager, next"
         :total="total"
         class="page"
         @current-change="pageList">
         </el-pagination>
         </p>
        </template>
        <script>
        import $http from '@/api/'
        export default {
         data () {
         return {
         tableData: [],
         total: 0,
         loading: false
         }
         },
         mounted: function () {
         this.getList()
         },
         methods: {
         pageList: function (page) {
         this.search.page = page
         this.getList()
         },
         getList: function () {
         var _this = this
         _this.loading = true
         $http.index().then(function (res) {
         if (res.status === 200) {
         _this.tableData = res.data.data.lists
         _this.total = res.data.data.total
         }
         _this.loading = false
         })
         }
         }
        }
        </script>

        App

        src/App.vue

         <template>
         <p id="app">
         <el-row v-if="token">
         <menus class="left-menu">
         <h3 class="logo"><a href="/">Admin</a></h3>
         </menus>
         <el-col :span="21" :gutter="0" :offset="3">
         <el-breadcrumb separator-class="el-icon-arrow-right" class="breadcrumb">
         <el-breadcrumb-item :to="{ path: '/' }">首頁</el-breadcrumb-item>
         <el-breadcrumb-item class="active">列表</el-breadcrumb-item>
         </el-breadcrumb>
         <el-dropdown @command="operate" class="header">
         <img src="/static/image/head.jpg" />
         <el-dropdown-menu slot="dropdown" :click="true">
         <el-dropdown-item command="/user/profile">基本資料</el-dropdown-item>
         <el-dropdown-item command="/logout">安全退出</el-dropdown-item>
         </el-dropdown-menu>
         </el-dropdown>
         <router-view/>
         </el-col>
         <el-col :span="21" :gutter="0" :offset="3" class="footer">Copyright ? 2017 Flyerboy All Rights Reserved</el-col> 
         </el-row>
         <router-view v-if="!token" />
         </p>
        </template>
        <script>
        import Menus from '@/components/Menu'
        export default {
         name: 'App',
         data () {
         return {
         token: false
         }
         },
         mounted: function () {
         this.token = localStorage.getItem('token') ? true : false
         },
         watch: {
         '$route.path': function ($newVal, $oldVal) {
         this.token = localStorage.getItem('token') ? true : false
         }
         },
         methods: {
         operate: function (command) {
         if (command === '/logout') {
         localStorage.removeItem('token')
         this.$router.push('login')
         } else {
         this.$router.push(command)
         }
         }
         },
         components: {
         Menus
         }
        }
        </script>
        <style>
        body{
         margin: 0;
         padding: 0;
         background-color: #eeeeee;
        }
        .header{
         position: absolute;
         top: 5px;
         right: 20px;
        }
        .header img{
         width: 38px;
         height: 38px;
         border-radius: 20px;
         border: 1px solid #aaaaaa;
        }
        #app {
         font-family: 'Avenir', Helvetica, Arial, sans-serif;
         -webkit-font-smoothing: antialiased;
         -moz-osx-font-smoothing: grayscale;
        }
        .main{
         padding: 20px;
         min-height: 600px;
         margin-bottom: 20px;
        }
        .main table{
         background: #ffffff;
        }
        .left-menu{
         background-color: #33374B;
        }
        .logo{
         padding: 20px 0 15px 20px;
         font-size: 24px;
         border-bottom: 2px solid #3a8ee6;
        }
        .logo a{
         color: #ffffff;
         text-decoration: none;
        }
        .left-menu .el-menu{
         border-right: 0;
        }
        .breadcrumb{
         line-height: 40px;
         padding: 5px 20px;
         background: #ffffff;
        }
        .breadcrumb span{
         color: #069;
         font-weight: normal;
        }
        .breadcrumb .active{
         color: #aaaaaa;
        }
        .page{
         margin: 20px 0 0;
         margin-left: -10px;
        }
        .page .el-pager li.number{
         background-color: #ffffff;
        }
        .el-submenu .el-menu-item{
         padding-left: 60px !important;
        }
        .footer{
         position: fixed;
         bottom: 0;
         right: 0;
         font-size: 12px;
         color: #888888;
         padding: 15px 20px;
         text-align: center;
         background-color: #ffffff;
         margin-top: 40px;
        }
        </style>

        調用 API

        src/api/index.js

         import axios from 'axios'
        axios.defaults.baseURL = 'http://localhost:8000/'
        axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
        axios.defaults.headers.common['Authorization'] = 'Bearer ' + localStorage.getItem('token')
        export default {
         setToken: function (token) {
         localStorage.setItem('token', token)
         axios.defaults.headers.common['Authorization'] = 'Bearer ' + token
         },
         login: function (param) {
         return axios.post('oauth/token', param)
         },
         index: function (params) {
         return axios.get('api/user/list', {
         params: params
         })
         }
        }

        config

        src/config.js 這里配置登錄 oauth 需要的 client_id 和 secret

         export default {
         oauth_client_id: 2,
         oauth_secret: ''
        }

        main.js

        src/main.js

         import Vue from 'vue'
        import App from './App'
        import router from './router'
        import ElementUI from 'element-ui'
        import 'element-ui/lib/theme-chalk/index.css'
        Vue.use(ElementUI)
        Vue.config.productionTip = false
        new Vue({
         el: '#app',
         router,
         components: { App },
         template: '<App/>'
        })

        api 接口

        主要用到兩個接口,一個是 api/oauth/token 登錄獲取 token 接口,一個獲取列表 api/user/list。
        第一個接口是用到 laravel oauth,第二個接口直接是一個簡單的查詢用戶列表接口,詳細講會在下一篇文章中講述。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Vue中Element-UI構建管理后臺代碼分享

        Vue中Element-UI構建管理后臺代碼分享:本文主要和大家分享Vue中Elememt-UI構建管理后臺代碼,希望能幫助到大家。安裝我使用的是 vue-cli 初始化項目,命令如下: npm i -g vue-cli mkdir my-project && cd my-project vue init webpack修改 package.js
        推薦度:
        標簽: VUE 代碼 后臺
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲人成人网站18禁| 中文字幕亚洲免费无线观看日本| 亚洲乱码卡三乱码新区| 亚洲综合无码精品一区二区三区| 看成年女人免费午夜视频| 成人免费看片又大又黄| jlzzjlzz亚洲jzjzjz| 亚洲狠狠婷婷综合久久| 在线观看免费大黄网站| 国产V亚洲V天堂无码久久久| 亚洲成年网站在线观看| 一级毛片aaaaaa视频免费看| 4hu四虎最新免费地址| 亚洲成a人片在线观看久| 特级做a爰片毛片免费看| 精品香蕉在线观看免费| 亚洲天堂福利视频| a毛片免费观看完整| 亚洲高清国产AV拍精品青青草原 | 亚洲高清一区二区三区电影| 成人免费视频观看无遮挡| 国产成人综合久久精品亚洲| 2048亚洲精品国产| 国产成人精品日本亚洲语音 | 亚洲人成人无码网www电影首页| A级毛片高清免费视频在线播放| 在线免费观看韩国a视频| 免费大片黄在线观看| 成年女人喷潮毛片免费播放| 色欲aⅴ亚洲情无码AV| 亚洲色欲久久久综合网| 95老司机免费福利| 亚洲乱码无人区卡1卡2卡3| 一本色道久久88亚洲综合 | 久久精品国产大片免费观看| 亚洲成AV人片久久| 国产成人免费福利网站| 中文字幕一区二区免费| 亚洲w码欧洲s码免费| 亚洲欧洲久久久精品| 永久免费无码网站在线观看个|