Просмотр исходного кода

Merge branch '1.0.0_online' of http://192.168.1.12:3000/SmartCost/ConstructionCost into 1.0.0_online

TonyKang 7 лет назад
Родитель
Сommit
5438921c75

+ 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;
+    }
 }

+ 2 - 2
web/building_saas/glj/html/project_glj.html

@@ -29,8 +29,8 @@
                 <li class="nav-item"><a class="nav-link" href="javascript:void(0)" id="ZYCL">主要材料</a></li>
             </ul>
         </div>
-        <div class="main-content col p-0" id="project-glj-main">
-            <div class="top-content" id="projectGljTop">
+        <div class="main-content col p-0" id="project-glj-main" style="overflow: hidden;">
+            <div class="top-content" id="projectGljTop" style="overflow: hidden">
                 <div class="main-data-top" style="width: 100% " id="project_glj_sheet">
                 </div>
             </div>

+ 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');
         })

+ 13 - 8
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">
@@ -151,7 +152,7 @@
                               <a class="nav-link px-3 right-nav-link"  href="javascript:void(0)" id = 'locateTab' relaPanel="#locate">查找定位</a>
                           </li>-->
                           <li class="nav-item">
-                              <a class="nav-link px-1 right-nav-link" href="javascript:void(0)" id = 'stdBillsGuidanceTab' relaPanel="#zy">清单规则</a>
+                              <a class="nav-link px-1 right-nav-link" href="javascript:void(0)" id = 'stdBillsGuidanceTab' relaPanel="#zy">标准清单</a>
                           </li>
                          <!-- <li class="nav-item">
                               <a class="nav-link px-3" href="javascript:void(0)" id = 'stdBillsTab' relaPanel="#qd">清单规则</a>
@@ -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>-->
@@ -439,12 +440,16 @@
                                       <div class="container-fluid" id="qdjl" role="tabpanel">
                                           <div class="row p-0" style="background: #efefef">
                                               <div class="col-6 p-0">
+                                                  <div id="qdjlTools" style="width: calc(100% - 5px); border-bottom: solid 1px lightgrey">
+                                                      <a id="elfInsertRation" href="javascript:void(0);" class="btn btn-sm btn-primary px-1 m-1">应用选项</a>
+                                                      <a id="elfInsertSingle" href="javascript:void(0)" class="btn btn-sm btn-primary px-1">应用单条</a>
+                                                  </div>
                                                   <div class="main-data-bottom ovf-hidden" id="elfItems">
                                                   </div>
                                               </div>
                                               <div class="col-6 p-1">
-                                                  <p class="mt-3"><a id="elfInsertRation" href="javascript:void(0);" class="btn btn-sm btn-primary">应用选项</a></p>
-                                                  <p><a id="elfInsertSingle" href="javascript:void(0)" class="btn btn-sm btn-primary">应用单条</a></p>
+                                                  <!--<p class="mt-3"><a id="elfInsertRation" href="javascript:void(0);" class="btn btn-sm btn-primary">应用选项</a></p>
+                                                  <p><a id="elfInsertSingle" href="javascript:void(0)" class="btn btn-sm btn-primary">应用单条</a></p>-->
                                               </div>
                                           </div>
                                       </div>

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

@@ -64,7 +64,7 @@ function getMainResizeEles() {
         min: 180,
         max: `$(window).height()-$('.header').height()-$('#headerToolsBar').height()-180-5`,
         notTopSpread: 0,
-        notBottomSpread: $('#bottom_div ul').height(),
+        notBottomSpread: $('#bottom_div ul').height() + $('#qdjlTools').height(),
         totalHeight: `$(window).height()-$('.header').height()-$('#headerToolsBar').height()-5`
     };
     return mainResizeEles;

+ 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');

+ 29 - 18
web/building_saas/pm/js/pm_newMain.js

@@ -3810,14 +3810,13 @@ $('#share-confirm').click(function(){
         $('#shareToInfo').height(tbodyTotalHeight);
         $('#shareToInfo').append($tr);
         //更新缓存
-       // if (shareSeleted.data.shareInfo.length === 0) {
-            shareSeleted.data.shareInfo = shareSeleted.data.shareInfo.concat(shareData);
-            let sheet = projTreeObj.workBook.getSheet(0);
-            projTreeObj.renderSheetFuc(sheet, function () {
-                sheet.invalidateLayout();
-                sheet.repaint();
-            });
-       // }
+        shareSeleted.data.shareInfo = shareSeleted.data.shareInfo.concat(shareData);
+        let sheet = projTreeObj.workBook.getSheet(0);
+        projTreeObj.renderSheetFuc(sheet, function () {
+            sheet.invalidateLayout();
+            sheet.repaint();
+        });
+        bindCancelShareCheck(shareSeleted);
         $.bootstrapLoading.end();
         $('#shareFindDiv').hide();
         $('#share-confirm').addClass('disabled');
@@ -3826,16 +3825,6 @@ $('#share-confirm').click(function(){
         $('#share-confirm').removeClass('disabled');
     });
 });
-//允许拷贝
-/*$('#allowCopy').change(function () {
-    let checked = $(this).prop('checked');
-    if(checked){
-        $('#allowCopyHint').show();
-    }
-    else{
-        $('#allowCopyHint').hide();
-    }
-});*/
 
 //批量替换文件,切换建设项目
 $('#otherProject').change(function(){
@@ -3916,6 +3905,28 @@ function setShareToModal(selected){
         $('#shareToInfo').height(tbodyTotalHeight);
         let infoHtml = infoArr.join('');
         $('#shareToInfo').html(infoHtml);
+        bindCancelShareCheck(selected);
+    });
+}
+//取消分享的勾选操作
+//@param {Object}selected(选中项目节点) @return {void}
+function bindCancelShareCheck(selected) {
+    $('#shareToInfo input[value="cancelShare"]').unbind('click');
+    $('#shareToInfo input[value="cancelShare"]').click(function () {
+        let index = $(this).parent().parent().index() - 1,
+            $coo = $(this).parent().prev().children(),
+            $copy = $(this).parent().prev().prev().children();
+        let isCancel = $(this).prop('checked');
+        if (isCancel) {//取消分享,取消拷贝、协作勾选
+            $coo.prop('checked', false);
+            $copy.prop('checked', false);
+        } else {//取消取消分享,恢复原本的拷贝、协作勾选状态
+            let shareData = selected.data.shareInfo[index];
+            if (shareData) {
+                $coo.prop('checked', shareData.allowCooperate);
+                $copy.prop('checked', shareData.allowCopy);
+            }
+        }
     });
 }
 //更新项目分享信息

+ 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>