123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- /**
- * 配合比相关
- *
- * @author CaiAoLin
- * @date 2017/7/10
- * @version
- */
- let mixRatioSpread = null;
- let machineSpread = null;
- let isDeleting = false;
- $(document).ready(function() {
- // 切换tab触发refresh
- $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
- let tagName = $(e.target).data('name');
- if(tagName=='tab_gongliaoji'&&(currentTag!=undefined||currentTag!='')){
- refreshSheetView();
- }else if(tagName){
- currentTag = $(e.target).data('name');
- refreshSheetView();
- }
- function refreshSheetView() {
- // 获取工料机当前选中的行号
- let projectGLJId = 0;
- if (currentTag === "mix-ratio") {
- if (mixRatioSpread === null) {
- mixRatioSpread = new CompositionSpread();
- mixRatioSpread.init(currentTag);
- mixRatioSpread.initRightClick(currentTag);
- mixRatioSpread.successCallback = compositionSuccess;
- }
- // 筛选数据显示(显示混凝土、砂浆、配合比)
- projectGLJSheet.filterData('unit_price.type', [GLJTypeConst.CONCRETE, GLJTypeConst.MORTAR, GLJTypeConst.MIX_RATIO,GLJTypeConst.MAIN_MATERIAL]);
- projectGLJSheet.selectRow(projectGLJSpread.firstMixRatioRow);
- projectGLJId = projectGLJSheet.getActiveDataByField('id');
- // 获取数据
- mixRatioSpread.getRatioData(projectGLJId);
- }
- if (currentTag === "machine") {
- if (machineSpread === null) {
- machineSpread = new CompositionSpread();
- machineSpread.init(currentTag);
- machineSpread.initRightClick(currentTag);
- machineSpread.successCallback = compositionSuccess;
- }
- // 筛选数据显示(显示普通机械)
- projectGLJSheet.filterData('unit_price.type', [GLJTypeConst.GENERAL_MACHINE]);
- projectGLJSheet.selectRow(projectGLJSpread.firstMachineRow);
- projectGLJId = projectGLJSheet.getActiveDataByField('id');
- // 获取数据
- machineSpread.getRatioData(projectGLJId);
- }
- if (currentTag === 'ration') {
- projectGLJSheet.filterData('unit_price.type', []);
- }
- }
- });
- });
- /**
- * 成功事件
- *
- * @param {object} info
- * @return {void}
- */
- function compositionSuccess(info) {
- // 成功则对相应的总消耗量进行设置
- let row= projectGLJSheet.sheet.getActiveRowIndex();//取父机械或组成物的下标
- let parentData = jsonData[row];
- let ratioData = _.find(parentData.ratio_data,{"id":info.id});
- let con_key = gljOprObj.getIndex(ratioData,gljKeyArray);
- let updateNodes=[];
- for(let i=0;i< jsonData.length;i++){
- let tem_key = gljOprObj.getIndex(jsonData[i],gljKeyArray);
- if(con_key == tem_key){
- //乘以父工料机的消耗量得到该组成物总消耗量的改变量
- info.change = operationWithRound(parentData.quantity,info.change,"glj.quantity","*");
- projectGLJSheet.setCellByField('quantity', info.change, true,i);
- }
- }
- //更新ratio 数据
- ratioData[info.field]=info.newValue;
- //更新组成物map里的数据
- let p_key = gljOprObj.getIndex(parentData,gljKeyArray);
- let m_list = projectObj.project.projectGLJ.datas.mixRatioMap[p_key];
- let m_ratioData = _.find(m_list,{"id":info.id});
- if(m_ratioData){
- m_ratioData[info.field]=info.newValue;
- }
- // 设置父级3个价格
- parentData.unit_price.market_price = info.parentMarketPrice;
- parentData.unit_price.base_price = info.parentBasePrice;
- //更新表格
- projectGLJSheet.setCellByField('unit_price.market_price', info.parentMarketPrice, false);
- projectGLJSheet.setCellByField('base_price', info.parentBasePrice, false);
- projectGLJSheet.setCellByField('adjust_price', projectObj.project.projectGLJ.getAdjustPrice(parentData), false);
- // 更新组成物缓存
- projectObj.project.composition.loadData();
- //选查找使用了父项目工料机的定额工料机
- let ration_gljs = _.filter(projectObj.project.ration_glj.datas,{'projectGLJID':parentData.id});
- let nodes = projectObj.project.mainTree.nodes;
- let prefix = projectObj.project.mainTree.prefix;
- for(let rg of ration_gljs){
- let node = nodes[prefix+rg.rationID];
- if(node){
- updateNodes.push(node);
- }
- }
- //或者是使用了父项目工料机的工料机类型的定额
- let rations = _.filter(projectObj.project.Ration.datas,{'type':3,'projectGLJID':parentData.id});
- for(let r of rations){
- let r_node = nodes[prefix+r.ID];
- if(r_node){
- r_node.data.marketUnitFee=info.parentMarketPrice;
- updateNodes.push(r_node);
- }
- }
- if(updateNodes.length>0){
- projectObj.project.calcProgram.calcNodesAndSave(updateNodes);
- }
- gljOprObj.refreshView();
- }
|