'use strict'; /** * * * @author Mai * @date * @version */ module.exports = options => { /** * 期校验 中间件 * 1. 读取期数据 * 2. 检验用户是否参与期(不校验具体权限) * * 写入ctx.phasePay数据 * 其中: * phasePay.user: 创建人 * phasePay.auditors: 审批人列表(退回原报时,加载上一流程) * phasePay.curAuditors: 当前审批人(未上报为空,审批通过 or 退回原报时,为空) * * phasePay.readOnly: 登录人,是否可操作 * phasePay.curTimes: 当前登录人,操作、查阅数据times * phasePay.curOrder: 当前登录人,操作、查阅数据order * * 该方法为通用方法,如需phasePay其他数据,请在controller中查询 * * @param {function} next - 中间件继续执行的方法 * @return {void} */ return function* phasePayCheck(next) { try { // 读取标段数据 const phaseOrder = parseInt(this.params.order); if (phaseOrder <= 0) throw '您访问的合同支付不存在'; const phasePay = yield this.service.phasePay.getPhasePayByOrder(this.tender.id, phaseOrder); if (!phasePay) throw '合同支付数据错误'; // 读取原报、审核人数据 yield this.service.phasePay.doCheckPhase(phasePay); this.phasePay = phasePay; yield next; } catch (err) { this.log(err); if (this.helper.isAjax(this.request)) { this.ajaxErrorBody(err, '读取合同支付错误'); } else { this.postError(err, '读取合同支付错误'); this.redirect(this.request.headers.referer); } } }; };