|
@@ -45,7 +45,7 @@ const billsGuidance = (function () {
|
|
|
return recurCompare(aArr, bArr, 0);
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
+ let curCompilationID = '';
|
|
|
const locked = lockUtil.getLocked();
|
|
|
let moduleName = 'stdBillsGuidance';
|
|
|
//上下拖动的拖动条高度
|
|
@@ -168,6 +168,25 @@ const billsGuidance = (function () {
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
+ width: 50,
|
|
|
+ readOnly: locked,
|
|
|
+ head: {
|
|
|
+ titleNames: ["单位"],
|
|
|
+ spanCols: [1],
|
|
|
+ spanRows: [1],
|
|
|
+ vAlign: [1],
|
|
|
+ hAlign: [1],
|
|
|
+ font: ["Arial"]
|
|
|
+ },
|
|
|
+ data: {
|
|
|
+ field: "unit",
|
|
|
+ vAlign: 1,
|
|
|
+ hAlign: 1,
|
|
|
+ font: "Arial",
|
|
|
+ formatter: "@"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
width: 40,
|
|
|
readOnly: true,
|
|
|
head: {
|
|
@@ -202,13 +221,33 @@ const billsGuidance = (function () {
|
|
|
hAlign: 1,
|
|
|
font: "Arial"
|
|
|
}
|
|
|
+ },
|
|
|
+ {
|
|
|
+ width: 40,
|
|
|
+ readOnly: true,
|
|
|
+ head: {
|
|
|
+ titleNames: ["材料"],
|
|
|
+ spanCols: [1],
|
|
|
+ spanRows: [1],
|
|
|
+ vAlign: [1],
|
|
|
+ hAlign: [1],
|
|
|
+ font: ["Arial"]
|
|
|
+ },
|
|
|
+ data: {
|
|
|
+ field: "isMaterial",
|
|
|
+ vAlign: 1,
|
|
|
+ hAlign: 1,
|
|
|
+ font: "Arial"
|
|
|
+ }
|
|
|
}
|
|
|
]
|
|
|
},
|
|
|
headers: [
|
|
|
{name: '项目指引', dataCode: 'name', width: 400, vAlign: 'center', hAlign: 'left', formatter: '@'},
|
|
|
+ {name: '单位', dataCode: 'unit', width: 50, vAlign: 'center', hAlign: 'center', formatter: '@'},
|
|
|
{name: '输出特征', dataCode: 'outputItemCharacter', width: 40, vAlign: 'center', hAlign: 'center'},
|
|
|
{name: '必填', dataCode: 'required', width: 40, vAlign: 'center', hAlign: 'center'},
|
|
|
+ {name: '材料', dataCode: 'isMaterial', width: 40, vAlign: 'center', hAlign: 'center'},
|
|
|
],
|
|
|
events: {
|
|
|
SelectionChanged: function (sender, info) {
|
|
@@ -313,6 +352,108 @@ const billsGuidance = (function () {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ /* 清单材料表 */
|
|
|
+ const billMaterial = {
|
|
|
+ dom: $('#bill-material-spread'),
|
|
|
+ workBook: null,
|
|
|
+ cache: [],
|
|
|
+ headers: [
|
|
|
+ {name: '材料编码', dataCode: 'code', width: 110, vAlign: 'center', hAlign: 'left', formatter: '@'},
|
|
|
+ {name: '材料名称', dataCode: 'name', width: 150, vAlign: 'center', hAlign: 'left', formatter: '@'},
|
|
|
+ {name: '规格', dataCode: 'specs', width: 150, vAlign: 'center', hAlign: 'left', formatter: '@'}
|
|
|
+ ],
|
|
|
+ events: {
|
|
|
+ EditEnded: function (sender, args) {
|
|
|
+ editMaterials(args.sheet, [{row: args.row, col: args.col}]);
|
|
|
+ },
|
|
|
+ RangeChanged: function (sender, args) {
|
|
|
+ editMaterials(args.sheet, args.changedCells);
|
|
|
+ },
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 显示清单材料数据
|
|
|
+ function showBillMaterialData(sheet, headers, datas, emptyRow = 0){
|
|
|
+ let fuc = function () {
|
|
|
+ const rowCount = datas.length + emptyRow;
|
|
|
+ sheet.setRowCount(rowCount);
|
|
|
+ for(let col = 0, cLen = headers.length; col < cLen; col++){
|
|
|
+ for(let row = 0; row < rowCount; row++){
|
|
|
+ if (datas[row]) {
|
|
|
+ sheet.setValue(row, col, datas[row][headers[col]['dataCode']] || '');
|
|
|
+ } else {
|
|
|
+ sheet.setValue(row, col, '');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ renderSheetFunc(sheet, fuc);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取清单材料数据
|
|
|
+ async function getBillMaterials() {
|
|
|
+ if (!bills.tree.selected) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ billMaterial.cache = [];
|
|
|
+ try {
|
|
|
+ $.bootstrapLoading.start();
|
|
|
+ billMaterial.cache = await ajaxPost('/billsGuidance/api/getBillMaterials', { libID, billID: bills.tree.selected.data.ID });
|
|
|
+ sortByCode(billMaterial.cache);
|
|
|
+ } catch (error) {
|
|
|
+ $('#alert-info').text(error.message);
|
|
|
+ $('#alert').modal('show');
|
|
|
+ } finally {
|
|
|
+ showBillMaterialData(billMaterial.workBook.getSheet(0), billMaterial.headers, billMaterial.cache, 30);
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function getText(sheet, row, col) {
|
|
|
+ let text = sheet.getValue(row, col);
|
|
|
+ text = text ? text.toString().trim() : '';
|
|
|
+ return text;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 编辑材料表
|
|
|
+ async function editMaterials(sheet, cells){
|
|
|
+ let isChanged = false;
|
|
|
+ for(let cell of cells){
|
|
|
+ const itemCode = billMaterial.cache[cell.row] && billMaterial.cache[cell.row].code || '';
|
|
|
+ if (itemCode !== getText(sheet, cell.row, 0)) {
|
|
|
+ isChanged = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!isChanged) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let gljCodes = new Set();
|
|
|
+ const count = sheet.getRowCount();
|
|
|
+ for (let row = 0; row < count; row++) {
|
|
|
+ const code = getText(sheet, row, 0);
|
|
|
+ if (code) {
|
|
|
+ gljCodes.add(code);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 提交数据
|
|
|
+ try {
|
|
|
+ $.bootstrapLoading.start();
|
|
|
+ billMaterial.cache = await ajaxPost('/billsGuidance/api/editBillMaterials', { libID, billID: bills.tree.selected.data.ID, gljCodes: [...gljCodes], compilationID: curCompilationID }, undefined, true);
|
|
|
+ sortByCode(billMaterial.cache);
|
|
|
+ } catch (error) {
|
|
|
+ $('#alert-info').html(error);
|
|
|
+ $('#alert').modal('show');
|
|
|
+ } finally {
|
|
|
+ showBillMaterialData(billMaterial.workBook.getSheet(0), billMaterial.headers, billMaterial.cache, 30);
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 是否为工序行
|
|
|
+ function isProcessNode(node) {
|
|
|
+ return node && node.depth() % 2 === 0 && _isDef(node.data.type) && node.data.type === itemType.job
|
|
|
+ }
|
|
|
+
|
|
|
//渲染时方法,停止渲染
|
|
|
//@param {Object}sheet {Function}func @return {void}
|
|
|
function renderSheetFunc(sheet, func){
|
|
@@ -384,6 +525,12 @@ const billsGuidance = (function () {
|
|
|
else if(module === guideItem){
|
|
|
sheetCommonObj.bindEscKey(module.workBook, [{sheet: sheet, editStarting: null, editEnded: module.events.EditEnded}]);
|
|
|
}
|
|
|
+ else if (module === billMaterial) {
|
|
|
+ sheet.options.isProtected = true;
|
|
|
+ sheet.getRange(-1, 0, -1, 1).locked(locked);
|
|
|
+ sheet.getRange(-1, 1, -1, -1).locked(true);
|
|
|
+ sheet.getRange(-1, 2, -1, -1).locked(true);
|
|
|
+ }
|
|
|
setOptions(module.workBook, options);
|
|
|
buildHeader(module.workBook.getActiveSheet(), module.headers);
|
|
|
bindEvent(module.workBook, module.events);
|
|
@@ -438,7 +585,7 @@ const billsGuidance = (function () {
|
|
|
getItemsByBills(libID, node.data.ID, function (rstData) {
|
|
|
initTree(node.guidance, guideSheet, guideItem.treeSetting, rstData);
|
|
|
setNodesExpandState(node.guidance.tree.items, curExpandState);
|
|
|
- showCheckBox(guideSheet, node.guidance.tree.items);
|
|
|
+ setProcessNodes(guideSheet, node.guidance.tree.items);
|
|
|
renderSheetFunc(guideSheet, function () {
|
|
|
TREE_SHEET_HELPER.refreshNodesVisible(node.guidance.tree.roots, guideSheet, true);
|
|
|
});
|
|
@@ -450,14 +597,14 @@ const billsGuidance = (function () {
|
|
|
} else{
|
|
|
setNodesExpandState(node.guidance.tree.items, curExpandState);
|
|
|
node.guidance.controller.showTreeData();
|
|
|
- showCheckBox(guideSheet, node.guidance.tree.items);
|
|
|
+ setProcessNodes(guideSheet, node.guidance.tree.items);
|
|
|
//设置底色
|
|
|
setNodesColor(guideSheet, node.guidance.tree.items);
|
|
|
//项目指引初始焦点
|
|
|
guideItemInitSel(guideSheet.getActiveRowIndex() ? guideSheet.getActiveRowIndex() : 0);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
function showCheckBox(sheet, nodes) {
|
|
|
// const checkBoxType = locked ? sheetCommonObj.getReadOnlyCheckBox() : sheetCommonObj.getCheckBox();
|
|
|
const checkBoxType = new GC.Spread.Sheets.CellTypes.CheckBox();
|
|
@@ -465,21 +612,46 @@ const billsGuidance = (function () {
|
|
|
renderSheetFunc(sheet, function () {
|
|
|
nodes.forEach(node => {
|
|
|
const row = node.serialNo();
|
|
|
- if (node.depth() % 2 === 0 && _isDef(node.data.type) && node.data.type === itemType.job) {
|
|
|
- sheet.setCellType(row, 1, checkBoxType);
|
|
|
+ if (isProcessNode(node)) {
|
|
|
sheet.setCellType(row, 2, checkBoxType);
|
|
|
- sheet.setValue(row, 1, node.data.outputItemCharacter || false);
|
|
|
- sheet.setValue(row, 2, node.data.required || false);
|
|
|
+ sheet.setCellType(row, 3, checkBoxType);
|
|
|
+ sheet.setCellType(row, 4, checkBoxType);
|
|
|
+ sheet.setValue(row, 2, node.data.outputItemCharacter || false);
|
|
|
+ sheet.setValue(row, 3, node.data.required || false);
|
|
|
+ sheet.setValue(row, 4, node.data.isMaterial || false);
|
|
|
} else {
|
|
|
- sheet.setCellType(row, 1, baseType);
|
|
|
sheet.setCellType(row, 2, baseType);
|
|
|
- sheet.setValue(row, 1, '');
|
|
|
+ sheet.setCellType(row, 3, baseType);
|
|
|
+ sheet.setCellType(row, 4, baseType);
|
|
|
sheet.setValue(row, 2, '');
|
|
|
+ sheet.setValue(row, 3, '');
|
|
|
+ sheet.setValue(row, 4, '');
|
|
|
}
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ function setReadOnly(sheet, nodes) {
|
|
|
+ if (locked) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 单位,可输入单位文本。仅特征/工序行可输入
|
|
|
+ const unitCol = guideItem.headers.findIndex(item => item.dataCode === 'unit');
|
|
|
+ renderSheetFunc(sheet, function () {
|
|
|
+ nodes.forEach(node => {
|
|
|
+ const row = node.serialNo();
|
|
|
+ sheet.getCell(row, unitCol).locked(!isProcessNode(node));
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置选项行相关
|
|
|
+ function setProcessNodes(sheet, nodes) {
|
|
|
+ showCheckBox(sheet, nodes);
|
|
|
+ setReadOnly(sheet, nodes);
|
|
|
+ }
|
|
|
+
|
|
|
//设置项目节点展开收起状态:展开全部、收起定额
|
|
|
//@param {Array}nodes(当前清单下的所有项目指引节点) {Number}expandState(展开全部1或收起定额0).
|
|
|
function setNodesExpandState(nodes, expandState) {
|
|
@@ -524,8 +696,7 @@ const billsGuidance = (function () {
|
|
|
function setNodesColor(sheet, nodes) {
|
|
|
renderSheetFunc(sheet, function () {
|
|
|
for(let node of nodes){
|
|
|
- const nDepth = node.depth();
|
|
|
- const color = nDepth % 2 == 0 && _isDef(node.data.type) && node.data.type === itemType.job ? selectedBgColor : 'White';
|
|
|
+ const color = isProcessNode(node) ? selectedBgColor : 'White';
|
|
|
setBgColor(sheet, node.serialNo(), color);
|
|
|
}
|
|
|
});
|
|
@@ -620,7 +791,7 @@ const billsGuidance = (function () {
|
|
|
$('#insertAll').removeClass('disabled');
|
|
|
}
|
|
|
//备注,奇数节点可用
|
|
|
- if(node && (node.depth() + 1) % 2 === 1 && node.data.type !== itemType.ration){
|
|
|
+ if(isProcessNode(node)){
|
|
|
$('.main-bottom-content').find('textarea').attr('readonly', false);
|
|
|
}
|
|
|
}
|
|
@@ -983,6 +1154,7 @@ const billsGuidance = (function () {
|
|
|
CommonAjax.post('/billsGuidance/api/getLibWithBills', {libID: libID}, function (rstData) {
|
|
|
billsLibId = rstData.guidanceLib.billsLibId;
|
|
|
initRationLibs(rstData.guidanceLib.compilationId);
|
|
|
+ curCompilationID = rstData.guidanceLib.compilationId;
|
|
|
bills.cache = rstData.bills;
|
|
|
initLibName(rstData.guidanceLib.name);
|
|
|
/*initTree(bills, bills.workBook.getActiveSheet(), bills.treeSetting, bills.cache);
|
|
@@ -1067,16 +1239,16 @@ const billsGuidance = (function () {
|
|
|
for(let cell of cells){
|
|
|
const field = guideItem.headers[cell.col].dataCode;
|
|
|
let node = bills.tree.selected.guidance.tree.items[cell.row];
|
|
|
- if (field === 'name') {
|
|
|
+ if (field === 'name' || field === 'unit') {
|
|
|
let text = sheet.getValue(cell.row, cell.col);
|
|
|
text = text ? text.toString() : '';
|
|
|
text = text.replace(deESC, '');
|
|
|
sheet.setValue(cell.row, cell.col, text);
|
|
|
- if(node.data.name != text){
|
|
|
+ if(node.data[field] != text){
|
|
|
syncDatas.push({node: node, text: text, field, cell});
|
|
|
- updateDatas.push({updateType: updateType.update, findData: {ID: node.getID()}, updateData: {name: text}});
|
|
|
+ updateDatas.push({updateType: updateType.update, findData: {ID: node.getID()}, updateData: {[field]: text}});
|
|
|
}
|
|
|
- } else if (field === 'outputItemCharacter' || field === 'required') {
|
|
|
+ } else if (field === 'outputItemCharacter' || field === 'required' || field === 'isMaterial') {
|
|
|
const val = !sheet.getValue(cell.row, cell.col);
|
|
|
sheet.setValue(cell.row, cell.col, val);
|
|
|
syncDatas.push({node: node, text: val, field, cell });
|
|
@@ -1144,9 +1316,9 @@ const billsGuidance = (function () {
|
|
|
const row = newNode.serialNo();
|
|
|
sheet.setValue(row, 0, newNode.data.name);
|
|
|
if (newNode.data.outputItemCharacter !== undefined) {
|
|
|
- sheet.setValue(row, 1, newNode.data.outputItemCharacter);
|
|
|
+ sheet.setValue(row, 2, newNode.data.outputItemCharacter);
|
|
|
}
|
|
|
- showCheckBox(sheet, [newNode]);
|
|
|
+ setProcessNodes(sheet, [newNode]);
|
|
|
refreshBtn(newNode);
|
|
|
}
|
|
|
}
|
|
@@ -1245,7 +1417,7 @@ const billsGuidance = (function () {
|
|
|
guideItemInitSel(sheet.getActiveRowIndex());
|
|
|
refreshBtn(bills.tree.selected.guidance.tree.selected);
|
|
|
setNodesColor(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
- showCheckBox(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
+ setProcessNodes(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
if (bills.tree.selected.data.hasGuide && !bills.tree.selected.guidance.tree.items.length) {
|
|
|
bills.tree.selected.data.hasGuide = false;
|
|
|
setBillsForeColor([bills.tree.selected]);
|
|
@@ -1265,7 +1437,7 @@ const billsGuidance = (function () {
|
|
|
updateDatas.push({updateType: updateType.update, findData: {ID: selected.getParentID()}, updateData: {NextSiblingID: selected.getID()}});
|
|
|
//更新选中节点
|
|
|
updateDatas.push({updateType: updateType.update, findData: {ID: selected.getID()},
|
|
|
- updateData: {ParentID: selected.parent.getParentID(), NextSiblingID: selected.parent.getNextSiblingID()}});
|
|
|
+ updateData: {ParentID: selected.parent.getParentID(), NextSiblingID: selected.parent.getNextSiblingID(), unit: ''}});
|
|
|
if(selected.nextSibling && selected.children.length > 0){
|
|
|
//更新选中节点最末子节点
|
|
|
let lastChild = selected.children[selected.children.length - 1];
|
|
@@ -1283,9 +1455,12 @@ const billsGuidance = (function () {
|
|
|
}
|
|
|
updateGuideItems(updateDatas, function () {
|
|
|
controller.upLevel();
|
|
|
+ const sheet = guideItem.workBook.getActiveSheet();
|
|
|
refreshBtn(bills.tree.selected.guidance.tree.selected);
|
|
|
- setNodesColor(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
- showCheckBox(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
+ setNodesColor(sheet, bills.tree.selected.guidance.tree.items);
|
|
|
+ setProcessNodes(sheet, bills.tree.selected.guidance.tree.items);
|
|
|
+ const unitCol = guideItem.headers.findIndex(item => item.dataCode === 'unit');
|
|
|
+ sheet.setValue(selected.serialNo(), unitCol, '');
|
|
|
$.bootstrapLoading.end();
|
|
|
guideItem.workBook.focus(true)//31574
|
|
|
});
|
|
@@ -1305,12 +1480,15 @@ const billsGuidance = (function () {
|
|
|
updateDatas.push({updateType: updateType.update, findData: {ID: lastChild.getID()}, updateData: {NextSiblingID: selected.getID()}});
|
|
|
}
|
|
|
//更新选中节点
|
|
|
- updateDatas.push({updateType: updateType.update, findData: {ID: selected.getID()}, updateData: {ParentID: selected.preSibling.getID(), NextSiblingID: -1}});
|
|
|
+ updateDatas.push({updateType: updateType.update, findData: {ID: selected.getID()}, updateData: {ParentID: selected.preSibling.getID(), NextSiblingID: -1, unit: ''}});
|
|
|
updateGuideItems(updateDatas, function () {
|
|
|
controller.downLevel();
|
|
|
+ const sheet = guideItem.workBook.getActiveSheet();
|
|
|
refreshBtn(bills.tree.selected.guidance.tree.selected);
|
|
|
- setNodesColor(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
- showCheckBox(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
+ setNodesColor(sheet, bills.tree.selected.guidance.tree.items);
|
|
|
+ setProcessNodes(sheet, bills.tree.selected.guidance.tree.items);
|
|
|
+ const unitCol = guideItem.headers.findIndex(item => item.dataCode === 'unit');
|
|
|
+ sheet.setValue(selected.serialNo(), unitCol, '');
|
|
|
$.bootstrapLoading.end();
|
|
|
guideItem.workBook.focus(true)
|
|
|
});
|
|
@@ -1334,7 +1512,7 @@ const billsGuidance = (function () {
|
|
|
controller.upMove();
|
|
|
refreshBtn(bills.tree.selected.guidance.tree.selected);
|
|
|
setNodesColor(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
- showCheckBox(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
+ setProcessNodes(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
$.bootstrapLoading.end();
|
|
|
guideItem.workBook.focus(true)
|
|
|
});
|
|
@@ -1358,7 +1536,7 @@ const billsGuidance = (function () {
|
|
|
controller.downMove();
|
|
|
refreshBtn(bills.tree.selected.guidance.tree.selected);
|
|
|
setNodesColor(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
- showCheckBox(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
+ setProcessNodes(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
$.bootstrapLoading.end();
|
|
|
guideItem.workBook.focus(true)
|
|
|
});
|
|
@@ -1572,7 +1750,7 @@ const billsGuidance = (function () {
|
|
|
cleanData(guideItem.workBook.getActiveSheet(), guideItem.headers, -1);
|
|
|
itemObj.controller.showTreeData();
|
|
|
setNodesColor(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
- showCheckBox(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
+ setProcessNodes(guideItem.workBook.getActiveSheet(), bills.tree.selected.guidance.tree.items);
|
|
|
}, function () {
|
|
|
$.bootstrapLoading.end();
|
|
|
});
|
|
@@ -1752,7 +1930,7 @@ const billsGuidance = (function () {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- // 初始化定额右键菜单
|
|
|
+ // 初始化清单右键菜单
|
|
|
function initRationContextMenu() {
|
|
|
$.contextMenu({
|
|
|
selector: '#rationSpread',
|
|
@@ -1803,6 +1981,53 @@ const billsGuidance = (function () {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ // 初始化定额右键菜单
|
|
|
+ function initBillsContextMenu() {
|
|
|
+ $.contextMenu({
|
|
|
+ selector: '#billsSpread',
|
|
|
+ build: function($triggerElement, e){
|
|
|
+ //控制允许右键菜单在哪个位置出现
|
|
|
+ let sheet = bills.workBook.getActiveSheet();;
|
|
|
+ let offset = $("#billsSpread").offset(),
|
|
|
+ x = e.pageX - offset.left,
|
|
|
+ y = e.pageY - offset.top;
|
|
|
+ let target = sheet.hitTest(x, y);
|
|
|
+ if(target.hitTestType === 3 && typeof target.row !== 'undefined' && typeof target.col !== 'undefined'){//在表格内
|
|
|
+ let sel = sheet.getSelections()[0];
|
|
|
+ if(sel && sel.rowCount === 1){
|
|
|
+ sheet.setActiveCell(target.row, target.col);
|
|
|
+ }
|
|
|
+ sel = sheet.getSelections()[0];
|
|
|
+ if(sel){
|
|
|
+ sel.row = sel.row === -1 ? 0 : sel.row;
|
|
|
+ }
|
|
|
+ //右键在多选内则不重设焦点
|
|
|
+ if(!sel || sel.rowCount === 1 || !(target.row >= sel.row && target.row <= sel.row + sel.rowCount - 1)){
|
|
|
+ sheet.setActiveCell(target.row, target.col);
|
|
|
+ }
|
|
|
+ billsInitSel(target.row, { row: bills.tree.selected.serialNo() });
|
|
|
+ return {
|
|
|
+ callback: function(){},
|
|
|
+ items: {
|
|
|
+ "replace": {
|
|
|
+ name: "配置材料",
|
|
|
+ disabled: function () {
|
|
|
+ return !bills.tree.selected;
|
|
|
+ },
|
|
|
+ icon: "fa-edit",
|
|
|
+ callback: function (key, opt) {
|
|
|
+ $('#bill-material-modal').modal('show');
|
|
|
+ }},
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
//展开至搜索出来点的节点
|
|
|
//@param {Array}nodes @return {void}
|
|
|
function expandSearchNodes(sheet, nodes, roots){
|
|
@@ -1933,9 +2158,21 @@ const billsGuidance = (function () {
|
|
|
|
|
|
}
|
|
|
|
|
|
- //初始化个按钮点击
|
|
|
+ //初始化dom时间
|
|
|
//@return {void}
|
|
|
- function initBtn(){
|
|
|
+ function initDomEvents(){
|
|
|
+ // 清单材料窗口
|
|
|
+ $("#bill-material-modal").on('hidden.bs.modal', function () {
|
|
|
+ billMaterial.cache = [];
|
|
|
+ showBillMaterialData(billMaterial.workBook.getSheet(0), billMaterial.headers, billMaterial.cache, 30);
|
|
|
+ });
|
|
|
+ $("#bill-material-modal").on('shown.bs.modal', function () {
|
|
|
+ if (billMaterial.workBook) {
|
|
|
+ billMaterial.workBook.refresh();
|
|
|
+ getBillMaterials();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
$('#insert').click(function () {
|
|
|
insert([{type: itemType.job, name: '', outputItemCharacter: true }], false);
|
|
|
});
|
|
@@ -2227,13 +2464,14 @@ const billsGuidance = (function () {
|
|
|
//初始化视图
|
|
|
//@param {void} @return {void}
|
|
|
function initViews(){
|
|
|
- let modules = [bills, guideItem, section, ration];
|
|
|
+ let modules = [bills, guideItem, section, ration, billMaterial];
|
|
|
initWorkBooks(modules);
|
|
|
lockUtil.lockTools($(document.body), locked);
|
|
|
getLibWithBills(libID);
|
|
|
- initBtn();
|
|
|
+ initDomEvents();
|
|
|
initContextMenu();
|
|
|
initRationContextMenu();
|
|
|
+ initBillsContextMenu();
|
|
|
initSlideSize();
|
|
|
}
|
|
|
|