Przeglądaj źródła

审批人选择,兼容会签、或签相关

MaiXinRong 1 rok temu
rodzic
commit
20ad5b1981
2 zmienionych plików z 20 dodań i 24 usunięć
  1. 17 23
      app/lib/rpt_data_analysis.js
  2. 3 1
      app/service/stage_audit.js

+ 17 - 23
app/lib/rpt_data_analysis.js

@@ -1556,15 +1556,13 @@ const loadCooperationData = {
         }
     },
     _loadImCooperationData(ctx, data, options, csRela) {
-        let coSignOrder = [];
+        const coSignInfo = [];
         if (csRela && csRela.tplDefine && csRela.tplDefine.audit_select && csRela.cDefine && csRela.cDefine.audit_select) {
             if (csRela.cDefine.audit_select) {
                 for (const asc of csRela.cDefine.audit_select) {
-                    coSignOrder.push(asc.order);
+                    coSignInfo.push({ aid: asc.aid, order: asc.order });
                 }
             }
-        } else {
-            coSignOrder = options.co_sign || [];
         }
 
         const stageCooperation = [];
@@ -1609,21 +1607,18 @@ const loadCooperationData = {
 
     },
     _loadImAssistData(ctx, data, options, csRela) {
-        let coSignOrder = [];
+        const coSignInfo = [];
         if (csRela && csRela.tplDefine && csRela.tplDefine.audit_select && csRela.cDefine && csRela.cDefine.audit_select) {
             if (csRela.cDefine.audit_select) {
                 for (const asc of csRela.cDefine.audit_select) {
-                    coSignOrder.push(asc.order);
+                    coSignInfo.push({ aid: asc.aid, order: asc.order });
                 }
             }
-        } else {
-            coSignOrder = options.co_sign || [];
         }
 
-        const stageAuditAss = [];
         let finish = true;
         for (const sa of data.stage_audit) {
-            if (sa.end_time) stageAuditAss.push(data.mem_stage_audit_ass.filter(x => { return x.user_id === sa.aid; }));
+            if (sa.end_time) sa.ass = data.mem_stage_audit_ass.filter(x => { return x.user_id === sa.aid; });
             if (finish && !sa.end_time) finish = false;
         }
 
@@ -1631,19 +1626,18 @@ const loadCooperationData = {
             const bills = data.mem_stage_bills.find(x => { return x.id === d.lid; });
             const relaId = bills ? bills.full_path.split('-').reverse() : [];
 
-            d.ass = [];
-            for (const [i, sa] of data.stage_audit.entries()) {
-                const co = this._findStageAuditAss(relaId, stageAuditAss[i], sa);
-                d.ass.push(co);
-            }
-
-            for (const [i, cs] of coSignOrder.entries()) {
-                if (data.stage_audit[cs] && data.stage_audit[cs].end_time) {
-                    d['co_sign' + (i + 1)] = this._completeSign(d.ass[cs] || data.stage_audit[cs]);
-                    d['co_opinion' + (i + 1)] = data.stage_audit[cs].opinion || '';
-                    d['co_time' + (i + 1)] = data.stage_audit[cs].end_time;
-                    d['co_name' + (i + 1)] = d.ass[cs] ? d.ass[cs].name : data.stage_audit[cs].name;
-                    d['co_company' + (i + 1)] = d.ass[cs] ? d.ass[cs].company : data.stage_audit[cs].company;
+            for (const [i, cs] of coSignInfo.entries()) {
+                const sa = data.stage_audit.find(x => {
+                    if (x.aid !== undefined) return x.aid === cs.aid && x.order === cs.order;
+                    return x.order === cs.order;
+                });
+                if (sa && sa.end_time) {
+                    const co = this._findStageAuditAss(relaId, sa.ass, sa);
+                    d['co_sign' + (i + 1)] = this._completeSign(co || sa);
+                    d['co_opinion' + (i + 1)] = sa.opinion || '';
+                    d['co_time' + (i + 1)] = sa.end_time;
+                    d['co_name' + (i + 1)] = co ? co.name : sa.name;
+                    d['co_company' + (i + 1)] = co ? co.company : sa.company;
                 }
             }
         }

+ 3 - 1
app/service/stage_audit.js

@@ -2015,13 +2015,15 @@ module.exports = app => {
 
         async getFinalAuditGroup(stageId, times) {
             const sql =
-                'SELECT la.`aid`, pa.`name`, pa.`company`, pa.`role`, pa.`mobile`, pa.`telephone`, pa.`sign_path`, la.`times`, la.`sid`, Max(la.`order`) as max_order ' +
+                'SELECT la.`aid`, pa.`name`, pa.`company`, pa.`role`, pa.`mobile`, pa.`telephone`, pa.`sign_path`,' +
+                '  la.`times`, la.`sid`, la.`audit_order`, la.`audit_type`, Max(la.`order`) as max_order ' +
                 '  FROM ?? AS la Left Join ?? AS pa On la.`aid` = pa.`id`' +
                 '  WHERE la.`sid` = ? and la.`times` = ? GROUP BY la.`aid` ORDER BY la.`order`';
             const sqlParam = [this.tableName, this.ctx.service.projectAccount.tableName, stageId, times];
             const result = await this.db.query(sql, sqlParam);
             for (const r of result) {
                 const auditor = await this.getDataByCondition({sid: stageId, times: r.times, order: r.max_order});
+                r.order = auditor.order;
                 r.status = auditor.status;
                 r.opinion = auditor.opinion;
                 r.begin_time = auditor.begin_time;