vue实现图书管理系统


Posted in Vue.js onDecember 29, 2020

本文实例为大家分享了vue实现图书管理系统的具体代码,供大家参考,具体内容如下

组件代码

<template>
 <div id="app">
  <div class="grid">
   <div>
    <h1>图书管理</h1>
    <div class="book">
     <div>
      <label for="id" v-focus>
       编号:
      </label>
      <input type="text" id="id" v-model="id" :disabled="flag">
      <label for="name">
       名称:
      </label>
      <input type="text" id="name" v-model="name">
      <button @click="add(addOrUpdate)" :disabled="subFlag">提交</button>
     </div>
    </div>
   </div>
   <div class="total">
    <span>图书总数:</span>
    <span>{{ totalNum }}</span>
   </div>
   <table>
    <thead>
    <tr>
     <th>编号</th>
     <th>名称</th>
     <th>时间</th>
     <th>操作</th>
    </tr>
    </thead>
    <tbody>
    <tr v-for="book in books">
     <td> {{ book.id }} </td>
     <td> {{ book.name }} </td>
     <td> {{ book.date | date-format }} </td>
     <td>
      <a href="" @click.prevent=" rel="external nofollow" updateBook(book.id)">修改</a>
      <span>|</span>
      <a href="" @click.prevent = 'deleteBook(book.id)'>删除</a>
     </td>
    </tr>
    </tbody>
   </table>
  </div>
 </div>


</template>

<script>
  export default {
   data(){
     return{
       books:[
         {
           id: 1,
           name: '三国演义',
           date: 2525609975000
         },
         {
           id: 2,
           name: '水浒传',
           date: 2525609975000
         },
         {
           id: 3,
           name: '红楼梦',
           date: 2525609975000
         },
         {
           id: 4,
           name: '西游记',
           date: 2525609975000
         }
          ],
       id:'',
       name:'',
       flag:false, // id输入框是否可修改标识
       addOrUpdate: 0, // 0代表添加 1代表修改
       subFlag:false, // 提交按钮是否禁用(图书存在时禁用)

     }
   },

    methods:{
     // 添加图书的方法
     add() {
       if(this.addOrUpdate===0){
         // 添加图书
         this.books.push({
           id: this.id,
           name: this.name,
           date: new Date()
         });
       }else{
         const book = this.books.filter((book)=>{
           return book.id === this.id;
         });
         book[0].name = this.name
       }

      // 添加之后清空input框
       this.id = '';
       this.name = '';
       this.flag = false

     },
      // 更新图书的方法
      updateBook(id){
        this.addOrUpdate = 1;
       // 需要修改的当前图书信息
       const book = this.books.filter((book)=>{
         return book.id === id;
       });

       // 让input框显示相应内容
       this.id = book[0].id;
       this.name = book[0].name;
       this.flag = true;

      },
      deleteBook(id){
       // 获取当前图书的索引
       const index = this.books.findIndex((book)=>{
         return book.id === id
       });

       this.books.splice(index, 1)

      }
    },
    computed:{
      totalNum(){
        return this.books.length
      }
    },
    // 自定义局部指令
    directives:{
     focus:{
       inserted(el){
         // 自动聚焦
         el.focus()
       }
     }
    },

    // 监视图书是否存在
    watch:{
     name:{
       deep:true,
       handler(val){
         const book = this.books.find((book)=>{
           return book.name === val
         });
         if(book){
           this.subFlag = true
         }else{
           this.subFlag = false
         }
       }
     }
    }

  }
</script>


<style type="text/css">
 .grid {
  margin: auto;
  width: 530px;
  text-align: center;
 }
 .grid table {
  border-top: 1px solid #C2D89A;
  width: 100%;
  border-collapse: collapse;
 }
 .grid th,td {
  padding: 10px;
  border: 1px dashed #F3DCAB;
  height: 35px;
  line-height: 35px;
 }
 .grid th {
  background-color: #F3DCAB;
 }
 .grid .book {
  padding-bottom: 10px;
  padding-top: 5px;
  background-color: #F3DCAB;
 }
 .grid .total {
  height: 30px;
  line-height: 30px;
  background-color: #F3DCAB;
  border-top: 1px solid #C2D89A;
 }
</style>

过滤器文件index.js

vue实现图书管理系统

import Vue from 'vue'
import format from 'date-fns/format'

// 自定义过滤器
Vue.filter('date-format', function (value, formatStr='yyyy-MM-dd HH:mm:ss') {
 return format(value, formatStr)
});

main.js引入

import './filters'

vue实现图书管理系统

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
Vue实现图书管理小案例
Dec 03 Vue.js
用vue设计一个日历表
Dec 03 Vue.js
vue项目中openlayers绘制行政区划
Dec 24 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
vue实现轮播图帧率播放
Jan 26 Vue.js
Vue 3自定义指令开发的相关总结
Jan 29 Vue.js
Vue通过懒加载提升页面响应速度
May 10 Vue.js
springboot+VUE实现登录注册
May 27 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
vue中的可拖拽宽度div的实现示例
Apr 08 Vue.js
vue 自定义的组件绑定点击事件
Apr 21 Vue.js
Vue实现随机验证码功能
Dec 29 #Vue.js
vue3+typeScript穿梭框的实现示例
Dec 29 #Vue.js
Vue.extend 登录注册模态框的实现
Dec 29 #Vue.js
vue实现简易的双向数据绑定
Dec 29 #Vue.js
vue中配置scss全局变量的步骤
Dec 28 #Vue.js
为什么推荐使用JSX开发Vue3
Dec 28 #Vue.js
Vue仿百度搜索功能
Dec 28 #Vue.js
You might like
php header示例代码(推荐)
2010/09/08 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
javascript面向对象之二 命名空间
2011/02/08 Javascript
使用Mootools动态添加Css样式表代码,兼容各浏览器
2011/12/12 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
原生js实现弹幕效果
2020/11/29 Javascript
Python 列表(List)操作方法详解
2014/03/11 Python
在Python中使用Neo4j数据库的教程
2015/04/16 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
浅谈Python爬虫基本套路
2019/03/25 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
Django自带的用户验证系统实现
2020/12/18 Python
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
财务部总监岗位职责
2014/03/12 职场文书
经典禁毒标语
2014/06/16 职场文书
农村党建工作汇报材料
2014/10/27 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
诚信考试主题班会
2015/08/17 职场文书
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS
使用python求解迷宫问题的三种实现方法
2022/03/17 Python