|
@@ -189,7 +189,9 @@ let BlockController = {
|
|
|
* @param position next/pre/sub
|
|
|
*/
|
|
|
confirmPaste:function (blockData,selected,position) {
|
|
|
- let Bills = projectObj.project.Bills;
|
|
|
+ let me = this;
|
|
|
+ let project = projectObj.project;
|
|
|
+ let Bills = project.Bills;
|
|
|
let parent = null,next = null,pre = null;
|
|
|
let updateData = [],billUpdate = null;
|
|
|
let billsIDMap = {};//用来做新旧ID映射
|
|
@@ -236,15 +238,115 @@ let BlockController = {
|
|
|
updateData.push(billUpdate);
|
|
|
}
|
|
|
dataMap.updateData = updateData;
|
|
|
+ dataMap.projectID = projectObj.project.ID();
|
|
|
console.log(dataMap);
|
|
|
$.bootstrapLoading.start();
|
|
|
- CommonAjax.post('/bills/pasteBlock',dataMap,function (data) {
|
|
|
+ CommonAjax.post('/bills/pasteBlock',dataMap,function (result) {
|
|
|
$.bootstrapLoading.end();
|
|
|
+ //更新前端缓存
|
|
|
+ me.updateCache(result);
|
|
|
+ //插入树节点
|
|
|
+ let rationNodes = me.addToTree(parentID,nextID,result.bills,result.rations);
|
|
|
+ //主材设备工料机插入主树
|
|
|
+ project.ration_glj.addToMainTree(result.ration_gljs);
|
|
|
+ //更新计算程序模板,并进行重新计算
|
|
|
+ project.calcProgram.calcRationsAndSave(rationNodes);
|
|
|
+ })
|
|
|
|
|
|
+ },
|
|
|
|
|
|
- })
|
|
|
+ updateCache:function(result){
|
|
|
+ let project = projectObj.project;
|
|
|
+ let Bills = project.Bills,Ration = project.Ration;
|
|
|
+ let mainTree = project.mainTree;
|
|
|
+ Bills.addDatasToList(result.bills);
|
|
|
+ Ration.addDatasToList(result.rations);
|
|
|
+ project.quantity_detail.addDatasToList(result.quantity_details);
|
|
|
+ project.ration_glj.addDatasToList(result.ration_gljs);
|
|
|
+ project.ration_coe.addDatasToList(result.ration_coes);
|
|
|
+ project.ration_installation.addDatasToList(result.ration_installations)
|
|
|
+ for(let u of result.updateData){
|
|
|
+ let unode = mainTree.findNode(u.query.ID);
|
|
|
+ if(unode){
|
|
|
+ for(let ukey in u.doc){
|
|
|
+ unode.data[ukey] = u.doc[ukey];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //更新项目工料机模块信息-计算消耗量
|
|
|
+ project.projectGLJ.datas = result.gljData;
|
|
|
+ project.projectGLJ.calcQuantity();
|
|
|
+ },
|
|
|
+
|
|
|
+ addToTree:function (parentID,nextID,bills,rations) {
|
|
|
+ let project = projectObj.project;
|
|
|
+ let Bills = project.Bills,mainTree = project.mainTree;
|
|
|
+ let parentMap_b = {},parentMap_r = {};
|
|
|
+ let newNodes = [],firstNode = null,rationNodes=[];
|
|
|
+
|
|
|
+ createParentMap(parentMap_b,bills,'bills');
|
|
|
+ createParentMap(parentMap_r,rations,'ration');
|
|
|
+ if(parentMap_b[parentID]){
|
|
|
+ firstNode = loadTreeNode(parentID,nextID,parentMap_b[parentID][0],'bills');
|
|
|
+
|
|
|
+ }else if(parentMap_r[parentID]){
|
|
|
+ firstNode = loadTreeNode(parentID,nextID,parentMap_r[parentID][0],'ration');
|
|
|
+ }
|
|
|
+
|
|
|
+ ProjectController.syncDisplayNewNodes(projectObj.mainController, newNodes);
|
|
|
+ let sels = projectObj.mainController.sheet.getSelections();
|
|
|
+ //设置选中并更新下方显示
|
|
|
+ projectObj.mainController.setTreeSelected(firstNode);
|
|
|
+ projectObj.mainController.sheet.setSelection(firstNode.serialNo(), sels[0].col, 1, 1);
|
|
|
+ return rationNodes;
|
|
|
+
|
|
|
+ function loadTreeNode(parentID,nextID,data,type) {
|
|
|
+ let newNode = null;
|
|
|
+ if(type == 'bills'){
|
|
|
+ let newSource = Bills.tree.insertByData(data,parentID,nextID,true);
|
|
|
+ newNode = mainTree.insert(parentID, nextID,data.ID);
|
|
|
+ if (newNode) {
|
|
|
+ newNode.source = newSource;
|
|
|
+ newNode.sourceType = Bills.getSourceType();
|
|
|
+ newNode.data = data;
|
|
|
+ newNodes.push(newNode);
|
|
|
+ let subType = 'bills';
|
|
|
+ let children = parentMap_b[data.ID];
|
|
|
+ if(!children){
|
|
|
+ children = parentMap_r[data.ID];
|
|
|
+ subType = 'ration';
|
|
|
+ }
|
|
|
+ if(children){
|
|
|
+ for(let c of children){
|
|
|
+ loadTreeNode(data.ID,-1,c,subType);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }else if(type == 'ration'){
|
|
|
+ newNode = project.mainTree.insert(parentID, nextID, data.ID);
|
|
|
+ newNode.source = data;
|
|
|
+ newNode.sourceType = project.Ration.getSourceType();
|
|
|
+ newNode.data = data;
|
|
|
+ newNodes.push(newNode);
|
|
|
+ rationNodes.push(newNode);
|
|
|
+ }
|
|
|
+ return newNode;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ function createParentMap(parentMap,list,type) {
|
|
|
+ let parentKey = type=='bills'?'ParentID':'billsItemID';
|
|
|
+ for(let l of list){
|
|
|
+ let parentID = l[parentKey];
|
|
|
+ if(parentMap[parentID]){
|
|
|
+ parentMap[parentID].push(l);
|
|
|
+ }else {
|
|
|
+ parentMap[parentID] = [l];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- // delete fees / feesIndex /__v
|
|
|
},
|
|
|
|
|
|
preparePasteData : function (data,billsIDMap) {
|
|
@@ -257,8 +359,6 @@ let BlockController = {
|
|
|
billsIDMap[b.ParentID]?b.ParentID = billsIDMap[b.ParentID]:'';
|
|
|
billsIDMap[b.NextSiblingID]?b.NextSiblingID = billsIDMap[b.NextSiblingID]:'';
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
return {bills:bills,rations:rations,ration_gljs:ration_gljs,ration_coes:ration_coes,quantity_details:quantity_details,ration_installations:ration_installations};
|
|
|
|
|
|
function eachData(data) {
|
|
@@ -307,6 +407,7 @@ let BlockController = {
|
|
|
|
|
|
function createQuantityDetails(detailData,pdata,type) {
|
|
|
let tem_detail = _.cloneDeep(detailData);
|
|
|
+ delete tem_detail._id;
|
|
|
tem_detail.ID = uuid.v1();
|
|
|
tem_detail.projectID = projectObj.project.ID();
|
|
|
if(type == 'bills'){
|
|
@@ -321,6 +422,7 @@ let BlockController = {
|
|
|
function createRationData(rationData) {
|
|
|
let tem_ration = _.cloneDeep(rationData);
|
|
|
//删除旧数据
|
|
|
+ delete tem_ration._id;
|
|
|
delete tem_ration.fees;
|
|
|
delete tem_ration.feesIndex;
|
|
|
delete tem_ration.ration_gljs;
|
|
@@ -345,6 +447,7 @@ let BlockController = {
|
|
|
function createBillsData(billsData) { //ID、重新生成code
|
|
|
let temData = _.cloneDeep(billsData);
|
|
|
//删除旧数据
|
|
|
+ delete temData._id;
|
|
|
delete temData.fees;
|
|
|
delete temData.feesIndex;
|
|
|
delete temData.children;
|
|
@@ -385,7 +488,6 @@ let BlockController = {
|
|
|
}
|
|
|
|
|
|
},
|
|
|
-
|
|
|
calcRationQuantityAndContain : function (billsQuantity,ration) {//计算定额工程量和含量
|
|
|
let EXPString = ration.quantityEXP+"";
|
|
|
if(EXPString.indexOf("QDL") != -1){
|
|
@@ -411,8 +513,7 @@ let BlockController = {
|
|
|
ration.contain = tem_contain;
|
|
|
}
|
|
|
},
|
|
|
-
|
|
|
- newFormatCode : function (stdCode, filterCode) {
|
|
|
+ newFormatCode : function (stdCode, filterCode) {
|
|
|
let matchs = this.sameStdCode(stdCode, filterCode);
|
|
|
let format = function (Number) {
|
|
|
let s = Number + '';
|
|
@@ -438,7 +539,6 @@ let BlockController = {
|
|
|
return matchs;
|
|
|
},
|
|
|
|
|
|
-
|
|
|
removeBlock:function () {
|
|
|
removeLocalCache('project_block');
|
|
|
}
|