|
@@ -156,6 +156,11 @@ module.exports = app => {
|
|
|
const projectTree = new Ledger.baseTree(ctx, { id: 'id', pid: 'tree_pid', level: 'tree_level', order: 'tree_order', rootId: '-1' });
|
|
const projectTree = new Ledger.baseTree(ctx, { id: 'id', pid: 'tree_pid', level: 'tree_level', order: 'tree_order', rootId: '-1' });
|
|
|
projectTree.loadDatas(nodes);
|
|
projectTree.loadDatas(nodes);
|
|
|
const selectedNodes = projectTree.nodes.filter(n => !n.is_folder && (!options.id || n.id === options.id) && infos.some(info => info.id === n.id));
|
|
const selectedNodes = projectTree.nodes.filter(n => !n.is_folder && (!options.id || n.id === options.id) && infos.some(info => info.id === n.id));
|
|
|
|
|
+ // Match the live budget totals displayed on the project info page.
|
|
|
|
|
+ const budgetIds = Array.from(new Set(selectedNodes.map(node => node.budget_id).filter(Boolean)));
|
|
|
|
|
+ const budgetTotals = (await Promise.all([ctx.service.budgetGu, ctx.service.budgetGai, ctx.service.budgetYu]
|
|
|
|
|
+ .map(service => service.getSumTpByBudgetIds(budgetIds))))
|
|
|
|
|
+ .map(rows => new Map(rows.map(row => [String(row.bid), row.total_price])));
|
|
|
const allTenders = [];
|
|
const allTenders = [];
|
|
|
if (selectedNodes.length && (user.is_admin === 1 || (permission && permission.tender && permission.tender.indexOf('2') !== -1))) {
|
|
if (selectedNodes.length && (user.is_admin === 1 || (permission && permission.tender && permission.tender.indexOf('2') !== -1))) {
|
|
|
allTenders.push(...await ctx.service.tender.getAllDataByCondition({ where: { spid: selectedNodes.map(n => n.id) } }));
|
|
allTenders.push(...await ctx.service.tender.getAllDataByCondition({ where: { spid: selectedNodes.map(n => n.id) } }));
|
|
@@ -237,8 +242,8 @@ module.exports = app => {
|
|
|
tenders: tenderInvestments,
|
|
tenders: tenderInvestments,
|
|
|
changeRows, stages,
|
|
changeRows, stages,
|
|
|
progressText: latestEvent ? `${latestEvent.date},${latestEvent.department || ''}已完成「${latest.name}」${latestEvent.step}。` : '暂无阶段动态',
|
|
progressText: latestEvent ? `${latestEvent.date},${latestEvent.department || ''}已完成「${latest.name}」${latestEvent.step}。` : '暂无阶段动态',
|
|
|
- amounts: ['lx', 'cb', 'sgt', 'pf'].map(prefix => toWan(info[prefix + '_tp'], info[prefix + '_tp_unit']))
|
|
|
|
|
- .concat([tenders.length ? toWan(contract, '元') : null, hasMeasured ? toWan(measured, '元') : null, finalAmount]) });
|
|
|
|
|
|
|
+ amounts: budgetTotals.map(totals => toWan(totals.get(String(node.budget_id)), '元'))
|
|
|
|
|
+ .concat([toWan(info.pf_tp, info.pf_tp_unit), tenders.length ? toWan(contract, '元') : null, hasMeasured ? toWan(measured, '元') : null, finalAmount]) });
|
|
|
}
|
|
}
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|