| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 | /** * Created by Mai on 2017/3/10. */$(function () {    loadMainSize();    $("#header-menu").removeAttr('style');    $('#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();        $('#comments').find('textarea').height($('#comments').height() - 25);    });    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();    });}let mouseMoveCount = 0;/** * 拖动更改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) {        mouseMoveCount = 0;        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;            let rePercent = {};            if(type === 'width'){                 rePercent = getResizeWidthPercent(nEleChangeSize, fEleChangeSize);                if(limit.no_proportion === true){//如果只需要记算百分比,但不按页分比设置(还有其它兄弟div和情况)                    eles.nearElement.css(type, nEleChangeSize);                    eles.farElement.css(type, fEleChangeSize);                }else {                    eles.nearElement.css(type, rePercent.nearPercent);                    eles.farElement.css(type, rePercent.farPercent);                }            }            else{                eles.nearSpread[type](nEleChangeSize);                eles.farSpread[type](fEleChangeSize - navSize);                eles.farElement[type](fEleChangeSize);            }            //实时刷新页面            mouseMoveCount+=Math.abs(moveSize);//取移动的决对值            if(mouseMoveCount >=5){//当累计移动超过5个像素时,才刷新,减少刷新次数                if(callback) callback(rePercent);                mouseMoveCount = 0;            }        }    });    // 鼠标弹起    $("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);        eles.farElement[type](totalHeight - nearSize + navSize);    }}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);        eles.farElement[type](totalHeight - nearSize + navSize);    }}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"};*///页面失去焦点时触发/*window.onblur = function () {  console.log("test")};*/
 |