ledger_gather.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date
  7. * @version
  8. */
  9. $(document).ready(() => {
  10. autoFlashHeight();
  11. const gclSpread = SpreadJsObj.createNewSpread($('#gcl-spread')[0]);
  12. SpreadJsObj.initSheet(gclSpread.getActiveSheet(), {
  13. cols: [
  14. {title: '清单编号', colSpan: '1', rowSpan: '2', field: 'b_code', hAlign: 0, width: 120, formatter: '@'},
  15. {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 230, formatter: '@'},
  16. {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 60, formatter: '@', cellType: 'unit'},
  17. {title: '单价', colSpan: '1', rowSpan: '2', field: 'unit_price', hAlign: 2, width: 80, type: 'Number'},
  18. {title: '签约清单|数量', colSpan: '2|1', rowSpan: '1|1', field: 'deal_bills_qty', hAlign: 2, width: 80, type: 'Number'},
  19. {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'deal_bills_tp', hAlign: 2, width: 80, type: 'Number'},
  20. {title: '台账|数量', colSpan: '2|1', rowSpan: '1|1', field: 'quantity', hAlign: 2, width: 80, type: 'Number'},
  21. {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'total_price', hAlign: 2, width: 80, type: 'Number'},
  22. ],
  23. emptyRows: 0,
  24. headRows: 2,
  25. headRowHeight: [25, 25],
  26. defaultRowHeight: 21,
  27. headerFont: '12px 微软雅黑',
  28. font: '12px 微软雅黑',
  29. readOnly: true,
  30. });
  31. const gclSheet = gclSpread.getActiveSheet();
  32. const leafXmjSpread = SpreadJsObj.createNewSpread($('#leaf-xmj-spread')[0]);
  33. SpreadJsObj.initSheet(leafXmjSpread.getActiveSheet(), {
  34. cols: [
  35. {title: '项目节编号', colSpan: '1', rowSpan: '1', field: 'code', hAlign: 0, width: 120, formatter: '@'},
  36. {title: '台账数量', colSpan: '1', rowSpan: '1', field: 'quantity', hAlign: 2, width: 80, type: 'Number'},
  37. {title: '单位工程', colSpan: '1', rowSpan: '1', field: 'dwgc', hAlign: 0, width: 100, formatter: '@'},
  38. {title: '分部工程', colSpan: '1', rowSpan: '1', field: 'fbgc', hAlign: 0, width: 100, formatter: '@'},
  39. {title: '分项工程', colSpan: '1', rowSpan: '1', field: 'fxgc', hAlign: 0, width: 100, formatter: '@'},
  40. {title: '细目', colSpan: '1', rowSpan: '1', field: 'jldy', hAlign: 0, width: 100, formatter: '@'},
  41. {title: '计量单元', colSpan: '1', rowSpan: '1', field: 'bwmx', hAlign: 0, width: 100, formatter: '@'},
  42. {title: '图册号', colSpan: '1', rowSpan: '1', field: 'drawing_code', hAlign: 0, width: 120, formatter: '@'},
  43. ],
  44. emptyRows: 0,
  45. headRows: 1,
  46. headRowHeight: [32],
  47. defaultRowHeight: 21,
  48. headerFont: '12px 微软雅黑',
  49. font: '12px 微软雅黑',
  50. readOnly: true,
  51. });
  52. const leafXmjSheet = leafXmjSpread.getActiveSheet();
  53. let gclGatherData;
  54. // 获取项目节数据
  55. function loadLeafXmjData(iGclRow) {
  56. const gcl = gclGatherData[iGclRow];
  57. if (gcl) {
  58. SpreadJsObj.loadSheetData(leafXmjSheet, SpreadJsObj.DataType.Data, gcl.leafXmjs);
  59. } else {
  60. SpreadJsObj.loadSheetData(leafXmjSheet, SpreadJsObj.DataType.Data, []);
  61. }
  62. }
  63. // 切换清单行,读取所属项目节数据
  64. gclSpread.getActiveSheet().bind(spreadNS.Events.SelectionChanged, function (e, info) {
  65. const iNewRow = info.newSelections[0].row;
  66. if (!info.oldSelections || iNewRow !== info.oldSelections[0].row) {
  67. loadLeafXmjData(iNewRow);
  68. }
  69. });
  70. postData(window.location.pathname + '/load', {}, function (data) {
  71. gclGatherModel.loadLedgerData(data.bills);
  72. gclGatherModel.loadPosData(data.pos);
  73. gclGatherModel.loadDealBillsData(data.dealBills);
  74. gclGatherData = gclGatherModel.gatherGclData();
  75. SpreadJsObj.loadSheetData(gclSheet, SpreadJsObj.DataType.Data, gclGatherData);
  76. loadLeafXmjData(0);
  77. }, null, true);
  78. $.subMenu({
  79. menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
  80. toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
  81. key: 'menu.1.0.0',
  82. miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1',
  83. callback: function (info) {
  84. if (info.mini) {
  85. $('.panel-title').addClass('fluid');
  86. $('#sub-menu').removeClass('panel-sidebar');
  87. } else {
  88. $('.panel-title').removeClass('fluid');
  89. $('#sub-menu').addClass('panel-sidebar');
  90. }
  91. autoFlashHeight();
  92. gclSpread.refresh();
  93. leafXmjSpread.refresh();
  94. }
  95. });
  96. $.divResizer({
  97. select: '#main-resize',
  98. callback: function () {
  99. gclSpread.refresh();
  100. let bcontent = $(".bcontent-wrap") ? $(".bcontent-wrap").height() : 0;
  101. $(".sp-wrap").height(bcontent-40);
  102. leafXmjSpread.refresh();
  103. }
  104. });
  105. });