1. 程式人生 > >Vue.js 使用Vue.js和Jquery做增刪改查

Vue.js 使用Vue.js和Jquery做增刪改查

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="bootstrap-4.1.3-dist/css/bootstrap.css" rel="stylesheet"/>
    <style type="text/css">
        table thead tr th {
            text-align: center;
        }
    </style>
    <script src="js/jquery-3.3.1.js"></script>
    <script src="js/axios.min.js"></script>
    <!--<link rel="stylesheet" href="css/index.css">-->
    <script src="js/vue.js"></script>
    <!--<script src="js/index.js"></script>-->
</head>
<style>
    /***** 結合CSS樣式一起使用 *****/
    [v-cloak] {
        display: none !important;
    }
</style>
<body>
<div id="app" v-cloak style="padding:20px;">
    <div id="index" class="panel panel-primary">
        <div class="panel-heading">
            搜尋名字: <input type="text" id="name" name="name"> &nbsp;&nbsp;
            班級號:
            <select id="classid" name="classid">
                <option value="">請選擇</option>
                <option v-for="item in clist" :value=item.classid>{{item.classname}}</option>
            </select>
            &nbsp;&nbsp;
            教師名:
            <select id="teacherid" name="teacherid">
                <option value="">請選擇</option>
                <option v-for="item in tlist" :value=item.teacherid>{{item.teachername}}</option>
            </select> &nbsp;&nbsp;
            <input type="button" @click.prevent="find()" value="搜尋" id="find" name="find">&nbsp;&nbsp;
            <input type="button" @click.prevent="add()" value="新增" id="add" name="add">
        </div>
        <!--width="90%" border="1"-->
        <table class="table table-bordered table-striped text-center">
            <tr>
                <td>編號</td>
                <td>名字</td>
                <td>班級名</td>
                <td>教師名</td>
                <td>操作</td>
            </tr>
            <tr v-for="item in list" :key="item.id">
                <td>{{item.id}}</td>
                <td>{{item.name}}</td>
                <td>{{item.classname}}</td>
                <td>{{item.teachername}}</td>
                <td>
                    <a href="#" @click.prevent="remove(item.id)">刪除</a>&nbsp;
                    <a href="#" @click.prevent="edit(item)">修改</a>&nbsp;
                </td>
            </tr>
        </table>
        <br>
        <div><a href="#" @click.prevent="homepage">首頁</a>&nbsp;
        <a href="#" @click.prevent="uppage">上一頁</a>
        當前頁:{{pagebean.page}}&nbsp;
        最大頁數:{{pagebean.maxPages}}&nbsp;
        <a href="#" @click.prevent="down">下一頁</a>
        <a href="#" @click.prevent="lastpage">末頁</a>&nbsp;&nbsp;&nbsp;
        <input type="number" style="width: 50px" id="pagex" min="1" >&nbsp;<input type="button" @click.prevent="go()" value="跳轉" id="t">
        &nbsp;&nbsp;&nbsp;&nbsp;
        <select id="limit" @change="changge()">
        <option>10</option>
        <option>20</option>
        </select>
        </div>
        <!--<template>-->
            <!--<v-pagination :total=pagebean.maxPages @page-change="pageChange1" @page-size-change="pageSizeChange1"></v-pagination>-->
        <!--</template>-->
        <input type="hidden" value="" id="page">
    </div>
    <!--編輯頁面-->
    <div id="edit">
        <table class="table table-bordered table-striped text-center">
            <input type="hidden" id="hid">
            <tr>
                <td>姓名</td>
                <td><input type="text" name="ename" id="ename"></td>
            </tr>
            <tr>
                <td>班級</td>
                <td>
                    <select id="eclassid" name="eclassid">
                        <option value="">請選擇</option>
                        <option v-for="item in clist" :value=item.classid>{{item.classname}}</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>教師</td>
                <td><select id="eteacherid" name="eteacherid">
                    <option value="">請選擇</option>
                    <option v-for="item in tlist" :value=item.teacherid>{{item.teachername}}</option>
                </select></td>
            </tr>
            <tr>
                <td><input type="button" @click.prevent="confirm" value="確定"></td>
                <td><input type="button" @click.prevent="back" value="返回"></td>
            </tr>
        </table>
    </div>
</div>
<script>
    $('#edit').hide();
    //例項化vue
    var vm = new Vue({
        el: '#app',
        data: {
            list: find().list,//學生資料
            clist: class_bind(),//班級資料
            tlist: teacher_bind(),//教員資訊
            pagebean: find().pagebean//分頁資訊
        },
        created() {//佈置完之後執行的區域

        },
        methods: {
            find() {//查詢
                this.list = find().list
                this.pagebean = find().pagebean
            }
            ,
            remove(id) {//刪除
                if (confirm('確定刪除嗎?')) {
                    remove(id);
                    this.list = find().list
                    this.pagebean = find().pagebean
                }

            }, back() {//點選返回
                $('#index').show();
                $('#edit').hide();
                //該專案的所有ajax請求可以改成以下的axios請求
                // let params=new URLSearchParams();
                // params.append("limit","20");
                // params.append("name","張三");
                // axios.post('studentaction.action?methodName=find',params).then(function (value) {
                //     console.log(value.data);//value.data為返回的資料
                // })
            },
            edit(item) {//點選修改
                $('#index').hide();
                $('#edit').show();
                $('#hid').val(item.id);
                $('#ename').val(item.name);
                $('#eclassid').val(item.classid);
                $('#eteacherid').val(item.teacherid);
            }, add() {//點選新增
                $('#index').hide();
                $('#edit').show();

            }, confirm() {//確定按鈕
                if ($('#hid').val() == "") {//為空則是新增
                    add('add');
                } else {
                    add('edit');//修改
                }
                this.list = find().list
                this.pagebean = find().pagebean
            },
            homepage() {//點選首頁
                $('#page').val(1);
                this.list = find().list
                this.pagebean = find().pagebean
            }, uppage() {//上一頁
                var up = $('#page').val() == 1 ? 1 : parseInt($('#page').val()) - 1;
                $('#page').val(up);
                this.list = find().list
                this.pagebean = find().pagebean
            }, down() {//下一頁
                var dowm = $('#page').val() == this.pagebean.maxPages ? this.pagebean.maxPages : parseInt($('#page').val()) + 1;
                $('#page').val(dowm);
                this.list = find().list
                this.pagebean = find().pagebean
            }, lastpage() {//末頁
                $('#page').val(this.pagebean.maxPages);
                this.list = find().list
                this.pagebean = find().pagebean
            }, go() {//跳轉
                if ($('#pagex').val() >= 0 && $('#pagex').val() <= this.pagebean.maxPages) {
                    $('#page').val($('#pagex').val());
                    this.list = find().list
                    this.pagebean = find().pagebean
                } else {
                    alert('請輸入正確頁數');
                }

            }, changge() {//換數量的方法
                this.list = find().list
                this.pagebean = find().pagebean
            }
        }
    });

    /**
     * 查詢方法
     * @returns {*}
     */
    function find() {
        var data2;
        $.ajax({
            type: "post",
            url: "studentaction.action?methodName=find",
            dataType: "json",
            data: {//傳給servlet的資料,
                name: $('#name').val(),
                classid: $('#classid').val(),
                teacherid: $('#teacherid').val(),
                page: $('#page').val(),
                limit: $('#limit').val(),
                d: new Date()
            },
            async: false,//加上這個ajax先執行
            success: function (data) {
                $('#page').val(data.pagebean.page);
                //返回處理的方法
                console.log(data);
                data2 = data;
            }
        });
        return data2;
    }


    /**
     * 班級資料繫結
     */
    function class_bind() {
        var data2;
        $.ajax({
            type: "post",
            url: "studentaction.action?methodName=cfind",
            dataType: "json",
            data: {//傳給servlet的資料,
                d: new Date()
            },
            async: false,//加上這個ajax先執行
            success: function (data) {
                //返回處理的方法
                data2 = data;
            }
        });
        return data2;
    }

    /**
     * 教員資料繫結
     */
    function teacher_bind() {
        var data2;
        $.ajax({
            type: "post",
            url: "studentaction.action?methodName=tfind",
            dataType: "json",
            data: {//傳給servlet的資料,
                d: new Date()
            },
            async: false,//加上這個ajax先執行
            success: function (data) {
                //返回處理的方法
                data2 = data;
            }
        });
        return data2;
    }

    /**
     * 新增和修改
     */
    function add(index) {
        var ur = "studentaction.action?methodName=add";
        if (index == 'edit') {
            ur = "studentaction.action?methodName=edit";
        }
        $.ajax({
            type: "post",
            url: ur,
            dataType: "json",
            data: {//傳給servlet的資料,
                id: $('#hid').val(),
                name: $('#ename').val(),
                classid: $('#eclassid').val(),
                teacherid: $('#eteacherid').val(),
                d: new Date()
            },
            async: false,//加上這個ajax先執行
            success: function (data) {
                if (data) {
                    alert('操作成功');
                    $('#index').show();
                    $('#edit').hide();
                    $('#hid').val("");
                    $('#ename').val("");
                    $('#eclassid').val("");
                    $('#eteacherid').val("");
                } else {
                    alert('操作失敗')
                }
            }
        });

    }

    /**
     * 刪除
     */
    function remove(id) {
        $.ajax({
            type: "post",
            url: "studentaction.action?methodName=remove",
            dataType: "json",
            data: {//傳給servlet的資料,
                id: id,
                d: new Date()
            },
            async: false,//加上這個ajax先執行
            success: function (data) {
                //返回處理的方法
                if (data) {
                    alert('刪除成功')
                } else {
                    alert('刪除失敗');
                }
            }
        });
    }

</script>
</body>
</html>