|
@@ -686,29 +686,57 @@ class CalcProgram {
|
|
|
saveNode(treeNode, saveParents = true) {
|
|
|
if (!treeNode.changed) return;
|
|
|
let me = this;
|
|
|
- let newDataArr = [], nodesArr = [];
|
|
|
-
|
|
|
- me.project.beginUpdate('');
|
|
|
+ let nodesArr = [];
|
|
|
let curNode = treeNode;
|
|
|
while (curNode) {
|
|
|
- if (curNode.changed){
|
|
|
+ if (curNode.changed){nodesArr.push(curNode)};
|
|
|
+ if (saveParents) curNode = curNode.parent
|
|
|
+ else break;
|
|
|
+ };
|
|
|
+ me.saveNodes(nodesArr);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 待保存的树结点列表入库存储
|
|
|
+ saveNodes(treeNodes){
|
|
|
+ if (treeNodes.length < 1) return;
|
|
|
+
|
|
|
+ let me = this;
|
|
|
+
|
|
|
+ me.project.beginUpdate('');
|
|
|
+ for (let node of treeNodes){
|
|
|
+ if (node.changed){
|
|
|
let data = {
|
|
|
- ID: curNode.data.ID,
|
|
|
+ ID: node.data.ID,
|
|
|
projectID: me.project.ID(),
|
|
|
- quantity: curNode.data.quantity,
|
|
|
- fees: curNode.data.fees
|
|
|
+ quantity: node.data.quantity,
|
|
|
+ fees: node.data.fees
|
|
|
};
|
|
|
- let newDta = {'updateType': 'ut_update', 'updateData': data};
|
|
|
- newDataArr.push(newDta);
|
|
|
- nodesArr.push(curNode);
|
|
|
- me.project.push(curNode.sourceType, newDataArr);
|
|
|
- };
|
|
|
- if (saveParents) curNode = curNode.parent
|
|
|
- else break;
|
|
|
+ let newData = {'updateType': 'ut_update', 'updateData': data};
|
|
|
+ me.project.push(node.sourceType, [newData]);
|
|
|
+ }
|
|
|
};
|
|
|
me.project.endUpdate();
|
|
|
|
|
|
- for (let node of nodesArr){delete node.changed;};
|
|
|
- projectObj.mainController.refreshTreeNode(nodesArr);
|
|
|
+ for (let node of treeNodes){delete node.changed};
|
|
|
+ projectObj.mainController.refreshTreeNode(treeNodes);
|
|
|
+ };
|
|
|
+
|
|
|
+ calcAllBills(){
|
|
|
+ let me = this;
|
|
|
+ let needSaveNodes = [];
|
|
|
+
|
|
|
+ function calcNodes(nodes) {
|
|
|
+ for (let node of nodes) {
|
|
|
+ if (node.sourceType !== me.project.Bills.getSourceType()) return;
|
|
|
+ if (node.source.children.length > 0) {
|
|
|
+ calcNodes(node.children);
|
|
|
+ }
|
|
|
+ me.calculate(node, false);
|
|
|
+ if (node.changed) needSaveNodes.push(node);
|
|
|
+ };
|
|
|
+ };
|
|
|
+
|
|
|
+ calcNodes(me.project.mainTree.roots);
|
|
|
+ me.saveNodes(needSaveNodes);
|
|
|
};
|
|
|
}
|