/** * 工料机汇总相关 * * @author CaiAoLin * @date 2017/6/15 * @version */ let projectGLJSpread = null; let projectGLJSheet = null; // websocket所需 let host = ''; let socket = null; let roomId = 0; // 判定常量 let materialIdList = []; let canNotChangeTypeId = []; let GLJTypeConst = []; // spreadjs载入数据所需 let jsonData = []; let mixRatioConnectData = []; // 单价文件相关 let usedUnitPriceInfo = {}; let otherFileData = {}; let currentTag = ''; let isChanging = false; $(document).ready(function () { $('#tab_gongliaoji').on('shown.bs.tab', function (e) { init(); }); // 单价文件切换弹框 $('#change-dj').on('shown.bs.modal', function () { // 获取当前建设项数据 let projectName = projectInfoObj.projectInfo.fullFolder !== undefined && projectInfoObj.projectInfo.fullFolder.length > 0 ? projectInfoObj.projectInfo.fullFolder[0] : ''; $("#current-project-name").text(projectName); // 获取切换单价文件相关数据 $.ajax({ url: '/glj/get-project-info', type: 'post', data: {project_id: scUrlUtil.GetQueryString('project')}, dataType: 'json', success: function(response) { if (response.err === 1) { alert('数据传输错误!'); return false; } let data = response.data; // 本项目中的单价文件 if (data.self.length > 0) { let selfFileHtml = ''; for(let tmp of data.self) { let select = usedUnitPriceInfo === tmp.id ? ' selected="selected"' : ''; selfFileHtml += ''+ tmp.name +''; } $("#self-file").html(selfFileHtml); } // 其他建设项目数据 if (data.other.length > 0) { let otherProjectHtml = ''; let otherFileHtml = ''; for(let tmp of data.other) { otherProjectHtml += ''; otherFileData[tmp.ID] = tmp.unitPriceList; if (otherFileHtml !== '') { continue; } for(let unitPrice of tmp.unitPriceList) { otherFileHtml += ''; } } $("#other-project").html(otherProjectHtml); $("#other-file").html(otherFileHtml); } } }); }); // 从其他建设项目中复制 选择建设项目 $("#other-project").change(function() { let projectId = $(this).val(); if (otherFileData[projectId] === undefined) { return false; } let otherFileHtml = ''; for(let unitPrice of otherFileData[projectId]) { otherFileHtml += ''; } $("#other-file").html(otherFileHtml); }); // 单价文件选项切换 $("input[name='change-type']").change(function() { let type = $(this).val(); type = parseInt(type); $("#change-dj .option").hide(); if (type === 0) { $(".option.select").show(); } else { $(".option.copy").show(); } }); // 单价文件切换确认 $("#change-file-confirm").click(function() { if (isChanging) { return false; } let type = $("input[name='change-type']:checked").val(); type = parseInt(type); let changeUnitPriceId = 0; if (type === 0) { // 从本项目中选择 changeUnitPriceId = $("#self-file").val(); } else { // 从其他项目中复制 changeUnitPriceId = $("#other-file").val(); } $.ajax({ url: '/glj/change-file', type: 'post', data: {project_id: scUrlUtil.GetQueryString('project'), change_id: changeUnitPriceId}, error: function() { isChanging = false; }, beforeSend: function() { isChanging = true; }, success: function(response) { isChanging = false; if (response.err === 1) { let msg = response.msg !== undefined ? response.msg : '未知错误'; alert(msg); return false; } $('#change-dj').modal("hide"); } }); }); // 是否主动更改数据 // $("#message").on('click', '#load-data', function() { // $("#notify").slideUp('fast'); // if (changeInfo.length > 0) { // for (let index in changeInfo) { // let cell = gljSheet.getCell(changeInfo[index].row, changeInfo[index].col, GC.Spread.Sheets.SheetArea.viewport); // cell.value(changeInfo[index].newValue); // } // } // changeInfo = []; // }); }); /** * 初始化数据 * * @return {void} */ function init() { // 加载工料机数据 $.ajax({ url: '/glj/getData', type: 'post', dataType: 'json', data: {project_id: scUrlUtil.GetQueryString('project')}, error: function() { // alert('数据传输错误'); }, beforeSend: function() { }, success: function(response) { if (response.err === 1) { let msg = response.msg !== undefined && response.msg !== '' ? response.msg : '读取工料机数据失败!'; alert(msg); return false; } let data = response.data; // 赋值 jsonData = data.gljList !== undefined && data.gljList.length > 0 ? data.gljList : []; mixRatioConnectData = data.mixRatioConnectData !== undefined ? data.mixRatioConnectData : mixRatioConnectData; host = data.constData.hostname !== undefined ? data.constData.hostname : ''; materialIdList = data.constData.materialIdList !== undefined ? data.constData.materialIdList : materialIdList; roomId = data.constData.roomId !== undefined ? data.constData.roomId : roomId; canNotChangeTypeId = data.constData.ownCompositionTypes !== undefined ? data.constData.ownCompositionTypes : canNotChangeTypeId; GLJTypeConst = data.constData.GLJTypeConst !== undefined ? JSON.parse(data.constData.GLJTypeConst) : GLJTypeConst; let usedTenderList = data.usedTenderList !== undefined ? data.usedTenderList : []; usedUnitPriceInfo = data.constData.usedUnitPriceInfo !== undefined ? data.constData.usedUnitPriceInfo : {}; // 存入缓存 projectObj.project.projectGLJ.datas = jsonData; spreadInit(); unitPriceFileInit(usedUnitPriceInfo.name, usedTenderList); } }); } /** * spreadjs相关初始化 * * @return {void} */ function spreadInit() { projectGLJSpread = new ProjectGLJSpread(); projectGLJSpread.successCallback = successTrigger; projectGLJSheet = projectGLJSpread.init(); // 绑定单击事件 let lastRow = 0; projectGLJSheet.bind(GC.Spread.Sheets.Events.CellClick, function (element, info) { let currentRow = info.row; if (currentRow === undefined || currentRow === lastRow) { return; } if (currentTag !== 'mix-ratio' && currentTag !== 'machine') { return; } let spread = currentTag === 'mix-ratio' ? mixRatioSpread : machineSpread; if (spread === null) { return; } let projectGLJId = projectGLJSheet.getActiveDataByField('id'); spread.getRatioData(projectGLJId); lastRow = currentRow; }); // 切换tab触发refresh $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { currentTag = $(e.target).data('name'); if (currentTag === 'ration') { projectGLJSheet.filterData('unit_price.type', []); } }); } /** * 单价文件相关初始化 * * @param {String} name * @param {Array} data * @return {void} */ function unitPriceFileInit(name, data) { $("#used-name").text(name); let usedCount = data.length <= 0 ? 1 : data.length; $("#used-count").text(usedCount); $('#pop-dj').popover({ placement:"bottom", html:true, trigger:"hover | focus", content: data.join('
') } ); } /** * 成功事件 * * @param {string} field * @param {object} info * @return {void} */ function successTrigger(field, info) { switch (field) { case 'unit_price.market_price': // 计算价格 projectGLJSpread.priceCalculate(info); // 触发websocket通知 socket.emit('dataNotify', JSON.stringify(info)); break; } }