/** * Created by Mai on 2017/3/10. */ $(function () { loadMainSize(); $("#header-menu").removeAttr('style'); projectInfoObj.showProjectInfo(); projectObj.checkMainSpread(); projectObj.loadProjectData(); $('#tab_baobiao').on('shown.bs.tab', function (e) { $(e.relatedTarget.hash).removeClass('active'); // do something }); $('#tab_zaojiashu').on('shown.bs.tab', function (e) { //设置sessionStorage,重载时用 sessionStorage.setItem('mainTab', '#tab_zaojiashu'); $(e.relatedTarget.hash).removeClass('active'); $("#subItems").addClass('active'); $(gljOprObj.activeTab).addClass('active'); autoFlashHeight(); projectObj.refreshMainSpread(); billsGuidance.refreshWorkBook(); billsLibObj.refreshBillsSpread(); billsLibObj.refreshBillsRelaSpread(); rationLibObj.refreshSpread(); }); $('#tab_report').on('shown.bs.tab', function(e){ sessionStorage.setItem('mainTab', '#tab_report'); }); slideResize(getMainResizeEles(), {min: 170, max: 700}, 'height', function() { projectObj.mainSpread.refresh(); refreshSubSpread(); zmhs_obj.refresh(); }); /*const projectId = scUrlUtil.GetQueryString('project'); // 绑定点击事件 projectObj.mainSpread.bind(GC.Spread.Sheets.Events.CellClick, function(sender, info) { if (info.row !== undefined && projectId !== undefined) { setLocalCache('lastRow:' + projectId, info.row); setLocalCache('lastCol:' + projectId, info.col); } });*/ }); function getMainResizeEles() { // 读取本地存储的高度(必须放在载入spread之前) let mainResizeEles = {}; mainResizeEles.id = '#main'; mainResizeEles.resize = $('#main').find('.resize'); mainResizeEles.nearElement = $('#main').find('.top-content'); mainResizeEles.nearSpread = mainResizeEles.nearElement.children(".main-data-top"); mainResizeEles.farElement = $('#main').find('.bottom-content'); mainResizeEles.farSpread = mainResizeEles.farElement.children().find(".main-data-bottom"); mainResizeEles.nav = mainResizeEles.farElement.children('ul.nav'); return mainResizeEles; } function loadMainSize() {//加载造价书页面各高度 // 读取本地存储的高度(必须放在载入spread之前) let mainResizeEles = getMainResizeEles() ; loadSize(mainResizeEles, 'height', function() { refreshSubSpread(); zmhs_obj.refresh(); }); } /** * 拖动更改div大小 * * @param {Object} eles - id:存储本地的标记 resize:拖动条 nearElement:左上外层div nearSpread:左上spread farElement:右下外层div evFixedSize:造价书左右拖动用 * @param {Object} limit - min/max * @param {String} type - height/width * @param {function} callback - 成功后执行 * @return {void} */ function slideResize(eles, limit, type, callback) { if(type !== 'height' && type !== 'width'){ return; } //nearElement:左上, farElement:右下 let startP = 0; let drag = false; const resizeElement = eles.resize; const nElement = eles.nearElement; const fElement = eles.farElement; const navContentEle = eles.nav ? eles.nav : null; let nEleSize = 0; let fEleSize = 0; let navSize = 0; let nEleChangeSize = 0; let fEleChangeSize = 0; // 鼠标点下时 resizeElement.mousedown(function(e) { drag = true; startP = type === 'height' ? e.clientY : e.clientX; // 获取左(上)部分的宽度(高度) nEleSize = nElement[type](); // 获取右(下)部分的宽度(高度) fEleSize = fElement[type](); // nav宽(高度)部分 if(navContentEle){ navSize = navContentEle[type]() + 4; } resizeElement.tooltip('hide'); }); // 鼠标移动 $("body").mousemove(function(e) { if (drag) { let moveSize = type === 'height' ? e.clientY - startP : e.clientX - startP; // 判断拖动范围不能超出 nEleChangeSize = nEleSize + moveSize; nEleChangeSize = nEleChangeSize < limit.min ? limit.min : nEleChangeSize; nEleChangeSize = nEleChangeSize > limit.max ? limit.max + 9 : nEleChangeSize; fEleChangeSize = fEleSize - moveSize; fEleChangeSize = fEleChangeSize < limit.min ? limit.min : fEleChangeSize; fEleChangeSize = fEleChangeSize > limit.max ? limit.max + 9 : fEleChangeSize; if(type === 'width'){ let rePercent = getResizeWidthPercent(nEleChangeSize, fEleChangeSize); eles.nearElement.css(type, rePercent.nearPercent); eles.farElement.css(type, rePercent.farPercent); } else{ eles.nearSpread[type](nEleChangeSize); eles.farSpread[type](fEleChangeSize - navSize); } } }); // 鼠标弹起 $("body").mouseup(function(e) { if (drag) { callback(); drag = false; // 存入本地缓存 const id = eles.id; nEleChangeSize = nEleChangeSize >= limit.max ? limit.max + 9 : nEleChangeSize; fEleChangeSize = fEleChangeSize >= limit.max ? limit.max + 9 : fEleChangeSize; setLocalCache(`near${type}:${id}`, nEleChangeSize); setLocalCache(`far${type}:${id}`, fEleChangeSize); } }); } /** * 读取设置的高度 * * @param {String} tag - 顶层div的id * @param {function} callback - 回调函数 * @return {void} */ function loadSize(eles, type, callback) { let tag = eles.id; if (tag === '') { return; } if(type !== 'height' && type !== 'width'){ return; } let o_nearSize = eles.nearSpread[type](); let o_farSize = eles.farSpread[type](); let nearSize = getLocalCache(`near${type}:${tag}`); let farSize = getLocalCache(`far${type}:${tag}`); if (nearSize === null || farSize === null) { setDefaultSize(tag,eles,type);//zhang 2018-05-21 /* eles.nearSpread[type](o_nearSize); eles.farSpread[type](o_farSize);*/ }else { setSizeWithPercent(tag,eles,nearSize,farSize,type)//zhang 2018-06-04 改成按百分比设置 } if(type === 'width'){//使用百分比 let rePercent = getResizeWidthPercent(nearSize ? nearSize : o_nearSize, farSize ? farSize : o_farSize); eles.nearElement.css(type, rePercent.nearPercent); eles.farElement.css(type, rePercent.farPercent); } callback(); } function getResizeWidthPercent(nearSize, farSize){ const resizeWidth = 6; nearSize = parseFloat(nearSize); farSize = parseFloat(farSize); let nearPercent = (nearSize / (resizeWidth + nearSize + farSize) * 100) + '%'; let farPercent = (farSize / (resizeWidth + nearSize + farSize) * 100) + '%'; return {nearPercent, farPercent}; } function setSizeWithPercent(tag,eles,nearSize,farSize,type) { nearSize = parseFloat(nearSize); farSize = parseFloat(farSize); if(type !== 'width') { let headerHeight = $(".header").height(); let toolsbarHeight = $(".toolsbar").height(); let exand = tag == "#main" ? 1:50; let totalHeight = $(window).height() - headerHeight - toolsbarHeight-exand; const navSize = eles.nav ? eles.nav[type]() + 4 : 0; totalHeight = totalHeight - navSize; nearSize = (nearSize/(nearSize + farSize))* totalHeight; eles.nearSpread[type](nearSize); eles.farSpread[type](totalHeight - nearSize); } } function setDefaultSize(tag,eles,type) { let o_nearSize = 5; let o_farSize = 2; if(type == 'height'){ let headerHeight = $(".header").height(); let toolsbarHeight = $(".toolsbar").height(); let exand = tag == "#main" ? 1:50; let totalHeight = $(window).height() - headerHeight - toolsbarHeight-exand; const navSize = eles.nav ? eles.nav[type]() + 4 : 0; totalHeight = totalHeight - navSize; let nearSize = (o_nearSize/(o_nearSize + o_farSize))* totalHeight; eles.nearSpread[type](nearSize); eles.farSpread[type](totalHeight - nearSize); } } function disableRightMenu(id,spread,rowChangeFunction) { let me = this; $.contextMenu({ selector: '#'+id, build: function ($trigger, e) { let oldRow = spread.getActiveSheet().getSelections()[0].row; var target = SheetDataHelper.safeRightClickSelection($trigger, e, spread); if(rowChangeFunction){ if(oldRow != target.row){ rowChangeFunction(target.row) } } return target.hitTestType === GC.Spread.Sheets.SheetArea.viewport || target.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader; }, items: { "disable": { name: "", visible: function () { return false; }, callback: function (key, opt) { } }, } }); } /*window.onunload=show; 页面唯一性可以用session storage 来做 function show() { return "exit" };*/