New file |
| | |
| | | /** æ å½¢è¡¨æ ¼3.x Created by wangfan on 2020-05-12 https://gitee.com/whvse/treetable-lay */ |
| | | |
| | | layui.define(['laytpl', 'form', 'util'], function (exports) { |
| | | var $ = layui.jquery; |
| | | var laytpl = layui.laytpl; |
| | | var form = layui.form; |
| | | var util = layui.util; |
| | | var device = layui.device(); |
| | | var MOD_NAME = 'treeTable'; // 模åå |
| | | var _instances = {}; // è®°å½ææå®ä¾ |
| | | |
| | | /* è¡¨æ ¼é»è®¤åæ° */ |
| | | var defaultOption = { |
| | | elem: undefined, // å®¹å¨ |
| | | cols: undefined, // ååæ° |
| | | url: undefined, // url模å¼è¯·æ± |
| | | method: undefined, // url模å¼è¯·æ±æ¹å¼ |
| | | where: undefined, // url模å¼è¯·æ±æ¡ä»¶ |
| | | contentType: undefined, // url模å¼è¯·æ±ç±»å |
| | | headers: undefined, // url模å¼è¯·æ±headers |
| | | parseData: undefined, // url模å¼å¤çè¯·æ±æ°æ® |
| | | request: {pidName: 'pid'}, // url模å¼è¯·æ±å段èªå®ä¹ |
| | | toolbar: undefined, // 表头工å
·æ |
| | | defaultToolbar: undefined, // 表头工å
·æ å³ä¾§æé® |
| | | width: undefined, // 容å¨å®½åº¦ |
| | | height: undefined, // 容å¨é«åº¦ |
| | | cellMinWidth: 90, // åå
æ ¼æå°å®½åº¦ |
| | | done: undefined, // æ°æ®å¤çå®åè° |
| | | data: undefined, // ç´æ¥èµå¼æ°æ® |
| | | title: undefined, // å®ä¹table大æ é¢ï¼æä»¶å¯¼åºä¼ç¨å° |
| | | skin: undefined, // è¡¨æ ¼é£æ ¼ |
| | | even: undefined, // æ¯å¦å¼å¯éè¡åè² |
| | | size: undefined, // è¡¨æ ¼å°ºå¯¸ |
| | | text: { |
| | | none: 'æ æ°æ®' // ç©ºæ°æ®æç¤º |
| | | }, |
| | | reqData: undefined, // èªå®ä¹å è½½æ°æ®æ¹æ³ |
| | | useAdmin: false, // æ¯å¦ä½¿ç¨admin.ajax |
| | | tree: { |
| | | idName: 'id', // idçåæ®µå |
| | | pidName: 'pid', // pidçåæ®µå |
| | | childName: 'children', // childrençåæ®µå |
| | | haveChildName: 'haveChild', // æ¯å¦æchildrenæ è¯çåæ®µå |
| | | openName: 'open', // æ¯å¦é»è®¤å±å¼çåæ®µå |
| | | iconIndex: 0, // 徿 åçç´¢å¼ |
| | | arrowType: undefined, // æå ç®å¤´ç±»å |
| | | onlyIconControl: undefined, // ä»
ç¹å»å¾æ æ§å¶å±å¼æå |
| | | getIcon: function (d) { // èªå®ä¹å¾æ |
| | | var haveChild = d[this.haveChildName]; |
| | | if (haveChild !== undefined) haveChild = haveChild === true || haveChild === 'true'; |
| | | else if (d[this.childName]) haveChild = d[this.childName].length > 0; |
| | | if (haveChild) return '<i class="ew-tree-icon layui-icon layui-icon-layer"></i>'; |
| | | else return '<i class="ew-tree-icon layui-icon layui-icon-file"></i>'; |
| | | } |
| | | } |
| | | }; |
| | | /* åé»è®¤åæ° */ |
| | | var colDefaultOption = { |
| | | field: undefined, // åæ®µå |
| | | title: undefined, // æ é¢ |
| | | width: undefined, // 宽度 |
| | | minWidth: undefined, // æå°å®½åº¦ |
| | | type: 'normal', // åç±»å |
| | | fixed: undefined, // åºå®å |
| | | hide: undefined, // æ¯å¦åå§éèå |
| | | unresize: undefined, // ç¦ç¨ææ½å宽 |
| | | style: undefined, // åå
æ ¼æ ·å¼ |
| | | align: undefined, // 坹齿¹å¼ |
| | | colspan: undefined, // åå
æ ¼æå çåæ° |
| | | rowspan: undefined, // åå
æ ¼æå çè¡æ° |
| | | templet: undefined, // èªå®ä¹æ¨¡æ¿ |
| | | toolbar: undefined, // å·¥å
·å |
| | | 'class': undefined, // åå
æ ¼class |
| | | singleLine: undefined // æ¯å¦ä¸è¡æ¾ç¤º |
| | | }; |
| | | |
| | | /** TreeTableç±»æé æ¹æ³ */ |
| | | var TreeTable = function (options) { |
| | | _instances[options.elem.substring(1)] = this; |
| | | this.reload(options); |
| | | }; |
| | | |
| | | /** åæ°è®¾ç½® */ |
| | | TreeTable.prototype.initOptions = function (opt) { |
| | | var that = this; |
| | | |
| | | // å¤çç¹æ®å |
| | | function initCol(item) { |
| | | if (!item.INIT_OK) item = $.extend({INIT_OK: true}, colDefaultOption, item); |
| | | // ç¹æ®åå¤ç |
| | | if (item.type === 'space') { // 空å |
| | | if (!item.width) item.width = 15; |
| | | item.minWidth = item.width; |
| | | } else if (item.type === 'numbers') { // åºå·å |
| | | if (!item.width) item.width = 40; |
| | | item.minWidth = item.width; |
| | | if (!item.singleLine) item.singleLine = false; |
| | | if (!item.unresize) item.unresize = true; |
| | | if (!item.align) item.align = 'center'; |
| | | } else if (item.type === 'checkbox' || item.type === 'radio') { // å¤/åéæ¡å |
| | | if (!item.width) item.width = 48; |
| | | item.minWidth = item.width; |
| | | if (!item.singleLine) item.singleLine = false; |
| | | if (!item.unresize) item.unresize = true; |
| | | if (!item.align) item.align = 'center'; |
| | | } |
| | | if (item.toolbar) item.type = 'tool'; |
| | | return item; |
| | | } |
| | | |
| | | // åå§åååæ° |
| | | if ('Array' !== isClass(opt.cols[0])) opt.cols = [opt.cols]; |
| | | |
| | | // æ¢å¤colsåæ°åå§ç¶æ |
| | | for (var m = 0; m < opt.cols.length; m++) { |
| | | for (var n = 0; n < opt.cols[m].length; n++) { |
| | | opt.cols[m][n].INIT_OK = undefined; |
| | | opt.cols[m][n].key = undefined; |
| | | opt.cols[m][n].colGroup = undefined; |
| | | opt.cols[m][n].HAS_PARENT = undefined; |
| | | opt.cols[m][n].parentKey = undefined; |
| | | opt.cols[m][n].PARENT_COL_INDEX = undefined; |
| | | } |
| | | } |
| | | |
| | | // colsåæ°å¤ç |
| | | var colArrays = [], colIndex = 0; |
| | | for (var i1 = 0; i1 < opt.cols.length; i1++) { |
| | | var item1 = opt.cols[i1]; |
| | | for (var i2 = 0; i2 < item1.length; i2++) { |
| | | var item2 = item1[i2]; |
| | | if (!item2) { |
| | | item1.splice(i2, 1); |
| | | continue; |
| | | } |
| | | item2 = initCol(item2); |
| | | // åå¹¶åå
æ ¼å¤ç |
| | | item2.key = i1 + '-' + i2; |
| | | var CHILD_COLS = undefined; |
| | | if (item2.colGroup || item2.colspan > 1) { |
| | | item2.colGroup = true; |
| | | item2.type = 'group'; |
| | | CHILD_COLS = []; |
| | | colIndex++; |
| | | var childIndex = 0; |
| | | for (var i22 = 0; i22 < opt.cols[i1 + 1].length; i22++) { |
| | | var item22 = $.extend({INIT_OK: true}, colDefaultOption, opt.cols[i1 + 1][i22]); |
| | | if (item22.HAS_PARENT || (childIndex > 1 && childIndex == item2.colspan)) { |
| | | opt.cols[i1 + 1][i22] = item22; |
| | | continue; |
| | | } |
| | | item22.HAS_PARENT = true; |
| | | item22.parentKey = i1 + '-' + i2; |
| | | item22.key = (i1 + 1) + '-' + i22; |
| | | item22.PARENT_COL_INDEX = colIndex; |
| | | item22 = initCol(item22); |
| | | CHILD_COLS.push(item22); |
| | | childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1); |
| | | opt.cols[i1 + 1][i22] = item22; |
| | | } |
| | | } |
| | | item2.CHILD_COLS = CHILD_COLS; |
| | | if (!item2.PARENT_COL_INDEX) colArrays.push(item2); |
| | | opt.cols[i1][i2] = item2; |
| | | } |
| | | } |
| | | this.options = $.extend(true, {}, defaultOption, opt); |
| | | this.options.colArrays = colArrays; |
| | | |
| | | // urlå 载模å¼è½¬ä¸ºreqDataæ¨¡å¼ |
| | | if (this.options.url) { |
| | | this.options.reqData = function (data, callback) { |
| | | if (!that.options.where) that.options.where = {}; |
| | | if (data) that.options.where[that.options.request.pidName] = data[that.options.tree.idName]; |
| | | (that.options.useAdmin ? layui.admin : $).ajax({ |
| | | url: that.options.url, |
| | | data: that.options.contentType && that.options.contentType.indexOf('application/json') === 0 ? JSON.stringify(that.options.where) : that.options.where, |
| | | headers: that.options.headers, |
| | | type: that.options.method, |
| | | dataType: 'json', |
| | | contentType: that.options.contentType, |
| | | success: function (res) { |
| | | if (that.options.parseData) res = that.options.parseData(res); |
| | | if (res.code == 0) callback(res.data); |
| | | else callback(res.msg || 'å 载失败'); |
| | | }, |
| | | error: function (xhr) { |
| | | callback(xhr.status + ' - ' + xhr.statusText); |
| | | } |
| | | }); |
| | | }; |
| | | } else if (this.options.data && this.options.data.length > 0 && this.options.tree.isPidData) { // pid形弿°æ®è½¬childrenå½¢å¼ |
| | | this.options.data = tt.pidToChildren(this.options.data, this.options.tree.idName, this.options.tree.pidName, this.options.tree.childName); |
| | | } |
| | | |
| | | // toolbaråæ°å¤ç |
| | | if ('default' === this.options.toolbar) { |
| | | this.options.toolbar = [ |
| | | '<div>', |
| | | ' <div class="ew-tree-table-tool-item" title="æ·»å " lay-event="add">', |
| | | ' <i class="layui-icon layui-icon-add-1"></i>', |
| | | ' </div>', |
| | | ' <div class="ew-tree-table-tool-item" title="ä¿®æ¹" lay-event="update">', |
| | | ' <i class="layui-icon layui-icon-edit"></i>', |
| | | ' </div>', |
| | | ' <div class="ew-tree-table-tool-item" title="å é¤" lay-event="delete">', |
| | | ' <i class="layui-icon layui-icon-delete"></i>', |
| | | ' </div>', |
| | | '</div>' |
| | | ].join(''); |
| | | } |
| | | if (this.options.defaultToolbar === undefined) this.options.defaultToolbar = ['filter', 'exports', 'print']; |
| | | |
| | | // èªå®ä¹å¾æ åæ°å¤ç |
| | | if (typeof this.options.tree.getIcon === 'string') { |
| | | var icon = this.options.tree.getIcon; |
| | | this.options.tree.getIcon = function (d) { |
| | | if (icon !== 'ew-tree-icon-style2') return icon; |
| | | var haveChild = d[this.haveChildName]; |
| | | if (haveChild !== undefined) haveChild = haveChild === true || haveChild === 'true'; |
| | | else if (d[this.childName]) haveChild = d[this.childName].length > 0; |
| | | if (haveChild) return '<i class="ew-tree-icon ew-tree-icon-folder"></i>'; |
| | | else return '<i class="ew-tree-icon ew-tree-icon-file"></i>'; |
| | | } |
| | | } |
| | | }; |
| | | /** åå§åè¡¨æ ¼ */ |
| | | TreeTable.prototype.init = function () { |
| | | var options = this.options; |
| | | var $elem = $(options.elem); // åå§è¡¨æ ¼ |
| | | var tbFilter = options.elem.substring(1); // è¡¨æ ¼çfilter |
| | | // ç¬¬ä¸æ¬¡çææ è¡¨æ ¼dom |
| | | $elem.removeAttr('lay-filter'); |
| | | if ($elem.next('.ew-tree-table').length === 0) { |
| | | $elem.css('display', 'none'); |
| | | $elem.after([ |
| | | '<div class="layui-form ew-tree-table" lay-filter="', tbFilter, '" style="', options.style || '', '">', |
| | | ' <div class="ew-tree-table-tool" style="display: none;"></div>', |
| | | ' <div class="ew-tree-table-head">', |
| | | ' <table class="layui-table"></table>', |
| | | ' </div>', |
| | | ' <div class="ew-tree-table-box">', |
| | | ' <table class="layui-table"></table>', |
| | | ' <div class="ew-tree-table-loading">', |
| | | ' <i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>', |
| | | ' </div>', |
| | | ' <div class="ew-tree-table-empty">', options.text.none || '', '</div>', |
| | | ' </div>', |
| | | '</div>' |
| | | ].join('')); |
| | | } |
| | | // è·åå个ç»ä»¶ |
| | | var components = this.getComponents(); |
| | | |
| | | // åºç¡åæ°è®¾ç½® |
| | | if (options.skin) components.$table.attr('lay-skin', options.skin); |
| | | if (options.size) components.$table.attr('lay-size', options.size); |
| | | if (options.even) components.$table.attr('lay-even', options.even); |
| | | |
| | | // 头é¨å·¥å
·æ |
| | | components.$toolbar.empty(); |
| | | if (options.toolbar === false || options.toolbar === undefined) { |
| | | components.$toolbar.hide(); |
| | | } else { |
| | | components.$toolbar.show(); |
| | | if (typeof options.toolbar === 'string') { |
| | | laytpl($(options.toolbar).html()).render({}, function (html) { |
| | | components.$toolbar.html('<div style="display: inline-block;">' + html + '</div>'); |
| | | }); |
| | | } |
| | | var tbRights = ['<div class="ew-tree-table-tool-right">']; |
| | | for (var i = 0; i < options.defaultToolbar.length; i++) { |
| | | var tbItem; |
| | | if ('filter' === options.defaultToolbar[i]) { |
| | | tbItem = {title: 'çé', layEvent: 'LAYTABLE_COLS', icon: 'layui-icon-cols'}; |
| | | } else if ('exports' === options.defaultToolbar[i]) { |
| | | tbItem = {title: '导åº', layEvent: 'LAYTABLE_EXPORT', icon: 'layui-icon-export'}; |
| | | } else if ('print' === options.defaultToolbar[i]) { |
| | | tbItem = {title: 'æå°', layEvent: 'LAYTABLE_PRINT', icon: 'layui-icon-print'}; |
| | | } else { |
| | | tbItem = options.defaultToolbar[i]; |
| | | } |
| | | if (tbItem) { |
| | | tbRights.push('<div class="ew-tree-table-tool-item"'); |
| | | tbRights.push(' title="' + tbItem.title + '"'); |
| | | tbRights.push(' lay-event="' + tbItem.layEvent + '">'); |
| | | tbRights.push('<i class="layui-icon ' + tbItem.icon + '"></i></div>'); |
| | | } |
| | | } |
| | | components.$toolbar.append(tbRights.join('') + '</div>'); |
| | | } |
| | | |
| | | // åºå®å®½åº¦ |
| | | if (options.width) { |
| | | components.$view.css('width', options.width); |
| | | components.$tHeadGroup.css('width', options.width); |
| | | components.$tBodyGroup.css('width', options.width); |
| | | } |
| | | // è¡¨æ ¼å°ºå¯¸è®¾ç½® |
| | | var colgroupHtml = this.resize(true); |
| | | // çæthead |
| | | var headHtml = '<thead>' + this.renderBodyTh() + '</thead>'; |
| | | |
| | | // 渲æè¡¨å¤´å空ç表主ä½çç»æ |
| | | components.$tBodyGroup.children('style').remove(); |
| | | if (options.height) { // åºå®è¡¨å¤´ |
| | | components.$tHead.html(colgroupHtml + headHtml); |
| | | components.$tBody.html(colgroupHtml + '<tbody></tbody>'); |
| | | if (options.height.indexOf('full-') === 0) { // å·®å¼é«åº¦ |
| | | var h = parseFloat(options.height.substring(5)) + components.$toolbar.outerHeight() |
| | | + components.$tHeadGroup.outerHeight() + 1; |
| | | components.$tBodyGroup.append([ |
| | | '<style>[lay-filter="', tbFilter, '"] .ew-tree-table-box {', |
| | | ' height: ', getPageHeight() - h, 'px;', |
| | | ' height: -moz-calc(100vh - ', h, 'px);', |
| | | ' height: -webkit-calc(100vh - ', h, 'px);', |
| | | ' height: calc(100vh - ', h, 'px);', |
| | | '}</style>' |
| | | ].join('')); |
| | | components.$tBodyGroup.data('full', h); |
| | | components.$tBodyGroup.css('height', ''); |
| | | } else { // åºå®é«åº¦ |
| | | components.$tBodyGroup.css('height', options.height); |
| | | components.$tBodyGroup.data('full', ''); |
| | | } |
| | | components.$tHeadGroup.show(); |
| | | } else { |
| | | components.$tHeadGroup.hide(); |
| | | var trH = {lg: 50, sm: 30, md: 38}; |
| | | components.$tBodyGroup.append([ |
| | | '<style>[lay-filter="', tbFilter, '"] .ew-tree-table-box:before {', |
| | | ' content: "";', |
| | | ' position: absolute;', |
| | | ' top: 0; left: 0; right: 0;', |
| | | ' height: ' + (trH[options.size || 'md'] * options.cols.length) + 'px;', |
| | | ' background-color: #f2f2f2;', |
| | | ' border-bottom: 1px solid #e6e6e6;', |
| | | '}</style>' |
| | | ].join('')); |
| | | components.$tBody.html(colgroupHtml + headHtml + '<tbody></tbody>'); |
| | | } |
| | | form.render('checkbox', tbFilter); // 渲æè¡¨å¤´ç表åå
ç´ |
| | | |
| | | // é»è®¤éèåä¿®æ£colspan |
| | | function patchHide($tr) { |
| | | var parentKey = $tr.data('parent'), pCol; |
| | | if (!parentKey) return; |
| | | var $parent = components.$table.children('thead').children('tr').children('[data-key="' + parentKey + '"]'); |
| | | var colspan = $parent.attr('colspan') - 1; |
| | | $parent.attr('colspan', colspan); |
| | | if (colspan === 0) $parent.addClass('layui-hide'); |
| | | patchHide($parent); |
| | | } |
| | | |
| | | components.$table.children('thead').children('tr').children('th.layui-hide').each(function () { |
| | | patchHide($(this)); |
| | | }); |
| | | |
| | | // æ¸²ææ°æ® |
| | | if (options.reqData) { // 弿¥å è½½ |
| | | this.options.data = undefined; |
| | | this.renderBodyAsync(); |
| | | } else if (options.data && options.data.length > 0) { |
| | | this.renderBodyData(options.data); |
| | | } else { |
| | | components.$loading.hide(); |
| | | components.$empty.show(); |
| | | } |
| | | }; |
| | | |
| | | /** ç»å®å项äºä»¶ */ |
| | | TreeTable.prototype.bindEvents = function () { |
| | | var that = this; |
| | | var options = this.options; |
| | | var components = this.getComponents(); |
| | | var $allBody = components.$table.children('tbody'); |
| | | |
| | | /* è¡äºä»¶å
Œ
±è¿å对象 */ |
| | | var member = function (ext) { |
| | | // è·åè¡dom |
| | | var $tr = $(this); |
| | | if (!$tr.is('tr')) { |
| | | var $temp = $tr.parent('tr'); |
| | | if ($temp.length > 0) $tr = $temp; |
| | | else $tr = $tr.parentsUntil('tr').last().parent(); |
| | | } |
| | | var data = that.getDataByTr($tr); // è¡å¯¹åºæ°æ® |
| | | var obj = { |
| | | tr: $tr, |
| | | data: data, |
| | | del: function () { // å é¤è¡ |
| | | var index = $tr.data('index'); |
| | | var indent = parseInt($tr.data('indent')); |
| | | // å é¤å级 |
| | | $tr.nextAll('tr').each(function () { |
| | | if (parseInt($(this).data('indent')) <= indent) return false; |
| | | $(this).remove(); |
| | | }); |
| | | // æ´æ°åé¢åè¾çindex |
| | | var indexLength = (typeof index === 'number' ? 1 : index.split('-').length); |
| | | $tr.nextAll('tr').each(function () { |
| | | var $this = $(this); |
| | | if (parseInt($this.data('indent')) < indent) return false; |
| | | var _index = $this.data('index').toString().split('-'); |
| | | _index[indexLength - 1] = parseInt(_index[indexLength - 1]) - 1; |
| | | $this.data('index', _index.join('-')); |
| | | }); |
| | | // å é¤å½åè¡ |
| | | var $pTr = $tr.prevAll('tr'); |
| | | that.del(undefined, index); |
| | | $tr.remove(); |
| | | that.renderNumberCol(); // 渲æåºå·å |
| | | // èå¨ç¶çº§å¤éæ¡ |
| | | $pTr.each(function () { |
| | | var tInd = parseInt($(this).data('indent')); |
| | | if (tInd >= indent) return true; |
| | | that.checkParentCB($(this)); |
| | | indent = tInd; |
| | | }); |
| | | that.checkChooseAllCB(); // èå¨å
¨éæ¡ |
| | | if (options.data.length === 0) components.$empty.show(); |
| | | updateFixedTbHead(components.$view); // æ´æ°æ»å¨æ¡è¡¥ä¸ |
| | | }, |
| | | update: function (fields) { // ä¿®æ¹è¡ |
| | | data = $.extend(true, data, fields); |
| | | var indent = parseInt($tr.data('indent')); |
| | | that.renderBodyTr(data, indent, undefined, $tr); // æ´æ°çé¢ |
| | | form.render(null, components.filter); // 渲æè¡¨åå
ç´ |
| | | that.renderNumberCol(); // 渲æåºå·å |
| | | // èå¨ç¶çº§å¤éæ¡ |
| | | $tr.prevAll('tr').each(function () { |
| | | var tInd = parseInt($(this).data('indent')); |
| | | if (tInd >= indent) return true; |
| | | that.checkParentCB($(this)); |
| | | indent = tInd; |
| | | }); |
| | | that.checkChooseAllCB(); // èå¨å
¨éæ¡ |
| | | } |
| | | }; |
| | | return $.extend(obj, ext); |
| | | }; |
| | | |
| | | // ç»å®æå å±å¼äºä»¶ |
| | | $allBody.off('click.fold').on('click.fold', '.ew-tree-pack', function (e) { |
| | | layui.stope(e); |
| | | var $tr = $(this).parentsUntil('tr').last().parent(); |
| | | if ($tr.hasClass('ew-tree-table-loading')) return; // å·²æ¯å è½½ä¸ |
| | | var haveChild = $tr.data('have-child'); |
| | | if (haveChild !== true && haveChild !== 'true') return; // åèç¹ |
| | | var open = $tr.hasClass('ew-tree-table-open'); |
| | | var data = that.getDataByTr($tr); |
| | | if (!open && !data[options.tree.childName]) { |
| | | that.renderBodyAsync(data, $tr); |
| | | } else { |
| | | data[options.tree.openName] = toggleRow($tr); |
| | | } |
| | | }); |
| | | |
| | | // ç»å®lay-eventäºä»¶ |
| | | $allBody.off('click.tool').on('click.tool', '*[lay-event]', function (e) { |
| | | layui.stope(e); |
| | | var $this = $(this); |
| | | layui.event.call(this, MOD_NAME, 'tool(' + components.filter + ')', member.call(this, { |
| | | event: $this.attr('lay-event') |
| | | })); |
| | | }); |
| | | |
| | | // ç»å®åéæ¡äºä»¶ |
| | | form.on('radio(' + components.radioFilter + ')', function (data) { |
| | | var d = that.getDataByTr($(data.elem).parentsUntil('tr').last().parent()); |
| | | that.removeAllChecked(); |
| | | d.LAY_CHECKED = true; // åæ¶æ´æ°æ°æ® |
| | | d.LAY_INDETERMINATE = false; |
| | | layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')', |
| | | {checked: true, data: d, type: 'one'}); |
| | | }); |
| | | |
| | | // ç»å®å¤éæ¡äºä»¶ |
| | | form.on('checkbox(' + components.checkboxFilter + ')', function (data) { |
| | | var checked = data.elem.checked; |
| | | var $cb = $(data.elem); |
| | | var $layCb = $cb.next('.layui-form-checkbox'); |
| | | // 妿æ¯åéç¶æï¼ç¹å»å
¨é |
| | | if (!checked && $cb.hasClass('ew-form-indeterminate')) { |
| | | checked = true; |
| | | $cb.prop('checked', checked); |
| | | $layCb.addClass('layui-form-checked'); |
| | | $cb.removeClass('ew-form-indeterminate'); |
| | | } |
| | | var $tr = $cb.parentsUntil('tr').last().parent(); |
| | | var d = that.getDataByTr($tr); |
| | | d.LAY_CHECKED = checked; // åæ¶æ´æ°æ°æ® |
| | | d.LAY_INDETERMINATE = false; |
| | | // èå¨æä½ |
| | | if (d[options.tree.childName] && d[options.tree.childName].length > 0) { |
| | | that.checkSubCB($tr, checked); // èå¨å级 |
| | | } |
| | | var indent = parseInt($tr.data('indent')); |
| | | $tr.prevAll('tr').each(function () { |
| | | var tInd = parseInt($(this).data('indent')); |
| | | if (tInd < indent) { |
| | | that.checkParentCB($(this)); // èå¨ç¶çº§ |
| | | indent = tInd; |
| | | } |
| | | }); |
| | | that.checkChooseAllCB(); // èå¨å
¨éæ¡ |
| | | // åè°äºä»¶ |
| | | layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')', |
| | | {checked: checked, data: d, type: 'more'}); |
| | | }); |
| | | |
| | | // ç»å®å
¨éå¤éæ¡äºä»¶ |
| | | form.on('checkbox(' + components.chooseAllFilter + ')', function (data) { |
| | | var checked = data.elem.checked; |
| | | var $cb = $(data.elem); |
| | | var $layCb = $cb.next('.layui-form-checkbox'); |
| | | if (!options.data || options.data.length === 0) { // å¦ææ°æ®ä¸ºç©º |
| | | $cb.prop('checked', false); |
| | | $layCb.removeClass('layui-form-checked'); |
| | | $cb.removeClass('ew-form-indeterminate'); |
| | | return; |
| | | } |
| | | // 妿æ¯åéç¶æï¼ç¹å»å
¨é |
| | | if (!checked && $cb.hasClass('ew-form-indeterminate')) { |
| | | checked = true; |
| | | $cb.prop('checked', checked); |
| | | $layCb.addClass('layui-form-checked'); |
| | | $cb.removeClass('ew-form-indeterminate'); |
| | | } |
| | | layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')', {checked: checked, type: 'all'}); |
| | | that.checkSubCB(components.$tBody.children('tbody'), checked); // èå¨æä½ |
| | | }); |
| | | |
| | | // ç»å®è¡åå»äºä»¶ |
| | | $allBody.off('click.row').on('click.row', 'tr', function () { |
| | | layui.event.call(this, MOD_NAME, 'row(' + components.filter + ')', member.call(this, {})); |
| | | }); |
| | | |
| | | // ç»å®è¡åå»äºä»¶ |
| | | $allBody.off('dblclick.rowDouble').on('dblclick.rowDouble', 'tr', function () { |
| | | layui.event.call(this, MOD_NAME, 'rowDouble(' + components.filter + ')', member.call(this, {})); |
| | | }); |
| | | |
| | | // ç»å®åå
æ ¼ç¹å»äºä»¶ |
| | | $allBody.off('click.cell').on('click.cell', 'td', function (e) { |
| | | var $td = $(this); |
| | | var type = $td.data('type'); |
| | | // 夿æ¯å¦æ¯å¤éæ¡ãåéæ¡å |
| | | if (type === 'checkbox' || type === 'radio') return layui.stope(e); |
| | | var edit = $td.data('edit'); |
| | | var field = $td.data('field'); |
| | | if (edit) { // å¼å¯äºåå
æ ¼ç¼è¾ |
| | | layui.stope(e); |
| | | if ($allBody.find('.ew-tree-table-edit').length > 0) return; |
| | | var index = $td.data('index'); |
| | | var indent = $td.find('.ew-tree-table-indent').length; |
| | | var d = that.getDataByTr($td.parent()); |
| | | if ('text' === edit || 'number' === edit) { // ææ¬æ¡ |
| | | var $input = $('<input type="' + edit + '" class="layui-input ew-tree-table-edit"/>'); |
| | | $input[0].value = d[field]; |
| | | $td.append($input); |
| | | $input.focus(); |
| | | $input.blur(function () { |
| | | var value = $(this).val(); |
| | | if (value == d[field]) return $(this).remove(); |
| | | var rs = layui.event.call(this, MOD_NAME, 'edit(' + components.filter + ')', member.call(this, |
| | | {value: value, field: field})); |
| | | if (rs === false) { |
| | | $(this).addClass('layui-form-danger'); |
| | | $(this).focus(); |
| | | } else { |
| | | d[field] = value; // åæ¥æ´æ°æ°æ® |
| | | var keys = $td.data('key').split('-'); |
| | | that.renderBodyTd(d, indent, index, $td, options.cols[keys[0]][keys[1]]); // æ´æ°åå
æ ¼ |
| | | } |
| | | }); |
| | | } else { |
| | | console.error('䏿¯æçåå
æ ¼ç¼è¾ç±»å:' + edit); |
| | | } |
| | | } else { // åè°åå
æ ¼ç¹å»äºä»¶ |
| | | var rs = layui.event.call(this, MOD_NAME, 'cell(' + components.filter + ')', member.call(this, |
| | | {td: $td, field: field})); |
| | | if (rs === false) layui.stope(e); |
| | | } |
| | | }); |
| | | |
| | | // ç»å®åå
æ ¼åå»äºä»¶ |
| | | $allBody.off('dblclick.cellDouble').on('dblclick.cellDouble', 'td', function (e) { |
| | | var $td = $(this); |
| | | var type = $td.data('type'); |
| | | // 夿æ¯å¦æ¯å¤éæ¡ãåéæ¡å |
| | | if (type === 'checkbox' || type === 'radio') return layui.stope(e); |
| | | var edit = $td.data('edit'); |
| | | var field = $td.data('field'); |
| | | if (edit) return layui.stope(e); // å¼å¯äºåå
æ ¼ç¼è¾ |
| | | // åè°åå
æ ¼åå»äºä»¶ |
| | | var rs = layui.event.call(this, MOD_NAME, 'cellDouble(' + components.filter + ')', member.call(this, |
| | | {td: $td, field: field})); |
| | | if (rs === false) layui.stope(e); |
| | | }); |
| | | |
| | | // ç»å®å¤´é¨å·¥å
·æ äºä»¶ |
| | | components.$toolbar.off('click.toolbar').on('click.toolbar', '*[lay-event]', function (e) { |
| | | layui.stope(e); |
| | | var $this = $(this); |
| | | var event = $this.attr('lay-event'); |
| | | if ('LAYTABLE_COLS' === event) that.toggleCol(); |
| | | else if ('LAYTABLE_EXPORT' === event) that.exportData('show'); |
| | | else if ('LAYTABLE_PRINT' === event) that.printTable(); |
| | | else layui.event.call(this, MOD_NAME, 'toolbar(' + components.filter + ')', {event: event, elem: $this}); |
| | | }); |
| | | |
| | | // 忥æ»å¨æ¡ |
| | | components.$tBodyGroup.on('scroll', function () { |
| | | var $this = $(this); |
| | | components.$tHeadGroup.scrollLeft($this.scrollLeft()); |
| | | }); |
| | | |
| | | // å¯¼åºæ°æ® |
| | | components.$toolbar.off('click.export').on('click.export', '.layui-table-tool-panel>[data-type]', function () { |
| | | var type = $(this).data('type'); |
| | | if ('csv' === type || 'xls' === type) that.exportData(type); |
| | | }); |
| | | components.$toolbar.off('click.panel').on('click.panel', '.layui-table-tool-panel', function (e) { |
| | | layui.stope(e); |
| | | }); |
| | | |
| | | // çéå |
| | | form.on('checkbox(' + components.colsToggleFilter + ')', function (data) { |
| | | that.toggleCol(data.elem.checked, undefined, data.value); |
| | | }); |
| | | |
| | | }; |
| | | |
| | | /** è·åå个ç»ä»¶ */ |
| | | TreeTable.prototype.getComponents = function () { |
| | | var $view = $(this.options.elem).next('.ew-tree-table'); // å®¹å¨ |
| | | var filter = $view.attr('lay-filter'); // 容å¨filter |
| | | var $tHeadGroup = $view.children('.ew-tree-table-head'); // 表头é¨åå®¹å¨ |
| | | var $tBodyGroup = $view.children('.ew-tree-table-box'); // 主ä½é¨åå®¹å¨ |
| | | return { |
| | | $view: $view, |
| | | filter: filter, |
| | | $tHeadGroup: $tHeadGroup, |
| | | $tBodyGroup: $tBodyGroup, |
| | | $tHead: $tHeadGroup.children('.layui-table'), // è¡¨å¤´è¡¨æ ¼ |
| | | $tBody: $tBodyGroup.children('.layui-table'), // 主ä½è¡¨æ ¼ |
| | | $table: $view.find('.layui-table'), // ææè¡¨æ ¼ |
| | | $toolbar: $view.children('.ew-tree-table-tool'), // 头é¨å·¥å
·æ |
| | | $empty: $tBodyGroup.children('.ew-tree-table-empty'), // 空è§å¾ |
| | | $loading: $tBodyGroup.children('.ew-tree-table-loading'), // å è½½è§å¾ |
| | | checkboxFilter: 'ew_tb_checkbox_' + filter, // å¤éæ¡filter |
| | | radioFilter: 'ew_tb_radio_' + filter, // åéæ¡filter |
| | | chooseAllFilter: 'ew_tb_choose_all_' + filter, // å
¨éæé®filter |
| | | colsToggleFilter: 'ew_tb_toggle_cols' + filter // çéåçfilter |
| | | }; |
| | | }; |
| | | |
| | | /** |
| | | * éå表头 |
| | | * @param callback |
| | | * @param obj |
| | | */ |
| | | TreeTable.prototype.eachCols = function (callback, obj) { |
| | | if (!obj) obj = this.options.colArrays; |
| | | for (var i = 0; i < obj.length; i++) { |
| | | var item = obj[i]; |
| | | callback && callback(i, item); |
| | | if (item.CHILD_COLS) this.eachCols(callback, item.CHILD_COLS); |
| | | } |
| | | }; |
| | | |
| | | /** |
| | | * éåæ°æ® |
| | | * @param callback |
| | | * @param data |
| | | */ |
| | | TreeTable.prototype.eachData = function (callback, data) { |
| | | if (!data) data = this.options.data; |
| | | for (var i = 0; i < data.length; i++) { |
| | | var item = data[i]; |
| | | callback && callback(i, item); |
| | | if (item[this.options.tree.childName]) this.eachData(callback, item[this.options.tree.childName]); |
| | | } |
| | | }; |
| | | |
| | | /** |
| | | * 弿¥å 载渲æ |
| | | * @param d ç¶çº§æ°æ® |
| | | * @param $tr ç¶çº§dom |
| | | */ |
| | | TreeTable.prototype.renderBodyAsync = function (d, $tr) { |
| | | var that = this; |
| | | var options = this.options; |
| | | var components = this.getComponents(); |
| | | // æ¾ç¤ºloading |
| | | if ($tr) { |
| | | $tr.addClass('ew-tree-table-loading'); |
| | | $tr.find('.ew-tree-pack').children('.ew-tree-table-arrow').addClass('layui-anim layui-anim-rotate layui-anim-loop'); |
| | | } else { |
| | | components.$empty.hide(); |
| | | if (options.data && options.data.length > 0) components.$loading.addClass('ew-loading-float'); |
| | | components.$loading.show(); |
| | | } |
| | | // è¯·æ±æ°æ® |
| | | options.reqData(d, function (data) { |
| | | if (typeof data !== 'string' && data && data.length > 0 && options.tree.isPidData) { |
| | | data = tt.pidToChildren(data, options.tree.idName, options.tree.pidName, options.tree.childName); |
| | | } |
| | | that.renderBodyData(data, d, $tr); // 渲æå
容 |
| | | }); |
| | | }; |
| | | |
| | | /** |
| | | * æ ¹æ®æ°æ®æ¸²æbody |
| | | * @param data æ°æ®éå |
| | | * @param d ç¶çº§æ°æ® |
| | | * @param $tr ç¶çº§dom |
| | | */ |
| | | TreeTable.prototype.renderBodyData = function (data, d, $tr) { |
| | | var msg; |
| | | if (typeof data === 'string') { |
| | | msg = data; |
| | | data = []; |
| | | } |
| | | var that = this; |
| | | var options = this.options; |
| | | var components = this.getComponents(); |
| | | // æ´æ°å°æ°æ® |
| | | if (d === undefined) options.data = data; |
| | | else d[options.tree.childName] = data; |
| | | var indent; |
| | | if ($tr) { |
| | | indent = parseInt($tr.data('indent')) + 1; |
| | | d[options.tree.openName] = true; |
| | | } |
| | | var htmlStr = this.renderBody(data, indent, d); |
| | | if ($tr) { |
| | | // ç§»é¤æ§dom |
| | | $tr.nextAll('tr').each(function () { |
| | | if (parseInt($(this).data('indent')) <= (indent - 1)) return false; |
| | | $(this).remove(); |
| | | }); |
| | | // æ¸²ææ°dom |
| | | $tr.after(htmlStr).addClass('ew-tree-table-open'); |
| | | } else { |
| | | components.$tBody.children('tbody').html(htmlStr); |
| | | } |
| | | form.render(null, components.filter); // 渲æè¡¨åå
ç´ |
| | | this.renderNumberCol(); // 渲æåºå·å |
| | | if ($tr) { |
| | | // æ´æ°ç¶çº§å¤éæ¡ç¶æ |
| | | this.checkParentCB($tr); |
| | | $tr.prevAll('tr').each(function () { |
| | | var tInd = parseInt($(this).data('indent')); |
| | | if (tInd < (indent - 1)) { |
| | | that.checkParentCB($(this)); |
| | | indent = tInd + 1; |
| | | } |
| | | }); |
| | | // ç§»é¤loading |
| | | $tr.removeClass('ew-tree-table-loading'); |
| | | var $arrow = $tr.find('.ew-tree-pack').children('.ew-tree-table-arrow'); |
| | | $arrow.removeClass('layui-anim layui-anim-rotate layui-anim-loop'); |
| | | if (msg) { // å 载失败 |
| | | $tr.removeClass('ew-tree-table-open'); |
| | | } else if (data && data.length === 0) { // æ åé |
| | | d[options.tree.haveChildName] = false; |
| | | $tr.data('have-child', false); |
| | | $arrow.addClass('ew-tree-table-arrow-hide'); |
| | | $arrow.next('.ew-tree-icon').after(options.tree.getIcon(d)).remove(); |
| | | } |
| | | } else { |
| | | // ç§»é¤loading |
| | | components.$loading.hide(); |
| | | components.$loading.removeClass('ew-loading-float'); |
| | | // æ¾ç¤ºç©ºè§å¾ |
| | | if (data && data.length > 0) { |
| | | components.$empty.hide(); |
| | | } else { |
| | | components.$empty.show(); |
| | | if (msg) components.$empty.text(msg); |
| | | else components.$empty.html(options.text.none); |
| | | } |
| | | } |
| | | this.checkChooseAllCB(); // èå¨å
¨éæ¡ |
| | | updateFixedTbHead(components.$view); // æ»å¨æ¡è¡¥ä¸ |
| | | options.done && options.done(data); |
| | | }; |
| | | |
| | | /** |
| | | * é彿¸²æè¡¨æ ¼ä¸»ä½é¨å |
| | | * @param data æ°æ®å表 |
| | | * @param indent 缩è¿å¤§å° |
| | | * @param parent ç¶çº§ |
| | | * @param h ç¶çº§æ¯å¦éè |
| | | * @returns {string} |
| | | */ |
| | | TreeTable.prototype.renderBody = function (data, indent, parent, h) { |
| | | var options = this.options; |
| | | if (!indent) indent = 0; |
| | | var html = ''; |
| | | if (!data || data.length === 0) return html; |
| | | var hide = parent ? !parent[options.tree.openName] : undefined; |
| | | if (h) hide = h;//彿æç¶çº§åå¨éèæ¶ï¼éèææåé |
| | | for (var i = 0; i < data.length; i++) { |
| | | var d = data[i]; |
| | | d.LAY_INDEX = (parent ? parent.LAY_INDEX + '-' : '') + i; |
| | | html += this.renderBodyTr(d, indent, hide); |
| | | // é彿¸²æåé |
| | | html += this.renderBody(d[options.tree.childName], indent + 1, d, h); |
| | | } |
| | | return html; |
| | | }; |
| | | |
| | | /** |
| | | * æ¸²ææ¯ä¸è¡æ°æ® |
| | | * @param d è¡æ°æ® |
| | | * @param indent 缩è¿å¤§å° |
| | | * @param hide æ¯å¦éè |
| | | * @param $tr |
| | | * @returns {string} |
| | | */ |
| | | TreeTable.prototype.renderBodyTr = function (d, indent, hide, $tr) { |
| | | var that = this; |
| | | var options = this.options; |
| | | if (!indent) indent = 0; |
| | | var haveChild = d[options.tree.haveChildName]; |
| | | if (haveChild === undefined) haveChild = d[options.tree.childName] && d[options.tree.childName].length > 0; |
| | | if ($tr) { |
| | | $tr.data('have-child', haveChild ? 'true' : 'false'); |
| | | $tr.data('indent', indent); |
| | | $tr.removeClass('ew-tree-table-loading'); |
| | | } |
| | | var html = '<tr'; |
| | | var classNames = ''; |
| | | if (haveChild && d[options.tree.openName]) classNames += 'ew-tree-table-open'; |
| | | if (hide) classNames += 'ew-tree-tb-hide'; |
| | | html += (' class="' + classNames + '"'); |
| | | if (haveChild) html += (' data-have-child="' + haveChild + '"'); |
| | | html += (' data-index="' + d.LAY_INDEX + '"'); |
| | | html += (' data-indent="' + indent + '">'); |
| | | var index = 0; |
| | | this.eachCols(function (i, col) { |
| | | if (col.colGroup) return; |
| | | html += that.renderBodyTd(d, indent, index, $tr ? $tr.children('td').eq(index) : undefined, col); |
| | | index++; |
| | | }); |
| | | html += '</tr>'; |
| | | return html; |
| | | }; |
| | | |
| | | /** |
| | | * æ¸²ææ¯ä¸ä¸ªåå
æ ¼æ°æ® |
| | | * @param d è¡æ°æ® |
| | | * @param indent 缩è¿å¤§å° |
| | | * @param index 第å å |
| | | * @param $td |
| | | * @param col |
| | | * @returns {string} |
| | | */ |
| | | TreeTable.prototype.renderBodyTd = function (d, indent, index, $td, col) { |
| | | if (!col||col.colGroup) return ''; |
| | | var options = this.options; |
| | | var components = this.getComponents(); |
| | | if (!indent) indent = 0; |
| | | // å
容填å
|
| | | var content = '', cell = '', icon = ''; |
| | | if (col.type === 'numbers') { // åºå·å |
| | | content = '<span class="ew-tree-table-numbers"></span>'; |
| | | } else if (col.type === 'checkbox') { // å¤éæ¡å |
| | | content = [ |
| | | '<input type="checkbox"', d.LAY_CHECKED ? ' checked="checked"' : '', |
| | | ' lay-filter="', components.checkboxFilter, '"', |
| | | ' lay-skin="primary" class="ew-tree-table-checkbox', |
| | | d.LAY_INDETERMINATE ? ' ew-form-indeterminate' : '', '" />' |
| | | ].join(''); |
| | | } else if (col.type === 'radio') { // åéæ¡å |
| | | content = [ |
| | | '<input type="radio"', d.LAY_CHECKED ? ' checked="checked"' : '', |
| | | ' lay-filter="', components.radioFilter, '"', |
| | | ' name="', components.radioFilter, '"', |
| | | ' class="ew-tree-table-radio" />' |
| | | ].join(''); |
| | | } else if (col.templet) { // èªå®ä¹æ¨¡æ¿ |
| | | if (typeof col.templet === 'function') { |
| | | content = col.templet(d); |
| | | } else if (typeof col.templet === 'string') { |
| | | laytpl($(col.templet).html()).render(d, function (html) { |
| | | content = html; |
| | | }); |
| | | } |
| | | } else if (col.toolbar) { // æä½å |
| | | if (typeof col.toolbar === 'function') { |
| | | content = col.toolbar(d); |
| | | } else if (typeof col.toolbar === 'string') { |
| | | laytpl($(col.toolbar).html()).render(d, function (html) { |
| | | content = html; |
| | | }); |
| | | } |
| | | } else if (col.field && d[col.field] !== undefined && d[col.field] !== null) { // æ®éåæ®µ |
| | | content = util.escape(d[col.field] === 0 ? '0' : d[col.field]); |
| | | } |
| | | // 徿 åå¤ç |
| | | if (index === options.tree.iconIndex) { |
| | | // ç¼©è¿ |
| | | for (var i = 0; i < indent; i++) icon += '<span class="ew-tree-table-indent"></span>'; |
| | | icon += '<span class="ew-tree-pack">'; |
| | | // å ç®å¤´ |
| | | var haveChild = d[options.tree.haveChildName]; |
| | | if (haveChild === undefined) haveChild = d[options.tree.childName] && d[options.tree.childName].length > 0; |
| | | icon += ('<i class="ew-tree-table-arrow layui-icon' + (haveChild ? '' : ' ew-tree-table-arrow-hide')); |
| | | icon += (' ' + (options.tree.arrowType || '') + '"></i>'); |
| | | // å 徿 |
| | | icon += options.tree.getIcon(d); |
| | | content = '<span>' + content + '</span>'; |
| | | if (options.tree.onlyIconControl) content = icon + '</span>' + content; |
| | | else content = icon + content + '</span>'; |
| | | } |
| | | cell = [ |
| | | '<div class="ew-tree-table-cell', col.singleLine === undefined || col.singleLine ? ' single-line' : '', '"', |
| | | col.align ? ' align="' + col.align + '"' : '', |
| | | '>', |
| | | ' <div class="ew-tree-table-cell-content">', content, '</div>', |
| | | ' <i class="layui-icon layui-icon-close ew-tree-tips-c"></i>', |
| | | ' <div class="layui-table-grid-down" style="display: none;"><i class="layui-icon layui-icon-down"></i></div>', |
| | | '</div>' |
| | | ].join(''); |
| | | |
| | | if ($td) $td.html(cell); |
| | | |
| | | var html = '<td'; |
| | | if (col.field) html += (' data-field="' + col.field + '"'); |
| | | if (col.edit) html += (' data-edit="' + col.edit + '"'); |
| | | if (col.type) html += (' data-type="' + col.type + '"'); |
| | | if (col.key) html += (' data-key="' + col.key + '"'); |
| | | if (col.style) html += (' style="' + col.style + '"'); |
| | | if (col['class']) html += (' class="' + col['class'] + (col.hide ? ' layui-hide' : '') + '"'); |
| | | else if (col.hide) html += (' class="layui-hide"'); |
| | | html += ('>' + cell + '</td>'); |
| | | return html; |
| | | }; |
| | | |
| | | /** |
| | | * 渲æè¡¨å¤´ |
| | | * @returns {string} |
| | | */ |
| | | TreeTable.prototype.renderBodyTh = function () { |
| | | var options = this.options; |
| | | var components = this.getComponents(); |
| | | var html = []; |
| | | $.each(options.cols, function (i1, item1) { |
| | | html.push('<tr>'); |
| | | $.each(item1, function (i2, item2) { |
| | | html.push('<th'); |
| | | if (item2.colspan) html.push(' colspan="' + item2.colspan + '"'); |
| | | if (item2.rowspan) html.push(' rowspan="' + item2.rowspan + '"'); |
| | | if (item2.type) html.push(' data-type="' + item2.type + '"'); |
| | | if (item2.key) html.push(' data-key="' + item2.key + '"'); |
| | | if (item2.parentKey) html.push(' data-parent="' + item2.parentKey + '"'); |
| | | if (item2.hide) html.push(' class="layui-hide"'); |
| | | html.push('>'); |
| | | html.push('<div class="ew-tree-table-cell' + (item2.singleLine === undefined || item2.singleLine ? ' single-line' : '') + '"'); |
| | | if (item2.thAlign || item2.align) html.push(' align="' + (item2.thAlign || item2.align) + '"'); |
| | | html.push('>'); |
| | | html.push('<div class="ew-tree-table-cell-content">'); |
| | | // æ é¢ |
| | | var ca = '<input type="checkbox" lay-filter="' + components.chooseAllFilter + '" lay-skin="primary" class="ew-tree-table-checkbox"/>'; |
| | | if (item2.type === 'checkbox') html.push(ca); |
| | | else html.push(item2.title || ''); |
| | | html.push('</div><i class="layui-icon layui-icon-close ew-tree-tips-c"></i>'); |
| | | html.push('<div class="layui-table-grid-down" style="display: none;"><i class="layui-icon layui-icon-down"></i></div></div>'); |
| | | // åå®½ææ½ |
| | | if (!item2.colGroup && !item2.unresize) html.push('<span class="ew-tb-resize"></span>'); |
| | | html.push('</th>'); |
| | | }); |
| | | html.push('</tr>'); |
| | | }); |
| | | return html.join(''); |
| | | }; |
| | | |
| | | /** éç½®è¡¨æ ¼å°ºå¯¸ */ |
| | | TreeTable.prototype.resize = function (returnColgroup) { |
| | | // 计ç®è¡¨æ ¼å®½åº¦ãæå°å®½åº¦ãç¾åæ¯å®½åº¦ |
| | | var options = this.options; |
| | | var components = this.getComponents(); |
| | | var minWidth = 1, width = 1, needSetWidth = true, mwPercent = 0; |
| | | this.eachCols(function (i, item) { |
| | | if (item.colGroup || item.hide) return; |
| | | if (item.width) { |
| | | width += (item.width + 1); |
| | | if (item.minWidth) { |
| | | if (item.width < item.minWidth) item.width = item.minWidth; |
| | | } else if (item.width < options.cellMinWidth) item.width = options.cellMinWidth; |
| | | } else needSetWidth = false; |
| | | if (item.width) minWidth += (item.width + 1); |
| | | else if (item.minWidth) { |
| | | minWidth += (item.minWidth + 1); |
| | | mwPercent += item.minWidth; |
| | | } else { |
| | | minWidth += (options.cellMinWidth + 1); |
| | | mwPercent += options.cellMinWidth; |
| | | } |
| | | }); |
| | | if (minWidth) { |
| | | components.$tHead.css('min-width', minWidth); |
| | | components.$tBody.css('min-width', minWidth); |
| | | } else { |
| | | components.$tHead.css('min-width', 'auto'); |
| | | components.$tBody.css('min-width', 'auto'); |
| | | } |
| | | if (needSetWidth) { |
| | | components.$tHead.css('width', width); |
| | | components.$tBody.css('width', width); |
| | | } else { |
| | | components.$tHead.css('width', '100%'); |
| | | components.$tBody.css('width', '100%'); |
| | | } |
| | | |
| | | // çæcolgroup |
| | | var colgroupHtml = []; |
| | | this.eachCols(function (i, item) { |
| | | if (item.colGroup || item.hide) return; |
| | | colgroupHtml.push('<col'); |
| | | if (item.width) colgroupHtml.push(' width="' + item.width + '"'); |
| | | else if (item.minWidth) colgroupHtml.push(' width="' + (item.minWidth / mwPercent * 100).toFixed(2) + '%"'); |
| | | else colgroupHtml.push(' width="' + (options.cellMinWidth / mwPercent * 100).toFixed(2) + '%"'); |
| | | if (item.type) colgroupHtml.push(' data-type="' + item.type + '"'); |
| | | if (item.key) colgroupHtml.push(' data-key="' + item.key + '"'); |
| | | colgroupHtml.push('/>'); |
| | | }); |
| | | colgroupHtml = colgroupHtml.join(''); |
| | | if (returnColgroup) return '<colgroup>' + colgroupHtml + '</colgroup>'; |
| | | components.$table.children('colgroup').html(colgroupHtml); |
| | | }; |
| | | |
| | | /** è·åè¡å¯¹åºæ°æ® */ |
| | | TreeTable.prototype.getDataByTr = function ($tr) { |
| | | var data, index; |
| | | if (typeof $tr !== 'string' && typeof $tr !== 'number') { |
| | | if ($tr) index = $tr.data('index'); |
| | | } else index = $tr; |
| | | if (index === undefined) return; |
| | | if (typeof index === 'number') index = [index]; |
| | | else index = index.split('-'); |
| | | for (var i = 0; i < index.length; i++) { |
| | | if (data) data = data[this.options.tree.childName][index[i]]; |
| | | else data = this.options.data[index[i]]; |
| | | } |
| | | return data; |
| | | }; |
| | | |
| | | /** |
| | | * èå¨å级å¤éæ¡ç¶æ |
| | | * @param $tr å½åtrçdom |
| | | * @param checked |
| | | */ |
| | | TreeTable.prototype.checkSubCB = function ($tr, checked) { |
| | | var that = this; |
| | | var components = this.getComponents(); |
| | | var indent = -1, $trList; |
| | | if ($tr.is('tbody')) { |
| | | $trList = $tr.children('tr'); |
| | | } else { |
| | | indent = parseInt($tr.data('indent')); |
| | | $trList = $tr.nextAll('tr'); |
| | | } |
| | | $trList.each(function () { |
| | | if (parseInt($(this).data('indent')) <= indent) return false; |
| | | var $cb = $(this).children('td').find('input[lay-filter="' + components.checkboxFilter + '"]'); |
| | | $cb.prop('checked', checked); |
| | | $cb.removeClass('ew-form-indeterminate'); |
| | | if (checked) $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); |
| | | else $cb.next('.layui-form-checkbox').removeClass('layui-form-checked'); |
| | | var d = that.getDataByTr($(this)); |
| | | d.LAY_CHECKED = checked; // åæ¥æ´æ°æ°æ® |
| | | d.LAY_INDETERMINATE = false; |
| | | }); |
| | | }; |
| | | |
| | | /** |
| | | * èå¨ç¶çº§å¤éæ¡ç¶æ |
| | | * @param $tr ç¶çº§çdom |
| | | */ |
| | | TreeTable.prototype.checkParentCB = function ($tr) { |
| | | var options = this.options; |
| | | var components = this.getComponents(); |
| | | var d = this.getDataByTr($tr); |
| | | var ckNum = 0, unCkNum = 0; |
| | | if (d[options.tree.childName]) { |
| | | function checkNum(data) { |
| | | for (var i = 0; i < data.length; i++) { |
| | | if (data[i].LAY_CHECKED) ckNum++; |
| | | else unCkNum++; |
| | | if (data[i][options.tree.childName]) checkNum(data[i][options.tree.childName]); |
| | | } |
| | | } |
| | | |
| | | checkNum(d[options.tree.childName]); |
| | | } |
| | | var $cb = $tr.children('td').find('input[lay-filter="' + components.checkboxFilter + '"]'); |
| | | if (ckNum > 0 && unCkNum === 0) { // å
¨é |
| | | $cb.prop('checked', true); |
| | | $cb.removeClass('ew-form-indeterminate'); |
| | | $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); |
| | | d.LAY_CHECKED = true; // åæ¥æ´æ°æ°æ® |
| | | d.LAY_INDETERMINATE = false; |
| | | } else if (ckNum === 0 && unCkNum > 0) { // å
¨ä¸é |
| | | $cb.prop('checked', false); |
| | | $cb.removeClass('ew-form-indeterminate'); |
| | | $cb.next('.layui-form-checkbox').removeClass('layui-form-checked'); |
| | | d.LAY_CHECKED = false; // åæ¥æ´æ°æ°æ® |
| | | d.LAY_INDETERMINATE = false; |
| | | } else if (ckNum > 0 && unCkNum > 0) { // åé |
| | | $cb.prop('checked', true); |
| | | $cb.data('indeterminate', 'true'); |
| | | $cb.addClass('ew-form-indeterminate'); |
| | | $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); |
| | | d.LAY_CHECKED = true; // åæ¥æ´æ°æ°æ® |
| | | d.LAY_INDETERMINATE = true; |
| | | } |
| | | }; |
| | | |
| | | /** èå¨å
¨éå¤éæ¡ */ |
| | | TreeTable.prototype.checkChooseAllCB = function () { |
| | | var options = this.options; |
| | | var components = this.getComponents(); |
| | | var ckNum = 0, unCkNum = 0; |
| | | |
| | | function checkNum(data) { |
| | | for (var i = 0; i < data.length; i++) { |
| | | if (data[i].LAY_CHECKED) ckNum++; |
| | | else unCkNum++; |
| | | if (data[i][options.tree.childName]) checkNum(data[i][options.tree.childName]); |
| | | } |
| | | } |
| | | |
| | | checkNum(options.data); |
| | | |
| | | var $cb = components.$view.find('input[lay-filter="' + components.chooseAllFilter + '"]'); |
| | | if (ckNum > 0 && unCkNum === 0) { // å
¨é |
| | | $cb.prop('checked', true); |
| | | $cb.removeClass('ew-form-indeterminate'); |
| | | $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); |
| | | } else if ((ckNum === 0 && unCkNum > 0) || (ckNum === 0 && unCkNum === 0)) { // å
¨ä¸é |
| | | $cb.prop('checked', false); |
| | | $cb.removeClass('ew-form-indeterminate'); |
| | | $cb.next('.layui-form-checkbox').removeClass('layui-form-checked'); |
| | | } else if (ckNum > 0 && unCkNum > 0) { // åé |
| | | $cb.prop('checked', true); |
| | | $cb.addClass('ew-form-indeterminate'); |
| | | $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); |
| | | } |
| | | }; |
| | | |
| | | /** å¡«å
åºå·å */ |
| | | TreeTable.prototype.renderNumberCol = function () { |
| | | this.getComponents().$tBody.children('tbody').children('tr').each(function (i) { |
| | | $(this).children('td').find('.ew-tree-table-numbers').text(i + 1); |
| | | }); |
| | | }; |
| | | |
| | | /** æ ¹æ®idè·åtrçindex */ |
| | | TreeTable.prototype.getIndexById = function (id) { |
| | | var options = this.options; |
| | | |
| | | function each(data, pi) { |
| | | for (var i = 0; i < data.length; i++) { |
| | | if (data[i][options.tree.idName] === id) return pi !== undefined ? pi + '-' + i : i; |
| | | if (data[i][options.tree.childName]) { |
| | | var res = each(data[i][options.tree.childName], pi !== undefined ? pi + '-' + i : i); |
| | | //å¼ä¸ä¸ºundefinedæreturn |
| | | if (res) return res; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return each(options.data); |
| | | }; |
| | | |
| | | /** å±å¼æå®è¡ */ |
| | | TreeTable.prototype.expand = function (id, cascade) { |
| | | var components = this.getComponents(); |
| | | var $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]'); |
| | | if (!$tr.hasClass('ew-tree-table-open')) $tr.children('td').find('.ew-tree-pack').trigger('click'); |
| | | if (cascade === false) return; |
| | | // èå¨ç¶çº§ |
| | | var indent = parseInt($tr.data('indent')); |
| | | $tr.prevAll('tr').each(function () { |
| | | var tInd = parseInt($(this).data('indent')); |
| | | if (tInd < indent) { |
| | | if (!$(this).hasClass('ew-tree-table-open')) { |
| | | $(this).children('td').find('.ew-tree-pack').trigger('click'); |
| | | } |
| | | indent = tInd; |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | /** æå æå®è¡ */ |
| | | TreeTable.prototype.fold = function (id) { |
| | | var components = this.getComponents(); |
| | | var $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]'); |
| | | if ($tr.hasClass('ew-tree-table-open')) $tr.children('td').find('.ew-tree-pack').trigger('click'); |
| | | }; |
| | | |
| | | /** å
¨é¨å±å¼ */ |
| | | TreeTable.prototype.expandAll = function () { |
| | | this.getComponents().$table.children('tbody').children('tr').each(function () { |
| | | if (!$(this).hasClass('ew-tree-table-open')) $(this).children('td').find('.ew-tree-pack').trigger('click'); |
| | | }); |
| | | }; |
| | | |
| | | /** å
¨é¨æå */ |
| | | TreeTable.prototype.foldAll = function () { |
| | | this.getComponents().$table.children('tbody').children('tr').each(function () { |
| | | if ($(this).hasClass('ew-tree-table-open')) $(this).children('td').find('.ew-tree-pack').trigger('click'); |
| | | }); |
| | | }; |
| | | |
| | | /** è·åå½åæ°æ® */ |
| | | TreeTable.prototype.getData = function () { |
| | | return this.options.data; |
| | | }; |
| | | |
| | | /** éè½½è¡¨æ ¼ */ |
| | | TreeTable.prototype.reload = function (opt) { |
| | | this.initOptions(this.options ? $.extend(true, this.options, opt) : opt); |
| | | this.init(); // åå§åè¡¨æ ¼ |
| | | this.bindEvents(); // ç»å®äºä»¶ |
| | | }; |
| | | |
| | | /** è·åå½åéä¸è¡ */ |
| | | TreeTable.prototype.checkStatus = function (needIndeterminate) { |
| | | if (needIndeterminate === undefined) needIndeterminate = true; |
| | | var list = []; |
| | | this.eachData(function (i, item) { |
| | | if ((needIndeterminate || !item.LAY_INDETERMINATE) && item.LAY_CHECKED) |
| | | list.push($.extend({isIndeterminate: item.LAY_INDETERMINATE}, item)); |
| | | }); |
| | | return list; |
| | | }; |
| | | |
| | | /** 设置å¤/åéæ¡éä¸ */ |
| | | TreeTable.prototype.setChecked = function (ids) { |
| | | var that = this; |
| | | var components = this.getComponents(); |
| | | var $radio = components.$table.find('input[lay-filter="' + components.radioFilter + '"]'); |
| | | if ($radio.length > 0) { // å¼å¯äºåéæ¡ |
| | | $radio.each(function () { |
| | | var d = that.getDataByTr($(this).parentsUntil('tr').parent()); |
| | | if (d && ids[ids.length - 1] == d[that.options.tree.idName]) { |
| | | $(this).next('.layui-form-radio').trigger('click'); |
| | | return false; |
| | | } |
| | | }); |
| | | } else { // å¼å¯äºå¤éæ¡ |
| | | components.$table.find('input[lay-filter="' + components.checkboxFilter + '"]').each(function () { |
| | | var $cb = $(this); |
| | | var $layCb = $cb.next('.layui-form-checkbox'); |
| | | var checked = $cb.prop('checked'); |
| | | var indeterminate = $cb.hasClass('ew-form-indeterminate'); |
| | | var d = that.getDataByTr($cb.parentsUntil('tr').parent()); |
| | | for (var i = 0; i < ids.length; i++) { |
| | | if (d && ids[i] == d[that.options.tree.idName]) { |
| | | if (d[that.options.tree.childName] && d[that.options.tree.childName].length > 0) continue; |
| | | if (!checked || indeterminate) $layCb.trigger('click'); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | /** ç§»é¤å
¨é¨éä¸ */ |
| | | TreeTable.prototype.removeAllChecked = function () { |
| | | this.checkSubCB(this.getComponents().$table.children('tbody'), false); |
| | | }; |
| | | |
| | | /** å¯¼åº */ |
| | | TreeTable.prototype.exportData = function (type) { |
| | | var components = this.getComponents(); |
| | | if ('show' === type) { |
| | | components.$toolbar.find('.layui-table-tool-panel').remove(); |
| | | components.$toolbar.find('[lay-event="LAYTABLE_EXPORT"]').append([ |
| | | '<ul class="layui-table-tool-panel">', |
| | | ' <li data-type="csv">导åºå° Csv æä»¶</li>', |
| | | ' <li data-type="xls">导åºå° Excel æä»¶</li>', |
| | | '</ul>' |
| | | ].join('')); |
| | | } else { |
| | | if (device.ie) return layer.msg('䏿¯æie导åº'); |
| | | if (!type) type = 'xls'; |
| | | var head = [], body = []; |
| | | this.eachCols(function (i, item) { |
| | | if (item.type !== 'normal' || item.hide) return; |
| | | head.push(item.title || ''); |
| | | }); |
| | | components.$tBody.children('tbody').children('tr').each(function () { |
| | | var items = []; |
| | | $(this).children('td').each(function () { |
| | | var $this = $(this); |
| | | if ($this.data('type') !== 'normal' || $this.hasClass('layui-hide')) return true; |
| | | items.push($this.text().trim().replace(/,/g, 'ï¼')); |
| | | }); |
| | | body.push(items.join(',')); |
| | | }); |
| | | // å建ä¸è½½æä»¶çaæ ç¾ |
| | | var alink = document.createElement('a'); |
| | | var content = encodeURIComponent(head.join(',') + '\r\n' + body.join('\r\n')); |
| | | var contentType = ({csv: 'text/csv', xls: 'application/vnd.ms-excel'})[type]; |
| | | alink.href = 'data:' + contentType + ';charset=utf-8,\ufeff' + content; |
| | | alink.download = (this.options.title || 'table') + '.' + type; |
| | | document.body.appendChild(alink); |
| | | alink.click(); |
| | | document.body.removeChild(alink); |
| | | } |
| | | }; |
| | | |
| | | /** æå° */ |
| | | TreeTable.prototype.printTable = function () { |
| | | var components = this.getComponents(); |
| | | var head = components.$tHead.children('thead').html(); |
| | | if (!head) head = components.$tBody.children('thead').html(); |
| | | var body = components.$tBody.children('tbody').html(); |
| | | var colgroup = components.$tBody.children('colgroup').html(); |
| | | var $html = $([ |
| | | '<table class="ew-tree-table-print">', |
| | | ' <colgroup>', colgroup, '</colgroup>', |
| | | ' <thead>', head, '</thead>', |
| | | ' <tbody>', body, '</tbody>', |
| | | '</table>' |
| | | ].join('')); |
| | | |
| | | // éèç¹æ®å |
| | | $html.find('col[data-type="checkbox"],col[data-type="radio"],col[data-type="tool"]').remove(); |
| | | $html.find('td[data-type="checkbox"],td[data-type="radio"],td[data-type="tool"],.layui-hide').remove(); |
| | | |
| | | function hideCol($temp) { |
| | | var parentKey = $temp.data('parent'), pCol; |
| | | if (!parentKey) return; |
| | | var $parent = $html.children('thead').children('tr').children('[data-key="' + parentKey + '"]'); |
| | | var colspan = parseInt($parent.attr('colspan')) - 1; |
| | | $parent.attr('colspan', colspan); |
| | | if (colspan === 0) $parent.remove(); |
| | | hideCol($parent); |
| | | } |
| | | |
| | | $html.find('th[data-type="checkbox"],th[data-type="radio"],th[data-type="tool"]').each(function () { |
| | | hideCol($(this)); |
| | | }).remove(); |
| | | |
| | | // æå°å
å®¹æ ·å¼ |
| | | var style = [ |
| | | '<style>', |
| | | ' /* æå°è¡¨æ ¼æ ·å¼ */', |
| | | ' .ew-tree-table-print {', |
| | | ' border: none;', |
| | | ' border-collapse: collapse;', |
| | | ' width: 100%;', |
| | | ' table-layout: fixed;', |
| | | ' }', |
| | | ' .ew-tree-table-print td, .ew-tree-table-print th {', |
| | | ' color: #555;', |
| | | ' font-size: 14px;', |
| | | ' padding: 9px 15px;', |
| | | ' word-break: break-all;', |
| | | ' border: 1px solid #888;', |
| | | ' text-align: left;', |
| | | ' }', |
| | | ' .ew-tree-table-print .ew-tree-table-cell {', |
| | | ' min-height: 20px;', |
| | | ' }', |
| | | ' /* åºå·åæ ·å¼ */', |
| | | ' .ew-tree-table-print td[data-type="numbers"], .ew-tree-table-print th[data-type="numbers"] {', |
| | | ' padding-left: 0;', |
| | | ' padding-right: 0;', |
| | | ' }', |
| | | ' /* å/å¤éæ¡åæ ·å¼ */', |
| | | ' .ew-tree-table-print td[data-type="tool"], .ew-tree-table-print th[data-type="tool"], ', |
| | | ' .ew-tree-table-print td[data-type="checkbox"], .ew-tree-table-print th[data-type="checkbox"], ', |
| | | ' .ew-tree-table-print td[data-type="radio"], .ew-tree-table-print th[data-type="radio"] {', |
| | | ' border: none;', |
| | | ' }', |
| | | ' .ew-tree-table-print td.layui-hide + td, .ew-tree-table-print th.layui-hide + th, ', |
| | | ' .ew-tree-table-print td[data-type="tool"] + td, .ew-tree-table-print th[data-type="tool"] + th, ', |
| | | ' .ew-tree-table-print td[data-type="checkbox"] + td, .ew-tree-table-print th[data-type="checkbox"] + th, ', |
| | | ' .ew-tree-table-print td[data-type="radio"] + td, .ew-tree-table-print th[data-type="radio"] + th {', |
| | | ' border-left: none;', |
| | | ' }', |
| | | ' /* 䏿¾ç¤ºçå
ç´ */', |
| | | ' .layui-hide, ', |
| | | ' .ew-tree-table-print td[data-type="tool"] *, .ew-tree-table-print th[data-type="tool"] *, ', |
| | | ' .ew-tree-table-print td[data-type="checkbox"] *, .ew-tree-table-print th[data-type="checkbox"] *, ', |
| | | ' .ew-tree-table-print td[data-type="radio"] *, .ew-tree-table-print th[data-type="radio"] *, ', |
| | | ' .layui-table-grid-down, .ew-tree-tips-c, .ew-tree-icon, .ew-tree-table-arrow.ew-tree-table-arrow-hide {', |
| | | ' display: none;', |
| | | ' }', |
| | | ' /* treeç¼©è¿ */', |
| | | ' .ew-tree-table-indent {', |
| | | ' padding-left: 13px;', |
| | | ' }', |
| | | ' /* ç®å¤´ */', |
| | | ' .ew-tree-table-arrow {', |
| | | ' position: relative;', |
| | | ' padding-left: 13px;', |
| | | ' }', |
| | | ' .ew-tree-table-arrow:before {', |
| | | ' content: "";', |
| | | ' border: 5px solid transparent;', |
| | | ' border-top-color: #666;', |
| | | ' position: absolute;', |
| | | ' left: 0;', |
| | | ' top: 6px;', |
| | | ' }', |
| | | '</style>' |
| | | ].join(''); |
| | | var pWindow = window.open('', '_blank'); |
| | | pWindow.focus(); |
| | | var pDocument = pWindow.document; |
| | | pDocument.open(); |
| | | pDocument.write($html[0].outerHTML + style); |
| | | pDocument.close(); |
| | | pWindow.print(); |
| | | pWindow.close(); |
| | | }; |
| | | |
| | | /** çéå */ |
| | | TreeTable.prototype.toggleCol = function (show, field, key) { |
| | | var components = this.getComponents(); |
| | | if (show === undefined) { |
| | | components.$toolbar.find('.layui-table-tool-panel').remove(); |
| | | var cols = ['<ul class="layui-table-tool-panel">']; |
| | | this.eachCols(function (i, item) { |
| | | if (item.type !== 'normal') return; |
| | | cols.push('<li><input type="checkbox" lay-skin="primary"'); |
| | | cols.push(' lay-filter="' + components.colsToggleFilter + '"'); |
| | | cols.push(' value="' + item.key + '" title="' + util.escape(item.title || '') + '"'); |
| | | cols.push((item.hide ? '' : ' checked') + '></li>'); |
| | | }); |
| | | components.$toolbar.find('[lay-event="LAYTABLE_COLS"]').append(cols.join('') + '</ul>'); |
| | | form.render('checkbox', components.filter); |
| | | } else { |
| | | if (key) { |
| | | var $td = components.$table.children('tbody').children('tr').children('[data-key="' + key + '"]'); |
| | | var $th = components.$table.children('thead').children('tr').children('[data-key="' + key + '"]'); |
| | | if (show) { |
| | | $td.removeClass('layui-hide'); |
| | | $th.removeClass('layui-hide'); |
| | | } else { |
| | | $td.addClass('layui-hide'); |
| | | $th.addClass('layui-hide'); |
| | | } |
| | | // åæ¥æ´æ°æ°æ® |
| | | var ks = key.split('-'); |
| | | var col = this.options.cols[ks[0]][ks[1]]; |
| | | col.hide = !show; |
| | | |
| | | // æ´æ°colspanæ°æ® |
| | | function changeParent($temp) { |
| | | var parentKey = $temp.data('parent'), pCol; |
| | | if (!parentKey) return; |
| | | var $parent = components.$table.children('thead').children('tr').children('[data-key="' + parentKey + '"]'); |
| | | var colspan = $parent.attr('colspan'); |
| | | show ? colspan++ : colspan--; |
| | | $parent.attr('colspan', colspan); |
| | | if (colspan === 0) $parent.addClass('layui-hide'); |
| | | else $parent.removeClass('layui-hide'); |
| | | changeParent($parent); |
| | | } |
| | | |
| | | changeParent($th); |
| | | |
| | | // 忥eachColsæ°æ® |
| | | this.eachCols(function (i, item) { |
| | | if (item.key === key) item.hide = col.hide; |
| | | }); |
| | | this.resize(); // æ´æ°è¡¨æ ¼å°ºå¯¸ |
| | | } |
| | | } |
| | | }; |
| | | |
| | | /** |
| | | * æç´¢æ°æ® |
| | | * @param ids å
³é®åææ°æ®idéå |
| | | */ |
| | | TreeTable.prototype.filterData = function (ids) { |
| | | var components = this.getComponents(); |
| | | components.$loading.show(); |
| | | if (this.options.data.length > 0) components.$loading.addClass('ew-loading-float'); |
| | | var $trList = components.$table.children('tbody').children('tr'); |
| | | var indexList = []; |
| | | if (typeof ids === 'string') { // å
³é®å |
| | | $trList.each(function () { |
| | | var index = $(this).data('index'); |
| | | $(this).children('td').each(function () { |
| | | if ($(this).text().indexOf(ids) !== -1) { |
| | | indexList.push(index); |
| | | return false; |
| | | } |
| | | }); |
| | | }); |
| | | } else { |
| | | for (var i = 0; i < ids.length; i++) { |
| | | indexList.push(this.getIndexById(ids[i])); |
| | | } |
| | | } |
| | | $trList.addClass('ew-tree-table-filter-hide'); |
| | | for (var j = 0; j < indexList.length; j++) { |
| | | var $tr = $trList.filter('[data-index="' + indexList[j] + '"]'); |
| | | $tr.removeClass('ew-tree-table-filter-hide'); |
| | | var indent = parseInt($tr.data('indent')); |
| | | // èå¨å级 |
| | | $tr.nextAll('tr').each(function () { |
| | | if (parseInt($(this).data('indent')) <= indent) return false; |
| | | $(this).removeClass('ew-tree-table-filter-hide'); |
| | | }); |
| | | if ($tr.hasClass('ew-tree-table-open')) toggleRow($tr); |
| | | // èå¨ç¶çº§ |
| | | $tr.prevAll('tr').each(function () { |
| | | var tInd = parseInt($(this).data('indent')); |
| | | if (tInd < indent) { |
| | | $(this).removeClass('ew-tree-table-filter-hide'); |
| | | if (!$(this).hasClass('ew-tree-table-open')) toggleRow($(this)); |
| | | indent = tInd; |
| | | } |
| | | }); |
| | | } |
| | | // æå忣æ¥ä¸é |
| | | /*$trList.not('.ew-tree-table-filter-hide').not('.ew-tree-tb-hide').each(function () { |
| | | var index = $(this).data('index'), hide = true; |
| | | for (var k = 0; k < indexList.length; k++) { |
| | | if (indexList[k] === index) hide = false; |
| | | } |
| | | if (hide) $(this).addClass('ew-tree-table-filter-hide'); |
| | | });*/ |
| | | components.$loading.hide(); |
| | | components.$loading.removeClass('ew-loading-float'); |
| | | if (indexList.length === 0) components.$empty.show(); |
| | | updateFixedTbHead(components.$view); // æ´æ°æ»å¨æ¡è¡¥ä¸ |
| | | }; |
| | | |
| | | /** éç½®æç´¢ */ |
| | | TreeTable.prototype.clearFilter = function () { |
| | | var components = this.getComponents(); |
| | | components.$table.children('tbody').children('tr').removeClass('ew-tree-table-filter-hide'); |
| | | if (this.options.data.length > 0) components.$empty.hide(); |
| | | updateFixedTbHead(components.$view); // æ´æ°æ»å¨æ¡è¡¥ä¸ |
| | | }; |
| | | |
| | | /** |
| | | * å·æ°æå®ç¶çº§ä¸çèç¹ |
| | | * @param id ç¶çº§id,空åå
¨é¨å·æ° |
| | | * @param data é弿¥æ¨¡å¼æ¿æ¢çæ°æ® |
| | | */ |
| | | TreeTable.prototype.refresh = function (id, data) { |
| | | if (isClass(id) === 'Array') { |
| | | data = id; |
| | | id = undefined; |
| | | } |
| | | var components = this.getComponents(); |
| | | var d, $tr; |
| | | if (id !== undefined) { |
| | | $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]'); |
| | | d = this.getDataByTr($tr); |
| | | } |
| | | if (data) { // æ°æ®æ¨¡å¼ |
| | | if (data.length > 0) components.$loading.addClass('ew-loading-float'); |
| | | components.$loading.show(); |
| | | if (data.length > 0 && this.options.tree.isPidData) { // pid形弿°æ® |
| | | this.renderBodyData(tt.pidToChildren(data, this.options.tree.idName, this.options.tree.pidName, this.options.tree.childName), d, $tr); |
| | | } else { |
| | | this.renderBodyData(data, d, $tr); |
| | | } |
| | | } else { // 弿¥æ¨¡å¼ |
| | | this.renderBodyAsync(d, $tr); |
| | | } |
| | | }; |
| | | |
| | | /** å 餿°æ® */ |
| | | TreeTable.prototype.del = function (id, index) { |
| | | if (index === undefined) index = this.getIndexById(id); |
| | | var indexList = (typeof index === 'number' ? [index] : index.split('-')); |
| | | var d = this.options.data; |
| | | if (indexList.length > 1) { |
| | | for (var i = 0; i < indexList.length - 1; i++) { |
| | | d = d[parseInt(indexList[i])][this.options.tree.childName]; |
| | | } |
| | | } |
| | | d.splice(indexList[indexList.length - 1], 1); |
| | | }; |
| | | |
| | | /** æ´æ°æ°æ® */ |
| | | TreeTable.prototype.update = function (id, fields) { |
| | | $.extend(true, this.getDataByTr(this.getIndexById(id)), fields); |
| | | }; |
| | | |
| | | /** æå /å±å¼è¡ */ |
| | | function toggleRow($tr) { |
| | | var indent = parseInt($tr.data('indent')); |
| | | var open = $tr.hasClass('ew-tree-table-open'); |
| | | if (open) { // æå |
| | | $tr.removeClass('ew-tree-table-open'); |
| | | $tr.nextAll('tr').each(function () { |
| | | if (parseInt($(this).data('indent')) <= indent) return false; |
| | | $(this).addClass('ew-tree-tb-hide'); |
| | | }); |
| | | } else { // å±å¼ |
| | | $tr.addClass('ew-tree-table-open'); |
| | | var hideInd; |
| | | $tr.nextAll('tr').each(function () { |
| | | var ind = parseInt($(this).data('indent')); |
| | | if (ind <= indent) return false; |
| | | if (hideInd !== undefined && ind > hideInd) return true; |
| | | $(this).removeClass('ew-tree-tb-hide'); |
| | | if (!$(this).hasClass('ew-tree-table-open')) hideInd = parseInt($(this).data('indent')); |
| | | else hideInd = undefined; |
| | | }); |
| | | } |
| | | updateFixedTbHead($tr.parentsUntil('.ew-tree-table').last().parent()); |
| | | return open; |
| | | } |
| | | |
| | | /** åºå®è¡¨å¤´æ»å¨æ¡è¡¥ä¸ */ |
| | | function updateFixedTbHead($view) { |
| | | var $headBox = $view.children('.ew-tree-table-head'); |
| | | var $tbBox = $view.children('.ew-tree-table-box'); |
| | | var sWidth = $tbBox.width() - $tbBox.prop('clientWidth'); |
| | | $headBox.css('border-right', (sWidth > 0 ? sWidth : 0) + 'px solid #f2f2f2'); |
| | | } |
| | | |
| | | // çå¬çªå£å¤§å°æ¹å |
| | | $(window).resize(function () { |
| | | $('.ew-tree-table').each(function () { |
| | | updateFixedTbHead($(this)); |
| | | var $tbBox = $(this).children('.ew-tree-table-box'); |
| | | var full = $tbBox.data('full'); |
| | | if (full && device.ie && device.ie < 10) { |
| | | $tbBox.css('height', getPageHeight() - full); |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | /** è¡¨æ ¼æº¢åºç¹å»å±å¼åè½ */ |
| | | $(document).on('mouseenter', '.ew-tree-table-cell.single-line', function () { |
| | | var $content = $(this).children('.ew-tree-table-cell-content'); |
| | | if ($content.prop('scrollWidth') > $content.outerWidth()) $(this).children('.layui-table-grid-down').show(); |
| | | }).on('mouseleave', '.ew-tree-table-cell.single-line', function () { |
| | | $(this).children('.layui-table-grid-down').hide(); |
| | | }); |
| | | // ç¹å»ç®å¤´å±å¼ |
| | | $(document).on('click', '.ew-tree-table-cell>.layui-table-grid-down', function (e) { |
| | | e.stopPropagation(); |
| | | hideAllTdTips(); |
| | | var $cell = $(this).parent(); |
| | | $cell.addClass('ew-tree-tips-open'); |
| | | $cell.children('.layui-table-grid-down').hide(); |
| | | var tw = $cell.parent().outerWidth() + 4; |
| | | if ($cell.outerWidth() < tw) $cell.children('.ew-tree-table-cell-content').css({'width': tw, 'max-width': tw}); |
| | | var $box = $cell.parents().filter('.ew-tree-table-box'); |
| | | if ($box.length === 0) $box = $cell.parents().filter('.ew-tree-table-head'); |
| | | if ($box.length === 0) return; |
| | | if (($cell.outerWidth() + $cell.offset().left) + 20 > $box.offset().left + $box.outerWidth()) { |
| | | $cell.addClass('ew-show-left'); |
| | | } |
| | | if (($cell.outerHeight() + $cell.offset().top + 10) > $box.offset().top + $box.outerHeight()) { |
| | | $cell.addClass('ew-show-bottom'); |
| | | } |
| | | }); |
| | | // ç¹å»å
³éæé®å
³é |
| | | $(document).on('click', '.ew-tree-table-cell>.ew-tree-tips-c', function () { |
| | | hideAllTdTips(); |
| | | }); |
| | | // ç¹å»ç©ºç½é¨åå
³é |
| | | $(document).on('click', function () { |
| | | hideAllTdTips(); |
| | | $('.ew-tree-table .layui-table-tool-panel').remove(); |
| | | }); |
| | | $(document).on('click', '.ew-tree-table-cell.ew-tree-tips-open', function (e) { |
| | | e.stopPropagation(); |
| | | }); |
| | | |
| | | /* å
³éææåå
æ ¼æº¢åºæç¤ºæ¡ */ |
| | | function hideAllTdTips() { |
| | | $('.ew-tree-table-cell').removeClass('ew-tree-tips-open ew-show-left ew-show-bottom'); |
| | | $('.ew-tree-table-cell>.ew-tree-table-cell-content').css({'width': '', 'max-width': ''}); |
| | | } |
| | | |
| | | /** ææ½è°æ´å宽 */ |
| | | $(document).on('mousedown', '.ew-tb-resize', function (e) { |
| | | layui.stope(e); |
| | | var $this = $(this); |
| | | $this.attr('move', 'true'); |
| | | var key = $this.parent().data('key'); |
| | | $this.data('x', e.clientX); |
| | | var w = $this.parent().parent().parent().parent().children('colgroup').children('col[data-key="' + key + '"]').attr('width'); |
| | | if (!w || w.toString().indexOf('%') !== -1) w = $this.parent().outerWidth(); |
| | | $this.data('width', w); |
| | | $('body').addClass('ew-tree-table-resizing'); |
| | | }).on('mousemove', function (e) { |
| | | var $rs = $('.ew-tree-table .ew-tb-resize[move="true"]'); |
| | | if ($rs.length === 0) return; |
| | | layui.stope(e); |
| | | var x = $rs.data('x'); |
| | | var w = $rs.data('width'); |
| | | var nw = parseFloat(w) + e.clientX - parseFloat(x); |
| | | if (nw <= 0) nw = 1; |
| | | // æ´æ°å®ä¾optionsä¸ç宽度 |
| | | var ins = _instances[$rs.parentsUntil('.ew-tree-table').last().parent().attr('lay-filter')]; |
| | | var key = $rs.parent().data('key'); |
| | | var ks = key.split('-'); |
| | | ins.options.cols[ks[0]][ks[1]].width = nw; |
| | | ins.eachCols(function (i, item) { |
| | | if (item.key === key) item.width = nw; |
| | | }); |
| | | ins.resize(); |
| | | }).on('mouseup', function (e) { |
| | | $('.ew-tree-table .ew-tb-resize[move="true"]').attr('move', 'false'); |
| | | $('body').removeClass('ew-tree-table-resizing'); |
| | | }).on('mouseleave', function (e) { |
| | | $('.ew-tree-table .ew-tb-resize[move="true"]').attr('move', 'false'); |
| | | $('body').removeClass('ew-tree-table-resizing'); |
| | | }); |
| | | |
| | | /** è·å顶级çpId */ |
| | | function getPids(data, idName, pidName) { |
| | | var pids = []; |
| | | for (var i = 0; i < data.length; i++) { |
| | | var hasPid = false; |
| | | for (var j = 0; j < data.length; j++) { |
| | | if (data[i][pidName] == data[j][idName]) { |
| | | hasPid = true; |
| | | break; |
| | | } |
| | | } |
| | | if (!hasPid) pids.push(data[i][pidName]); |
| | | } |
| | | return pids; |
| | | } |
| | | |
| | | /** 夿pIdæ¯å¦ç¸ç */ |
| | | function pidEquals(pId, pIds) { |
| | | if (isClass(pIds) === 'Array') { |
| | | for (var i = 0; i < pIds.length; i++) |
| | | if (pId == pIds[i]) return true; |
| | | } |
| | | return pId == pIds; |
| | | } |
| | | |
| | | /** è·ååéç±»å */ |
| | | function isClass(o) { |
| | | if (o === null) return 'Null'; |
| | | if (o === undefined) return 'Undefined'; |
| | | return Object.prototype.toString.call(o).slice(8, -1); |
| | | } |
| | | |
| | | /** è·åæµè§å¨é«åº¦ */ |
| | | function getPageHeight() { |
| | | return document.documentElement.clientHeight || document.body.clientHeight; |
| | | } |
| | | |
| | | /** 坹夿ä¾çæ¹æ³ */ |
| | | var tt = { |
| | | /* 渲æ */ |
| | | render: function (options) { |
| | | return new TreeTable(options); |
| | | }, |
| | | /* éè½½ */ |
| | | reload: function (id, opt) { |
| | | _instances[id].reload(opt); |
| | | }, |
| | | /* äºä»¶çå¬ */ |
| | | on: function (events, callback) { |
| | | return layui.onevent.call(this, MOD_NAME, events, callback); |
| | | }, |
| | | /* pid转childrenå½¢å¼ */ |
| | | pidToChildren: function (data, idName, pidName, childName, pId) { |
| | | if (!childName) childName = 'children'; |
| | | var newList = []; |
| | | for (var i = 0; i < data.length; i++) { |
| | | if (data[i][idName] == data[i][pidName]) |
| | | return console.error('第' + i + 'æ¡æ°æ®ç' + idName + 'ä¸' + pidName + 'ç¸å', data[i]); |
| | | if (pId === undefined) pId = getPids(data, idName, pidName); |
| | | if (pidEquals(data[i][pidName], pId)) { |
| | | var children = this.pidToChildren(data, idName, pidName, childName, data[i][idName]); |
| | | if (children.length > 0) data[i][childName] = children; |
| | | newList.push(data[i]); |
| | | } |
| | | } |
| | | return newList; |
| | | } |
| | | }; |
| | | |
| | | /** æ·»å æ ·å¼ */ |
| | | $('head').append([ |
| | | '<style id="ew-tree-table-css">', |
| | | '/** æå¤å±å®¹å¨ */', |
| | | '.ew-tree-table {', |
| | | ' margin: 10px 0;', |
| | | ' position: relative;', |
| | | ' border: 1px solid #e6e6e6;', |
| | | ' border-bottom: none;', |
| | | ' border-right: none;', |
| | | '}', |
| | | |
| | | '.ew-tree-table:before, .ew-tree-table:after, .ew-tree-table .ew-tree-table-head:after {', |
| | | ' content: "";', |
| | | ' background-color: #e6e6e6;', |
| | | ' position: absolute;', |
| | | ' right: 0;', |
| | | ' bottom: 0;', |
| | | '}', |
| | | |
| | | '.ew-tree-table:before {', |
| | | ' width: 1px;', |
| | | ' top: 0;', |
| | | ' z-index: 1;', |
| | | '}', |
| | | |
| | | '.ew-tree-table:after, .ew-tree-table .ew-tree-table-head:after {', |
| | | ' height: 1px;', |
| | | ' left: 0;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .layui-table {', |
| | | ' margin: 0;', |
| | | ' position: relative;', |
| | | ' table-layout: fixed;', |
| | | '}', |
| | | |
| | | '/** è¡¨æ ¼ */', |
| | | '.ew-tree-table .layui-table td, .ew-tree-table .layui-table th {', |
| | | ' border-top: none;', |
| | | ' border-left: none;', |
| | | ' padding: 0 !important;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-box {', |
| | | ' overflow: auto;', |
| | | ' position: relative;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-head {', |
| | | ' overflow: hidden;', |
| | | ' box-sizing: border-box;', |
| | | ' background-color: #f2f2f2;', |
| | | ' position: relative;', |
| | | '}', |
| | | |
| | | '/** loading */', |
| | | '.ew-tree-table div.ew-tree-table-loading {', |
| | | ' padding: 10px 0;', |
| | | ' text-align: center;', |
| | | '}', |
| | | |
| | | '.ew-tree-table div.ew-tree-table-loading > i {', |
| | | ' color: #999;', |
| | | ' font-size: 30px;', |
| | | '}', |
| | | |
| | | '.ew-tree-table div.ew-tree-table-loading.ew-loading-float {', |
| | | ' position: absolute;', |
| | | ' top: 0;', |
| | | ' left: 0;', |
| | | ' right: 0;', |
| | | '}', |
| | | |
| | | '/** ç©ºæ°æ® */', |
| | | '.ew-tree-table .ew-tree-table-empty {', |
| | | ' color: #666;', |
| | | ' font-size: 14px;', |
| | | ' padding: 18px 0;', |
| | | ' text-align: center;', |
| | | ' display: none;', |
| | | '}', |
| | | |
| | | '/** åå
æ ¼ */', |
| | | '.ew-tree-table-cell.ew-tree-tips-open {', |
| | | ' position: absolute;', |
| | | ' top: 0;', |
| | | ' left: 0;', |
| | | ' padding: 0;', |
| | | ' z-index: 9999;', |
| | | ' background-color: #fff;', |
| | | ' box-shadow: 3px 3px 8px rgba(0, 0, 0, .15);', |
| | | '}', |
| | | |
| | | 'thead .ew-tree-table-cell.ew-tree-tips-open {', |
| | | ' background-color: #f2f2f2;', |
| | | '}', |
| | | |
| | | '.ew-tree-table-cell.ew-tree-tips-open.ew-show-left {', |
| | | ' right: 0;', |
| | | ' left: auto;', |
| | | ' box-shadow: -3px 3px 8px rgba(0, 0, 0, .15);', |
| | | '}', |
| | | |
| | | '.ew-tree-table-cell.ew-tree-tips-open.ew-show-bottom {', |
| | | ' bottom: 0;', |
| | | ' top: auto;', |
| | | ' box-shadow: 3px -3px 8px rgba(0, 0, 0, .15);', |
| | | '}', |
| | | |
| | | '.ew-tree-table-cell.ew-tree-tips-open.ew-show-left.ew-show-bottom {', |
| | | ' box-shadow: -3px -3px 8px rgba(0, 0, 0, .15);', |
| | | '}', |
| | | |
| | | '.ew-tree-table-cell > .ew-tree-tips-c {', |
| | | ' position: absolute;', |
| | | ' right: -6px;', |
| | | ' top: -3px;', |
| | | ' width: 22px;', |
| | | ' height: 22px;', |
| | | ' line-height: 22px;', |
| | | ' font-size: 16px;', |
| | | ' color: #fff;', |
| | | ' background-color: #666;', |
| | | ' border-radius: 50%;', |
| | | ' text-align: center;', |
| | | ' cursor: pointer;', |
| | | ' display: none;', |
| | | '}', |
| | | |
| | | 'table tr:first-child .ew-tree-table-cell > .ew-tree-tips-c {', |
| | | ' top: 0;', |
| | | '}', |
| | | |
| | | '.ew-tree-table-cell.ew-tree-tips-open > .ew-tree-tips-c {', |
| | | ' display: block;', |
| | | '}', |
| | | |
| | | '.ew-tree-table-cell.ew-tree-tips-open.ew-show-left > .ew-tree-tips-c {', |
| | | ' left: -6px;', |
| | | ' right: auto;', |
| | | '}', |
| | | |
| | | '.ew-tree-table-cell > .ew-tree-table-cell-content {', |
| | | ' padding: 5px 15px;', |
| | | ' line-height: 28px;', |
| | | '}', |
| | | |
| | | '[lay-size="lg"] .ew-tree-table-cell > .ew-tree-table-cell-content {', |
| | | ' line-height: 40px;', |
| | | '}', |
| | | |
| | | '[lay-size="sm"] .ew-tree-table-cell > .ew-tree-table-cell-content {', |
| | | ' padding: 1px 15px;', |
| | | '}', |
| | | |
| | | '.ew-tree-table-cell.single-line > .ew-tree-table-cell-content {', |
| | | ' overflow: hidden;', |
| | | ' white-space: nowrap;', |
| | | ' text-overflow: ellipsis;', |
| | | '}', |
| | | |
| | | '.ew-tree-table-cell.ew-tree-tips-open > .ew-tree-table-cell-content {', |
| | | ' overflow: auto;', |
| | | ' padding: 9px 15px;', |
| | | ' height: auto;', |
| | | ' min-height: 100%;', |
| | | ' max-height: 110px;', |
| | | ' line-height: inherit;', |
| | | ' max-width: 260px;', |
| | | ' width: 200px;', |
| | | ' width: max-content;', |
| | | ' width: -moz-max-content;', |
| | | ' box-sizing: border-box;', |
| | | ' white-space: normal;', |
| | | '}', |
| | | |
| | | '.ew-tree-table-cell > .layui-table-grid-down {', |
| | | ' box-sizing: border-box;', |
| | | '}', |
| | | |
| | | '/** 徿 å */', |
| | | '.ew-tree-table .ew-tree-pack {', |
| | | ' cursor: pointer;', |
| | | ' line-height: 16px;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-pack > .layui-icon, .ew-tree-table .ew-tree-pack > .ew-tree-icon {', |
| | | ' margin-right: 5px;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-pack > * {', |
| | | ' vertical-align: middle;', |
| | | '}', |
| | | |
| | | '/* ç¼©è¿ */', |
| | | '.ew-tree-table .ew-tree-table-indent {', |
| | | ' margin-right: 5px;', |
| | | ' padding-left: 16px;', |
| | | '}', |
| | | |
| | | '/* ç®å¤´ */', |
| | | '.ew-tree-table .ew-tree-table-arrow:before {', |
| | | ' content: "\\e623";', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-open .ew-tree-table-arrow:before {', |
| | | ' content: "\\e625";', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-arrow.arrow2 {', |
| | | ' font-size: 12px;', |
| | | ' font-weight: 600;', |
| | | ' line-height: 16px;', |
| | | ' height: 16px;', |
| | | ' width: 16px;', |
| | | ' display: inline-block;', |
| | | ' text-align: center;', |
| | | ' color: #888;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-arrow.arrow2:before {', |
| | | ' content: "\\e602";', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-open .ew-tree-table-arrow.arrow2:before {', |
| | | ' content: "\\e61a";', |
| | | '}', |
| | | |
| | | '.ew-tree-table-arrow.ew-tree-table-arrow-hide {', |
| | | ' visibility: hidden;', |
| | | '}', |
| | | |
| | | '/* ç®å¤´åå è½½ä¸ç¶æ */', |
| | | '.ew-tree-table tr.ew-tree-table-loading > td .ew-tree-table-arrow:before {', |
| | | ' content: "\\e63d" !important;', |
| | | '}', |
| | | |
| | | '.ew-tree-table tr.ew-tree-table-loading > td .ew-tree-table-arrow {', |
| | | ' margin-right: 0;', |
| | | '}', |
| | | |
| | | '.ew-tree-table tr.ew-tree-table-loading > td .ew-tree-table-arrow + * {', |
| | | ' margin-left: 5px;', |
| | | '}', |
| | | |
| | | '.ew-tree-table tr.ew-tree-table-loading * {', |
| | | ' pointer-events: none !important;', |
| | | '}', |
| | | |
| | | '/** æå è¡ */', |
| | | '.ew-tree-table .ew-tree-tb-hide {', |
| | | ' display: none;', |
| | | '}', |
| | | |
| | | '/** ç¹æ®åè°æ´ */', |
| | | '.ew-tree-table td[data-type="numbers"] > .ew-tree-table-cell,', |
| | | '.ew-tree-table th[data-type="numbers"] > .ew-tree-table-cell,', |
| | | '.ew-tree-table td[data-type="checkbox"] > .ew-tree-table-cell,', |
| | | '.ew-tree-table th[data-type="checkbox"] > .ew-tree-table-cell,', |
| | | '.ew-tree-table td[data-type="radio"] > .ew-tree-table-cell,', |
| | | '.ew-tree-table th[data-type="radio"] > .ew-tree-table-cell,', |
| | | '.ew-tree-table td[data-type="space"] > .ew-tree-table-cell,', |
| | | '.ew-tree-table th[data-type="space"] > .ew-tree-table-cell {', |
| | | ' padding-left: 0;', |
| | | ' padding-right: 0;', |
| | | '}', |
| | | |
| | | '/* åå
æ ¼å
表åå
ç´ æ ·å¼è°æ´ */', |
| | | '.ew-tree-table .layui-form-switch', |
| | | '.ew-tree-table .layui-form-radio {', |
| | | ' margin: 0;', |
| | | '}', |
| | | |
| | | '/* checkboxåè°æ´ */', |
| | | '.ew-tree-table-checkbox + .layui-form-checkbox {', |
| | | ' padding: 0;', |
| | | '}', |
| | | |
| | | '.ew-tree-table-checkbox + .layui-form-checkbox > .layui-icon {', |
| | | ' font-weight: 600;', |
| | | ' color: transparent;', |
| | | ' transition: background-color .1s linear;', |
| | | ' -webkit-transition: background-color .1s linear;', |
| | | '}', |
| | | |
| | | '.ew-tree-table-checkbox + .layui-form-checkbox.layui-form-checked > .layui-icon {', |
| | | ' color: #fff;', |
| | | '}', |
| | | |
| | | '/* checkboxåéç¶æ */', |
| | | '.ew-form-indeterminate + .layui-form-checkbox .layui-icon:before {', |
| | | ' content: "";', |
| | | ' width: 10px;', |
| | | ' height: 2px;', |
| | | ' background-color: #f1f1f1;', |
| | | ' position: absolute;', |
| | | ' top: 50%;', |
| | | ' left: 50%;', |
| | | ' margin: -1px 0 0 -5px;', |
| | | '}', |
| | | |
| | | '/* radioåè°æ´ */', |
| | | '.ew-tree-table-radio + .layui-form-radio {', |
| | | ' margin: 0;', |
| | | ' padding: 0;', |
| | | ' height: 20px;', |
| | | ' line-height: 20px;', |
| | | '}', |
| | | |
| | | '.ew-tree-table-radio + .layui-form-radio > i {', |
| | | ' margin: 0;', |
| | | ' height: 20px;', |
| | | ' font-size: 20px;', |
| | | ' line-height: 20px;', |
| | | '}', |
| | | |
| | | '/** åå
æ ¼ç¼è¾ */', |
| | | '.ew-tree-table .layui-table td[data-edit] {', |
| | | ' cursor: text;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-edit {', |
| | | ' position: absolute;', |
| | | ' left: 0;', |
| | | ' top: 0;', |
| | | ' width: 100%;', |
| | | ' height: 100%;', |
| | | ' border-radius: 0;', |
| | | ' box-shadow: 1px 1px 20px rgba(0, 0, 0, .15);', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-edit:focus {', |
| | | ' border-color: #5FB878 !important;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-edit.layui-form-danger {', |
| | | ' border-color: #FF5722 !important;', |
| | | '}', |
| | | |
| | | '/** æç´¢æ°æ®éèè¡ */', |
| | | '.ew-tree-table tr.ew-tree-table-filter-hide {', |
| | | ' display: none !important;', |
| | | '}', |
| | | |
| | | '/** 头é¨å·¥å
·æ */', |
| | | '.ew-tree-table .ew-tree-table-tool {', |
| | | ' min-height: 50px;', |
| | | ' line-height: 30px;', |
| | | ' padding: 10px 15px;', |
| | | ' box-sizing: border-box;', |
| | | ' background-color: #f2f2f2;', |
| | | ' border-bottom: 1px solid #e6e6e6;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-right {', |
| | | ' float: right;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-item {', |
| | | ' position: relative;', |
| | | ' color: #333;', |
| | | ' width: 26px;', |
| | | ' height: 26px;', |
| | | ' line-height: 26px;', |
| | | ' text-align: center;', |
| | | ' margin-left: 10px;', |
| | | ' display: inline-block;', |
| | | ' border: 1px solid #ccc;', |
| | | ' box-sizing: border-box;', |
| | | ' vertical-align: middle;', |
| | | ' -webkit-transition: .3s all;', |
| | | ' transition: .3s all;', |
| | | ' cursor: pointer;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-item:first-child {', |
| | | ' margin-left: 0;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-item:hover {', |
| | | ' border-color: #999;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-table-tool-right .layui-table-tool-panel {', |
| | | ' left: auto;', |
| | | ' right: -1px;', |
| | | ' z-index: 9999;', |
| | | '}', |
| | | |
| | | '/* åå®½ææ½è°æ´ */', |
| | | '.ew-tree-table .ew-tb-resize {', |
| | | ' position: absolute;', |
| | | ' right: 0;', |
| | | ' top: 0;', |
| | | ' bottom: 0;', |
| | | ' width: 10px;', |
| | | ' cursor: col-resize;', |
| | | '}', |
| | | |
| | | '.ew-tree-table-resizing {', |
| | | ' cursor: col-resize;', |
| | | ' -ms-user-select: none;', |
| | | ' -moz-user-select: none;', |
| | | ' -webkit-user-select: none;', |
| | | ' user-select: none;', |
| | | '}', |
| | | |
| | | '/* è¾
婿 ·å¼ */', |
| | | '.ew-tree-table .layui-form-switch {', |
| | | ' margin: 0;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .pd-tb-0 {', |
| | | ' padding-top: 0 !important;', |
| | | ' padding-bottom: 0 !important;', |
| | | '}', |
| | | |
| | | '.ew-tree-table .break-all {', |
| | | ' word-break: break-all !important;', |
| | | '}', |
| | | |
| | | '/** æ©å±å¾æ */', |
| | | '.ew-tree-table .ew-tree-icon-folder:after, .ew-tree-table .ew-tree-icon-file:after {', |
| | | ' content: "";', |
| | | ' padding: 2px 10px;', |
| | | ' -webkit-background-size: cover;', |
| | | ' -moz-background-size: cover;', |
| | | ' -o-background-size: cover;', |
| | | ' background-size: cover;', |
| | | ' background-repeat: no-repeat;', |
| | | ' background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAE6UlEQVR4Xu2ZPYhcVRiGny9hC0FsTEBCGkFTWIQE/IlpgmKpWAiLyR0XLbYTxEKxkCAEhRCxEOwsjJnJioKIYClWKgqiskIIaCoLYyASVJT87JGspN37LrOXvec777Tzzrnvz7Nn2dnAr6YbiKbTOzwGoHEIDIABaLyBxuP7BjAAjTfQeHzfAAag8QYaj+8bwAA03kDj8X0DGIDGG2g8/lw3QFlhD9fZN7oOF7gYT3NudL5GaGjTAJQP2c1VXgIOExyGkf4/oXCe4I3oeH+EvY/G0qYAKFOWCV4Hdo8mQb+RL7jBE7HE3/3S9hQyAGXGCeDVSiv6lqscief4t1L/g9mWAChTHiD4ZrTXvVbPu9GxrEnbUWkAzPgeOJCglsXo+ChBji2L0AtAmfEgrP/0Z3hdZoF7Y5HLGcJsRQYFgLeAF7fiYSM540x0LI3Ey7bb6AdgytcEh7bd6VYa2MGhOJrmVpurmX4AZlwCds31lPF9+AI32O8/DYUvccqUKwR3jG/DuR29Gd36F1pNv/pvgKwAFK5RuC+e4eeWCWgXgJurFz6LCY8bgA0aSPwr4P/UhVNc43ir3xK2fQPcAr/wO/AewU/Ar6xRqroVdvAnC6zGIlc369sAbLax8er/ofAJOzkVR9e/uZVeBkCqqTrRyeh4RXFtAJSWatQUno0Jp/usG4C+hup9/yJ72BuPcH2jCAag3oEV50vRccYAKFXl1LwdHS8YgJzj9qcqfBoTnjQA/VVlVXwXHfcbgKzz9uf6IToOGoD+orIqDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzLUFAMy4BOwSH2jZmBoorMaE/RtZij6/ZcoFgrv7dH5/lA38Eh33zAfAjM+BR0cZz6Y2bqDwY0w4MB8AU04SvOyuq2zg4+h4aj4AzvIwha+qjN+66cLzMeGduQC4+eEy4zywr/U+K8t/hQX2xiJ/zQ/ACgdZ40vgtspKaNducCyOsdJXQO9fAbcOKGc5whofENzVd6jf3/YGTkTHccWFDMD6r4LT3MlOloHHCB4CblceYs3gDfxB4TeCcxReiwmr6hM3BYB6qHX1NGAA6tlqEKcGYJBa6znUANSz1SBODcAgtdZzqAGoZ6tBnBqAQWqt51ADUM9Wgzg1AIPUWs+hBqCerQZxagAGqbWeQw1APVsN4tQADFJrPYcagHq2GsTpf+KxwJB5Cd5mAAAAAElFTkSuQmCC");', |
| | | '}', |
| | | |
| | | '.ew-tree-table tr.ew-tree-table-open > td .ew-tree-icon-folder:after {', |
| | | ' background-image: url("data:image/png;base64,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");', |
| | | '}', |
| | | |
| | | '.ew-tree-table .ew-tree-icon-file:after {', |
| | | ' background-image: url("data:image/png;base64,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");', |
| | | '}', |
| | | '</style>' |
| | | ].join('')); |
| | | |
| | | exports('treeTable', tt); |
| | | }); |