layui-实现上下表,父子表单选加载事件

代码

主子表,实现点击主表的单元格实现选中主表,并加载子表

HTML代码

//主表
<table class="layui-hide" id="SysFeeTable" lay-filter="SysFeeTable"></table>
//子表
<table class="layui-hide" id="SysFeeScheduleTable" lay-filter="SysFeeScheduleTable">

表格数据加载

实现单选一定要加{ type: 'radio' },

//主表数据
table.render({
        elem: '#SysFeeTable',
        url: '/FeeCollection/GetSysFeeList', //数据接口
        where: getParams(),  //获取查询参数
        page: true, //开启分页
        height: 450,
        limit: 30,
        limits: [30, 60, 90, 200, 500],
        toolbar: '#headbar',
        cols: [[ //表头
            { type: 'radio' },
            { field: 'SF_CODE_TEXT', title: WJ_Dic4Js('费目名称'), align: 'center', width: 180 },
            {
                field: 'SF_PAYMENTFLAG', title: WJ_Dic4Js('收付标志'), align: 'center', width: 120,
                templet: function (d) {
                    if (d.SF_PAYMENTFLAG == "S") {
                        return "收";
                    } else {
                        return "付";
                    }
                }
            },
            { field: 'SF_BILLING_UNIT', title: WJ_Dic4Js('费目计价单位'), align: 'center', width: 140 },
            { field: 'CREATED', title: WJ_Dic4Js('创建时间'), align: 'center', width: 160 },
            { field: 'CREATOR', title: WJ_Dic4Js('创建人'), align: 'center', width: 140 },
            { field: 'LASTMODIFIED', title: WJ_Dic4Js('操作时间'), align: 'center', width: 160 },
            { field: 'LASTMODIFIER', title: WJ_Dic4Js('操作人'), align: 'center', width: 140 },
            { title: WJ_Dic4Js('操作'), align: 'center', toolbar: '#rowsbar', width: 280, fixed: 'right' }

        ]],
        parseData: function (res) { //将原始数据解析成 table 组件所规定的数据
            return {
                "code": res.state, //解析接口状态
                "msg": res.message, //解析提示文本
                "count": res.data.total, //解析数据长度
                "data": res.data.rows //解析数据列表
            };
        }, done: function (res, curr, count) {
            WJ_DIC_CHANGE_INNER();

        }
    });

//子表数据加载
  table.render({
        elem: '#SysFeeScheduleTable',
        data: [],
        page: true, //开启分页
        height: 450,
        limit: 30,
        toolbar: '#headbar1',
        cols: [[ //表头
            { type: 'radio' },
            { field: 'SFS_NAME', title: WJ_Dic4Js('费目细项名称'), width: 220, align: 'center' },
            { field: 'SFS_BILLING_UNIT', title: WJ_Dic4Js('计价单位'), align: 'center', width: 230 },
            { field: 'SFS_FEE_RATES', title: WJ_Dic4Js('费率'), width: 140, align: 'center' },
            { field: 'CREATED', title: WJ_Dic4Js('创建时间'), align: 'center', width: 160 },
            { field: 'CREATOR', title: WJ_Dic4Js('创建人'), align: 'center', width: 140 },
            { field: 'LASTMODIFIED', title: WJ_Dic4Js('操作时间'), align: 'center', width: 160 },
            { field: 'LASTMODIFIER', title: WJ_Dic4Js('操作人'), align: 'center', width: 140 },
            { title: WJ_Dic4Js('操作'), align: 'center', toolbar: '#rowsbar1', width: 280, fixed: 'right' }
        ]], done: function (res, curr, count) {
            WJ_DIC_CHANGE_INNER();

        }
    });

点击主表行,加载子表数据

    //行单击事件(双击事件为:rowDouble)
    table.on('row(SysFeeTable)', function (obj) {
        //行单选框选中事件
        //选中行样式
        obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click'); 		
        obj.tr.find('input[lay-type="layTableRadio"]').prop("checked", true);
        $('.layui-table tr').css("background", "");//取消颜色
        $(this).css("background", "#c2c2c2");//添加行颜色
        var index = obj.tr.data('index')
        var thisData = table.cache["SysFeeTable"];
        layui.each(thisData, function (i, item) {
            if (index === i) {
                item.LAY_CHECKED = true;
            } else {
                delete item.LAY_CHECKED;
            }
        });
        form.render('radio');

        var data = obj.data;
        //刷新费目细项列表
        if (data.ID) {
            HttpGet("/FeeCollection/GetSysFeeScheduleList", { SFS_SF_ID: data.ID }, 
            function (res) {
            //为SysFeeScheduleTable赋值
                table.reload('SysFeeScheduleTable', { data: res.data.rows });
            })
        }
        obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click');
    });

实现效果图

在这里插入图片描述

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
不,`v-model`在Vue 2中并不仅限于表单元素,它可以用于任何自定义组件的双向绑定。 在Vue 2中,`v-model`本质上是一个语法糖,它实际上是基于`value`和`input`事件的组合实现的。当使用`v-model`指令时,Vue会自动为组件添加一个名为`value`的`props`属性,并监听子组件中的`input`事件以更新父组件的数据。 因此,你可以在自定义组件中的任何地方使用`v-model`指令,并不仅限于表单元素。例如,你可以在一个自定义的择器组件中使用`v-model`来实现父子组件之间的通信: ```vue <template> <div> <select :value="selectedValue" @change="$emit('input', $event.target.value)"> <option value="option1">Option 1</option> <option value="option2">Option 2</option> <option value="option3">Option 3</option> </select> </div> </template> <script> export default { props: ['value'], computed: { selectedValue: { get() { return this.value; }, set(newValue) { this.$emit('input', newValue); } } } }; </script> ``` 在父组件中使用该自定义择器组件,并通过`v-model`实现父子组件之间的通信: ```vue <template> <div> <custom-select v-model="selectedOption"></custom-select> <p>父组件中的中项:{{ selectedOption }}</p> </div> </template> <script> import CustomSelect from './CustomSelect.vue'; export default { components: { CustomSelect }, data() { return { selectedOption: '' }; } }; </script> ``` 这样,无论是表单元素还是其他自定义组件,都可以使用`v-model`指令来实现父子组件之间的双向绑定通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

润小仙女

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值