project_controller.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. 'use strict';
  2. /**
  3. * 项目相关控制器
  4. *
  5. * @author CaiAoLin
  6. * @date 2017/11/29
  7. * @version
  8. */
  9. const officeList = require('../const/cld_office').list;
  10. module.exports = app => {
  11. class ProjectController extends app.BaseController {
  12. /**
  13. * 项目信息页面
  14. *
  15. * @param {Object} ctx - egg全局变量
  16. * @return {void}
  17. */
  18. async info(ctx) {
  19. try {
  20. // 获取项目数据
  21. const projectId = ctx.session.sessionProject.id;
  22. const projectData = await ctx.service.project.getDataById(projectId);
  23. if (projectData === null) {
  24. throw '没有对应的项目数据';
  25. }
  26. // 获取销售人员数据
  27. const salesmanData = await ctx.service.manager.getDataById(projectData.manager_id);
  28. // 数据规则
  29. const rule = ctx.service.project.rule('saveInfo');
  30. const frontRule = ctx.helper.validateConvert(rule);
  31. const renderData = {
  32. projectData,
  33. salesmanData,
  34. officeList,
  35. rule: JSON.stringify(frontRule),
  36. };
  37. await this.layout('project/info.ejs', renderData);
  38. } catch (error) {
  39. this.setMessage(error.toString(), this.messageType.ERROR);
  40. ctx.redirect('/dashboard');
  41. }
  42. }
  43. /**
  44. * 保存项目信息操作
  45. *
  46. * @param {Object} ctx - egg全局变量
  47. * @return {void}
  48. */
  49. async saveInfo(ctx) {
  50. try {
  51. // 获取项目数据
  52. const projectId = ctx.session.sessionUser.projectId;
  53. const projectData = await ctx.service.project.getDataById(projectId);
  54. if (projectData === null) {
  55. throw '没有对应的项目数据';
  56. }
  57. const rule = ctx.service.project.rule('saveInfo');
  58. ctx.validate(rule);
  59. const updateData = {
  60. name: ctx.request.body.name,
  61. };
  62. const result = await ctx.service.project.update(updateData, { id: projectData.id });
  63. if (!result) {
  64. throw '保存项目信息失败';
  65. }
  66. this.setMessage('保存成功', this.messageType.SUCCESS);
  67. } catch (error) {
  68. this.setMessage(error.toString(), this.messageType.ERROR);
  69. }
  70. ctx.redirect(ctx.request.headers.referer);
  71. }
  72. /**
  73. * 切换项目
  74. *
  75. * @param {Object} ctx - egg全局变量
  76. * @return {void}
  77. */
  78. async switchProject(ctx) {
  79. let projectId = ctx.params.projectId;
  80. try {
  81. projectId = parseInt(projectId);
  82. if (isNaN(projectId) || projectId <= 0) {
  83. throw '参数错误!';
  84. }
  85. const result = await ctx.service.project.switchProject(projectId);
  86. if (!result) {
  87. throw '切换项目失败!';
  88. }
  89. } catch (error) {
  90. this.setMessage(error.toString(), this.messageType.ERROR);
  91. }
  92. ctx.redirect(ctx.request.headers.referer);
  93. }
  94. }
  95. return ProjectController;
  96. };