|
@@ -1,6 +1,7 @@
|
|
|
'use strict';
|
|
'use strict';
|
|
|
|
|
|
|
|
const projectScreenConst = require('../const/project_screen');
|
|
const projectScreenConst = require('../const/project_screen');
|
|
|
|
|
+const Ledger = require('../lib/ledger');
|
|
|
|
|
|
|
|
module.exports = app => {
|
|
module.exports = app => {
|
|
|
class ProjectScreen extends app.BaseService {
|
|
class ProjectScreen extends app.BaseService {
|
|
@@ -151,7 +152,10 @@ module.exports = app => {
|
|
|
return calc.div(value, 10000, 12);
|
|
return calc.div(value, 10000, 12);
|
|
|
};
|
|
};
|
|
|
const result = [];
|
|
const result = [];
|
|
|
- const selectedNodes = nodes.filter(n => !n.is_folder && (!options.id || n.id === options.id) && infos.some(info => info.id === n.id)).sort((a, b) => a.tree_order - b.tree_order);
|
|
|
|
|
|
|
+ // Follow the project list's tree order before filtering by status.
|
|
|
|
|
+ const projectTree = new Ledger.baseTree(ctx, { id: 'id', pid: 'tree_pid', level: 'tree_level', order: 'tree_order', rootId: '-1' });
|
|
|
|
|
+ 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 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) } }));
|
|
@@ -227,6 +231,7 @@ module.exports = app => {
|
|
|
dates: keys.map(key => row[key + '_date'] || ''), departments: keys.map(key => row[key + '_department'] || '')
|
|
dates: keys.map(key => row[key + '_date'] || ''), departments: keys.map(key => row[key + '_department'] || '')
|
|
|
}));
|
|
}));
|
|
|
result.push({ id: node.id, name: node.name, status: info.proj_status, group: parent ? parent.name : '未分组',
|
|
result.push({ id: node.id, name: node.name, status: info.proj_status, group: parent ? parent.name : '未分组',
|
|
|
|
|
+ folders: projectTree.getAllParents(node).filter(folder => folder.is_folder).map(folder => ({ id: folder.id, name: folder.name })),
|
|
|
intro: info.proj_intro || '', date: info.jg_date || '', department: info.jg_department || '',
|
|
intro: info.proj_intro || '', date: info.jg_date || '', department: info.jg_department || '',
|
|
|
measured: hasMeasured ? toWan(measured, '元') : null,
|
|
measured: hasMeasured ? toWan(measured, '元') : null,
|
|
|
tenders: tenderInvestments,
|
|
tenders: tenderInvestments,
|