crm开发定制【前端】Vue+Element UI案例:通用后台管理系统-Echarts图表准备:axios封装、mock数据模拟实战

文章目录


参考视频:

案例链接
【前端】Vue+Element UI案例:crm开发定制crm开发定制crm开发定制crm开发定制通用后台管理系统-导航栏(视频p1-16)
【前端】Vue+Element UI案例:通用后台管理系统-Header+crm开发定制导航栏折叠(p17-19)
【前端】Vue+Element UI案例:通用后台管理系统-Home组件:卡片、表格(p20-22)
【前端】Vue+Element UI案例:通用后台管理系统-Echarts图表准备:axios封装、mock数据模拟实战(p23-25)
【前端】Vue+Element UI案例:通用后台管理系统-Echarts图表:折线图、柱状图、饼状图(p27-30)
【前端】Vue+Element UI案例:通用后台管理系统-面包屑、tag栏(p31-35)
【前端】Vue+Element UI案例:通用后台管理系统-用户管理:Form表单填写、Dialog对话框弹出(p36-38)
【前端】Vue+Element UI案例:通用后台管理系统-用户管理:Table表格增删查改、Pagination分页、搜索框(p39-42)
【前端】Vue+Element UI案例:通用后台管理系统-登陆页面Login(p44)
【前端】Vue+Element UI案例:通用后台管理系统-登陆页面功能:登录权限跳转、路由守卫、退出(p45-46)
【前端】Vue+Element UI案例:通用后台管理系统-登陆不同用户显示不同菜单、动态添加路由(p47-48)
【前端】Vue+Element UI案例:通用后台管理系统-项目总结

axios封装

安装:

npm install axios
  • 1

在src下创建一个新文件夹utils,创建文件request.js,我们在这里面。

import axios from "axios";// 封装一个axios实例const http = axios.create({    // 通用请求的地址前缀    baseURL: '/api',    // 超时时间    timeout: 100000})// 请求拦截器http.interceptors.request.use(function (config) {    // 在发送请求之前做什么    return config;}, function (error) {    // 对请求错误做什么    return Promise.reject(error);})// 添加响应拦截器http.interceptors.response.use(function (response) {    // 对响应数据做什么    return response;}, function (error) {    // 对响应错误做什么    return Promise.reject(error);})export default http
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

请求首页数据

封装完axios后,我们在src下建立一个新文件夹:api,并在其中创建文件index.js。我们将用它来请求数据。

import http from '../utils/request'// 请求首页数据,直接把这个对象导出export const getData = () => {    // 返回一个promise    return http.get('/home/getData')}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

把它在Home中引入:

import {getData} from '../api/index'export default {    mounted(){        getData().then((data)=>{            console.log(data);        })    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

启动服务看一下:显然是没有的。因为我们并没有后端服务。

接下来我们就要用来模拟后端的数据。

mock模拟数据

mock

文档:

安装:

npm install mockjs
  • 1

在api中创建一个mock.js文件,用来定义mock拦截。

import Mock from 'mockjs'// 定义mock拦截Mock.mock('/api/home/getData',function(){    // mock的逻辑})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

显然这里的function是会随着要拦截的网址的不同而不同的,我们最好把它封装起来。

home.js:

// mock数据模拟import Mock from 'mockjs'// 导入数据import videoData from '../../data/mockData/videoData'import userData from '../../data/mockData/userData'import tableData from '../../data/mockData/tableData'// 图表数据let List=[]// 直接导出export default {    getStatisticalData: () => {        //Mock.Random.float 产生随机数100到8000之间 保留小数 最小0位 最大0位        for (let i = 0; i < 7; i++) {            List.push(                Mock.mock({                    苹果: Mock.Random.float(100, 8000, 0, 0),                    vivo: Mock.Random.float(100, 8000, 0, 0),                    oppo: Mock.Random.float(100, 8000, 0, 0),                    魅族: Mock.Random.float(100, 8000, 0, 0),                    三星: Mock.Random.float(100, 8000, 0, 0),                    小米: Mock.Random.float(100, 8000, 0, 0)                })            )        }        // 返回给浏览器的数据        return {            code: 20000,            data: {                // 饼图                videoData,                // 柱状图                userData,                // 折线图                orderData: {                    date: ['20191001', '20191002', '20191003', '20191004', '20191005', '20191006', '20191007'],                    data: List                },                tableData            }        }    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

最后注意要在main中import:

import './api/mock'
  • 1

相关数据

tableData

const tableData = [    {        name: 'oppo',        todayBuy: 500,        monthBuy: 3500,        totalBuy: 22000    },    {        name: 'vivo',        todayBuy: 300,        monthBuy: 2200,        totalBuy: 24000    },    {        name: '苹果',        todayBuy: 800,        monthBuy: 4500,        totalBuy: 65000    },    {        name: '小米',        todayBuy: 1200,        monthBuy: 6500,        totalBuy: 45000    },    {        name: '三星',        todayBuy: 300,        monthBuy: 2000,        totalBuy: 34000    },    {        name: '魅族',        todayBuy: 350,        monthBuy: 3000,        totalBuy: 22000    }]export default tableData
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

柱状图:userData

// 柱状图const userData = [    {        date: '周一',        new: 5,        active: 200    },    {        date: '周二',        new: 10,        active: 500    },    {        date: '周三',        new: 12,        active: 550    },    {        date: '周四',        new: 60,        active: 800    },    {        date: '周五',        new: 65,        active: 550    },    {        date: '周六',        new: 53,        active: 770    },    {        date: '周日',        new: 33,        active: 170    }]export default userData
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

饼图:videoData

// 饼图const videoData = [    {        name: '小米',        value: 2999    },    {        name: '苹果',        value: 5999    },    {        name: 'vivo',        value: 1500    },    {        name: 'oppo',        value: 1999    },    {        name: '魅族',        value: 2200    },    {        name: '三星',        value: 4500    }]export default videoData
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

效果

这就是上面写的function的内容。mock模拟成功。

总代码

本篇创建的文件夹和文件如下,代码在文中:

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发