Преглед изворни кода

Merge branch '1.0.0_online' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost into 1.0.0_online

zhongzewei пре 7 година
родитељ
комит
929f8d8300

+ 2 - 0
config/gulpConfig.js

@@ -9,6 +9,7 @@ module.exports = {
         'lib/jquery-ui/jquery-ui.min.js',
         'lib/popper/popper.min.js',
         'lib/bootstrap/bootstrap.min.js',
+        'lib/bootstrap/bootstrap-submenu.js',
         'web/building_saas/js/*.js',
         'public/web/scMathUtil.js',
         'public/web/gljUtil.js',
@@ -21,6 +22,7 @@ module.exports = {
     common_css:[
         'lib/jquery-ui/jquery-ui.css',
         'lib/bootstrap/css/bootstrap.min.css',
+        'lib/bootstrap/css/bootstrap-submenu.js',
         'lib/spreadjs/sheets/css/gc.spread.sheets.sc.css',
         'web/building_saas/css/main.css',
         'web/building_saas/css/custom.css',

+ 132 - 0
lib/bootstrap/bootstrap-submenu.js

@@ -0,0 +1,132 @@
+(function(factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD. Register as an anonymous module
+    define(['jquery'], factory);
+  } else if (typeof exports === 'object') {
+    // Node/CommonJS
+    module.exports = factory(require('jquery'));
+  } else {
+    // Browser globals
+    factory(jQuery);
+  }
+})(function($) {
+  class DropdownSubmenu {
+    constructor(element) {
+      this.element = element.parentElement;
+      this.menuElement = this.element.querySelector('.dropdown-menu');
+
+      this.init();
+    }
+
+    init() {
+      $(this.element).off('keydown.bs.dropdown.data-api');
+
+      this.menuElement.addEventListener('keydown', this.itemKeydown.bind(this));
+
+      const dropdownItemNodeList = this.menuElement.querySelectorAll('.dropdown-item');
+
+      for (const element of dropdownItemNodeList) {
+        element.addEventListener('keydown', this.handleKeydownDropdownItem.bind(this));
+      }
+
+      $(this.menuElement).on('keydown', '.dropdown-submenu > .dropdown-item', this.handleKeydownSubmenuDropdownItem.bind(this));
+      $(this.menuElement).on('click', '.dropdown-submenu > .dropdown-item', this.handleClickSubmenuDropdownItem.bind(this));
+      $(this.element).on('hidden.bs.dropdown', () => {
+        this.close(this.menuElement);
+      });
+    }
+
+    handleKeydownDropdownItem(event) {
+      // 27: Esc
+      if (event.keyCode !== 27) {
+        return;
+      }
+
+      event.target.closest('.dropdown-menu').previousElementSibling.focus();
+      event.target.closest('.dropdown-menu').classList.remove('show');
+    }
+
+    handleKeydownSubmenuDropdownItem(event) {
+      // 32: Spacebar
+      if (event.keyCode !== 32) {
+        return;
+      }
+
+      // NOTE: Off vertical scrolling
+      event.preventDefault();
+
+      this.toggle(event.target);
+    }
+
+    handleClickSubmenuDropdownItem(event) {
+      event.stopPropagation();
+
+      this.toggle(event.target);
+    }
+
+    itemKeydown(event) {
+      // 38: Arrow up, 40: Arrow down
+      if (![38, 40].includes(event.keyCode)) {
+        return;
+      }
+
+      // NOTE: Off vertical scrolling
+      event.preventDefault();
+
+      event.stopPropagation();
+
+      const itemNodeList = this.element.querySelectorAll('.show > .dropdown-item:not(:disabled):not(.disabled), .show > .dropdown > .dropdown-item');
+
+      let index = Array.from(itemNodeList).findIndex((element) => {
+        return element === event.target;
+      });
+
+      if (event.keyCode === 38 && index !== 0) {
+        index--;
+      } else if (event.keyCode === 40 && index !== itemNodeList.length - 1) {
+        index++;
+      } else {
+        return;
+      }
+
+      itemNodeList[index].focus();
+    }
+
+    toggle(element) {
+      const dropdownElement = element.closest('.dropdown');
+      const parentMenuElement = dropdownElement.closest('.dropdown-menu');
+      const menuElement = dropdownElement.querySelector('.dropdown-menu');
+      const isOpen = menuElement.classList.contains('show');
+
+      this.close(parentMenuElement);
+
+      menuElement.classList.toggle('show', !isOpen);
+    }
+
+    close(menuElement) {
+      const menuNodeList = menuElement.querySelectorAll('.dropdown-menu.show');
+
+      for (const element of menuNodeList) {
+        element.classList.remove('show');
+      }
+    }
+  }
+
+  // For AMD/Node/CommonJS used elements (optional)
+  // http://learn.jquery.com/jquery-ui/environments/amd/
+  $.fn.submenupicker = function(elements) {
+    const $elements = this instanceof $ ? this : $(elements);
+
+    return $elements.each(function() {
+      let data = $.data(this, 'bs.submenu');
+
+      if (!data) {
+        data = new DropdownSubmenu(this);
+
+        $.data(this, 'bs.submenu', data);
+      }
+    });
+  };
+
+  return DropdownSubmenu;
+});

+ 29 - 0
lib/bootstrap/css/bootstrap-submenu.css

@@ -0,0 +1,29 @@
+.dropdown-submenu.dropright .dropdown-menu {
+  margin-left: 1px;
+}
+
+.dropdown-submenu .dropleft .dropdown-menu {
+  margin-right: 1px;
+}
+
+[x-placement^="bottom-"] .dropdown-submenu .dropdown-menu,
+.navbar .dropdown-submenu .dropdown-menu {
+  bottom: auto;
+  margin-top: calc(-0.5rem - 1px);
+}
+
+[x-placement^="top-"] .dropdown-submenu .dropdown-menu {
+  top: auto;
+  bottom: 0;
+  margin-bottom: calc(-0.5rem - 1px);
+}
+
+.dropdown-submenu.dropright > .dropdown-toggle {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.dropdown-submenu.dropright > .dropdown-toggle::after {
+  margin-right: -12px;
+}

Разлика између датотеке није приказан због своје велике величине
+ 2 - 2
lib/bootstrap/css/bootstrap.min.css


+ 35 - 1
web/building_saas/css/main.css

@@ -348,7 +348,7 @@ a{
     margin-top:2px;
 }
 .rn-nav .nav-tabs .nav-link{
-    padding:0.8em 0.4em;
+    padding:0.4em 0.4em;
     line-height: 16px
 }
 .rn-nav .nav-tabs .nav-link.active {
@@ -357,6 +357,7 @@ a{
     border-left:1px solid #fff;
     margin-left:-1px;
     border-top:1px solid #ccc;
+    border-right:1px solid #ccc;
     border-bottom:1px solid #ccc;
 }
 .rn-nav .nav-tabs .nav-link span{
@@ -553,4 +554,37 @@ a{
 }
 .annotate-color-7{
     background: #ECE0F5
+}
+/*宽屏菜单*/
+@media screen and (min-width: 900px) {
+    #fluid-menu{
+    }
+    #min-menu{
+        display: none
+    }
+}
+@media screen and (min-width: 912px) {
+    #share-info{
+        overflow: auto;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        max-width:inherit;
+    }
+}
+/*窄屏菜单*/
+@media screen and (max-width: 900px) {
+    #fluid-menu{
+        display: none
+    }
+    #min-menu{
+
+    }
+}
+@media screen and (max-width: 1018px) {
+    #share-info{
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        max-width:80px;
+    }
 }

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

@@ -64,6 +64,7 @@ $(function () {
     /*工具提示*/
     $(function () {
         $('[data-toggle="tooltip"]').tooltip();
+        $('[data-submenu]').submenupicker();
         $('[data-toggle="tooltip"]').click(function () {
             $(this).tooltip('hide');
         })

+ 6 - 5
web/building_saas/main/html/main.html

@@ -10,6 +10,7 @@
 
     <link rel="stylesheet" href="/lib/jquery-ui/jquery-ui.css" type="text/css">
     <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
+    <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap-submenu.css">
     <link rel="stylesheet" href="/lib/spreadjs/sheets/css/gc.spread.sheets.sc.css" type="text/css">
     <link rel="stylesheet" href="/web/building_saas/css/main.css">
     <link rel="stylesheet" href="/web/building_saas/css/custom.css">
@@ -268,14 +269,14 @@
                                                   <div id="zmhs_nav" style="display: none">
                                                       <ul class="nav nav-tabs">
                                                           <li class="nav-item" data-toggle="tooltip" data-placement="left" title="收起">
-                                                              <a data-toggle="tab" href="#rnc-close" role="tab" class="zmhs-link nav-link"><i class="fa fa-arrow-right"></i></a>
+                                                              <a data-toggle="tab" href="#rnc-close" role="tab" class="zmhs-link nav-link">收起<!--<i class="fa fa-arrow-right"></i>--></a>
                                                           </li>
                                                           <li class="nav-item" data-toggle="tooltip" data-placement="left" title="项目特征">
-                                                              <a data-toggle="tab" id="xm-nav" href="#rnc-xm" role="tab" class="zmhs-link nav-link"><i class="fa fa-info-circle"></i></a>
+                                                              <a data-toggle="tab" id="xm-nav" href="#rnc-xm" role="tab" class="zmhs-link nav-link">特征<!--<i class="fa fa-info-circle"></i>--></a>
                                                           </li>
-                                                          <li class="nav-item" data-toggle="tooltip" data-placement="left" title="附注条件"><a data-toggle="tab" href="#rnc-zm" role="tab"class="zmhs-link nav-link"><i class="fa fa-check-circle-o"></i></a></li>
-                                                          <li class="nav-item" data-toggle="tooltip" data-placement="left" title="自定义系数"><a data-toggle="tab" href="#rnc-cus" role="tab"class="zmhs-link nav-link"><i class="fa fa-wrench"></i></a></li>
-                                                          <li class="nav-item" data-toggle="tooltip" data-placement="left" title="增减换算"><a data-toggle="tab" href="#rnc-fz" role="tab"class="zmhs-link nav-link "><i class="fa fa-plus"></i></a></li>
+                                                          <li class="nav-item" data-toggle="tooltip" data-placement="left" title="附注条件"><a data-toggle="tab" href="#rnc-zm" role="tab"class="zmhs-link nav-link">换算<!--<i class="fa fa-check-circle-o"></i>--></a></li>
+                                                          <li class="nav-item" data-toggle="tooltip" data-placement="left" title="自定义系数"><a data-toggle="tab" href="#rnc-cus" role="tab"class="zmhs-link nav-link">系数<!--<i class="fa fa-wrench"></i>--></a></li>
+                                     <!--                     <li class="nav-item" data-toggle="tooltip" data-placement="left" title="增减换算"><a data-toggle="tab" href="#rnc-fz" role="tab"class="zmhs-link nav-link "><i class="fa fa-plus"></i></a></li>-->
                                                         <!--  <li class="nav-item"><a data-toggle="tab" href="#rnc-xm" role="tab"  class="nav-link">项目特征</a></li>
                                                           <li class="nav-item"><a data-toggle="tab" href="#rnc-zm" role="tab" class="nav-link">子目换算</a></li>
                                                           <li class="nav-item"><a data-toggle="tab" href="#rnc-fz" role="tab" class="nav-link">辅助定额</a></li>-->

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

@@ -73,7 +73,7 @@ var blockLibObj = {
         $.bootstrapLoading.start();
         let me = this;
         let namesAndLib = await ajaxPost('/blockLib/getLibNamesAndFirstLib',
-            {userID: userID, userName: userName, compilationID: projectInfoObj.projectInfo.compilation});
+            {userID: userID, userName: $("#link_userName").text(), compilationID: projectInfoObj.projectInfo.compilation});
         function getLibNamesHtml(libsArr) {
             let result = '';
             for (let lib of libsArr) {

+ 2 - 2
web/building_saas/main/js/views/project_view.js

@@ -3212,8 +3212,8 @@ function disableTools(){
     $('#generalOpts1').prop('disabled', 'disabled');
     $('#generalOpts2').prop('disabled', 'disabled');
     //补充库编辑器
-    $('#compleRationLib').addClass('disabled');
-    $('#compleGljLib').addClass('disabled')
+    $('.compleRationLib').addClass('disabled');
+    $('.compleGljLib').addClass('disabled')
     //库
     //$('#stdBillsGuidanceTab').addClass('disabled');
     $('#stdBillsTab').addClass('disabled');

+ 44 - 8
web/building_saas/report/html/rpt_print.html

@@ -47,32 +47,36 @@
                 if (idx === 0) {
                     $(document).attr("title", pageData[JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME]);
                 }
-                let svgArr = rptPrintHelper.buildSvgArr(pageData, G_OFFSET_X, G_OFFSET_Y);
+                let orgPixelSize = getPixelSize(pageData);
+                let actArea = getActualArea(pageData);
+                let svgArr = rptPrintHelper.buildSvgArr(pageData, actArea, G_OFFSET_X, G_OFFSET_Y);
                 //let orientation = (pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][0] < pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][1])?"纵向":"横向";
                 let orientation = "纵向";
-                showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, orientation);
+                showPreviewData(svgArr, actArea, scaleFactor, sessionStorage.pageSize, orientation, orgPixelSize);
             }
             window.print();
         } else if (sessionStorage.currentPageData) {
             let pageData = JSON.parse(sessionStorage.currentPageData);
             let scaleFactor = parseInt(sessionStorage.scaleFactor);
-            let svgArr = rptPrintHelper.buildSvgArr(pageData, G_OFFSET_X, G_OFFSET_Y);
+            let orgPixelSize = getPixelSize(pageData);
+            let actArea = getActualArea(pageData);
+            let svgArr = rptPrintHelper.buildSvgArr(pageData, actArea, G_OFFSET_X, G_OFFSET_Y);
             $(document).attr("title", pageData[JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME]);
             //showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, sessionStorage.orientation);
-            showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, "纵向");
+            showPreviewData(svgArr, actArea, scaleFactor, sessionStorage.pageSize, "纵向", orgPixelSize);
             window.print();
         } else if (sessionStorage.currentPageSvgData) {
             let svgArr = JSON.parse(sessionStorage.currentPageSvgData);
             let scaleFactor = 1;
             //showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, sessionStorage.orientation);
-            showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, "纵向");
+            showPreviewData(svgArr, null, scaleFactor, sessionStorage.pageSize, "纵向", null);
             window.print();
         } else {
             //alert("没有报表数据!");
         }
     }
 
-    function showPreviewData(svgArr, scaleFactor, pageSize, orientation) {
+    function showPreviewData(svgArr, actAreaArr, scaleFactor, pageSize, orientation, orgPixelSize) {
         let orgHeight = 793, orgWidth = 1122;
         if (pageSize === 'A3') {
             orgHeight = 1122;
@@ -89,16 +93,48 @@
         }
 
         for (let i = 0; i < svgArr.length; i++) {
+            let offsetHeight = 0, offsetWidth = 0;
+            if (actAreaArr) {
+                offsetWidth = actAreaArr[i].Left + (pageWidth - actAreaArr[i].Right) - 5;
+                offsetHeight = actAreaArr[i].Top + (pageHeight - actAreaArr[i].Bottom) - 5;
+                if (orgPixelSize[0] > orgPixelSize[1]) {
+                    //横向强制改纵向(系统是以纵向为准),那么计算offset的方式会有所不同
+                    offsetWidth = actAreaArr[i].Top + (pageWidth - actAreaArr[i].Bottom) - 5;
+                    offsetHeight = actAreaArr[i].Left + (pageHeight - actAreaArr[i].Right) - 5;
+                }
+            }
             let div = $('<div class="pageBreak"></div>');
             div.append($(svgArr[i].join("")));
             $(div).find("svg").each(function(cIdx,elementSvg){
-                elementSvg.setAttribute('height', pageHeight);
-                elementSvg.setAttribute('width', pageWidth);
+                elementSvg.setAttribute('height', pageHeight - offsetHeight);
+                elementSvg.setAttribute('width', pageWidth - offsetWidth);
             });
             $("body").append(div);
         }
     }
 
+    function getActualArea(pageData) {
+        let rst = [];
+        for (let item of pageData.items) {
+            let area = {Left: 10000, Right: 0, Top: 10000, Bottom: 0};
+            for (let cell of item.cells) {
+                if (cell.area.Left < area.Left) {
+                    area.Left = cell.area.Left;
+                }
+                if (cell.area.Right > area.Right) {
+                    area.Right = cell.area.Right;
+                }
+                if (cell.area.Top < area.Top) {
+                    area.Top = cell.area.Top;
+                }
+                if (cell.area.Bottom > area.Bottom) {
+                    area.Bottom = cell.area.Bottom;
+                }
+            }
+            rst.push(area);
+        }
+        return rst;
+    }
     function closing() {
         //
     }

+ 13 - 4
web/building_saas/report/js/rpt_print.js

@@ -49,7 +49,7 @@ let rptPrintHelper = {
     previewSvgData: function() {
         //
     },
-    buildSvgArr: function (pagesData, offsetX, offsetY) {
+    buildSvgArr: function (pagesData, actAreaArr, offsetX, offsetY) {
         let styles = pagesData[JV.NODE_STYLE_COLLECTION],
             fonts = pagesData[JV.NODE_FONT_COLLECTION],
             controls = pagesData[JV.NODE_CONTROL_COLLECTION]
@@ -64,12 +64,20 @@ let rptPrintHelper = {
         }
         for (let idx = 0; idx < pagesData.items.length; idx++) {
             let page = pagesData.items[idx];
+            let actAreaOffsetX = 0, actAreaOffsetY = 0;
+            if (actAreaArr) {
+                actAreaOffsetX = actAreaArr[idx].Left;
+                actAreaOffsetY = actAreaArr[idx].Top;
+                if (pixelSize[0] > pixelSize[1]) {
+                }
+            }
             let svgPageArr = [];
             svgPageArr.push("<svg width='" + pixelSize[0] + "' height='" + pixelSize[1] + "'>");
             // let adjustY = 0.5 * ((idx + 1) % 2);
             let adjustY = 0.5;
             for (let cell of page.cells) {
-                svgPageArr.push(buildCellSvg(cell, fonts, styles, controls, page[JV.PROP_PAGE_MERGE_BORDER], pagesData[JV.BAND_PROP_MERGE_BAND], offsetX, offsetY, adjustY, canvas, isHtoV, pixelSize));
+                svgPageArr.push(buildCellSvg(cell, fonts, styles, controls, page[JV.PROP_PAGE_MERGE_BORDER], pagesData[JV.BAND_PROP_MERGE_BAND],
+                    offsetX - actAreaOffsetX, offsetY - actAreaOffsetY, adjustY, canvas, isHtoV, pixelSize, actAreaArr[idx]));
             }
             svgPageArr.push("</svg>");
             rst.push(svgPageArr);
@@ -98,7 +106,7 @@ function getActualBorderStyle(cell, styles, mergeBorderStyle, pageBorderArea, bo
     return rst;
 }
 
-function buildCellSvg(cell, fonts, styles, controls, pageMergeBorder, rptMergeBorder, offsetX, offsetY, adjustY, canvas, isHtoV, pixelSize) {
+function buildCellSvg(cell, fonts, styles, controls, pageMergeBorder, rptMergeBorder, offsetX, offsetY, adjustY, canvas, isHtoV, pixelSize, actArea) {
     let rst = [];
     let style = styles[cell[JV.PROP_STYLE]];
     let mergeBandStyle = null;
@@ -116,7 +124,8 @@ function buildCellSvg(cell, fonts, styles, controls, pageMergeBorder, rptMergeBo
     ;
     let HtoVStr = "";
     if (isHtoV) {
-        HtoVStr = ` transform="translate(`+ pixelSize[1] + `,0) rotate(90)"`;
+        //HtoVStr = ` transform="translate(`+ pixelSize[1] + `,0) rotate(90)"`;
+        HtoVStr = ` transform="translate(`+ (actArea.Bottom - actArea.Top + 5) + `,0) rotate(90)"`;
     }
     if (style) {
         let leftBS = getActualBorderStyle(cell, styles, mergeBandStyle, (pageMergeBorder)?pageMergeBorder:rptMergeBorder[JV.PROP_AREA], JV.PROP_LEFT);

+ 50 - 34
web/common/html/header.html

@@ -1,4 +1,4 @@
-<nav class="navbar navbar-expand-lg p-0 d-flex">
+<nav class="navbar p-0 ">
     <% if(controller === 'boot' || controller === 'pm'){ %>
     <!--<a style="text-decoration: none" href="javascript:void(0);" class="header-logo">-->
     <% }else { %>
@@ -10,33 +10,13 @@
         <div class="p-title"><%= versionName %></div>
     </div>
     <!--</a>-->
-    <div  class="navbar-text navbar-crumb px-1" id="fullpath">
-
+    <div  class="navbar-text navbar-crumb px-1 mr-auto" id="fullpath">
     </div>
-   <!-- <ul class="nav navbar-nav px-1">
-        <li class="nav-item">
-            <a class="nav-link" href="#" aria-expanded="false" data-toggle="modal" data-target="#poj-set"><i class="fa fa-cog"></i> 项目属性</a>
-        </li>
-        <li class="nav-item">
-                        <span class="dropdown">
-                            <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown"><i class="fa  fa-cloud-upload"></i> 导入</a>
-                                <div class="dropdown-menu">
-                                    <a class="dropdown-item" href="#import" data-toggle="modal" data-target="#import">导入09表Excel清单</a>
-                                    <a class="dropdown-item" href="#">导入广联达算量Excel清单</a>
-                                </div>
-                        </span>
-        </li>
-    </ul>-->
-    <div id="testDisplay" style="color:#ff7e0e;">&nbsp;&nbsp;</div>
-    <div class="ml-auto navbar-text p-0">
-        <ul class="nav navbar-nav">
+    <div class="navbar-text p-0 navbar-expand-sm">
+        <!--大屏菜单-->
+        <ul class="nav navbar-nav" id="fluid-menu">
             <li class="nav-item dropdown">
-                <!--<a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown"><%= sessionUser.real_name === '' ? sessionUser.mobile : sessionUser.real_name %></a>-->
-                <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" id="link_userName"></a>
-                <script>
-                    let userName = "<%= sessionUser.real_name === '' ? sessionUser.mobile : sessionUser.real_name %>";
-                    document.getElementById('link_userName').innerHTML = userName;
-                </script>
+                <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" id="link_userName"><%= sessionUser.real_name === '' ? sessionUser.mobile : sessionUser.real_name %></a>
                 <div class="dropdown-menu dropdown-menu-right">
                     <a class="dropdown-item" href="/user/info" target="_blank">账号资料</a>
                     <a class="dropdown-item" href="/user/buy" target="_blank">产品激活</a>
@@ -49,9 +29,8 @@
             <li class="nav-item dropdown">
                 <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-wrench" data-placement="bottom"></i> 工具</a>
                 <div class="dropdown-menu dropdown-menu-right">
-                    <!--<a id="compleRationLib" class="dropdown-item" href="javascript:void(0);" data-toggle="modal" data-target="#comple-ration">定额库编辑器</a> -->
-                    <a id="compleRationLib" class="dropdown-item" href="/complementaryRation/ration" target="_blank">定额库编辑器</a>
-                    <a id="compleGljLib" class="dropdown-item" href="/complementaryGlj" target="_">人材机库编辑器</a>
+                    <a id="compleRationLib" class="dropdown-item compleRationLib" href="/complementaryRation/ration" target="_blank">定额库编辑器</a>
+                    <a id="compleGljLib" class="dropdown-item compleGljLib" href="/complementaryGlj" target="_">人材机库编辑器</a>
                 </div>
             </li>
             <% } %>
@@ -62,17 +41,53 @@
                     <a class="dropdown-item" href="#">升级说明</a>
                     <a class="dropdown-item" href="#">重庆市2008定额说明</a>-->
                     <a class="dropdown-item" href="https://smartcost.com.cn/" target="_blank">纵横官网</a>
-                  <!--  <a class="dropdown-item" href="#">动画教程</a>-->
+                    <!--  <a class="dropdown-item" href="#">动画教程</a>-->
                     <a id="customerService" class="dropdown-item" href="javascript:void(0);">联系客服</a>
-                  <!--  <a class="dropdown-item" href="#">关于</a>-->
+                    <!--  <a class="dropdown-item" href="#">关于</a>-->
                 </div>
             </li>
-          <!--  <li class="nav-item">
-                <a class="nav-link <% if (unreadCount > 0) { %>new-msg<% } %>" id="notify-info" data-toggle="modal" data-target="#msg" href="javacript:void(0);">
-                    <i class="fa fa-envelope-o" aria-hidden="true"></i>&nbsp;<span id="unread-num"><%= unreadCount %></span>
+           <!-- <li class="nav-item">
+                <a class="nav-link new-msg" data-toggle="modal" data-target="#msg" href="javacript:void(0);">
+                    <i class="fa fa-envelope-o" aria-hidden="true"></i>&nbsp;2
                 </a>
             </li>-->
         </ul>
+        <!--小屏菜单-->
+        <ul class="nav navbar-nav" id="min-menu">
+            <li class="nav-item dropdown">
+                <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" data-submenu="" aria-expanded="false">
+                    <i class="fa fa-bars"></i>
+                </a>
+                <div class="dropdown-menu dropdown-menu-right">
+                    <div class="dropdown dropleft dropdown-submenu">
+                        <button class="dropdown-item dropdown-toggle" type="button" data-toggle="dropdown"><%= sessionUser.real_name === '' ? sessionUser.mobile : sessionUser.real_name %></button>
+                        <div class="dropdown-menu">
+                            <a class="dropdown-item" href="/user/info" target="_blank">账号资料</a>
+                            <a class="dropdown-item" href="/user/buy" target="_blank">产品激活</a>
+                            <a class="dropdown-item" href="/user/preferences" target="_blank">登录设置</a>
+                            <div class="dropdown-divider"></div>
+                            <a class="dropdown-item" href="/logout">退出登录</a>
+                        </div>
+                    </div>
+                    <% if (action === 'index' && controller === 'main') {%>
+                    <div class="dropdown dropleft dropdown-submenu">
+                        <button class="dropdown-item dropdown-toggle" type="button" data-toggle="dropdown">工具</button>
+                        <div class="dropdown-menu">
+                            <a  class="dropdown-item compleRationLib" href="/complementaryRation/ration" target="_blank">定额库编辑器</a>
+                            <a  class="dropdown-item compleGljLib" href="/complementaryGlj" target="_">人材机库编辑器</a>
+                        </div>
+                    </div>
+                    <% } %>
+                    <div class="dropdown dropleft dropdown-submenu">
+                        <button class="dropdown-item dropdown-toggle" type="button" data-toggle="dropdown">帮助</button>
+                        <div class="dropdown-menu">
+                            <a class="dropdown-item" href="https://smartcost.com.cn/" target="_blank">纵横官网</a>
+                            <a id="customerService" class="dropdown-item" href="javascript:void(0);">联系客服</a>
+                        </div>
+                    </div>
+                </div>
+            </li>
+        </ul>
     </div>
 </nav>
 <!--弹出补充定额库-->
@@ -250,6 +265,7 @@
 <script type="text/javascript" src="/lib/jquery-ui/jquery-ui.min.js"></script>
 <script src="/lib/popper/popper.min.js"></script>
 <script src="/lib/bootstrap/bootstrap.min.js"></script>
+<script src="/lib/bootstrap/bootstrap-submenu.js"></script>
 <script type="text/javascript" src="/web/building_saas/js/moment.min.js"></script>
 <script type="text/javascript" src="/web/building_saas/js/message.js"></script>
 <script type="text/javascript" src="/public/web/scMathUtil.js"></script>