123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- 'use strict';
- /**
- *
- *
- * @author Mai
- * @date
- * @version
- */
- $(document).ready(() => {
- let xmjSearch;
- autoFlashHeight();
- const xmjSpread = SpreadJsObj.createNewSpread($('#xmj-spread')[0]);
- const xmjSheet = xmjSpread.getActiveSheet();
- sjsSettingObj.setFxTreeStyle(xmjSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
- if (thousandth) sjsSettingObj.setTpThousandthFormat(xmjSpreadSetting);
- SpreadJsObj.initSheet(xmjSheet, xmjSpreadSetting);
- const unitSpread = SpreadJsObj.createNewSpread($('#unit-spread')[0]);
- const unitSheet = unitSpread.getActiveSheet();
- if (thousandth) sjsSettingObj.setTpThousandthFormat(xmjSpreadSetting);
- SpreadJsObj.initSheet(unitSheet, unitSpreadSetting);
- const unitTreeObj = {
- loadCurUnitData: function () {
- const node = SpreadJsObj.getSelectObject(xmjSheet);
- SpreadJsObj.resetTopAndSelect(unitSheet);
- if (node && node.unitTree) {
- SpreadJsObj.loadSheetData(unitSheet, SpreadJsObj.DataType.Tree, node.unitTree);
- } else {
- SpreadJsObj.initSheet(unitSheet, unitSpreadSetting);
- }
- SpreadJsObj.resetTopAndSelect(unitSheet);
- }
- };
- xmjSpread.bind(spreadNS.Events.SelectionChanged, function (e, info) {
- unitTreeObj.loadCurUnitData();
- });
- postData(window.location.pathname + '/load', {}, function (result) {
- const setting = {
- id: 'ledger_id',
- pid: 'ledger_pid',
- order: 'order',
- level: 'level',
- rootId: -1,
- fullPath: 'full_path',
- };
- const xmjTree = createNewPathTree('base', setting);
- xmjTree.loadDatas(result);
- for (const n of xmjTree.nodes) {
- if (n.unitTreeData) {
- n.unitTree = createNewPathTree('base', setting);
- n.unitTree.loadDatas(n.unitTreeData);
- }
- }
- console.log(xmjTree);
- SpreadJsObj.loadSheetData(xmjSheet, SpreadJsObj.DataType.Tree, xmjTree);
- unitTreeObj.loadCurUnitData();
- });
- $.subMenu({
- menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
- toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
- key: 'menu.1.0.0',
- miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1',
- callback: function (info) {
- if (info.mini) {
- $('.panel-title').addClass('fluid');
- $('#sub-menu').removeClass('panel-sidebar');
- } else {
- $('.panel-title').removeClass('fluid');
- $('#sub-menu').addClass('panel-sidebar');
- }
- autoFlashHeight();
- xmjSpread.refresh();
- unitSpread.refresh();
- }
- });
- // 加载上下窗口resizer
- $.divResizer({
- select: '#main-resize',
- callback: function () {
- xmjSpread.refresh();
- let bcontent = $(".bcontent-wrap") ? $(".bcontent-wrap").height() : 0;
- $(".sp-wrap").height(bcontent-30);
- unitSpread.refresh();
- }
- });
- $.divResizer({
- select: '#right-spr',
- callback: function () {
- xmjSpread.refresh();
- unitSpread.refresh();
- if (xmjSearch) {
- xmjSearch.spread.refresh();
- }
- }
- });
- $('a', '.side-menu').bind('click', function (e) {
- e.preventDefault();
- const tab = $(this), tabPanel = $(tab.attr('content'));
- const showSideTools = function (show) {
- const left = $('#left-view'), right = $('#right-view'), parent = left.parent();
- if (show) {
- right.show();
- autoFlashHeight();
- /**
- * right.show()后, parent被撑开成2倍left.height, 导致parent.width减少了10px
- * 第一次left.width调整后,parent的缩回left.height, 此时parent.width又增加了10px
- * 故需要通过最终的parent.width再计算一次left.width
- *
- * Q: 为什么不通过先计算left.width的宽度,以避免计算两次left.width?
- * A: 右侧工具栏不一定显示,当右侧工具栏显示过一次后,就必须使用parent和right来计算left.width
- *
- */
- //left.css('width', parent.width() - right.outerWidth());
- //left.css('width', parent.width() - right.outerWidth());
- const percent = 100 - right.outerWidth() /parent.width() * 100;
- left.css('width', percent + '%');
- } else {
- left.width(parent.width());
- right.hide();
- }
- };
- // 展开工具栏、切换标签
- if (!tab.hasClass('active')) {
- const close = $('.active', '#side-menu').length === 0;
- $('a', '#side-menu').removeClass('active');
- tab.addClass('active');
- $('.tab-content .tab-pane').removeClass('active');
- tabPanel.addClass('active');
- showSideTools(tab.hasClass('active'));
- if (tab.attr('content') === '#search' && !xmjSearch) {
- if (!xmjSearch) {
- xmjSearch = $.billsSearch({
- selector: '#search',
- searchSpread: xmjSpread,
- searchRangeStr: '项目节编号/名称',
- resultSpreadSetting: {
- cols: [
- {title: '项目节编号', field: 'code', hAlign: 0, width: 120, formatter: '@', readOnly: true},
- {title: '名称', field: 'name', width: 150, hAlign: 0, formatter: '@', readOnly: true},
- {title: '单位', field: 'unit', width: 50, hAlign: 1, formatter: '@', readOnly: true},
- {title: '台账金额', field: 'total_price', hAlign: 2, width: 80, readOnly: true},
- ],
- emptyRows: 0,
- headRows: 1,
- headRowHeight: [32],
- headColWidth: [30],
- defaultRowHeight: 21,
- headerFont: '12px 微软雅黑',
- font: '12px 微软雅黑',
- selectedBackColor: '#fffacd',
- },
- afterLocated: function () {
- unitTreeObj.loadCurUnitData();
- }
- });
- }
- xmjSearch.spread.refresh();
- }
- } else { // 收起工具栏
- tab.removeClass('active');
- tabPanel.removeClass('active');
- showSideTools(tab.hasClass('active'));
- }
- xmjSpread.refresh();
- unitSpread.refresh();
- });
- // 显示层次
- (function (select, sheet) {
- $(select).click(function () {
- const tag = $(this).attr('tag');
- const tree = sheet.zh_tree;
- if (!tree) return;
- switch (tag) {
- case "1":
- case "2":
- case "3":
- case "4":
- case "5":
- tree.expandByLevel(parseInt(tag));
- SpreadJsObj.refreshTreeRowVisible(sheet);
- break;
- case "last":
- tree.expandByCustom(() => { return true; });
- SpreadJsObj.refreshTreeRowVisible(sheet);
- break;
- }
- });
- })('a[name=showLevel]', xmjSheet);
- $('#exportBwtz').click(function () {
- const data = [];
- const setting = {
- cols: [
- {title: '项目节编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 100, formatter: '@'},
- {title: '清单编号', colSpan: '1', rowSpan: '2', field: 'b_code', hAlign: 0, width: 70, formatter: '@'},
- {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 300, formatter: '@'},
- {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 60, formatter: '@'},
- {title: '单价', colSpan: '1', rowSpan: '2', field: 'unit_price', hAlign: 2, width: 80, type: 'Number'},
- {title: '台账|数量', colSpan: '2|1', rowSpan: '1|1', field: 'quantity', hAlign: 2, width: 80, type: 'Number'},
- {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'total_price', hAlign: 2, width: 80, type: 'Number'},
- {title: '图(册)号', colSpan: '1', rowSpan: '2', field: 'drawing_code', hAlign: 0, width: 100, formatter: '@'},
- {title: '备注', colSpan: '1', rowSpan: '2', field: 'memo', hAlign: 0, width: 100, formatter: '@'},
- ],
- headRows: 2,
- headRowHeight: [25, 25],
- defaultRowHeight: 21,
- headerFont: 'bold 10px 微软雅黑',
- font: '10px 微软雅黑'
- };
- if (!xmjSheet.zh_tree) return;
- for (const node of xmjSheet.zh_tree.nodes) {
- data.push({
- code: node.code, b_code: node.b_code, name: node.name, unit: node.unit,
- unit_price: node.unit_price, quantity: node.quantity, total_price: node.total_price,
- drawing_code: node.drawing_code, memo: node.memo
- });
- if (node.unitTree) {
- for (const unitNode of node.unitTree.nodes) {
- data.push({
- code: unitNode.code, b_code: unitNode.b_code,
- name: unitNode.pos_name ? unitNode.pos_name : unitNode.name, unit: unitNode.unit,
- unit_price: unitNode.unit_price, quantity: unitNode.quantity, total_price: unitNode.total_price,
- drawing_code: unitNode.drawing_code_merge, memo: unitNode.memo_merge
- });
- }
- }
- }
- SpreadExcelObj.exportSimpleXlsxSheet(setting, data, $('.sidebar-title').attr('data-original-title') + "-部位台账.xlsx");
- });
- });
|