tender_controller.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. 'use strict';
  2. /**
  3. * 标段管理控制器
  4. *
  5. * @author CaiAoLin
  6. * @date 2018/2/5
  7. * @version
  8. */
  9. const tenderConst = require('../const/tender');
  10. module.exports = app => {
  11. class TenderController extends app.BaseController {
  12. /**
  13. * 构造函数
  14. *
  15. * @param {Object} ctx - egg全局变量
  16. * @return {void}
  17. */
  18. constructor(ctx) {
  19. super(ctx);
  20. ctx.showProject = true;
  21. ctx.showTitle = true;
  22. }
  23. /**
  24. * 标段列表页
  25. *
  26. * @param {object} ctx - egg全局变量
  27. * @return {void}
  28. */
  29. async index(ctx) {
  30. // 获取新增标段的规则
  31. const rule = ctx.service.tender.rule('add');
  32. const jsValidator = await this.jsValidator.convert(rule).build();
  33. let tenderType = ctx.query.type;
  34. // 根据项目id获取标段数据
  35. const tenderList = await ctx.service.tender.getList(tenderType);
  36. const renderData = {
  37. tenderList,
  38. tenderConst,
  39. jsValidator,
  40. tenderType
  41. };
  42. await this.layout('tender/index.ejs', renderData, 'tender/modal.ejs');
  43. }
  44. /**
  45. * 添加标段操作
  46. *
  47. * @param {Object} ctx - egg全局变量
  48. * @return {void}
  49. */
  50. async add(ctx) {
  51. try {
  52. const rule = ctx.service.tender.rule('add');
  53. ctx.helper.validate(rule);
  54. const result = ctx.service.tender.add(ctx.request.body);
  55. if (!result) {
  56. throw '新增标段失败';
  57. }
  58. } catch (error) {
  59. console.log(error);
  60. this.setMessage(error.toString(), this.messageType.ERROR);
  61. }
  62. ctx.redirect(ctx.request.headers.referer);
  63. }
  64. /**
  65. * 切换标段 --》 暂时废弃,不存在此功能
  66. *
  67. * @param {Object} ctx - egg全局变量
  68. * @return {void}
  69. */
  70. async switchTender(ctx) {
  71. let tenderId = ctx.params.tenderId;
  72. tenderId = parseInt(tenderId);
  73. try{
  74. if(isNaN(tenderId) || tenderId <= 0) {
  75. throw '参数错误';
  76. }
  77. const result = await ctx.service.tender.switchTender(tenderId);
  78. if (!result) {
  79. throw '切换标段失败!';
  80. }
  81. } catch (error) {
  82. this.setMessage(error.toString(), this.messageType.ERROR);
  83. }
  84. ctx.redirect(ctx.request.headers.referer);
  85. }
  86. /**
  87. * 保存标段操作
  88. *
  89. * @param {Object} ctx - egg全局变量
  90. * @return {void}
  91. */
  92. async save(ctx) {
  93. let id = ctx.request.body.tenderId;
  94. id = parseInt(id);
  95. try {
  96. if (isNaN(id) || id < 0) {
  97. throw '参数错误';
  98. }
  99. // 获取数据规则
  100. const rule = ctx.service.tender.rule('save');
  101. ctx.validate(rule);
  102. const result = await ctx.service.tender.save(ctx.request.body, id);
  103. if (!result) {
  104. throw '保存标段数据失败';
  105. }
  106. this.setMessage('保存标段数据成功', this.messageType.SUCCESS);
  107. } catch (error) {
  108. this.setMessage(error.toString(), this.messageType.ERROR);
  109. }
  110. ctx.redirect(ctx.request.headers.referer);
  111. }
  112. /**
  113. * 删除标段
  114. *
  115. * @param {Object} ctx -egg全局变量
  116. * @return {void}
  117. */
  118. async delete(ctx) {
  119. let id = ctx.request.body.tenderId;
  120. id = parseInt(id);
  121. try {
  122. if (isNaN(id) || id <= 0) {
  123. throw '参数错误';
  124. }
  125. const result = ctx.service.tender.deleteTenderById(id);
  126. if (!result) {
  127. throw '删除标段失败';
  128. }
  129. this.setMessage('删除标段成功', this.messageType.SUCCESS);
  130. } catch (error) {
  131. this.setMessage(error.toString(), this.messageType.ERROR);
  132. }
  133. ctx.redirect(ctx.request.headers.referer);
  134. }
  135. }
  136. return TenderController;
  137. };