12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- 'use strict';
- /**
- * 指标模板控制器
- *
- * @author Mai
- * @data 2018/4/19
- * @version
- */
- // excel解析
- const excel = require('node-xlsx');
- const sendToWormhole = require('stream-wormhole');
- module.exports = app => {
- class TemplateController extends app.BaseController {
- /**
- * 指标模板页面
- *
- * @param {object} ctx - egg全局context
- * @return {void}
- */
- async index (ctx) {
- const node = await ctx.service.templateNode.getAllDataByCondition({template_id: 1});
- const treeNode = ctx.helper.convertData(node, true, 'node_id', 'node_pid');
- const renderData = {
- nodes: JSON.stringify(treeNode),
- }
- await this.layout('template/index.ejs', renderData, 'template/modal.ejs');
- }
- async uploadExcel(ctx) {
- let stream;
- try {
- stream = await ctx.getFileStream();
- const fileName = this.app.baseDir + '/app/public/template/uploads/' + stream.filename;
- // 保存文件
- await ctx.helper.saveStreamFile(stream, fileName);
- // 读取文件
- const sheet = excel.parse(fileName);
- if (!sheet || sheet.length === 0 || sheet[0] === undefined || sheet[0].data === undefined) {
- throw 'excel没有对应数据';
- }
- const result = await ctx.service.templateNode.importData(sheet);
- if (!result) {
- throw '导入数据失败';
- }
- ctx.redirect('/template');
- } catch (err) {
- console.log(err);
- // 失败需要消耗掉stream 以防卡死
- if (stream) {
- await sendToWormhole(stream);
- }
- //this.setMessage(err.toString(), this.messageType.ERROR);
- ctx.redirect('/template');
- }
- }
- }
- return TemplateController;
- }
|