compilation_controller.js 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. /**
  2. * 编办控制控制器
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/7/28
  6. * @compilation
  7. */
  8. import BaseController from "../../common/base/base_controller";
  9. import CompilationModel from "../models/compilation_model";
  10. import STDRationLibMapModel from "../../common/std/std_ration_lib_map_model";
  11. import STDBillLibListsModel from "../../common/std/std_bills_lib_lists_model";
  12. import {default as EngineeringConst, List as EngineeringList} from "../../common/const/engineering";
  13. class CompilationController extends BaseController {
  14. /**
  15. * 编办管理控制页面
  16. *
  17. * @param {object} request
  18. * @param {object} response
  19. * @return {void}
  20. */
  21. async index(request, response) {
  22. let id = request.query.id;
  23. let compilationList = [];
  24. let selectedCompilation = {};
  25. try {
  26. let compilationModel = new CompilationModel();
  27. compilationList = await compilationModel.getCompilationList();
  28. if (compilationList.length <= 0) {
  29. throw '没有数据';
  30. }
  31. // 循环查找数据
  32. for (let tmp of compilationList) {
  33. if (tmp._id.toString() === id) {
  34. selectedCompilation = tmp;
  35. break;
  36. }
  37. }
  38. selectedCompilation = Object.keys(selectedCompilation).length <= 0 ? compilationList[0] : selectedCompilation;
  39. request.session.selectedCompilation = selectedCompilation;
  40. } catch (error) {
  41. console.log(error);
  42. }
  43. let renderData = {
  44. id: id,
  45. compilationList: compilationList,
  46. selectedCompilation: selectedCompilation,
  47. layout: 'users/views/layout/layout'
  48. };
  49. response.render('users/views/compilation/index', renderData);
  50. }
  51. /**
  52. * 新增计价页面
  53. *
  54. * @param {object} request
  55. * @param {object} response
  56. * @return {void}
  57. */
  58. async addValuation(request, response) {
  59. let name = request.body.name;
  60. let id = request.body.id;
  61. let section = request.body.section;
  62. let responseData = {
  63. err: 0,
  64. msg: ''
  65. };
  66. try {
  67. if (id === undefined || id === '') {
  68. throw '参数错误';
  69. }
  70. let insertData = {
  71. name: name,
  72. };
  73. let compilationModel = new CompilationModel();
  74. let result = await compilationModel.addValuation(id, section, insertData);
  75. if (!result) {
  76. throw '新增计价规则失败';
  77. }
  78. } catch (error) {
  79. console.log(error);
  80. responseData.err = 1;
  81. responseData.msg = error;
  82. }
  83. response.json(responseData);
  84. }
  85. /**
  86. * 修改计价规则页面
  87. *
  88. * @param {object} request
  89. * @param {object} response
  90. * @return {void}
  91. */
  92. async editValuation(request, response) {
  93. let selectedCompilation = request.session.selectedCompilation;
  94. let valuationId = request.params.id;
  95. let section = request.params.section;
  96. let billList = {};
  97. let rationList = {};
  98. let compilationList = [];
  99. let valuationData = {};
  100. let valuationList = {};
  101. try {
  102. let compilationModel = new CompilationModel();
  103. compilationList = await compilationModel.getCompilationList();
  104. // 获取标准清单
  105. let stdBillLibListsModel = new STDBillLibListsModel();
  106. billList = await stdBillLibListsModel.getBillList(selectedCompilation._id);
  107. // 获取定额库
  108. let stdRationLibMapModel = new STDRationLibMapModel();
  109. rationList = await stdRationLibMapModel.getRationLib(selectedCompilation._id);
  110. // 获取对应的计价规则数据
  111. [valuationData, valuationList] = await compilationModel.getValuation(selectedCompilation._id, valuationId, section);
  112. if (Object.keys(valuationData).length <= 0) {
  113. throw '不存在数据';
  114. }
  115. } catch (error) {
  116. console.log(error);
  117. }
  118. let renderData = {
  119. compilationList: compilationList,
  120. billList: JSON.stringify(billList),
  121. rationList: JSON.stringify(rationList),
  122. engineeringList: EngineeringList,
  123. selectedCompilation: selectedCompilation,
  124. valuationData: valuationData,
  125. valuationList: valuationList,
  126. valuationId: valuationId,
  127. section: section,
  128. layout: 'users/views/layout/layout'
  129. };
  130. response.render('users/views/compilation/add', renderData);
  131. }
  132. /**
  133. * 保存计价规则
  134. *
  135. * @param {object} request
  136. * @param {object} response
  137. * @return {void}
  138. */
  139. async saveValuation(request, response) {
  140. let valuationId = request.body.id;
  141. try {
  142. if (valuationId === '') {
  143. throw 'id参数错误';
  144. }
  145. let compilationModel = new CompilationModel();
  146. let result = await compilationModel.saveValuation(valuationId, request.body);
  147. if (!result) {
  148. throw '保存失败';
  149. }
  150. } catch (error) {
  151. console.log(error);
  152. }
  153. response.redirect(request.headers.referer);
  154. }
  155. /**
  156. * 删除计价规则
  157. *
  158. * @param {object} request
  159. * @param {object} response
  160. * @return {void}
  161. */
  162. async deleteValuation(request, response) {
  163. let id = request.params.id;
  164. let section = request.params.section;
  165. let selectedCompilation = request.session.selectedCompilation;
  166. try {
  167. if (id === undefined || id === '' || section === undefined || section === '') {
  168. throw '参数错误';
  169. }
  170. let compilationModel = new CompilationModel();
  171. let result = compilationModel.deleteValuation(selectedCompilation._id, id, section);
  172. if (!result) {
  173. throw '删除失败';
  174. }
  175. } catch (error) {
  176. console.log(error);
  177. }
  178. response.redirect(request.headers.referer);
  179. }
  180. /**
  181. * 快速切换启用/禁用
  182. *
  183. * @param {object} request
  184. * @param {object} response
  185. * @return {void}
  186. */
  187. async enableSwitch(request, response) {
  188. let id = request.body.id;
  189. let section = request.params.section;
  190. let enable = request.body.enable;
  191. let responseData = {
  192. err: 0,
  193. msg: ''
  194. };
  195. try {
  196. let compilationModel = new CompilationModel();
  197. let result = await compilationModel.switchEnable(id, section, enable);
  198. if (!result) {
  199. throw '新增编办失败';
  200. }
  201. } catch (error) {
  202. console.log(error);
  203. responseData.err = 1;
  204. responseData.msg = error;
  205. }
  206. response.json(responseData);
  207. }
  208. /**
  209. * 发布/取消编办
  210. *
  211. * @param {object} request
  212. * @param {object} response
  213. * @return {void}
  214. */
  215. async release(request, response) {
  216. let id = request.body.id;
  217. let release = request.body.status;
  218. release = parseInt(release);
  219. let responseData = {
  220. err: 0,
  221. msg: ''
  222. };
  223. try {
  224. let compilationModel = new CompilationModel();
  225. let result = await compilationModel.release(id, release);
  226. if (!result) {
  227. throw '发布编办失败';
  228. }
  229. } catch (error) {
  230. console.log(error);
  231. responseData.err = 1;
  232. responseData.msg = error;
  233. }
  234. response.json(responseData);
  235. }
  236. /**
  237. * 新增编办操作
  238. *
  239. * @param {object} request
  240. * @param {object} response
  241. * @return {void}
  242. */
  243. async addCompilation(request, response) {
  244. let name = request.body.name;
  245. let responseData = {
  246. err: 0,
  247. msg: ''
  248. };
  249. try {
  250. let sessionManager = request.session.managerData;
  251. let insertData = {
  252. name: name,
  253. creator: sessionManager.userID
  254. };
  255. let compilationModel = new CompilationModel();
  256. let result = await compilationModel.add(insertData);
  257. if (!result) {
  258. throw '新增编办失败';
  259. }
  260. } catch (error) {
  261. console.log(error);
  262. responseData.err = 1;
  263. responseData.msg = error;
  264. }
  265. response.json(responseData);
  266. }
  267. }
  268. export default CompilationController;