|
@@ -15,28 +15,11 @@ $(document).ready(function() {
|
|
|
order: 'order',
|
|
|
level: 'level',
|
|
|
rootId: -1,
|
|
|
- keys: ['id', 'tender_id', 'ledger_id']
|
|
|
+ keys: ['id', 'tender_id', 'ledger_id'],
|
|
|
+ preUrl: '/ledger'
|
|
|
});
|
|
|
ledgerTree.loadDatas(ledger);
|
|
|
- SpreadJsObj.initSheet(ledgerSpread.getActiveSheet(), {
|
|
|
- cols: [
|
|
|
- {title: '项目节编号', field: 'code', width: 150, cellType: 'tree'},
|
|
|
- {title: '清单编号', field: 'b_code', width: 80},
|
|
|
- {title: '名称', field: 'name', width: 230},
|
|
|
- {title: '单位', field: 'unit', width: 50},
|
|
|
- {title: '单价', field: 'unit_price', width: 60, type: 'Number'},
|
|
|
- {title: '数量', field: 'quantity', width: 60, type: 'Number'},
|
|
|
- {title: '金额', field: 'total_price', width: 60, type: 'Number'},
|
|
|
- {title: '施工图原设计', field: 'design', width: 60},
|
|
|
- {title: '图(册)号', field: 'drawingCode', width: 80},
|
|
|
- {title: '备注', field: 'memo', width: 100}
|
|
|
- ],
|
|
|
- treeCol: 0,
|
|
|
- emptyRows: 3,
|
|
|
- headRows: 2,
|
|
|
- headRowHeight: [40, 40],
|
|
|
- defaultRowHeight: 21,
|
|
|
- });
|
|
|
+ SpreadJsObj.initSheet(ledgerSpread.getActiveSheet(), ledgerSpreadSetting);
|
|
|
SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), 'tree', ledgerTree);
|
|
|
|
|
|
const treeOperationObj = {
|
|
@@ -67,11 +50,11 @@ $(document).ready(function() {
|
|
|
if (!tree) { return; }
|
|
|
const node = sheet.zh_tree.nodes[row];
|
|
|
|
|
|
- setObjEnable($('#delete'), node);
|
|
|
- setObjEnable($('#up-move'), node && node.order > 1);
|
|
|
- setObjEnable($('#down-move'), node && !tree.isLastSibling(node));
|
|
|
- setObjEnable($('#up-level'), node && tree.getParent(node));
|
|
|
- setObjEnable($('#down-level'), node && node.order > 1);
|
|
|
+ setObjEnable($('#delete'), !sheet.zh_setting.readOnly && node);
|
|
|
+ setObjEnable($('#up-move'), !sheet.zh_setting.readOnly && node && node.order > 1);
|
|
|
+ setObjEnable($('#down-move'), !sheet.zh_setting.readOnly && node && !tree.isLastSibling(node));
|
|
|
+ setObjEnable($('#up-level'), !sheet.zh_setting.readOnly && node && tree.getParent(node));
|
|
|
+ setObjEnable($('#down-level'), !sheet.zh_setting.readOnly && node && node.order > 1);
|
|
|
},
|
|
|
refreshTree: function (sheet, data) {
|
|
|
SpreadJsObj.massOperationSheet(sheet, function () {
|
|
@@ -383,161 +366,164 @@ $(document).ready(function() {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- ledgerSpread.bind(GC.Spread.Sheets.Events.SelectionChanged, function (e, info) {
|
|
|
- treeOperationObj.refreshOperationValid(info.sheet, info.newSelections);
|
|
|
- });
|
|
|
- ledgerSpread.bind(GC.Spread.Sheets.Events.EditEnded, treeOperationObj.editEnded);
|
|
|
- ledgerSpread.bind(GC.Spread.Sheets.Events.ClipboardPasted, treeOperationObj.clipboardPasted);
|
|
|
- SpreadJsObj.addDeleteBind(ledgerSpread, treeOperationObj.deletePress);
|
|
|
- ledgerSpread.bind(GC.Spread.Sheets.Events.ClipboardChanging, function (e, info) {
|
|
|
- const copyText = SpreadJsObj.getFilterCopyText(info.sheet);
|
|
|
- });
|
|
|
- ledgerSpread.bind(GC.Spread.Sheets.Events.ClipboardChanged, function (e, info) {
|
|
|
- console.log(info.copyData.text);
|
|
|
- });
|
|
|
- ledgerSpread.bind(GC.Spread.Sheets.Events.ClipboardPasting, function (e, info) {
|
|
|
- });
|
|
|
-
|
|
|
- // 绑定 删除等 顶部按钮
|
|
|
- $('#delete').click(function () {
|
|
|
- treeOperationObj.deleteNode(ledgerSpread);
|
|
|
- });
|
|
|
- $('#up-move').click(function () {
|
|
|
- treeOperationObj.upMove(ledgerSpread);
|
|
|
- });
|
|
|
- $('#down-move').click(function () {
|
|
|
- treeOperationObj.downMove(ledgerSpread);
|
|
|
- });
|
|
|
- $('#up-level').click(function () {
|
|
|
- treeOperationObj.upLevel(ledgerSpread);
|
|
|
- });
|
|
|
- $('#down-level').click(function () {
|
|
|
- treeOperationObj.downLevel(ledgerSpread);
|
|
|
- });
|
|
|
- treeOperationObj.refreshOperationValid(ledgerSpread.getActiveSheet(), ledgerSpread.getActiveSheet().getSelections());
|
|
|
-
|
|
|
- let batchInsertObj;
|
|
|
- // 右键菜单
|
|
|
- $.contextMenu({
|
|
|
- selector: '#ledger-spread',
|
|
|
- build: function ($trigger, e) {
|
|
|
- const target = SpreadJsObj.safeRightClickSelection($trigger, e, ledgerSpread);
|
|
|
- return target.hitTestType === GC.Spread.Sheets.SheetArea.viewport || target.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader;
|
|
|
- },
|
|
|
- items: {
|
|
|
- 'create': {
|
|
|
- name: '新增',
|
|
|
- icon: 'fa-sign-in',
|
|
|
- callback: function (key, opt) {
|
|
|
- treeOperationObj.addNode(ledgerSpread);
|
|
|
- },
|
|
|
- visible: function(key, opt){
|
|
|
- const sheet = ledgerSpread.getActiveSheet();
|
|
|
- const selection = sheet.getSelections();
|
|
|
- const row = selection[0].row;
|
|
|
- const select = ledgerTree.nodes[row];
|
|
|
- return select;
|
|
|
- }
|
|
|
+ if (!ledgerSpreadSetting.readOnly) {
|
|
|
+ ledgerSpread.bind(GC.Spread.Sheets.Events.SelectionChanged, function (e, info) {
|
|
|
+ treeOperationObj.refreshOperationValid(info.sheet, info.newSelections);
|
|
|
+ });
|
|
|
+ ledgerSpread.bind(GC.Spread.Sheets.Events.EditEnded, treeOperationObj.editEnded);
|
|
|
+ ledgerSpread.bind(GC.Spread.Sheets.Events.ClipboardPasted, treeOperationObj.clipboardPasted);
|
|
|
+ SpreadJsObj.addDeleteBind(ledgerSpread, treeOperationObj.deletePress);
|
|
|
+ ledgerSpread.bind(GC.Spread.Sheets.Events.ClipboardChanging, function (e, info) {
|
|
|
+ const copyText = SpreadJsObj.getFilterCopyText(info.sheet);
|
|
|
+ });
|
|
|
+ ledgerSpread.bind(GC.Spread.Sheets.Events.ClipboardChanged, function (e, info) {
|
|
|
+ console.log(info.copyData.text);
|
|
|
+ });
|
|
|
+ ledgerSpread.bind(GC.Spread.Sheets.Events.ClipboardPasting, function (e, info) {
|
|
|
+ });
|
|
|
+
|
|
|
+ // 绑定 删除等 顶部按钮
|
|
|
+ $('#delete').click(function () {
|
|
|
+ treeOperationObj.deleteNode(ledgerSpread);
|
|
|
+ });
|
|
|
+ $('#up-move').click(function () {
|
|
|
+ treeOperationObj.upMove(ledgerSpread);
|
|
|
+ });
|
|
|
+ $('#down-move').click(function () {
|
|
|
+ treeOperationObj.downMove(ledgerSpread);
|
|
|
+ });
|
|
|
+ $('#up-level').click(function () {
|
|
|
+ treeOperationObj.upLevel(ledgerSpread);
|
|
|
+ });
|
|
|
+ $('#down-level').click(function () {
|
|
|
+ treeOperationObj.downLevel(ledgerSpread);
|
|
|
+ });
|
|
|
+
|
|
|
+ let batchInsertObj;
|
|
|
+ // 右键菜单
|
|
|
+ $.contextMenu({
|
|
|
+ selector: '#ledger-spread',
|
|
|
+ build: function ($trigger, e) {
|
|
|
+ const target = SpreadJsObj.safeRightClickSelection($trigger, e, ledgerSpread);
|
|
|
+ return target.hitTestType === GC.Spread.Sheets.SheetArea.viewport || target.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader;
|
|
|
},
|
|
|
- 'delete': {
|
|
|
- name: '删除',
|
|
|
- icon: 'fa-remove',
|
|
|
- callback: function (key, opt) {
|
|
|
- treeOperationObj.deleteNode(ledgerSpread);
|
|
|
- },
|
|
|
- visible: function (key, opt) {
|
|
|
- const sheet = ledgerSpread.getActiveSheet();
|
|
|
- const selection = sheet.getSelections();
|
|
|
- const row = selection[0].row;
|
|
|
- const select = ledgerTree.nodes[row];
|
|
|
- return select;
|
|
|
- }
|
|
|
- },
|
|
|
- 'copyBlock': {
|
|
|
- name: '复制整块',
|
|
|
- icon: 'fa-files-o',
|
|
|
- callback: function (key, opt) {
|
|
|
- /*ledgerSpread.commandManager().execute({
|
|
|
- cmd:"copy",
|
|
|
- sheetName:ledgerSpread.getActiveSheet().name()
|
|
|
- });*/
|
|
|
- treeOperationObj.block = [];
|
|
|
- const copyBlockList = [];
|
|
|
- const sheet = ledgerSpread.getActiveSheet();
|
|
|
- const sel = sheet.getSelections()[0];
|
|
|
- let iRow = sel.row;
|
|
|
- const pid = sheet.zh_tree.nodes[iRow].ledger_pid;
|
|
|
- while (iRow < sel.row + sel.rowCount) {
|
|
|
- const node = sheet.zh_tree.nodes[iRow];
|
|
|
- if (node.ledger_pid !== pid) {
|
|
|
- toast('error: 仅可同时选中同层节点', 'error', 'exclamation-circle');
|
|
|
- return;
|
|
|
- }
|
|
|
- copyBlockList.push(node.ledger_id);
|
|
|
- iRow += sheet.zh_tree.getPosterity(node).length + 1;
|
|
|
+ items: {
|
|
|
+ 'create': {
|
|
|
+ name: '新增',
|
|
|
+ icon: 'fa-sign-in',
|
|
|
+ callback: function (key, opt) {
|
|
|
+ treeOperationObj.addNode(ledgerSpread);
|
|
|
+ },
|
|
|
+ visible: function(key, opt){
|
|
|
+ const sheet = ledgerSpread.getActiveSheet();
|
|
|
+ const selection = sheet.getSelections();
|
|
|
+ const row = selection[0].row;
|
|
|
+ const select = ledgerTree.nodes[row];
|
|
|
+ return select;
|
|
|
}
|
|
|
- treeOperationObj.block = copyBlockList;
|
|
|
},
|
|
|
- visible: function (key, opt) {
|
|
|
- const sheet = ledgerSpread.getActiveSheet();
|
|
|
- const selection = sheet.getSelections();
|
|
|
- const row = selection[0].row;
|
|
|
- const select = ledgerTree.nodes[row];
|
|
|
- return select;
|
|
|
- }
|
|
|
- },
|
|
|
- 'pasteBlock': {
|
|
|
- name: '粘贴',
|
|
|
- icon: 'fa-clipboard',
|
|
|
- disabled: function (key, opt) {
|
|
|
- const block = treeOperationObj.block || [];
|
|
|
- return block.length <= 0 && false;
|
|
|
+ 'delete': {
|
|
|
+ name: '删除',
|
|
|
+ icon: 'fa-remove',
|
|
|
+ callback: function (key, opt) {
|
|
|
+ treeOperationObj.deleteNode(ledgerSpread);
|
|
|
+ },
|
|
|
+ visible: function (key, opt) {
|
|
|
+ const sheet = ledgerSpread.getActiveSheet();
|
|
|
+ const selection = sheet.getSelections();
|
|
|
+ const row = selection[0].row;
|
|
|
+ const select = ledgerTree.nodes[row];
|
|
|
+ return select;
|
|
|
+ }
|
|
|
},
|
|
|
- callback: function (key, opt) {
|
|
|
- const block = treeOperationObj.block || [];
|
|
|
- if (block.length > 0) {
|
|
|
- treeOperationObj.pasteBlock(ledgerSpread, block);
|
|
|
- } else {
|
|
|
- document.execCommand('paste');
|
|
|
+ 'copyBlock': {
|
|
|
+ name: '复制整块',
|
|
|
+ icon: 'fa-files-o',
|
|
|
+ callback: function (key, opt) {
|
|
|
+ /*ledgerSpread.commandManager().execute({
|
|
|
+ cmd:"copy",
|
|
|
+ sheetName:ledgerSpread.getActiveSheet().name()
|
|
|
+ });*/
|
|
|
+ treeOperationObj.block = [];
|
|
|
+ const copyBlockList = [];
|
|
|
+ const sheet = ledgerSpread.getActiveSheet();
|
|
|
+ const sel = sheet.getSelections()[0];
|
|
|
+ let iRow = sel.row;
|
|
|
+ const pid = sheet.zh_tree.nodes[iRow].ledger_pid;
|
|
|
+ while (iRow < sel.row + sel.rowCount) {
|
|
|
+ const node = sheet.zh_tree.nodes[iRow];
|
|
|
+ if (node.ledger_pid !== pid) {
|
|
|
+ toast('error: 仅可同时选中同层节点', 'error', 'exclamation-circle');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ copyBlockList.push(node.ledger_id);
|
|
|
+ iRow += sheet.zh_tree.getPosterity(node).length + 1;
|
|
|
+ }
|
|
|
+ treeOperationObj.block = copyBlockList;
|
|
|
+ },
|
|
|
+ visible: function (key, opt) {
|
|
|
+ const sheet = ledgerSpread.getActiveSheet();
|
|
|
+ const selection = sheet.getSelections();
|
|
|
+ const row = selection[0].row;
|
|
|
+ const select = ledgerTree.nodes[row];
|
|
|
+ return select;
|
|
|
}
|
|
|
- }
|
|
|
- },
|
|
|
- 'batchInsertChild': {
|
|
|
- name: '批量插入子项',
|
|
|
- icon: 'fa-sign-in',
|
|
|
- disabled: function (key, opt) {
|
|
|
- return false;
|
|
|
},
|
|
|
- callback: function(key, opt) {
|
|
|
- $('h5', $('#batch')).text('批量插入子项');
|
|
|
- if (!batchInsertObj) {
|
|
|
- batchInsertObj = new BatchInsertObj($('#batch'), key);
|
|
|
- } else {
|
|
|
- batchInsertObj.batchType = key;
|
|
|
- batchInsertObj.initView();
|
|
|
+ 'pasteBlock': {
|
|
|
+ name: '粘贴',
|
|
|
+ icon: 'fa-clipboard',
|
|
|
+ disabled: function (key, opt) {
|
|
|
+ const block = treeOperationObj.block || [];
|
|
|
+ return block.length <= 0 && false;
|
|
|
+ },
|
|
|
+ callback: function (key, opt) {
|
|
|
+ const block = treeOperationObj.block || [];
|
|
|
+ if (block.length > 0) {
|
|
|
+ treeOperationObj.pasteBlock(ledgerSpread, block);
|
|
|
+ } else {
|
|
|
+ document.execCommand('paste');
|
|
|
+ }
|
|
|
}
|
|
|
- $('#batch').modal('show');
|
|
|
},
|
|
|
- },
|
|
|
- 'batchInsertNext': {
|
|
|
- name: '批量插入后项',
|
|
|
- icon: 'fa-sign-in',
|
|
|
- disabled: function (key, opt) {
|
|
|
- return false;
|
|
|
+ 'batchInsertChild': {
|
|
|
+ name: '批量插入子项',
|
|
|
+ icon: 'fa-sign-in',
|
|
|
+ disabled: function (key, opt) {
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ callback: function(key, opt) {
|
|
|
+ $('h5', $('#batch')).text('批量插入子项');
|
|
|
+ if (!batchInsertObj) {
|
|
|
+ batchInsertObj = new BatchInsertObj($('#batch'), key);
|
|
|
+ } else {
|
|
|
+ batchInsertObj.batchType = key;
|
|
|
+ batchInsertObj.initView();
|
|
|
+ }
|
|
|
+ $('#batch').modal('show');
|
|
|
+ },
|
|
|
},
|
|
|
- callback: function (key, opt) {
|
|
|
- $('h5', $('#batch')).text('批量插入后项');
|
|
|
- if (!batchInsertObj) {
|
|
|
- batchInsertObj = new BatchInsertObj($('#batch'), key);
|
|
|
- } else {
|
|
|
- batchInsertObj.batchType = key;
|
|
|
- batchInsertObj.initView();
|
|
|
- }
|
|
|
- $('#batch').modal('show');
|
|
|
+ 'batchInsertNext': {
|
|
|
+ name: '批量插入后项',
|
|
|
+ icon: 'fa-sign-in',
|
|
|
+ disabled: function (key, opt) {
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ callback: function (key, opt) {
|
|
|
+ $('h5', $('#batch')).text('批量插入后项');
|
|
|
+ if (!batchInsertObj) {
|
|
|
+ batchInsertObj = new BatchInsertObj($('#batch'), key);
|
|
|
+ } else {
|
|
|
+ batchInsertObj.batchType = key;
|
|
|
+ batchInsertObj.initView();
|
|
|
+ }
|
|
|
+ $('#batch').modal('show');
|
|
|
+ },
|
|
|
},
|
|
|
- },
|
|
|
- }
|
|
|
- });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ treeOperationObj.refreshOperationValid(ledgerSpread.getActiveSheet(), ledgerSpread.getActiveSheet().getSelections());
|
|
|
|
|
|
let stdChapter, stdBills, dealBills;
|
|
|
// 展开收起标准清单
|
|
@@ -811,5 +797,52 @@ $(document).ready(function() {
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ $('#searchAccount').click(() => {
|
|
|
+ const data = {
|
|
|
+ keyword: $('#searchName').val(),
|
|
|
+ }
|
|
|
+ postData('/search/user', data, (data) => {
|
|
|
+ const resultDiv = $('#searchResult');
|
|
|
+ $('h5>span', resultDiv).text(data.name);
|
|
|
+ $('#addAuditor').attr('auditorId', data.id);
|
|
|
+ $('h6', resultDiv).text(data.role);
|
|
|
+ $('p', resultDiv).text(data.company);
|
|
|
+ resultDiv.show();
|
|
|
+ }, () => {
|
|
|
+ $('#searchResult').hide();
|
|
|
+ });
|
|
|
+ });
|
|
|
+ $('#addAuditor').click(() => {
|
|
|
+ const data = {
|
|
|
+ auditorId: $('#addAuditor').attr('auditorId'),
|
|
|
+ };
|
|
|
+ console.log(data);
|
|
|
+ postData('/ledger/audit/add', data, (data) => {
|
|
|
+ const html = [];
|
|
|
+ html.push('<li class="list-group-item" auditorId="'+ data.audit_id +'"><a href="javascript: void(0)" class="text-danger pull-right">移除</a>');
|
|
|
+ html.push('<span>');
|
|
|
+ html.push(data.audit_order + ' ');
|
|
|
+ html.push(data.name + ' ');
|
|
|
+ html.push('</span>');
|
|
|
+ html.push('<small class="text-muted">');
|
|
|
+ html.push(data.role);
|
|
|
+ html.push('</small></li>');
|
|
|
+ $('#auditors').append(html.join(''));
|
|
|
+ });
|
|
|
+ });
|
|
|
+ $('li>a', '#auditors').bind('click', function () {
|
|
|
+ const li = $(this).parent();
|
|
|
+ const data = {
|
|
|
+ auditorId: parseInt(li.attr('auditorId')),
|
|
|
+ }
|
|
|
+ postData('/ledger/audit/delete', data, (data) => {
|
|
|
+ li.remove();
|
|
|
+ for (const a of data) {
|
|
|
+ const aLi = $('li[auditorId=' + a.audit_id + ']');
|
|
|
+ $('span', aLi).text(a.audit_order + ' ' + a.name + ' ');
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
});
|
|
|
|