소스 검색

Merge remote-tracking branch 'remotes/origin/dev' into uat

MaiXinRong 4 년 전
부모
커밋
7975e2d361

+ 1 - 1
app/controller/report_controller.js

@@ -77,7 +77,7 @@ module.exports = app => {
                     pageShow = {};
                 }
                 // console.log(pageShow);
-                pageShow.showArchive = 1;
+                pageShow.showArchive = 0;
                 const tender = ctx.tender;
                 const stage = ctx.stage;
                 let stage_id = -1;

+ 17 - 5
app/public/css/main.css

@@ -714,14 +714,26 @@ input.nospin[type="number"]{-moz-appearance:textfield;}
 .bg-nav .menu-arrow{
   margin:22px 8px 0 0
 }
+.nav-box {
+  padding-top: 5px
+}
+.nav-box ul{
+  margin-bottom:0;
+}
 .nav-box h3{
   font-size: 14px;
   font-weight: 700;
-  padding-bottom: 4px;
   border-bottom: 1px solid #e2eaec;
-  padding-right: 15px;
-  margin-bottom: 10px;
-  margin-left: 17px
+  padding-right: 5px;
+  margin-bottom:0px;
+  margin-left: 17px;
+  height: 30px;
+  line-height: 30px
+}
+.nav-box .h3{
+  font-size: 14px;
+  font-weight: 700;
+  padding-left:12px;
 }
 .nav-box > .sub-list > li > a{
   padding-left: 40px
@@ -760,7 +772,7 @@ input.nospin[type="number"]{-moz-appearance:textfield;}
 }
 .nav-list li.active a{
   background:#e4e7ea;
-  font-weight: 600
+  font-weight: 600;
 }
 .side-menu .nav-link{
   padding:.5rem .6rem;

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 0
app/public/js/CalcEval.js


+ 2 - 1
app/public/js/material_list.js

@@ -849,7 +849,8 @@ $(document).ready(() => {
                         const [valid, msg] = this._checkExprValid(expr);
                         if (!valid) return [valid, msg];
                         data.expr = expr;
-                        data.quantity = eval(expr);
+                        const ce = new CalcEval();
+                        data.quantity = ce.eval(expr);
                     }
                 } else {
                     data.quantity = 0;

+ 37 - 36
app/public/js/stage_pay.js

@@ -665,26 +665,26 @@ $(document).ready(() => {
                     data.updateData.name = validText;
                 } else {
                     data.updateData.id = select.pid;
-                    if (validText) {
-                        if (col.field === 'sprice') {
-                            const [valid, msg] = paySpreadObj._checkSExpr(select, validText, data.updateData);
-                            if (!valid) {
-                                toastr.warning(msg);
-                                SpreadJsObj.reLoadRowData(info.sheet, info.row);
-                                return;
-                            }
-                        } else if (col.field === 'rprice') {
-                            const [valid, msg] = paySpreadObj._checkRExpr(select, validText, data.updateData);
-                            if (!valid) {
-                                toastr.warning(msg);
-                                SpreadJsObj.reLoadRowData(info.sheet, info.row);
-                                return;
-                            }
-                        } else {
-                            data.updateData[col.field] = validText;
+                    if (col.field === 'sprice') {
+                        const [valid, msg] = paySpreadObj._checkSExpr(select, validText, data.updateData);
+                        if (!valid) {
+                            toastr.warning(msg);
+                            SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                            return;
+                        }
+                    } else if (col.field === 'rprice') {
+                        const [valid, msg] = paySpreadObj._checkRExpr(select, validText, data.updateData);
+                        if (!valid) {
+                            toastr.warning(msg);
+                            SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                            return;
                         }
                     } else {
-                        data.updateData[col.field] = null;
+                        if (validText) {
+                            data.updateData[col.field] = validText;
+                        } else {
+                            data.updateData[col.field] = null;
+                        }
                     }
                 }
                 // 更新至服务器
@@ -841,26 +841,27 @@ $(document).ready(() => {
                             updateData.name = validText;
                         } else {
                             updateData.id = node.pid;
-                            if (validText) {
-                                if (col.field === 'sprice') {
-                                    const [valid, msg] = paySpreadObj._checkSExpr(node, validText, updateData);
-                                    if (!valid) {
-                                        toastr.warning(msg);
-                                        SpreadJsObj.reLoadSheetData(paySpread.getActiveSheet());
-                                        return;
-                                    }
-                                } else if (col.field === 'rprice') {
-                                    const [valid, msg] = paySpreadObj._checkRExpr(node, validText, updateData);
-                                    if (!valid) {
-                                        toastr.warning(msg);
-                                        SpreadJsObj.reLoadSheetData(paySpread.getActiveSheet());
-                                        return;
-                                    }
-                                } else {
-                                    updateData[col.field] = validText;
+
+                            if (col.field === 'sprice') {
+                                const [valid, msg] = paySpreadObj._checkSExpr(node, validText, updateData);
+                                if (!valid) {
+                                    toastr.warning(msg);
+                                    SpreadJsObj.reLoadSheetData(paySpread.getActiveSheet());
+                                    return;
+                                }
+                            } else if (col.field === 'rprice') {
+                                const [valid, msg] = paySpreadObj._checkRExpr(node, validText, updateData);
+                                if (!valid) {
+                                    toastr.warning(msg);
+                                    SpreadJsObj.reLoadSheetData(paySpread.getActiveSheet());
+                                    return;
                                 }
                             } else {
-                                updateData[col.field] = null;
+                                if (validText) {
+                                    updateData[col.field] = validText;
+                                } else {
+                                    updateData[col.field] = null;
+                                }
                             }
                         }
                         data.updateData.push(updateData);

+ 7 - 5
app/public/report/js/rpt_main.js

@@ -215,11 +215,13 @@ let zTreeOprObj = {
         let me = this;
         const _set_archive_icon = function (tplNode) {
             let hasArchive = false;
-            for (let aItem of ARCHIVE_LIST) {
-                if (parseInt(aItem.rpt_id) === parseInt(tplNode.refId)) {
-                    hasArchive = true;
-                    tplNode.icon = "/public/css/ztree/img/diy/10.png";
-                    break;
+            if (PAGE_SHOW['showArchive']) {
+                for (let aItem of ARCHIVE_LIST) {
+                    if (parseInt(aItem.rpt_id) === parseInt(tplNode.refId)) {
+                        hasArchive = true;
+                        tplNode.icon = "/public/css/ztree/img/diy/10.png";
+                        break;
+                    }
                 }
             }
             if (!hasArchive) {

+ 10 - 5
app/service/report_memory.js

@@ -1092,16 +1092,21 @@ module.exports = app => {
             if (!this.changeInfo) await this.getChangeInfo(tid, sid);
             this.changeInfoBills = [];
             for (const c of this.changeInfo) {
-                const cb = await this.ctx.service.stageChange.getUsedData(tid, c.cid);
+                const cb = await this.ctx.service.changeAuditList.getAllDataByCondition({ where: { cid: c.cid } });
+                const cbu = await this.ctx.service.stageChange.getUsedData(tid, c.cid);
                 const curUsedBills = await this.ctx.service.stageChange.getStageUsedData(sid, c.cid);
                 for (const b of cb) {
                     b.qty = this.ctx.helper._.toNumber(b.samount);
-                    b.valid_qty = this.ctx.helper.sub(b.qty, b.used_qty);
                     b.tp = this.ctx.helper.round(this.ctx.helper.mul(b.qty, b.unit_price), this.ctx.tender.info.decimal.tp);
-                    const pos = this.ctx.helper._.filter(curUsedBills, { cbid: b.id });
+
+                    const u = cbu.find(x => { return x.id === b.id; });
+                    b.used_qty = u ? u.used_qty : 0;
+
+                    b.valid_qty = this.ctx.helper.sub(b.qty, b.used_qty);
+                    const cur = this.ctx.helper._.filter(curUsedBills, { cbid: b.id });
                     b.cur_qty = 0;
-                    for (const p of pos) {
-                        b.cur_qty = this.ctx.helper.add(b.cur_qty, p.qty);
+                    for (const cc of cur) {
+                        b.cur_qty = this.ctx.helper.add(b.cur_qty, cc.qty);
                     }
                     b.cur_used = !!b.cur_qty;
                     this.changeInfoBills.push(b);

+ 2 - 1
app/view/material/audit_modal.ejs

@@ -215,11 +215,12 @@
                                             <div class="card-body p-3">
                                                 <div class="card-text">
                                                     <p class="mb-1"><span class="h5"><%- auditor.name %></span>
+                                                        <% console.log(auditor.status) %>
                                                         <span
                                                             class="pull-right
                                                                             <%- auditConst.statusClass[auditor.status] %>"><%- auditor.status !== auditConst.status.uncheck ? auditConst.statusString[auditor.status] : ''%>
                                                             <%- auditor.status === auditConst.status.checkNo ? ctx.material.user.name : '' %>
-                                                            <%- auditor.status === auditConst.status.checkNoPre ? ctx.material.auditors2.find(item => item.order === auditor.sort-1).name : '' %>
+                                                            <%- auditor.status === auditConst.status.checkNoPre ? (ctx.material.auditors2.find(item => item.order === auditor.sort-1) ? ctx.material.auditors2.find(item => item.order === auditor.sort-1).name : '') : '' %>
                                                         </span>
                                                     </p>
                                                     <p class="text-muted mb-0"><%- auditor.role %></p>

+ 1 - 1
app/view/report/index.ejs

@@ -65,7 +65,7 @@
                                     导出报表
                                 </div>
                             </div>
-                            <div class="panel" style="display:none" <% if (pageShow === null || parseInt(pageShow.showArchive) === 0 || isNaN(parseInt(pageShow.showArchive))) { %> style="display:none" <% } %>>
+                            <div class="panel" <% if (pageShow === null || parseInt(pageShow.showArchive) === 0 || isNaN(parseInt(pageShow.showArchive))) { %> style="display:none" <% } %>>
                                 <div class="panel-body">
                                     <div class="btn-group" role="group">
                                         <button id="btnArchiveRpt" type="button" class="btn btn-outline-primary btn-sm" data-toggle="modal" data-target="#guidang" disabled><i class="fa fa-archive"></i> 归档报表</button>

+ 9 - 9
app/view/tender/tender_sub_menu.ejs

@@ -5,17 +5,17 @@
     <div class="scrollbar-auto">
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id) { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>"><i class="fa fa-pie-chart"></i> <span>标段概况</span></a></li>
+                <li <% if (ctx.url === '/tender/' + ctx.tender.id) { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>" class="h3"><i class="fa fa-pie-chart fa-fw"></i> <span>标段概况</span></a></li>
             </ul>
         </div>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
                 <% const curUrl = `/tender/${ctx.tender.id}/advance` %>
-                <li <% if (ctx.url.indexOf(curUrl) !== -1) { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/advance/start"><i class="fa fa-handshake-o"></i> <span>预付款</span></a></li>
+                <li <% if (ctx.url.indexOf(curUrl) !== -1) { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/advance/start" class="h3"><i class="fa fa-handshake-o fa-fw"></i> <span>预付款</span></a></li>
             </ul>
         </div>
         <div class="nav-box">
-            <h3><i class="fa fa-list-alt"></i> 0号台账</h3>
+            <h3><i class="fa fa-list-alt fa-fw"></i> 0号台账<span class="float-right"><i class="fa fa-angle-down text-muted"></i></span></h3>
             <ul class="nav-list list-unstyled sub-list">
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger"><span>台账分解</span></a></li>
                 <% if (ctx.tender.data.ledger_status !== ctx.tender.auditLedgerConst.status.uncheck) { %>
@@ -27,7 +27,7 @@
             </ul>
         </div>
         <div class="nav-box">
-            <h3><i class="fa fa-calendar-check-o"></i> 计量支付</h3>
+            <h3><i class="fa fa-calendar-check-o fa-fw"></i> 计量支付<span class="float-right"><i class="fa fa-angle-down text-muted"></i></span></h3>
             <ul class="nav-list list-unstyled sub-list">
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/stage') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/measure/stage"><span>各期计量</span></a></li>
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/compare') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/measure/compare"><span>多期比较</span></a></li>
@@ -35,17 +35,17 @@
         </div>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
-                <li <% if (ctx.url.indexOf('/tender/' + ctx.tender.id + '/change') !== -1) { %>class="active"<% } %>><a class="change_sort_link" href="/tender/<%- ctx.tender.id %>/change"><i class="fa fa-retweet"></i> <span>工程变更</span></a></li>
+                <li <% if (ctx.url.indexOf('/tender/' + ctx.tender.id + '/change') !== -1) { %>class="active"<% } %>><a class="change_sort_link h3" href="/tender/<%- ctx.tender.id %>/change"><i class="fa fa-retweet fa-fw"></i> <span>工程变更</span></a></li>
             </ul>
         </div>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/material') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/measure/material"><i class="fa fa-line-chart"></i> <span>材料调差</span></a></li>
+                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/material') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/measure/material" class="h3"><i class="fa fa-line-chart fa-fw"></i> <span>材料调差</span></a></li>
             </ul>
         </div>
         <% if (ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.xxjd) === 1 && (ctx.tender.schedule_permission !== 0 || ctx.tender.isTourist)) { %>
         <div class="nav-box">
-            <h3><i class="fa fa-bar-chart "></i> 投资进度</h3>
+            <h3><i class="fa fa-bar-chart fa-fw"></i> 投资进度<span class="float-right"><i class="fa fa-angle-down text-muted"></i></span></h3>
             <ul class="nav-list list-unstyled sub-list">
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/schedule' || ctx.url === '/tender/' + ctx.tender.id + '/schedule/ledger') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/schedule"><span>进度概况</span></a></li>
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/schedule/plan') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/schedule/plan"><span>计划进度</span></a></li>
@@ -55,12 +55,12 @@
         <% } %>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/report') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/report"><i class="fa fa-file-text-o"></i> <span>报表</span></a></li>
+                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/report') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/report" class="h3"><i class="fa fa-file-text-o fa-fw"></i> <span>报表</span></a></li>
             </ul>
         </div>
         <!--<div class="nav-box">-->
             <!--<ul class="nav-list list-unstyled">-->
-                <!--<li <% if (ctx.url === '/tender/' + ctx.tender.id + '/archiveReport') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/archiveReport"><i class="fa fa-archive"></i> <span>归档报表</span></a></li>-->
+                <!--<li <% if (ctx.url === '/tender/' + ctx.tender.id + '/archiveReport') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/archiveReport"><i class="fa fa-archive fa-fw"></i> <span>归档报表</span></a></li>-->
             <!--</ul>-->
         <!--</div>-->
         <div class="side-fold"><a href="javascript: void(0)" data-toggle="tooltip" data-placement="top" data-original-title="折叠侧栏" id="to-mini-menu"><i class="fa fa-upload fa-rotate-270"></i></a></div>

+ 20 - 22
app/view/tender/tender_sub_mini_menu.ejs

@@ -7,31 +7,29 @@
     <div class="side-menu" id="mini-menu-list" style="display: none">
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id) { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>"><i class="fa fa-pie-chart"></i> <span>标段概况</span></a></li>
+                <li <% if (ctx.url === '/tender/' + ctx.tender.id) { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>" class="h3"><i class="fa fa-pie-chart fa-fw"></i> <span>标段概况</span></a></li>
             </ul>
         </div>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
                 <% const curUrl = `/tender/${ctx.tender.id}/advance` %>
-                <li <% if (ctx.url.indexOf(curUrl) !== -1) { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/advance"><i class="fa fa-handshake-o"></i> <span>预付款</span></a></li>
+                <li <% if (ctx.url.indexOf(curUrl) !== -1) { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/advance/start" class="h3"><i class="fa fa-handshake-o fa-fw"></i> <span>预付款</span></a></li>
             </ul>
         </div>
         <div class="nav-box">
-            <h3><i class="fa fa-list-alt"></i> 0号台账</h3>
+            <h3><i class="fa fa-list-alt fa-fw"></i> 0号台账<span class="float-right"><i class="fa fa-angle-down text-muted"></i></span></h3>
             <ul class="nav-list list-unstyled sub-list">
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger"><span>台账分解</span></a></li>
                 <% if (ctx.tender.data.ledger_status !== ctx.tender.auditLedgerConst.status.uncheck) { %>
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger/audit') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger/audit"><span>台账审批</span></a></li>
-                <% } %>
-                <% if (ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.bwtz) === 1) { %>
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger/bwtz') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger/bwtz"><span>部位台账</span></a></li>
+                    <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger/audit') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger/audit"><span>台账审批</span></a></li>
                 <% } %>
+                <% if (ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.bwtz) === 1) { %><li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger/bwtz') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger/bwtz"><span>部位台账</span></a></li><% } %>
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger/gather') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger/gather"><span>清单对比</span></a></li>
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/revise') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/revise"><span>台账修订</span></a></li>
+                <li <% if (ctx.url.indexOf('/tender/' + ctx.tender.id + '/revise') >= 0) { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/revise"><span>台账修订</span></a></li>
             </ul>
         </div>
         <div class="nav-box">
-            <h3><i class="fa fa-calendar-check-o"></i> 计量支付</h3>
+            <h3><i class="fa fa-calendar-check-o fa-fw"></i> 计量支付<span class="float-right"><i class="fa fa-angle-down text-muted"></i></span></h3>
             <ul class="nav-list list-unstyled sub-list">
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/stage') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/measure/stage"><span>各期计量</span></a></li>
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/compare') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/measure/compare"><span>多期比较</span></a></li>
@@ -39,32 +37,32 @@
         </div>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
-                <li <% if (ctx.url.indexOf('/tender/' + ctx.tender.id + '/change') !== -1) { %>class="active"<% } %>><a class="change_sort_link" href="/tender/<%- ctx.tender.id %>/change"><i class="fa fa-retweet"></i> <span>工程变更</span></a></li>
+                <li <% if (ctx.url.indexOf('/tender/' + ctx.tender.id + '/change') !== -1) { %>class="active"<% } %>><a class="change_sort_link h3" href="/tender/<%- ctx.tender.id %>/change"><i class="fa fa-retweet fa-fw"></i> <span>工程变更</span></a></li>
             </ul>
         </div>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/material') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/measure/material"><i class="fa fa-line-chart"></i> <span>材料调差</span></a></li>
-            </ul>
-        </div>
-        <% if (ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.xxjd) === 1 && (ctx.tender.schedule_permission !== 0|| ctx.tender.isTourist)) { %>
-        <div class="nav-box">
-            <h3><i class="fa fa-bar-chart "></i> 投资进度</h3>
-            <ul class="nav-list list-unstyled sub-list">
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/schedule' || ctx.url === '/tender/' + ctx.tender.id + '/schedule/ledger') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/schedule"><span>进度概况</span></a></li>
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/schedule/plan') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/schedule/plan"><span>计划进度</span></a></li>
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/schedule/stage' || ctx.url === '/tender/' + ctx.tender.id + '/schedule/stage/gcl') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/schedule/stage"><span>计量进度</span></a></li>
+                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/material') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/measure/material" class="h3"><i class="fa fa-line-chart fa-fw"></i> <span>材料调差</span></a></li>
             </ul>
         </div>
+        <% if (ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.xxjd) === 1 && (ctx.tender.schedule_permission !== 0 || ctx.tender.isTourist)) { %>
+            <div class="nav-box">
+                <h3><i class="fa fa-bar-chart fa-fw"></i> 投资进度<span class="float-right"><i class="fa fa-angle-down text-muted"></i></span></h3>
+                <ul class="nav-list list-unstyled sub-list">
+                    <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/schedule' || ctx.url === '/tender/' + ctx.tender.id + '/schedule/ledger') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/schedule"><span>进度概况</span></a></li>
+                    <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/schedule/plan') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/schedule/plan"><span>计划进度</span></a></li>
+                    <li <% if (ctx.url.indexOf('/tender/' + ctx.tender.id + '/schedule/stage') !== -1) { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/schedule/stage"><span>计量进度</span></a></li>
+                </ul>
+            </div>
         <% } %>
         <div class="nav-box">
             <ul class="nav-list list-unstyled">
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/report') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/report"><i class="fa fa-file-text-o"></i> <span>报表</span></a></li>
+                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/report') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/report" class="h3"><i class="fa fa-file-text-o fa-fw"></i> <span>报表</span></a></li>
             </ul>
         </div>
         <!--<div class="nav-box">-->
             <!--<ul class="nav-list list-unstyled">-->
-                <!--<li <% if (ctx.url === '/tender/' + ctx.tender.id + '/archiveReport') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/archiveReport"><i class="fa fa-archive"></i> <span>归档报表</span></a></li>-->
+                <!--<li <% if (ctx.url === '/tender/' + ctx.tender.id + '/archiveReport') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/archiveReport"><i class="fa fa-archive fa-fw"></i> <span>归档报表</span></a></li>-->
             <!--</ul>-->
         <!--</div>-->
         <div class="side-fold"><a href="javascript: void(0);" data-toggle="tooltip" data-placement="top" data-original-title="展开侧栏" id="to-menu"><i class="fa fa-upload fa-rotate-90"></i></a></div>

+ 1 - 0
config/web.js

@@ -560,6 +560,7 @@ const JsFiles = {
                     '/public/js/zh_calc.js',
                     '/public/js/path_tree.js',
                     '/public/js/gcl_gather.js',
+                    '/public/js/CalcEval.js', // 计算表达式使用
                     '/public/js/material_list.js',
                     '/public/js/shares/cs_tools.js',
                     '/public/js/material_audit.js',

+ 3 - 0
sql/update.sql

@@ -9,3 +9,6 @@ COMMENT = '归档文档的需要加密签名的坐标及其他key信息(如签
 
 ALTER TABLE `zh_material_list` ADD `expr` VARCHAR(500) NULL DEFAULT '' COMMENT '公式' AFTER `quantity`;
 
+ALTER TABLE `zh_s2b_proj`
+ADD COLUMN `gxby_ratio_valid`  tinyint(1) NULL DEFAULT 0 COMMENT '工序报验,ratio是否生效' AFTER `gxby_status`,
+ADD COLUMN `dagl_ratio_valid`  tinyint(1) NOT NULL DEFAULT 1 COMMENT '工序报验,ratio是否生效' AFTER `dagl_status`;