Tony Kang 1 年之前
父节点
当前提交
713be7ec21

+ 21 - 0
app/controller/signature_controller.js

@@ -92,6 +92,27 @@ module.exports = app => {
             ctx.status = 201;
         }
 
+        // 多个变更令更新签名角色关联
+        async updateMultiChangesRoleRelationship(ctx) {
+            const params = JSON.parse(ctx.request.body.params);
+            const conParams = params.selectedChanges;
+            const roleRel = params.rel_content;
+            const bzId = params.business_id;
+            const srcKey = sourceTypeConst.sourceTypeKey[params.source_type];
+            console.log('before:');
+            console.log(params.rel_content);
+            await ctx.service.roleRptRel.updateRoleRelationship(params.id, params.tender_id, params.rpt_id, params.stage_id, bzId, srcKey, params.rel_content); // 传过来的数据是额外变更令的,还需要单独处理当前的
+            // update完默认当前的变更令后要清理审核日期(其他变更令的审核日期肯定会有出入的)
+            params.rel_content.forEach(role_rel => {
+                role_rel.sign_date = null;
+            });
+            console.log('after:');
+            console.log(params.rel_content);
+            const rst = await ctx.service.roleRptRel.updateMultiChangeRoleRelationship(conParams, srcKey, roleRel);
+            ctx.body = { data: rst };
+            ctx.status = 201;
+        }
+
         /**
          * 更新最近使用签名
          *

+ 39 - 13
app/public/report/js/rpt_signature.js

@@ -475,14 +475,7 @@ let rptSignatureHelper = {
         }
     },
 
-    setupAfterSelectMultiChanges: async function (selectedChanges, signatureDivId) {
-        alert('hoho~~~');
-        //
-    },
-
-
-    setupAfterSelectMultiTenders: function (selectedTenders, signatureDivId) {
-        //跨标段选择,有不少要注意的交互:
+    _operationBefore: function(signatureDivId) {
         //0. 签名日期
         rptSignatureHelper.resetSignDate(signatureDivId);
         rptSignatureHelper.resetSignAudit();
@@ -503,8 +496,10 @@ let rptSignatureHelper = {
             }
             zTreeOprObj.showPage(zTreeOprObj.currentPage, zTreeOprObj.canvas);
         }
-        //2. 集中请求
-        let params = {};
+    },
+
+    _getCommonParams: function() {
+        const params = {};
         params.id = CURRENT_ROLE_REL_ID;
         params.tender_id = TENDER_ID;
         params.stage_id = getStageId();
@@ -512,21 +507,52 @@ let rptSignatureHelper = {
         params.source_type = SOURCE_TYPE;
         params.rpt_id = zTreeOprObj.currentNode.refId;
         params.rel_content = ROLE_REL_LIST;
+        return params;
+    },
+
+    setupAfterSelectMultiChanges: async function (selectedChanges, signatureDivId) {
+        // 多变更令选择
+        this._operationBefore(signatureDivId);
+        const params = this._getCommonParams();
+        params.selectedChanges = selectedChanges;
+        const new_ROLE_REL_LIST = JSON.parse(JSON.stringify(ROLE_REL_LIST));
+        new_ROLE_REL_LIST.forEach(nrole => {
+            nrole.sign_pic = null;
+        });
+        params.rel_content = new_ROLE_REL_LIST;
+        rptSignatureHelper.originalRoleRelList = JSON.parse(JSON.stringify(ROLE_REL_LIST));
+        CommonAjax.postXsrfEx("/tender/report_api/updateMultiChangesRoleRelationship", params, 10000, true, getCookie('csrfToken_j'),
+            function(result){
+                $.bootstrapLoading.end();
+                if (result.data && result.data.insertId > 0) {
+                    CURRENT_ROLE_REL_ID = result.data.insertId;
+                }
+            }, function(err){
+                $.bootstrapLoading.end();
+            }, function(ex){
+                $.bootstrapLoading.end();
+            }
+        );
+    },
+
+
+    setupAfterSelectMultiTenders: function (selectedTenders, signatureDivId) {
+        // 跨标段选择,有不少要注意的交互:
+        this._operationBefore(signatureDivId);
+        //2. 集中请求
+        const params = this._getCommonParams();
         params.selectedTenders = selectedTenders;
         rptSignatureHelper.originalRoleRelList = JSON.parse(JSON.stringify(ROLE_REL_LIST));
         $.bootstrapLoading.start();
         CommonAjax.postXsrfEx("/tender/report_api/updateMultiRoleRelationship", params, 10000, true, getCookie('csrfToken_j'),
             function(result){
-                // console.log(result);
                 $.bootstrapLoading.end();
                 if (result.data && result.data.insertId > 0) {
                     CURRENT_ROLE_REL_ID = result.data.insertId;
                 }
             }, function(err){
-                // hintBox.unWaitBox();
                 $.bootstrapLoading.end();
             }, function(ex){
-                // hintBox.unWaitBox();
                 $.bootstrapLoading.end();
             }
         );

+ 1 - 0
app/router.js

@@ -483,6 +483,7 @@ module.exports = app => {
     app.post('/tender/report_api/updateSignatureUsed', sessionAuth, datetimeFill, 'signatureController.updateSignatureUsed');
     app.post('/tender/report_api/updateRoleRelationship', sessionAuth, 'signatureController.updateRoleRel');
     app.post('/tender/report_api/updateMultiRoleRelationship', sessionAuth, 'signatureController.updateCrossTendersRoleRelationship');
+    app.post('/tender/report_api/updateMultiChangesRoleRelationship', sessionAuth, 'signatureController.updateMultiChangesRoleRelationship');
     app.post('/tender/report_api/getMultiRoleRelationships', sessionAuth, 'signatureController.getMultiRoleRptRels');
     app.post('/tender/report_api/createRoleRelationship', sessionAuth, 'signatureController.createRoleRel');
     app.post('/tender/report_api/updateCustNode', sessionAuth, 'reportController.updateCustNode');

+ 24 - 0
app/service/role_rpt_rel.js

@@ -205,6 +205,30 @@ module.exports = app => {
             return rst;
         }
 
+        async updateMultiChangeRoleRelationship(orgParams, srcKey, newRelArr) {
+            for (let idx = 0; idx < orgParams.length; idx++) {
+                const param = orgParams[idx];
+                const tenderId = param[0];
+                const sid = param[1];
+                const businessId = param[2];
+                const rptId = param[3];
+                // 变更令的参数结构有些不一样
+                // [tenderId, '-300', changeCid, reportId];
+                const data = { tender_id: tenderId, sid, business_id: businessId, rpt_id: rptId };
+                this.transaction = await this.db.beginTransaction();
+                try {
+                    await this.transaction.delete(this.tableName, data);
+                    this.transaction.commit();
+                    await this.createRoleRelationship(tenderId, rptId, sid, businessId, srcKey, newRelArr);
+                } catch (ex) {
+                    console.log(ex.toString());
+                    // 回滚
+                    await this.transaction.rollback();
+                }
+            }
+            return true;
+        }
+
         async updateMultiRoleRelationship(orgParams, bzId, srcKey, newRelArr) {
             for (let idx = 0; idx < orgParams.length; idx++) {
                 const param = orgParams[idx];

+ 5 - 2
app/view/report/rpt_all_popup.ejs

@@ -245,7 +245,7 @@
                 <% if (stg_id !== -300) { %>
                     <a href="javascript:void(0);" onclick="rptSignatureHelper.setupAfterSelectMultiTenders(SELECTED_TENDERS, 'batch-eSignatureBodyDiv')" class="btn btn-sm btn-primary" data-dismiss="modal">确定</a>
                 <% } else { %>
-                    <a href="javascript:void(0);" onclick="rptSignatureHelper.setupAfterSelectMultiChanges(SELECTED_TENDERS, 'batch-eSignatureBodyDiv')" class="btn btn-sm btn-primary" data-dismiss="modal">确定</a>
+                    <a href="javascript:void(0);" onclick="rptSignatureHelper.setupAfterSelectMultiChanges(SELECTED_CHANGES, 'batch-eSignatureBodyDiv')" class="btn btn-sm btn-primary" data-dismiss="modal">确定</a>
                 <% } %>
             </div>
         </div>
@@ -983,11 +983,14 @@
         let tbDom = $("#batch_tenders_individual");
         tbDom.empty();
         let domStrs = [];
+        SELECTED_CHANGES = [];
         domStrs.push('<thead><tr><th>变更令名称</th><th width="40">选择</th></tr></thead>');
         domStrs.push('<tbody>');
         const report_id = zTreeOprObj.currentNode.refId;
         for (const dtlChange of ALL_CHANGES) {
-            domStrs.push(`<tr><td>${dtlChange.code}</td><td><input type="checkbox" onclick="amendChange(this, SELECTED_CHANGES, TENDER_ID, '${dtlChange.cid}', ${report_id})"></td></tr>`);
+            if (dtlChange.cid !== BUSINESS_ID) {
+                domStrs.push(`<tr><td>${dtlChange.code}</td><td><input type="checkbox" onclick="amendChange(this, SELECTED_CHANGES, TENDER_ID, '${dtlChange.cid}', ${report_id})"></td></tr>`);
+            }
         }
         domStrs.push('</tbody>');
         tbDom.append(domStrs.join(''));