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项目实现主题切换的多种方法
Nov 26 Vue.js
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
Dec 04 Vue.js
vue中父子组件的参数传递和应用示例
Jan 04 Vue.js
vue 项目@change多个参数传值多个事件的操作
Jan 29 Vue.js
详解vite+ts快速搭建vue3项目以及介绍相关特性
Feb 25 Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
Vue和Flask通信的实现
May 19 Vue.js
Vue3中的Refs和Ref详情
Nov 11 Vue.js
vue中 this.$set的使用详解
Nov 17 Vue.js
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
vue3 自定义图片放大器效果的示例代码
Jul 23 Vue.js
vue实现input输入模糊查询的三种方式
Aug 14 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
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
PHP5.3新特性小结
2016/02/14 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
2011/03/03 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
微信小程序实现人脸识别
2018/05/25 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
复制粘贴功能的Python程序
2008/04/04 Python
Python之Web框架Django项目搭建全过程
2017/05/02 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
Python格式化输出%s和%d
2018/05/07 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
护理个人求职信范文
2014/01/08 职场文书
电脑租赁公司创业计划书
2014/01/08 职场文书
授权委托书怎么写
2014/04/03 职场文书
督导岗位职责范本
2015/04/10 职场文书
律师函格式范本
2015/05/27 职场文书
2016新年致辞
2015/08/01 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
小学记事作文之200字
2019/08/06 职场文书