'use strict'; /** * 标段对比 控制器 * * @author Mai * @date 2020/2/21 * @version */ const measureType = require('../const/tender').measureType; const status = require('../const/audit').stage.status; module.exports = app => { class SpssController extends app.BaseController { /** * 构造函数 * * @param {Object} ctx - egg全局context * @return {void} */ constructor(ctx) { super(ctx); ctx.showProject = true; } async _getTzData(tid, includePos = false) { const tender = await this.ctx.service.tender.getTender(tid); if (!tender || tender.project_id !== this.ctx.session.sessionProject.id) { throw '不存在该标段'; } const bills = await this.ctx.service.ledger.getData(tid); const pos = tender.measure_type === measureType.tz.value || includePos ? await this.ctx.service.pos.getPosData({tid: tid}) : []; return { id: tid, name: tender.name, bills: bills, pos: pos }; } async _checkStage(tid, sorder) { const stage = await this.service.stage.getDataByCondition({ tid: tid, order: sorder }); if (!stage) throw '期数据错误'; await this.service.stage.doCheckStage(stage); return stage; } async _getStageData(tid, sorder) { const data = await this._getTzData(tid, true); const stage = await this._checkStage(tid, sorder); const bills = await this.ctx.service.stageBills.getAuditorStageData2(tid, stage.id, stage.curTimes, stage.curOrder); const pos = await this.ctx.service.stagePos.getAuditorStageData2(tid, stage.id, stage.curTimes, stage.curOrder); data.stage = { sid: stage.id, sorder: stage.order, curTimes: stage.curTimes, curOrder: stage.curOrder, bills: bills, pos: pos }; return data; } /** * 台账 对比 页面 * * @param {Object} ctx - egg全局变量 * @return {void} */ async compareTz(ctx) { try { const renderData = { jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.compare.tz) }; await this.layout('spss/compare_tz.ejs', renderData, 'spss/compare_tz_modal.ejs'); } catch (err) { ctx.helper.log(err); } } /** * 获取 台账 对比 数据(Ajax) * @param ctx * @returns {Promise} */ async loadCompareTz(ctx) { try { const data = JSON.parse(ctx.request.body.data); const responseData = {err: 0, msg: '', data: {}}; // const tender1 = await ctx.service.tender.getTender(data.tid1); // responseData.data.tender1 = { // name: tender1.name, // bills: await ctx.service.ledger.getData(data.tid1), // pos: tender1.measure_type === measureType.tz.value // ? await ctx.service.pos.getPosData({tid: data.tid1}) : [] // }; // const tender2 = await ctx.service.tender.getTender(data.tid2); // responseData.data.tender2 = { // name: tender2.name, // bills: await ctx.service.ledger.getData(data.tid2), // pos: tender2.measure_type === measureType.tz.value // ? await ctx.service.pos.getPosData({tid: data.tid2}) : [] // }; responseData.data.tender1 = await this._getTzData(data.tid1); responseData.data.tender2 = await this._getTzData(data.tid2); ctx.body = responseData; } catch (err) { ctx.helper.log(err); ctx.body = this.ajaxErrorBody(err, '查询数据错误'); } } /** * 期计量 对比 页面 * * @param {Object} ctx - egg全局变量 * @return {void} */ async compareStage(ctx) { try { const renderData = { jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.compare.stage) }; await this.layout('spss/compare_tz.ejs', renderData, 'spss/compare_stage_modal.ejs'); } catch (err) { ctx.helper.log(err); } } /** * 获取 期计量 对比 数据(Ajax) * @param ctx * @returns {Promise} */ async loadCompareStage(ctx) { try { const data = JSON.parse(ctx.request.body.data); const responseData = {err: 0, msg: '', data: {}}; responseData.data.tender1 = await this._getStageData(data.tid1, data.sorder1); responseData.data.tender2 = await this._getStageData(data.tid2, data.sorder2); ctx.body = responseData; } catch (err) { ctx.helper.log(err); ctx.body = this.ajaxErrorBody(err, '查询数据错误'); } } /** * 台账 汇总 页面 * * @param {Object} ctx - egg全局变量 * @return {void} */ async gatherTz(ctx) { try { const renderData = { jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.gather.tz) }; await this.layout('spss/compare_tz.ejs', renderData, 'spss/gather_tz_modal.ejs'); } catch (err) { ctx.helper.log(err); } } /** * 获取 台账 汇总 数据(Ajax) * @param ctx * @returns {Promise} */ async loadGatherTz(ctx) { try { const data = JSON.parse(ctx.request.body.data); const responseData = {err: 0, msg: '', data: []}; for (const t of data.tenders) { responseData.data.push(await this._getTzData(t.id)); } ctx.body = responseData; } catch (err) { ctx.helper.log(err); ctx.body = this.ajaxErrorBody(err, '查询数据错误'); } } /** * 期计量 汇总 页面 * * @param {Object} ctx - egg全局变量 * @return {void} */ async gatherStage(ctx) { try { const renderData = { jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.gather.stage) }; await this.layout('spss/compare_tz.ejs', renderData, 'spss/gather_stage_modal.ejs'); } catch (err) { ctx.helper.log(err); } } /** * 获取 期计量 汇总 数据(Ajax) * @param ctx * @returns {Promise} */ async loadGatherStage(ctx) { try { const data = JSON.parse(ctx.request.body.data); const responseData = {err: 0, msg: '', data: []}; for (const t of data.tenders) { responseData.data.push(await this._getStageData(t.id, t.sorder)); } ctx.body = responseData; } catch (err) { ctx.helper.log(err); ctx.body = this.ajaxErrorBody(err, '查询数据错误'); } } /** * 检测台账 页面 * * @param {Object} ctx - egg全局变量 * @return {void} */ async checkTz(ctx) { try { const renderData = { jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.tools.checkTz) }; await this.layout('spss/check_tz.ejs', renderData); } catch (err) { ctx.helper.log(err); } } /** * 获取 期计量 汇总 数据(Ajax) * @param ctx * @returns {Promise} */ async loadBaseData(ctx) { try { const data = JSON.parse(ctx.request.body.data); const responseData = {err: 0, msg: '', data: []}; responseData.data = await this._getTzData(data.id); ctx.body = responseData; } catch (err) { ctx.helper.log(err); ctx.body = this.ajaxErrorBody(err, '查询数据错误'); } } } return SpssController; };