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+iview实现分页及查询功能
Nov 17 Vue.js
基于vue+echarts数据可视化大屏展示的实现
Dec 25 Vue.js
vue中实现点击空白区域关闭弹窗的两种方法
Dec 30 Vue.js
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
开发一个封装iframe的vue组件
Mar 29 Vue.js
vue使用节流函数的踩坑实例指南
May 20 Vue.js
Vue CLI中模式与环境变量的深入详解
May 30 Vue.js
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
vue实现列表拖拽排序的示例代码
Apr 08 Vue.js
vue3种table表格选项个数的控制方法
Apr 14 Vue.js
vue @ ~ 相对路径 路径别名设置方式
Jun 05 Vue.js
Vue2项目中对百度地图的封装使用详解
Jun 16 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中sprintf与printf函数的用法及区别
2016/01/08 PHP
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
javascript每日必学之循环
2016/02/19 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
python复制文件代码实现
2013/12/23 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
Python版中国省市经纬度
2020/02/11 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
Html5新标签解释及用法
2012/02/17 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
普通话宣传标语
2014/06/26 职场文书
工会工作先进事迹
2014/08/18 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
写给领导的感谢信
2015/01/22 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
python和anaconda的区别
2022/05/06 Python