main_route.js 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. let config = require("../../../config/config.js");
  9. const OptionsDao = require('../../options/models/optionsModel');
  10. const optionSetting = require('../../options/models/optionTypes');
  11. const getValuationBasisURL = require('../../common/const/valuationBasis');
  12. const regionMap = {
  13. '重庆定额(2018)': '重庆市',
  14. '广东定额(2018)': '广东省'
  15. };
  16. module.exports =function (app) {
  17. const baseController = new BaseController();
  18. app.get('/main', baseController.init, function(req, res) {
  19. let pm = require('../../pm/controllers/pm_controller');
  20. const projectID = +req.query.project;
  21. pm.checkProjectRight(req.session.sessionUser.id, projectID, async function (hasRight, projectData, isOpenShareProject, allowCooperate,allowCopy) {
  22. if (hasRight) {
  23. //分享的项目,只读、协作(允许编辑)
  24. let projectReadOnly = false,
  25. projectCooperate = false;
  26. if(req.session.sessionUser.id !== projectData.userID){
  27. projectData._doc.readOnly = true;
  28. projectCooperate = allowCooperate;
  29. //允许协作的项目允许编辑,非只读
  30. projectReadOnly = !projectCooperate;
  31. }
  32. let fileKind = '1'; //默认投标文件
  33. let constructProject = await pmFacade.getConstructionProject(projectID);
  34. if (constructProject && constructProject.property && constructProject.property.fileKind) {
  35. fileKind = constructProject.property.fileKind;
  36. }
  37. let optionsDao = new OptionsDao();
  38. let options = await optionsDao.getOptions(req.session.sessionUser.id, req.session.sessionCompilation._id);
  39. if(options){
  40. options = await optionsDao.saveOptions(req.session.sessionUser.id, req.session.sessionCompilation._id, optionSetting);
  41. }
  42. const markReadProjectIDs = isOpenShareProject ? await pmFacade.markShareItemsRead(projectID, req.session.sessionUser.id) : [];
  43. const version = await systemSettingModel.getVersion();
  44. res.render('building_saas/main/html/main.html',
  45. {
  46. userAccount: req.session.userAccount,
  47. userID: req.session.sessionUser.id,
  48. projectData: projectData,
  49. compilationName: req.session.sessionCompilation.name,
  50. valuationBasisURL: getValuationBasisURL(req.session.sessionCompilation.name),
  51. region: regionMap[req.session.sessionCompilation.name] || '',
  52. versionName: req.session.compilationVersion,
  53. projectReadOnly: projectReadOnly,
  54. projectCooperate: projectCooperate,
  55. allowCopy: allowCopy||false,
  56. LicenseKey:config.getLicenseKey(process.env.NODE_ENV),
  57. overWriteUrl:req.session.sessionCompilation.overWriteUrl,
  58. fileKind: fileKind,
  59. options:JSON.stringify(options),
  60. markReadProjectIDs: JSON.stringify(markReadProjectIDs),
  61. version
  62. });
  63. } else {
  64. res.redirect('/pm');
  65. }
  66. });
  67. });
  68. }