compilation_controller.js 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  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. mainTreeCol: JSON.stringify(valuationData.main_tree_col),
  123. engineeringList: EngineeringList,
  124. selectedCompilation: selectedCompilation,
  125. valuationData: valuationData,
  126. valuationList: valuationList,
  127. valuationId: valuationId,
  128. section: section,
  129. layout: 'users/views/layout/layout'
  130. };
  131. response.render('users/views/compilation/add', renderData);
  132. }
  133. /**
  134. * 保存计价规则
  135. *
  136. * @param {object} request
  137. * @param {object} response
  138. * @return {void}
  139. */
  140. async saveValuation(request, response) {
  141. let valuationId = request.body.id;
  142. try {
  143. if (valuationId === '') {
  144. throw 'id参数错误';
  145. }
  146. let compilationModel = new CompilationModel();
  147. let result = await compilationModel.saveValuation(valuationId, request.body);
  148. if (!result) {
  149. throw '保存失败';
  150. }
  151. } catch (error) {
  152. console.log(error);
  153. }
  154. response.redirect(request.headers.referer);
  155. }
  156. /**
  157. * 删除计价规则
  158. *
  159. * @param {object} request
  160. * @param {object} response
  161. * @return {void}
  162. */
  163. async deleteValuation(request, response) {
  164. let id = request.params.id;
  165. let section = request.params.section;
  166. let selectedCompilation = request.session.selectedCompilation;
  167. try {
  168. if (id === undefined || id === '' || section === undefined || section === '') {
  169. throw '参数错误';
  170. }
  171. let compilationModel = new CompilationModel();
  172. let result = compilationModel.deleteValuation(selectedCompilation._id, id, section);
  173. if (!result) {
  174. throw '删除失败';
  175. }
  176. } catch (error) {
  177. console.log(error);
  178. }
  179. response.redirect(request.headers.referer);
  180. }
  181. /**
  182. * 快速切换启用/禁用
  183. *
  184. * @param {object} request
  185. * @param {object} response
  186. * @return {void}
  187. */
  188. async enableSwitch(request, response) {
  189. let id = request.body.id;
  190. let section = request.params.section;
  191. let enable = request.body.enable;
  192. let responseData = {
  193. err: 0,
  194. msg: ''
  195. };
  196. try {
  197. let compilationModel = new CompilationModel();
  198. let result = await compilationModel.switchEnable(id, section, enable);
  199. if (!result) {
  200. throw '新增编办失败';
  201. }
  202. } catch (error) {
  203. console.log(error);
  204. responseData.err = 1;
  205. responseData.msg = error;
  206. }
  207. response.json(responseData);
  208. }
  209. /**
  210. * 发布/取消编办
  211. *
  212. * @param {object} request
  213. * @param {object} response
  214. * @return {void}
  215. */
  216. async release(request, response) {
  217. let id = request.body.id;
  218. let release = request.body.status;
  219. release = parseInt(release);
  220. let responseData = {
  221. err: 0,
  222. msg: ''
  223. };
  224. try {
  225. let compilationModel = new CompilationModel();
  226. let result = await compilationModel.release(id, release);
  227. if (!result) {
  228. throw '发布编办失败';
  229. }
  230. } catch (error) {
  231. console.log(error);
  232. responseData.err = 1;
  233. responseData.msg = error;
  234. }
  235. response.json(responseData);
  236. }
  237. /**
  238. * 新增编办操作
  239. *
  240. * @param {object} request
  241. * @param {object} response
  242. * @return {void}
  243. */
  244. async addCompilation(request, response) {
  245. let name = request.body.name;
  246. let responseData = {
  247. err: 0,
  248. msg: ''
  249. };
  250. try {
  251. let sessionManager = request.session.managerData;
  252. let insertData = {
  253. name: name,
  254. creator: sessionManager.userID
  255. };
  256. let compilationModel = new CompilationModel();
  257. let result = await compilationModel.add(insertData);
  258. if (!result) {
  259. throw '新增编办失败';
  260. }
  261. } catch (error) {
  262. console.log(error);
  263. responseData.err = 1;
  264. responseData.msg = error;
  265. }
  266. response.json(responseData);
  267. }
  268. }
  269. export default CompilationController;