/** * 工料机汇总相关数据 * * @author CaiAoLin * @date 2017/9/14 * @version */ function ProjectGLJ() { this.datas = null; this.isLoading = false; } /** * 加载数据 * * @param {function} callback * @return {boolean} */ ProjectGLJ.prototype.loadData = function (callback = null) { let self = this; if (self.isLoading) { return false; } // 加载工料机数据 $.ajax({ url: '/glj/getData', type: 'post', dataType: 'json', data: {project_id: scUrlUtil.GetQueryString('project')}, error: function() { // alert('数据传输错误'); }, beforeSend: function() { self.isLoading = true; }, success: function(response) { self.isLoading = false; if (response.err === 1) { let msg = response.msg !== undefined && response.msg !== '' ? response.msg : '读取工料机数据失败!'; alert(msg); return false; } self.datas = response.data; // 回调函数 if (callback !== null) { callback(response.data); } // 存入缓存 projectObj.project.projectGLJ = self; } }); }; ProjectGLJ.prototype.loadToCache = function (data) { this.datas = data; projectObj.project.projectGLJ=this; } /** * 获取对应工料机数据 * * @param {String} code * @return {Object} */ ProjectGLJ.prototype.getDataByCode = function (code) { let result = {}; if (this.datas === null) { return result; } let gljList = this.datas.gljList; if (gljList === undefined) { return result; } for(let tmp of gljList) { if (tmp.code === code) { result = tmp; break; } } return result; }; /** * 修改工料机数据 * * @param {Number} id * @param {Object} data * @return {boolean} */ ProjectGLJ.prototype.updateData = function(id, data) { let result = false; if (this.datas === null) { return result; } let gljList = this.datas.gljList; if (gljList === undefined) { return result; } // 查找对应的index let index = -1; for(let tmp in gljList) { if (gljList[tmp].id === id) { index = tmp; break; } } if (index < 0) { return result; } // 修改数据 for(let tmpIndex in data) { if(tmpIndex.indexOf('_price') >= 0) { // 修改unit_price中的对象 this.datas.gljList[index]['unit_price'][tmpIndex] = data[tmpIndex]; } else { this.datas.gljList[index][tmpIndex] = data[tmpIndex]; } } }; /** * 加载缓存数据到spread * * @return {void} */ ProjectGLJ.prototype.loadCacheData = function() { // 加载工料机数据 let data = this.datas === null ? null : this.datas; if (data === null) { return; } jsonData = data.gljList !== undefined && data.gljList.length > 0 ? data.gljList : []; jsonData=filterProjectGLJ(jsonData); jsonData = sortProjectGLJ(jsonData); projectGLJSheet.setData(jsonData); projectGLJSpread.specialColumn(jsonData); }; ProjectGLJ.prototype.updatePriceFromRG=function(recode,updateField,newval){ if(updateField=='marketPrice'){ this.updateBasePriceFromRG(recode,"market_price",newval); } if(updateField=='basePrice'){ this.updateBasePriceFromRG(recode,"base_price",newval); } }; ProjectGLJ.prototype.updateBasePriceFromRG=function(recode,updateField,newval){ let me = this; let projectGljs = this.datas.gljList; let glj = _.find(projectGljs,{'id':recode.projectGLJID}); if(glj){ let data = {id:glj.unit_price.id,field:updateField,newval:newval}; let callback =function (data) { if(updateField=='base_price'){ glj.unit_price.base_price=newval; me.setAdjustPrice(glj); }else { glj.unit_price.market_price=newval; } //更新项目工料机价格 me.refreshProjectGLJPrice(data); me.refreshRationGLJPrice(glj); gljOprObj.showRationGLJSheetData(); me.refreshTreeNodePriceIfNeed(glj); $.bootstrapLoading.end(); } $.bootstrapLoading.start(); CommonAjax.post("/glj/updatePrice",data,callback,function (err) { $.bootstrapLoading.end(); }); }else { gljOprObj.showRationGLJSheetData(); } } ProjectGLJ.prototype.refreshTreeNodePriceIfNeed = function (data) { if((data.unit_price.type = gljType.MAIN_MATERIAL||data.type==gljType.EQUIPMENT)&&projectInfoObj.projectInfo.property.displaySetting.disPlayMainMaterial==true){ var nodes = _.filter(projectObj.project.mainTree.items,function (tem) { if(tem.sourceType==ModuleNames.ration_glj&&tem.data.projectGLJID ==data.id){ tem.data.marketUnitFee = data.unit_price.market_price; return true; } }) projectObj.mainController.refreshTreeNode(nodes); } } ProjectGLJ.prototype.refreshRationGLJPrice=function (glj) { for(let ration_glj of gljOprObj.sheetData){ if(ration_glj.projectGLJID ==glj.id){ ration_glj.basePrice=glj.unit_price.base_price; ration_glj.marketPrice=glj.unit_price.market_price; ration_glj.adjustPrice=this.getAdjustPrice(glj); } } } ProjectGLJ.prototype.refreshProjectGLJPrice=function(data){ let projectGljs = this.datas.gljList; let indexList = ['code','name','specs','unit','type']; for(let d of data){ if(d){ let condition = {}; for(let index of indexList){ if(d[index]!=null&&d[index]!=undefined&&d[index]!=''){ condition[index]=d[index] } } let glj = _.find(projectGljs,condition); if(glj){ glj.unit_price.base_price = d.base_price; glj.unit_price.market_price = d.market_price; this.setAdjustPrice(glj); this.refreshRationGLJPrice(glj); this.refreshTreeNodePriceIfNeed(glj); } } } } ProjectGLJ.prototype.setAdjustPrice=function(glj){ switch (glj.unit_price.type + '') { // 人工: 调整基价=基价单价*调整系数 case GLJTypeConst.LABOUR: case GLJTypeConst.MACHINE_LABOUR: glj.adjust_price = this.getAdjustPrice(glj); break; // 机械类型的算法 case GLJTypeConst.MACHINE: console.log('机械'); break; // 材料、主材、设备 default: glj.adjust_price = glj.unit_price.base_price; } } ProjectGLJ.prototype.getAdjustPrice = function (glj) { GLJTypeConst = this.datas.constData.GLJTypeConst !== undefined ? JSON.parse(this.datas.constData.GLJTypeConst) : GLJTypeConst; if(glj.unit_price.type==GLJTypeConst.LABOUR||glj.unit_price.type==GLJTypeConst.MACHINE_LABOUR){ let labour = projectObj.project.calcProgram.compiledLabourCoes[glj.adjCoe]; //let labour=1; let coe = labour&&labour.coe?labour.coe:1; let decimal = getDecimal("glj.unitPrice"); return scMathUtil.roundTo(parseFloat(coe*glj.unit_price.base_price),-decimal); }else { return glj.unit_price.base_price } }