|
@@ -65,7 +65,7 @@ let zlfb_object={
|
|
|
let controller = projectObj.mainController, project = projectObj.project;
|
|
|
let Bill = project.Bills;
|
|
|
let FBFX = Bill.getFBFXNode(controller);//取分部分项工程节点;
|
|
|
- let resort = $('#bill_resort').prop('checked'),recode=$('#bill_recode').prop('checked'),first=$('#bill_first').prop('checked');
|
|
|
+ let resort = true,recode=false,first=$('#bill_first').prop('checked');//清单排序和重新编码放到另外的页面
|
|
|
let second =$('#bill_second').prop('checked'), third =$('#bill_third').prop('checked');
|
|
|
let needSelf = first==true||second==true||third==true;//需要补充分部节点;
|
|
|
if(me.sectionInfo){
|
|
@@ -146,6 +146,142 @@ let zlfb_object={
|
|
|
me.submitRequest(newDataMap,allNewNode,updateData,FBFX,controller);
|
|
|
}
|
|
|
},
|
|
|
+ ZLQD:async function(){//只清单排序或者重新编码
|
|
|
+ //
|
|
|
+ let me = this;
|
|
|
+ let selected = projectObj.project.mainTree.selected;
|
|
|
+ let resort = $('#bill_resort').prop('checked'),recode=$('#bill_recode').prop('checked')
|
|
|
+ let startNum = parseInt($('#bill_recode_start').val());
|
|
|
+ let FBNodes = [],updateMap = {},codeMap={};
|
|
|
+ let recoverMap = {};//排序失败后用来恢复原状的缓存
|
|
|
+ let tree = projectObj.mainController.tree;
|
|
|
+ if(resort||recode){
|
|
|
+ //先找出需要排序和重新编码的节点
|
|
|
+ for(let node of tree.items){
|
|
|
+ if(node.sourceType===ModuleNames.bills){
|
|
|
+ if(node.data.type == billType.FB && node.children.length > 1){//有两个以上的才需要排序
|
|
|
+ let subType = node.children[0].data.type;
|
|
|
+ if(subType === billType.FX || subType === billType.BX){
|
|
|
+ FBNodes.push(node);
|
|
|
+ recoverMap[node.data.ID] = node.children;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ if(resort){//如果需要重新排序 -- 重新排序还必须得先改变缓存,如果勾选了重新编码,顺序依赖于排好序的清单
|
|
|
+ for(let FB of FBNodes){
|
|
|
+ me.resortChildren(FB,updateMap)
|
|
|
+ }
|
|
|
+ tree.sortTreeItems(tree);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(recode){
|
|
|
+ if(!(startNum >= 1)){
|
|
|
+ return alert("起始编码必须大于1!")
|
|
|
+ }
|
|
|
+ for(let node of tree.items){
|
|
|
+ if(node.data.billsLibId){
|
|
|
+ let l_code = me.getLibCode(node.data.code);
|
|
|
+ if(l_code !== false){
|
|
|
+ if(codeMap[l_code]){
|
|
|
+ codeMap[l_code]+=1;
|
|
|
+ }else {
|
|
|
+ codeMap[l_code]=startNum;
|
|
|
+ }
|
|
|
+ newCode = l_code+me.getEndCode(codeMap[l_code],3);
|
|
|
+ if(updateMap[node.data.ID]){
|
|
|
+ updateMap[node.data.ID].data.code = newCode;
|
|
|
+ }else{
|
|
|
+ updateMap[node.data.ID] = {
|
|
|
+ type:'bills',
|
|
|
+ data:{
|
|
|
+ projectID:node.data.projectID,
|
|
|
+ ID:node.data.ID,
|
|
|
+ code :newCode
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ let datas = [];
|
|
|
+ for(let ID in updateMap){
|
|
|
+ datas.push(updateMap[ID]);
|
|
|
+ }
|
|
|
+ if(datas.length > 0) await projectObj.project.syncUpdateNodesAndRefresh(datas);
|
|
|
+
|
|
|
+ projectObj.mainController.refreshTreeNode(FBNodes,true);
|
|
|
+ this.refreshVisable(FBNodes);
|
|
|
+ let sel = projectObj.mainController.sheet.getSelections()[0];
|
|
|
+ sel.row = selected.serialNo();
|
|
|
+ projectObj.mainController.sheet.setSelection(sel.row,sel.col,sel.rowCount,sel.colCount);
|
|
|
+ projectObj.mainController.setTreeSelected(selected);
|
|
|
+ } catch (error) {
|
|
|
+ alert('清单排序/重新编码失败,请重试!');
|
|
|
+ console.log(error);
|
|
|
+ //恢复排序
|
|
|
+ for(let FB of FBNodes){
|
|
|
+ me.resortChildren(FB,{},recoverMap[FB.data.ID]);
|
|
|
+ }
|
|
|
+ tree.sortTreeItems(tree);
|
|
|
+ this.refreshVisable(FBNodes);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ },
|
|
|
+ refreshVisable:function (FBNodes) {
|
|
|
+ let sheet = projectObj.mainController.sheet;
|
|
|
+ let tree = projectObj.mainController.tree;
|
|
|
+ sheet.suspendPaint();
|
|
|
+ sheet.suspendEvent();
|
|
|
+ for(let pnode of FBNodes){
|
|
|
+ TREE_SHEET_HELPER.refreshChildrenVisiable(sheet,tree,pnode,pnode.serialNo());
|
|
|
+ for(let node of pnode.children){
|
|
|
+ TREE_SHEET_HELPER.refreshChildrenVisiable(sheet,tree,node,node.serialNo());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sheet.resumeEvent();
|
|
|
+ sheet.resumePaint();
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ resortChildren:function(node,updateMap,recoverChildren){
|
|
|
+ if(recoverChildren){
|
|
|
+ node.children = recoverChildren;
|
|
|
+ }else{
|
|
|
+ node.children = _.sortBy(node.children,'data.code');
|
|
|
+ }
|
|
|
+ for(let i=0;i<node.children.length;i++){
|
|
|
+ let subNode = node.children[i];
|
|
|
+ let tem = {
|
|
|
+ type:'bills',
|
|
|
+ data:{
|
|
|
+ projectID:subNode.data.projectID,
|
|
|
+ ID:subNode.data.ID,
|
|
|
+ }
|
|
|
+ };
|
|
|
+ if(i===0){
|
|
|
+ subNode.preSibling == 0;
|
|
|
+ }else{
|
|
|
+ subNode.preSibling = node.children[i-1];
|
|
|
+ }
|
|
|
+
|
|
|
+ if(i == node.children.length-1){//如果是最后一个节点
|
|
|
+ tem.data.NextSiblingID=-1;
|
|
|
+ subNode.nextSibling = null
|
|
|
+ }else{
|
|
|
+ tem.data.NextSiblingID= node.children[i+1].data.ID;
|
|
|
+ subNode.nextSibling = node.children[i+1];
|
|
|
+ }
|
|
|
+ updateMap[subNode.data.ID] = tem
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
addSubNode:function (parentNode,oldChildren,allNewNode,controller) {
|
|
|
for(let c of oldChildren){
|
|
|
let newChild = controller.tree.insert(parentNode.getID(), -1,c.getID());
|
|
@@ -300,6 +436,7 @@ let zlfb_object={
|
|
|
|
|
|
|
|
|
$(function () {
|
|
|
+
|
|
|
$('#zlfb_confirm').click(function (){
|
|
|
$("#zlfb").modal('hide');
|
|
|
zlfb_object.reorganizeNodes();
|
|
@@ -308,4 +445,11 @@ $(function () {
|
|
|
zlfb_object.sectionInfo=null;
|
|
|
})
|
|
|
|
|
|
+ $('#ZLQD_btn').click(function () {
|
|
|
+ $("#zlqd").modal('show');
|
|
|
+ });
|
|
|
+ $('#zlqd_confirm').click(function (){
|
|
|
+ $("#zlqd").modal('hide');
|
|
|
+ zlfb_object.ZLQD();
|
|
|
+ });
|
|
|
});
|