浏览代码

Merge branch 'dev' of http://192.168.1.41:3000/maixinrong/Calculation into dev

MaiXinRong 1 年之前
父节点
当前提交
16e7e61b10

+ 3 - 0
app/controller/change_controller.js

@@ -296,7 +296,10 @@ module.exports = app => {
                 const projectData = await ctx.service.project.getDataById(ctx.session.sessionProject.id);
                 const projectData = await ctx.service.project.getDataById(ctx.session.sessionProject.id);
                 const fun_set = await ctx.service.project.getFunSet(projectData.fun_set);
                 const fun_set = await ctx.service.project.getFunSet(projectData.fun_set);
                 const stateInfo = ctx.helper._.find(fun_set.change_state, { order: 3 });
                 const stateInfo = ctx.helper._.find(fun_set.change_state, { order: 3 });
+                // 在生成新变更令后,需要copy前一个变更令报表的签名信息
+                const lastChange = await ctx.service.change.getLastChange(tenderId);
                 const change = await ctx.service.change.add(tenderId, ctx.session.sessionUser.accountId, data.code, data.plan_code, data.name, stateInfo.value);
                 const change = await ctx.service.change.add(tenderId, ctx.session.sessionUser.accountId, data.code, data.plan_code, data.name, stateInfo.value);
+                await ctx.service.roleRptRel.createRoleRelationshipFromOtherBz(tenderId, '-300', change.cid, lastChange ? lastChange.cid : null);
 
 
                 ctx.body = { err: 0, msg: '', data: change };
                 ctx.body = { err: 0, msg: '', data: change };
             } catch (err) {
             } catch (err) {

+ 66 - 43
app/controller/report_controller.js

@@ -317,13 +317,8 @@ module.exports = app => {
                     viewPmData: PermissionCheck.viewPmData(this.ctx.session.sessionUser.permission),
                     viewPmData: PermissionCheck.viewPmData(this.ctx.session.sessionUser.permission),
                     auditType: auditConst.auditType,
                     auditType: auditConst.auditType,
                     source_type: 1,
                     source_type: 1,
+                    bglObj: 'null',
                     changes: 'null',
                     changes: 'null',
-                    changeId: '-1',
-                    businessId: '-1',
-                    change_times: 1,
-                    cPlanId: -1,
-                    cPrjId: -1,
-                    cAplId: -1,
 
 
                 };
                 };
                 await this.layout('report/index.ejs', renderData, 'report/rpt_all_popup.ejs');
                 await this.layout('report/index.ejs', renderData, 'report/rpt_all_popup.ejs');
@@ -473,13 +468,8 @@ module.exports = app => {
                     OSS_PATH: ctx.app.config.fujianOssPath,
                     OSS_PATH: ctx.app.config.fujianOssPath,
                     viewPmData: PermissionCheck.viewPmData(this.ctx.session.sessionUser.permission),
                     viewPmData: PermissionCheck.viewPmData(this.ctx.session.sessionUser.permission),
                     source_type: 101,
                     source_type: 101,
+                    bglObj: 'null',
                     changes: 'null',
                     changes: 'null',
-                    changeId: '-1',
-                    businessId: '-1',
-                    change_times: 1,
-                    cPlanId: -1,
-                    cPrjId: -1,
-                    cAplId: -1,
                 };
                 };
                 /*
                 /*
                 //*/
                 //*/
@@ -620,13 +610,8 @@ module.exports = app => {
                     OSS_PATH: ctx.app.config.fujianOssPath,
                     OSS_PATH: ctx.app.config.fujianOssPath,
                     viewPmData: PermissionCheck.viewPmData(this.ctx.session.sessionUser.permission),
                     viewPmData: PermissionCheck.viewPmData(this.ctx.session.sessionUser.permission),
                     source_type: 200,
                     source_type: 200,
+                    bglObj: 'null',
                     changes: 'null',
                     changes: 'null',
-                    changeId: '-1',
-                    businessId: '-1',
-                    change_times: 1,
-                    cPlanId: -1,
-                    cPrjId: -1,
-                    cAplId: -1,
                 };
                 };
                 await this.layout('report/index.ejs', renderData, 'report/rpt_all_popup.ejs');
                 await this.layout('report/index.ejs', renderData, 'report/rpt_all_popup.ejs');
 
 
@@ -644,24 +629,40 @@ module.exports = app => {
                 pageShow.showArchive = 1;
                 pageShow.showArchive = 1;
                 pageShow.closeShowAllCustomized = 0;
                 pageShow.closeShowAllCustomized = 0;
                 const tenderId = ctx.params.id;
                 const tenderId = ctx.params.id;
+                const bglObj = {};
+                if (stage_id === -300) {
+                    bglObj.BUSINESS_ID = ctx.params.cid;
+                    bglObj.change = await ctx.service.change.getChangeByCid(ctx.params.cid);
+                    bglObj.currentBz = bglObj.change;
+                    bglObj.status = bglObj.change.status;
+                    // const audit = await ctx.service.changeAudit.getChangeByCid(ctx.params.cid);
+                }
+                if (stage_id === -301) {
+                    bglObj.BUSINESS_ID = ctx.params.cplnid;
+                    bglObj.change_plan = await ctx.service.changePlan.getDataById(ctx.params.cplnid);
+                    bglObj.currentBz = bglObj.change_plan;
+                    bglObj.status = bglObj.change_plan.status;
+                }
+                if (stage_id === -302) {
+                    bglObj.BUSINESS_ID = ctx.params.cprjid;
+                    bglObj.change_project = await ctx.service.changeProject.getDataById(ctx.params.cprjid);
+                    bglObj.currentBz = bglObj.change_project;
+                    bglObj.status = bglObj.change_project.status;
+                }
+                if (stage_id === -303) {
+                    bglObj.BUSINESS_ID = ctx.params.caid;
+                    bglObj.change_apply = await ctx.service.changeApply.getDataById(ctx.params.caid);
+                    bglObj.currentBz = bglObj.change_apply;
+                    bglObj.status = bglObj.change_apply.status;
+                }
                 const changeId = ctx.params.cid;
                 const changeId = ctx.params.cid;
-                const cPlanId = ctx.params.cplnid || '-1';
-                const cPrjId = ctx.params.cprjid || '-1';
-                const cAplId = ctx.params.caid || '-1';
-                let bzId = '';
-                if (stage_id === -300) bzId = changeId;
-                if (stage_id === -301) bzId = cPlanId;
-                if (stage_id === -302) bzId = cPrjId;
-                if (stage_id === -303) bzId = cAplId;
                 const paymentDetail_id = -1;
                 const paymentDetail_id = -1;
                 const pid = ctx.session.sessionProject.id;
                 const pid = ctx.session.sessionProject.id;
                 const budget_id = -1;
                 const budget_id = -1;
                 const sp_id = -1;
                 const sp_id = -1;
                 const { treeNodes, custCfg } = await this._createNodes(ctx, source_type, pid);
                 const { treeNodes, custCfg } = await this._createNodes(ctx, source_type, pid);
-                const sorts = ctx.query.sort ? ctx.query.sort : 0;
-                const orders = ctx.query.order ? ctx.query.order : 0;
                 const state = ctx.session.sessionProject.page_show.openChangeState && ctx.query.state ? parseInt(ctx.query.state) : 0;
                 const state = ctx.session.sessionProject.page_show.openChangeState && ctx.query.state ? parseInt(ctx.query.state) : 0;
-                const changes = await ctx.service.change.getListByStatus(tenderId, 0, 1, sorts, orders, state);
+                const changes = await ctx.service.change.getListByStatus(tenderId, 0, 1, 0, 0, state);
                 let change_times = 1;
                 let change_times = 1;
                 const stageList = [];
                 const stageList = [];
                 const unitList = await ctx.service.constructionUnit.getAllDataByCondition({ where: { pid } }); // 找公司章用的
                 const unitList = await ctx.service.constructionUnit.getAllDataByCondition({ where: { pid } }); // 找公司章用的
@@ -680,7 +681,7 @@ module.exports = app => {
                     }
                     }
                 }
                 }
                 let archiveList = [];
                 let archiveList = [];
-                const archives = await ctx.service.rptArchive.getArchiveByBzId(pid, stage_id, bzId);
+                const archives = await ctx.service.rptArchive.getArchiveByBzId(pid, stage_id, bglObj.BUSINESS_ID);
                 if (archives.length > 0) {
                 if (archives.length > 0) {
                     archiveList = JSON.parse(archives[0].content);
                     archiveList = JSON.parse(archives[0].content);
                 }
                 }
@@ -790,13 +791,9 @@ module.exports = app => {
                     OSS_PATH: ctx.app.config.fujianOssPath,
                     OSS_PATH: ctx.app.config.fujianOssPath,
                     viewPmData: PermissionCheck.viewPmData(this.ctx.session.sessionUser.permission),
                     viewPmData: PermissionCheck.viewPmData(this.ctx.session.sessionUser.permission),
                     source_type,
                     source_type,
+                    bglObj: JSON.stringify(bglObj),
                     changes: JSON.stringify(changes),
                     changes: JSON.stringify(changes),
-                    changeId,
-                    businessId: bzId,
-                    change_times,
-                    cPlanId,
-                    cPrjId,
-                    cAplId,
+                    bizId: bglObj.BUSINESS_ID,
                 };
                 };
                 await this.layout('report/index.ejs', renderData, 'report/rpt_all_popup.ejs');
                 await this.layout('report/index.ejs', renderData, 'report/rpt_all_popup.ejs');
             } catch (err) {
             } catch (err) {
@@ -863,6 +860,30 @@ module.exports = app => {
             }
             }
         }
         }
 
 
+        _mergeBlankRoleSignDate(roleRel, auditors) {
+            // 有些签名信息的sign_date是空白的(从前一业务copy过来并清理),需要根据审核信息来自动填写上审核时间
+            // 1. 用户ID 2. sign_date为空白
+            if (roleRel && auditors) {
+                roleRel.forEach(record => {
+                    const contents = JSON.parse(record.rel_content);
+                    let hasMerge = false;
+                    contents.forEach(role => {
+                        if (!role.sign_date || role.sign_date === '') {
+                            auditors.forEach(audit => {
+                                if (audit.aid === role.acc_id) {
+                                    role.sign_date = audit.end_time;
+                                    hasMerge = true;
+                                }
+                            });
+                        }
+                    });
+                    if (hasMerge) {
+                        record.rel_content = JSON.stringify(contents);
+                    }
+                });
+            }
+        }
+
         async _getReport(ctx, params) {
         async _getReport(ctx, params) {
             // console.log('in getReport');
             // console.log('in getReport');
             // console.log(params);
             // console.log(params);
@@ -945,6 +966,7 @@ module.exports = app => {
                     default:
                     default:
                         break;
                         break;
                 }
                 }
+                this._mergeBlankRoleSignDate(roleRel, stgAudit);
             }
             }
 
 
             stageFlow.forEach(x => {
             stageFlow.forEach(x => {
@@ -1024,7 +1046,7 @@ module.exports = app => {
                 ctx.status = 201;
                 ctx.status = 201;
                 return;
                 return;
             }
             }
-            if (![-100, -200, -300].includes(params.stage_id)) {
+            if (params.stage_id > 0) {
                 await this._saveCustomSelects(params);
                 await this._saveCustomSelects(params);
             }
             }
             // const pageRstArr = await getMultiRptsCommon(ctx, params, JV.OUTPUT_TYPE_NORMAL, this.app.baseDir) || [];
             // const pageRstArr = await getMultiRptsCommon(ctx, params, JV.OUTPUT_TYPE_NORMAL, this.app.baseDir) || [];
@@ -1043,9 +1065,14 @@ module.exports = app => {
                 }
                 }
             }
             }
 
 
+            const roleRel = await ctx.service.roleRptRel.getRoleRptRelByDetailIds(params.tender_id, params.rpt_ids, params.stage_id, params.business_id); // 新需求:在审批流程中的签名需要显示
+            roleRel.sort(function(rr1, rr2) {
+                return params.rpt_ids.indexOf(parseInt(rr1.rpt_id)) - params.rpt_ids.indexOf(parseInt(rr2.rpt_id));
+            });
+
             let stgAudit = null,
             let stgAudit = null,
                 stageList = [];
                 stageList = [];
-            if (![-100, -200, -300, -301, -302, -303].includes(params.stage_id)) {
+            if (params.stage_id > 0) {
                 stgAudit = await ctx.service.stageAudit.getStageAudit(params.stage_id, params.stage_times);
                 stgAudit = await ctx.service.stageAudit.getStageAudit(params.stage_id, params.stage_times);
                 stageList = await ctx.service.stage.getValidStagesShort(params.tender_id);
                 stageList = await ctx.service.stage.getValidStagesShort(params.tender_id);
             } else if ([-100, -200].includes(params.stage_id)) {
             } else if ([-100, -200].includes(params.stage_id)) {
@@ -1073,13 +1100,9 @@ module.exports = app => {
                     default:
                     default:
                         break;
                         break;
                 }
                 }
+                this._mergeBlankRoleSignDate(roleRel, stgAudit);
             }
             }
 
 
-            const roleRel = await ctx.service.roleRptRel.getRoleRptRelByDetailIds(params.tender_id, params.rpt_ids, params.stage_id, params.business_id); // 新需求:在审批流程中的签名需要显示
-            roleRel.sort(function(rr1, rr2) {
-                return params.rpt_ids.indexOf(parseInt(rr1.rpt_id)) - params.rpt_ids.indexOf(parseInt(rr2.rpt_id));
-            });
-
             mergeStampSignature(ctx, params.stage_status, pageRstArr, roleRel, params.rpt_ids, stgAudit, stageList);
             mergeStampSignature(ctx, params.stage_status, pageRstArr, roleRel, params.rpt_ids, stgAudit, stageList);
             mergeTextSignature(params.isTextSignature, params.stage_status, pageRstArr, roleRel, params.rpt_ids, stgAudit, stageList);
             mergeTextSignature(params.isTextSignature, params.stage_status, pageRstArr, roleRel, params.rpt_ids, stgAudit, stageList);
 
 

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

@@ -1419,13 +1419,20 @@ function downloadReport(urls) {
 }
 }
 
 
 function getStageStatus() {
 function getStageStatus() {
-    let ppStatus = zTreeOprObj._chkPrePayStatus();
-    if (ppStatus === 3) {
-        return ppStatus
+    if (current_stage_id > 0) {
+        let ppStatus = zTreeOprObj._chkPrePayStatus();
+        if (ppStatus === 3) {
+            return ppStatus
+        } else return current_stage_status;
     } else {
     } else {
-        if ([-200, -300, -301, -302, -303].includes(STAGE_ID)) return 3
-        else return current_stage_status;
+        if ([-100, -200].includes(current_stage_id)) {
+            return 3
+        } else if ([-300, -301, -302, -303].includes(current_stage_id)) {
+            // return 3; // 临时的
+            return BGL_OBJ?.status || -1;
+        }
     }
     }
+    return -1;
 }
 }
 
 
 function getStageId() {
 function getStageId() {

+ 10 - 6
app/public/report/js/rpt_signature.js

@@ -145,11 +145,13 @@ let rptSignatureHelper = {
             const elementsStrArr = [];
             const elementsStrArr = [];
             let dftDate = _getSignDateByAllScenarios(userAcc.id);
             let dftDate = _getSignDateByAllScenarios(userAcc.id);
             if (dftDate !== '' && dftDate.length >= 10) {
             if (dftDate !== '' && dftDate.length >= 10) {
-                // dftDate = (new Date(dftDate)).Format('yyyy-MM-dd');
                 dftDate = new Date(dftDate); // 不Format,保留时分秒
                 dftDate = new Date(dftDate); // 不Format,保留时分秒
             } else if (dftDate === '') {
             } else if (dftDate === '') {
-                // dftDate = (new Date()).Format('yyyy-MM-dd');
-                dftDate = new Date();
+                if (STAGE_ID <= -300 && STAGE_ID > -400 && BGL_OBJ && BGL_OBJ.currentBz && BGL_OBJ.currentBz.status === 3) {
+                    dftDate = new Date(BGL_OBJ.currentBz.in_time);
+                } else {
+                    dftDate = new Date();
+                }
             }
             }
             let roleRel = null;
             let roleRel = null;
             if (directAcc) {
             if (directAcc) {
@@ -836,11 +838,13 @@ let rptSignatureHelper = {
                 if (role_rel.sign_date === undefined || role_rel.sign_date ===  null || role_rel.sign_date ===  '') {
                 if (role_rel.sign_date === undefined || role_rel.sign_date ===  null || role_rel.sign_date ===  '') {
                     let dftDate = _getSignDateByAllScenarios(role_rel.acc_id);
                     let dftDate = _getSignDateByAllScenarios(role_rel.acc_id);
                     if (dftDate !== '' && dftDate.length >= 10) {
                     if (dftDate !== '' && dftDate.length >= 10) {
-                        // dftDate = (new Date(dftDate)).Format('yyyy-MM-dd');
                         dftDate = new Date(dftDate); // 不Format,保留时分秒
                         dftDate = new Date(dftDate); // 不Format,保留时分秒
                     } else if (dftDate === '') {
                     } else if (dftDate === '') {
-                        // dftDate = (new Date()).Format('yyyy-MM-dd');
-                        dftDate = new Date();
+                        if (STAGE_ID <= -300 && STAGE_ID > -400 && BGL_OBJ && BGL_OBJ.currentBz && BGL_OBJ.currentBz.status === 3) {
+                            dftDate = new Date(BGL_OBJ.currentBz.in_time);
+                        } else {
+                            dftDate = new Date();
+                        }
                     }
                     }
                     role_rel.sign_date = dftDate;
                     role_rel.sign_date = dftDate;
                     if (isMergeOrgAlso) {
                     if (isMergeOrgAlso) {

+ 20 - 3
app/service/change.js

@@ -536,6 +536,22 @@ module.exports = app => {
             return await this.db.count(this.tableName, { tid: tenderId, status });
             return await this.db.count(this.tableName, { tid: tenderId, status });
         }
         }
 
 
+        // 获取最后一个变更令
+        async getLastChange(tenderId) {
+            const sql = 'select * from ?? where tid = ? order by in_time desc LIMIT 1';
+            const sqlParam = [this.tableName, tenderId];
+            const result = await this.db.queryOne(sql, sqlParam);
+            return result;
+        }
+
+        // 根据cid获取唯一的变更令
+        async getChangeByCid(cid) {
+            const sql = 'select * from ?? where cid = "' + cid + '"';
+            const sqlParam = [this.tableName, cid];
+            const result = await this.db.queryOne(sql, sqlParam);
+            return result;
+        }
+
         /**
         /**
          * 获取已批复变更令的总金额
          * 获取已批复变更令的总金额
          * @param {int} tenderId - 标段id
          * @param {int} tenderId - 标段id
@@ -1316,14 +1332,15 @@ module.exports = app => {
          * @return {Promise<*>} - 可用的变更令列表
          * @return {Promise<*>} - 可用的变更令列表
          */
          */
         async getValidChanges(tender, stage, data, noValue) {
         async getValidChanges(tender, stage, data, noValue) {
-            const bills = data.bills, pos = data.pos;
+            const bills = data.bills,
+                pos = data.pos;
             const self = this;
             const self = this;
             const getFilterPart = function(field, value) {
             const getFilterPart = function(field, value) {
                 return value
                 return value
                     ? field + ' = ' + self.db.escape(value)
                     ? field + ' = ' + self.db.escape(value)
                     : self.db.format("(?? = null or ?? = '')", [field, field]);
                     : self.db.format("(?? = null or ?? = '')", [field, field]);
             };
             };
-            let filter = getFilterPart('cb.code', bills.b_code) +
+            const filter = getFilterPart('cb.code', bills.b_code) +
                 ' And ' + getFilterPart('cb.name', bills.name) +
                 ' And ' + getFilterPart('cb.name', bills.name) +
                 ' And ' + getFilterPart('cb.unit', bills.unit) +
                 ' And ' + getFilterPart('cb.unit', bills.unit) +
                 ' And cb.`unit_price` = ' + this.db.escape(bills.unit_price);
                 ' And cb.`unit_price` = ' + this.db.escape(bills.unit_price);
@@ -1365,7 +1382,7 @@ module.exports = app => {
                 }
                 }
                 const stageUsedData = await this.db.query(sSql, sSqlParam);
                 const stageUsedData = await this.db.query(sSql, sSqlParam);
                 const filter = this.ctx.helper.filterLastestData(stageUsedData, ['pid', 'lid', 'no_value'], 'stimes', 'sorder');
                 const filter = this.ctx.helper.filterLastestData(stageUsedData, ['pid', 'lid', 'no_value'], 'stimes', 'sorder');
-                c.stage_used_amount = this.ctx.helper.sum(filter.map(x => { return x.qty }));
+                c.stage_used_amount = this.ctx.helper.sum(filter.map(x => { return x.qty; }));
                 const aSql = 'SELECT ca.*, pa.name As u_name, pa.role As u_role ' +
                 const aSql = 'SELECT ca.*, pa.name As u_name, pa.role As u_role ' +
                     '  FROM ?? As ca ' +
                     '  FROM ?? As ca ' +
                     '  Left Join ?? As pa ' +
                     '  Left Join ?? As pa ' +

+ 10 - 4
app/service/role_rpt_rel.js

@@ -133,15 +133,21 @@ module.exports = app => {
             return rst;
             return rst;
         }
         }
 
 
-        async createRoleRelationshipFromOtherBz(tender_id, sid, currentBzId, preBzId) {
+        async createRoleRelationshipFromOtherBz(tender_id, sid, currentBzId, preBzId, cleanSignDate = true) {
             // 此方法适合变更令相关业务
             // 此方法适合变更令相关业务
             if (preBzId && currentBzId) {
             if (preBzId && currentBzId) {
-                const preRst = await this.getRoleRptRelByDetailIds(tender_id, '-1', sid, '', preBzId);
+                const preRst = await this.getRoleRptRelByDetailIds(tender_id, '-1', sid, preBzId);
                 if (preRst.length > 0) {
                 if (preRst.length > 0) {
                     preRst.forEach(async role => {
                     preRst.forEach(async role => {
-                        const curRst = await this.getRoleRptRelByDetailIds(tender_id, role.rpt_id, sid, '', currentBzId);
+                        const curRst = await this.getRoleRptRelByDetailIds(tender_id, role.rpt_id, sid, currentBzId);
                         if (curRst.length === 0) {
                         if (curRst.length === 0) {
-                            await this.createRoleRelationship(tender_id, role.rpt_id, sid, currentBzId, '', JSON.parse(role.rel_content));
+                            const contents = JSON.parse(role.rel_content);
+                            if (cleanSignDate) {
+                                contents.forEach(role => {
+                                    role.sign_date = '';
+                                });
+                            }
+                            await this.createRoleRelationship(tender_id, role.rpt_id, sid, currentBzId, '', contents);
                         }
                         }
                     });
                     });
                 }
                 }

+ 12 - 10
app/view/report/index.ejs

@@ -48,16 +48,16 @@
                 -->
                 -->
                 <div class="btn-group btn-group-toggle group-tab">
                 <div class="btn-group btn-group-toggle group-tab">
                     <% if ([-300].includes(stg_id)) { %>
                     <% if ([-300].includes(stg_id)) { %>
-                    <a class="btn btn-sm btn-light" href="/tender/<%- tender_id %>/change/<%- changeId %>/information">变更详情</a>
+                    <a class="btn btn-sm btn-light" href="/tender/<%- tender_id %>/change/<%- bizId %>/information">变更详情</a>
                     <% } %>
                     <% } %>
                     <% if ([-301].includes(stg_id)) { %>
                     <% if ([-301].includes(stg_id)) { %>
-                    <a class="btn btn-sm btn-light" href="/tender/<%- tender_id %>/change/plan/<%- cPlanId %>/information">方案详情</a>
+                    <a class="btn btn-sm btn-light" href="/tender/<%- tender_id %>/change/plan/<%- bizId %>/information">方案详情</a>
                     <% } %>
                     <% } %>
                     <% if ([-302].includes(stg_id)) { %>
                     <% if ([-302].includes(stg_id)) { %>
-                    <a class="btn btn-sm btn-light" href="/tender/<%- tender_id %>/change/project/<%- cPrjId %>/information">立项详情</a>
+                    <a class="btn btn-sm btn-light" href="/tender/<%- tender_id %>/change/project/<%- bizId %>/information">立项详情</a>
                     <% } %>
                     <% } %>
                     <% if ([-303].includes(stg_id)) { %>
                     <% if ([-303].includes(stg_id)) { %>
-                    <a class="btn btn-sm btn-light" href="/tender/<%- tender_id %>/change/apply/<%- cAplId %>/information">申请详情</a>
+                    <a class="btn btn-sm btn-light" href="/tender/<%- tender_id %>/change/apply/<%- bizId %>/information">申请详情</a>
                     <% } %>
                     <% } %>
                     <a class="btn btn-sm btn-light active" href="javascript:void(0);">输出报表</a>
                     <a class="btn btn-sm btn-light active" href="javascript:void(0);">输出报表</a>
                 </div>
                 </div>
@@ -398,15 +398,17 @@
     let TOP_TREE_NODES = <%- rpt_tpl_data %>;
     let TOP_TREE_NODES = <%- rpt_tpl_data %>;
     const DETAIL_ID = <%- detail_id %>;
     const DETAIL_ID = <%- detail_id %>;
     const BUDGET_ID = <%- budget_id %>;
     const BUDGET_ID = <%- budget_id %>;
-    const CHNAGE_ID = '<%- changeId %>';
-    const CHANGE_TIMES = <%- change_times %>;
-    const BUSINESS_ID = '<%- businessId %>';
-    const CHNAGE_PLAN_ID = '<%- cPlanId %>';
-    const CHNAGE_PROJECT_ID = '<%- cPrjId %>';
-    const CHNAGE_APPLY_ID = '<%- cAplId %>';
     const SP_ID = '<%- sp_id %>';
     const SP_ID = '<%- sp_id %>';
     const SOURCE_TYPE = <%- source_type %>;
     const SOURCE_TYPE = <%- source_type %>;
     const ALL_CHANGES = <%- changes %>;
     const ALL_CHANGES = <%- changes %>;
+    const BGL_OBJ = <%- bglObj %>;
+    const CHNAGE_ID = BGL_OBJ?.change?.cid || '-1';
+    const CHANGE_TIMES = BGL_OBJ?.change?.times || 1;
+    const BUSINESS_ID = BGL_OBJ?.BUSINESS_ID || '-1';
+    const CHNAGE_PLAN_ID = BGL_OBJ?.change_plan?.id || '-1';
+    const CHNAGE_PROJECT_ID = BGL_OBJ?.change_project?.id || '-1';
+    const CHNAGE_APPLY_ID = BGL_OBJ?.change_apply?.id || '-1';
+
     const PAGE_SHOW = {closeWatermark: 0, closeExportPdf: 0, closeExportExcel: 0, showArchive: 0, closeShowAllCustomized: 0, isTextSignature: 0, closeArchiveSignature: 0};
     const PAGE_SHOW = {closeWatermark: 0, closeExportPdf: 0, closeExportExcel: 0, showArchive: 0, closeShowAllCustomized: 0, isTextSignature: 0, closeArchiveSignature: 0};
     <% if (pageShow !== null) { %>
     <% if (pageShow !== null) { %>
         <% if (parseInt(pageShow.closeWatermark) === 1) { %>
         <% if (parseInt(pageShow.closeWatermark) === 1) { %>