compare_controller.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. 'use strict';
  2. /**
  3. * 指标对比控制器
  4. *
  5. * @author Mai
  6. * @data 2018/4/19
  7. * @version
  8. */
  9. const libConst = require('../const/lib');
  10. module.exports = app => {
  11. class CompareController extends app.BaseController {
  12. /**
  13. * 指标对比页面
  14. *
  15. * @param {object} ctx - egg全局context
  16. * @return {void}
  17. */
  18. async index (ctx) {
  19. const libList = await ctx.service.quotaLib.getList(libConst.status.enter);
  20. const dyNames = await ctx.service.templateNode.getDanYuanNames();
  21. const renderData = {
  22. libList,
  23. nodeConst: this.app.nodeConst,
  24. dyNames,
  25. };
  26. await this.layout('compare/index.ejs', renderData, 'compare/modal.ejs');
  27. }
  28. async search (ctx) {
  29. const responseData = {
  30. err: 0,
  31. msg: '',
  32. data: [],
  33. };
  34. try {
  35. const data = JSON.parse(ctx.request.body.data);
  36. const tenders = data.tenders;
  37. if (!data.keyword || data.keyword === '') {
  38. throw '请输入查询关键字';
  39. }
  40. for (const tender of tenders) {
  41. if (!tender.lib_id) {
  42. throw '查询的标段有误或不存在';
  43. }
  44. tender.data = await ctx.service.tenderNode.search(tender.lib_id, data.keyword);
  45. for (const n of tender.data) {
  46. const condition = {
  47. lib_id: tender.lib_id,
  48. node_id: n.node_id,
  49. };
  50. n.children = await ctx.service.tenderIndex.getAllDataByCondition({where: condition});
  51. }
  52. }
  53. responseData.data = tenders;
  54. } catch (err) {
  55. responseData.err = 1;
  56. responseData.msg = err.toString();
  57. console.log(err);
  58. }
  59. ctx.body = responseData;
  60. }
  61. async searchClass(ctx) {
  62. try {
  63. const data = JSON.parse(ctx.request.body.data);
  64. const tenders = data.tenders;
  65. const indexClass = this.app.nodeConst.indexClass;
  66. if (!data.indexClass) {
  67. throw '查询的指标分类不存在';
  68. } else {
  69. if (data.indexClass === indexClass.dy) {
  70. if (!data.className) {
  71. throw '查询的单元指标分类不存在';
  72. }
  73. } else if (data.indexClass !== indexClass.zh && data.indexClass !== indexClass.fx) {
  74. throw '查询的指标分类不存在';
  75. }
  76. }
  77. for (const tender of tenders) {
  78. if (!tender.lib_id) {
  79. throw '查询的标段有误或不存在';
  80. }
  81. tender.data = await ctx.service.tenderNode.searchClass(tender.lib_id, data.indexClass, data.className);
  82. for (const n of tender.data) {
  83. const condition = {
  84. lib_id: tender.lib_id,
  85. node_id: n.node_id,
  86. };
  87. n.children = await ctx.service.tenderIndex.getAllDataByCondition({where: condition});
  88. }
  89. }
  90. ctx.body = {err: 0, msg: '', data: tenders};
  91. } catch (err) {
  92. ctx.body = {err: 1, msg: err.toString(), data: []};
  93. console.log(err);
  94. }
  95. }
  96. }
  97. return CompareController;
  98. }