vue表格增删查改

html代码

<div class="addLine" id="app">

        <div>

            <template>

                <el-table :data="tableData" border stripe style="width: 500px">

                    <el-table-column fixed prop="" label="操作" width="80%">

                        <template slot-scope="scope">

                            <div class="addLine-change-icon">

                                <div class="addLine-change-icon-left">

                                    <a href="javascript:;" onclick="showPop('#editPop')"

                                        @click="editData(scope.row,scope.$index)">

                                        <i class="layui-icon show-icon">&#xe6b2;</i></a>

                                </div>

                                <div class="addLine-change-icon-left">

                                    <a href="javascript:;" @click="open(scope.$index,tableData)">

                                        <i class=" layui-icon show-icon">&#xe640;</i>

                                    </a>

                                </div>

                            </div>

                        </template>

                    </el-table-column>

                    <el-table-column prop="userInfo_1" label="题目1" width="200%"></el-table-column>

                    <el-table-column prop="userInfo_2" label="题目2" width="200%"></el-table-column>

                    <el-table-column prop="userInfo_2" label="题目3" width="200%"></el-table-column>

                </el-table>

            </template>

            <button type="button" class="layui-btn addLine-btn" onclick="showPop('#searchPop')"><i

                    class="layui-icon"></i>添加</button>

            <div><input type="text" class="layui-input" class="layui-input" v-model="listJson"></div>

            <template>

                <el-table :data="arr2" border stripe style="width: 500px">

                    <el-table-column fixed prop="" label="操作" width="80%">

                        <template slot-scope="scope">

                            <div class="addLine-change-icon">

                                <div class="addLine-change-icon-left">

                                    <a href="javascript:;" onclick="showPop('#editPop2')"

                                        @click="editData(scope.row,scope.$index)">

                                        <i class="layui-icon show-icon">&#xe6b2;</i></a>

                                </div>

                                <div class="addLine-change-icon-left">

                                    <a href="javascript:;" @click="open(scope.$index,arr2)">

                                        <i class=" layui-icon show-icon">&#xe640;</i>

                                    </a>

                                </div>

                            </div>

                        </template>

                    </el-table-column>

                    <el-table-column prop="userInfo_1" label="题目1" width="200%"></el-table-column>

                    <el-table-column prop="userInfo_2" label="题目2" width="200%"></el-table-column>

                    <el-table-column prop="userInfo_2" label="题目3" width="200%"></el-table-column>

                </el-table>

            </template>

            <button type="button" class="layui-btn addLine-btn" onclick="showPop('#searchPop2')"><i

                    class="layui-icon"></i>添加</button>

            <div><input type="text" class="layui-input" class="layui-input" v-model="listJson2"></div>

        </div>

        <!--添加弹框-->

        <div class="add-box " id="searchPop" style="display: none;">

            <div class="add-con">

                <div class="page-body">

                    <div lay-filter="breadcrumb" class="layui-breadcrumb content-breadcrumb"

                        style="visibility: visible;"><a><cite>添加一行</cite></a></div>

                    <div class="addUp-close"><a href="javascript:void(0)" class="addUp-close-btn"

                            onclick="hidePop('#searchPop')"><i aria-hidden="true" class="fa fa-times"></i></a></div>

                </div>

                <form class="add-form">

                    <div class="addUp-item">

                        <div class="addUp-item-title">题目1</div>

                        <div><input type="text" class="layui-input" v-model="userInfo_1"></div>

                    </div>

                    <div class="addUp-item">

                        <div class="addUp-item-title">题目2</div>

                        <div><input type="text" class="layui-input" v-model="userInfo_2"></div>

                    </div>

                    <div class="addUp-item">

                        <div class="addUp-item-title">题目3</div>

                        <div><input type="text" class="layui-input" v-model="userInfo_3"></div>

                    </div>

                </form>

                <div class="addUp-bottom-btn">

                    <button type="button" class="layui-btn" onclick="hidePop('#searchPop')" @click="addData">确定</button>

                    <button type="button" class="layui-btn layui-btn-primary"

                        onclick="hidePop('#searchPop')">取消</button>

                </div>

            </div>

        </div>

        <div class="add-box " id="searchPop2" style="display: none;">

            <div class="add-con">

                <div class="page-body">

                    <div lay-filter="breadcrumb" class="layui-breadcrumb content-breadcrumb"

                        style="visibility: visible;"><a><cite>添加一行</cite></a></div>

                    <div class="addUp-close"><a href="javascript:void(0)" class="addUp-close-btn"

                            onclick="hidePop('#searchPop')"><i aria-hidden="true" class="fa fa-times"></i></a></div>

                </div>

                <form class="add-form">

                    <div class="addUp-item">

                        <div class="addUp-item-title">题目1</div>

                        <div><input type="text" class="layui-input" v-model="userInfo_1"></div>

                    </div>

                    <div class="addUp-item">

                        <div class="addUp-item-title">题目2</div>

                        <div><input type="text" class="layui-input" v-model="userInfo_2"></div>

                    </div>

                    <div class="addUp-item">

                        <div class="addUp-item-title">题目3</div>

                        <div><input type="text" class="layui-input" v-model="userInfo_3"></div>

                    </div>

                </form>

                <div class="addUp-bottom-btn">

                    <button type="button" class="layui-btn" onclick="hidePop('#searchPop2')"

                        @click="addData2">确定</button>

                    <button type="button" class="layui-btn layui-btn-primary"

                        onclick="hidePop('#searchPop2')">取消</button>

                </div>

            </div>

        </div>

        <!--编辑弹框-->

        <div class="add-box " id="editPop" style="display: none;">

            <div class="add-con">

                <div class="page-body">

                    <div lay-filter="breadcrumb" class="layui-breadcrumb content-breadcrumb"

                        style="visibility: visible;"><a><cite>编辑信息</cite></a></div>

                    <div class="addUp-close"><a href="javascript:void(0)" class="addUp-close-btn"

                            onclick="hidePop('#editPop')"><i aria-hidden="true" class="fa fa-times"></i></a></div>

                </div>

                <form class="add-form">

                    <div class="addUp-item">

                        <div class="addUp-item-title">题目1</div>

                        <div><input type="text" class="layui-input" v-model="editForm.userInfo_1"></div>

                    </div>

                    <div class="addUp-item">

                        <div class="addUp-item-title">题目2</div>

                        <div><input type="text" class="layui-input" v-model="editForm.userInfo_2"></div>

                    </div>

                    <div class="addUp-item">

                        <div class="addUp-item-title">题目3</div>

                        <div><input type="text" class="layui-input" v-model="editForm.userInfo_3"></div>

                    </div>

                </form>

                <div class="addUp-bottom-btn">

                    <button type="button" class="layui-btn" onclick="hidePop('#editPop')" @click="confirm">确定</button>

                    <button type="button" class="layui-btn layui-btn-primary" onclick="hidePop('#editPop')">取消</button>

                </div>

            </div>

        </div>

        <div class="add-box " id="editPop2" style="display: none;">

            <div class="add-con">

                <div class="page-body">

                    <div lay-filter="breadcrumb" class="layui-breadcrumb content-breadcrumb"

                        style="visibility: visible;"><a><cite>编辑信息</cite></a></div>

                    <div class="addUp-close"><a href="javascript:void(0)" class="addUp-close-btn"

                            onclick="hidePop('#editPop2')"><i aria-hidden="true" class="fa fa-times"></i></a></div>

                </div>

                <form class="add-form">

                    <div class="addUp-item">

                        <div class="addUp-item-title">题目1</div>

                        <div><input type="text" class="layui-input" v-model="editForm.userInfo_1"></div>

                    </div>

                    <div class="addUp-item">

                        <div class="addUp-item-title">题目2</div>

                        <div><input type="text" class="layui-input" v-model="editForm.userInfo_2"></div>

                    </div>

                    <div class="addUp-item">

                        <div class="addUp-item-title">题目3</div>

                        <div><input type="text" class="layui-input" v-model="editForm.userInfo_3"></div>

                    </div>

                </form>

                <div class="addUp-bottom-btn">

                    <button type="button" class="layui-btn" onclick="hidePop('#editPop2')" @click="confirm2">确定</button>

                    <button type="button" class="layui-btn layui-btn-primary" onclick="hidePop('#editPop2')">取消</button>

                </div>

            </div>

        </div>

    </div>

js代码

function showPop(id) {

        $(id).addClass('show');

    }

    function hidePop(id) {

        $(id).removeClass('show');

    }

    var vm = new Vue({

        el: '#app',

        data() {

            return {

                tableData: [{

                        'userInfo_1': '11',

                        'userInfo_2': '11',

                        'userInfo_3': '11',

                    },

                    {

                        'userInfo_1': '11',

                        'userInfo_2': '11',

                        'userInfo_3': '11',

                    },

                ],

                arr2: [{

                    'userInfo_1': '11',

                    'userInfo_2': '11',

                    'userInfo_3': '11',

                }, ],

                userInfo_1: '',

                userInfo_2: '',

                userInfo_3: '',

                editForm: {

                    'userInfo_1': '11',

                    'userInfo_2': '11',

                    'userInfo_3': '11',

                },

                editIndex: '',

                listJson: '',

                listJson2: '',

            }

        },

        methods: {

            open(index, rows) {

                this.$confirm('确认删除?', '确认信息', {

                        distinguishCancelAndClose: true,

                        showClose: false,

                        confirmButtonText: '确定',

                        cancelButtonText: '取消'

                    })

                    .then(() => {

                        rows.splice(index, 1);

                    })

                    .catch(action => {

                    });

            },

            addData: function () {

                var str = {

                    userInfo_1: this.userInfo_1,

                    userInfo_2: this.userInfo_2,

                    userInfo_3: this.userInfo_3

                };

                this.tableData.push(str);

                this.userInfo_1 = '';

                this.userInfo_2 = '',

                    this.userInfo_3 = ''

                this.listJson = JSON.stringify(this.tableData);

            },

            addData2: function () {

                var str = {

                    userInfo_1: this.userInfo_1,

                    userInfo_2: this.userInfo_2,

                    userInfo_3: this.userInfo_3

                };

                this.arr2.push(str);

                this.userInfo_1 = '';

                this.userInfo_2 = '',

                    this.userInfo_3 = ''

                this.listJson2 = JSON.stringify(this.arr2);

            },

            //编辑

            editData: function (item, index) {

                this.editIndex = index;

                this.editForm = {

                    userInfo_1: item.userInfo_1,

                    userInfo_2: item.userInfo_2,

                    userInfo_3: item.userInfo_3

                };

            },

            //编辑提交

            confirm() {

                Vue.set(this.tableData, this.editIndex, this.editForm);

                JSON.stringify(this.tableData);

            },

            confirm2() {

                Vue.set(this.arr2, this.editIndex, this.editForm);

                JSON.stringify(this.arr2);

            },

        }

    });

项目心得:vue的this指向,表格头部固定,elementUI的部件使用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容