|
@@ -49,6 +49,55 @@ const posSpreadSetting = {
|
|
|
readOnly: true,
|
|
|
selectedBackColor: '#fffacd',
|
|
|
};
|
|
|
+
|
|
|
+const gclSpreadSetting = {
|
|
|
+ baseCols: [
|
|
|
+ {title: '清单编号', colSpan: '1', rowSpan: '2', field: 'b_code', hAlign: 0, width: 80, formatter: '@'},
|
|
|
+ {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 230, formatter: '@'},
|
|
|
+ {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 60, formatter: '@', cellType: 'unit'},
|
|
|
+ {title: '单价', colSpan: '1', rowSpan: '2', field: 'unit_price', hAlign: 2, width: 60, type: 'Number'},
|
|
|
+ {title: '签约清单|数量', colSpan: '2|1', rowSpan: '1|1', field: 'deal_bills_qty', hAlign: 2, width: 60, type: 'Number'},
|
|
|
+ {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'deal_bills_tp', hAlign: 2, width: 60, type: 'Number'},
|
|
|
+ {title: '台账|数量', colSpan: '2|1', rowSpan: '1|1', field: 'quantity', hAlign: 2, width: 60, type: 'Number'},
|
|
|
+ {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'total_price', hAlign: 2, width: 60, type: 'Number'},
|
|
|
+ ],
|
|
|
+ extraCols: [
|
|
|
+ {title: '%s|数量', colSpan: '2|1', rowSpan: '1|1', field: '{%s}_qty{%d}', hAlign: 2, width: 60, type: 'Number', },
|
|
|
+ {title: '|金额', colSpan: '|1', rowSpan: '|1', field: '{%s}_tp{%d}', hAlign: 2, width: 60, type: 'Number', },
|
|
|
+ ],
|
|
|
+ emptyRows: 0,
|
|
|
+ headRows: 2,
|
|
|
+ headRowHeight: [25, 25],
|
|
|
+ headColWidth: [30],
|
|
|
+ defaultRowHeight: 21,
|
|
|
+ headerFont: '12px 微软雅黑',
|
|
|
+ font: '12px 微软雅黑',
|
|
|
+ readOnly: true,
|
|
|
+};
|
|
|
+const leafXmjSpreadSetting = {
|
|
|
+ baseCols: [
|
|
|
+ {title: '项目节编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 100, formatter: '@'},
|
|
|
+ {title: '台账数量', colSpan: '1', rowSpan: '2', field: 'quantity', hAlign: 2, width: 60, type: 'Number'},
|
|
|
+ {title: '单位工程', colSpan: '1', rowSpan: '2', field: 'dwgc', hAlign: 0, width: 80, formatter: '@'},
|
|
|
+ {title: '分部工程', colSpan: '1', rowSpan: '2', field: 'fbgc', hAlign: 0, width: 80, formatter: '@'},
|
|
|
+ {title: '分项工程', colSpan: '1', rowSpan: '2', field: 'fxgc', hAlign: 0, width: 80, formatter: '@'},
|
|
|
+ {title: '细目', colSpan: '1', rowSpan: '2', field: 'jldy', hAlign: 0, width: 80, formatter: '@'},
|
|
|
+ {title: '计量单元', colSpan: '1', rowSpan: '2', field: 'bwmx', hAlign: 0, width: 80, formatter: '@'},
|
|
|
+ {title: '图册号', colSpan: '1', rowSpan: '2', field: 'drawing_code', hAlign: 0, width: 80, formatter: '@'},
|
|
|
+ ],
|
|
|
+ extraCols: [
|
|
|
+ {title: '%s数量', colSpan: '1', rowSpan: '2', field: '{%s}_qty{%d}', hAlign: 2, width: 60},
|
|
|
+ ],
|
|
|
+ emptyRows: 0,
|
|
|
+ headRows: 2,
|
|
|
+ headRowHeight: [25, 25],
|
|
|
+ headColWidth: [30],
|
|
|
+ defaultRowHeight: 21,
|
|
|
+ headerFont: '12px 微软雅黑',
|
|
|
+ font: '12px 微软雅黑',
|
|
|
+ readOnly: true,
|
|
|
+};
|
|
|
+
|
|
|
function initSpreadSettingWithRoles(compareRoles) {
|
|
|
function setSpreadSettingCols(setting, fieldSufs, Roles) {
|
|
|
function addExtraCols(fieldSuf, Role) {
|
|
@@ -80,6 +129,8 @@ function initSpreadSettingWithRoles(compareRoles) {
|
|
|
}
|
|
|
setSpreadSettingCols(billsSpreadSetting, fieldSufs, roles);
|
|
|
setSpreadSettingCols(posSpreadSetting, fieldSufs, roles);
|
|
|
+ setSpreadSettingCols(gclSpreadSetting, fieldSufs, roles);
|
|
|
+ setSpreadSettingCols(leafXmjSpreadSetting, fieldSufs, roles);
|
|
|
}
|
|
|
function calculateStageLedgerData(datas) {
|
|
|
for (const d of datas) {
|
|
@@ -106,6 +157,17 @@ $(document).ready(() => {
|
|
|
if (thousandth) sjsSettingObj.setTpThousandthFormat(posSpreadSetting);
|
|
|
SpreadJsObj.initSheet(posSheet, posSpreadSetting);
|
|
|
|
|
|
+ let gclGatherData;
|
|
|
+ const gclSpread = SpreadJsObj.createNewSpread($('#gcl-spread')[0]);
|
|
|
+ const gclSheet = gclSpread.getActiveSheet();
|
|
|
+ sjsSettingObj.setFxTreeStyle(gclSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
|
|
|
+ if (thousandth) sjsSettingObj.setTpThousandthFormat(gclSpreadSetting);
|
|
|
+ SpreadJsObj.initSheet(gclSheet, gclSpreadSetting);
|
|
|
+ const leafXmjSpread = SpreadJsObj.createNewSpread($('#leaf-xmj-spread')[0]);
|
|
|
+ const leafXmjSheet = leafXmjSpread.getActiveSheet();
|
|
|
+ if (thousandth) sjsSettingObj.setTpThousandthFormat(leafXmjSpreadSetting);
|
|
|
+ SpreadJsObj.initSheet(leafXmjSheet, leafXmjSpreadSetting);
|
|
|
+
|
|
|
$.subMenu({
|
|
|
menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
|
|
|
toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
|
|
@@ -129,11 +191,20 @@ $(document).ready(() => {
|
|
|
select: '#main-resize',
|
|
|
callback: function () {
|
|
|
billsSpread.refresh();
|
|
|
- let bcontent = $(".bcontent-wrap").length > 0 ? $(".bcontent-wrap").height() : 0;
|
|
|
- $(".sp-wrap").height(bcontent-30);
|
|
|
+ let bcontent = $("#xmujie").length > 0 ? $("#xmujie").height() : 0;
|
|
|
+ $("#pos-spread").height(bcontent-30);
|
|
|
posSpread.refresh();
|
|
|
}
|
|
|
});
|
|
|
+ $.divResizer({
|
|
|
+ select: '#gcl-resize',
|
|
|
+ callback: function () {
|
|
|
+ gclSpread.refresh();
|
|
|
+ let bcontent = $("#leafxmj-bottom").length > 0 ? $("#leafxmj-bottom").height() : 0;
|
|
|
+ $("#leaf-xmj-spread").height(bcontent-30);
|
|
|
+ leafXmjSpread.refresh();
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
const cTree = createNewPathTree('master', {
|
|
|
id: 'ledger_id',
|
|
@@ -160,6 +231,20 @@ $(document).ready(() => {
|
|
|
cPos.loadDatas(result.main.pos);
|
|
|
SpreadJsObj.loadSheetData(billsSheet, SpreadJsObj.DataType.Tree, cTree);
|
|
|
loadPosData(0);
|
|
|
+
|
|
|
+ const checkField = function (x) {
|
|
|
+ if (x === 'quantity') return true;
|
|
|
+ if (x === 'total_price') return true;
|
|
|
+ if (x.indexOf('_qty') >= 0) return true;
|
|
|
+ if (x.indexOf('_tp') >= 0) return true;
|
|
|
+ return false;
|
|
|
+ };
|
|
|
+ gclGatherModel.loadGatherField(checkField, checkField);
|
|
|
+ gclGatherModel.loadLedgerData(result.main.ledger);
|
|
|
+ gclGatherModel.loadPosData(result.main.pos);
|
|
|
+ gclGatherData = gclGatherModel.gatherGclData();
|
|
|
+ SpreadJsObj.loadSheetData(gclSheet, SpreadJsObj.DataType.Data, gclGatherData);
|
|
|
+ loadLeafXmjData(0);
|
|
|
}, null, true);
|
|
|
function loadPosData(iRow) {
|
|
|
const node = iRow ? billsSheet.zh_tree.nodes[iRow] : SpreadJsObj.getSelectObject(billsSheet);
|
|
@@ -167,6 +252,15 @@ $(document).ready(() => {
|
|
|
SpreadJsObj.loadSheetData(posSheet, SpreadJsObj.DataType.Data, posRange);
|
|
|
SpreadJsObj.resetTopAndSelect(posSheet);
|
|
|
}
|
|
|
+ function loadLeafXmjData(iRow) {
|
|
|
+ const gcl = iRow ? gclSheet.zh_data[iRow] : SpreadJsObj.getSelectObject(gclSheet);
|
|
|
+ if (gcl) {
|
|
|
+ SpreadJsObj.loadSheetData(leafXmjSheet, SpreadJsObj.DataType.Data, gcl.leafXmjs);
|
|
|
+ } else {
|
|
|
+ SpreadJsObj.loadSheetData(leafXmjSheet, SpreadJsObj.DataType.Data, []);
|
|
|
+ }
|
|
|
+ SpreadJsObj.resetTopAndSelect(leafXmjSheet);
|
|
|
+ }
|
|
|
billsSheet.bind(spreadNS.Events.SelectionChanged, function (e, info) {
|
|
|
if (info.newSelections) {
|
|
|
const iNewRow = info.newSelections[0].row;
|
|
@@ -197,6 +291,15 @@ $(document).ready(() => {
|
|
|
SpreadJsObj.loadSheetData(billsSheet, SpreadJsObj.DataType.Tree, cTree);
|
|
|
SpreadJsObj.initSheet(posSheet, posSpreadSetting);
|
|
|
loadPosData();
|
|
|
+
|
|
|
+ SpreadJsObj.reLoadSheetHeader(gclSheet);
|
|
|
+ SpreadJsObj.reLoadSheetHeader(leafXmjSheet);
|
|
|
+
|
|
|
+ gclGatherModel.loadLedgerData(cTree.datas);
|
|
|
+ gclGatherModel.loadPosData(cPos.datas);
|
|
|
+ gclGatherData = gclGatherModel.gatherGclData();
|
|
|
+ SpreadJsObj.loadSheetData(gclSheet, SpreadJsObj.DataType.Data, gclGatherData);
|
|
|
+ loadLeafXmjData(0);
|
|
|
}
|
|
|
let loadData = [], showData = [], trs = $('tr[stage-id]');
|
|
|
for (let order = 0, iLength = trs.length; order < iLength; order++) {
|
|
@@ -273,5 +376,10 @@ $(document).ready(() => {
|
|
|
SpreadJsObj.reloadColData(billsSheet, 7, compareStages.length * 2);
|
|
|
SpreadJsObj.reLoadSheetHeader(posSheet);
|
|
|
SpreadJsObj.reloadColData(posSheet, 2, compareStages.length);
|
|
|
+
|
|
|
+ SpreadJsObj.reLoadSheetHeader(gclSheet);
|
|
|
+ SpreadJsObj.reloadColData(billsSheet, 9, compareStages.length * 2);
|
|
|
+ SpreadJsObj.reLoadSheetHeader(leafXmjSheet);
|
|
|
+ SpreadJsObj.reloadColData(posSheet, 9, compareStages.length);
|
|
|
})
|
|
|
});
|