首页 > 其他分享 >用vue+elementui写了一个图书管理系统

用vue+elementui写了一个图书管理系统

时间:2023-05-11 11:01:47浏览次数:41  
标签:vue name 管理系统 elementui 文件夹 let path children

用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,name,管理系统,elementui,文件夹,let,path,children
From: https://www.cnblogs.com/dalaba/p/17390409.html

相关文章

  • vue node报错ERESOLVE unable to resolve dependency tree
    解决:ERESOLVEunabletoresolvedependencytree小张不厌学于2022-08-2517:00:44发布30549收藏102文章标签:npmvue.js前端版权华为云开发者联盟该内容已被华为云开发者联盟社区收录加入社区NPM版本问题报错的解决方案在安装项目依赖时,很大可能会遇到安装不成功的问题......
  • vue批量注册
    vue批量注册组件在components新建index.js文件importVuefrom'vue'//使用webpack读取文件//这段代码表示读取./目录下且不加载子目录找到.vue的文件constimportCom=require.context('./',false,/\.vue/)importCom.keys().forEach((item)=>{//获取......
  • 记录如何在vue中使用mock模拟数据
    1.mock介绍mock:假的。mock数据意思是:真的假数据。【真的即为符合接口规范要求的。假数据:数据是自己造的,不是真实数据。】mock实现方式操作流程:1.本地启mock服务器【用express写接口或本地用专门的mock服务】2.线上的mock服务器mock.js基本语法介绍:mock.js基本语法......
  • 关于vue slot 的多级传递使用
    关于vueslot的多级传递使用关于slot以及scope-slot的基本使用,官方文档已经有了详细的介绍:点击这里查看,这里就不复述了。但是在实际的使用过程中,常常会出现外部组件内容需要多级嵌套传递到目标组件,那么slot可以如何实现呢?现在假设有A,B,C三个组件,层级关系为A>B>C(爷爷,父亲,儿子)......
  • 使用vue2+element-ui+vuex实现后台管理系统的头部背景色动态点击修改
    **以下内容仅供自己学习使用话不多说,直接上代码1.首先去vuex里面importVuefrom'vue';importVuexfrom'vuex';Vue.use(Vuex);conststore=newVuex.Store({state:{headerColor:'default-header',//定义一个默认的颜色},mutations:{ //setHe......
  • vue2 对vxe-table组件二次封装并全局引入
    要求新组件的写法要和旧组件保持一致,那么保留原本的插槽,属性,方法写法如下,以vxe-table为例组件封装<template><vxe-gridref="vxeGrid"v-bind="$attrs"v-on="$listeners"@filter-change="filterChange"><templatev-for="slotinslots......
  • vue数据埋点
    时间比较紧迫,匆忙写下...比如现在记录点击按钮的次数main.js中自定义埋点方法Vue.directive('point',{bind(el,binding){el.addEventListener('click',()=>{console.log(el,binding)//这里写操作埋点的时候需要做的事情,比如调接口})}})......
  • java基于springboot+vue的房屋租赁租房系统、租房管理系统,附源码+数据库,免费包运行,适
    1、项目介绍java基于springboot+vue的房屋租赁租房系统、租房管理系统,分为管理员和用户。用户的功能有:登录、注册、房屋信息、交流论坛、房屋咨询、在线客服、个人中心、我的收藏、我的发布、预约看房管理、在线签约管理、租赁评价管理、管理员的功能有:登录、个人中心、用户管......
  • Vue中的v-model
    Vue中的v-modelVue2v-model只能用于表单类元素上,即类似于输入类元素那样有value值的,比如select框、多选框、单选框、输入框。这就是双向绑定,绑定的就是valueVue3改动比较大,且用的频繁,建议看官方文档相关链接:https://cn.vuejs.org/guide/components/v-model.html......
  • 34基于Java的学生选课系统或学生课程管理系统
    本系统是基于Java的学生选课信息管理系统,可以有效的对学生选课信息、学生个人信息、教师个人信息等等进行管理。摘要:基于java的学生课程管理系统,基于java的学生选课系统,javaWeb的学生选课系统,学生成绩管理系统,课表管理系统,学院管理系统,大学生选课系统设计与实现,网上选课系统,课......