|
@@ -15,12 +15,9 @@ var gljOprObj = {
|
|
|
detailSheet:null,
|
|
|
detailData:[],
|
|
|
GLJSelection:[],
|
|
|
+ selectedGLJClass:null,
|
|
|
parentNodeIds:{},
|
|
|
activeTab:'#linkGLJ',
|
|
|
- decimalSetting:{
|
|
|
- marketPrice:2,
|
|
|
- customQuantity:3
|
|
|
- },
|
|
|
setting: {
|
|
|
header: [
|
|
|
{headerName: "编码", headerWidth: 100, dataCode: "code", dataType: "String", formatter: "@"},
|
|
@@ -28,18 +25,19 @@ var gljOprObj = {
|
|
|
{headerName: "规格型号", headerWidth: 120, dataCode: "specs", dataType: "String", hAlign: "left"},
|
|
|
{headerName: "单位", headerWidth: 45, dataCode: "unit", dataType: "String", hAlign: "center"},
|
|
|
{headerName: "类型", headerWidth: 45, dataCode: "shortName", dataType: "String", hAlign: "center"},
|
|
|
- {headerName: "定额消耗量", headerWidth: 80, dataCode: "rationItemQuantity", dataType: "Number", hAlign: "right",formatter:"0.000",tofix:3}, // dataType: "Number", formatter: "0.00"
|
|
|
- {headerName: "自定义消耗量", headerWidth: 80, dataCode: "customQuantity", dataType: "Number", hAlign: "right",formatter:"0.000",tofix:3},
|
|
|
- {headerName: "消耗量", headerWidth: 80, dataCode: "quantity", dataType: "Number", hAlign: "right",formatter:"0.000",tofix:3},
|
|
|
- {headerName: "基价单价", headerWidth: 80, dataCode: "basePrice", dataType: "Number", hAlign: "right",formatter:"0.00"},
|
|
|
- {headerName: "调整基价", headerWidth: 80, dataCode: "adjustPrice", dataType: "Number", hAlign: "right",formatter:"0.00"},
|
|
|
- {headerName: "市场单价", headerWidth: 80, dataCode: "marketPrice", dataType: "Number", hAlign: "right",formatter:"0.00"},
|
|
|
+ {headerName: "定额消耗", headerWidth: 80, dataCode: "rationItemQuantity", dataType: "Number", hAlign: "right",decimalField:"glj.quantity"}, // dataType: "Number", formatter: "0.00"
|
|
|
+ {headerName: "自定消耗", headerWidth: 80, dataCode: "customQuantity", dataType: "Number", hAlign: "right",decimalField:"glj.quantity"},
|
|
|
+ {headerName: "消耗量", headerWidth: 80, dataCode: "quantity", dataType: "Number", hAlign: "right",decimalField:"glj.quantity"},
|
|
|
+ {headerName: "总消耗量", headerWidth: 80, dataCode: "totalQuantity", dataType: "Number", hAlign: "right",decimalField:"glj.quantity"},
|
|
|
+ {headerName: "定额价", headerWidth: 80, dataCode: "basePrice", dataType: "Number", hAlign: "right",decimalField:"glj.unitPrice"},
|
|
|
+ {headerName: "调整价", headerWidth: 80, dataCode: "adjustPrice", dataType: "Number", hAlign: "right",decimalField:"glj.unitPrice"},
|
|
|
+ {headerName: "市场价", headerWidth: 80, dataCode: "marketPrice", dataType: "Number", hAlign: "right",decimalField:"glj.unitPrice"},
|
|
|
{headerName: "是否暂估", headerWidth: 65, dataCode: "isEstimate", dataType: "String", hAlign: "center",vAlign:"center",cellType:"checkBox"}
|
|
|
],
|
|
|
view: {
|
|
|
comboBox: [{row: -1, col: 12, rowCount: -1, colCount: 1}],
|
|
|
lockedCells: [{row: -1, col: 3, rowCount: -1, colCount: 1}],
|
|
|
- lockColumns:[0,4,5,7,8,9,11]
|
|
|
+ lockColumns:[0,4,5,7,8,9,10,12]
|
|
|
},
|
|
|
notEditedType: ['砼','桨','配比','机']
|
|
|
},
|
|
@@ -56,8 +54,8 @@ var gljOprObj = {
|
|
|
assSetting:{
|
|
|
header:[
|
|
|
{headerName: "调整名称", headerWidth: 100, dataCode: "name", dataType: "String"},
|
|
|
- {headerName: "定额值", headerWidth: 120, dataCode: "stdValue", dataType: "String"},
|
|
|
- {headerName: "实际值", headerWidth: 120, dataCode: "actualValue", dataType: "String"}
|
|
|
+ {headerName: "定额值", headerWidth: 120, dataCode: "stdValue", hAlign: "right", dataType: "String"},
|
|
|
+ {headerName: "实际值", headerWidth: 120, dataCode: "actualValue", hAlign: "right", dataType: "String"}
|
|
|
],
|
|
|
view:{
|
|
|
lockColumns:[0,1]
|
|
@@ -67,7 +65,7 @@ var gljOprObj = {
|
|
|
header:[
|
|
|
{headerName: "名称", headerWidth: 100, dataCode: "name", dataType: "String"},
|
|
|
{headerName: "计算式", headerWidth: 120, dataCode: "regex", dataType: "String"},
|
|
|
- {headerName: "结果(C)", headerWidth: 120, dataCode: "result", dataType: "Number",formatter:"0.0000",tofix:4},
|
|
|
+ {headerName: "结果(C)", headerWidth: 120, dataCode: "result", dataType: "Number",decimalField:"quantity_detail"},
|
|
|
{headerName: "累加", headerWidth: 120, dataCode: "isSummation", dataType: "String",cellType:"checkBox"}
|
|
|
],
|
|
|
view:{
|
|
@@ -107,12 +105,23 @@ var gljOprObj = {
|
|
|
},
|
|
|
callback:{
|
|
|
onClick: function(event,treeId,treeNode) {
|
|
|
- let me = gljOprObj, gljTypeId = treeNode.ID;
|
|
|
- if(me.gljCurTypeId !== treeNode.ID){
|
|
|
- me.gljCurTypeId = treeNode.ID;
|
|
|
- me.filterLibGLJSheetData();
|
|
|
- me.showLibGLJSheetData();
|
|
|
+ if(treeId=='gljTree'){
|
|
|
+ let me = gljOprObj, gljTypeId = treeNode.ID;
|
|
|
+ if(me.gljCurTypeId !== treeNode.ID){
|
|
|
+ me.gljCurTypeId = treeNode.ID;
|
|
|
+ me.filterLibGLJSheetData();
|
|
|
+ me.showLibGLJSheetData();
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ if(treeNode.isParent){
|
|
|
+ $('#class_selected_conf').attr("disabled","disabled");
|
|
|
+ $('#selected_class').val("");
|
|
|
+ }else {
|
|
|
+ $('#class_selected_conf').removeAttr("disabled");
|
|
|
+ $('#selected_class').val(treeNode.ID);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
},
|
|
@@ -161,8 +170,10 @@ var gljOprObj = {
|
|
|
var me = this;
|
|
|
me.detailSheet = sheet;
|
|
|
sheetCommonObj.initSheet(me.detailSheet, me.detailSetting, 30);
|
|
|
+ // me.detailSheet.selectionUnit(0);//0 cell,1 row,2 col;
|
|
|
sheet.name('quantity_detail');
|
|
|
me.bindSheetEvent(sheet);
|
|
|
+
|
|
|
},
|
|
|
showCoeData:function(sheet,setting,datas){
|
|
|
sheet.floatingObjects.remove("customerCoe");
|
|
@@ -220,12 +231,18 @@ var gljOprObj = {
|
|
|
if(args.row==me.detailData.length&&args.editingText==null){
|
|
|
return;
|
|
|
}
|
|
|
- if(args.row==me.detailData.length){
|
|
|
- projectObj.project.quantity_detail.saveQuantityDetail(args,me.detailSetting.header[args.col].dataCode);
|
|
|
- }
|
|
|
- if(args.row<me.detailData.length){
|
|
|
- projectObj.project.quantity_detail.updateQuantityDetail(args,me.detailSetting.header[args.col].dataCode,me.detailData[args.row]);
|
|
|
- }
|
|
|
+ var selected = projectObj.project.mainTree.selected;//因为使用了延时方法,所以要先取得选中行;
|
|
|
+ var detailList = me.detailData;
|
|
|
+ args.editingText = args.editingText.replace(/(/g,"(");//替换中文左右括号;
|
|
|
+ args.editingText = args.editingText.replace(/)/g,")");
|
|
|
+ setTimeout(function () {//这里须用延时执行的办法,不然的弹窗确认窗口会和spreadjs 的事件有冲突,造成定额工料机数据不会根据树结点更新的问题
|
|
|
+ if(args.row==detailList.length){
|
|
|
+ projectObj.project.quantity_detail.saveQuantityDetail(args,me.detailSetting.header[args.col].dataCode,selected);
|
|
|
+ }
|
|
|
+ if(args.row<detailList.length){
|
|
|
+ projectObj.project.quantity_detail.updateQuantityDetail(args,me.detailSetting.header[args.col].dataCode,detailList[args.row],selected);
|
|
|
+ }
|
|
|
+ },100);
|
|
|
|
|
|
},
|
|
|
onEditGLJSheet:function(args){
|
|
@@ -339,7 +356,7 @@ var gljOprObj = {
|
|
|
$('#manual').val(data.coes[1].amount);
|
|
|
$('#material').val(data.coes[2].amount);
|
|
|
$('#manchine').val(data.coes[3].amount);
|
|
|
- $('#main').val(data.coes[4].amount);
|
|
|
+ $('#mainM').val(data.coes[4].amount);
|
|
|
$('#equipment').val(data.coes[5].amount);
|
|
|
},
|
|
|
onInputChange(id,name){
|
|
@@ -355,7 +372,7 @@ var gljOprObj = {
|
|
|
$('#manual').val(newValue);
|
|
|
$('#material').val(newValue);
|
|
|
$('#manchine').val(newValue);
|
|
|
- $('#main').val(newValue);
|
|
|
+ $('#mainM').val(newValue);
|
|
|
$('#equipment').val(newValue);
|
|
|
}else {
|
|
|
$('#'+id).val(newValue);
|
|
@@ -375,7 +392,7 @@ var gljOprObj = {
|
|
|
var manual=$('#manual').val();
|
|
|
var material = $('#material').val();
|
|
|
var manchine= $('#manchine').val();
|
|
|
- var main = $('#main').val();
|
|
|
+ var mainM = $('#mainM').val();
|
|
|
var equipment=$('#equipment').val();
|
|
|
if(coe_ration!=data.coes[0].amount){
|
|
|
result.isNeed =true;
|
|
@@ -393,9 +410,9 @@ var gljOprObj = {
|
|
|
result.isNeed =true;
|
|
|
data.coes[3].amount =manchine;
|
|
|
}
|
|
|
- if(main!=data.coes[4].amount){
|
|
|
+ if(mainM!=data.coes[4].amount){
|
|
|
result.isNeed =true;
|
|
|
- data.coes[4].amount =main;
|
|
|
+ data.coes[4].amount =mainM;
|
|
|
}
|
|
|
if(equipment!=data.coes[5].amount){
|
|
|
result.isNeed =true;
|
|
@@ -418,6 +435,11 @@ var gljOprObj = {
|
|
|
var me = gljOprObj;
|
|
|
var header = me.setting.header;
|
|
|
var disable = null;
|
|
|
+ if(me.sheetData[args.row]!=undefined){
|
|
|
+ if(me.sheetData[args.row].isMixRatio){
|
|
|
+ disable = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
if(header[args.col]&&header[args.col].dataCode=='marketPrice'){
|
|
|
var type = me.sheetData[args.row].shortName;
|
|
|
var index= _.indexOf(me.setting.notEditedType,type);
|
|
@@ -481,7 +503,7 @@ var gljOprObj = {
|
|
|
newString += this.getOneRow('人工',1,'manual');
|
|
|
newString += this.getOneRow('材料',2,'material');
|
|
|
newString += this.getOneRow('机械',3,'manchine');
|
|
|
- newString += this.getOneRow('主材',4,'main');
|
|
|
+ newString += this.getOneRow('主材',4,'mainM');
|
|
|
newString += this.getOneRow('设备',5,'equipment');
|
|
|
newString +="</table></form>";
|
|
|
|
|
@@ -534,22 +556,32 @@ var gljOprObj = {
|
|
|
}
|
|
|
},
|
|
|
showRationGLJSheetData:function (init) {
|
|
|
- if(init){
|
|
|
- this.sheet.getRange(0,-1,this.sheet.getRowCount(),-1).visible(true);
|
|
|
- this.sheetData=_.sortBy(this.sheetData,'type');
|
|
|
- this.addMixRatioToShow();
|
|
|
- this.initRationTree();
|
|
|
- }
|
|
|
+ this.sheet.setRowCount(0);
|
|
|
+ //console.log(+new Date())
|
|
|
+ //this.sheet.getRange(0,-1,this.sheet.getRowCount(),-1).visible(true); //这个方法导致加载缓慢
|
|
|
+ this.sheetData=_.sortBy(this.sheetData,'type');
|
|
|
+ this.sumQuantity();//计算总消耗量
|
|
|
+ this.addMixRatioToShow();//显示组成物信息
|
|
|
+ this.initRationTree(init);
|
|
|
sheetCommonObj.showData(this.sheet,this.setting,this.sheetData);
|
|
|
|
|
|
},
|
|
|
- initRationTree:function () {
|
|
|
+ initRationTree:function (init) {
|
|
|
this.sheet.getRange(-1, 0, -1, 1).cellType(this.getTreeNodeCellType(this.sheetData));
|
|
|
for(var i =0;i<this.sheetData.length;i++){
|
|
|
if(this.sheetData[i].hasOwnProperty('subList')){
|
|
|
- this.sheet.setTag(i,0,true);
|
|
|
- this.sheet.getRange(i+1, -1, this.sheetData[i].subList.length, -1).visible(false);
|
|
|
- this.sheet.getRange(i+1, -1, this.sheetData[i].subList.length, -1).locked(true);
|
|
|
+ var collapsed = false;
|
|
|
+ if(init){
|
|
|
+ this.sheetData[i].collapsed=true;
|
|
|
+ collapsed = true;
|
|
|
+ }else {
|
|
|
+ collapsed = this.sheetData[i].collapsed==undefined?true:this.sheetData[i].collapsed;
|
|
|
+ }
|
|
|
+ if(collapsed==true){
|
|
|
+ this.sheet.getRange(i+1, -1, this.sheetData[i].subList.length, -1).visible(false);
|
|
|
+ }
|
|
|
+ //this.sheet.getRange(i+1, -1, this.sheetData[i].subList.length, -1).visible(!collapsed);// this.sheet.getRange(i+1, -1, this.sheetData[i].subList.length, -1).locked(true);
|
|
|
+ //这个方法导致加载缓慢
|
|
|
}
|
|
|
}
|
|
|
},
|
|
@@ -564,6 +596,25 @@ var gljOprObj = {
|
|
|
this.sheetData=this.combineWithProjectGlj(gljList);
|
|
|
this.showRationGLJSheetData(true);
|
|
|
},
|
|
|
+ sumQuantity:function (node) {
|
|
|
+ if(this.sheetData.length>0){
|
|
|
+ node=node?node:projectObj.project.mainTree.selected;
|
|
|
+ let ration = node.data;
|
|
|
+ let quantity = ration.quantity;
|
|
|
+ quantity = (quantity==0||quantity==undefined||quantity==null||quantity=="")?1:quantity;
|
|
|
+ for(let glj of this.sheetData){
|
|
|
+ if(glj.isMixRatio==true){//如果是用于显示的组成物,则不用计算,跳过
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ glj.totalQuantity = scMathUtil.roundToString(quantity*glj.quantity,getDecimal("glj.quantity"));
|
|
|
+ if(glj.hasOwnProperty('subList')){//需要计算glj下挂的组成物的总消耗量
|
|
|
+ for(let subG of glj.subList){
|
|
|
+ subG.totalQuantity = scMathUtil.roundToString(subG.rationItemQuantity*glj.totalQuantity,getDecimal("glj.quantity"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
addMixRatioToShow:function () {
|
|
|
var newList=[];
|
|
|
_.remove(this.sheetData,{'isMixRatio':true});
|
|
@@ -585,9 +636,10 @@ var gljOprObj = {
|
|
|
if(glj){
|
|
|
ration_gljs[i].basePrice=glj.unit_price.base_price;
|
|
|
ration_gljs[i].marketPrice=glj.unit_price.market_price;
|
|
|
- ration_gljs[i].adjustPrice=glj.adjust_price;
|
|
|
+ //ration_gljs[i].adjustPrice=glj.adjust_price;
|
|
|
ration_gljs[i].isEstimate=glj.is_evaluate;
|
|
|
ration_gljs[i].isAdd=glj.unit_price.is_add;
|
|
|
+ ration_gljs[i].adjustPrice=projectObj.project.projectGLJ.getAdjustPrice(glj);
|
|
|
var connect_index = this.getIndex(glj,['code','name','specs','unit','type'])
|
|
|
if(mixRatioMap.hasOwnProperty(connect_index)){
|
|
|
var mixRatios = this.getMixRationShowDatas(mixRatioMap[connect_index],projectGljs);
|
|
@@ -626,7 +678,8 @@ var gljOprObj = {
|
|
|
adjustPrice:pg.adjust_price,
|
|
|
isEstimate:pg.is_evaluate,
|
|
|
isMixRatio:true,
|
|
|
- isAdd:pg.unit_price.is_add
|
|
|
+ isAdd:pg.unit_price.is_add,
|
|
|
+ GLJID:pg.glj_id
|
|
|
}
|
|
|
temRationGLJs.push(tem);
|
|
|
}
|
|
@@ -650,6 +703,7 @@ var gljOprObj = {
|
|
|
},
|
|
|
showQuantityDetailData:function (node) {
|
|
|
var details=[];
|
|
|
+ node =node?node:projectObj.project.mainTree.selected;
|
|
|
var quantity_detail =projectObj.project.quantity_detail;
|
|
|
if(node.sourceType==ModuleNames.ration){
|
|
|
details=_.filter(quantity_detail.datas,{'rationID':node.data.ID});
|
|
@@ -696,10 +750,15 @@ var gljOprObj = {
|
|
|
var recode = me.sheetData[args.row];
|
|
|
var newval;
|
|
|
if(updateField=='marketPrice'||updateField=='customQuantity'||updateField=='basePrice'){
|
|
|
- newval = number_util.checkNumberValue(args.editingText,this.decimalSetting[updateField]);
|
|
|
- if(!newval){
|
|
|
- me.sheet.getCell(args.row, args.col).value(recode[updateField]);
|
|
|
- return;
|
|
|
+ if(args.editingText==null){
|
|
|
+ newval="";
|
|
|
+ }else {
|
|
|
+ var decimal = updateField=='customQuantity'?getDecimal("glj.quantity"):getDecimal("glj.unitPrice");
|
|
|
+ newval = number_util.checkNumberValue(args.editingText,decimal);
|
|
|
+ if(newval==null){
|
|
|
+ me.sheet.getCell(args.row, args.col).value(recode[updateField]);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
}else {
|
|
|
if(updateField=='name'||updateField=='unit'){
|
|
@@ -711,6 +770,9 @@ var gljOprObj = {
|
|
|
}
|
|
|
newval=args.editingText==null?"":args.editingText;
|
|
|
}
|
|
|
+ if(newval === recode[updateField]){//如果值完全相等,则不需要更新
|
|
|
+ return
|
|
|
+ }
|
|
|
if(updateField=='marketPrice'||updateField=='basePrice'){
|
|
|
projectObj.project.projectGLJ.updatePriceFromRG(recode,updateField,newval);
|
|
|
} else {
|
|
@@ -886,15 +948,17 @@ var gljOprObj = {
|
|
|
return _.find(gljOprObj.sheetData,{'code':n})?false:true;
|
|
|
})
|
|
|
if(gljOprObj.GLJSelection.length>0&&selected&&selected.sourceType==ModuleNames.ration){
|
|
|
+ $("#glj_tree_div").modal('hide');
|
|
|
project.ration_glj.addGLJByLib(gljOprObj.GLJSelection,selected.data,function (result) {
|
|
|
if(result){
|
|
|
selected.data.adjustState=result.adjustState;
|
|
|
- project.ration_glj.datas = project.ration_glj.datas.concat(result.newRecodes);
|
|
|
+ //project.ration_glj.datas = project.ration_glj.datas.concat(result.newRecodes);//显示和缓存统一,这样的话就不用更新两个位置了
|
|
|
+ project.ration_glj.datas = project.ration_glj.datas.concat(result.showData);
|
|
|
gljOprObj.sheetData = gljOprObj.sheetData.concat(result.showData)
|
|
|
gljOprObj.showRationGLJSheetData();
|
|
|
project.projectGLJ.loadData();
|
|
|
projectObj.mainController.refreshTreeNode([selected]);
|
|
|
- $("#glj_tree_div").modal('hide');
|
|
|
+ $.bootstrapLoading.end();
|
|
|
}
|
|
|
});//doc.rationID=selected.data.ID;
|
|
|
}else {
|
|
@@ -908,6 +972,7 @@ var gljOprObj = {
|
|
|
var project= projectObj.project;
|
|
|
var selectCode=gljOprObj.GLJSelection[0];
|
|
|
var selected = projectObj.project.mainTree.selected;
|
|
|
+ $("#glj_tree_div").modal('hide');
|
|
|
project.ration_glj.replaceGLJ(selectCode,oldData,function (result) {
|
|
|
if(result){
|
|
|
//result.adjustState;
|
|
@@ -919,7 +984,7 @@ var gljOprObj = {
|
|
|
selected.data.adjustState=result.adjustState;
|
|
|
projectObj.mainController.refreshTreeNode([selected]);
|
|
|
}
|
|
|
- $("#glj_tree_div").modal('hide');
|
|
|
+ $.bootstrapLoading.end();
|
|
|
})
|
|
|
},
|
|
|
doMReplaceGLJ:function () {
|
|
@@ -927,18 +992,21 @@ var gljOprObj = {
|
|
|
var oldData=me.sheetData[gljContextMenu.selectedRow];
|
|
|
var project= projectObj.project;
|
|
|
var selectCode=me.GLJSelection[0];
|
|
|
+ $("#glj_tree_div").modal('hide');
|
|
|
project.ration_glj.mReplaceGLJ(selectCode,oldData,function (result) {
|
|
|
var data=result.data;
|
|
|
var stateList= result.stateList;
|
|
|
+ var n_index = me.getIndex(data.query,['code','name','specs','unit','type']);
|
|
|
_.forEach(project.ration_glj.datas,function (t) {
|
|
|
- if(t.code==data.query.code&&t.name==data.query.name){
|
|
|
+ var t_index =me.getIndex(t,['code','name','specs','unit','type']);
|
|
|
+ if(n_index==t_index){
|
|
|
me.updateProperty(t,data.doc);
|
|
|
}
|
|
|
})
|
|
|
me.showRationGLJSheetData();
|
|
|
project.projectGLJ.loadData();
|
|
|
me.refreshStateAfterMreplace(stateList);
|
|
|
- $("#glj_tree_div").modal('hide');
|
|
|
+ $.bootstrapLoading.end();
|
|
|
})
|
|
|
},
|
|
|
updateProperty:function (obj,doc) {
|
|
@@ -962,6 +1030,33 @@ var gljOprObj = {
|
|
|
refreshView:function () {
|
|
|
this.showRationGLJData();
|
|
|
},
|
|
|
+ //
|
|
|
+ refreshTreeNode:function (obj) {
|
|
|
+ if(!obj){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var objectArray =[];
|
|
|
+ var nodes =[];
|
|
|
+ if(obj instanceof Array){
|
|
|
+ objectArray.concat(obj);
|
|
|
+ }else {
|
|
|
+ objectArray.push(obj);
|
|
|
+ }
|
|
|
+ for(let o of objectArray ){
|
|
|
+ var node = _.find(projectObj.project.mainTree.items,function (n) {
|
|
|
+ return n.sourceType==o.type&&n.data.ID==o.ID;
|
|
|
+ })
|
|
|
+ if(node){
|
|
|
+ for (var k in o.data){
|
|
|
+ node.data[k] = o.data[k];
|
|
|
+ }
|
|
|
+ nodes.push(node);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ projectObj.mainController.refreshTreeNode(nodes);
|
|
|
+
|
|
|
+ },
|
|
|
getTreeNodeCellType:function (data) {
|
|
|
var ns = GC.Spread.Sheets;
|
|
|
var rectW = 10;
|
|
@@ -1030,7 +1125,7 @@ var gljOprObj = {
|
|
|
var recode = data[options.row];
|
|
|
if(recode&&recode.hasOwnProperty('subList')){
|
|
|
drowRect(ctx,x,y,w,h);
|
|
|
- var collapsed = options.sheet.getTag(options.row,options.col);
|
|
|
+ var collapsed = recode.collapsed==undefined?true:recode.collapsed;//options.sheet.getTag(options.row,options.col);
|
|
|
drowSymbol(ctx,x,y,w,h,collapsed);
|
|
|
}else if(recode&&recode.isMixRatio){
|
|
|
offset= drowSubItem(ctx,x,y,w,h,offset,data[options.row+1]);
|
|
@@ -1056,9 +1151,10 @@ var gljOprObj = {
|
|
|
if(recode&&recode.hasOwnProperty('subList')){
|
|
|
var hoffset= hitinfo.cellRect.x+3;
|
|
|
if (hitinfo.x > hoffset && hitinfo.x < hoffset + 10){
|
|
|
- var collapsed = hitinfo.sheet.getTag(hitinfo.row,hitinfo.col,hitinfo.sheetArea);
|
|
|
- collapsed = !collapsed;
|
|
|
- hitinfo.sheet.setTag(hitinfo.row,hitinfo.col,collapsed);
|
|
|
+ var collapsed = recode.collapsed==undefined?true:recode.collapsed;
|
|
|
+ collapsed = !collapsed
|
|
|
+ recode.collapsed=collapsed;
|
|
|
+ //hitinfo.sheet.setTag(hitinfo.row,hitinfo.col,collapsed);
|
|
|
hitinfo.sheet.getRange(hitinfo.row+1, -1, recode.subList.length, -1).visible(!collapsed);
|
|
|
hitinfo.sheet.invalidateLayout();
|
|
|
hitinfo.sheet.repaint();
|
|
@@ -1119,7 +1215,84 @@ $(function(){
|
|
|
gljOprObj.doMReplaceGLJ();
|
|
|
}
|
|
|
})
|
|
|
-})
|
|
|
|
|
|
+ $('#class_selected_conf').click(function () {
|
|
|
+ var gljClass = $('#selected_class').val();
|
|
|
+ var glj = gljOprObj.selectedGLJClass;
|
|
|
+ if(glj&&gljClass&&gljClass!=""){
|
|
|
+ //保存到我的工料机库
|
|
|
+ /*1 检查是否有组成物
|
|
|
+ * 2 如果有,则检查组成物中是否有新增的记录,如果有,查看是否已经保存了,没有的话,要先添加组成物到补充工料机库
|
|
|
+ * 3 保存
|
|
|
+
|
|
|
+ * */
|
|
|
+ var newItem={
|
|
|
+ code:glj.code,
|
|
|
+ name:glj.name,
|
|
|
+ specs:glj.specs,
|
|
|
+ unit:glj.unit,
|
|
|
+ basePrice:glj.basePrice,
|
|
|
+ gljType:glj.type,
|
|
|
+ shortName:glj.shortName,
|
|
|
+ component:[],
|
|
|
+ gljClass:gljClass
|
|
|
+ };
|
|
|
+ if(glj.hasOwnProperty("subList")&&glj.subList.length>0){//有组成物,检查组成物信息,目前组成物不允许修改,所以暂时不用考虑组成物是新增的情况
|
|
|
+ for(var i=0;i<glj.subList.length;i++ ){
|
|
|
+ let tem={
|
|
|
+ ID:glj.subList[i].GLJID,
|
|
|
+ consumeAmt:glj.rationItemQuantity,
|
|
|
+ isStd:true
|
|
|
+ }
|
|
|
+ newItem.component.push(tem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var data = getcmpUpdateData([newItem]);
|
|
|
+ $.bootstrapLoading.start();
|
|
|
+ var callback = function (data) {
|
|
|
+ $("#glj_class_div").modal('hide');
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ }
|
|
|
+ CommonAjax.post("complementartGlj/api/mixUpdateGljItems", data, callback, function () {
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ $('#glj_class_div').on('hidden.bs.modal', function (e){
|
|
|
+ gljOprObj.selectedGLJClass=null;
|
|
|
+ $('#class_selected_conf').attr("disabled","disabled");
|
|
|
+ $('#selected_class').val("");
|
|
|
+ })
|
|
|
|
|
|
+ function getcmpUpdateData(items) {
|
|
|
+ var data ={
|
|
|
+ "updateItems": [],
|
|
|
+ "removeIds": []
|
|
|
+ }
|
|
|
+ data.addItems = items;
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+function getDecimal(fieldID,node) {
|
|
|
+ if(node){
|
|
|
+ return decimalObj.decimal(fieldID,node);
|
|
|
+ }else if(fieldID.indexOf(".")!=-1){
|
|
|
+ var keyArray = fieldID.split(".");
|
|
|
+ return decimalObj[keyArray[0]][keyArray[1]];
|
|
|
+ }else {
|
|
|
+ return decimalObj.decimal(fieldID);
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
+function getFormatter(decimal) {
|
|
|
+ var pre = "0.";
|
|
|
+ if(decimal<=0){
|
|
|
+ return "0";
|
|
|
+ }
|
|
|
+ for(i=0;i<decimal;i++){
|
|
|
+ pre += "0"
|
|
|
+ }
|
|
|
+ return pre;
|
|
|
+}
|