zoukankan      html  css  js  c++  java
  • layui+vue

    <html>
    <head>
        <meta name="viewport" content="width=device-width">
        <title>Edit</title>
        <link href="/Content/layui-v2.4.5/layui/css/layui.css" rel="stylesheet">
        <script src="/Scripts/jquery-3.3.1.min.js"></script>
        <script src="/Content/layui-v2.4.5/layui/layui.js"></script>
        <script src="/Scripts/vue.min.js"></script>
        <script src="/Scripts/axios.min.js"></script>
    
    <link id="layuicss-layer" rel="stylesheet" href="http://localhost:53731/Content/layui-v2.4.5/layui/css/modules/layer/default/layer.css?v=3.1.1" media="all"></head>
    <body>
      <div style="padding:20px 50px 0px  0px;">
        <div class="layui-form" id="appcontainer">
            <div class="layui-form-item">
                <label class="layui-form-label">名称</label>
                <div class="layui-input-inline" style="300px;">
                    <input type="text" name="rcname" v-model="rc.rcname" lay-verify="required" placeholder="请输入规则集名称" autocomplete="off" class="layui-input">
                </div>
    
                <label class="layui-form-label">状态</label>
                <div class="layui-input-inline">
                    <input type="checkbox" name="rcstate" id="cbRcstate" lay-text="启用|禁用" :checked="rc.rcstate==1?'checked':''" lay-skin="switch">
                </div>
    
    
                <div class="layui-input-inline" style="text-align:right; float:right;">
                    <button class="layui-btn" lay-submit lay-filter="btnSave">保存</button>
                </div>
                <div style="clear:both;"></div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">描述</label>
                <div class="layui-input-block">
                    <textarea class="layui-textarea" name="rcdescription" v-model="rc.rcdescription" placeholder="规则集描述"></textarea>
                </div>
            </div>
    
    
            <div class="layui-form-item">
                <label class="layui-form-label">类型</label>
                <div class="layui-input-inline" style="300px;">
                    <select name="rtid" id="cbRuleType" lay-filter="ruleType">
                        <option value="" selected="selected">请选择</option>
                        <option v-for="rt in ruleType" :value="rt.rtid">{{rt.rname}}</option>
                    </select>
                </div>
    
                <label class="layui-form-label">规则</label>
                <div class="layui-input-inline" style="300px;">
                    <select name="rtid" id="cbRule" lay-filter="rule">
                        <option value="" selected="selected">请选择</option>
                        <option v-for="r in rules" :value="r.rid">{{r.rname}}</option>
                    </select>
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">组成</label>
                <div class="layui-input-block">
                    <table id="tblData" class="layui-table">
                        <thead>
                            <tr>
                                <th>名称</th>
                                <th>类型</th>
                                <th>描述</th>
                                <th style="230px;">操作</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr v-for="r in rc.detail">
                                <td>{{r.rname}}</td>
                                <td>{{r.rtname}}</td>
                                <td>{{r.rdescription}}</td>
                                <td><operation v-on:delrow="delRow" v-model="r" v-bind:rcdid="r.rcdid" v-on:refresh="getDetail"></operation></td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    
    </div>
    
    
    <script type="x-template" id="operation">
        <div>
            <!-- vue组件模板需要一个根元素 -->
            <a class="layui-btn layui-btn-xs" lay-event="up" @@click="fnMove(rcdid,1);">上移</a>
            <a class="layui-btn layui-btn-xs" lay-event="down" @@click="fnMove(rcdid,2);">下移</a>
            <a class="layui-btn layui-btn-xs" lay-event="top" @@click="fnMove(rcdid,3);">置顶</a>
            <a class="layui-btn layui-btn-xs" lay-event="bottom" @@click="fnMove(rcdid,4);">置底</a>
            <a class="layui-btn layui-btn-xs" lay-event="del" @@click="$emit('delrow',value);">删除</a>
        </div>
    </script>
    
    <script type="text/javascript">
    
    
        var app = new Vue({
            el: "#appcontainer",
            data: {
                key: '@ViewBag.Key',
                isAdd: '@ViewBag.IsAdd',
                ruleType: [],
                rules:[],
                rc: {
                    rcid: "",
                    rcname: "",
                    rcstate:"0",
                    rcdescription:"",
                    detail: []
                }
            },
            components:
            {
                // 操作组件
                "operation":
                {
                    template: "#operation",
                    props: ["value","rcdid"],
                    methods: {
                        fnMove: function (rcdid, op) {
                            var vm = this;
                            $.ajax({
                                type: "POST",
                                url: "/RuleCollection/Move?key=" + rcdid + "&op=" + op,
                                dataType: "json",
                                async: false,
                                success: function (res) {
                                    // 调用父实例中的方法 刷新数据
                                    vm.$emit("refresh");
                                    layer.msg("操作成功!");
                                }
                            });
                        }
                    }
                }
            },
            mounted: function () {
                this.getRuleType();
                if (this.isAdd != "1") {
                    // 编辑时 需要初始化数据
                    this.getDetail();
                }
            },
            updated: function () {
                var vm = this;
                layui.use(['form', 'layer', 'element'], function () {
                    var form = layui.form,
                        layer = layui.layer;
    
                    // 规则集状态
                    form.on("switch", function (data) {
                        vm.rc.rcstate = vm.rc.rcstate == 0 ? 1 : 0;
                    });
    
                    // 规则类型下拉框事件
                    form.on("select(ruleType)", function (data) {
                        vm.getRule(data.value);
                    });
    
                    // 规则下拉框事件
                    form.on("select(rule)", function (data) {
                        vm.getRuleInfo(data.value);
                    });
    
                    // 提交保存
                    form.on("submit(btnSave)", function () {
                        $.ajax({
                            type: "POST",
                            url: "/RuleCollection/Save?key=" + vm.key + "&isadd=" + vm.isAdd,
                            dataType: "json",
                            data: vm.rc,
                            async: false,
                            success: function (res) {       
                                layer.msg(res.msg);
                            }
                        });
                        return false;
                    });
    
                    form.render("select");
                });
            },
            methods: {
                delRow: function (r) {
                    var vm = this;
                    layer.confirm('确认执行此操作吗?', { btn: ['确定', '取消'], title: "提示" }, function () {
                        if (r.rcdid != undefined && r.rcdid != "") {
                            // 从数据库删除 然后更新数据
                            $.ajax({
                                type: "POST",
                                url: "/RuleCollection/DelDetail?key=" + r.rcdid,
                                dataType: "json",
                                async: false,
                                success: function (res) {
    
                                    // 更新数据
                                    vm.getDetail();
    
                                    layer.msg("删除成功!");
                                }
                            });
                            return;
                        }
    
                        // 删除行 仅从本地删除
                        $(vm.rc.detail).each(function (index, element) {
                            if (this.rid == r.rid) {
                                vm.rc.detail.splice(index, 1);
    
                                layer.msg("删除成功!");
                            }
                        });
                    });
                },
                getDetail: function () {
                    // 获取规则集和详情
                    var vm = this;
                    $.ajax({
                        type: "POST",
                        url: "/RuleCollection/GetDetail?key=" + vm.key,
                        dataType: "json",
                        async: false,
                        success: function (res) {
                            vm.rc = res.data;
                        }
                    });
                },
                getRuleType: function () {
                // 获取规则类型
                var vm = this;
                $.ajax({
                    type: "POST",
                    url: "/RuleType/GetList?page=1&limit=100&rstate=1",
                    dataType: "json",
                    async: false,
                    success: function (res) {
                        vm.ruleType = res.data;
                    }
                });
            },
                getRule: function (rtid) {
                // 获取可用规则
                var vm = this;
                $.ajax({
                    type: "POST",
                    url: "/Common/GetRuleddl",
                    dataType: "json",
                    data: {
                        rstate: true,
                        rtid: rtid
                    },
                    async: false,
                    success: function (res) {
                        vm.rules = res.data;
                        //layui.form.render("select");
                    }
                });
            },
                getRuleInfo: function (rid) {
                    // 根据规则id 获取信息 添加行
                    var vm = this;
    
                    // 检查是否已添加
                    var isexists = false;
                    $(this.rc.detail).each(function (index, element) {
                        if (this.rid == rid) {
                            isexists = true;
                            layer.msg("不允许重复添加!");
                            return;
                        }
                    });
    
                    if (isexists) {
                        return;
                    }
    
                    $.ajax({
                        type: "POST",
                        url: "/RuleCollection/AddDetail",
                        dataType: "json",
                        data: { rcid: vm.key, rid: rid },
                        async: false,
                        success: function (res) {
                            vm.getDetail();
                        }
                    });
                }
            }
        });
    
    </script>
    </body>
    </html>
  • 相关阅读:
    5R(康奈尔)笔记法
    【软件】MyEclipse 显示行数及Eclipse修改字体
    Linux运维工程师必备的十个技能点
    centos下部署LAMP环境(Linux+Apache+mysql+php)(转载文章:https://www.cnblogs.com/apro-abra/p/4862285.html)
    MySQL之show命令 (转载https://www.cnblogs.com/andy6/p/6171945.html)
    MySQL安装完成后重置密码
    MySQL面试题
    mysql运维必备知识点(转载至其他作者)
    centos 7 下安装部署mysql 5.7
    Linux服务部署之NTP时间服务器
  • 原文地址:https://www.cnblogs.com/coder-soldier/p/10175089.html
Copyright © 2011-2022 走看看