| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | 
							- 'use strict';
 
- /**
 
-  *
 
-  *
 
-  * @author Mai
 
-  * @date
 
-  * @version
 
-  */
 
- const ledger = require('../ledger');
 
- class reportMemoryBudget {
 
-     constructor(ctx) {
 
-         this.ctx = ctx;
 
-         this.budget = null;
 
-         this.getBudget = false;
 
-     }
 
-     async budgetInfo(bid) {
 
-         const subProject = await this.ctx.service.subProject.getDataByCondition({ budget_id: bid });
 
-         return await this.ctx.service.subProjInfo.getInfo4Report(subProject.id);
 
-     }
 
-     async budgetGai(bid, showLevel = false) {
 
-         const gai = await this.ctx.service.budgetGai.getAllDataByCondition({ where: { bid } });
 
-         const tree = new ledger.billsTree(this.ctx, { id: 'tree_id', pid: 'tree_pid', order: 'order', level: 'level', rootId: -1, calcFields: ['total_price'] });
 
-         tree.loadDatas(gai);
 
-         tree.calculateAll();
 
-         return showLevel ? tree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : tree.getDefaultDatas();
 
-     }
 
-     async budgetYu(bid, showLevel = false) {
 
-         const yu = await this.ctx.service.budgetYu.getAllDataByCondition({ where: { bid } });
 
-         const tree = new ledger.billsTree(this.ctx, { id: 'tree_id', pid: 'tree_pid', order: 'order', level: 'level', rootId: -1, calcFields: ['total_price'] });
 
-         tree.loadDatas(yu);
 
-         tree.calculateAll();
 
-         return showLevel ? tree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : tree.getDefaultDatas();
 
-     }
 
-     async budgetGu(bid, showLevel = false) {
 
-         const gu = await this.ctx.service.budgetGu.getAllDataByCondition({ where: { bid } });
 
-         const tree = new ledger.billsTree(this.ctx, { id: 'tree_id', pid: 'tree_pid', order: 'order', level: 'level', rootId: -1, calcFields: ['total_price'] });
 
-         tree.loadDatas(gu);
 
-         tree.calculateAll();
 
-         return showLevel ? tree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : tree.getDefaultDatas();
 
-     }
 
-     async budgetZb(bid, showLevel = false) {
 
-         const zb = await this.ctx.service.budgetZb.getAllDataByCondition({ where: { bid } });
 
-         const tree = new ledger.billsTree(this.ctx, { id: 'tree_id', pid: 'tree_pid', order: 'order', level: 'level', rootId: -1, calcFields: ['total_price'] });
 
-         tree.loadDatas(zb);
 
-         tree.calculateAll();
 
-         return showLevel ? tree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : tree.getDefaultDatas();
 
-     }
 
-     async budgetFinal(bid, showLevel = false) {
 
-         const budget = this.ctx.budget && this.ctx.budget.id === bid
 
-             ? this.ctx.budget
 
-             : await this.ctx.service.budget.getDataById(bid);
 
-         if (!budget.final_id) return [];
 
-         const final = await this.ctx.service.budgetFinal.getAllDataByCondition({ where: { final_id: budget.final_id } });
 
-         const tree = new ledger.billsTree(this.ctx, { id: 'tree_id', pid: 'tree_pid', order: 'order', level: 'level', rootId: -1, calcFields: [] });
 
-         tree.loadDatas(final);
 
-         return showLevel ? tree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : tree.getDefaultDatas();
 
-     }
 
-     async _getTenderBudget(tid) {
 
-         if (this.getBudget) return;
 
-         const budgets = await this.ctx.service.budget.getBudget(true);
 
-         this.budget = budgets.find(x => {
 
-             const relaTender = x.rela_tender.split(',');
 
-             return relaTender.indexOf(tid + '') >= 0;
 
-         });
 
-         this.getBudget = true;
 
-     }
 
-     async tenderBudgetInfo(tid) {
 
-         await this._getTenderBudget(tid);
 
-         return this.budget ? await this.budgetInfo(this.budget.id) : [];
 
-     }
 
-     async tenderGai(tid, filter = false) {
 
-         await this._getTenderBudget(tid);
 
-         return this.budget ? await this.budgetGai(this.budget.id, filter) : [];
 
-     }
 
-     async tenderYu(tid, filter = false) {
 
-         await this._getTenderBudget(tid);
 
-         return this.budget ? await this.budgetYu(this.budget.id, filter) : [];
 
-     }
 
-     async tenderGu(tid, filter = false) {
 
-         await this._getTenderBudget(tid);
 
-         return this.budget ? await this.budgetGu(this.budget.id, filter) : [];
 
-     }
 
-     async tenderZb(tid, filter = false) {
 
-         await this._getTenderBudget(tid);
 
-         return this.budget ? await this.budgetZb(this.budget.id, filter) : [];
 
-     }
 
-     async tenderFinal(tid, filter = false) {
 
-         await this._getTenderBudget(tid);
 
-         return this.budget ? await this.budgetFinal(this.budget.id, filter) : [];
 
-     }
 
- }
 
- module.exports = reportMemoryBudget;
 
 
  |