/** * 工料机汇总相关 * * @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('show.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); } } }); }); // 单价文件另存为弹框 $("#file-save-as-dialog").on('shown.bs.modal', function() { // 获取当前建设项数据 $("#save-as-name").val(usedUnitPriceInfo.name + '(复件)'); }); // 单价文件另存为操作 $("#save-as-confirm").click(function() { let name = $("#save-as-name").val(); if (name === '') { $("#save-as-tips").text('请填写单价文件名称').show(); return false; } if (isChanging) { return false; } $.ajax({ url: '/glj/save-as', type: 'post', data: {name: name, project_id: scUrlUtil.GetQueryString('project')}, dataType: 'json', error: function() { isChanging = false; }, beforeSend: function() { isChanging = true; }, success: function(response) { isChanging = false; if (response.err === 1) { let msg = response.msg !== undefined && response.msg !== '' ? response.msg : '另存为失败!'; $("#save-as-tips").text(msg).show(); return false; } $("#file-save-as-dialog").modal("hide"); } }); }); // 从其他建设项目中复制 选择建设项目 $("#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() { $("#message").html('正在加载...'); // 重新加载数据到缓存 projectObj.project.projectGLJ.loadData(function() { projectObj.project.projectGLJ.loadCacheData(); $("#notify").slideUp('fast'); }); }); }); /** * 初始化数据 * * @return {void|boolean} */ function init() { projectObj.project.projectGLJ.loadData(function(data) { if (jsonData.length <= 0) { // 赋值 jsonData = data.gljList !== undefined && data.gljList.length > 0 ? data.gljList : []; if (jsonData.length > 0) { // 不显示消耗量为0的数据 let tmpData = []; for(let data of jsonData) { if (data.quantity !== 0) { tmpData.push(data); } } jsonData = tmpData; } 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 : {}; // 连接socket服务器 socketInit(); unitPriceFileInit(usedUnitPriceInfo.name, usedTenderList); setTimeout(spreadInit, 1); } else { projectObj.project.projectGLJ.loadCacheData(); } }); } /** * 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) { let updateData = {}; switch (field) { case 'unit_price.market_price': // 计算价格 updateData = projectGLJSpread.priceCalculate(info); // 触发websocket通知 socket.emit('dataNotify', JSON.stringify(info)); console.log(info); break; case 'supply': // 供货方式更改成功后 projectGLJSpread.changeSupplyType(info); break; } // 重新加载数据到缓存 projectObj.project.projectGLJ.loadData(); // 更新定额工料机 gljOprObj.refreshView(); } /** * socket.io相关初始化 * * @return {void} */ function socketInit() { if (socket === null) { socket = io('http://'+ host +':3300'); socket.on('connect', function () { socket.emit('join', roomId); console.log('单价文件同步连接成功'); }); } // 接收到改变 socket.on('dataChange', function(data) { data = JSON.parse(data); if (data.newValue === undefined) { return false; } $("#message").html('市场单位已被修改,点击加载'); $("#notify").slideDown('fast'); }); }