compilation_controller.js 9.0 KB

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