|
|
@@ -130,10 +130,22 @@ const billsGuidance = (function () {
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
+ // 获取对比树片段数据的方法,此方法可能会被覆盖,方法存在一个对象中,使得外部可以覆盖相关方法
|
|
|
+ // 在农村公路2020中,主树对比片段与这里的逻辑是不相同的
|
|
|
+ const overwrite = {
|
|
|
+ getFragment() {
|
|
|
+ return { parent: null, mainTreeFragment: projectObj.project.Bills.tree.roots }
|
|
|
+ }
|
|
|
+ };
|
|
|
//插入清单
|
|
|
function insertBills(lowestNodes) {
|
|
|
let selTree = getSelTree(lowestNodes);
|
|
|
- let compareData = compareTree(projectObj.project.Bills.tree, selTree);
|
|
|
+ const { errMsg, parent, mainTreeFragment } = overwrite.getFragment();
|
|
|
+ if (errMsg) {
|
|
|
+ alert(errMsg);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let compareData = compareTree(parent, mainTreeFragment, selTree.roots);
|
|
|
let sheet = projectObj.mainSpread.getActiveSheet(),
|
|
|
row = sheet.getActiveColumnIndex(),
|
|
|
col = sheet.getActiveColumnIndex();
|
|
|
@@ -260,17 +272,17 @@ const billsGuidance = (function () {
|
|
|
function getMatchContent(node) {
|
|
|
return `${node.data.code ? node.data.code : '*'}-${node.data.name ? node.data.name : '*'}-${node.data.unit ? node.data.unit: '*'}`;
|
|
|
}
|
|
|
- //**对比清单主树与选中树,获取需要更新和插入的数据**
|
|
|
- //@param {Object}mainTree {Object}selTree
|
|
|
- function compareTree(billsTree, selTree) {
|
|
|
+ //**对比清单主树节点片段与选中树节点片段,获取需要更新和插入的数据**
|
|
|
+ //@param {Object}parent - 主树片段的父节点 {Array}mainTreeFragment {Array}stdTreeFragment
|
|
|
+ function compareTree(parent, mainTreeFragment, stdTreeFragment) {
|
|
|
//需要插入、更新的数据
|
|
|
let postData = [],
|
|
|
//跟树结构自动定位至的清单节点(最近匹配到的节点)
|
|
|
locateNode = null;
|
|
|
- if (!billsTree || !selTree) {
|
|
|
+ if (!mainTreeFragment || !stdTreeFragment) {
|
|
|
return postData;
|
|
|
}
|
|
|
- comparePeer(null, billsTree.roots, selTree.roots);
|
|
|
+ comparePeer(parent, mainTreeFragment, stdTreeFragment);
|
|
|
return {postData, locateNode};
|
|
|
/*
|
|
|
* 该清单节点是否可以继续往下递归匹配,即该节点是否还可插入子项(在该层匹配到的时候判断)
|
|
|
@@ -1162,7 +1174,7 @@ const billsGuidance = (function () {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return {initViews, bindBtn, refreshWorkBook, setColumnWidthByRate, locateAtBills, bills, elfItem};
|
|
|
+ return {initViews, bindBtn, refreshWorkBook, setColumnWidthByRate, locateAtBills, bills, elfItem, overwrite};
|
|
|
})();
|
|
|
|
|
|
$(document).ready(function(){
|