dashboard_controller.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. 'use strict';
  2. /**
  3. * 控制面板
  4. *
  5. * @author CaiAoLin
  6. * @date 2017/11/23
  7. * @version
  8. */
  9. const auditConst = require('../const/audit');
  10. const officeList = require('../const/cld_office').list;
  11. module.exports = app => {
  12. class DashboardController extends app.BaseController {
  13. /**
  14. * 控制面板页面
  15. *
  16. * @param {Object} ctx - egg全局变量
  17. * @return {void}
  18. */
  19. async index(ctx) {
  20. const auditTenders = await ctx.service.ledgerAudit.getAuditTender(ctx.session.sessionUser.accountId);
  21. const auditStages = await ctx.service.stageAudit.getAuditStage(ctx.session.sessionUser.accountId);
  22. const auditChanges = await ctx.service.changeAudit.getAuditChange(ctx.session.sessionUser.accountId);
  23. const auditRevise = await ctx.service.reviseAudit.getAuditRevise(ctx.session.sessionUser.accountId);
  24. const pa = await ctx.service.projectAccount.getDataById(ctx.session.sessionUser.accountId);
  25. const lastNotice = pa.last_notice ? pa.last_notice : (pa.last_notice === 0 ? new Date() : new Date(pa.last_login * 1000));
  26. const noticeLedger = await ctx.service.ledgerAudit.getNoticeTender(ctx.session.sessionProject.id, pa.id, lastNotice);
  27. const noticeStage = await ctx.service.stageAudit.getNoticeStage(ctx.session.sessionProject.id, pa.id, lastNotice);
  28. const noticeChange = await ctx.service.changeAudit.getNoticeChange(ctx.session.sessionProject.id, pa.id, lastNotice);
  29. const noticeRevise = await ctx.service.reviseAudit.getNoticeRevise(ctx.session.sessionProject.id, pa.id, lastNotice);
  30. const projectData = await ctx.service.project.getDataById(ctx.session.sessionProject.id);
  31. // 获取销售人员数据
  32. const salesmanData = await ctx.service.manager.getDataById(projectData.manager_id);
  33. const officeName = officeList[salesmanData.office];
  34. // 获取版本信息
  35. const versionList = await ctx.service.version.getAllDataByCondition({ orders: [['id', 'desc']], limit: 5, offset: 0 });
  36. const renderData = {
  37. auditTenders,
  38. auditStages,
  39. auditChanges,
  40. auditRevise,
  41. role: pa.role,
  42. authMobile: pa.auth_mobile,
  43. acLedger: auditConst.ledger,
  44. acStage: auditConst.stage,
  45. acChange: auditConst.flow,
  46. acRevise: auditConst.revise,
  47. noticeLedger,
  48. noticeStage,
  49. noticeChange,
  50. noticeRevise,
  51. projectData,
  52. salesmanData,
  53. officeName,
  54. versionList: JSON.parse(JSON.stringify(versionList).replace(/\\r\\n/g, '<br>'))
  55. };
  56. await this.layout('dashboard/index.ejs', renderData, 'dashboard/modal.ejs');
  57. await ctx.service.projectAccount.defaultUpdate({
  58. id: this.ctx.session.sessionUser.accountId,
  59. last_notice: new Date(),
  60. });
  61. }
  62. }
  63. return DashboardController;
  64. };