schedule_plan.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. /**
  2. * 进度台账相关js
  3. *
  4. * @author Ellisran
  5. * @date 2020/11/6
  6. * @version
  7. */
  8. function getTenderId() {
  9. return window.location.pathname.split('/')[2];
  10. }
  11. $(function () {
  12. autoFlashHeight();
  13. if(schedule && !schedule.mode) {
  14. $('#mode').modal('show');
  15. }
  16. // 初始化台账
  17. const ledgerSpread = SpreadJsObj.createNewSpread($('#ledger-spread')[0]);
  18. const treeSetting = {
  19. id: 'ledger_id',
  20. pid: 'ledger_pid',
  21. order: 'order',
  22. level: 'level',
  23. rootId: -1,
  24. fullPath: 'full_path',
  25. calcFields: ['total_price']
  26. //treeCacheKey: 'ledger_bills_fold' + '_' + getTenderId(),
  27. // markFoldKey: 'bills-fold',
  28. // markFoldSubKey: window.location.pathname.split('/')[2],
  29. };
  30. treeSetting.calcFun = function (node) {
  31. node.dgn_price = ZhCalc.round(ZhCalc.div(node.total_price, node.dgn_qty1), 2);
  32. };
  33. const ledgerTree = createNewPathTree('base', treeSetting);
  34. const ledgerSpreadSetting = {
  35. cols: [
  36. {title: '编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 145, formatter: '@', readOnly: true, cellType: 'tree'},
  37. {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 185, formatter: '@', readOnly: true},
  38. {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 50, formatter: '@', readOnly: true},
  39. {title: '经济指标', colSpan: '1', rowSpan: '2', field: 'dgn_price', hAlign: 2, width: 60, type: 'Number', readOnly: true},
  40. {title: '总设计|工程量', colSpan: '2|1', rowSpan: '1|1', field: 'dgn_qty1', hAlign: 2, width: 70, type: 'Number', readOnly: true},
  41. {title: '|金额(万元)', colSpan: '|1', rowSpan: '|1', field: 'total_price', hAlign: 2, width: 70, type: 'Number', readOnly: true},
  42. ],
  43. emptyRows: 0,
  44. headRows: 2,
  45. headRowHeight: [25, 25],
  46. defaultRowHeight: 21,
  47. headerFont: '12px 微软雅黑',
  48. font: '12px 微软雅黑',
  49. // readOnly: true,
  50. localCache: {
  51. key: 'ledger-bills',
  52. colWidth: true,
  53. }
  54. };
  55. sjsSettingObj.setFxTreeStyle(ledgerSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
  56. if (thousandth) sjsSettingObj.setTpThousandthFormat(ledgerSpreadSetting);
  57. SpreadJsObj.initSheet(ledgerSpread.getActiveSheet(), ledgerSpreadSetting);
  58. SpreadJsObj.selChangedRefreshBackColor(ledgerSpread.getActiveSheet());
  59. postData('/tender/' + getTenderId() + '/schedule/ledger/load', {}, function (data) {
  60. console.log(data, selectedLedgerList);
  61. const treeData = [];
  62. for(const sl of selectedLedgerList) {
  63. const one = _.find(data, { 'ledger_id' : sl });
  64. treeData.push(one);
  65. }
  66. ledgerTree.loadDatas(treeData);
  67. treeCalc.calculateAll(ledgerTree);
  68. // console.log(ledgerTree);
  69. SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), SpreadJsObj.DataType.Tree, ledgerTree);
  70. }, null, true);
  71. const ledgerSpreadObj = {
  72. refreshTree: function (sheet, data) {
  73. SpreadJsObj.massOperationSheet(sheet, function () {
  74. const tree = sheet.zh_tree;
  75. // 处理删除
  76. if (data.delete) {
  77. data.delete.sort(function (x, y) {
  78. return y.deleteIndex - x.deleteIndex;
  79. });
  80. for (const d of data.delete) {
  81. sheet.deleteRows(d.deleteIndex, 1);
  82. }
  83. }
  84. // 处理新增
  85. if (data.create) {
  86. const newNodes = data.create;
  87. if (newNodes) {
  88. newNodes.sort(function (a, b) {
  89. return a.index - b.index;
  90. });
  91. for (const node of newNodes) {
  92. sheet.addRows(node.index, 1);
  93. SpreadJsObj.reLoadRowData(sheet, tree.nodes.indexOf(node), 1);
  94. }
  95. }
  96. }
  97. // 处理更新
  98. if (data.update) {
  99. const rows = [];
  100. for (const u of data.update) {
  101. rows.push(tree.nodes.indexOf(u));
  102. }
  103. SpreadJsObj.reLoadRowsData(sheet, rows);
  104. }
  105. // 处理展开
  106. if (data.expand) {
  107. const expanded = [];
  108. for (const e of data.expand) {
  109. if (expanded.indexOf(e) === -1) {
  110. const posterity = tree.getPosterity(e);
  111. for (const p of posterity) {
  112. sheet.setRowVisible(tree.nodes.indexOf(p), p.visible);
  113. expanded.push(p);
  114. }
  115. }
  116. }
  117. }
  118. });
  119. },
  120. };
  121. // 进度计算方式选择
  122. $('.mode-select').on('click', function () {
  123. const _self = $(this);
  124. postData(window.location.pathname + '/save', {type: 'mode', postData: $(this).data('mode')}, function (result) {
  125. _self.addClass('disabled').attr('disabled', true);
  126. _self.parents('.col-6').siblings('.col-6').find('button').removeClass('disabled').removeAttr('disabled');
  127. $('#mode-tips').show();
  128. $('#mode-cancel').show();
  129. $('#mode').modal('hide');
  130. })
  131. });
  132. $.subMenu({
  133. menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
  134. toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
  135. key: 'menu.1.0.0',
  136. miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1',
  137. callback: function (info) {
  138. if (info.mini) {
  139. $('.panel-title').addClass('fluid');
  140. $('#sub-menu').removeClass('panel-sidebar');
  141. } else {
  142. $('.panel-title').removeClass('fluid');
  143. $('#sub-menu').addClass('panel-sidebar');
  144. }
  145. ledgerSpread.refresh();
  146. autoFlashHeight();
  147. }
  148. });
  149. });