|
@@ -85,6 +85,7 @@ projectGljObject={
|
|
|
if(!this.projectGljSpread){
|
|
|
this.projectGljSpread = SheetDataHelper.createNewSpread($("#project_glj_sheet")[0],2);
|
|
|
}
|
|
|
+ this.projectGljSpread.bind(GC.Spread.Sheets.Events.RangeChanged, this.onProjectGljRangeChange);
|
|
|
this.initProjectGljSheet();
|
|
|
this.initMaterialTreeSheet();
|
|
|
},
|
|
@@ -93,7 +94,6 @@ projectGljObject={
|
|
|
this.initSheet(this.projectGljSheet,this.projectGljSetting);
|
|
|
this.projectGljSheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.onProjectGljSelectionChange);
|
|
|
this.projectGljSheet.bind(GC.Spread.Sheets.Events.EditStarting,this.onProjectGljEditStarting);
|
|
|
- this.projectGljSpread.bind(GC.Spread.Sheets.Events.RangeChanged, this.onProjectGljRangeChange);
|
|
|
this.projectGljSheet.name('projectGljSheet');
|
|
|
},
|
|
|
initMixRatio:function () {
|
|
@@ -102,7 +102,6 @@ projectGljObject={
|
|
|
me.initMixRatioSpread();
|
|
|
me.initRightClick();
|
|
|
}
|
|
|
- me.showMixRatioData();
|
|
|
},
|
|
|
initMixRatioSpread:function () {
|
|
|
this.mixRatioSpread = SheetDataHelper.createNewSpread($("#mix_ratio_sheet")[0]);
|
|
@@ -116,7 +115,8 @@ projectGljObject={
|
|
|
this.materialTree = cacheTree.createNew(this);
|
|
|
this.materialTreeController = TREE_SHEET_CONTROLLER.createNew(this.materialTree, this.materialTreeSheet, this.materialTreeSetting);
|
|
|
this.materialTreeController.bind(TREE_SHEET_CONTROLLER.eventName.treeSelectedChanged, this.onSelectionChange);
|
|
|
- this.materialTreeSheet.bind(GC.Spread.Sheets.Events.EditStarting,this.onMaterialTreeEditStarting);
|
|
|
+ this.materialTreeSheet.bind(GC.Spread.Sheets.Events.EditStarting,this.onProjectGljEditStarting);
|
|
|
+ this.materialTreeSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onProjectGLJValueChange);
|
|
|
this.materialTreeSheet.name('materialTreeSheet');
|
|
|
},
|
|
|
createMaterialTreeSheetSetting:function () {
|
|
@@ -127,7 +127,6 @@ projectGljObject={
|
|
|
this.materialTreeSetting.cols[l].readOnly = true;
|
|
|
}
|
|
|
return this.materialTreeSetting;
|
|
|
-
|
|
|
function getSettingCol(header) {
|
|
|
let aMap ={left:0,center:1,right:2};
|
|
|
let hAlign = header.hAlign?aMap[header.hAlign]:0;
|
|
@@ -151,10 +150,18 @@ projectGljObject={
|
|
|
if(header.cellType){
|
|
|
col.data.cellType = getCellType(header);
|
|
|
}
|
|
|
+ if(header.decimalField){//设置formatter
|
|
|
+ let decimal = getDecimal(header.decimalField);
|
|
|
+ col.formatter = getFormatter(decimal);
|
|
|
+ }
|
|
|
+ col.readOnly = function (node) {
|
|
|
+ if(node.data.ParentID == -1 || node.data.id == 'GJ'){//三材类别项不能编辑)
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ };
|
|
|
return col;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
function getCellType(header) {
|
|
|
return function () {
|
|
|
if(header.cellType === "checkBox"){
|
|
@@ -190,6 +197,7 @@ projectGljObject={
|
|
|
showMixRatioData:function () {
|
|
|
let me = this,gljId = null,gljType = null;
|
|
|
let sheet = me.projectGljSpread.getActiveSheet();
|
|
|
+ let oldSel = me.mixRatioSheet.getSelections()[0];
|
|
|
if(sheet.name() == 'projectGljSheet'){//projectGljSheet/materialSheet 工料机汇总和三材汇总表
|
|
|
let sel = me.projectGljSheet.getSelections()[0];
|
|
|
let srow = sel.row == -1?0:sel.row;
|
|
@@ -218,6 +226,7 @@ projectGljObject={
|
|
|
me.mixRatioSheet.setRowCount(0);
|
|
|
sheetCommonObj.showData(me.mixRatioSheet, me.mixRatioSetting,me.mixRatioData);
|
|
|
me.mixRatioSheet.setRowCount(me.mixRatioData.length);
|
|
|
+ me.mixRatioSheet.setSelection(oldSel.row==-1?0:oldSel.row,oldSel.col,oldSel.rowCount,oldSel.colCount);
|
|
|
})
|
|
|
},
|
|
|
getMixRatioSheetData:function (glj) {
|
|
@@ -246,9 +255,17 @@ projectGljObject={
|
|
|
},
|
|
|
projectGljEditChecking:function (row,col) {//return false表示不能编辑
|
|
|
let me = projectGljObject;
|
|
|
- let data = me.projectGljSheetData[row];
|
|
|
- let dataCode = me.projectGljSetting.header[col].dataCode;
|
|
|
- let lockColumns = me.projectGljSetting.view.lockColumns;
|
|
|
+ let data = null, setting=null;
|
|
|
+ let sheet = me.projectGljSpread.getActiveSheet();
|
|
|
+ if(sheet.name() == 'projectGljSheet'){
|
|
|
+ data = me.projectGljSheetData[row];
|
|
|
+ setting = me.projectGljSetting;
|
|
|
+ }else if(sheet.name() == 'materialTreeSheet'){
|
|
|
+ data = me.materialTree.selected.data;
|
|
|
+ setting = me.materialSetting;
|
|
|
+ }
|
|
|
+ let dataCode = setting.header[col].dataCode;
|
|
|
+ let lockColumns = setting.view.lockColumns;
|
|
|
|
|
|
if(lockColumns.indexOf(col)!= -1){
|
|
|
return false;
|
|
@@ -270,6 +287,12 @@ projectGljObject={
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
+ if(dataCode == 'materialCoe'){//三材类别为空时,三材系数应只读,不允许输入。
|
|
|
+ if(data.materialType == undefined || data.materialType == null){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return true;
|
|
|
},
|
|
|
onSelectionChange:function (){
|
|
@@ -277,19 +300,12 @@ projectGljObject={
|
|
|
me.showMixRatioData();
|
|
|
me.materialTreeSheet.repaint();
|
|
|
},
|
|
|
- onMaterialTreeEditStarting:function (sender, args) {
|
|
|
- let me = projectGljObject;
|
|
|
- let selected = me.materialTree.selected;
|
|
|
- if(selected && (selected.data.ParentID == -1 || selected.data.id == 'GJ')){//三材类别项不能编辑
|
|
|
- args.cancel = true;
|
|
|
- }
|
|
|
-
|
|
|
- },
|
|
|
onProjectGljSelectionChange:function (sender, args) {
|
|
|
let me = projectGljObject;
|
|
|
let newSel = args.newSelections[0];
|
|
|
let oldSel = args.oldSelections?args.oldSelections[0]:{};
|
|
|
if(newSel.row != oldSel.row){
|
|
|
+ me.mixRatioSheet.getSelections()[0].row = -1;
|
|
|
me.showMixRatioData();
|
|
|
}
|
|
|
me.projectGljSheet.repaint();
|
|
@@ -318,8 +334,8 @@ projectGljObject={
|
|
|
}
|
|
|
}
|
|
|
if(canChange == false){//恢复原来的值
|
|
|
- me.showProjectGljData();
|
|
|
- }else {
|
|
|
+ info.sheetName =="materialTreeSheet"?me.showMaterialTreeData():me.showProjectGljData();
|
|
|
+ }else if(info.sheetName =="projectGljSheet"){
|
|
|
me.batchUpdatePrice(changeInfo);
|
|
|
}
|
|
|
},
|
|
@@ -351,18 +367,27 @@ projectGljObject={
|
|
|
showMaterialTreeData:function () {
|
|
|
this.projectGljSpread.setActiveSheetIndex(1);
|
|
|
let sel = this.materialTreeSheet.getSelections()[0];
|
|
|
- let selNode = this.materialTree.selected;
|
|
|
let gljList = projectObj.project.projectGLJ.datas.gljList;
|
|
|
gljList = _.sortByAll(gljList, [ 'code']);
|
|
|
this.createMaterialTree(gljList);
|
|
|
this.materialTreeController.showTreeData();
|
|
|
this.materialTreeSheet.setSelection(sel.row==-1?0:sel.row,sel.col,sel.rowCount,sel.colCount);
|
|
|
- this.materialTreeController.setTreeSelected(selNode);
|
|
|
+ this.materialTreeController.setTreeSelected(this.materialTree.items[sel.row==-1?0:sel.row]);
|
|
|
},
|
|
|
+ refreshDataSheet:function () {
|
|
|
+ let me = projectGljObject;
|
|
|
+ if(me.displayType == filterType.SCHZ){//三材汇总树节点
|
|
|
+ me.showMaterialTreeData();
|
|
|
+ }else {
|
|
|
+ me.showProjectGljData();
|
|
|
+ me.showMixRatioData();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
createMaterialTree:function (gljList) {
|
|
|
let me = projectGljObject;
|
|
|
let q_decimal = getDecimal("glj.quantity");
|
|
|
- let GC = {id:'GC',name:materialType[materialTypeMap.GC],code:'GC',unit:'t',ParentID:-1,NextSiblingID:'MC'};//000001
|
|
|
+ let GC = {id:'GC',name:materialType[materialTypeMap.GC],code:'GC',unit:'t',ParentID:-1,NextSiblingID:'MC'};
|
|
|
let GJ = {id:'GJ',name:materialType[materialTypeMap.GJ],code:'GJ',unit:'t',ParentID:'GC',NextSiblingID:-1};
|
|
|
let MC = {id:'MC',name:materialType[materialTypeMap.MC],code:'MC',unit:'t',ParentID:-1,NextSiblingID:'SN'};
|
|
|
let SN = {id:'SN',name:materialType[materialTypeMap.SN],code:'SN',unit:'m3',ParentID:-1,NextSiblingID:'SZ'};
|
|
@@ -503,11 +528,7 @@ projectGljObject={
|
|
|
bgColour:'white'
|
|
|
};
|
|
|
gljOprObj.setGLJPrice(data,glj);
|
|
|
-
|
|
|
-
|
|
|
data.is_main_material = glj.is_main_material == 1?1:0;
|
|
|
-
|
|
|
-
|
|
|
//供货方式为完全甲供时设置甲供数量为总消耗量
|
|
|
if (data.supply == 2) {
|
|
|
data.supply_quantity = glj.quantity;
|
|
@@ -545,8 +566,6 @@ projectGljObject={
|
|
|
me.showMixRatioData();
|
|
|
}
|
|
|
//me.projectGljSheetData[row] = me.getSheetDataByGLJ(glj);
|
|
|
-
|
|
|
-
|
|
|
},
|
|
|
initSheet: function (sheet,setting) {
|
|
|
var me = this;
|
|
@@ -567,6 +586,7 @@ projectGljObject={
|
|
|
let dataCode = me.mixRatioSetting.header[col].dataCode;
|
|
|
let recode = me.mixRatioData[row];
|
|
|
let value = info.newValue;
|
|
|
+ let parentSheet = me.projectGljSpread.getActiveSheet();//三材汇总表和工料机汇总表
|
|
|
if (!me.checkData(col,me.mixRatioSetting,value)) {
|
|
|
alert('输入的数据类型不对,请重新输入!');
|
|
|
me.mixRatioSheet.setValue(row, col, info.oldValue);
|
|
@@ -575,16 +595,27 @@ projectGljObject={
|
|
|
value = scMathUtil.roundToString(value,getDecimal("glj.quantity"));
|
|
|
let [parentMarketPrice, parentBasePrice] = me.getCompositionSumPrice('modify', row, value);
|
|
|
let updateData ={id: recode.mix_ratio_id, field: 'mix_ratio.' + dataCode, value: value, market_price: parentMarketPrice, base_price: parentBasePrice};
|
|
|
- let prow= projectGljObject.projectGljSheet.getActiveRowIndex();//取父机械或组成物的下标
|
|
|
- let prowData = projectGljObject.projectGljSheetData[prow];
|
|
|
+ let prow = parentSheet.getActiveRowIndex();//取父机械或组成物的下标
|
|
|
+ let prowData = parentSheet.name() == 'projectGljSheet'?me.projectGljSheetData[prow]:me.materialTree.items[prow].data;
|
|
|
composition.updateConsumption(updateData,recode,prowData.id,function (sid) {
|
|
|
- me.refreshProjectGljRowByID(sid);
|
|
|
+ /* if(parentSheet.name() == 'projectGljSheet'){ 之前是单行刷新,父工料机与组成物对应的工料机分开刷,发现这样比整个刷新慢所以先整个刷新,当以后数据量大的时候再测试
|
|
|
+ me.refreshProjectGljRowByID(sid);
|
|
|
+ }*/
|
|
|
me.refreshParentData(prow,prowData.id,sid);
|
|
|
});
|
|
|
},
|
|
|
refreshParentData:function (row,pid,sid) {
|
|
|
let me = this;
|
|
|
- me.refreshProjectGljRow(row);
|
|
|
+ let sheet = me.projectGljSpread.getActiveSheet();
|
|
|
+ let parantData = null;
|
|
|
+ if(sheet.name() == 'projectGljSheet'){
|
|
|
+ me.showProjectGljData();// me.refreshProjectGljRow(row) 这里原来是分开刷新的,现在整个统一刷新,先留着
|
|
|
+ parantData = me.projectGljSheetData[row];
|
|
|
+ }else {
|
|
|
+ me.showMaterialTreeData();
|
|
|
+ parantData = me.materialTree.items[row].data;
|
|
|
+ }
|
|
|
+
|
|
|
// 更新组成物缓存
|
|
|
projectObj.project.composition.loadData();
|
|
|
//先查找使用了父项目工料机的定额工料机
|
|
@@ -601,7 +632,7 @@ projectGljObject={
|
|
|
for(let r of rations){
|
|
|
let r_node = projectObj.project.mainTree.getNodeByID(r.ID);
|
|
|
if(r_node){
|
|
|
- r_node.data.marketUnitFee = projectGljObject.projectGljSheetData[row].marketPrice;//parentMarketPrice;//这里用显示的价格
|
|
|
+ r_node.data.marketUnitFee = parantData.marketPrice;//parentMarketPrice;//这里用显示的价格
|
|
|
updateNodes.push(r_node);
|
|
|
}
|
|
|
}
|
|
@@ -620,8 +651,9 @@ projectGljObject={
|
|
|
let me = this, deleteRecode = me.mixRatioData[row];
|
|
|
let consumption = deleteRecode.consumption;
|
|
|
let [parentMarketPrice, parentBasePrice] = me.getCompositionSumPrice('delete', row);
|
|
|
- let prow= projectGljObject.projectGljSheet.getActiveRowIndex();//取父机械或组成物的下标
|
|
|
- let prowData = projectGljObject.projectGljSheetData[prow];
|
|
|
+ let parentSheet = me.projectGljSpread.getActiveSheet();//三材汇总表和工料机汇总表
|
|
|
+ let prow= parentSheet.getActiveRowIndex();//取父机械或组成物的下标
|
|
|
+ let prowData = parentSheet.name() == 'projectGljSheet'?me.projectGljSheetData[prow]:me.materialTree.items[prow].data;
|
|
|
let updateData = {id: deleteRecode.mix_ratio_id, field: 'mix_ratio.consumption' , value: 0, market_price: parentMarketPrice, base_price: parentBasePrice};
|
|
|
projectObj.project.composition.deleteComposition(updateData,deleteRecode,prowData.id,function () {
|
|
|
me.refreshParentData(prow,prowData.id);
|
|
@@ -651,25 +683,30 @@ projectGljObject={
|
|
|
onProjectGLJValueChange:function (e,info) {//me.projectGljSetting
|
|
|
let projectGLJ = projectObj.project.projectGLJ;
|
|
|
let me = projectGljObject,row = info.row, col = info.col;
|
|
|
- let dataCode = me.projectGljSetting.header[col].dataCode;
|
|
|
- let recode = me.projectGljSheetData[row];
|
|
|
+ let setting = info.sheetName =="materialTreeSheet"?me.materialSetting:me.projectGljSetting;
|
|
|
+ let dataCode = setting.header[col].dataCode;
|
|
|
+ let recode = info.sheetName =="materialTreeSheet"?me.materialTree.selected.data:me.projectGljSheetData[row];
|
|
|
let value = info.newValue;
|
|
|
- if(info.newValue == undefined ){
|
|
|
+ if(info.newValue === undefined ){
|
|
|
return;
|
|
|
}
|
|
|
- if (!me.checkData(col,me.projectGljSetting,value)) {
|
|
|
+ if (value&&!me.checkData(col,setting,value)) {
|
|
|
setTimeout(function () {//为了不与click事件冲突
|
|
|
alert('输入的数据类型不对,请重新输入!');
|
|
|
},200);
|
|
|
- me.refreshProjectGljRow(row);
|
|
|
+ info.sheetName =="materialTreeSheet"?me.materialTreeController.refreshTreeNode([me.materialTree.selected]):me.refreshProjectGljRow(row);
|
|
|
return ;
|
|
|
}
|
|
|
let callback=function (impactList) {
|
|
|
info.sheet.suspendPaint();
|
|
|
info.sheet.suspendEvent();
|
|
|
- me.refreshProjectGljRow(row);
|
|
|
- for(let g of impactList){
|
|
|
- me.refreshProjectGljRowByID(g.id,row);
|
|
|
+ if(info.sheetName =="materialTreeSheet"){
|
|
|
+ me.showMaterialTreeData();
|
|
|
+ }else {
|
|
|
+ me.refreshProjectGljRow(row);
|
|
|
+ for(let g of impactList){
|
|
|
+ me.refreshProjectGljRowByID(g.id,row);
|
|
|
+ }
|
|
|
}
|
|
|
info.sheet.resumeEvent();
|
|
|
info.sheet.resumePaint();
|
|
@@ -679,6 +716,7 @@ projectGljObject={
|
|
|
projectObj.mainController.refreshTreeNode(projectObj.project.mainTree.roots);
|
|
|
});
|
|
|
}
|
|
|
+ gljOprObj.refreshView();
|
|
|
};
|
|
|
if(dataCode=='basePrice'||dataCode=='marketPrice'){
|
|
|
value= scMathUtil.roundForObj(value,getDecimal('glj.unitPrice'));//修改市场价和修改定额价时需要重新记算很多受影响的树节点,现在改成与定字额工料机那里调相同的方法。
|
|
@@ -764,7 +802,7 @@ projectGljObject={
|
|
|
},
|
|
|
changeFileCallback:function(){
|
|
|
projectGljObject.unitPriceFileInit();
|
|
|
- projectGljObject.showProjectGljData();
|
|
|
+ projectGljObject.refreshDataSheet();
|
|
|
gljOprObj.refreshView();
|
|
|
projectObj.project.calcProgram.calcAllNodesAndSave();
|
|
|
if(socketObject.roomInfo){
|
|
@@ -790,7 +828,6 @@ projectGljObject={
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-
|
|
|
$(function () {
|
|
|
let pojGljResizeEles = {};
|
|
|
pojGljResizeEles.id = '#project-glj-main';
|
|
@@ -812,13 +849,10 @@ $(function () {
|
|
|
me.initProjectGljSpread();
|
|
|
}
|
|
|
me.unitPriceFileInit();
|
|
|
- //projectObj.project.projectGLJ.calcQuantity(); 在工程量有更新的地方调用
|
|
|
- if(me.displayType == filterType.SCHZ){//三材汇总树节点
|
|
|
- me.showMaterialTreeData();
|
|
|
- }else {
|
|
|
- me.showProjectGljData();
|
|
|
- }
|
|
|
me.initMixRatio();
|
|
|
+ //projectObj.project.projectGLJ.calcQuantity(); 在工程量有更新的地方调用
|
|
|
+ me.refreshDataSheet();
|
|
|
+
|
|
|
loadSize(pojGljResizeEles, 'height', function () {
|
|
|
me.projectGljSpread.refresh();
|
|
|
me.mixRatioSpread?me.mixRatioSpread.refresh():'';
|
|
@@ -923,8 +957,6 @@ $(function () {
|
|
|
$(".option.copy").show();
|
|
|
}
|
|
|
});
|
|
|
-
|
|
|
-
|
|
|
$("#unitFile-save-as").on('shown.bs.modal', function () {
|
|
|
// 获取当前建设项数据
|
|
|
$("#save-as-name").val(projectGljObject.usedUnitPriceInfo.name + '副本');
|
|
@@ -960,14 +992,8 @@ $(function () {
|
|
|
$("#filterType").on("click","ul li a",function(){
|
|
|
let me = projectGljObject;
|
|
|
me.displayType = filterType[this.id];
|
|
|
- if(me.displayType == filterType.SCHZ){//三材汇总树节点
|
|
|
- me.showMaterialTreeData();
|
|
|
- }else {
|
|
|
- me.showProjectGljData();
|
|
|
- me.showMixRatioData();
|
|
|
- }
|
|
|
+ me.refreshDataSheet();
|
|
|
});
|
|
|
-
|
|
|
});
|
|
|
|
|
|
|