version_controller.js 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. /**
  2. * 版本控制控制器
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/7/28
  6. * @version
  7. */
  8. import BaseController from "../../common/base/base_controller";
  9. import VersionModel from "../models/version_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 ProvinceConst, List as ProvinceList} from "../../common/const/province_const";
  13. import {default as EngineeringConst, List as EngineeringList} from "../../common/const/engineering";
  14. class VersionController 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 versionList = [];
  25. let selectedVersion = {};
  26. try {
  27. let versionModel = new VersionModel();
  28. versionList = await versionModel.getVersionList();
  29. if (versionList.length <= 0) {
  30. throw '没有数据';
  31. }
  32. // 循环查找数据
  33. for (let tmp of versionList) {
  34. if (tmp._id.toString() === id) {
  35. selectedVersion = tmp;
  36. break;
  37. }
  38. }
  39. selectedVersion = Object.keys(selectedVersion).length <= 0 ? versionList[0] : selectedVersion;
  40. request.session.selectedVersion = selectedVersion;
  41. } catch (error) {
  42. console.log(error);
  43. }
  44. let renderData = {
  45. id: id,
  46. versionList: versionList,
  47. selectedVersion: selectedVersion,
  48. layout: 'users/views/layout/layout'
  49. };
  50. response.render('users/views/version/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 versionModel = new VersionModel();
  75. let result = await versionModel.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 selectedVersion = request.session.selectedVersion;
  95. let valuationId = request.params.id;
  96. let section = request.params.section;
  97. let billList = {};
  98. let rationList = {};
  99. let versionList = [];
  100. let valuationData = {};
  101. let valuationList = {};
  102. try {
  103. let versionModel = new VersionModel();
  104. versionList = await versionModel.getVersionList();
  105. // 获取标准清单
  106. let stdBillLibListsModel = new STDBillLibListsModel();
  107. billList = await stdBillLibListsModel.getBillList();
  108. // 获取定额库
  109. let stdRationLibMapModel = new STDRationLibMapModel();
  110. rationList = await stdRationLibMapModel.getRationLib();
  111. // 获取对应的计价规则数据
  112. [valuationData, valuationList] = await versionModel.getValuation(selectedVersion._id, valuationId, section);
  113. if (Object.keys(valuationData).length <= 0) {
  114. throw '不存在数据';
  115. }
  116. } catch (error) {
  117. console.log(error);
  118. }
  119. let renderData = {
  120. versionList: versionList,
  121. billList: JSON.stringify(billList),
  122. rationList: JSON.stringify(rationList),
  123. province: JSON.stringify(ProvinceList),
  124. engineeringList: EngineeringList,
  125. selectedVersion: selectedVersion,
  126. valuationData: valuationData,
  127. valuationList: valuationList,
  128. valuationId: valuationId,
  129. section: section,
  130. layout: 'users/views/layout/layout'
  131. };
  132. response.render('users/views/version/add', renderData);
  133. }
  134. /**
  135. * 保存计价规则
  136. *
  137. * @param {object} request
  138. * @param {object} response
  139. * @return {void}
  140. */
  141. async saveValuation(request, response) {
  142. let valuationId = request.body.id;
  143. try {
  144. if (valuationId === '') {
  145. throw 'id参数错误';
  146. }
  147. let versionModel = new VersionModel();
  148. let result = await versionModel.saveValuation(valuationId, request.body);
  149. if (!result) {
  150. throw '保存失败';
  151. }
  152. } catch (error) {
  153. console.log(error);
  154. }
  155. response.redirect(request.headers.referer);
  156. }
  157. /**
  158. * 删除计价规则
  159. *
  160. * @param {object} request
  161. * @param {object} response
  162. * @return {void}
  163. */
  164. async deleteValuation(request, response) {
  165. let id = request.params.id;
  166. let section = request.params.section;
  167. let selectedVersion = request.session.selectedVersion;
  168. try {
  169. if (id === undefined || id === '' || section === undefined || section === '') {
  170. throw '参数错误';
  171. }
  172. let versionModel = new VersionModel();
  173. let result = versionModel.deleteValuation(selectedVersion._id, id, section);
  174. if (!result) {
  175. throw '删除失败';
  176. }
  177. } catch (error) {
  178. console.log(error);
  179. }
  180. response.redirect(request.headers.referer);
  181. }
  182. /**
  183. * 快速切换启用/禁用
  184. *
  185. * @param {object} request
  186. * @param {object} response
  187. * @return {void}
  188. */
  189. async enableSwitch(request, response) {
  190. let id = request.body.id;
  191. let section = request.params.section;
  192. let enable = request.body.enable;
  193. let responseData = {
  194. err: 0,
  195. msg: ''
  196. };
  197. try {
  198. let versionModel = new VersionModel();
  199. let result = await versionModel.switchEnable(id, section, enable);
  200. if (!result) {
  201. throw '新增版本失败';
  202. }
  203. } catch (error) {
  204. console.log(error);
  205. responseData.err = 1;
  206. responseData.msg = error;
  207. }
  208. response.json(responseData);
  209. }
  210. /**
  211. * 发布/取消版本
  212. *
  213. * @param {object} request
  214. * @param {object} response
  215. * @return {void}
  216. */
  217. async release(request, response) {
  218. let id = request.params.id;
  219. let release = request.params.release;
  220. release = parseInt(release);
  221. try {
  222. let versionModel = new VersionModel();
  223. let updateData = {
  224. is_release: release === 1,
  225. release_time: new Date().getTime()
  226. };
  227. let result = await versionModel.updateById(id, updateData);
  228. if (!result) {
  229. throw '发布版本失败';
  230. }
  231. } catch (error) {
  232. console.log(error);
  233. }
  234. response.redirect(request.headers.referer);
  235. }
  236. /**
  237. * 新增版本操作
  238. *
  239. * @param {object} request
  240. * @param {object} response
  241. * @return {void}
  242. */
  243. async addVersion(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 versionModel = new VersionModel();
  256. let result = await versionModel.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 VersionController;