首页 > 数据库 >免费分享一套SpringBoot+Vue超市(进销存,收银,积分)管理系统【论文+源码+SQL脚本】,帅呆了~~

免费分享一套SpringBoot+Vue超市(进销存,收银,积分)管理系统【论文+源码+SQL脚本】,帅呆了~~

时间:2024-07-08 15:55:15浏览次数:17  
标签:Vue return 进销存 res token 源码 JsonResult import login

大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue超市(进销存,收银,积分)管理系统,分享下哈。

项目介绍

本论文设计并实现了一套基于Spring Boot、Vue和MySQL的超市管理系统。该系统旨在通过现代化的Web应用技术提升超市管理效率和用户体验。首先,通过详细的需求分析和功能设计,确定了系统的核心模块包括商品管理、库存管理、销售管理、会员管理以及报表统计等功能。接着,采用了Spring Boot作为后端开发框架,利用其快速搭建和集成优势,实现了系统的业务逻辑和数据持久化功能,同时使用MySQL作为数据库管理系统,存储和管理系统的数据。前端界面采用Vue.js作为主要开发框架,结合Element UI组件库,实现了用户友好的界面设计和良好的交互体验。系统设计考虑了安全性、性能和可扩展性等方面,通过JWT实现用户认证和权限控制,优化了数据库查询和响应速度,支持后续功能扩展和业务需求变更。

本文详细阐述了系统的设计思路、技术选型、关键功能实现及其优化策略。通过系统测试和性能评估验证了系统的稳定性和可靠性。该超市管理系统不仅提升了超市管理效率,还改善了用户体验,具备了较高的实用和推广价值。

系统展示

部分代码

package com.rabbiter.market.controller.login;

import com.rabbiter.market.common.sercurity.annotation.NoRequireLogin;
import com.rabbiter.market.common.web.response.JsonResult;
import com.rabbiter.market.domain.system.menu.Menu;
import com.rabbiter.market.service.login.ILoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.validation.constraints.NotEmpty;
import java.util.List;
import java.util.Map;
@RestController
@Validated
public class LoginEmpController {
    @Autowired
    private ILoginService loginService;

    /**
     * 登入功能
     *
     * @param username
     * @param password
     * @return
     */
    @NoRequireLogin
    @PostMapping("/login")
    public JsonResult login(@NotEmpty(message = "账号不能为空") String username, @NotEmpty(message = "密码不能为空") String password) {
        Map<String, Object> map = loginService.login(username, password);
        return JsonResult.success(map);

    }


    /**
     * 退出功能
     * @return
     */
    @NoRequireLogin
    @GetMapping("/exit")
    public JsonResult exit(HttpServletRequest request) {
        String token = request.getHeader("token");
        if (StringUtils.hasLength(token)){
            loginService.exit(token);
        }
        return JsonResult.success();
    }
    @PostMapping("/logout")
    public JsonResult logout(@NotEmpty(message = "内容不能为空") String content,HttpServletRequest request) {

        loginService.logout(request.getHeader("token"), content);

        return JsonResult.success();
    }

    /**
     * 查询登录者的拥有的菜单
     * @param request
     * @return
     */
    @GetMapping("/empMenu")
    public JsonResult empMenu(HttpServletRequest request){
        List<Menu> menus=loginService.empMenu((String)request.getHeader("token"));
        return JsonResult.success(menus);
    }
    @NoRequireLogin
    @GetMapping("/checkedToken")
    public JsonResult checkedToken(String token){
        Map<String,Object> map=loginService.checkedToken(token);
        return JsonResult.success(map);
    }
}
<template>
    <div id="login">
        <div class="loginForm">
            <el-form :model="loginForm" ref="loginForm" class="demo-ruleForm">
                <br />
                <i class="iconfont icon-r-building" style="font-size: 36px">
                    <b style="font-size: 28px"> 超市管理系统 </b> </i
                ><br /><br />
                <el-form-item prop="username">
                    <el-row>
                        <el-col :span="5" style="text-align: right">
                            <i
                                class="iconfont icon-r-user1"
                                style="font-size: 28px; color: grey"
                            >
                            </i>
                        </el-col>
                        <el-col
                            :span="19"
                            style="text-align: left; padding-left: 10px"
                        >
                            <el-input
                                v-model="loginForm.username"
                                placeholder="账号"
                            ></el-input>
                        </el-col>
                    </el-row>
                </el-form-item>

                <el-form-item prop="password">
                    <el-row>
                        <el-col :span="5" style="text-align: right">
                            <i
                                class="iconfont icon-r-lock"
                                style="font-size: 28px; color: grey"
                            >
                            </i>
                        </el-col>
                        <el-col
                            :span="19"
                            style="text-align: left; padding-left: 10px"
                        >
                            <el-input
                                type="password"
                                v-model="loginForm.password"
                                placeholder="密码"
                            ></el-input>
                        </el-col>
                    </el-row>
                </el-form-item>
                <el-form-item>
                    <el-button
                        style="font-size: 18px"
                        type="primary"
                        @click="submitForm('loginForm')"
                    >
                        <i class="iconfont icon-r-yes" style="font-size: 18px">
                        </i>
                        登录</el-button
                    >
                </el-form-item>
            

            </el-form>
        </div>
    </div>
</template>
<style>
#login {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    overflow-y: hidden;
    height: 100%;
    background: url("../assets/img/01.jpg") center top / cover no-repeat;
}

.loginForm {
    background-color: white;
    width: 400px;
    height: 280px;
    margin: 150px auto;
    text-align: center;
    padding-top: 10px;
    border-color: #555555;
    border-style: solid;
    border-radius: 15px;
}

.loginForm input {
    width: 260px;
}

h3 {
    margin: 10px 0;
}

.loginForm button {
    margin-right: 40px;
}
</style>
<script>
import { ajaxPost, popup } from "@/assets/js/common";
import Cookies from "js-cookie";

export default {
    data() {
        return {
            loginForm: {
                username: "",
                password: "",
            },
            rules: {
                username: [
                    {
                        required: true,
                        message: "账号不能为空",
                        trigger: "blur",
                    },
                ],
                password: [
                    {
                        required: true,
                        message: "密码不能为空",
                        trigger: "blur",
                    },
                    {
                        min: 6,
                        max: 8,
                        message: "密码长度为5-8位",
                        trigger: "blur",
                    },
                ],
            },
        };
    },
    methods: {
        submitForm(formName) {
            this.$refs[formName].validate((valid) => {
                if (valid) {
                    ajaxPost("/login", this.loginForm)
                        .then((res) => {
                            res = res.data;
                            if (res.code == 200) {
                                Cookies.set("token", res.data.token, {
                                    expires: 1 / 48,
                                });
                                Cookies.set(
                                    "employee",
                                    JSON.stringify(res.data.employee),
                                    { expires: 1 / 48 }
                                );
                                popup("登录成功,请稍等...");
                                this.$router.push("/index");
                            } else {
                                popup(res.msg, "warning");
                            }
                        });
                } else {
                    popup("账号或密码格式不正确!", "error");
                }
            });
        },
        resetForm(formName) {
            this.$refs[formName].resetFields();
        },
    },
};
</script>

源码下载

(*^▽^*),看锋哥帖子置顶评论。

标签:Vue,return,进销存,res,token,源码,JsonResult,import,login
From: https://blog.csdn.net/caoli201314/article/details/140203528

相关文章

  • Spring Boot Vue 毕设系统讲解 3
    目录项目配置类项目中配置的相关代码springBoot拦截器相关知识一、基于URL实现的拦截器:二、基于注解的拦截器三、把拦截器添加到配置中,相当于SpringMVC时的配置文件干的事儿:项目配置类项目中配置的相关代码首先定义项目认证授权拦截器  AuthorizationIntercep......
  • 基于Java中的SSM框架实现课程实验教学系统项目【项目源码+论文说明】
    摘要本课程实验教学管理系统是针对目前课程实验教学管理的实际需求,从实际工作出发,对过去的课程实验教学管理系统存在的问题进行分析,结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用目前最流行的B/S结构和java中流行的MVC三层设计模式和eclipse编辑......
  • 基于Java中的SSM框架实现羽毛球交流平台系统项目【项目源码+论文说明】
    基于Java中的SSM框架实现羽毛球交流平台系统演示摘要羽毛球作为一项奥运会的比赛项目,深受人们的喜爱,是一种大众运动。随着社会的发展和人们需求的变化,羽毛球这项运动也有了一定的发展,由于其规则简单,对场地的要求也不是很高,所以有很多人选择以打羽毛球的方式强身健体,所以现......
  • 搭建VUE开发环境
    了解下VUE搭建环境,可以更好地学习VUE。三步:node.js环境(npm包管理器)vue-cli脚手架构建工具cnpmnpm的淘宝镜像1.安装node.js 在搭建vue的开发环境之前,一定要先下载node.js,,vue的运行是要依赖于node的npm的管理工具来实现,node可以在官网或者中文网里面下载,根据自己的电脑选择是32......
  • vue element 上传到七牛云
    使用网站token生成:点我七牛云上传接口错误码:点我七牛云存储区域上传地址:点我七牛云在线生成token一般是后端生成,使用接口获取(放在后端比较安全)//获取七牛云tokenexportasyncfunctiongetQiniuToken(){consturl='/upload/key';constresult=awaitdefHtt......
  • 从 0 实现一个 vue3 的权限指令 v-permission
    在开发过程中会经常遇到一些权限控制,比如路由的权限控制、按钮的权限控制......
  • javab毕业设计-基于Java的校园二手交易商城系统设计与实现,基于springboot+vue二手跳蚤
    文章目录背景介绍演示视频(进入B站观看画面更清晰):项目架构和内容获取(文末获取)部分功能展示用户前端系统管理后台项目相关文件为什么我?本章节给大家带来的是一个基于java的大学生二手交易平台系统设计与实现,可适用于校园二手交易系统,基于Java的二手交易商城系统,大学......
  • springboot在线商城系统源码idea开发mysql数据库
    下载地址:https://download.csdn.net/download/qq_41221322/89519994摘要近年来,网上购物成了风靡全球的一种现象,大家逐渐接受了网上下单,隔天取货的这种方式。我们分析了一些购物网站现有的不足,结合我们所学的知识,制作了一款购物网站程序。学以致用,语言采用了大学时期学习的J......
  • vue中调用问题
    **背景我vue项目methods里面有三个方法,A方法,B方法,C方法,我在执行A方法里面调用B方法,B方法里面调用C方法,就报错了,说TypeError:Cannotreadpropertiesofundefined,这个nextHandleSubmit方法没有被定义,这是为什么?经过问gpt,结果竟然是:在上述代码中,箭头函数内部的this指向的是......
  • HashMap和ConcurrentHashMap对比源码分析
    1.1HashMap分析1.1.1JDK7的HashMap HashMap在日常开发中是很常见的,在JDK7中其底层是由数组+链表构成,数组被分成一个个桶(bucket),通过哈希值决定了键值对在这个数组中的位置。哈希值相同的键值对,会以链表形式进行存储。每一个键值对会以一个Entry实例进行封装,内部存在四个......