| /** | 
|  * Created by YujieYang. | 
|  * @name:  子表格扩展 | 
|  * @author: 杨玉杰 | 
|  * @version 1.0 | 
|  */ | 
| layui.define(['table'], function (exports) { | 
|   | 
|     var $ = layui.jquery; | 
|   | 
|     // 封装方法 | 
|     var mod = { | 
|         /** | 
|          * 渲染入口 | 
|          * @param myTable | 
|          */ | 
|         render: function (myTable) { | 
|             var tableBox = $(myTable.elem).next().children('.layui-table-box'), | 
|                 $main = $(tableBox.children('.layui-table-body').children('table').children('tbody').children('tr').toArray().reverse()), | 
|                 $fixLeft = $(tableBox.children('.layui-table-fixed-l').children('.layui-table-body').children('table').children('tbody').children('tr').toArray().reverse()), | 
|                 $fixRight = $(tableBox.children('.layui-table-fixed-r').children('.layui-table-body').children('table').children('tbody').children('tr').toArray().reverse()), | 
|                 cols = myTable.cols[0], mergeRecord = {}; | 
|   | 
|             for (let i = 0; i < cols.length; i++) { | 
|                 var item3 = cols[i], field=item3.field; | 
|                 if (item3.merge) { | 
|                     var mergeField = [field]; | 
|                     if (item3.merge !== true) { | 
|                         if (typeof item3.merge == 'string') { | 
|                             mergeField = [item3.merge] | 
|                         } else { | 
|                             mergeField = item3.merge | 
|                         } | 
|                     } | 
|                     mergeRecord[i] = {mergeField: mergeField, rowspan:1} | 
|                 } | 
|             } | 
|   | 
|             $main.each(function (i) { | 
|   | 
|                 for (var item in mergeRecord) { | 
|                     if (i==$main.length-1 || isMaster(i, item)) { | 
|                         $(this).children('[data-key$="-'+item+'"]').attr('rowspan', mergeRecord[item].rowspan).css('position','static'); | 
|                         $fixLeft.eq(i).children('[data-key$="-'+item+'"]').attr('rowspan', mergeRecord[item].rowspan).css('position','static'); | 
|                         $fixRight.eq(i).children('[data-key$="-'+item+'"]').attr('rowspan', mergeRecord[item].rowspan).css('position','static'); | 
|                         mergeRecord[item].rowspan = 1; | 
|                     } else { | 
|                         $(this).children('[data-key$="-'+item+'"]').remove(); | 
|                         $fixLeft.eq(i).children('[data-key$="-'+item+'"]').remove(); | 
|                         $fixRight.eq(i).children('[data-key$="-'+item+'"]').remove(); | 
|                         mergeRecord[item].rowspan +=1; | 
|                     } | 
|                 } | 
|             }) | 
|   | 
|             function isMaster (index, item) { | 
|                 var mergeField = mergeRecord[item].mergeField; | 
|                 var dataLength = layui.table.cache[myTable.id].length; | 
|                 for (var i=0; i<mergeField.length; i++) { | 
|   | 
|                     if (layui.table.cache[myTable.id][dataLength-2-index][mergeField[i]] | 
|                         !== layui.table.cache[myTable.id][dataLength-1-index][mergeField[i]]) { | 
|                         return true; | 
|                     } | 
|                 } | 
|                 return false; | 
|             } | 
|   | 
|         } | 
|     }; | 
|   | 
|     // 输出 | 
|     exports('tableMerge', mod); | 
| }); |