浏览代码

人材机-项目特征文本拖动
子目换算-辅助值拖动
项目属性toolTip bug

zhongzewei 6 年之前
父节点
当前提交
cf2e09d7a3

+ 0 - 1
public/web/slideResize.js

@@ -60,7 +60,6 @@ const SlideResize = (function() {
         });
         $('body').mousemove(function (e) {
             if (drag) {
-                console.log('drag');
                 let moveSize = e.clientX - startPoint;
                 leftChange = leftWidth + moveSize;
                 leftChange = leftChange < limit.min ? limit.min : leftChange;

+ 2 - 0
web/building_saas/js/global.js

@@ -33,6 +33,8 @@ function autoFlashHeight(){
     $(".form-list").height($(window).height()-headerHeight);
     $('#comments').find('textarea').height($('#comments').height() - 25);
     typeof(adaptiveTzjnrWidth)== 'function' ?adaptiveTzjnrWidth():''
+    typeof MaterialController === 'object' ? MaterialController.initItemWidth() : '';
+    typeof zmhs_obj === 'object' ? zmhs_obj.loadSideResize() : '';
 };
 
 

+ 18 - 14
web/building_saas/main/html/main.html

@@ -83,7 +83,7 @@
                     <a href="javascript:void(0)" class="btn btn-sm" title="剪切"><i class="fa fa-scissors" aria-hidden="true"></i></a>
                     <a href="javascript:void(0)" class="btn btn-sm" title="粘贴"><i class="fa fa-clipboard" aria-hidden="true"></i></a>-->
                       <span class="btn btn-light btn-sm" data-toggle="tooltip" data-original-title="项目属性" data-placement="bottom">
-                        <a href="javascript:void(0);" data-target="#poj-set" data-toggle="modal"><i class="fa fa-cog"></i></a>
+                        <a href="javascript:void(0);" id="openProjSet" data-target="#poj-set" data-toggle="modal"><i class="fa fa-cog"></i></a>
                     </span>
                     <span class="btn btn-light btn-sm" id="importSpan" data-toggle="tooltip" data-original-title="导入" data-placement="bottom">
                         <a class="dropdown-toggle" href="#" data-toggle="dropdown"><i class="fa fa-cloud-upload"></i></a>
@@ -101,8 +101,8 @@
                       <div class="btn-group ml-2">
                           <a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">更多</a>
                           <div class="dropdown-menu dropright">
-                              <a href="" data-toggle="dropdown" class="dropdown-item dropdown-toggle"><i class="fa fa-list-ol"></i> 显示至...</a>
-                              <div class="dropdown-menu dropdown-menu-left" style="min-width: 6.5rem">
+                              <a id="displayA" href="javascript:void(0);" data-toggle="dropdown" class="dropdown-item dropdown-toggle"><i class="fa fa-list-ol"></i> 显示至...</a>
+                              <div id="subDisplay" class="dropdown-menu dropdown-menu-left" style="min-width: 6.5rem; position: absolute; transform: translate3d(158px, 3px, 0px); top: 0px; left: 0px; will-change: transform;" x-placement="right-start">
                                   <a class="dropdown-item btn-sm" href="javascript:void(0);" id="displayDXFY">大项费用</a>
                                   <a class="dropdown-item btn-sm" href="javascript:void(0);"  id="displayFB1">一级分部</a>
                                   <a class="dropdown-item btn-sm" href="javascript:void(0);" id="displayFB2">二级分部</a>
@@ -221,21 +221,25 @@
                               <div class="tab-content" id="tabCon">
                                   <div class="tab-pane active" id="subItems" role="tabpanel">
                                       <div class="main-data-bottom ovf-hidden" id="subSpread" style="display: none" tabindex="0"></div>
-                                      <div class="main-data-bottom ovf-hidden" id="rgResize" style="width: 0.2%; height: 100%; resize:horizontal; cursor: w-resize; float: left; background: #F1F1F1;display: none"></div>
-                                      <div class="item_spread main-data-bottom ovf-hidden " id="replaceM" style="display: none" >
-                                          <div class="p-0" id="openItemText" style="height:100%;width: 40px">
-                                              <div class="tn-nav d-flex align-items-start flex-column" data-toggle="tooltip" data-placement="left" title="" data-original-title="打开项目特征">
-                                                  <span class="mt-3 ml-2 text-primary">项目特征</span>
-                                                  <i class="fa fa-arrow-left mt-auto mb-3 text-primary ml-2"></i>
+                                      <div class="main-data-bottom ovf-hidden" id="itemTextDiv">
+                                          <div class="resize-x main-data-bottom ovf-hidden" id="rgResize" style="display: none"></div>
+                                          <div class="item_spread main-data-bottom ovf-hidden " id="replaceM" style="width: 99%;">
+                                              <div class="p-0" id="openItemText" style="height:100%;width: 40px">
+                                                  <div class="tn-nav d-flex align-items-start flex-column" data-toggle="tooltip" data-placement="left" title="" data-original-title="打开项目特征">
+                                                      <span class="mt-3 ml-2 text-primary">项目特征</span>
+                                                      <i class="fa fa-arrow-left mt-auto mb-3 text-primary ml-2"></i>
+                                                  </div>
                                               </div>
+                                              <a id="closeItemText" style="float: right;width: auto;display: none"  data-toggle="tooltip" data-placement="bottom" data-original-title="关闭项目特征" class="col-7 col-form-label" href="javascript:void(0);"><i class="fa fa-arrow-right"></i></a>
+                                              <div id="replaceText" style="display: none;padding-bottom: 10px"></div>
                                           </div>
-                                          <a id="closeItemText" style="float: right;width: auto;display: none"  data-toggle="tooltip" data-placement="bottom" data-original-title="关闭项目特征" class="col-7 col-form-label" href="javascript:void(0);"><i class="fa fa-arrow-right"></i></a>
-                                          <div id="replaceText" style="display: none;padding-bottom: 10px"></div>
                                       </div>
                                       <div class="main-data-bottom ovf-hidden" id="tabZMHS" style="display: none">
-                                          <div class=" main-data-bottom ovf-hidden" style="width: 60%; float: left; margin: 0; padding:0;" id="coeSpread"></div>
-                                          <div  id="zmhsResize" style="width: 0.2%; height: 100%; resize:horizontal; cursor: w-resize; float: left; background: #F1F1F1"></div>
-                                          <div class=" main-data-bottom ovf-hidden" style="width: 39.8%; float: left; margin: 0; padding:0;" id="assSpread"></div>
+                                          <div class=" main-data-bottom ovf-hidden p-0" style="width: 60%; float: left;" id="coeSpread"></div>
+                                          <div class="main-data-bottom ovf-hidden p-0" id="assDiv" style="width: 40%; float: left">
+                                              <div class="resize-x" id="zmhsResize"></div>
+                                              <div class="main-data-bottom ovf-hidden" style="width: 99%; float: left;" id="assSpread"></div>
+                                          </div>
                                       </div>
                                       <div class="main-data-bottom ovf-hidden" id="tabMBZM" style="display: none;">
                                               <div class="col-12" style="background: #F1F1F1;">

+ 53 - 16
web/building_saas/main/js/controllers/material_controller.js

@@ -2,6 +2,7 @@
  * Created by zhang on 2018/9/12.
  */
 let MaterialController = {
+    moduleName: 'subRcj', //模块名
     subSpreadDivWidth:"",
     showItemText:false,
     //规则相关映射
@@ -168,6 +169,7 @@ let MaterialController = {
             return;
         }
         $("#subSpread").addClass("ration_glj_spread");
+        $('#itemTextDiv').show();
         $("#replaceM").show();
         $("#rgResize").show();// 拖动调整大小功能添加
         // 2018-11-07 需求变更,这个项目特征替换表格暂时隐藏不删除,以后可能还要用,先把项目初始化这句注释掉
@@ -228,6 +230,38 @@ let MaterialController = {
         this.toggleItemInit();
         $("#replaceText").html(text);
     },
+    //初始化人材机和项目特征文本两个区域的宽度,改变窗口大小时调用此方法,实时刷新
+    initItemWidth: function () {
+        //总宽度
+        let totalWidth = $('#subItems').width();
+        //人材机和项目特征文本比例
+        const openWidth = 30;//打开项目特征工具条
+        let textVisible = $('#replaceText').is(':visible'),
+            //默认比例
+            textPercent = '15%',
+            rcjPercent = '85%';
+        //文本没显示,则打开工具条固定30px转换百分比
+        if (!textVisible) {
+            textPercent = openWidth / totalWidth;
+            rcjPercent = 1 - textPercent;
+            textPercent = textPercent * 100 + '%';
+            rcjPercent = rcjPercent * 100 + '%';
+        }
+        //设置特征及内容与排版规则的比例
+        if ($('#replaceM').is(':visible')) {//显示工具条
+            $('#subSpread').css('width', rcjPercent);
+            $('#itemTextDiv').css('width', textPercent);
+            //打开了项目特征,则继续加载人材机表和项目特征文本具体比例
+            if (this.showItemText === true) {
+                let rg_sideResizeEles = MaterialController.getSideResize();
+                SlideResize.loadHorizonWidth(rg_sideResizeEles.eleObj.module,
+                    [rg_sideResizeEles.eleObj.resize], [rg_sideResizeEles.eleObj.left, rg_sideResizeEles.eleObj.right]);
+            }
+        } else {//不显示工具条
+            $('#subSpread').css('width', '100%');
+        }
+
+    },
     toggleItemInit:function () {
         if(this.showItemText == true){
             $("#replaceM").removeClass("ovf-hidden");
@@ -235,20 +269,14 @@ let MaterialController = {
             $("#replaceText").show();
             $("#closeItemText").show();
             $("#rgResize").show();
-            let swidth =  this.subSpreadDivWidth == ""? $("#bottom_div").width()*0.83:this.subSpreadDivWidth;
-            swidth = parseFloat(swidth);
-            $('#subSpread').css('width',swidth);
-            $('#replaceM').css('width',$("#bottom_div").width()-$("#rgResize").width()-swidth);
+            this.initItemWidth();
         }else {
             $("#replaceM").addClass("ovf-hidden");
             $("#openItemText").show();
             $("#replaceText").hide();
             $("#closeItemText").hide();
             $("#rgResize").hide();
-            $('#replaceM').css('width',30);
-            $('#subSpread').css('width',$("#bottom_div").width()-30);
-
-
+            this.initItemWidth();
         }
     },
     getItems:function(characterText){
@@ -287,21 +315,30 @@ let MaterialController = {
             }
             if(!_.isEmpty(doc)) this.postReplace([{glj:ration_glj,doc:doc}]);
         }
+    },
+    getSideResize: function () {
+        let rg_sideResizeEles = {};
+        rg_sideResizeEles.eleObj = {
+            module: this.moduleName,
+            resize: $('#rgResize'),
+            parent: $('#subItems'),
+            left: $('#subSpread'),
+            right: $('#itemTextDiv')
+        };
+        rg_sideResizeEles.limit = {
+            min: 100,
+            max: `$('#subItems').width()-100`
+        };
+        return rg_sideResizeEles;
     }
 };
 
-let rg_sideResizeEles = {};
-rg_sideResizeEles.id = 'tabRG';
-rg_sideResizeEles.resize = $('#rgResize');
-rg_sideResizeEles.nearElement = $('#subSpread');
-rg_sideResizeEles.farElement = $('#replaceM');
-rg_sideResizeEles.nav = null;
-slideResize(rg_sideResizeEles, {min: 100, max: $('#tabCon').width()-100}, 'width', function(){
+let rg_sideResizeEles = MaterialController.getSideResize();
+SlideResize.horizontalSlide(rg_sideResizeEles.eleObj, rg_sideResizeEles.limit, function(){
     MaterialController.subSpreadDivWidth = $('#subSpread').css('width');
     refreshSubSpread();
 });
 
-
 $(function (){
     $("#openItemText").click(function () {
         MaterialController.showItemText = true;

+ 0 - 131
web/building_saas/main/js/main.js

@@ -76,137 +76,6 @@ function loadMainSize() {//加载造价书页面各高度
     });
 }
 
-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);

+ 3 - 0
web/building_saas/main/js/views/project_property_basicInfo.js

@@ -477,6 +477,9 @@ $(document).ready(function () {
     });
 
     $('#poj-set').on('hidden.bs.modal', function (e) {
+        setTimeout(function () {
+            $('[data-toggle="tooltip"]').tooltip('hide');
+        }, 50);
         //destroy Spread
         if(basicInfoView.workBook){
             basicInfoView.workBook.destroy();

+ 38 - 3
web/building_saas/main/js/views/project_view.js

@@ -2156,6 +2156,26 @@ let displayLevel = function(nodes, depth, type){
         TREE_SHEET_HELPER.refreshNodesVisible(refreshNodes, projectObj.mainSpread.getActiveSheet(), true)
     });
 };
+/*let enterDisplayA = false,
+    enterSubDisplay = false;
+//鼠标移到显示至,自动弹出子菜单
+$('#displayA').mouseenter(function () {
+    enterDisplayA = true;
+   $('#subDisplay').addClass('show');
+});
+$('#subDisplay').mouseenter(function () {
+    enterSubDisplay = true;
+});
+$('#subDisplay').mouseleave(function () {
+    enterSubDisplay = true;
+});
+$('#displayA').mouseleave(function () {
+    enterDisplayA = false;
+    if (!enterSubDisplay) {
+        $('#subDisplay').removeClass('show');
+    }
+});*/
+
 $('#displayDXFY').click(function () {
    displayLevel(projectObj.project.mainTree.items, 0, 'DXFY')
 });
@@ -2243,6 +2263,9 @@ $('#recColSetting').click(function () {
 $('#property_default').click(function () {
     let project = projectObj.project,
         projectID = project.ID();
+    /*
+    * 清除窗口比例缓存
+    * */
     //清单精灵/指引窗口比例
     removeLocalCache('stdBillsGuidanceTabmainWidth');
     removeLocalCache('stdBillsGuidanceTabmainSideWidth');
@@ -2256,12 +2279,22 @@ $('#property_default').click(function () {
     removeLocalCache('locateTabmainSideWidth');
     removeLocalCache('locatelocateTopDivHeight');
     removeLocalCache('locatelocateBottomDivHeight');
+    //块模板库窗口比例
+    removeLocalCache('kmbkkmbkTopDivHeight');
+    removeLocalCache('kmbkkmbkMidDivHeight');
+    removeLocalCache('kmbkkmbkBottomDivHeight');
     //主界面窗口比例
     removeLocalCache('mainVerticaltop_divHeight');
     removeLocalCache('mainVerticalbottom_divHeight');
-    //特征及内容窗口比例
-    removeLocalCache('tzjnrjobDivWidth');
-    removeLocalCache('tzjnritemDivWidth');
+    //造价书下方-人材机和项目特征文本
+    removeLocalCache('subRcjsubSpreadWidth');
+    removeLocalCache('subRcjitemTextDivWidth');
+    //造价书下方-子目换算下调整状态和辅助值
+    removeLocalCache('subRcjitemTextDivWidth');
+    removeLocalCache('subRcjitemTextDivWidth');
+    //造价书下方-特征及内容窗口比例
+    removeLocalCache('subZmhscoeSpreadWidth');
+    removeLocalCache('subZmhsassDivWidth');
     //人材机汇总窗口比例
     removeLocalCache('projectGljprojectGljTopHeight');
     removeLocalCache('projectGljprojectGljBottomHeight');
@@ -2277,6 +2310,8 @@ $('#property_default').click(function () {
     removeLocalCache('compleRationsubContentHeight');
     removeLocalCache('compleRationmainSpreadHeight');
     removeLocalCache('compleRationcontentSpreadHeight');
+
+    //在后台恢复一些设置
     CommonAjax.post('/pm/api/defaultSettings', {user_id: userID, projectID: projectID}, function (rstData) {
         window.location.href = `/main?project=${projectID}`;
     });

+ 2 - 1
web/building_saas/main/js/views/side_tools.js

@@ -8,6 +8,8 @@ $(window).resize(function() {
     rationLibObj.refreshSpread();
     BillsElf.setColumnWidthByRate();
     loadSideToolsHeight();
+    //刷新主界面与各库中间的拖动条宽度:始终保持为一个宽度(在小窗口打开一个库,再放大窗口后,该拖动条宽度会变大)
+    SlideResize.setResizeWidth($('#sideResize'));
 });
 //造价书与各库左右拖动
 let sideResizeEles = {};
@@ -23,7 +25,6 @@ sideResizeEles.limit = {
     max: `$('#mainRow').width()-150`
 };
 SlideResize.horizontalSlide(sideResizeEles.eleObj, sideResizeEles.limit, function(){
-    //adaptiveTzjnrWidth();
     MaterialController.showReplaceDiv();
     pageCCOprObj.resizeWidth();
     BillsElf.setColumnWidthByRate();

+ 1 - 1
web/building_saas/main/js/views/sub_view.js

@@ -153,9 +153,9 @@ $("#linkJSCX").click(function(){        // 计算程序
 $("#linkZMHS").click(function(){        // 子目换算
     $("#subItems").children().hide();
     $("#tabZMHS").show();
+    zmhs_obj.loadSideResize();
     pageCCOprObj.active = false;
     refreshSubSpread();
-
     gljOprObj.activeTab='#linkZMHS';
     gljOprObj.setNodeShowTab();
 });

+ 22 - 10
web/building_saas/main/js/views/zmhs_view.js

@@ -3,6 +3,7 @@
  */
 
 let zmhs_obj = {
+    module: 'subZmhs',
     coeSpread:null,
     coeSheet:null,
     coeSheetData:[],
@@ -312,19 +313,30 @@ let zmhs_obj = {
             }
         }
         return true;
+    },
+    getSideResize: function () {
+        let zmhs_sideResizeEles = {};
+        zmhs_sideResizeEles.eleObj = {
+            module: zmhs_obj.module,
+            resize: $('#zmhsResize'),
+            parent: $('#tabZMHS'),
+            left: $('#coeSpread'),
+            right: $('#assDiv')
+        };
+        zmhs_sideResizeEles.limit = {
+            min: 100,
+            max: `$('#tabZMHS').width()-100`
+        };
+        return zmhs_sideResizeEles;
+    },
+    loadSideResize: function () {
+        let resizeObj = this.getSideResize();
+        SlideResize.loadHorizonWidth(resizeObj.eleObj.module, [resizeObj.eleObj.resize], [resizeObj.eleObj.left, resizeObj.eleObj.right]);
     }
 };
 
-let zmhs_sideResizeEles = {};
-zmhs_sideResizeEles.id = 'tabZMHS';
-zmhs_sideResizeEles.resize = $('#zmhsResize');
-zmhs_sideResizeEles.evFixedSize = `$(window).width()-$('.main-nav').width()-5`;
-zmhs_sideResizeEles.nearElement = $('#coeSpread');
-zmhs_sideResizeEles.nearSpread = $('#coeSpread');
-zmhs_sideResizeEles.farElement = $('#assSpread');
-zmhs_sideResizeEles.farSpread = $('#assSpread');
-zmhs_sideResizeEles.nav = null;
-slideResize(zmhs_sideResizeEles, {min: 100, max: $('#tabCon').width()-100}, 'width', function(){
+let zmhsResize = zmhs_obj.getSideResize();
+SlideResize.horizontalSlide(zmhsResize.eleObj, zmhsResize.limit, function () {
     zmhs_obj.refresh();
 });