base_controller.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. 'use strict';
  2. /**
  3. * 控制器基类
  4. *
  5. * @author CaiAoLin
  6. * @date 2017/10/11
  7. * @version
  8. */
  9. const moment = require('moment');
  10. const messageType = require('../const/message_type');
  11. const Controller = require('egg').Controller;
  12. class BaseController extends Controller {
  13. /**
  14. * 构造函数
  15. *
  16. * @param {Object} ctx - egg全局context
  17. * @return {void}
  18. */
  19. constructor(ctx) {
  20. super(ctx);
  21. this.messageType = messageType;
  22. }
  23. /**
  24. * 渲染layout
  25. *
  26. * @param {String} view - 渲染的view
  27. * @param {Object} data - 渲染的数据
  28. * @return {void}
  29. */
  30. async layout(view, data = {}) {
  31. data.moment = moment;
  32. // 获取消息提示
  33. const message = this.ctx.session.message;
  34. // 取出后删除
  35. this.ctx.session.message = null;
  36. const viewString = await this.ctx.renderView(view, data);
  37. const renderData = {
  38. content: viewString,
  39. message: JSON.stringify(message),
  40. dropDownMenu: data.dropDownMenu === undefined ? [] : data.dropDownMenu,
  41. breadCrumb: data.breadCrumb === undefined ? '' : data.breadCrumb,
  42. };
  43. await this.ctx.render('layout/layout.ejs', renderData);
  44. }
  45. /**
  46. * 设置提示
  47. *
  48. * @param {String} message - 提示信息
  49. * @param {String} type - 提示类型
  50. * @return {void}
  51. */
  52. setMessage(message, type) {
  53. let icon = '';
  54. switch (type) {
  55. case messageType.SUCCESS:
  56. icon = 'check';
  57. break;
  58. case messageType.ERROR:
  59. icon = 'exclamation-circle';
  60. break;
  61. case messageType.INFO:
  62. icon = 'info-circle';
  63. break;
  64. case messageType.WARNING:
  65. icon = 'warning';
  66. break;
  67. default:
  68. break;
  69. }
  70. this.ctx.session.message = {
  71. type,
  72. icon,
  73. message,
  74. };
  75. }
  76. }
  77. module.exports = BaseController;