瀏覽代碼

0号台账,部位台账

MaiXinRong 5 年之前
父節點
當前提交
69dbd30a38

+ 40 - 21
app/controller/ledger_controller.js

@@ -72,7 +72,7 @@ module.exports = app => {
                 }
                 }
             }
             }
             function setColFormat(cols, field, formatter) {
             function setColFormat(cols, field, formatter) {
-                const col = _.find(cols, function (c) {
+                const col = _.find(cols, function(c) {
                     return c.field === field;
                     return c.field === field;
                 });
                 });
                 col.formatter = formatter;
                 col.formatter = formatter;
@@ -223,7 +223,7 @@ module.exports = app => {
             if ((isNaN(data.id) || data.id <= 0) ||
             if ((isNaN(data.id) || data.id <= 0) ||
                 (!data.tid && data.tid <= 0) ||
                 (!data.tid && data.tid <= 0) ||
                 (!data.block || data.block.length <= 0)) throw '参数错误';
                 (!data.block || data.block.length <= 0)) throw '参数错误';
-            return await ctx.service.ledger.pasteBlock(ctx.tender.id, data.id, {tid: data.tid, block: data.block});
+            return await ctx.service.ledger.pasteBlock(ctx.tender.id, data.id, { tid: data.tid, block: data.block });
         }
         }
         /**
         /**
          * 从标准项目表添加数据
          * 从标准项目表添加数据
@@ -234,7 +234,8 @@ module.exports = app => {
             if ((isNaN(data.id) || data.id <= 0) || !data.stdType || !data.stdNode) throw '参数错误';
             if ((isNaN(data.id) || data.id <= 0) || !data.stdType || !data.stdNode) throw '参数错误';
             // todo 校验项目是否使用该库的权限
             // todo 校验项目是否使用该库的权限
 
 
-            let stdLib, addType;
+            let stdLib,
+                addType;
             switch (data.stdType) {
             switch (data.stdType) {
                 case 'xmj':
                 case 'xmj':
                     stdLib = ctx.service.stdXmj;
                     stdLib = ctx.service.stdXmj;
@@ -268,7 +269,7 @@ module.exports = app => {
         /**
         /**
          * 从签约清单添加节点
          * 从签约清单添加节点
          * @param ctx
          * @param ctx
-         * @returns {Promise<void>}
+         * @return {Promise<void>}
          */
          */
         async _addDeal(ctx, data) {
         async _addDeal(ctx, data) {
             if (!data.type || !data.dealBills) throw '数据错误';
             if (!data.type || !data.dealBills) throw '数据错误';
@@ -277,9 +278,9 @@ module.exports = app => {
                 return await ctx.service.ledger.addChild(ctx.tender.id, data.id, data.dealBills);
                 return await ctx.service.ledger.addChild(ctx.tender.id, data.id, data.dealBills);
             } else if (data.type === 'next') {
             } else if (data.type === 'next') {
                 return await ctx.service.ledger.addNode(ctx.tender.id, data.id, data.dealBills);
                 return await ctx.service.ledger.addNode(ctx.tender.id, data.id, data.dealBills);
-            } else {
-                throw '数据错误';
             }
             }
+            throw '数据错误';
+
         }
         }
         /**
         /**
          * 批量插入数据
          * 批量插入数据
@@ -307,7 +308,7 @@ module.exports = app => {
         /**
         /**
          * 更新清单相关 (Ajax)
          * 更新清单相关 (Ajax)
          * @param ctx
          * @param ctx
-         * @returns {Promise<void>}
+         * @return {Promise<void>}
          */
          */
         async update(ctx) {
         async update(ctx) {
             try {
             try {
@@ -429,8 +430,8 @@ module.exports = app => {
             try {
             try {
                 const ledgerData = await ctx.service.ledger.getData(ctx.tender.id);
                 const ledgerData = await ctx.service.ledger.getData(ctx.tender.id);
                 const posData = this.ctx.tender.data.measure_type === measureType.tz.value
                 const posData = this.ctx.tender.data.measure_type === measureType.tz.value
-                    ? await ctx.service.pos.getPosData({tid: ctx.tender.id}) : [];
-                ctx.body = { err: 0, msg: '', data: {bills: ledgerData, pos: posData} };
+                    ? await ctx.service.pos.getPosData({ tid: ctx.tender.id }) : [];
+                ctx.body = { err: 0, msg: '', data: { bills: ledgerData, pos: posData } };
             } catch (err) {
             } catch (err) {
                 this.log(err);
                 this.log(err);
                 ctx.body = { err: 1, msg: err.toString(), data: [] };
                 ctx.body = { err: 1, msg: err.toString(), data: [] };
@@ -458,7 +459,7 @@ module.exports = app => {
         /**
         /**
          * 复制粘贴 部位明细
          * 复制粘贴 部位明细
          * @param ctx
          * @param ctx
-         * @returns {Promise<void>}
+         * @return {Promise<void>}
          */
          */
         async posPaste(ctx) {
         async posPaste(ctx) {
             try {
             try {
@@ -466,7 +467,7 @@ module.exports = app => {
                 const data = JSON.parse(ctx.request.body.data);
                 const data = JSON.parse(ctx.request.body.data);
                 const result = await ctx.service.pos.pastePosData(data, ctx.tender.id);
                 const result = await ctx.service.pos.pastePosData(data, ctx.tender.id);
                 ctx.body = { err: 0, msg: '', data: result };
                 ctx.body = { err: 0, msg: '', data: result };
-            } catch(err) {
+            } catch (err) {
                 this.log(err);
                 this.log(err);
                 ctx.body = { err: 1, msg: err.toString(), data: null };
                 ctx.body = { err: 1, msg: err.toString(), data: null };
             }
             }
@@ -482,7 +483,7 @@ module.exports = app => {
                 const ueType = ctx.params.ueType;
                 const ueType = ctx.params.ueType;
                 const compressData = ctx.request.body.data;
                 const compressData = ctx.request.body.data;
                 const data = JSON.parse(LzString.decompressFromUTF16(compressData));
                 const data = JSON.parse(LzString.decompressFromUTF16(compressData));
-                const responseData = { err: 0, msg: '', data: {}, };
+                const responseData = { err: 0, msg: '', data: {} };
                 switch (ueType) {
                 switch (ueType) {
                     case 'tz':
                     case 'tz':
                         const templateId = await this.ctx.service.valuation.getValuationTemplate(
                         const templateId = await this.ctx.service.valuation.getValuationTemplate(
@@ -512,7 +513,7 @@ module.exports = app => {
         //         const fileInfo = path.parse(stream.filename);
         //         const fileInfo = path.parse(stream.filename);
         //         const fileName = this.app.config.filePath + '/cache/ledger/uploads/' + create_time + fileInfo.ext;
         //         const fileName = this.app.config.filePath + '/cache/ledger/uploads/' + create_time + fileInfo.ext;
         //         await ctx.helper.saveStreamFile(stream, fileName);
         //         await ctx.helper.saveStreamFile(stream, fileName);
-                
+
         //         // 读取excel
         //         // 读取excel
         //         console.log(ctx.query);
         //         console.log(ctx.query);
         //         const name = ctx.query.sheetName;
         //         const name = ctx.query.sheetName;
@@ -551,7 +552,7 @@ module.exports = app => {
          * 填设计量(Ajax)
          * 填设计量(Ajax)
          *
          *
          * @param ctx
          * @param ctx
-         * @returns {Promise<void>}
+         * @return {Promise<void>}
          */
          */
         async deal2sgfh(ctx) {
         async deal2sgfh(ctx) {
             try {
             try {
@@ -561,7 +562,7 @@ module.exports = app => {
 
 
                 await this.ctx.service.ledger.deal2sgfh(ctx.tender.id);
                 await this.ctx.service.ledger.deal2sgfh(ctx.tender.id);
                 const ledgerData = await ctx.service.ledger.getData(ctx.tender.id);
                 const ledgerData = await ctx.service.ledger.getData(ctx.tender.id);
-                ctx.body = {err: 0, msg: '', data: {bills: ledgerData}};
+                ctx.body = { err: 0, msg: '', data: { bills: ledgerData } };
             } catch (err) {
             } catch (err) {
                 this.log(err);
                 this.log(err);
                 ctx.body = { err: 1, msg: err.toString(), data: null };
                 ctx.body = { err: 1, msg: err.toString(), data: null };
@@ -599,15 +600,33 @@ module.exports = app => {
         }
         }
 
 
         /**
         /**
+         * 部位台账 页面 (Get)
+         * @param ctx
+         * @return {Promise<void>}
+         */
+        async bwtz(ctx) {
+            try {
+                const renderData = {
+                    tender: ctx.tender.data,
+                    jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.ledger.bwtz),
+                };
+                await this.layout('ledger/bwtz.ejs', renderData);
+            } catch (err) {
+                this.log(err);
+                ctx.redirect(ctx.request.header.referer);
+            }
+        }
+
+        /**
          * 台账对比 页面 (Get)
          * 台账对比 页面 (Get)
          * @param ctx
          * @param ctx
-         * @returns {Promise<void>}
+         * @return {Promise<void>}
          */
          */
         async gather(ctx) {
         async gather(ctx) {
             try {
             try {
                 const renderData = {
                 const renderData = {
                     tender: ctx.tender.data,
                     tender: ctx.tender.data,
-                    jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.ledger.gather)
+                    jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.ledger.gather),
                 };
                 };
 
 
                 await this.layout('ledger/gather.ejs', renderData);
                 await this.layout('ledger/gather.ejs', renderData);
@@ -620,15 +639,15 @@ module.exports = app => {
         /**
         /**
          * 获取 台账对比 数据 (Ajax)
          * 获取 台账对比 数据 (Ajax)
          * @param ctx
          * @param ctx
-         * @returns {Promise<void>}
+         * @return {Promise<void>}
          */
          */
         async loadGatherData(ctx) {
         async loadGatherData(ctx) {
             try {
             try {
                 const billsData = await ctx.service.ledger.getData(ctx.tender.id);
                 const billsData = await ctx.service.ledger.getData(ctx.tender.id);
                 const posData = this.ctx.tender.data.measure_type === measureType.tz.value
                 const posData = this.ctx.tender.data.measure_type === measureType.tz.value
-                    ? await ctx.service.pos.getPosData({tid: ctx.tender.id}) : [];
-                const dealBills = await ctx.service.dealBills.getAllDataByCondition({ where: {tender_id: this.ctx.tender.id} });
-                ctx.body = { err: 0, msg: '', data: {bills: billsData, pos: posData, dealBills: dealBills} };
+                    ? await ctx.service.pos.getPosData({ tid: ctx.tender.id }) : [];
+                const dealBills = await ctx.service.dealBills.getAllDataByCondition({ where: { tender_id: this.ctx.tender.id } });
+                ctx.body = { err: 0, msg: '', data: { bills: billsData, pos: posData, dealBills } };
             } catch (err) {
             } catch (err) {
                 this.log(err);
                 this.log(err);
                 ctx.body = { err: 1, msg: err.toString(), data: [] };
                 ctx.body = { err: 1, msg: err.toString(), data: [] };

+ 72 - 0
app/public/js/ledger_bwtz.js

@@ -0,0 +1,72 @@
+'use strict';
+
+/**
+ *
+ *
+ * @author Mai
+ * @date
+ * @version
+ */
+
+$(document).ready(() => {
+    const preUrl = window.location.pathname.split('/').slice(0, 4).join('/');
+    autoFlashHeight();
+    const xmjSpread = SpreadJsObj.createNewSpread($('#xmj-spread')[0]);
+    const xmjSheet = xmjSpread.getActiveSheet();
+    sjsSettingObj.setFxTreeStyle(xmjSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
+    SpreadJsObj.initSheet(xmjSheet, xmjSpreadSetting);
+
+    const unitSpread = SpreadJsObj.createNewSpread($('#unit-spread')[0]);
+    const unitSheet = unitSpread.getActiveSheet();
+    SpreadJsObj.initSheet(unitSheet, unitSpreadSetting);
+
+    const unitTreeObj = {
+        loadCurUnitData: function () {
+            const node = SpreadJsObj.getSelectObject(xmjSheet);
+            if (node && node.unitTree) {
+                SpreadJsObj.loadSheetData(unitSheet, SpreadJsObj.DataType.Tree, node.unitTree);
+            } else {
+                SpreadJsObj.initSheet(unitSheet, unitSpreadSetting);
+            }
+        }
+    };
+    xmjSpread.bind(spreadNS.Events.SelectionChanged, function (e, info) {
+        unitTreeObj.loadCurUnitData();
+    });
+
+    postData(preUrl + '/load', {}, function (result) {
+        billsPosConvertModel.loadData(result.bills, result.pos, [], decimal);
+        const xmjTree = billsPosConvertModel.convert();
+        SpreadJsObj.loadSheetData(xmjSheet, SpreadJsObj.DataType.Tree, xmjTree);
+        unitTreeObj.loadCurUnitData();
+    });
+
+    $.subMenu({
+        menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
+        toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
+        key: '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');
+            } else {
+                $('.panel-title').removeClass('fluid');
+                $('#sub-menu').addClass('panel-sidebar');
+            }
+            autoFlashHeight();
+            xmjSpread.refresh();
+            unitSpread.refresh();
+        }
+    });
+    // 加载上下窗口resizer
+    $.divResizer({
+        select: '#main-resize',
+        callback: function () {
+            xmjSpread.refresh();
+            let bcontent = $(".bcontent-wrap") ? $(".bcontent-wrap").height() : 0;
+            $(".sp-wrap").height(bcontent-30);
+            unitSpread.refresh();
+        }
+    });
+});

+ 5 - 2
app/router.js

@@ -111,6 +111,9 @@ module.exports = app => {
     app.post('/tender/:id/ledger/audit/start', sessionAuth, tenderCheck, 'ledgerAuditController.start');
     app.post('/tender/:id/ledger/audit/start', sessionAuth, tenderCheck, 'ledgerAuditController.start');
     app.post('/tender/:id/ledger/audit/check', sessionAuth, tenderCheck, 'ledgerAuditController.check');
     app.post('/tender/:id/ledger/audit/check', sessionAuth, tenderCheck, 'ledgerAuditController.check');
 
 
+    // 部位台账
+    app.get('/tender/:id/ledger/bwtz', sessionAuth, tenderCheck, 'ledgerController.bwtz');
+
     // 台账对比
     // 台账对比
     app.get('/tender/:id/ledger/gather', sessionAuth, tenderCheck, 'ledgerController.gather');
     app.get('/tender/:id/ledger/gather', sessionAuth, tenderCheck, 'ledgerController.gather');
     app.post('/tender/:id/ledger/gather/load', sessionAuth, tenderCheck, 'ledgerController.loadGatherData');
     app.post('/tender/:id/ledger/gather/load', sessionAuth, tenderCheck, 'ledgerController.loadGatherData');
@@ -120,7 +123,7 @@ module.exports = app => {
     app.post('/tender/:id/revise/add', sessionAuth, tenderCheck, 'reviseController.add');
     app.post('/tender/:id/revise/add', sessionAuth, tenderCheck, 'reviseController.add');
     app.post('/tender/:id/revise/cancel', sessionAuth, tenderCheck, 'reviseController.cancel');
     app.post('/tender/:id/revise/cancel', sessionAuth, tenderCheck, 'reviseController.cancel');
     app.post('/tender/:id/revise/save', sessionAuth, tenderCheck, 'reviseController.save');
     app.post('/tender/:id/revise/save', sessionAuth, tenderCheck, 'reviseController.save');
-    //app.post('/tender/:id/revise/deal2sgfh', sessionAuth, tenderCheck, 'reviseController.deal2sgfh');
+    // app.post('/tender/:id/revise/deal2sgfh', sessionAuth, tenderCheck, 'reviseController.deal2sgfh');
     // 台账修订页面
     // 台账修订页面
     app.get('/tender/:id/revise/info', sessionAuth, tenderCheck, 'reviseController.info');
     app.get('/tender/:id/revise/info', sessionAuth, tenderCheck, 'reviseController.info');
     app.post('/tender/:id/revise/auditors', sessionAuth, tenderCheck, 'reviseController.reviseAuditors');
     app.post('/tender/:id/revise/auditors', sessionAuth, tenderCheck, 'reviseController.reviseAuditors');
@@ -162,7 +165,7 @@ module.exports = app => {
     app.post('/tender/:id/measure/stage/:order/pos', sessionAuth, tenderCheck, stageCheck, 'stageController.getStagePosData');
     app.post('/tender/:id/measure/stage/:order/pos', sessionAuth, tenderCheck, stageCheck, 'stageController.getStagePosData');
     app.post('/tender/:id/measure/stage/:order/update', sessionAuth, tenderCheck, stageCheck, 'stageController.updateStageData');
     app.post('/tender/:id/measure/stage/:order/update', sessionAuth, tenderCheck, stageCheck, 'stageController.updateStageData');
     app.post('/tender/:id/measure/stage/:order/valid-change', sessionAuth, tenderCheck, stageCheck, 'stageController.searchValidChange');
     app.post('/tender/:id/measure/stage/:order/valid-change', sessionAuth, tenderCheck, stageCheck, 'stageController.searchValidChange');
-    app.post('/tender/:id/measure/stage/:order/use-change',sessionAuth, tenderCheck, stageCheck, 'stageController.useChange');
+    app.post('/tender/:id/measure/stage/:order/use-change', sessionAuth, tenderCheck, stageCheck, 'stageController.useChange');
     // 计量附件
     // 计量附件
     app.post('/tender/:id/measure/stage/:order/upload/file', sessionAuth, tenderCheck, stageCheck, 'stageController.uploadFile');
     app.post('/tender/:id/measure/stage/:order/upload/file', sessionAuth, tenderCheck, stageCheck, 'stageController.uploadFile');
     app.get('/tender/:id/measure/stage/:order/download/file/:fid', sessionAuth, 'stageController.downloadFile');
     app.get('/tender/:id/measure/stage/:order/download/file/:fid', sessionAuth, 'stageController.downloadFile');

+ 79 - 0
app/view/ledger/bwtz.ejs

@@ -0,0 +1,79 @@
+<% include ../tender/tender_sub_menu.ejs %>
+<div class="panel-content">
+    <div class="panel-title">
+        <div class="title-main d-flex justify-content-between">
+            <% include ../tender/tender_sub_mini_menu.ejs %>
+            <div>
+                <div class="d-inline-block">
+                    部位台帐
+                </div>
+            </div>
+            <div class="ml-auto">
+            </div>
+        </div>
+    </div>
+    <div class="content-wrap">
+        <div class="c-header p-0"></div>
+        <div class="c-body">
+            <div class="sjs-height-1" id="xmj-spread">
+            </div>
+            <div class="bcontent-wrap" id="main-bottom">
+                <div id="main-resize" class="resize-y" r-Type="height" div1="#xmj-spread" div2="#main-bottom" store-id="stage-bwtz" store-version="1.0.0" min="100"></div>
+                <div class="bc-bar mb-1">
+                    <ul class="nav nav-tabs">
+                        <li class="nav-item">
+                            <a class="nav-link active" data-toggle="tab" href="#jldyjlqd" role="tab">计量单元/计量清单</a>
+                        </li>
+                    </ul>
+                </div>
+                <div class="sp-wrap" id="unit-spread">
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script>
+    const xmjSpreadSetting = {
+        cols: [
+            {title: '项目节编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 145, formatter: '@', cellType: 'tree'},
+            {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 185, formatter: '@'},
+            {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 60, formatter: '@', cellType: 'unit'},
+            <% if (ctx.tender.info.display.ledger.dgnQty) { %>
+            {title: '项目节数量|数量1',  colSpan: '2|1', rowSpan: '1|1', field: 'dgn_qty1', hAlign: 2, width: 60, type: 'Number'},
+            {title: '|数量2',  colSpan: '|1', rowSpan: '|1', field: 'dgn_qty2', hAlign: 2, width: 60, type: 'Number'},
+            {title: '经济指标',  colSpan: '1', rowSpan: '2', field: 'dgn_price', hAlign: 2, width: 60, type: 'Number'},
+            <% } %>
+            {title: '台账金额', colSpan: '1', rowSpan: '2', field: 'total_price', hAlign: 2, width: 100, type: 'Number'},
+            {title: '图(册)号', colSpan: '1', rowSpan: '2', field: 'drawing_code', hAlign: 0, width: 100, formatter: '@'},
+            {title: '备注', colSpan: '1', rowSpan: '2', field: 'memo', hAlign: 0, width: 120, formatter: '@', cellType: 'ellipsisAutoTip'}
+        ],
+        emptyRows: 0,
+        headRows: 2,
+        headRowHeight: [25, 25],
+        defaultRowHeight: 21,
+        headerFont: '12px 微软雅黑',
+        font: '12px 微软雅黑',
+        readOnly: true,
+    };
+    const unitSpreadSetting = {
+        cols: [
+            {title: '计量单元', colSpan: '1', rowSpan: '2', field: 'pos_name', hAlign: 0, width: 120, formatter: '@', cellType: 'tree'},
+            {title: '清单编号', colSpan: '1', rowSpan: '2', field: 'b_code', hAlign: 0, width: 70, formatter: '@'},
+            {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 185, formatter: '@'},
+            {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 60, formatter: '@', cellType: 'unit'},
+            {title: '单价', colSpan: '1', rowSpan: '2', field: 'unit_price', hAlign: 2, width: 60, type: 'Number'},
+            {title: '台账|数量', colSpan: '2|1', rowSpan: '1|1', field: 'quantity', hAlign: 2, width: 80, type: 'Number'},
+            {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'total_price', hAlign: 2, width: 80, type: 'Number'},
+            {title: '图(册)号', colSpan: '1', rowSpan: '2', field: 'drawing_code', hAlign: 0, width: 100, formatter: '@'},
+            {title: '备注', colSpan: '1', rowSpan: '2', field: 'memo', hAlign: 0, width: 120, formatter: '@', cellType: 'ellipsisAutoTip'},
+        ],
+        emptyRows: 0,
+        headRows: 2,
+        headRowHeight: [25, 25],
+        defaultRowHeight: 21,
+        headerFont: '12px 微软雅黑',
+        font: '12px 微软雅黑',
+        readOnly: true,
+    };
+    const decimal = <%- ctx.tender.info.decimal.tp %>;
+</script>

+ 1 - 0
app/view/tender/tender_sub_menu.ejs

@@ -17,6 +17,7 @@
                 <% if (ctx.tender.data.ledger_status !== ctx.tender.auditLedgerConst.status.uncheck) { %>
                 <% 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>
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger/audit') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger/audit"><span>台帐审批</span></a></li>
                 <% } %>
                 <% } %>
+                <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 + '/ledger/gather') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger/gather"><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>
                 <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>
             </ul>

+ 1 - 0
app/view/tender/tender_sub_mini_menu.ejs

@@ -17,6 +17,7 @@
                 <% if (ctx.tender.data.ledger_status !== ctx.tender.auditLedgerConst.status.uncheck) { %>
                 <% 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>
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger/audit') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger/audit"><span>台帐审批</span></a></li>
                 <% } %>
                 <% } %>
+                <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 + '/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 === '/tender/' + ctx.tender.id + '/revise') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/revise"><span>台帐修订</span></a></li>
             </ul>
             </ul>