'use strict'; /** * 控制器基类 * * @author CaiAoLin * @date 2017/10/11 * @version */ const moment = require('moment'); const messageType = require('../const/message_type'); const Controller = require('egg').Controller; class BaseController extends Controller { /** * 构造函数 * * @param {Object} ctx - egg全局context * @return {void} */ constructor(ctx) { super(ctx); this.messageType = messageType; } /** * 渲染layout * * @param {String} view - 渲染的view * @param {Object} data - 渲染的数据 * @return {void} */ async layout(view, data = {}) { data.moment = moment; // 获取消息提示 const message = this.ctx.session.message; // 取出后删除 this.ctx.session.message = null; const viewString = await this.ctx.renderView(view, data); const renderData = { content: viewString, message: JSON.stringify(message), dropDownMenu: data.dropDownMenu === undefined ? [] : data.dropDownMenu, breadCrumb: data.breadCrumb === undefined ? '' : data.breadCrumb, }; await this.ctx.render('layout/layout.ejs', renderData); } /** * 设置提示 * * @param {String} message - 提示信息 * @param {String} type - 提示类型 * @return {void} */ setMessage(message, type) { let icon = ''; switch (type) { case messageType.SUCCESS: icon = 'check'; break; case messageType.ERROR: icon = 'exclamation-circle'; break; case messageType.INFO: icon = 'info-circle'; break; case messageType.WARNING: icon = 'warning'; break; default: break; } this.ctx.session.message = { type, icon, message, }; } } module.exports = BaseController;