Переглянути джерело

fix: 报表请求增加对sub project的处理

Tony Kang 2 місяців тому
батько
коміт
53c98e3e7b

+ 5 - 1
app/controller/report_controller.js

@@ -488,6 +488,9 @@ module.exports = app => {
 
                 // 获取所有项目参与者
                 const { accountList, newAccountGroup, advance } = await this._getInvolveAcc(ctx, tenderId);
+                let sp_id = -1;
+                if (this.ctx.subProject) sp_id = this.ctx.subProject.id;
+
 
                 const renderData = {
                     accountGroup: newAccountGroup,
@@ -507,7 +510,8 @@ module.exports = app => {
                     detail_id: paymentDetail_id,
                     stg_id: stage_id,
                     budget_id: -1,
-                    sp_id: -1,
+                    // sp_id: -1,
+                    sp_id,
                     stg_order: stage_order,
                     cur_order: sorder,
                     stg_times: stage_times,

+ 10 - 1
app/middleware/sub_project_check.js

@@ -20,7 +20,16 @@ module.exports = options => {
     return function* subProjectCheck(next) {
         try {
             // 读取标段数据
-            const id = this.tender ? this.tender.data.spid : this.params.id || this.query.id;
+            let id = this.tender ? this.tender.data.spid : this.params.id || this.query.id;
+            // subProjectId不一定在url上给出,在项目中报表数据的调用是放到独立参数对象中的sp_id属性中
+            if (!id) {
+                if (this.request.body.params) {
+                    const params = JSON.parse(this.request.body.params);
+                    if (params.sp_id && params.sp_id !== -1 && params.sp_id !== '-1') {
+                        id = params.sp_id;
+                    }
+                }
+            }
             if (!id) throw '参数错误';
 
             this.subProject = yield this.service.subProject.getDataById(id);

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

@@ -752,6 +752,8 @@ let rptControlObj = {
             params.tender_id = TENDER_ID;
             params.budget_id = BUDGET_ID;
             params.sp_id = SP_ID;
+            // if (params.sp_id && params.sp_id !== -1 && params.sp_id !== '-1') params.id = params.sp_id; // 这里的id实际就是sp_id,给后台检测用的
+            params.id = params.sp_id; // 这里的id实际就是sp_id,给后台检测用的
             params.source_type = SOURCE_TYPE;
             params.stage_id = getStageId();
             params.stage_status = getStageStatus();

+ 3 - 7
app/router.js

@@ -129,7 +129,6 @@ module.exports = app => {
     // ------------------------- 通用 -----------------------------
 
 
-
     // ------------------------- 项目相关 -----------------------------
     // **工作台  todo 暂时引用控制面板,待修改
     app.get('/dashboard', sessionAuth, 'dashboardController.index');
@@ -191,8 +190,6 @@ module.exports = app => {
     // ------------------------- 项目相关 -----------------------------
 
 
-
-
     // ------------------------- 项目内部相关 -----------------------------
     // **项目设置
     // 标段自定义类别
@@ -252,7 +249,7 @@ module.exports = app => {
     app.post('/sp/:id/progress/update', sessionAuth, subProjectCheck, 'subProjController.progressUpdate');
     app.post('/sp/:id/progress/file/upload', sessionAuth, subProjectCheck, 'subProjController.uploadFile');
     app.post('/sp/:id/progress/file/delete', sessionAuth, subProjectCheck, 'subProjController.deleteFile');
-    //推进记录
+    // 推进记录
     app.get('/sp/:id/push', sessionAuth, subProjectCheck, 'subProjController.push');
     app.post('/sp/:id/push/update', sessionAuth, subProjectCheck, 'subProjController.pushUpdate');
     app.post('/sp/:id/push/file/upload', sessionAuth, subProjectCheck, 'subProjController.uploadFile');
@@ -429,7 +426,6 @@ module.exports = app => {
     // ------------------------- 项目内部相关 -----------------------------
 
 
-
     // ------------------------- 标段内部 -----------------------------
     // 为了保持标段内部链接不变,须在tenderCheck后,进行subProjectCheck,使用tender.spid来获取所属的子项目,标段无所属子项目时则无法进入
     // 标段概况
@@ -769,9 +765,9 @@ module.exports = app => {
     app.get('/archive/pdf/show', sessionAuth, 'reportArchiveController.pdfShow');
     app.get('/printReport/:size', sessionAuth, 'reportController.showPrintPage');
     app.get('/individualReport/:size', sessionAuth, 'reportController.showIndividualPage');
-    app.post('/tender/report_api/getReport', sessionAuth, 'reportController.getReport');
+    app.post('/tender/report_api/getReport', sessionAuth, subProjectCheck, 'reportController.getReport');
     app.post('/tender/report_api/getDirectReport', sessionAuth, 'reportController.createExcelFilesFromDirectData');
-    app.post('/tender/report_api/getMultiReports', sessionAuth, 'reportController.getMultiReportsEx');
+    app.post('/tender/report_api/getMultiReports', sessionAuth, subProjectCheck, 'reportController.getMultiReportsEx');
     app.post('/tender/report_api/getTestReport', sessionAuth, 'reportController.getTestReport');
 
     app.post('/tender/report_api/createExcelFiles', sessionAuth, 'reportController.createExcelFilesEx');