vue-table数据增删改查真分页


@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <script src="~/Scripts/vue.js"></script>
    <link href="~/Content/Iview/iview.css" rel="stylesheet" />
    <script src="~/Scripts/IView/iview.min.js"></script>
    <script src="~/Scripts/axios.min.js"></script>
    <script src="~/Scripts/vee-validate2/vee-validate.js"></script>
    @*<script src="https://cdn.jsdelivr.net/vee-validate/2.0.0-rc.3/vee-validate.min.js"></script>*@

    <style scoped>
        .paging {
            float: right;
            margin-top: 10px;
        }
        input.invalid {
            border-color: red;
        }
        .errorColor {
            color: red;
        }
    </style>
</head>
<body>
    <div>
    </div>

    <div id="app1">
        {{ message }}
    </div>
 
    <div id="app2" >

        <input type="text" v-model="params.FName" placeholder="输入关键字查询" />
        <button v-on:click="queryData">查询</button>
        @*<p v-for="item in data">
                {{item.userName}}
            </p>*@
        <template>
            <i-table border v-bind:loading="page.loading" v-bind:columns="historyColumns" v-bind:data="data"></i-table>
            <Page ref="pages" placement="top" size="small"
                  show-total show-sizer
                  :current="params.offset" :page-size="params.limit"
                  :total="page.totalCount" :class="paging"
                  :show-elevator="true"
                  @*注意这里的page-size-opts绑定,不支持省略v-bind绑定*@
                  v-bind:page-size-opts="page.arrPageSize"
                  @@on-change="changePage" @@on-page-size-change='handlePageSize'>
            </Page>
        </template>

        <form novalidate>
            <template>
                @*<Button v-on:click="modelDialogOk.modal = true">用户添加</Button>*@
                @*添加数据弹层*@
                <Modal v-model="modelDialogOk.modal"
                       title="二开用户添加"
                       @@on-ok="ok" v-bind:loading="modelDialogOk.loading"
                       @@on-cancel="cancel">
                    <content>
                        <p>ID:{{user.ID}}</p>
                        <p>账号/姓名:{{user.userName}}</p>
                        <div>
                            权限:<Select name="writeRight" v-model="model_right" >
                                <option value="" key="">请选择</option>
                                <Option v-for="item in rightData" v-bind:value="item.writeRight" v-bind:key="item.writeRight">{{ item.writeRight }}</Option>
                            </Select>
                        </div>
                        <br />
                        <div v-bind:class="modelDialogOk.errorColor">{{errorMsg}}</div>
                    </content>
                </Modal>
                @*删除提醒*@
                <Modal v-model="modelDialogDelete.modal"
                       title="确定删除二开账户吗?"
                       @@on-ok="del" v-bind:loading="modelDialogDelete.loading"
                       @@on-cancel="cancel">
                    <content>
                        <p>ID:{{user.ID}}</p>
                        <p>账号/姓名:{{user.userName}}</p>
                    </content>
                </Modal>
            </template>
        </form>
    </div>
    <script>
        var vm1 = new Vue({
            el: '#app1',
            data: {
                message: '用户列表:'
            }
        });
    var vm2=new Vue({
        el: '#app2',
        data: {
            //csss类
            paging: "paging",
            //数据
            data: [],
            rightData: [],
            model_right: '',
            historyColumns: [
                          {
                              title: 'ID',
                              key: 'ID'
                          },
                         {
                            title: '用户',
                            key: 'userName',
                            render: (h, params) => {
                                return h('div', [
                                    h('Icon', {
                                        props: {
                                            type: 'person'
                                        }
                                    }),
                                    h('strong', params.row.userName)
                                ]);
                            }
                         },
                         {
                             title: "权限组",
                             key: "writeRight"
                         },
                         {
                             title: 'Action',
                             key: 'action',
                             width: 180,
                             align: 'center',
                             render: (h, params) => {
                                 return h('div', [
                                     h('Button', {
                                         props: {
                                             type: 'primary',
                                             size: 'small'
                                         },
                                         attrs: {
                                             //根据内容设置添加按钮是否可用
                                             disabled: vm2.data[params.index].writeRight.indexOf("不存在")> -1 ? false : true
                                         },
                                         style: {
                                             marginRight: '5px'
                                         },
                                         on: {
                                             click: () => {
                                                 vm2.showAddData(params.index)
                                             }
                                         }
                                     }, '添加'),
                                     h('Button', {
                                         props: {
                                             type: 'success',
                                             size: 'small'
                                         },
                                         attrs: {
                                             //根据内容设置添加按钮是否可用
                                             disabled: vm2.data[params.index].writeRight.indexOf("不存在") == -1 ? false : true
                                         },
                                         style: {
                                             marginRight: '5px'
                                         },
                                         on: {
                                             click: () => {
                                                 vm2.editData(params.index)
                                             }
                                         }
                                     }, '编辑'),
                                     h('Button', {
                                         props: {
                                             type: 'error',
                                             size: 'small'
                                         },
                                         attrs: {
                                             //根据内容设置添加按钮是否可用
                                             disabled: vm2.data[params.index].writeRight.indexOf("不存在") == -1 ? false : true
                                         },
                                         on: {
                                             click: () => {
                                                 vm2.showDelete(params.index)
                                             }
                                         }
                                     }, '删除')
                                 ]);
                             }
                         }
            ],
            page:{
                //分页数
                arrPageSize: [10, 20, 30, 40,50,100],
                分页大小
                //pageSize: 10,
                // //当前页面
                //pageCurrent: 1,
                //总分页数
                pageCount: 1,
                //总数
                totalCount: 80,
                //表格是否加载中
                loading:false
            },
            params: {
                //需要跳转的页面,pageCurrent
                offset: 1,
                //页大小
                limit: 10,
                //关键字查询
                FName: ""
            },
            user: {
                ID: "",
                userName: "",
                index: 0, //只是表格行序号,与用户表对象没联系,用户删除后台数据前同时删除表格当前行数据
                isEdit:false
            },
            errorMsg:"",
            modelDialogOk: {
                modal: false,
                loading:true,
                errorColor: "errorColor"
            },
            modelDialogDelete: {
                modal: false,
                loading: true,
                errorColor: "errorColor"
            },
        },
        beforCreate() {
                    },
        created() {
            this.getRight();
            this.queryData();
         },
        watch: {
            FName: function (val) {
                this.params.FName = val;
            }
        },
        methods: {
            //从二开用户表获取权限
            getRight() {
                     axios.post("/Sys/ExUser/GetRight", this.params).then((res) => {
                    this.rightData = res.data;
                })
            },
            //查询表数据
            queryData() {
                this.page.loading = true;
                axios.post("/Sys/ExUser/GetK3Users", this.params).then((res) => {
                    this.data = res.data.data;
                    this.page.totalCount = res.data.total;
                    var a = this.page.totalCount % 10;
                    this.page.pageCount = a == 0 ? parseInt(this.page.totalCount / 10) : parseInt(this.page.totalCount / 10) + 1;
                })
                this.page.loading = false;
            },
            changePage(index) {
                this.params.offset = index;
               // this.page.pageCurrent = index;
                this.queryData();
               },
            handlePageSize(value) {
                this.params.limit = value;
              //  this.page.pageSize = value
                this.queryData();
            },
            showAddData(index) {
                this.user.index = index;
                this.model_right = "";  //权限默认选项
                this.modelDialogOk.modal = true;  //弹层
                this.user.ID=this.data[index].ID;
                this.user.userName = this.data[index].userName;
                this.user.isEdit = false;
                //this.$Modal.info({
                //    title: 'User Info',
                //    content: `ID:${this.data[index].ID}<br>姓名&账号:${this.data[index].userName}`
                //});
            },
            editData(index) {
                this.user.index = index;
                this.model_right = this.data[index].writeRight;  //权限默认选项
                this.modelDialogOk.modal = true;  //弹层
                this.user.ID = this.data[index].ID;
                this.user.userName = this.data[index].userName;
                this.user.isEdit = true;
            },
            removeData(index) {
                this.data.splice(index, 1);
            },
            changeLoading(){
                this.modelDialogOk.loading = false;
                this.$nextTick(() => {
                    this.modelDialogOk.loading = true;
                });
            },
            showDelete(index) {
                this.model_right = "";  //权限默认选项
                this.modelDialogDelete.modal = true;  //弹层
                this.user.ID = this.data[index].ID;
                this.user.userName = this.data[index].userName;
                this.user.index = index;
                this.user.isEdit = false;
            },
            ok () {
                   if (this.model_right == "") {
                       this.errorMsg = "数据不完整";
                       return this.changeLoading();
                   }
                   else {
                       var status = 200;
                       var msg = "添加数据成功";
                       var url = "/Sys/ExUser/Add";
                       if (this.user.isEdit) {
                           url = "/Sys/ExUser/Edit";
                           msg = "修改数据成功";
                       }
                       axios.post(url, {
                           fname: this.user.userName,
                           writeRight: this.model_right
                       }).then((res) => {
                           status = res.data.Status;
                           msg = res.data.msg;
                           if (status == 200) { this.data[this.user.index].writeRight = this.model_right; }
                       });                     
                      
                       this.$Message.info(msg);
                       setTimeout(() => {
                           this.changeLoading();
                           this.modelDialogOk.modal = false;                          
                       }, 1000);
                       return false;
                   }
              
            },
            del() {
                var status = 200;
                var msg = "删除数据成功";
                axios.post("/Sys/ExUser/Delete", {
                    fname: this.user.userName
                }).then((res) => {
                    status = res.data.Status;
                    msg = res.data.msg;
                });
                this.$Message.info(msg);
                setTimeout(() => {    
                    this.modelDialogDelete.modal = false;
                }, 1000);
                if (status == 200) { this.data.splice(this.user.index, 1); }
            },
            cancel () {
                this.$Message.info('Clicked cancel');
            },
        }
    });

    </script>
 

</body>
</html>

 

转载于:https://www.cnblogs.com/fengzh/p/9308500.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值