Java毕业设计 SpringBoot 新能源充电桩管理系统

Java毕业设计 SpringBoot 新能源充电桩管理系统

SpringBoot 新能源充电桩管理系统 功能介绍

管理员 登录 验证码 注册 系统用户管理 普通用户管理 通知公告管理 留言管理 充电站管理 充电桩管理 充电桩预约 充电管理 订单管理 修改密码

普通用户 登录 修改个人资料 通知公告查询 留言 充电桩预约和查询 充电查询 订单查询 修改密码

角色:用户 管理员

使用技术
  • SpringBoot框架

  • Mybaits

  • Mysql数据库

  • vue

功能展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

充电站管理页面vue
<template><div><el-form :inline="true" :model="formInline" class="user-search"><el-form-item label=""><el-input size="small" v-model="formInline.zhandianmingcheng" placeholder="输入站点名称"></el-input></el-form-item><el-form-item label=""><el-input size="small" v-model="formInline.dizhi" placeholder="输入地址"></el-input></el-form-item><el-form-item><el-button size="small" type="primary" icon="el-icon-search" @click="search">搜索</el-button><el-button size="small" type="primary" icon="el-icon-plus" @click="handleEdit()" >添加</el-button><el-button size="small" type="danger" icon="el-icon-delete" @click="handleDeleteList()" v-if="userInfo.roles[0] == 'guanliyuan'">批量删除</el-button></el-form-item></el-form><el-table size="small" :data="listData" highlight-current-row v-loading="loading" border element-loading-text="拼命加载中" @selection-change="handleSelectionChange"><el-table-column align="center" type="selection" width="60"></el-table-column><el-table-column sortable prop="zhandianmingcheng" label="站点名称"></el-table-column><el-table-column sortable prop="shebeishuliang" label="设备数量"></el-table-column><el-table-column sortable prop="dizhi" label="地址"></el-table-column><el-table-column align='center' sortable prop='tupian' label='图片' width='120'><template slot-scope='scope'><el-image :src='scope.row.tupian' style='height:70px'/></template></el-table-column><el-table-column sortable prop="addtime" label="添加时间" width="160"><template slot-scope="scope"><div>{{scope.row.addtime|datePipe('yyyy-MM-dd hh:mm:ss')}}</div></template></el-table-column><el-table-column align="center" label="操作" min-width="160"><template slot-scope="scope"><el-button size="mini"  type="danger" @click="addSalary(scope.$index, scope.row)">添加充电桩</el-button><!--liangbuan--><el-button size="mini" type="success" @click="handleEdit(scope.$index, scope.row)" v-if="userInfo.roles[0] == 'guanliyuan' ">编辑</el-button><el-button size="mini" type="danger" @click="deleteChongdianzhanxinxi(scope.$index, scope.row)" v-if="userInfo.roles[0] == 'guanliyuan' ">删除</el-button><el-button size='mini' type='primary' @click="handleDetail(scope.$index, scope.row)">详细</el-button></template></el-table-column></el-table><Pagination v-bind:child-msg="pageparm" @callFather="callFather"></Pagination><el-dialog :title="title" :visible.sync="editFormVisible" width="30%" @click="closeDialog"><el-form label-width="120px" :model="editForm" :rules="rules" ref="editForm"><el-form-item  label="站点名称" prop="zhandianmingcheng"><el-input size="small" v-model="editForm.zhandianmingcheng" auto-complete="off" placeholder="请输入站点名称" style='width:50%'></el-input></el-form-item><el-form-item  label="设备数量" prop="shebeishuliang"><el-input-number size="small" v-model="editForm.shebeishuliang" auto-complete="off" placeholder="请输入设备数量" style='width:50%'></el-input-number></el-form-item><el-form-item  label="地址" prop="dizhi"><el-input size="small" v-model="editForm.dizhi" auto-complete="off" placeholder="请输入地址" style='width:50%'></el-input></el-form-item><el-form-item  label='图片' prop='tupian'><el-upload class='avatar-uploader' action='http://localhost:9999/files/upload' :headers='headers' :show-file-list='false' :on-success='handleTupianSuccess' :before-upload='beforeTupianUpload'><img v-if='editForm.tupian' :src='editForm.tupian' class='avatar'><i v-else class='el-icon-plus avatar-uploader-icon'></i></el-upload></el-form-item><el-form-item  label="简介" prop="jianjie"><el-input type="textarea" size="small" v-model="editForm.jianjie" auto-complete="off" placeholder="请输入简介" style='width:100%'></el-input></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button size="small" @click="closeDialog">取消</el-button><el-button size="small" type="primary" :loading="loading" class="title" @click="submitForm('editForm')">保存</el-button></div></el-dialog><el-dialog :title="title" :visible.sync="detailFormVisible" width="60%" @click="closeDialogdetail"><table width="100%" border="0"  align="center" cellpadding="3" cellspacing="1"  style="line-height: 50px;  " class="table table-striped table-bordered table-hover"><tr><td width='11%' height=44>站点名称:</td><td width='39%'>{{editForm.zhandianmingcheng}}</td>
<td  rowspan=3 align=center><el-upload class='avatar-uploader'  :headers='headers' :show-file-list='false'  ><img v-if='editForm.tupian' :src='editForm.tupian' class='avatar'><i v-else class='el-icon-plus avatar-uploader-icon'></i></el-upload></td></tr><tr>
<td width='11%' height=44>设备数量:</td><td width='39%'>{{editForm.shebeishuliang}}</td>
</tr><tr>
<td width='11%' height=44>地址:</td><td width='39%'>{{editForm.dizhi}}</td>
</tr><tr><td width='11%' height=100  >简介:</td><td width='39%' colspan=2 height=100 >{{editForm.jianjie}}</td></tr></table><div slot="footer" class="dialog-footer"><el-button size="small" @click="closeDialogdetail">关闭</el-button></div></el-dialog></div>
</template><script>
import Pagination from "@/layout/pagination/Pagination";
import { chongdianzhanxinxiList, chongdianzhanxinxiSave, chongdianzhanxinxiDelete,chongdianzhanxinxiEdit,chongdianzhanxinxiDeleteList } from '@/api/chongdianzhanxinxi/chongdianzhanxinxiApi';import {Session} from "@/utils/storage";
export default {name: 'user',data() {return {loading: false, //是显示加载title: '',editFormVisible: false, //控制编辑页面显示与隐藏detailFormVisible: false,editForm: {},user:[],rules: {zhandianmingcheng: [{ required: true, message: '请输入站点名称', trigger: 'blur' },],shebeishuliang: [{ required: true, message: '请输入设备数量', trigger: 'blur' },{ type: 'number', message: '设备数量必须为数字'},],dizhi: [{ required: true, message: '请输入地址', trigger: 'blur' },],},formInline: {page: 1,limit: 10,},listData: [],chongdianzhanxinxis:[],checkmenu: [],pageparm: {currentPage: 1,pageSize: 10,total: 0}};},computed:{headers(){return {"token":Session.get("token")}}},watch: {'$route' (to, from) {// 路由发生变化页面刷新this.$router.go(0);}},components: {Pagination},created() {if (!Session.get('userInfo')) return false;this.userInfo = Session.get('userInfo');this.getdata(this.formInline)},methods: {getdata(parameter) {chongdianzhanxinxiList(parameter).then(res => {this.loading = falseif (res.success == false) {this.$message({type: 'info',message: res.msg})} else {this.listData = res.data.list// 分页赋值this.pageparm.currentPage = this.formInline.currentthis.pageparm.pageSize = this.formInline.currentNumthis.pageparm.total = res.data.total}}).catch(err => {this.loading = falsethis.$message.error('菜单加载失败,请稍后再试!')})},// 分页插件事件callFather(parm) {this.formInline.current = parm.currentPagethis.getdata(this.formInline)},// 搜索事件search() {this.getdata(this.formInline)},addSalary(index,row){this.$router.push({name:'chongdianzhuangxinxiAdd',params:{id:row.id}})},//显示编辑界面handleEdit: function (index, row) {this.editFormVisible = trueif (row != undefined && row != 'undefined') {this.title = '修改充电站信息'this.editForm = row} else {this.title = '添加充电站信息'this.editForm = {}}},handleDetail: function (index, row) {this.detailFormVisible = trueif (row != undefined && row != 'undefined') {this.title = '充电站信息详细'this.editForm = row}},closeDialogdetail() {this.getdata(this.formInline)this.detailFormVisible = false},//liangbuedit// 编辑、增加页面保存方法submitForm(editData) {this.$refs[editData].validate(valid => {if (valid) {if(this.editForm.id){chongdianzhanxinxiEdit(this.editForm).then(res => {this.editFormVisible = falsethis.loading = falseif (res.code == '0') {this.getdata(this.formInline)this.$message({type: 'success',message: '充电站信息修改成功!'})} else {this.$message({type: 'info',message: res.msg})}}).catch(err => {this.editFormVisible = falsethis.loading = falsethis.getdata(this.formInline)if(err){this.$message.error(err)}else {this.$message.error('操作失败,请稍后再试!')}})}else {chongdianzhanxinxiSave(this.editForm).then(res => {this.editFormVisible = falsethis.loading = falseif (res.code == '0') {this.getdata(this.formInline)this.$message({type: 'success',message: '充电站信息添加成功!'})} else {this.$message({type: 'info',message: res.msg})}}).catch(err => {this.editFormVisible = falsethis.loading = falseif(err){this.$message.error(err)}else {this.$message.error('操作失败,请稍后再试!')}})}} else {return false}})},// 删除公司deleteChongdianzhanxinxi(index, row) {this.$confirm('确定要删除吗?', '信息', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {chongdianzhanxinxiDelete(row.id).then(res => {if (res.code == '0') {this.$message({type: 'success',message: '充电站信息已删除!'})this.getdata(this.formInline)} else {this.$message({type: 'info',message: res.msg})}}).catch(err => {this.loading = falsethis.$message.error('操作失败,请稍后再试')})}).catch(() => {this.$message({type: 'info',message: '已取消删除'})})},handleSelectionChange(val){this.chongdianzhanxinxis = val;},handleDeleteList(){const chongdianzhanxinxis = this.chongdianzhanxinxis;if(chongdianzhanxinxis.length == 0){this.$message({type: 'error',message: '请至少选择一项进行删除'})}else {this.$confirm('确定要批量删除吗?', '信息', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {chongdianzhanxinxiDeleteList(chongdianzhanxinxis).then(res => {if (res.code == '0') {this.$message({type: 'success',message: '批量删除成功!'})this.getdata(this.formInline)} else {this.$message({type: 'info',message: res.msg})}}).catch(err => {this.loading = falsethis.$message.error('操作失败,请稍后再试')})}).catch(() => {this.$message({type: 'info',message: '已取消删除'})})}},//xuaxnzeshxifouhandleTupianSuccess(res, file) {if(res.code == "0") {this.editForm.tupian = "/files/download/"+res.data.id}},beforeTupianUpload(file) {const isJPG = file.type === 'image/jpeg';const isLt2M = file.size / 1024 / 1024 < 2;if (!isJPG) {this.$message.error('上传图片只能是 JPG 格式!');}if (!isLt2M) {this.$message.error('上传图片大小不能超过 2MB!');}return isJPG && isLt2M;},// 关闭编辑、增加弹出框closeDialog() {this.getdata(this.formInline)this.editFormVisible = false}},
};
</script><style scoped lang="scss">@import './index.scss';
</style>
运行

创建数据库, 然后修改数据库连接相关信息。

启动 Springboot 类的main方法

运行vue

npm run serve

访问地址:http://localhost:8080/springboot/admin/dist/index.html

管理员账号:liang 密码:liang

注册或使用用户账号: qqq 密码:qqq

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/174140.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【洛谷算法题】P5709-Apples Prologue / 苹果和虫子【入门2分支结构】

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5709-Apples Prologue / 苹果和虫子【入门2分支结构】&#x1f30f;题目描述&am…

解决MySQL大版本升级导致.Net(C#)程序连接报错问题

数据库版本从MySQL 5.7.21 升级到 MySQL8.0.21 数据升级完成后&#xff0c;直接修改程序的数据库连接配置信息 <connectionStrings> <add name"myConnectionString" connectionString"server192.168.31.200;uidapp;pwdFgTDkn0q!75;databasemail;&q…

C#,数值计算——分类与推理Svmlinkernel的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Svmlinkernel : Svmgenkernel { public int n { get; set; } public double[] mu { get; set; } public Svmlinkernel(double[,] ddata, double[] yy) : base(yy, ddata) …

高级工技能等级认定---网络设备安全

目录 一、DHCP 安全配置 二、SSH配置 三、标准ACL的配置 四、配置交换机端口安全 五、三层交换和ACL的配置 一、DHCP 安全配置 配置要求&#xff1a; 1.给交换机配置enable密码. 2.在交换机上创建VLAN 100&#xff0c;将F0/1-3口改为Access口&#xff0c;并加入到VLAN …

Spring Cloud Alibaba 教程 Fegin 篇

Spring Cloud Alibaba 教程 | Feign 篇 写在前面的话&#xff1a; 本笔记在参考网上视频以及博客的基础上&#xff0c;只作为个人学习笔记&#xff0c;如有侵权联系删除&#xff0c;谢谢&#xff01; 1、Feign替代RestTemplate ​ 1.1 引入依赖 <!-- Feign 客户端依赖 --&…

社恐了怎么办?如何改变社交恐惧症?

社恐这个词已经算是普及了&#xff0c;自嘲自己是社恐的人真的挺多的&#xff0c;好像一句我社恐了就能解析很多问题&#xff0c;其实真正的社恐远比我们想象的要痛苦多了&#xff0c;社恐能被更多人认识到本来是件好事&#xff0c;但是过于的用社恐来给自己贴标签&#xff0c;…

设计模式(单例模式、工厂模式及适配器模式、装饰器模式)

目录 0 、设计模式简介 一、单例模式 二、工厂模式 三、适配器模式 四、装饰器模式 0 、设计模式简介 设计模式可以分为以下三种: 创建型模式&#xff1a;用来描述 “如何创建对象”&#xff0c;它的主要特点是 “将对象的创建和使用分离”。包括单例、原型、工厂方法、…

小程序request请求封装

以上为本人的项目目录 1.首先在utils中创建request.js文件封装request请求&#xff0c;此封装带上了token&#xff0c;每次请求都会自带token&#xff0c;需要你从后端获取后利用wx.setStorageSync(token,返回的token),不使用的话就是空。 直接复制即可&#xff0c;需要改一下…

C++STL---Vector、List所要掌握的基本知识

绪论​ 拼着一切代价&#xff0c;奔你的前程。 ——巴尔扎克&#xff1b;本章主要围绕vector和list的使用&#xff0c;以及容器底层迭代器失效问题&#xff0c;同时会有对原码的分析和模拟实现其底层类函数。​​​​话不多说安全带系好&#xff0c;发车啦&#xff08;建议电脑…

c#使用ExifLib库提取图像的相机型号、光圈、快门、iso、曝光时间、焦距信息等EXIF信息

近期公司组织了书画摄影比赛&#xff0c;本人作为摄影爱好者&#xff0c;平时也会拍些照片&#xff0c;这次比赛当然不能错过。为了提高获奖概率&#xff0c;选了19张图像作为参赛作品。但是&#xff0c;摄影作品要提交图像的光圈、曝光时间等参数。一两张还可以通过电脑自带软…

【uniapp】仿微信支付界面

效果图 完整代码 <template><view class="my-pay-page"><view :style=

软件测试---边界值分析(功能测试)

选取正好等于、刚好大于、刚好小于边界的值作为测试数据 上点: 边界上的点 (正好等于)&#xff1b;必选(不考虑区开闭) 内点: 范围内的点 (区间范围内的数据)&#xff1b;必选(建议选择中间范围) 离点: 距离上点最近的点 (刚好大于、刚好小于)&#xff1b;开内闭外(考虑开…

Redis(windows+Linux)安装及入门

一、概述 Redis是什么&#xff1f; Redis(Remote Dictionary Server)&#xff0c;即远程字典服务 Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数…

Linux shell编程学习笔记16:bash中的关联数组

上一节我们探讨了普通的数组&#xff0c;即使用数字下标来索引数组中不同的元素的数组&#xff0c;也可以称之为索引数组。 相比纯粹的数字&#xff0c;字符串不仅能表明含义&#xff0c;也更便于记忆使用&#xff0c;于是就有了关联数组。 一、关联数组概述 bash 从4.0开始支…

力扣第738题 单调递增的数字 c++ 暴力超时 贪心优化

题目 738. 单调递增的数字 中等 相关标签 贪心 数学 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 1…

精品基于Python的房地产分析平台-可视化大屏

《[含文档PPT源码等]精品基于Python的房地产分析平台的设计与实现-爬虫》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;python 使用框架&#xff1a;Django 前端…

Java VMTranslator Part I

目录 堆栈运算命令 基本思路 核心代码 Parser Code Writer Main 实验结果&#xff0c;使用SimpleAdd、StackTest进行验证 内存访问命令 基本思路 核心代码 Parser Code Writer Main 实验结果&#xff0c;使用进行验证。对比生成的二进制代码文件。 用Java写一个翻…

程序员为啥要做副业(02)-中指备用金

点击下方“JavaEdge”&#xff0c;选择“设为星标” 第一时间关注技术干货&#xff01; 免责声明~ 任何文章不要过度深思&#xff01; 万事万物都经不起审视&#xff0c;因为世上没有同样的成长环境&#xff0c;也没有同样的认知水平&#xff0c;更「没有适用于所有人的解决方案…

Linux — vim编辑器的操作

目录 1. vim的整体操作2. 命令模式下的常见命令3. 底行模式下的常见命令结语 1. vim的整体操作 我们使用 touch 创建一个文件之后&#xff0c;直接 vim 文件名 就能够进入到vim编辑器中。如果vim 文件名的文件还不存在时&#xff0c;vim会自动创建该文件&#xff0c;但需要保存…

Java 中的 synchronized 同步锁

导致线程安全问题的根本原因在于&#xff0c;存在多个线程同时操作一个共享资源&#xff0c;要想解决这个问题&#xff0c;就需要保证对共享资源访问的独占性&#xff0c;因此人们在Java中提供了synchronized关键字&#xff0c;我们称之为同步锁&#xff0c;它可以保证在同一时…