|
@@ -97,12 +97,18 @@ $(document).ready(function() {
|
|
|
const billsTag = $.billsTag({
|
|
|
selector: '#bills-tag',
|
|
|
relaSpread: ledgerSpread,
|
|
|
+ relaPosSpread: posSpread,
|
|
|
updateUrl: window.location.pathname + '/tag',
|
|
|
afterModify: function (nodes) {
|
|
|
SpreadJsObj.repaintNodesRowHeader(ledgerSpread.getActiveSheet(), nodes);
|
|
|
},
|
|
|
- afterLocated: function () {
|
|
|
+ afterLocated: function (lid, pos_id) {
|
|
|
posOperationObj.loadCurPosData();
|
|
|
+ if (pos_id) {
|
|
|
+ const posSheet = posSpread.getActiveSheet();
|
|
|
+ const relaPos = posSheet.zh_data.find(x => { return x.id === pos_id; });
|
|
|
+ SpreadJsObj.locateData(posSheet, relaPos);
|
|
|
+ }
|
|
|
},
|
|
|
afterShow: function () {
|
|
|
ledgerSpread.refresh();
|
|
@@ -1255,7 +1261,7 @@ $(document).ready(function() {
|
|
|
// const $obj = $('<div>' + item.name +)
|
|
|
// };
|
|
|
// 右键菜单
|
|
|
- const addTag = newTag({ledgerSheet: ledgerSpread.getActiveSheet(), billsTag});
|
|
|
+ const addTag = newTag({ledgerSheet: ledgerSpread.getActiveSheet(), posSheet: posSpread.getActiveSheet(), billsTag});
|
|
|
const billsContextMenuOptions = {
|
|
|
selector: '#ledger-spread',
|
|
|
build: function ($trigger, e) {
|
|
@@ -1743,6 +1749,36 @@ $(document).ready(function() {
|
|
|
});
|
|
|
sjsSettingObj.setGridSelectStyle(posSpreadSetting);
|
|
|
}
|
|
|
+ posSpreadSetting.headColWidth = [50];
|
|
|
+ posSpreadSetting.rowHeader = [
|
|
|
+ {
|
|
|
+ rowHeaderType: 'tag',
|
|
|
+ setting: {
|
|
|
+ indent: 14,
|
|
|
+ tagSize: 0.8,
|
|
|
+ tagFont: '8px 微软雅黑',
|
|
|
+ getColor: function (index, data) {
|
|
|
+ if (!data) return;
|
|
|
+ return billsTag.getPosTagsColor(data.lid, data.id);
|
|
|
+ },
|
|
|
+ getTagHtml: function (index, data) {
|
|
|
+ if (!data) return;
|
|
|
+ const getHtml = function (list) {
|
|
|
+ if (!list || list.length === 0) return '';
|
|
|
+ const html = [];
|
|
|
+ for (const l of list) {
|
|
|
+ html.push('<div class="row mr-1">');
|
|
|
+ html.push(`<div class="col-auto pr-1 ${l.tagClass}">`, '<i class="fa fa-tag"></i>', '</div>');
|
|
|
+ html.push('<div class="col p-0">', '<p>', l.comment, '</p>', '</div>');
|
|
|
+ html.push('</div>');
|
|
|
+ }
|
|
|
+ return html.join('');
|
|
|
+ };
|
|
|
+ return getHtml(billsTag.getPosTagsInfo(data.lid, data.id));
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ];
|
|
|
SpreadJsObj.initSheet(posSpread.getActiveSheet(), posSpreadSetting);
|
|
|
//绑定计量单元编辑事件
|
|
|
const posOperationObj = {
|
|
@@ -1877,13 +1913,18 @@ $(document).ready(function() {
|
|
|
if (data.updateData.length > 0) {
|
|
|
postData('/tender/' + getTenderId() + '/pos/update', data, function (result) {
|
|
|
if (type === 'delete') {
|
|
|
+ for (const p of result.pos) {
|
|
|
+ const posInfo = pos.getPos(p);
|
|
|
+ billsTag.afterDeletePos(posInfo);
|
|
|
+ }
|
|
|
pos.removeDatas(result.pos);
|
|
|
sheet.deleteRows(row, count);
|
|
|
const loadResult = ledgerTree.loadPostData(result.ledger);
|
|
|
treeOperationObj.refreshTree(ledgerSpread.getActiveSheet(), loadResult);
|
|
|
treeOperationObj.refreshOperationValid(ledgerSpread.getActiveSheet());
|
|
|
} else {
|
|
|
- pos.updateDatas(result.pos);
|
|
|
+ const updateRst = pos.updateDatas(result.pos);
|
|
|
+ billsTag.refreshPosTagView(updateRst.update);
|
|
|
|
|
|
const sel = selection[0];
|
|
|
if (sel) {
|
|
@@ -1976,6 +2017,7 @@ $(document).ready(function() {
|
|
|
|
|
|
postData('/tender/' + getTenderId() + '/pos/update', data, function (result) {
|
|
|
const updateRst = pos.updateDatas(result.pos);
|
|
|
+ billsTag.refreshPosTagView(updateRst.update);
|
|
|
// 刷新当前行, 不适用于新增(在非下一空白行新增)
|
|
|
if (updateRst.create.length > 0) {
|
|
|
// info.sheet.addRows(info.row, 1);
|
|
@@ -2036,7 +2078,8 @@ $(document).ready(function() {
|
|
|
}
|
|
|
if (datas.length > 0) {
|
|
|
postData('/tender/' + getTenderId() + '/pos/update', {updateType: 'update', updateData: datas}, function (result) {
|
|
|
- pos.updateDatas(result.pos);
|
|
|
+ const updateRst = pos.updateDatas(result.pos);
|
|
|
+ billsTag.refreshPosTagView(updateRst.update);
|
|
|
posOperationObj.loadCurPosData();
|
|
|
const loadResult = ledgerTree.loadPostData(result.ledger);
|
|
|
treeOperationObj.refreshTree(ledgerSpread.getActiveSheet(), loadResult);
|
|
@@ -2066,6 +2109,10 @@ $(document).ready(function() {
|
|
|
}
|
|
|
if (data.updateData.length > 0) {
|
|
|
postData('/tender/' + getTenderId() + '/pos/update', data, function (result) {
|
|
|
+ for (const p of result.pos) {
|
|
|
+ const posInfo = pos.getPos(p);
|
|
|
+ billsTag.afterDeletePos(posInfo);
|
|
|
+ }
|
|
|
pos.removeDatas(result.pos);
|
|
|
sheet.deleteRows(row, count);
|
|
|
const loadResult = ledgerTree.loadPostData(result.ledger);
|
|
@@ -2175,7 +2222,8 @@ $(document).ready(function() {
|
|
|
}
|
|
|
if (data.length > 0) {
|
|
|
postData('/tender/' + getTenderId() + '/pos/paste', data, function (result) {
|
|
|
- pos.updateDatas(result.pos);
|
|
|
+ const updateRst = pos.updateDatas(result.pos);
|
|
|
+ billsTag.refreshPosTagView(updateRst.update);
|
|
|
posOperationObj.loadCurPosData();
|
|
|
const loadResult = ledgerTree.loadPostData(result.ledger);
|
|
|
treeOperationObj.refreshTree(ledgerSpread.getActiveSheet(), loadResult);
|
|
@@ -2266,69 +2314,95 @@ $(document).ready(function() {
|
|
|
posSpread.bind(spreadNS.Events.EditStarting, posOperationObj.editStarting);
|
|
|
posSpread.bind(spreadNS.Events.EditEnded, posOperationObj.editEnded);
|
|
|
posSpread.bind(spreadNS.Events.ClipboardPasted, posOperationObj.clipboardPasted);
|
|
|
- const mergePeg = NewMergePeg({ callback: posOperationObj.addPegs });
|
|
|
- // 右键菜单
|
|
|
- $.contextMenu({
|
|
|
- selector: '#pos-spread',
|
|
|
- build: function ($trigger, e) {
|
|
|
- const target = SpreadJsObj.safeRightClickSelection($trigger, e, posSpread);
|
|
|
- return target.hitTestType === GC.Spread.Sheets.SheetArea.viewport || target.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader;
|
|
|
+ }
|
|
|
+ const mergePeg = NewMergePeg({ callback: posOperationObj.addPegs });
|
|
|
+ // 右键菜单
|
|
|
+ $.contextMenu({
|
|
|
+ selector: '#pos-spread',
|
|
|
+ build: function ($trigger, e) {
|
|
|
+ const target = SpreadJsObj.safeRightClickSelection($trigger, e, posSpread);
|
|
|
+ return target.hitTestType === GC.Spread.Sheets.SheetArea.viewport || target.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader;
|
|
|
+ },
|
|
|
+ items: {
|
|
|
+ 'insert': {
|
|
|
+ name: '插入',
|
|
|
+ icon: 'fa-plus',
|
|
|
+ disabled: function (key, opt) {
|
|
|
+ const node = SpreadJsObj.getSelectObject(ledgerSpread.getActiveSheet());
|
|
|
+ return node && node.children && node.children.length > 0;
|
|
|
+ },
|
|
|
+ callback: function (key, opt) {
|
|
|
+ posOperationObj.insertPos(posSpread.getActiveSheet());
|
|
|
+ },
|
|
|
+ visible: function(key, opt) {
|
|
|
+ return !readOnly;
|
|
|
+ }
|
|
|
},
|
|
|
- items: {
|
|
|
- 'insert': {
|
|
|
- name: '插入',
|
|
|
- icon: 'fa-plus',
|
|
|
- disabled: function (key, opt) {
|
|
|
- const node = SpreadJsObj.getSelectObject(ledgerSpread.getActiveSheet());
|
|
|
- return node && node.children && node.children.length > 0;
|
|
|
- },
|
|
|
- callback: function (key, opt) {
|
|
|
- posOperationObj.insertPos(posSpread.getActiveSheet());
|
|
|
+ 'delete': {
|
|
|
+ name: '删除',
|
|
|
+ icon: 'fa-remove',
|
|
|
+ disabled: function (key, opt) {
|
|
|
+ const sheet = posSpread.getActiveSheet();
|
|
|
+ if (sheet.zh_data) {
|
|
|
+ const selection = sheet.getSelections();
|
|
|
+ return sheet.zh_data.length < selection[0].row + selection[0].rowCount;
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
}
|
|
|
},
|
|
|
- 'delete': {
|
|
|
- name: '删除',
|
|
|
- icon: 'fa-remove',
|
|
|
- disabled: function (key, opt) {
|
|
|
- const sheet = posSpread.getActiveSheet();
|
|
|
- if (sheet.zh_data) {
|
|
|
- const selection = sheet.getSelections();
|
|
|
- return sheet.zh_data.length < selection[0].row + selection[0].rowCount;
|
|
|
- } else {
|
|
|
- return true;
|
|
|
- }
|
|
|
- },
|
|
|
- callback: function (key, opt) {
|
|
|
- posOperationObj.deletePos(posSpread.getActiveSheet());
|
|
|
- }
|
|
|
+ callback: function (key, opt) {
|
|
|
+ posOperationObj.deletePos(posSpread.getActiveSheet());
|
|
|
},
|
|
|
- 'merge-peg': {
|
|
|
- name: '合并起讫桩号',
|
|
|
- disabled: function (key, opt) {
|
|
|
- const node = SpreadJsObj.getSelectObject(ledgerSpread.getActiveSheet());
|
|
|
- return _.isNil(node) || _.isNil(node.b_code) || node.b_code === '';
|
|
|
- },
|
|
|
- callback: function (key, opt) {
|
|
|
- mergePeg.show();
|
|
|
- }
|
|
|
+ visible: function(key, opt) {
|
|
|
+ return !readOnly;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ 'merge-peg': {
|
|
|
+ name: '合并起讫桩号',
|
|
|
+ disabled: function (key, opt) {
|
|
|
+ const node = SpreadJsObj.getSelectObject(ledgerSpread.getActiveSheet());
|
|
|
+ return _.isNil(node) || _.isNil(node.b_code) || node.b_code === '';
|
|
|
+ },
|
|
|
+ callback: function (key, opt) {
|
|
|
+ mergePeg.show();
|
|
|
+ },
|
|
|
+ visible: function(key, opt) {
|
|
|
+ return !readOnly;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ tag: {
|
|
|
+ name: '书签',
|
|
|
+ disabled: function(key, opt) {
|
|
|
+ const node = SpreadJsObj.getSelectObject(ledgerSpread.getActiveSheet());
|
|
|
+ const pos = SpreadJsObj.getSelectObject(posSpread.getActiveSheet());
|
|
|
+ return _.isNil(node) || _.isNil(pos);
|
|
|
+ },
|
|
|
+ callback: function(key, opt) {
|
|
|
+ const node = SpreadJsObj.getSelectObject(ledgerSpread.getActiveSheet());
|
|
|
+ const pos = SpreadJsObj.getSelectObject(posSpread.getActiveSheet());
|
|
|
+ addTag.do(node, pos);
|
|
|
}
|
|
|
}
|
|
|
- });
|
|
|
- }
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
postData(window.location.pathname + '/load', {}, function (data) {
|
|
|
ledgerTree.loadDatas(data.bills);
|
|
|
treeCalc.calculateAll(ledgerTree);
|
|
|
+ checkShowLast(data.bills.length);
|
|
|
+ pos.loadDatas(data.pos);
|
|
|
+
|
|
|
for (const t of data.tags) {
|
|
|
- t.node = ledgerTree.datas.find(x => {return x.id === t.lid});
|
|
|
+ t.node = ledgerTree.datas.find(x => { return x.id === t.lid; });
|
|
|
+ if (t.pos_id) {
|
|
|
+ const posRange = pos.getLedgerPos(t.lid) || [];
|
|
|
+ t.pos = posRange.find(x => { return x.id === t.pos_id; });
|
|
|
+ }
|
|
|
}
|
|
|
billsTag.loadDatas(data.tags);
|
|
|
SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), 'tree', ledgerTree);
|
|
|
SpreadJsObj.loadTopAndSelect(ledgerSpread.getActiveSheet(), ckBillsSpread);
|
|
|
|
|
|
- checkShowLast(data.bills.length);
|
|
|
-
|
|
|
- pos.loadDatas(data.pos);
|
|
|
posOperationObj.loadCurPosData();
|
|
|
SpreadJsObj.resetTopAndSelect(posSpread.getActiveSheet());
|
|
|
|