這個是一個電商管理系統的前端項目的筆記,這個項目主要包括登陸/退出功能、主頁佈局、用戶管理模塊、權限管理模塊、分類管理模塊、參數管理模塊、商品管理模塊、 訂單管理模塊等功能,我把裏面部分的功能進行了整理,但願對你們有所幫助!css
根據不一樣的應用場景,電商系統通常都提供了PC端、移動APP、移動Web、微信小程序等多種終端訪問方式html
電商後臺管理系統用於管理帳號、商品分類、商品信息、訂單、數據統計等業務功能前端
電商後臺管理系統總體採用先後端分離的開發模式,其中先後端項目基於Vue技術棧的SPA項目vue
這個是實現的一個登陸頁面...
這個是實現的商品列表的內容...
這個實現的商品分類頁面的內容...
這個是實現的物流進度...
這個是實現的分配權限頁面...
這個是經過三層for循環實現的是三級權限...
這個是實現的步驟條和富文本編輯器...
這個是實現的修改地址和省市區縣聯動效果...ios
經過Element-UI組件實現佈局git
在裏面寫入全局樣式表github
/* 全局樣式表 */ html, body, #app{ height: 100%; margin: 0; padding: 0; }
Login.vue頁面vue-router
<template> <div class="login_container"></div> </template> <script> export default {} </script> <style lang="less" scoped> .login_container { background-color: #2b4b6b; height: 100%; } </style>
在main.js裏面導入global.css文件sql
import './assets/css/global.css'
Login.vue數據庫
<template> <div class="login_container"> <div class="login_box"> <div class="avatar_box"> <img src="../assets/logo.png"/> </div> </div> </div> </template> <script> export default {} </script> <style lang="less" scoped> .login_container { background-color: #2b4b6b; height: 100%; } .login_box{ width: 450px; height: 300px; background-color: #fff; border-radius: 3px; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); } .avatar_box{ height: 130px; width: 130px; border: 1px solid #eee; border-radius: 50%; padding: 10px; box-shadow: 0 0 10px #ddd; position: absolute; left: 50%; transform: translate(-50%,-50%); background-color: #fff; img{ width: 100%; height: 100%; border-radius: 50%; background-color: #eee; } } </style>
Login.vue
<!-- 登陸表單區域 --> <el-form label-width="0px" class="login_form"> <!-- 用戶名 --> <el-form-item> <el-input prefix-icon="el-icon-search"></el-input> </el-form-item> <!-- 密碼 --> <el-form-item> <el-input prefix-icon="el-icon-search"></el-input> </el-form-item> <!-- 按鈕區域 --> <el-form-item class="btns"> <el-button type="primary">登陸</el-button> <el-button type="info">重置</el-button> </el-form-item> </el-form> .login_form{ position: absolute; bottom: 0; width: 100%; padding: 0 20px; box-sizing: border-box; } .btns{ display: flex; justify-content: flex-end; }
element.js
import Vue from 'vue' import { Button } from 'element-ui' import { Form,FormItem} from 'element-ui' import { Input } from 'element-ui' Vue.use(Button) Vue.use(Form) Vue.use(FormItem) Vue.use(Input)
先上下劃分,再左右劃分
<el-container> <!--頭部區域--> <el-header></el-header> <el-container> <!--側邊欄區域--> <el-aside></el-aside> <!--右側主體區域--> <el-main></el-main> </el-container> </el-container>
在plugins/element.js引入
import { Container,Header,Aside,Main } from 'element-ui' Vue.use(Container) Vue.use(Header) Vue.use(Aside) Vue.use(Main)
components/Home.vue
<el-container class="home-container"> <!-- 頭部區域 --> <el-header>Header<el-button type="info" @click="logout">退出</el-button> </el-header> <!-- 頁面主體區域 --> <el-container> <!-- 側邊欄 --> <el-aside width="200px">Aside</el-aside> <!-- 右側內容主體 --> <el-main>Main</el-main> </el-container> </el-container>
<el-header> <div> <img src="../assets/heima.png" alt=""> <span>電商後臺管理系統</span> </div> <el-button type="info" @click="logout">退出</el-button> </el-header> .home-container{ height: 100%; } .el-header{ background-color: #373d41; display: flex; justify-content: space-between; padding-left: 0; align-items: center; color: #fff; font-size: 20px; > div { display: flex; align-items: center; span{ margin-left:15px; } } } .el-aside{ background: #333744; } .el-main{ background-color: #eaedf1 }
效果以下:
菜單分紅二級,而且能夠摺疊
<el-menu> <el-submenu> <!--這個template是一級菜單的內容模板--> <i class="el-icon-menu"></i> <span>一級菜單</span> <!--在一級菜單中,能夠嵌套二級菜單--> <el-menu-item> <i class="el-icon-menu"></i> <span slot="title">二級菜單</span> </el-menu-item> <el-submenu> </el-menu>
在plugins/element.js裏面導入
//這個導入的都是根據下邊標籤名 import {Menu,Submenu,MenuItem} from 'element-ui' Vue.use(Menu) Vue.use(Submenu) Vue.use(MenuItem)
在components/Home.vue裏面寫入
<el-container> <!-- 側邊欄 --> <el-aside width="200px"> <!-- 側邊欄菜單區域 --> <el-menu background-color="#333744" text-color="#fff" active-text-color="#ffd04b"> <!-- 一級菜單 --> <el-submenu index="1"> <!-- 一級菜單的模板區域 --> <template slot="title"> <!-- 圖標 --> <i class="el-icon-location"></i> <!-- 文本 --> <span>導航一</span> </template> <!-- 二級菜單 --> <el-menu-item index="1-4-1"> <template slot="title"> <!-- 圖標 --> <i class="el-icon-location"></i> <!-- 文本 --> <span>選項1</span> </template></el-menu-item> </el-submenu> </el-menu> </el-aside> <!-- 右側內容主體 --> <el-main>Main</el-main> </el-container>
效果以下
經過axios請求攔截器添加token,包裝擁有獲取數據的權限
//axios請求攔截器 axios.interceptors.request.use(config => { //爲請求頭對象,添加Token驗證的Authorization字段 config.headers.Authorization = window.sessionStorage.getItem('token') return config })
經過兩層for循環把左側的結構渲染出來
<!-- 分頁區域 --> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="queryInfo.pagenum" :page-sizes="[5, 10, 15, 20]" :page-size="queryInfo.pagesize" layout="total, sizes, prev, pager, next, jumper" :total="total" background> </el-pagination>
實現的效果
在須要用到的組件添加element.js
import { Breadcrumb,BreadcrumbItem,Card,Row,Col} from 'element-ui' Vue.use(Breadcrumb)//麪包屑,顯示當前頁面的路徑,快速返回以前的任意頁面 Vue.use(BreadcrumbItem)//麪包屑,顯示當前頁面的路徑,快速返回以前的任意頁面 Vue.use(Card)//卡片形式 Vue.use(Row)//行 Vue.use(Col)//列
在css/global.css裏面寫入樣式
.el-breadcrumb{ margin-bottom: 15px; font-size: 12px; } /* 想要本身的樣式覆蓋它的樣式就要在後邊加一個!important */ .el-card{ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) !important; }
表示的效果以下
在Users.vue裏面添加
顯示的效果
stripe屬性能夠建立帶斑馬紋的表格
table 組件是不具備豎直方向的邊框的
再把須要用到的組件在plugins/element.js裏面引入
實現的效果
而後在css/global.css裏面寫入樣式
.el-table{ margin-top: 15px; font-size: 12px; }
實現的效果(盒子到頂部的距離和字體的大小)
只須要加入type="index"就能夠了
實現的效果
使用switch開關
實現的效果
須要使用element-ui裏面的組件
這個:enterable="false",表示鼠標是否能夠、進入tooltip中,false是布爾值,因此要進行數據綁定
在plugins裏element.js裏面導入
import {Tooltip} from 'element-ui' Vue.use(Tooltip)
最後實現的效果
經過本次從零一行一行代碼實現一個完整的常見的後臺管理系統,其實絕大部分就是對Element UI
的使用。說是簡單、實則坑不少,期間遇到了很多的bug,大多都是由於細節不注意,也讓我更加體會 好記性不如爛筆頭 這句話,實踐纔是真理啊,多動手,多探索。
但願看到這篇文章的小夥伴都能有所收穫~
歡迎你們加入,一塊兒學習前端,共同進步!