Tony Kang 1 vuosi sitten
vanhempi
commit
b8b7c3f4c6

+ 6 - 1
app/controller/report_controller.js

@@ -312,6 +312,7 @@ module.exports = app => {
                     auditType: auditConst.auditType,
                     source_type: 1,
                     changes: 'null',
+                    changeId: '-1',
                 };
                 await this.layout('report/index.ejs', renderData, 'report/rpt_all_popup.ejs');
                 // await this.layout('report/index.ejs', renderData);
@@ -493,6 +494,7 @@ module.exports = app => {
                     viewPmData: PermissionCheck.viewPmData(this.ctx.session.sessionUser.permission),
                     source_type: 101,
                     changes: 'null',
+                    changeId: '-1',
                 };
                 /*
                 //*/
@@ -665,6 +667,7 @@ module.exports = app => {
                     viewPmData: PermissionCheck.viewPmData(this.ctx.session.sessionUser.permission),
                     source_type: 200,
                     changes: 'null',
+                    changeId: '-1',
                 };
                 await this.layout('report/index.ejs', renderData, 'report/rpt_all_popup.ejs');
 
@@ -695,10 +698,11 @@ module.exports = app => {
             try {
                 await this._getStageAuditViewData(ctx);
                 const pageShow = ctx.session.sessionProject.page_show;
-                // pageShow.closeWatermark = 1;
+                pageShow.closeWatermark = 1;
                 pageShow.showArchive = 1;
                 pageShow.closeShowAllCustomized = 0;
                 const tenderId = ctx.params.id;
+                const cId = ctx.params.cid;
                 const paymentDetail_id = -1;
                 const pid = ctx.session.sessionProject.id;
                 const budget_id = -1;
@@ -846,6 +850,7 @@ module.exports = app => {
                     viewPmData: PermissionCheck.viewPmData(this.ctx.session.sessionUser.permission),
                     source_type,
                     changes: JSON.stringify(changes),
+                    changeId: cId,
                 };
                 await this.layout('report/index.ejs', renderData, 'report/rpt_all_popup.ejs');
             } catch (err) {

+ 8 - 7
app/lib/rm/change.js

@@ -10,7 +10,7 @@
 
 const RptMemBase = require('./base');
 const bindData = {};
-const changeConst = require('../const/change');
+const changeConst = require('../../const/change');
 
 class rptMemChange extends RptMemBase {
     constructor(ctx) {
@@ -18,7 +18,7 @@ class rptMemChange extends RptMemBase {
     }
 
     async _anaylisChange(change) {
-        const types = ctx.helper._.map(change.type.split(','), function (t) {
+        const types = ctx.helper._.map(change.type.split(','), function(t) {
             return self._getChangeConstName(changeConst.type, ctx.helper._.toInteger(t));
         });
         change.type = types.join(';');
@@ -29,7 +29,7 @@ class rptMemChange extends RptMemBase {
 
     async doCheckChange(changeId) {
         if (this.ctx.change) return;
-        this.ctx.change = await this.ctx.service.change.getDataByCondition({ where: { cid: changeId }});
+        this.ctx.change = await this.ctx.service.change.getDataByCondition({ where: { cid: changeId } });
         this._anaylisChange(this.ctx.change);
     }
 
@@ -46,7 +46,7 @@ class rptMemChange extends RptMemBase {
     }
 
     async _getChangeBills() {
-        const changeBills = await this.ctx.service.changeAuditList.getAllDataByCondition({ where: { cid: this.ctx.change.cid} });
+        const changeBills = await this.ctx.service.changeAuditList.getAllDataByCondition({ where: { cid: this.ctx.change.cid } });
         for (const d of changeBills) {
             d.o_qty = d.oamount;
             d.o_tp = this.ctx.helper.mul(d.o_qty, d.unit_price, decimal.tp);
@@ -58,9 +58,10 @@ class rptMemChange extends RptMemBase {
             d.sp_tp = this.ctx.helper.mul(d.sp_qty, d.unit_price, decimal.tp);
 
             const auditAmount = d.audit_amount ? d.audit_amount.split(',') : [];
-            const relaChange = ctx.helper._.find(change, {cid: d.cid});
+            const relaChange = ctx.helper._.find(change, { cid: d.cid });
             for (const [i, aa] of auditAmount.entries()) {
-                const amountField = 'qty_' + (i+1), tpField = 'tp_' + (i+1);
+                const amountField = 'qty_' + (i + 1),
+                    tpField = 'tp_' + (i + 1);
                 d[amountField] = aa ? parseFloat(aa) : 0;
                 d[tpField] = ctx.helper.mul(d[amountField], d.unit_price, decimal.tp);
                 if (relaChange) {
@@ -93,4 +94,4 @@ class rptMemChange extends RptMemBase {
     }
 }
 
-module.exports = rptMemChange;
+module.exports = rptMemChange;

+ 3 - 2
app/public/report/js/rpt_change.js

@@ -13,7 +13,8 @@ const rptChangeObj = {
             $bglDivDom.empty();
             let content = [];
             ALL_CHANGES.forEach((change, index) => {
-                content.push(`<a class="dropdown-item" href="javascript: void(0)" onclick="rptChangeObj.changeBglId('${index}');">${change.name}</a>`);
+                // 审批通过的才显示
+                if (change.status === 3) content.push(`<a class="dropdown-item" href="javascript: void(0)" onclick="rptChangeObj.changeBglId('${index}');">${change.code}</a>`);
             });
             $bglDivDom.append(content);
         }
@@ -25,7 +26,7 @@ const rptChangeObj = {
             let pgAccAmt = 0;
             for (let idx = 0; idx < zTreeOprObj.currentRptPageRst.splitArcPages.length; idx++) {
                 const pgArcVal = zTreeOprObj.currentRptPageRst.splitArcPages[idx];
-                const pgInfoVals = zTreeOprObj.currentRptPageRst.splitArcPagesInfo[idx];
+                const pgInfoVals = zTreeOprObj.currentRptPageRst.splitArcPagesInfo.splitPageValues[idx];
                 // 根据3种数据(id、code、name)来判断输出哪个页面
                 if (pgInfoVals[0] === change.cid || pgInfoVals[0] === change.code || pgInfoVals[0] === change.name) {
                     // 这里判断3种值(考虑到这3种值的差别极大,应该不会有重合的情况)

+ 18 - 0
app/public/report/js/rpt_main.js

@@ -138,8 +138,23 @@ let zTreeOprObj = {
                 }
             }
         };
+        const _changeSourceType = function(items, newType = 1) {4
+            if (items && items.length > 0) {
+                for (let i = items.length - 1; i >= 0; i--) {
+                    items[i].source_type = newType;
+                    if (items[i].items && items[i].items.length > 0) {
+                        _changeSourceType(items[i].items);
+                    }
+                }
+            }
+        };
         let nodeLv = 0;
         private_remove_hide_item(TOP_TREE_NODES, nodeLv);
+        if (STAGE_ID === -300) {
+            // -300是变更令报表用,在此情况下,经过测试,是走的tender路线,所以把source_type调整为‘标段&期’的模式(未来如有变化,可能需要调整回来)
+            // _changeSourceType(TOP_TREE_NODES);
+            // SOURCE_TYPE = 1;
+        }
         zTreeHelper.createTreeDirectly(TOP_TREE_NODES, rpt_tpl_setting, "rptTplTree", me);
         me.treeObj.expandAll(true);
         // let topNodes = me.treeObj.getNodes();
@@ -311,6 +326,7 @@ let zTreeOprObj = {
             params.isTextSignature = getTxtSignature();
             params.custCfg = CUST_CFG;
             params.detail_id = DETAIL_ID;
+            params.change_id = CHNAGE_ID;
             _getSplitAmendmentParam(params, treeNode);
         
             rptArchiveObj.toggleBtn(false);
@@ -396,6 +412,7 @@ let zTreeOprObj = {
             params.closeWatermark = getCloseWatermark();
             params.isTextSignature = getTxtSignature();
             params.detail_id = DETAIL_ID;
+            params.change_id = CHNAGE_ID;
             _getSplitAmendmentParam(params, me.currentNode);
             localStorage[CUST_NAME + '_custCfg'] = JSON.stringify(CUST_CFG);
 
@@ -720,6 +737,7 @@ let rptControlObj = {
         rst.closeWatermark = getCloseWatermark();
         rst.isTextSignature = getTxtSignature();
         rst.detail_id = DETAIL_ID;
+        rst.change_id = CHNAGE_ID;
         // rst.amendmentType = 
         return rst;
     },

+ 1 - 1
app/router.js

@@ -450,7 +450,7 @@ module.exports = app => {
 
     // 报表
     app.get('/tender/:id/report', sessionAuth, tenderCheck, uncheckTenderCheck, 'reportController.index');
-    app.get('/tender/:id/change/report', sessionAuth, tenderCheck, uncheckTenderCheck, 'reportController.indexForChange');
+    app.get('/tender/:id/change/:cid/report', sessionAuth, tenderCheck, uncheckTenderCheck, 'reportController.indexForChange');
     app.get('/tender/:id/change/plan/report', sessionAuth, tenderCheck, uncheckTenderCheck, 'reportController.indexForChangePlan');
     app.get('/tender/:id/change/project/report', sessionAuth, tenderCheck, uncheckTenderCheck, 'reportController.indexForChangeProject');
     app.get('/tender/:id/change/apply/report', sessionAuth, tenderCheck, uncheckTenderCheck, 'reportController.indexForChangeApply');

+ 2 - 1
app/service/report.js

@@ -43,7 +43,8 @@ module.exports = app => {
         }
 
         getFilter(sourceFilters) {
-            const common = [], spec = [];
+            const common = [],
+                spec = [];
             for (const sf of sourceFilters) {
                 let bSpec = false;
                 for (const key in bindData) {

+ 3 - 2
app/view/report/index.ejs

@@ -381,8 +381,9 @@
     let TOP_TREE_NODES = <%- rpt_tpl_data %>;
     const DETAIL_ID = <%- detail_id %>;
     const BUDGET_ID = <%- budget_id %>;
+    const CHNAGE_ID = '<%- changeId %>';
     const SP_ID = '<%- sp_id %>';
-    const SOURCE_TYPE = <%- source_type %>;
+    let SOURCE_TYPE = <%- source_type %>;
     const ALL_CHANGES = <%- changes %>;
     const PAGE_SHOW = {closeWatermark: 0, closeExportPdf: 0, closeExportExcel: 0, showArchive: 0, closeShowAllCustomized: 0, isTextSignature: 0, closeArchiveSignature: 0};
     <% if (pageShow !== null) { %>
@@ -554,7 +555,7 @@
                     TOP_TREE_NODES.splice(tnIdx, 1);
                 }
             }
-            if (TOP_TREE_NODES.length > 0) {
+            if (TOP_TREE_NODES.length > 0 && SOURCE_TYPE === 1) {
                 // 1.1 移除未被选择的模板
                 filterUnchkTplTreeNode(TOP_TREE_NODES[0], CUST_TREE_NODES.common);
                 TOP_TREE_NODES.unshift(individualNode); //定制在前