vue前后端分离实现CRUD操作(简略版)

 前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./vendor/bootstrap-4.3.1-dist/css/bootstrap.css">
    <script src="./vendor/jquery/jquery-3.3.1.js"></script>
    <script src="./vendor/popper.js/popper.min.js"></script>
    <script src="./vendor/bootstrap-4.3.1-dist/js/bootstrap.js"></script>
    <script src="./vendor/vue/vue.js"></script>
</head>
<body>
    
    <div class="container" id="workarea">
        <h3 class="mt-5 mb-3">图书管理系统 <small>在库图书{{bookList.length}}本</small></h3>
        <div class="text-right">
            <button class="btn-primary mb-2" v-on:click="showCreateBookDlg">新增图书</button>
        </div>
        <div class="row">
            <div class="col-12">
                <table class="table">
                    <thead>
                    <tr>
                        <th scope="col">序号</th>
                        <th scope="col">ISBN编号</th>
                        <th scope="col">图书名称</th>
                        <th scope="col">图书价格</th>
                        <th scope="col">操作</th>
                    </tr>
                    </thead>
                    <tbody>
                        <!-- virtual DOM -->
                        <tr v-for="(book,idx) in bookList">
                            <td>{{idx+1}}</td>
                            <td>{{book.isbn}}</td>
                            <td>{{book.name}}</td>
                            <td>{{book.price}}</td>
                            <td>
                                <button class="btn btn-primary btn-sm" @click="showUpdateModalDlg(idx)">修改</button>
                                <button class="btn btn-danger btn-sm" @click="showRemoveBookDlg(book.isbn,book.name)">删除</button>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>

         <!-- addBookModal -->
        <div class="modal fade" id="addBookModal" data-backdrop="static" data-keyboard="false" tabindex="-1">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="staticBackdropLabel">创建新图书</h5>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body" id="promptMsg">
                        <form action="/books" method="post">
                            <div class="form-group">
                                <label>ISBN编号</label>
                                <input name="isbn" class="form-control" v-model="newBook.isbn">
                            </div>
                            <div class="form-group">
                                <label>图书名称</label>
                                <input name="name" class="form-control" v-model="newBook.name">
                            </div>
                            <div class="form-group">
                                <label>图书价格</label>
                                <input name="price" class="form-control" v-model="newBook.price">
                            </div>
                        </form>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
                        <button type="button" class="btn btn-primary" @click="createBook">确认保存</button>
                    </div>
                </div>
            </div>
        </div>

        <!-- delBookModal -->
        <div class="modal fade" id="delBookModal" data-backdrop="static" data-keyboard="false" tabindex="-1">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title">操作提示</h5>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body">
                        {{removeBookMsg}}
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
                        <button type="button" class="btn btn-primary" @click="removeBook">确认删除</button>
                    </div>
                </div>
            </div>
        </div>

        <!-- modifyBookModal -->
    <div class="modal fade" id="modifyBookModal" data-backdrop="static" data-keyboard="false" tabindex="-1">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">修改图书信息</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    <form action="/books" method="post">
                        <div class="form-group">
                            <label>ISBN编号</label>
                            <input name="isbn" class="form-control-plaintext" readonly v-model="updatedBook.isbn">
                        </div>
                        <div class="form-group">
                            <label>图书名称</label>
                            <input name="name" class="form-control" v-model="updatedBook.name">
                        </div>
                        <div class="form-group">
                            <label>图书价格</label>
                            <input name="price" class="form-control" v-model="updatedBook.price">
                        </div>
                    </form>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
                    <button type="button" class="btn btn-primary" @click="updateBook">确认保存</button>
                </div>
            </div>
        </div>
    </div>

    </div>

    <script>
          
          //一个Vue对象,可以管控一个网页区域,实现数据绑定和各种操作
          var vm = new Vue({
              el:"#workarea",
              created(){
                this.loadData()
              },
              data(){
                 return {
                    bookList:[],
                    newBook:{},
                    updatedBook:{},
                    removeBookMsg:"",
                    removeBookISBN:""
                 }
              },
              methods:{
                loadData(){
                    $.get('http://127.0.0.1:8080/books',(result)=>{
                        vm.$data.bookList=result.data;
                    });
                },
                showCreateBookDlg(){
                    $("#addBookModal").modal("show");
                },
                showRemoveBookDlg(isbn,name){
                    this.removeBookMsg=`您确认要删除图书《${name}》?`;
                    this.removeBookISBN=isbn;
                    $("#delBookModal").modal("show");
                },
                showUpdateModalDlg(idx){
                    this.updatedBook = this.bookList[idx];
                    $("#modifyBookModal").modal('show');
                },
                updateBook(){
                    let that = this;
                    $.ajax({
                        url:'http://127.0.0.1:8080/book/'+that.updatedBook.isbn,
                        type:'PUT',
                        data:that.updatedBook,
                        dataType:"json",
                        success:function(result){
                            if(result.type=='SUCCESS'){
                                $("#modifyBookModal").modal("hide");
                                let idx = that.bookList.findIndex(function(book){
                                    return book.isbn==that.updatedBook.isbn;
                                });
                                that.bookList.splice(idx,1,that.updatedBook);
                            }
                        }
                    })
                },
                createBook(){
                    $.post('http://127.0.0.1:8080/book',this.newBook, (result)=>{
                        if(result.type=='SUCCESS'){
                            this.bookList.push(this.newBook);
                            this.newBook={};
                            $("#addBookModal").modal("hide");
                        }
                    })
                },
                removeBook(){
                    $.ajax({
                      url:'http://127.0.0.1:8080/book/'+this.removeBookISBN,
                      type:'DELETE',
                      success:function(result){
                            if(result.type=='SUCCESS'){
                                $("#delBookModal").modal("hide");
                                let bookList = vm.$data.bookList;
                                let idx = bookList.findIndex(function(book){
                                    return book.isbn==vm.$data.removeBookISBN;
                                });
                                vm.$data.bookList.splice(idx,1);
                            }
                      }
                    });
                }
              }
          });

    </script>


</body>
</html>

后端代码

后端代码https://blog.csdn.net/qq_66228897/article/details/132224790?spm=1001.2014.3001.5501

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值