ledger_bwtz.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date
  7. * @version
  8. */
  9. $(document).ready(() => {
  10. autoFlashHeight();
  11. const xmjSpread = SpreadJsObj.createNewSpread($('#xmj-spread')[0]);
  12. const xmjSheet = xmjSpread.getActiveSheet();
  13. sjsSettingObj.setFxTreeStyle(xmjSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
  14. SpreadJsObj.initSheet(xmjSheet, xmjSpreadSetting);
  15. const unitSpread = SpreadJsObj.createNewSpread($('#unit-spread')[0]);
  16. const unitSheet = unitSpread.getActiveSheet();
  17. SpreadJsObj.initSheet(unitSheet, unitSpreadSetting);
  18. const unitTreeObj = {
  19. loadCurUnitData: function () {
  20. const node = SpreadJsObj.getSelectObject(xmjSheet);
  21. if (node && node.unitTree) {
  22. SpreadJsObj.loadSheetData(unitSheet, SpreadJsObj.DataType.Tree, node.unitTree);
  23. } else {
  24. SpreadJsObj.initSheet(unitSheet, unitSpreadSetting);
  25. }
  26. }
  27. };
  28. xmjSpread.bind(spreadNS.Events.SelectionChanged, function (e, info) {
  29. unitTreeObj.loadCurUnitData();
  30. });
  31. postData(window.location.pathname + '/load', {}, function (result) {
  32. const setting = {
  33. id: 'ledger_id',
  34. pid: 'ledger_pid',
  35. order: 'order',
  36. level: 'level',
  37. rootId: -1,
  38. fullPath: 'full_path',
  39. };
  40. const xmjTree = createNewPathTree('base', setting);
  41. xmjTree.loadDatas(result);
  42. for (const n of xmjTree.nodes) {
  43. if (n.unitTreeData) {
  44. n.unitTree = createNewPathTree('base', setting);
  45. n.unitTree.loadDatas(n.unitTreeData);
  46. }
  47. }
  48. SpreadJsObj.loadSheetData(xmjSheet, SpreadJsObj.DataType.Tree, xmjTree);
  49. unitTreeObj.loadCurUnitData();
  50. });
  51. $.subMenu({
  52. menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
  53. toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
  54. key: 'menu.1.0.0',
  55. miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1',
  56. callback: function (info) {
  57. if (info.mini) {
  58. $('.panel-title').addClass('fluid');
  59. $('#sub-menu').removeClass('panel-sidebar');
  60. } else {
  61. $('.panel-title').removeClass('fluid');
  62. $('#sub-menu').addClass('panel-sidebar');
  63. }
  64. autoFlashHeight();
  65. xmjSpread.refresh();
  66. unitSpread.refresh();
  67. }
  68. });
  69. // 加载上下窗口resizer
  70. $.divResizer({
  71. select: '#main-resize',
  72. callback: function () {
  73. xmjSpread.refresh();
  74. let bcontent = $(".bcontent-wrap") ? $(".bcontent-wrap").height() : 0;
  75. $(".sp-wrap").height(bcontent-30);
  76. unitSpread.refresh();
  77. }
  78. });
  79. // 显示层次
  80. (function (select, sheet) {
  81. $(select).click(function () {
  82. const tag = $(this).attr('tag');
  83. const tree = sheet.zh_tree;
  84. if (!tree) return;
  85. switch (tag) {
  86. case "1":
  87. case "2":
  88. case "3":
  89. case "4":
  90. case "5":
  91. tree.expandByLevel(parseInt(tag));
  92. SpreadJsObj.refreshTreeRowVisible(sheet);
  93. break;
  94. case "last":
  95. tree.expandByCustom(() => { return true; });
  96. SpreadJsObj.refreshTreeRowVisible(sheet);
  97. break;
  98. }
  99. });
  100. })('a[name=showLevel]', xmjSheet);
  101. $('#exportBwtz').click(function () {
  102. const data = [];
  103. const setting = {
  104. cols: [
  105. {title: '项目节编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 100, formatter: '@'},
  106. {title: '清单编号', colSpan: '1', rowSpan: '2', field: 'b_code', hAlign: 0, width: 70, formatter: '@'},
  107. {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 300, formatter: '@'},
  108. {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 60, formatter: '@'},
  109. {title: '单价', colSpan: '1', rowSpan: '2', field: 'unit_price', hAlign: 2, width: 80, type: 'Number'},
  110. {title: '台账|数量', colSpan: '2|1', rowSpan: '1|1', field: 'quantity', hAlign: 2, width: 80, type: 'Number'},
  111. {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'total_price', hAlign: 2, width: 80, type: 'Number'},
  112. {title: '图(册)号', colSpan: '1', rowSpan: '2', field: 'drawing_code', hAlign: 0, width: 100, formatter: '@'},
  113. {title: '备注', colSpan: '1', rowSpan: '2', field: 'memo', hAlign: 0, width: 100, formatter: '@'},
  114. ],
  115. headRows: 2,
  116. headRowHeight: [25, 25],
  117. defaultRowHeight: 21,
  118. headerFont: 'bold 10px 微软雅黑',
  119. font: '10px 微软雅黑'
  120. };
  121. if (!xmjSheet.zh_tree) return;
  122. for (const node of xmjSheet.zh_tree.nodes) {
  123. data.push({
  124. code: node.code, b_code: node.b_code, name: node.name, unit: node.unit,
  125. unit_price: node.unit_price, quantity: node.quantity, total_price: node.total_price,
  126. drawing_code: node.drawing_code, memo: node.memo
  127. });
  128. if (node.unitTree) {
  129. for (const unitNode of node.unitTree.nodes) {
  130. data.push({
  131. code: unitNode.code, b_code: unitNode.b_code,
  132. name: unitNode.pos_name ? unitNode.pos_name : unitNode.name, unit: unitNode.unit,
  133. unit_price: unitNode.unit_price, quantity: unitNode.quantity, total_price: unitNode.total_price,
  134. drawing_code: unitNode.drawing_code, memo: unitNode.memo
  135. });
  136. }
  137. }
  138. }
  139. SpreadExcelObj.exportSimpleXlsxSheet(setting, data, $('h2')[0].innerHTML + "-部位台账.xlsx");
  140. });
  141. });