bootstrap-table-treegrid.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. /**
  2. * @author: YL
  3. * @version: v1.0.0
  4. */
  5. !function ($) {
  6. 'use strict';
  7. $.extend($.fn.bootstrapTable.defaults, {
  8. treeShowField: null,
  9. rootNo: 0,
  10. idField: 'id',
  11. parentIdField: 'pid',
  12. level: "depth",
  13. onGetNodes: function (row, data) {
  14. var that = this;
  15. var nodes = [];
  16. $.each(data, function (i, item) {
  17. if (row[that.options.idField] === item[that.options.parentIdField]) {
  18. nodes.push(item);
  19. }
  20. });
  21. return nodes;
  22. },
  23. responseHandler: responseHandler,
  24. queryParams: queryParams,
  25. onCheckRoot: function (row, data) {
  26. var that = this;
  27. return row[that.options.parentIdField] == that.options.rootNo || row[that.options.parentIdField] === null;
  28. }
  29. });
  30. var BootstrapTable = $.fn.bootstrapTable.Constructor,
  31. _init = BootstrapTable.prototype.init,
  32. _initRow = BootstrapTable.prototype.initRow,
  33. _initHeader = BootstrapTable.prototype.initHeader,
  34. _rowStyle = null;
  35. BootstrapTable.prototype.init = function () {
  36. _rowStyle = this.options.rowStyle;
  37. _init.apply(this, Array.prototype.slice.apply(arguments));
  38. };
  39. // td
  40. BootstrapTable.prototype.initHeader = function () {
  41. var that = this;
  42. _initHeader.apply(that, Array.prototype.slice.apply(arguments));
  43. var treeShowField = that.options.treeShowField;
  44. if (treeShowField) {
  45. $.each(this.header.fields, function (i, field) {
  46. if (treeShowField === field) {
  47. that.treeEnable = true;
  48. return false;
  49. }
  50. });
  51. }
  52. };
  53. function responseHandler(res) {
  54. if (res.success) {
  55. var data = JSON.parse('{"total":' +
  56. res.result.totalCount +
  57. ',"rows":' +
  58. JSON.stringify(res.result.items) +
  59. '}');
  60. console.log(data);
  61. return data;
  62. } else {
  63. console.log('Table load failed');
  64. if (res.error) {
  65. if (res.error.details) {
  66. return abp.message.error(res.error.details, res.error.message);
  67. } else {
  68. if (error.message && error.message.indexOf('登陆超时') >= 0) {
  69. return abp.message.error(error.message).done(function () {
  70. window.top.location.reload();
  71. });
  72. } else {
  73. return abp.message.error(error.message || abp.ajax.defaultError.message);
  74. }
  75. }
  76. }
  77. }
  78. return JSON.parse('{"total":0,"rows":[]}');
  79. };
  80. function queryParams(params) {
  81. return {
  82. MaxResultCount: params.limit,
  83. SkipCount: params.offset,
  84. sort: params.sort, //排序列名
  85. sortOrder: params.order //排位命令(desc,asc)
  86. };
  87. }
  88. var initTr = function (item, idx, data, parentDom) {
  89. var that = this;
  90. var nodes = that.options.onGetNodes.apply(that, [item, data]);
  91. item._nodes = nodes;
  92. parentDom.append(_initRow.apply(that, [item, idx, data, parentDom]));
  93. // init sub node
  94. var len = nodes.length - 1;
  95. for (var i = 0; i <= len; i++) {
  96. var node = nodes[i];
  97. node._level = item._level + 1;
  98. node._parent = item;
  99. if (i === len)
  100. node._last = 1;
  101. // jquery.treegrid.js
  102. that.options.rowStyle = function (item, idx) {
  103. var res = _rowStyle.apply(that, Array.prototype.slice.apply(arguments));
  104. var id = item[that.options.idField] ? item[that.options.idField] : 0;
  105. var pid = item[that.options.parentIdField] ? item[that.options.parentIdField] : 0;
  106. var level = item[that.options.level] ? item[that.options.level] : 0;
  107. res.classes = [
  108. res.classes || '',
  109. 'treegrid-' + id,
  110. 'treegrid-parent-' + pid,
  111. 'level-' + level
  112. ].join(' ');
  113. return res;
  114. };
  115. initTr.apply(that, [node, $.inArray(node, data), data, parentDom]);
  116. }
  117. };
  118. // tr
  119. BootstrapTable.prototype.initRow = function (item, idx, data, parentDom) {
  120. var that = this;
  121. if (that.treeEnable) {
  122. // init root node
  123. if (that.options.onCheckRoot.apply(that, [item, data])) {
  124. if (item._level === undefined) {
  125. item._level = 0;
  126. }
  127. // jquery.treegrid.js
  128. that.options.rowStyle = function (item, idx) {
  129. var res = _rowStyle.apply(that, Array.prototype.slice.apply(arguments));
  130. var x = item[that.options.idField] ? item[that.options.idField] : 0;
  131. res.classes = [
  132. res.classes || '',
  133. 'treegrid-' + x
  134. ].join(' ');
  135. return res;
  136. };
  137. initTr.apply(that, [item, idx, data, parentDom]);
  138. return true;
  139. }
  140. return false;
  141. }
  142. return _initRow.apply(that, Array.prototype.slice.apply(arguments));
  143. };
  144. }(jQuery);