bills_template_controller.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. /**
  2. * 清单模板控制控制器
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/7/28
  6. * @compilation
  7. */
  8. import BaseController from "../../common/base/base_controller";
  9. import billsTemplateFacade from "../facade/bills_template_facade";
  10. import { default as BillsFixedFlagConst, List as BillsFixedFlagList } from "../../common/const/bills_fixed.js";
  11. import { default as BillsTypeFlagConst, List as BillsTypeFlagList } from "../../common/const/bills_type.js";
  12. import CompilationModel from '../../users/models/compilation_model';
  13. import { checkCompilationPermission } from '../../common/base/base_util';
  14. let config = require("../../../config/config.js");
  15. let logger = require('../../../logs/log_helper').logger;
  16. class BillsTemplateController extends BaseController {
  17. /**
  18. * 清单模板库页面
  19. *
  20. * @param {object} request
  21. * @param {object} response
  22. * @return {void}
  23. */
  24. async main(request, response) {
  25. let filter = request.query.filter ? { compilationId: request.query.filter } : null;
  26. const compilationPermission = request.session.managerData.compilationPermission || [];
  27. let templateLibs = await billsTemplateFacade.getAllLibs(filter);
  28. templateLibs = templateLibs.filter(lib => compilationPermission.includes(lib.compilationId));
  29. let compilationModel = new CompilationModel();
  30. let compilationList = await compilationModel.getPermissionCompilationList(request, { _id: 1, name: 1 });
  31. compilationList.unshift({ _id: 'all', name: '所有' });
  32. let activeCompilation = compilationList.find(compilation => compilation._id.toString() === request.query.filter);
  33. if (activeCompilation) {
  34. activeCompilation.active = 'active';
  35. } else {
  36. compilationList[0].active = 'active'
  37. }
  38. let randerData = {
  39. title: '清单模板',
  40. userAccount: request.session.managerData.username,
  41. userID: request.session.managerData.userID,
  42. templateLibs: templateLibs,
  43. compilationList: compilationList,
  44. layout: 'maintain/common/html/layout',
  45. LicenseKey: config.getLicenseKey(process.env.NODE_ENV)
  46. };
  47. response.render("maintain/bill_template_lib/html/main", randerData);
  48. }
  49. async updateBillsTemplateItem(request, response) {
  50. let libID = request.params.libID;
  51. let result = { error: 1, message: '更新数据错误', data: null };
  52. try {
  53. let data = JSON.parse(request.body.data);
  54. if (libID) {
  55. result = await await billsTemplateFacade.updateTemplateItem(libID, data);
  56. if (result) {
  57. result = { error: 0, message: '', data: data };
  58. }
  59. }
  60. } catch (err) {
  61. console.log(err);
  62. result.message = err.message;
  63. }
  64. response.json(result);
  65. }
  66. async editTemplate(request, response) {
  67. //先取出清单库信息:
  68. let libID = request.params.libID;
  69. let templateLib = await billsTemplateFacade.getLibByID(libID);
  70. if (templateLib) {
  71. checkCompilationPermission(request, response, templateLib.compilationId, '/billsTemplate/main');
  72. let templateDatas = await billsTemplateFacade.getTemplateDatasByLibID(libID);
  73. let randerData = {
  74. title: '清单模板',
  75. mainURL: '/billsTemplate/main',
  76. libName: templateLib.name,
  77. userAccount: request.session.managerData.username,
  78. userID: request.session.managerData.userID,
  79. billsTemplateData: JSON.stringify(templateDatas),
  80. billsFixedFlagList: JSON.stringify(BillsFixedFlagList),
  81. billsTypeFlagList: JSON.stringify(BillsTypeFlagList),
  82. libID: libID,
  83. LicenseKey: config.getLicenseKey(process.env.NODE_ENV),
  84. layout: 'maintain/common/html/edit_layout'
  85. };
  86. response.render("maintain/bill_template_lib/html/edit", randerData);
  87. } else {
  88. response.redirect(request.headers.referer);
  89. }
  90. }
  91. async deleteLibByID(request, response) {
  92. logger.info(`delete billsTemplateLib ${request.ip}`);
  93. let result = {
  94. error: 0
  95. };
  96. try {
  97. let data = request.body.data;
  98. data = JSON.parse(data);
  99. let resultData = await billsTemplateFacade.deleteLibByID(data.ID);
  100. result.data = resultData;
  101. } catch (err) {
  102. console.log(err);
  103. result.error = 1;
  104. result.message = err.message;
  105. }
  106. response.json(result);
  107. }
  108. async saveLib(request, response) {
  109. let result = {
  110. error: 0
  111. };
  112. try {
  113. let data = request.body.data;
  114. data = JSON.parse(data);
  115. let resultData = await billsTemplateFacade.saveLib(data);
  116. result.data = resultData;
  117. } catch (err) {
  118. console.log(err);
  119. result.error = 1;
  120. result.message = err.message;
  121. }
  122. response.json(result);
  123. }
  124. async getLibByID(request, response) {
  125. let result = {
  126. error: 0
  127. };
  128. try {
  129. let data = request.body.data;
  130. data = JSON.parse(data);
  131. let resultData = await billsTemplateFacade.getLibByID(data.libID);
  132. result.data = resultData;
  133. } catch (err) {
  134. console.log(err);
  135. result.error = 1;
  136. result.message = err.message;
  137. }
  138. response.json(result);
  139. }
  140. async addLib(request, response) {
  141. try {
  142. await billsTemplateFacade.addLib(request.body);
  143. } catch (error) {
  144. console.log(error);
  145. }
  146. response.redirect(request.headers.referer);
  147. }
  148. async copyLib(req, res) {
  149. try {
  150. const data = JSON.parse(req.body.data);
  151. const userName = req.session.managerData.username;
  152. await billsTemplateFacade.copyLib(data.libID, data.name, userName);
  153. res.json({ error: 0, data: null, message: 'success' })
  154. } catch (err) {
  155. console.log(err);
  156. res.json({ error: 1, data: null, message: 'fail' });
  157. }
  158. }
  159. }
  160. export default BillsTemplateController;