settle_check.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. 'use strict';
  2. /**
  3. *
  4. * @author Mai
  5. * @date
  6. * @version
  7. */
  8. const reviseStatus = require('../const/audit').revise.status;
  9. module.exports = options => {
  10. /**
  11. * 结算期 校验 中间件
  12. * 1. 读取 结算期 数据
  13. * 2. 检验用户是否参与(不校验具体权限)
  14. *
  15. * @param {function} next - 中间件继续执行的方法
  16. * @return {void}
  17. */
  18. return function* settleCheck(next) {
  19. try {
  20. // 读取标段数据
  21. const settleOrder = parseInt(this.params.sorder);
  22. if (settleOrder <= 0) throw '您访问的期不存在';
  23. const settle = yield this.service.settle.getDataByCondition({ tid: this.tender.id, settle_order: settleOrder });
  24. if (!settle) throw '您访问的期不存在';
  25. yield this.service.settle.doCheckSettle(settle);
  26. // 获取最新的期数
  27. settle.highOrder = yield this.service.settle.count({ tid: this.tender.id });
  28. yield this.service.settle.checkSettleShenpi(settle);
  29. // 是否台账修订中
  30. const lastRevise = yield this.service.ledgerRevise.getLastestRevise(this.tender.id);
  31. settle.revising = (lastRevise && lastRevise.status !== reviseStatus.checked) || false;
  32. this.settle = settle;
  33. yield next;
  34. } catch (err) {
  35. this.log(err);
  36. this.redirect(`/tender/${this.params.id}/settle`);
  37. }
  38. };
  39. };