html:
<div class="layui-col-md12"> <div class="layui-card"> <div class="layui-card-header" style="background-color: #e6e6e6">材料清单</div> <div class="layui-card-body" style="height: 200px;"> <table class="layui-hide" id="serviceMaterialListTable" lay-filter="serviceMaterialListTable"></table> <script type="text/html" id="serviceMaterialListTable-toolbar"> <div class="layui-btn-container"> <button class="layui-btn layui-btn-sm" data-type="addMaterial">增加</button> </div> </script> <script type="text/html" id="serviceMaterialListTable-bar"> <%--<a class="layui-btn layui-btn-xs" lay-event="editMaterial">编辑</a>--%> <a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="delMaterial">删除</a> </script> <script type="text/html" id="serviceMaterialTypeTpl"> <select name="type" lay-filter="service_material_type" autocomplete="off"> <option value="">请抉择</option> {{# var typeArr = layui.dict.options("service_materialType"); layui.each(typeArr, function(index, item){ }} <option value="{{item[0]}}" {{d.type==item[0]?'selected':''}}>{{item[1]}}</option> {{# }) }} </select> </script> <script type="text/html" id="certTypeTpl"> <select name="type" lay-filter="cert_type" autocomplete="off"> <option value="">请抉择</option> {{# var certTypeArr = layui.dict.options("company_paper_certType"); layui.each(certTypeArr, function(index, item){ }} <option value="{{item[0]}}" {{d.certType==item[0]?'selected':''}}>{{item[1]}}</option> {{# }) }} </select> </script> </div> </div> </div>
办法:
var active = { getSubData:function () { var materialList = active.getMaterialList(); var flowList = active.getFlowList(); var minDay = 0; var maxDay = 0; $.each(flowList,function (index,item) { minDay += item.minDay?parseFloat(item.minDay):0; maxDay += item.maxDay?parseFloat(item.maxDay):0; }); return { materialList:materialList, flowList:flowList, minDay:minDay, maxDay:maxDay } }, getMaterialList:function () { var tableObj = materialTable; var config = tableObj.config; var dataTemp = config.data||[]; $.each(dataTemp,function (index,item) { item = $.extend(item,{createTime:null,modifyTime:null}); }) return dataTemp; }, getFlowList:function () { var tableObj = serviceFlowTable; var config = tableObj.config; var dataTemp = config.data||[]; $.each(dataTemp,function (index,item) { item = $.extend(item,{createTime:null,modifyTime:null}); }); return dataTemp; }, addFlow:function () { var tableObj = serviceFlowTable; var config = tableObj.config; var dataTemp = config.data||[]; var len = dataTemp?(dataTemp.length+1):1; dataTemp.push({sortOrder:len,minDay:1,maxDay:1}); serviceFlowTable = table.reload(config.id, $.extend(true, { // 更新数据 data: dataTemp, }, config.page ? { // 个别新增都是加到最初,所以始终关上最初一页 page: { curr: Math.ceil(dataTemp.length / config.page.limit) } } : {})); }, editFlow:function (obj) { }, delFlow:function (data) { var tableObj = serviceFlowTable; var config = tableObj.config; var dataTemp = config.data||[]; // 失去tr的data-index var trElem = data.tr.first(); var index = trElem.data('index'); // 计算出在data中的index var dataIndex = index; // 删除对应下标的数据 dataTemp.splice(dataIndex, 1); // 从新接管reload返回的对象,这个很重要 serviceFlowTable = table.reload(config.id, $.extend(true, { // 更新数据 data: dataTemp }, {})); }, addMaterial:function () { var tableObj = materialTable; var config = tableObj.config; var dataTemp = config.data||[]; var len = dataTemp?(dataTemp.length+1):1; dataTemp.push({sortOrder:len}); materialTable = table.reload(config.id, $.extend(true, { // 更新数据 data: dataTemp, }, config.page ? { // 个别新增都是加到最初,所以始终关上最初一页 page: { curr: Math.ceil(dataTemp.length / config.page.limit) } } : {})); }, editMaterial:function (obj) { }, delMaterial:function (data) { var tableObj = materialTable; var config = tableObj.config; var dataTemp = config.data||[]; // 失去tr的data-index var trElem = data.tr.first(); var index = trElem.data('index'); // 计算出在data中的index var dataIndex = index; // 删除对应下标的数据 dataTemp.splice(dataIndex, 1); // 从新接管reload返回的对象,这个很重要 materialTable = table.reload(config.id, $.extend(true, { // 更新数据 data: dataTemp }, {})); }, setDataList:function () { window.parent.formData = $.extend(window.parent.formData,{serviceMaterialList:serviceMaterialList}) window.parent.formData = $.extend(window.parent.formData,{serviceFlowList:serviceFlowList}) }, }
js:
var serviceMaterialList = []; if(id){ var rtnList2 = admin.syncReq(ctx+"/base/serviceMaterial/queryByAll",{serviceId:id}); serviceMaterialList = rtnList2.data; } var materialTable = table.render({ elem:'#serviceMaterialListTable' ,data:serviceMaterialList ,cellMinWidth: 80 ,toolbar: '#serviceMaterialListTable-toolbar' ,defaultToolbar: [] ,cols: [[ {field:'licenceName', title: '证照名称', align: 'center',minWidth:100,edit:'text' } ,{field:'type', title: '材料类型', align: 'center',minWidth:100,templet:'#serviceMaterialTypeTpl'} ,{field:'certType', title: '证件类型', align: 'center',minWidth:100,templet:'#certTypeTpl'} ,{field:'sortOrder', title: '排序', align: 'center',minWidth:100,edit:'text'} ,{title:'操作', toolbar: '#serviceMaterialListTable-bar', width:120} ]] ,done: function(res, curr, count){ serviceMaterialList = res.data; } ,height: '250' }); table.on('tool(serviceMaterialListTable)', function(obj){ switch(obj.event){ case 'delMaterial': active.delMaterial(obj); break; } }); form.on('select(service_material_type)', function(obj){ var tr_index = $(obj.othis).parent().parent().parent().data("index"); $.each(serviceMaterialList,function (index,item) { if(tr_index==index){ item = $.extend(item,{type:obj.value}) } }) }); form.on('select(cert_type)', function(obj){ var tr_index = $(obj.othis).parent().parent().parent().data("index"); $.each(serviceMaterialList,function (index,item) { if(tr_index==index){ item = $.extend(item,{certType:obj.value}) } }) }); $("body").on('click','.layui-btn-container .layui-btn', function(){ var type = $(this).data('type'); active[type] ? active[type].call(this) : ''; }); window.parent._active = active;
父页面获取表单的所有数据:
var subData = window._active.getSubData(); var materialList = subData.materialList; var flowList = subData.flowList; var minDay = subData.minDay; var maxDay = subData.maxDay; field = $.extend(field,{ serviceMaterialJson:JSON.stringify(materialList), serviceFlowJson:JSON.stringify(flowList), minDay:minDay, maxDay:maxDay, }) field.id = rec.id; var rtn = admin.syncReq(ctx+"/base/service/modify",field); if(rtn && rtn.code==0){ layer.msg('操作胜利'); active.reload(); layer.close(index); }else{ layer.msg('操作失败'); }