setting_controller.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date
  7. * @version
  8. */
  9. const officeList = require('../const/cld_office').list;
  10. const settingConst = require('../const/setting.js');
  11. const settingMenu = require('../../config/menu').settingMenu;
  12. module.exports = app => {
  13. class SettingController extends app.BaseController {
  14. /**
  15. * 构造函数
  16. *
  17. * @param {Object} ctx - egg全局context
  18. * @return {void}
  19. */
  20. constructor(ctx) {
  21. super(ctx);
  22. ctx.subMenu = settingMenu;
  23. }
  24. /**
  25. * 项目信息页面
  26. *
  27. * @param {Object} ctx - egg全局变量
  28. * @return {void}
  29. */
  30. async info(ctx) {
  31. try {
  32. // 获取项目数据
  33. const projectId = ctx.session.sessionProject.id;
  34. const projectData = await ctx.service.project.getDataById(projectId);
  35. if (projectData === null) {
  36. throw '没有对应的项目数据';
  37. }
  38. // 获取销售人员数据
  39. const salesmanData = await ctx.service.manager.getDataById(projectData.manager_id);
  40. // 数据规则
  41. const rule = ctx.service.project.rule('saveInfo');
  42. const jsValidator = await this.jsValidator.convert(rule).build();
  43. const renderData = {
  44. projectData,
  45. salesmanData,
  46. officeList,
  47. jsValidator,
  48. };
  49. await this.layout('setting/info.ejs', renderData);
  50. } catch (error) {
  51. console.log(error);
  52. ctx.redirect('/dashboard');
  53. }
  54. }
  55. async user(ctx) {
  56. try {
  57. // 获取项目数据
  58. const projectId = ctx.session.sessionProject.id;
  59. const projectData = await ctx.service.project.getDataById(projectId);
  60. if (projectData === null) {
  61. throw '没有对应的项目数据';
  62. }
  63. const renderData = {
  64. projectData,
  65. };
  66. await this.layout('setting/user.ejs', renderData, 'setting/user_modal.ejs');
  67. } catch (error) {
  68. console.log(error);
  69. ctx.redirect('/dashboard');
  70. }
  71. }
  72. async category(ctx) {
  73. try {
  74. // 获取项目数据
  75. const projectId = ctx.session.sessionProject.id;
  76. const projectData = await ctx.service.project.getDataById(projectId);
  77. if (projectData === null) {
  78. throw '没有对应的项目数据';
  79. }
  80. const categoryData = await ctx.service.category.getAllCategory({ where: { pid: projectId } });
  81. const renderData = {
  82. projectData,
  83. categoryType: settingConst.cType,
  84. categoryData,
  85. };
  86. await this.layout('setting/category.ejs', renderData, 'setting/category_modal.ejs');
  87. } catch (error) {
  88. console.log(error);
  89. ctx.redirect('/dashboard');
  90. }
  91. }
  92. async addCategory(ctx) {
  93. try {
  94. const projectId = ctx.session.sessionProject.id;
  95. const responseData = {
  96. err: 0, msg: '', data: null,
  97. };
  98. const data = JSON.parse(ctx.request.body.data);
  99. if (!data.name || !data.type) {
  100. throw '提交数据错误';
  101. }
  102. responseData.data = await ctx.service.category.addCategory(projectId, data.name, data.type);
  103. ctx.body = responseData;
  104. } catch (err) {
  105. console.log(err);
  106. ctx.body = {err: 1, msg: err.toString(), data: null};
  107. }
  108. }
  109. async updateCategory(ctx) {
  110. try {
  111. const projectId = ctx.session.sessionProject.id;
  112. const responseData = {
  113. err: 0, msg: '', data: null,
  114. }
  115. const data = JSON.parse(ctx.request.body.data);
  116. if (!data.id) {
  117. throw '提交数据错误';
  118. }
  119. if (data.name) {
  120. const count = await ctx.service.category.count({pid: projectId, name: data.name});
  121. if (count >= 1) {
  122. throw '存在同名类别';
  123. }
  124. }
  125. if (data.value) {
  126. data.value = JSON.stringify(data.value)
  127. }
  128. const result = await ctx.service.category.update(data, {id: data.id});
  129. if (!result) {
  130. throw '提交数据失败'
  131. }
  132. responseData.data = await ctx.service.category.getCategory({id: data.id});
  133. ctx.body = responseData;
  134. } catch (err) {
  135. console.log(err);
  136. ctx.body = {err: 1, msg: err.toString(), data: null};
  137. }
  138. }
  139. async deleteCategory(ctx) {
  140. try {
  141. const projectId = ctx.session.sessionProject.id;
  142. const responseData = {
  143. err: 0, msg: '', data: null,
  144. };
  145. const data = JSON.parse(ctx.request.body.data);
  146. if (!data.id) {
  147. throw '提交数据错误';
  148. }
  149. const result = await ctx.service.category.deleteById(data.id);
  150. if (!result) {
  151. throw '提交数据失败'
  152. }
  153. ctx.body = responseData;
  154. } catch(err) {
  155. console.log(err);
  156. ctx.body = {err: 1, msg: err.toString(), data: null};
  157. }
  158. }
  159. }
  160. return SettingController;
  161. };