tender_select.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date 2018/7/9
  7. * @version
  8. */
  9. module.exports = options => {
  10. /**
  11. * 标段选择中间件
  12. *
  13. * @param {function} next - 中间件继续执行的方法
  14. * @return {void}
  15. */
  16. return function* tenderSelect(next) {
  17. try {
  18. if (this.request.query.tenderId) {
  19. const tenderId = parseInt(this.request.query.tenderId);
  20. const tender = yield this.service.tender.getDataById(tenderId);
  21. this.session.sessionUser.tenderId = tender.id;
  22. this.session.sessionUser.tenderName = tender.name;
  23. this.redirect(this.urlInfo.pathname);
  24. } else {
  25. this.tenderList = yield this.service.tender.getList();
  26. for (const tender of this.tenderList) {
  27. tender.url = this.request.url + '?tenderId=' + tender.id;
  28. }
  29. let tenderId = this.session.sessionUser.tenderId;
  30. if (!tenderId) {
  31. // 根据标段列表获取默认tenderId
  32. if (this.tenderList && this.tenderList.length > 0) {
  33. tenderId = this.tenderList[0].id;
  34. this.session.sessionUser.tenderId = tenderId;
  35. this.session.sessionUser.tenderName = this.tenderList[0].name;
  36. } else {
  37. throw '项目无标段数据';
  38. }
  39. }
  40. this.tenderData = yield this.service.tender.getDataById(tenderId);
  41. yield next;
  42. }
  43. } catch (err) {
  44. this.helper.log(err);
  45. this.redirect(this.menuList.dashboard.url);
  46. }
  47. };
  48. };