'use strict'; /** * 登录页面控制器 * * @author CaiAoLin * @date 2017/11/15 * @version */ const URL = require('url'); const maintainConst = require('../const/maintain'); const auditConst = require('../const/audit'); module.exports = app => { class WapController extends app.BaseController { /** * 登录页面 * * @param {Object} ctx - egg全局页面 * @return {void} */ async index(ctx) { const errorMessage = ctx.session.loginError; // 显示完删除 ctx.session.loginError = null; // 获取系统维护信息 const maintainData = await ctx.service.maintain.getDataById(1); if (!ctx.app.config.is_debug) { await ctx.service.maintain.syncMaintainData(); } const renderData = { maintainData, maintainConst, errorMessage, }; await ctx.render('wap/login.ejs', renderData); } /** * 登录操作 * * @param {Object} ctx - egg全局变量 * @return {void} */ async login(ctx) { let loginType = ctx.request.body.type; try { loginType = parseInt(loginType); const result = await ctx.service.projectAccount.accountLogin(ctx.request.body, loginType); if (!result) { throw '用户名或密码错误'; } if (result === 2) { throw '该账号已被停用,请联系销售人员'; } // 调用 rotateCsrfSecret 刷新用户的 CSRF token ctx.rotateCsrfSecret(); // 判断是否已经有对应用户信息,没有则跳转初始化页面 const needBoot = await ctx.service.customer.isNeedBoot(ctx.request.body); const url = needBoot ? '/boot' : '/wap/dashboard'; const query = URL.parse(ctx.request.header.referer, true).query; ctx.redirect(query.referer ? query.referer : url); } catch (error) { this.log(error); ctx.session.loginError = error; ctx.redirect('/wap'); } } /** * 退出登录 * * @param {Object} ctx - egg全局变量 * @return {void} */ async logout(ctx) { // 删除session并跳转 ctx.session = null; ctx.redirect('/wap'); } /** * 待办页 * * @param {Object} ctx - egg全局变量 * @return {void} */ async dashboard(ctx) { // 获取待审批的期 const auditStages = await ctx.service.stageAudit.getAuditStageByWap(ctx.session.sessionUser.accountId); for (const audit of auditStages) { await this.ctx.service.stage.checkStageGatherData(audit); audit.gather_tp = ctx.helper.add(audit.contract_tp, audit.qc_tp); audit.end_contract_tp = ctx.helper.add(audit.contract_tp, audit.pre_contract_tp); audit.end_qc_tp = ctx.helper.add(audit.qc_tp, audit.pre_qc_tp); audit.end_gather_tp = ctx.helper.add(audit.end_contract_tp, audit.end_qc_tp); audit.pre_gather_tp = ctx.helper.add(audit.pre_contract_tp, audit.pre_qc_tp); } const renderData = { auditStages, }; await ctx.render('wap/dashboard.ejs', renderData); } /** * 标段列表页 * * @param {Object} ctx - egg全局变量 * @return {void} */ async list(ctx) { try { // 获取用户新建标段权利 const accountInfo = await this.ctx.service.projectAccount.getDataById(this.ctx.session.sessionUser.accountId); const userPermission = accountInfo !== undefined && accountInfo.permission !== '' ? JSON.parse(accountInfo.permission) : null; const tenderList = await this.ctx.service.tender.getList('', userPermission); for (const t of tenderList) { if (t.user_id === this.ctx.session.sessionUser.accountId && ( t.ledger_status === auditConst.ledger.status.checkNo || t.ledger_status === auditConst.ledger.status.uncheck)) { const sum = await this.ctx.service.ledger.addUp({tender_id: t.id/*, is_leaf: true*/}); t.total_price = sum.total_price; t.deal_tp = sum.deal_tp; } if (t.ledger_status === auditConst.ledger.status.checked) { t.lastStage = await this.ctx.service.stage.getLastestStage(t.id, true); if (t.lastStage) { await this.ctx.service.stage.checkStageGatherData(t.lastStage); } } } const categoryData = await this.ctx.service.category.getAllCategory(this.ctx.session.sessionProject.id); const valuations = await this.ctx.service.valuation.getProjectValidValuation(this.ctx.session.sessionProject.id); const renderData = { tenderList, categoryData, auditConst, userPermission, valuations, uid: this.ctx.session.sessionUser.accountId, pid: this.ctx.session.sessionProject.id, }; await ctx.render('wap/list.ejs', renderData); } catch (err) { this.log(err); this.ctx.redirect('/wap/dashboard'); } } /** * 标段详细页 * * @param {Object} ctx - egg全局变量 * @return {void} */ async tender(ctx) { try { const renderData = { tender: ctx.tender.data, auditConst: auditConst.stage, }; renderData.stages = await ctx.service.stage.getValidStages(ctx.tender.id); if (renderData.stages.length > 0) { for (const s of renderData.stages) { // s.curAuditor = null; // 根据期状态返回展示用户 s.curAuditor = await ctx.service.stageAudit.getAuditorByStatus(s.id, s.status, s.times); if (s.status === auditConst.stage.status.checkNoPre) { s.curAuditor2 = await ctx.service.stageAudit.getAuditorByStatus(s.id, auditConst.stage.status.checking); } } renderData.stage = renderData.stages[0]; renderData.stage.user = await ctx.service.projectAccount.getAccountInfoById(renderData.stages[0].user_id); renderData.stage.auditors = await ctx.service.stageAudit.getAuditors(renderData.stages[0].id, renderData.stages[0].times); // 获取审批流程中左边列表 renderData.stage.auditors2 = await ctx.service.stageAudit.getAuditGroupByList(renderData.stages[0].id, renderData.stages[0].times); } await ctx.render('wap/tender.ejs', renderData); } catch (err) { this.log(err); ctx.redirect('/wap/list'); } } } return WapController; };