project_controller.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. this.setMessage(error, this.messageType.ERROR);
  70. }
  71. ctx.redirect(ctx.request.headers.referer);
  72. }
  73. }
  74. return ProjectController;
  75. };