|
@@ -4,14 +4,15 @@
|
|
|
|
|
|
let mbzm_obj={
|
|
|
spread:null,
|
|
|
+ nodeChanged:false,
|
|
|
datas:[],
|
|
|
setting:{
|
|
|
header: [
|
|
|
{headerName: "编码", headerWidth: 130, dataCode: "code", dataType: "String", formatter: "@"},
|
|
|
{headerName: "模板类别", headerWidth: 260, dataCode: "name", dataType: "String", hAlign: "left"},
|
|
|
- {headerName: "系数", headerWidth: 65, dataCode: "coe", dataType: "Number"},
|
|
|
+ {headerName: "系数", headerWidth: 65, dataCode: "coe", dataType: "Number",validator:"number"},
|
|
|
{headerName: "单位", headerWidth: 45, dataCode: "unit", dataType: "String", hAlign: "center"},
|
|
|
- {headerName: "工程量", headerWidth: 65, dataCode: "quantity", dataType: "Number",decimalField: "ration.quantity"},
|
|
|
+ {headerName: "工程量", headerWidth: 65, dataCode: "quantity", dataType: "Number",validator:"number"},
|
|
|
{headerName: "关联类别", headerWidth: 100, dataCode: "type", dataType: "String"},
|
|
|
{headerName: "清单位置", headerWidth: 200, dataCode: "position", hAlign: "left", dataType: "String",cellType:'selectButton',getText:'forPosition'},
|
|
|
],
|
|
@@ -21,16 +22,33 @@ let mbzm_obj={
|
|
|
},
|
|
|
getText:{
|
|
|
forPosition:function (item) {
|
|
|
+ let createL = $('#createLocation').val();
|
|
|
+ if(createL == 1) return mbzm_obj.getDisplayText(item.billID,item.billsLocation);
|
|
|
+ if(createL == 2) return mbzm_obj.getDisplayText(item.fxID,"");
|
|
|
return ""
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ getDisplayText:function (billID,position) {
|
|
|
+ if(billID && billID!=''){
|
|
|
+ let node = projectObj.project.mainTree.getNodeByID(billID);
|
|
|
+ if(node){
|
|
|
+ let code = node.data.code?node.data.code:"";
|
|
|
+ let name = node.data.name?node.data.name:"";
|
|
|
+ return code +" "+name;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return position;
|
|
|
+ },
|
|
|
//当点击应用的时候才保存数据
|
|
|
initSpread:function () {
|
|
|
this.spread = SheetDataHelper.createNewSpread($("#mbzmSpread")[0]);
|
|
|
sheetCommonObj.spreadDefaultStyle(this.spread);
|
|
|
this.sheet = this.spread.getSheet(0);
|
|
|
sheetCommonObj.initSheet(this.sheet, this.setting);
|
|
|
+ this.sheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onSheetValueChange);
|
|
|
+ this.spread.bind(GC.Spread.Sheets.Events.ButtonClicked, installationFeeObj.onPositionButtonClick);//共用一个位置选择器
|
|
|
+ this.sheet.name('ration_template');
|
|
|
},
|
|
|
refresh:function () {
|
|
|
let total = $('#mbzmSpread').parent().height();
|
|
@@ -38,32 +56,63 @@ let mbzm_obj={
|
|
|
$('#mbzmSpread').css('height',total- b_height);
|
|
|
this.spread?this.spread.refresh():this.initSpread();
|
|
|
},
|
|
|
+ refreshSheetData:function () {
|
|
|
+ sheetCommonObj.showData(this.sheet, this.setting,this.datas);
|
|
|
+ },
|
|
|
showMBZMData:function(node){
|
|
|
let selected = node?node:projectObj.project.mainTree.selected;
|
|
|
- let datas = [];
|
|
|
- $("#createLocation").val(1);//初始化
|
|
|
- if(selected&&selected.sourceType == "ration"){
|
|
|
- let ration = selected.data;
|
|
|
- let template = projectObj.project.ration_template.getTemplateByRationID(ration.ID);
|
|
|
- if(template) {
|
|
|
- $("#createLocation").val(template.createLocation);
|
|
|
- let pcol = _.findIndex(this.setting.header,{dataCode:"position"});
|
|
|
- this.setting.header[pcol].visible = template.createLocation == 3?false:true;
|
|
|
- datas = _.cloneDeep(template.templateList);
|
|
|
+ if(this.nodeChanged == true){//选中的行改变了才做初始化,刷新当前缓存, 在project_view 中treeSelectedChanged方法里设置
|
|
|
+ let datas = [];
|
|
|
+ $("#createLocation").val(1);//初始化
|
|
|
+ if(selected&&selected.sourceType == "ration"){
|
|
|
+ let ration = selected.data;
|
|
|
+ let template = projectObj.project.ration_template.getTemplateByRationID(ration.ID);
|
|
|
+ if(template) {
|
|
|
+ $("#createLocation").val(template.createLocation);
|
|
|
+ let pcol = _.findIndex(this.setting.header,{dataCode:"position"});
|
|
|
+ this.setting.header[pcol].visible = template.createLocation == 3?false:true;
|
|
|
+ datas = _.cloneDeep(template.templateList);
|
|
|
+ }
|
|
|
}
|
|
|
+ this.datas = datas;
|
|
|
+ this.nodeChanged = false;//这里要恢复成false 应为调用gljObj.refresh() 方法也会进到这里来,这时节点应是没有改变的
|
|
|
}
|
|
|
- this.datas = datas;
|
|
|
sheetCommonObj.showData(this.sheet, this.setting,this.datas);
|
|
|
this.sheet.setRowCount(this.datas.length);
|
|
|
+ },
|
|
|
+ onSheetValueChange:function (e,info) {
|
|
|
+ let me = mbzm_obj;
|
|
|
+ let selected = projectObj.project.mainTree.selected;
|
|
|
+ let row = info.row, col = info.col;
|
|
|
+ let dataCode = me.setting.header[col].dataCode;
|
|
|
+ let recode = me.datas[row], value = info.newValue;
|
|
|
+ if (info.newValue === undefined) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (value && !sheetCommonObj.checkData(col, me.setting, value)) {
|
|
|
+ alert('输入的数据类型不对,请重新输入!');
|
|
|
+ me.refreshSheetData();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (dataCode === 'coe') {//默认为0,可输入数值,输入数值后,后面的工程量=混凝土子目工程量*系数。
|
|
|
+ let rationQuantity = selected.data.quantity;
|
|
|
+ rationQuantity = rationQuantity?scMathUtil.roundForObj(rationQuantity, getDecimal('ration.quantity')):0;
|
|
|
+ value = scMathUtil.roundForObj(value, getDecimal('process'));
|
|
|
+ recode["quantity"] = scMathUtil.roundForObj(rationQuantity * value, getDecimal('ration.quantity'))+"";
|
|
|
+ }
|
|
|
+ if (dataCode === 'quantity') {//定额默认显示为0,可输入数值,输入数值后,则清空前面的系数列
|
|
|
+ value = scMathUtil.roundForObj(value, getDecimal('ration.quantity'))+"";
|
|
|
+ recode["coe"] = "0";
|
|
|
+ }
|
|
|
+ recode[dataCode] = value;
|
|
|
+ me.refreshSheetData();
|
|
|
}
|
|
|
};
|
|
|
|
|
|
$('#createLocation').change(function(){
|
|
|
let me = mbzm_obj;
|
|
|
let pcol = _.findIndex(me.setting.header,{dataCode:"position"});
|
|
|
- me.setting.header[pcol].visible = template.createLocation == 3?false:true;
|
|
|
-
|
|
|
- $(this).val();
|
|
|
+ me.setting.header[pcol].visible = $(this).val() == 3?false:true;
|
|
|
+ me.refreshSheetData();
|
|
|
|
|
|
- mbzm_obj.showMBZMData();
|
|
|
});
|