| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 'use strict';
- const projectScreenConst = require('../const/project_screen');
- module.exports = app => {
- class ProjectScreenController extends app.BaseController {
- constructor(ctx) {
- super(ctx);
- ctx.showProject = true;
- ctx.showTitle = true;
- }
- async index(ctx) {
- try {
- if (!ctx.showProjectScreen) throw '项目大屏未开启或没有访问权限';
- const pid = ctx.session.sessionProject.id;
- const screens = await ctx.service.projectScreen.getList(pid);
- const screen = await ctx.service.projectScreen.getViewScreen(pid, ctx.params.sid || '');
- if (!screen) throw '项目尚未添加大屏';
- const template = projectScreenConst.getTemplate(screen.template_code);
- if (!template) throw '大屏模板不存在';
- const screenList = screens.map(item => {
- return Object.assign(item, {
- template: projectScreenConst.getTemplate(item.template_code),
- });
- });
- const summaries = template.code === 'guangyuan' ? await ctx.service.projectScreen.getStatusProjects(null, { summary: true }) : [];
- const finishedProjects = summaries.filter(project => project.status === '已建');
- const plannedProjects = summaries.filter(project => project.status === '拟建');
- const buildingProjects = summaries.filter(project => project.status === '在建');
- const listOnly = projects => projects.map(project => ({ id: project.id, name: project.name, group: project.group }));
- const renderData = {
- screens: screenList,
- screen,
- template,
- };
- renderData.finishedProjects = listOnly(finishedProjects);
- renderData.plannedProjects = listOnly(plannedProjects);
- renderData.buildingProjects = listOnly(buildingProjects);
- renderData.overview = template.code === 'guangyuan' ? await ctx.service.projectScreen.getOverview(plannedProjects, buildingProjects, finishedProjects) : null;
- await this.layout('project_screen/index.ejs', renderData, template.code === 'guangyuan' ? 'project_screen/guangyuan_modal.ejs' : '');
- } catch (error) {
- this.log(error);
- ctx.session.postError = error.toString();
- ctx.redirect('/dashboard');
- }
- }
- async detail(ctx) {
- try {
- if (!ctx.showProjectScreen) throw '项目大屏未开启或没有访问权限';
- const screens = await ctx.service.projectScreen.getList(ctx.session.sessionProject.id);
- if (!screens.some(screen => screen.template_code === 'guangyuan')) throw '项目尚未添加广元大屏';
- const data = JSON.parse(ctx.request.body.data);
- const status = { planned: '拟建', building: '在建', finished: '已建' }[data.module];
- if (!status || typeof data.id !== 'string' || !data.id) throw '项目参数错误';
- const projects = await ctx.service.projectScreen.getStatusProjects(status, { id: data.id });
- if (!projects.length) throw '项目不存在或没有访问权限';
- ctx.body = { err: 0, msg: '', data: projects[0] };
- } catch (error) {
- this.log(error);
- ctx.body = { err: 1, msg: error.toString(), data: null };
- }
- }
- }
- return ProjectScreenController;
- };
|