用vue+elementui写了一个图书管理系统
用vue+elementui写了一个图书管理系统
转载自公号:java大师
目前是指一个纯前端的展示,后端还在开发中,前端接口是通过json-server模拟的
用到的技术栈
1、vue.js
2、elementui
3、json-server
4、axios
5、vue-router 动态路由
目录结构

1、components文件夹是封装的通用的Mytable和Myform及Nav等,主要用于多次调用时,简化代码操作
<el-card class="box-card">
<my-table :columns="columns" :data="tableData" @row-click="handleRowClick"
@button-click="handleButtonClick"></my-table>
</el-card>
<el-dialog title="修改书籍" :visible.sync="dialogEditVisible">
<MyForm :form-groups="formGroups" :form-data="formData"></MyForm>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogEditVisible = false">取 消</el-button>
<el-button type="primary" @click="handleUpdateBook">确 定</el-button>
</div>
</el-dialog>
比如以上两个就是我们自己封装的table和form,在需要使用的地方直接调用即可
2、directives文件夹用户自定义指令,主要用于按钮的展现和隐藏
export default {
inserted:(el, binding, vnode) =>{
let { userInfo = {} } = Store.getters.userinfo
let { permissions = [] } = userInfo
permissions && !permissions.some(item => item===binding.value)&&(el.parentNode.removeChild(el))
}
自定义inserted指令,用于按钮的展示和隐藏
3、mock文件夹主要是数据的mock

mock数据,用于api的调用
4、pages文件夹就是具体的页面
展示在前端的具体的页面都放在这个文件夹中,比如:登录、主页,首页,用户管理页等
5、router文件夹是路由的定义
const routes =[
{
path:'/login',
name:'Login',
component:() => import('@/pages/Login.vue')
},
{
path:'*',
name:'NotFound',
component:() => import('@/pages/NotFound.vue')
}
]
使用vue-router配置的路由信息,用于地址的跳转
6、store文件夹是vuex的使用

用于vuex状态管理的配置,包含state、actions、mutations和getters
7、utils文件夹,一些工具类的封装
例如:api.js,用于请求和响应的拦截

例如:routeUtils.js,动态路由工具类,根据后端api接口返回的菜单数据生成动态路由
export const initTmpRoutes = (menus) => {
let tmpRoutes = []
menus.forEach(menu => {
let {id,title,icon,path,name,children} = menu
if(children instanceof Array){
children = initTmpRoutes(children)
}
let tmpRoute = {
path:path,
meta:{icon:icon,title:title},
name:name,
children:children,
component:children.length?{render(c){return c('router-view')}}:()=>import(`@/pages${path}/${name}.vue`)
}
tmpRoutes.push(tmpRoute)
})
return tmpRoutes
}
废话不多说,直接上系统图:
一、登录页

二、首页

三、角色管理

点击关联资源,给角色选择响应的菜单

三、菜单管理

点击修改菜单

选择上级菜单

通过左侧的菜单进行筛选

四、用户管理

选择角色

五、图书管理

添加图书

修改图书

六、图书借阅

用vue+elementui写了一个图书管理系统的更多相关文章
- vue elementui 写的一个后台管理页面模板
https://github.com/PanJiaChen/vue-element-admin
- vue element-ui怎样提炼一个自己写的js当作公共js
vue element-ui怎样提炼一个自己写的js当作公共js请教一下各位大神,我刚刚触摸vue element-ui几天,写的一个清晰检索的input框,现在需当作项目公共的部分,可遭需的html ...
- 用vue.js写的一个瀑布流的组件
用vue.js写的一个瀑布流的组件:https://segmentfault.com/a/1190000010741319 https://www.jianshu.com/p/db3cadc03402
- 如何使用Vue.js来搭建一个后台管理系统
目录 使用的技术 基础但不好版 1.初始化项目 2.实现初始页内容自定义 3.使用路由 原始代码 自建页面 修改路由 4.测试路由跳转 补充 子路由版 嵌套router-view 定义子路由 修改菜单 ...
- 使用 vue 仿写的一个购物商城
在学习了 vue 之后,决定做一个小练习,仿写了一个有关购物商城的小项目.下面就对项目做一个简单的介绍. 项目源码: github 项目的目录结构 -assets 与项目有关的静态资源,包括 css, ...
- 用python写项目之图书管理系统
1.功能介绍: (1).添加新书:输入要添加的书名.存放的书架号.价格. (2).修改书架:输入要书名,然后对其修改书架号.价格 (3).删除书架:输入书名,然后对应删除书名.书架号.价格 (4).查 ...
- vue自己写了一个div菜单,点击按钮展开,点击其他地方关闭这个div菜单
需求是通过点击body页面,在其他地方就关闭这个<div>菜单,给这个div一个id:problemList,但是点击我打开的按钮,不关闭. created () { document.o ...
- vue+element-ui+ajax实现一个表格的实例
<!DOCTYPE html> <html> <head> <script src="js/jquery-3.2.1.js">< ...
- vue 自己写的一个日历
样式: //quanbu全部代码 <template> <div class="priceListContent clearfix"> <!-- 顶部 ...
- Vue.js—实现图书管理系统
前 言 今天我们主要一起来学习一个新框架的使用--Vue.js,之前我们也讲过AngularJS是如何使用的,而今天要讲的Vue.js的语法和AngularJS很相似,因为 AngularJS ...
随机推荐
- 如果摄像头不支持Web Socket,猿大师播放器还能在网页中播放RTSP流吗?
问: 我们的情况比较复杂,摄像头设备品牌和数量都比较多,分布在全国各地都有,地点分布比较广泛,有的甚至是比较老的型号,如果摄像头设备不支持Web Socket,猿大师播放器还可以在网页中播放RTSP流 ...
- Java题目集 函数
6-1 汽车类 (20 分) 编写汽车类,其功能有启动(start),停止(stop),加速(speedup)和减速(slowDown),启动和停止可以改变汽车的状态(on/off),初始时状态为 ...
- 【StoneDB 模块介绍】服务器模块
[StoneDB 模块介绍]服务器模块 一.介绍 客户端程序和服务器程序本质上都是计算机上的一个进程,客户端进程向服务器进程发送请求的过程本质上是一种进程间通信的过程,StoneDB 数据库服务程序作 ...
- redis 访问 database
edis的数据库个数是可以配置的,默认为16个,见redis.windows.conf/redis.conf的databases 16.对应数据库的索引值为0 - (databases -1),即16 ...
- 在MDK 5中打开MDK 4工程要注意的问题1
我是生手,对于MDK的理解还很简单.以下内容是遇到的一种情况. 有一个MDK 4工程,要求顺序点亮4个LED灯,工程已经建好. 在MDK 5中打开,编译都没问题,要烧写时,提示"can no ...
- vsftpd2.3.4 后门笑脸漏洞
漏洞概要 在vsftpd 2.3.4版本中,在登录输入用户名时输入:)类似于笑脸的符号,会导致服务处理开启6200后门端口,直接执行系统命令 漏洞利用 攻击机:kali 2022 msfconsole ...
- Javaweb学习第十二弹--Request和Response
XML配置方式编写Servlet 3.0版本之前,仅仅支持XML配置文件的配置方式 1.编写Servlet类 2.在web.xml中配置该Servlet Request和Response Reques ...
- 第六章 C控制语句:分支和跳转
6.1if语句 程序 #define _CRT_SECURE_NO_WARNINGS 1 //coladays.c -- 求出温度低于零度的天数 #include<stdio.h> int ...
- 分布式缓存的一致性 Hash 算法
一.使用一致性 Hash 算法的原因 简单的路由算法可以使用余数 Hash:用服务器数据除缓存数据 KEY 的 Hash 值,余数为服务器列表下标编码.这种算法可以满足大多数的缓存路由需求.但是,当分 ...
- 深入消息队列MQ,看这篇就够了!
大厂面试爱问消息队列 MQ. 因为消息队列MQ,既是大型分布式系统不可缺少的中间件,也是高并发系统的基石中间件. 如果你想要快速掌握消息队列 MQ 最内核的知识,以及消息队列MQ的主流应用场景.主流产 ...