123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- 'use strict';
- /**
- * 控制器基类
- *
- * @author CaiAoLin
- * @date 2017/10/11
- * @version
- */
- const moment = require('moment');
- const messageType = require('../const/message_type');
- const Controller = require('egg').Controller;
- const menuList = require('../../config/menu');
- const JsValidator = require('../lib/js_validator');
- class BaseController extends Controller {
- /**
- * 构造函数
- *
- * @param {Object} ctx - egg全局context
- * @return {void}
- */
- constructor(ctx) {
- super(ctx);
- this.messageType = messageType;
- this.jsValidator = new JsValidator(ctx);
- // 当前菜单
- ctx.menu = menuList[ctx.controllerName] === undefined ? {} : menuList[ctx.controllerName];
- // 菜单列表
- ctx.menuList = menuList;
- ctx.showProject = false;
- ctx.showTender = false;
- ctx.showTitle = false;
- }
- /**
- * 渲染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;
|