餐饮后台管理系统

news/2025/2/11 3:19:03/

一、项目介绍:

用于每天的菜品数据分析,客户的管理,员工的管理,查看订单信息,菜品的添加或者下架管理

二、项目使用技术栈:

vue2全家桶、element-ui、axios、js、es6、echarts

三、主页效果图:

 

 

 

 

 四、二次封装axios:

 这个项目的token需要加密,这里用到了Base64,

下载方式:npm install -- save js-base64

import axios from "axios";
import { Message, Loading } from 'element-ui';
import router from "../router"
import { Base64 } from 'js-base64'
// 封装loading开启和结束函数
let loading;
const baseUrl = 'https://meituan.thexxdd.cn/apit'
function startLoading(){loading = Loading.service({lock:true,text:'拼命加载中...',background:'rgba(0,0,0,0.7)'})
}
function endLoading(){loading.close()
}function getToken() {const token = localStorage.Token || ''//后端和前端的约定 const base64_token = Base64.encode(token + ':')return 'Basic ' + base64_token
}//1: 创建axios实例
const service = axios.create({//基地址baseURL:baseUrl,//baseURL:env.dev.baseUrl,settimeout: 5000,
});//2:请求拦截
service.interceptors.request.use((config) => {//在发送请求之前做些什么,比如验证token之类的if(localStorage.Token){config.headers.Authorization = getToken()}//开启loadingstartLoading();return config;},(error) => {//对错误请求做些什么//关闭loadingendLoading();return Promise.reject(error)})//3:响应拦截
service.interceptors.response.use((response) =>{//关闭loadingendLoading();return response;},(error) => {//对错误请求做些什么const {status} = error.responseif(status == 401){Message.error('用户过期,请重新登录!')localStorage.removeItem("Token")router.push("/login")}//关闭loadingendLoading();//提示信息Message.error(error.response.data.msg)return Promise.reject(error)
})
//4:抛出axios对象实例
export default  service;

封装api:

// 引入封装好的接口
import request from "./request"const RequestApi = {// 登录login(data) {return request({url: "/login",method: "POST",data,})},
}
//抛出
export { RequestApi }

五、首页

效果图:

      

登录和注册基本一致,可以用一个页面完成,具体实现方法用v-if判断和三元表达式

用三元表达式改变文字

 v-if判断变量,true显示登录  false显示注册,他们的点击事件用最简单的方式,写两个点击事件

 

 登录

 

 注册

跟登录一致,只不过登录接口换成了注册接口

 六:鉴权

 

 七:退出登录

 八、数据分析

效果图:

 

 这个效果就去Echarts官方去找配置

主要就是接受后台的数据,其中折线图,和柱状图需要抽离数据,这两个图都可以用一下的方法是实现 

九、用户列表

这个页面没什么难的,就是把请求数据。渲染数据,用element-ui把参数字段写对就行

page是第几页,后台的第一页下标是从0开始的,我定义的page是1,所以我在请求数据的时候减一

 

 十、订单页面

效果图:

 

 进入页面请求数据,渲染数据

 

 筛选就是将发送后台数据修改成筛选的的数据,可根据上面的图一起看

这里用到的是element 的时间模块,他返回的是一个数组,后台需要字符串类型的,所以需要转换一下

详情菜单效果图:

 

 点击获取当前数据的id,调用接口将这个id发送给后台,获取详情数据

 后台返回的数据是数组类型,所以要在外面在写一层v-for

 十一、菜单管理(难点,上传图片

效果图:

 

获取数据,渲染数据

 下架菜品

 添加数据(难点)

 都是一些用v-model实现的数据双星绑定,主要说一些图片上传

用element 的组件,用到的配置我在图片注释了,想要了解更多去官网查看

 获取本地的token 请求头 和图片上传的接口路径

 

 上传: :on-success  文件上传成功时的钩子

 删除图片:on-remove 文件列表移除文件时的钩子

 

 后台需要的数据

 点击提交,将后台需要的数据发送过去

 编辑  跟以上的方式一样,可以用一个页面完成,技术不好可以将这个页面复制到另一个页面来写编辑

点击编辑,将当前行所有的数据传入的编辑页面

 在编辑页面接受并转换为数组

 修改数据完成后点击提交,调用编辑接口

 


http://www.ppmy.cn/news/639933.html

相关文章

米之家

米的妈妈是谁? 是花,因为花生米。 米的爸爸是谁? 是蝶,因为蝶恋花。 米的外婆是谁? 是妙笔,因为妙笔生花。 米的外公是谁? 是爆米花,因为抱过花又抱过米 米的丈夫是谁? 是柴&a…

Modin 入门学习

Modin 是一个 Python 第三方库,用于加速 Pandas 的 API 执行速度。原始的 Pandas 是单线程执行的,而 Modin 则重新打包了 Pandas 里面的 API,使其同时在多个内核中运行,提高硬件性能的利用率。 使用方法很简单,安装 M…

InstructGPT学习

GPT发展历程 在回答这个问题之前,首先要搞清楚ChatGPT的发展历程。 GPT-1用的是无监督预训练有监督微调。GPT-2用的是纯无监督预训练。GPT-3沿用了GPT-2的纯无监督预训练,但是数据大了好几个量级。InstructGPT在GPT-3上用强化学习做微调,内…

uuid1与uuid4的区别

python中默认有uuid的库,那么来区分一下其两个方法的区别是什么。 Python 2.7.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2 Type "help", "copyright", "credits" or "license&qu…

AFE4410开发笔记

AFE4410是TI的一款心率血氧传感器,许多手环等穿戴设备都用其监测人的心率、血氧。下面是做相关项目时做的笔记: 标题描述寄存器写在对寄存器进行写入之前, 必须将 SPI_REG_READ 寄存器位设置为 0。寄存器读尝试从 AFE 进行串行读取之前&…

水站桶装水订水系统桶装水小程序,改变了桶装水行业传统的送水模式;

水站桶装水订水系统桶装水小程序,改变了桶装水行业传统的送水模式,客户通过线上下单,送水工实时接单配送,空桶更好的记录管理,财务数据在后台清晰明了,提高了水站的工作效率。 除此之外,还有很多…

ARM4412

ARM基础 ARM认识 FLASH相当于电脑的硬盘,内存相当于电脑的运行内存,控制器搬移这些运算指令,(ALU)运算机进行解析,寄存器用于临时存放用于运算的数据 ARM开发环境 安装交叉编译工具链 我们用的交叉编译…

linux uda1341驱动

分析: 1.板级描述文件是 linux-2.6.32.2/arch/arm/mach-s3c2440/mach-mini2440.c 第383行开始 static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data {.l3_clk S3C2410_GPB(4),.l3_data S3C2410_GPB(3),.l3_mode S3C2410_GPB(2),.model UDA134X…