/** * Created by zhang on 2018/11/26. */ 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",validator:"number"}, {headerName: "单位", headerWidth: 45, dataCode: "unit", dataType: "String", hAlign: "center"}, {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'}, ], view: { lockColumns:["code","name","unit","type","fxID"], rowHeaderWidth:25 }, 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(); let b_height = $('#mbzmSpread').prev('.col-12').height(); $('#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; 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() 方法也会进到这里来,这时节点应是没有改变的 } 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 = $(this).val() == 3?false:true; me.refreshSheetData(); });