material_list.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. 'use strict';
  2. /**
  3. * 材料调差 - 调差清单
  4. *
  5. * @author EllisRan
  6. * @date 2019/10/25
  7. * @version
  8. */
  9. $(document).ready(() => {
  10. autoFlashHeight();
  11. // 清单table
  12. const ledgerSpread = SpreadJsObj.createNewSpread($('#ledger-spread')[0]);
  13. const ledgerSpreadSetting = {
  14. cols: [
  15. {title: '清单编号', colSpan: '1', rowSpan: '2', field: 'b_code', hAlign: 0, width: 150, formatter: '@'},
  16. {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 250, formatter: '@'},
  17. {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 120, formatter: '@'},
  18. {title: '单价', colSpan: '1', rowSpan: '2', field: 'unit_price', hAlign: 2, width: 120, type: 'Number'},
  19. {title: '本期计量数量|合同', colSpan: '3|1', rowSpan: '1|1', field: 'contract_qty', hAlign: 2, width: 120, type: 'Number'},
  20. {title: '|数量变更', colSpan: '|1', rowSpan: '|1', field: 'qc_qty', hAlign: 2, width: 120, type: 'Number'},
  21. {title: '|小计', colSpan: '|1', rowSpan: '|1', field: 'total_qty', hAlign: 2, width: 120, type: 'Number', getValue: 'getValue.qty'},
  22. ],
  23. emptyRows: 0,
  24. headRows: 2,
  25. headRowHeight: [32, 32],
  26. defaultRowHeight: 30,
  27. headerFont: '10pt 微软雅黑',
  28. readOnly: true,
  29. font: '10pt 微软雅黑',
  30. };
  31. const ledgerCol = {
  32. getValue: {
  33. qty: function (data) {
  34. return ZhCalc.add(data.contract_qty, data.qc_qty);
  35. }
  36. }
  37. };
  38. // 解析清单汇总数据
  39. gclGatherModel.loadLedgerData(ledger, curLedgerData);
  40. gclGatherModel.loadPosData(pos, curPosData);
  41. const gclGatherData = gclGatherModel.gatherGclData();
  42. // 获取项目节数据
  43. function loadLeafXmjData(iGclRow) {
  44. const gcl = gclGatherData[iGclRow];
  45. if (gcl) {
  46. SpreadJsObj.loadSheetData(leafXmjSpread.getActiveSheet(), SpreadJsObj.DataType.Data, gcl.leafXmjs);
  47. } else {
  48. SpreadJsObj.loadSheetData(leafXmjSpread.getActiveSheet(), SpreadJsObj.DataType.Data, []);
  49. }
  50. }
  51. SpreadJsObj.initSpreadSettingEvents(ledgerSpreadSetting, ledgerCol);
  52. SpreadJsObj.initSheet(ledgerSpread.getActiveSheet(), ledgerSpreadSetting);
  53. // 项目明细table
  54. const leafXmjSpread = SpreadJsObj.createNewSpread($('#leaf-xmj-spread')[0]);
  55. const leafXmjSpreadSetting = {
  56. cols: [
  57. {title: '项目节|编号', colSpan: '2|1', rowSpan: '1|1', field: 'code', hAlign: 0, width: 80, formatter: '@'},
  58. {title: '|项目节名称', colSpan: '|1', rowSpan: '|1', field: 'jldy', hAlign: 0, width: 100, formatter: '@'},
  59. {title: '部位明细|部位明细', colSpan: '2|1', rowSpan: '1|1', field: 'bwmx', hAlign: 0, width: 100, formatter: '@'},
  60. {title: '|复核数量', colSpan: '|1', rowSpan: '|1', field: 'quantity', hAlign: 0, width: 80, type: 'Number'},
  61. {title: '部位信息|单位工程', colSpan: '3|1', rowSpan: '1|1', field: 'dwgc', hAlign: 0, width: 100, formatter: '@'},
  62. {title: '|分部工程', colSpan: '|1', rowSpan: '|1', field: 'fbgc', hAlign: 0, width: 100, formatter: '@'},
  63. {title: '|分项工程', colSpan: '|1', rowSpan: '|1', field: 'fxgc', hAlign: 0, width: 180, formatter: '@'},
  64. {title: '本期计量数量|合同', colSpan: '3|1', rowSpan: '1|1', field: 'contract_qty', hAlign: 2, width: 60, type: 'Number'},
  65. {title: '|数量变更', colSpan: '|1', rowSpan: '|1', field: 'qc_qty', hAlign: 2, width: 80, type: 'Number'},
  66. {title: '|小计', colSpan: '|1', rowSpan: '|1', field: 'total_qty', hAlign: 2, width: 60, type: 'Number', getValue: 'getValue.qty'},
  67. {title: '本期价差', colSpan: '1', rowSpan: '2', field: 'jijia', hAlign: 2, width: 80, type: 'Number'},
  68. ],
  69. emptyRows: 0,
  70. headRows: 2,
  71. headRowHeight: [32, 32],
  72. defaultRowHeight: 30,
  73. headerFont: '10pt 微软雅黑',
  74. readOnly: true,
  75. font: '10pt 微软雅黑',
  76. };
  77. const leafXmjCol = {
  78. getValue: {
  79. qty: function (data) {
  80. return ZhCalc.add(data.contract_qty, data.qc_qty);
  81. }
  82. }
  83. };
  84. SpreadJsObj.initSpreadSettingEvents(leafXmjSpreadSetting, leafXmjCol);
  85. SpreadJsObj.initSheet(leafXmjSpread.getActiveSheet(), leafXmjSpreadSetting);
  86. // 加载清单数据
  87. SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), SpreadJsObj.DataType.Data, gclGatherData);
  88. loadLeafXmjData(0);
  89. SpreadJsObj.forbiddenSpreadContextMenu('#ledger-spread', ledgerSpread);
  90. // 调差清单工料table
  91. const materialSpread = SpreadJsObj.createNewSpread($('#material-spread')[0]);
  92. const materialSpreadSetting = {
  93. cols: [
  94. {title: '清单调差工料|编号', colSpan: '4|1', rowSpan: '1|1', field: 'code', hAlign: 0, width: 80, formatter: '@'},
  95. {title: '|名称', colSpan: '|1', rowSpan: '|1', field: 'name', hAlign: 0, width: 100, formatter: '@'},
  96. {title: '|单位', colSpan: '|1', rowSpan: '|1', field: 'unit', hAlign: 1, width: 60, formatter: '@'},
  97. {title: '|kg数量', colSpan: '1', rowSpan: '|1', field: 'num', hAlign: 2, width: 60, type: 'Number'},
  98. ],
  99. emptyRows: 0,
  100. headRows: 2,
  101. headRowHeight: [32, 32],
  102. defaultRowHeight: 30,
  103. headerFont: '10pt 微软雅黑',
  104. readOnly: true,
  105. font: '10pt 微软雅黑',
  106. };
  107. SpreadJsObj.initSheet(materialSpread.getActiveSheet(), materialSpreadSetting);
  108. if (!readOnly) {
  109. } else {
  110. SpreadJsObj.forbiddenSpreadContextMenu('#leaf-xmj-spread', leafXmjSpread);
  111. SpreadJsObj.forbiddenSpreadContextMenu('#material-spread', materialSpread);
  112. }
  113. // 切换清单行,读取所属项目节数据
  114. ledgerSpread.getActiveSheet().bind(spreadNS.Events.SelectionChanged, function (e, info) {
  115. const iOldRow = info.oldSelections[0].row, iNewRow = info.newSelections[0].row;
  116. if (iNewRow !== iOldRow) {
  117. loadLeafXmjData(iNewRow);
  118. }
  119. });
  120. $.subMenu({
  121. menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
  122. toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
  123. //key: 'stage.compare.memu.1.0.0',
  124. callback: function (info) {
  125. if (info.mini) {
  126. $('.panel-title').addClass('fluid');
  127. $('#sub-menu').removeClass('panel-sidebar');
  128. } else {
  129. $('.panel-title').removeClass('fluid');
  130. $('#sub-menu').addClass('panel-sidebar');
  131. }
  132. autoFlashHeight();
  133. ledgerSpread.refresh();
  134. leafXmjSpread.refresh();
  135. materialSpread.refresh();
  136. }
  137. });
  138. });