| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | 
							- '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').menu;
 
- class BaseController extends Controller {
 
-     /**
 
-      * 构造函数
 
-      *
 
-      * @param {Object} ctx - egg全局context
 
-      * @return {void}
 
-      */
 
-     constructor(ctx) {
 
-         super(ctx);
 
-         this.messageType = messageType;
 
-         this.jsValidator = this.app.jsValidator;
 
-         this.menu = this.app.menu;
 
-         // 当前菜单
 
-         ctx.menu = menuList[ctx.controllerName] === undefined ? {} : menuList[ctx.controllerName];
 
-         ctx.title = ctx.menu === {} ? '' : ctx.menu.name;
 
-         if (ctx.menu !== {} && ctx.menu.children !== null) {
 
-             for (const index in ctx.menu.children) {
 
-                 if (index === ctx.actionName) {
 
-                     ctx.title = ctx.menu.children[index].name;
 
-                 }
 
-             }
 
-         }
 
-         // 菜单列表
 
-         ctx.menuList = menuList;
 
-         ctx.showProject = false;
 
-         ctx.showTender = false;
 
-         ctx.showTitle = false;
 
-     }
 
-     /**
 
-      * 渲染layout
 
-      *
 
-      * @param {String} view - 渲染的view
 
-      * @param {Object} data - 渲染的数据
 
-      * @param {String} modal - 渲染的modal
 
-      * @return {void}
 
-      */
 
-     async layout(view, data = {}, modal = '') {
 
-         data.moment = moment;
 
-         // 获取消息提示
 
-         const message = this.ctx.session.message;
 
-         // 取出后删除
 
-         this.ctx.session.message = null;
 
-         try {
 
-             data.min = this.app.config.min;
 
-             const viewString = await this.ctx.renderView(view, data);
 
-             const modalString = modal === '' ? '' : await this.ctx.renderView(modal, data);
 
-             const renderData = {
 
-                 min: this.app.config.min,
 
-                 content: viewString,
 
-                 message: JSON.stringify(message),
 
-                 modal: modalString,
 
-                 dropDownMenu: data.dropDownMenu === undefined ? [] : data.dropDownMenu,
 
-                 breadCrumb: data.breadCrumb === undefined ? '' : data.breadCrumb,
 
-                 tenderList: data.tenderList === undefined ? [] : data.tenderList,
 
-                 jsFiles: data.jsFiles ? data.jsFiles : this.app.jsFiles.common,
 
-             };
 
-             await this.ctx.render('layout/layout.ejs', renderData);
 
-         } catch(err) {
 
-             this.log(err);
 
-         }
 
-     }
 
-     /**
 
-      * 设置提示
 
-      *
 
-      * @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,
 
-         };
 
-     }
 
-     log(error) {
 
-         if (error.stack) {
 
-             this.ctx.logger.error(error);
 
-         } else {
 
-             this.setMessage(error, messageType.ERROR);
 
-             this.ctx.getLogger('fail').info(JSON.stringify({
 
-                 error: error,
 
-                 project: this.ctx.session.sessionProject,
 
-                 user: this.ctx.session.sessionUser,
 
-                 body: this.ctx.session.body,
 
-             }));
 
-         }
 
-     }
 
-     async checkMeasureType (mt) {
 
-         if (this.ctx.tender.data.measure_type !== mt) {
 
-             throw '该模式下不可提交此数据';
 
-         }
 
-     }
 
- }
 
- module.exports = BaseController;
 
 
  |