main_route.js 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /**
  2. * Created by chen on 2017/7/17.
  3. */
  4. const BaseController = require("../../common/base/base_controller");
  5. const projectModel = require("../../pm/models/project_model");
  6. const pmFacade = require('../../pm/facade/pm_facade');
  7. const systemSettingModel = require('../../system_setting/model/index');
  8. const OptionsDao = require('../../options/models/optionsModel');
  9. const optionSetting = require('../../options/models/optionTypes');
  10. let config = require("../../../config/config.js");
  11. module.exports =function (app) {
  12. const baseController = new BaseController();
  13. app.get('/main', baseController.init, function(req, res) {
  14. let pm = require('../../pm/controllers/pm_controller');
  15. const projectID = +req.query.project;
  16. pm.checkProjectRight(req.session.sessionUser.id, projectID, async function (hasRight, projectData, isOpenShareProject, allowCooperate) {
  17. if (hasRight) {
  18. //分享的项目,只读、协作(允许编辑)
  19. let projectReadOnly = false,
  20. projectCooperate = false;
  21. if(req.session.sessionUser.id !== projectData.userID){
  22. projectData._doc.readOnly = true;
  23. projectCooperate = allowCooperate;
  24. //允许协作的项目允许编辑,非只读
  25. projectReadOnly = !projectCooperate;
  26. }
  27. let optionsDao = new OptionsDao();
  28. let options = await optionsDao.getOptions(req.session.sessionUser.id, req.session.sessionCompilation._id);
  29. if(options){
  30. options = await optionsDao.saveOptions(req.session.sessionUser.id, req.session.sessionCompilation._id, optionSetting);
  31. }
  32. const markReadProjectIDs = isOpenShareProject ? await pmFacade.markShareItemsRead(projectID, req.session.sessionUser.id) : [];
  33. const version = await systemSettingModel.getVersion();
  34. let boqType = null;
  35. const constructProject = await pmFacade.getConstructionProject(projectID);
  36. if (constructProject && constructProject.property && constructProject.property.boqType) {
  37. boqType = constructProject.property.boqType;
  38. }
  39. res.render('building_saas/main/html/main.html',
  40. {
  41. userAccount: req.session.userAccount,
  42. userID: req.session.sessionUser.id,
  43. userName: req.session.sessionUser.username,
  44. projectData: projectData,
  45. compilationName: req.session.sessionCompilation.name,
  46. versionName: req.session.compilationVersion,
  47. projectReadOnly: projectReadOnly,
  48. projectCooperate: projectCooperate,
  49. LicenseKey:config.getLicenseKey(process.env.NODE_ENV),
  50. socketPort:config[process.env.NODE_ENV].socketPort?config[process.env.NODE_ENV].socketPort:5500,
  51. options:JSON.stringify(options),
  52. overWriteUrl:req.session.sessionCompilation.overWriteUrl,
  53. markReadProjectIDs: JSON.stringify(markReadProjectIDs),
  54. boqType,
  55. title:config[process.env.NODE_ENV].title?config[process.env.NODE_ENV].title:"纵横公路养护云造价",
  56. version
  57. });
  58. } else {
  59. res.redirect('/pm');
  60. }
  61. });
  62. });
  63. }