Browse Source

调整标段合同管理入口及样式

ellisran 1 tuần trước cách đây
mục cha
commit
928de3fc6e

+ 8 - 2
app/base/base_controller.js

@@ -36,7 +36,7 @@ class BaseController extends Controller {
             menuList.info.display = ctx.subProject.page_show.openInfo || false;
             menuList.datacollect.display = ctx.subProject.showDataCollect || false;
             menuList.file.display = ctx.subProject.page_show.openFile || false;
-            menuList.contract.display = ctx.subProject.page_show.openContract || false;
+            menuList.contract.display = ctx.subProject.page_show.openContract || ctx.subProject.page_show.openTenderContract || false;
             menuList.financial.display = ctx.subProject.page_show.openFinancial || false;
             menuList.budget.display = ctx.subProject.page_show.openBudget || false;
             menuList.payment.display = ctx.subProject.page_show.openPayment || false;
@@ -47,7 +47,13 @@ class BaseController extends Controller {
                     if (index === 'tender') {
                         im.url = `/sp/${ctx.subProject.id}${ctx.curListUrl}`;
                     } else if (index === 'contract') {
-                        im.url = `/sp/${ctx.subProject.id}/${im.controller}/panel`;
+                        for (const child of im.children) {
+                            if (child.msg === 'subproj') {
+                                child.url = `/sp/${ctx.subProject.id}/contract/panel`;
+                            } else if (child.msg === 'tender') {
+                                child.url = `/sp/${ctx.subProject.id}/contract/tender`;
+                            }
+                        }
                     } else if (index === 'financial') {
                         im.url = `/sp/${ctx.subProject.id}/${im.controller}/${ctx.subProject.financialToUrl}`;
                     } else {

+ 1 - 1
app/const/account_permission.js

@@ -23,7 +23,7 @@ create_tender_group[create_tender.cjgcbg] = '创建工程变更';
 const permission = {
     tender: {
         class: 'fa fa-list-ul',
-        title: '标段管理',
+        title: '计量管理',
         type: 'checkbox',
         children: [
             { title: '创建标段', value: 1 },

+ 8 - 0
app/public/css/main.css

@@ -756,6 +756,14 @@ input.nospin[type="number"]{-moz-appearance:textfield;}
 .bg-nav .menu-arrow{
   margin:22px 8px 0 0
 }
+.bg-nav .child-bg {
+    background-color: #10354D;
+}
+.child-up-down {
+    width: 12px!important;
+    margin: 0 0 0 8px!important;
+    font-size: 12px!important;
+}
 .nav-padding{
   margin-top: 30px;
 }

+ 3 - 0
app/public/css/qa_side.css

@@ -11,3 +11,6 @@
 .bg-nav > li > a:hover, .bg-nav > li.active > a:hover{
   background:#0C3E00;
 }
+.bg-nav .child-bg {
+  background-color: #2C6051;
+}

+ 22 - 0
app/public/js/global.js

@@ -101,6 +101,28 @@ $(function(){
         }
     });
 
+    $('.bg-nav > li > .nav-up-down').on('click', function() {
+        const nav = $(this).attr('id');
+        if ($(this).children('.child-up-down').hasClass('fa-angle-down')) {
+            $(this).children('.child-up-down').removeClass('fa-angle-down').addClass('fa-angle-right');
+            $('.bg-nav li[data-index="'+ nav + '"]').slideUp('fast');
+        } else {
+            $(this).children('.child-up-down').removeClass('fa-angle-right').addClass('fa-angle-down');
+            $('.bg-nav li[data-index="'+ nav + '"]').slideDown('fast');
+        }
+        setLocalCache('nav-' + nav, $(this).children('.child-up-down').hasClass('fa-angle-down') ? 1 : 0);
+    });
+
+    // 侧栏菜单状态判断展开收起
+    $('.bg-nav > li > .nav-up-down').each(function() {
+        const nav = $(this).attr('id');
+        if (getLocalCache('nav-' + nav) == 0) {
+            $(this).children('.child-up-down').removeClass('fa-angle-down').addClass('fa-angle-right');
+            $('.bg-nav li[data-index="'+ nav + '"]').slideUp(0);
+        }
+    });
+
+
     // 数据提交
     $("#submit-form").click(function() {
         $("#save-form").submit();

+ 20 - 26
app/view/contract/tender.ejs

@@ -1,13 +1,7 @@
-<% include ../tender/list_sub_menu.ejs %>
 <div class="panel-content">
     <div class="panel-title fluid">
-        <div class="title-main  d-flex">
-            <% include ../tender/list_sub_mini_menu.ejs %>
-            <div class="d-inline-block">
-                <div class="btn-group group-tab">
-                </div>
-            </div>
-            <div class="d-inline-block mr-2" id="show-level"></div>
+        <div class="title-main d-flex justify-content-between">
+            <div id="show-level"></div>
         </div>
     </div>
     <div class="content-wrap">
@@ -36,22 +30,22 @@
 
     const uphlname = 'user_' + uid + '_pro_' + pid + '_category_hide_contract_list';
 
-    $.subMenu({
-        menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
-        toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
-        key: 'list.menu.1.0.0',
-        miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1',
-        callback: function (info) {
-            if (info.mini) {
-                $('.panel-title').addClass('fluid');
-                $('#sub-menu').removeClass('panel-sidebar');
-                $('.c-body table thead').css('left', '56px');
-            } else {
-                $('.panel-title').removeClass('fluid');
-                $('#sub-menu').addClass('panel-sidebar');
-                $('.c-body table thead').css('left', '176px');
-            }
-            autoFlashHeight();
-        }
-    });
+    // $.subMenu({
+    //     menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
+    //     toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
+    //     key: 'list.menu.1.0.0',
+    //     miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1',
+    //     callback: function (info) {
+    //         if (info.mini) {
+    //             $('.panel-title').addClass('fluid');
+    //             $('#sub-menu').removeClass('panel-sidebar');
+    //             $('.c-body table thead').css('left', '56px');
+    //         } else {
+    //             $('.panel-title').removeClass('fluid');
+    //             $('#sub-menu').addClass('panel-sidebar');
+    //             $('.c-body table thead').css('left', '176px');
+    //         }
+    //         autoFlashHeight();
+    //     }
+    // });
 </script>

+ 19 - 1
app/view/layout/menu.ejs

@@ -18,13 +18,31 @@
             <% for (const index in ctx.menuList) { %>
             <% const menu = ctx.menuList[index]; %>
             <% if (!menu.display) { continue } %>
+            <% if (menu.children && menu.children.length > 0) { %>
+            <li>
+                <a href="javascript:void(0);" id="<%- 'nav_' + index%>" class="nav-up-down">
+                    <i class="fa <%- menu.icon %>"></i>
+                    <% if (menu.caption) { %><span class="d-inline-block" style="vertical-align: text-bottom;"><%- menu.caption %></span><% } %>
+                    <i class="fa fa-angle-down d-inline-block child-up-down"></i>
+                </a>
+            </li>
+            <% for (const child of menu.children) { %>
+                <li data-index="<%- 'nav_' + index %>" class="child-bg <% if((ctx.controllerName === child.controller && (!child.notIncludedUrl || !child.notIncludedUrl.some(item => ctx.url.includes(item)))) || (!!child.controllers && child.controllers.indexOf(ctx.controllerName) >= 0 && (!child.includedUrl || !child.includedUrl[ctx.controllerName] || child.includedUrl[ctx.controllerName].some(item => ctx.url.includes(item)))) || (child.url && child.url === ctx.url)) { %>active<% } %>">
+                    <a href="<%- child.url %>" data-toggle="tooltip" data-placement="right" title="" data-original-title="<%- child.name %>">
+                        <i></i>
+                        <% if (child.caption) { %><span class="d-inline-block" style="vertical-align: text-bottom;"><%- child.caption %></span><% } %>
+                    </a>
+                </li>
+            <% } %>
+            <% } else { %>
             <li <% if((ctx.controllerName === menu.controller && (!menu.notIncludedUrl || !menu.notIncludedUrl.some(item => ctx.url.includes(item)))) || (!!menu.controllers && menu.controllers.indexOf(ctx.controllerName) >= 0 && (!menu.includedUrl || !menu.includedUrl[ctx.controllerName] || menu.includedUrl[ctx.controllerName].some(item => ctx.url.includes(item)))) || (menu.url && menu.url === ctx.url)) { %>class="active"<% } %>>
                 <a href="<%- menu.url %>" id="<%- 'nav_' + index%>" data-toggle="tooltip" data-placement="right" title="" data-original-title="<%- menu.name %>">
                     <i class="fa <%- menu.icon %>"></i>
-                    <% if (menu.caption) { %><span class="d-inline-block" style="vertical-align: text-bottom;"> <%- menu.caption %></span><% } %>
+                    <% if (menu.caption) { %><span class="d-inline-block" style="vertical-align: text-bottom;"><%- menu.caption %></span><% } %>
                 </a>
             </li>
             <% } %>
+            <% } %>
         </ul>
     </div>
     <div class="nav-bottom mt-auto">

+ 1 - 1
app/view/tender/list_sub_menu.ejs

@@ -1,5 +1,5 @@
 <div class="panel-sidebar" id="sub-menu">
-    <div class="sidebar-title text-center"><i class="fa fa-list-ul fa-fw"></i> 标段管理</div>
+    <div class="sidebar-title text-center"><i class="fa fa-list-ul fa-fw"></i> 计量管理</div>
     <div class="scrollbar-auto">
         <% include ./list_sub_menu_list.ejs %>
         <div class="side-show"></div>

+ 0 - 9
app/view/tender/list_sub_menu_list.ejs

@@ -5,15 +5,6 @@
         </li>
     </ul>
 </div>
-<% if (ctx.subProject.page_show.openTenderContract) { %>
-<div class="nav-box">
-    <ul class="nav-list list-unstyled">
-        <li class="<% if (ctx.url === '/sp/' + ctx.subProject.id + '/contract/tender') { %>active<% } %>">
-            <a href="/sp/<%- ctx.subProject.id %>/contract/tender"><span class="ml-3">合同管理</span></a>
-        </li>
-    </ul>
-</div>
-<% } %>
 <% if (ctx.subProject.page_show.drawing) { %>
 <div class="nav-box">
     <ul class="nav-list list-unstyled">

+ 22 - 9
config/menu.js

@@ -91,24 +91,37 @@ const menu = {
         controllers: ['info', 'progress', 'data', 'push'],
     },
     tender: {
-        name: '标段管理',
+        name: '计量管理',
         icon: 'fa-list-ul',
         display: true,
         children: null,
-        caption: '标段管理',
+        caption: '计量管理',
         controller: 'list',
-        controllers: ['list', 'tender', 'contract', 'construction', 'spss'],
-        includedUrl: { contract: ['/contract/tender'] },
+        controllers: ['list', 'tender', 'construction', 'spss'],
+        // includedUrl: { contract: ['/contract/tender'] },
     },
     contract: {
         name: '合同管理',
         icon: 'fa-file-text-o',
         display: true,
         // url: '/contract/detail',
-        children: null,
+        children: [
+            {
+                msg: 'subproj',
+                name: '项目合同',
+                caption: '项目合同',
+                controller: 'contract',
+                notIncludedUrl: ['/contract/tender'],
+            },
+            {
+                msg: 'tender',
+                name: '标段合同',
+                caption: '标段合同',
+                controllers: ['contract'],
+                includedUrl: { contract: ['/contract/tender'] },
+            },
+        ],
         caption: '合同管理',
-        controller: 'contract',
-        notIncludedUrl: ['/contract/tender'],
     },
     quality: {
         name: '质量管理',
@@ -398,10 +411,10 @@ const settingMenu = {
         caption: '显示设置',
     },
     manage: {
-        name: '标段管理',
+        name: '计量管理',
         display: false,
         url: '/setting/manage',
-        caption: '标段管理',
+        caption: '计量管理',
     },
 };