connection.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. /**
  2. * Created by zhangweicheng on 2017/8/7.
  3. */
  4. socketObject = {
  5. roomInfo: null,
  6. messages: [],
  7. connect: function (from, payload) {
  8. // 连接socket服务器
  9. var hostName = window.location.hostname;
  10. let me = this;
  11. let socketPort = parseInt($("#socketPort").val());
  12. if(!socketPort) socketPort= 3300;
  13. let port = window.location.protocol === 'http:' ? socketPort : socketPort+1;
  14. socket = io(window.location.protocol + '//' + hostName + ':' + port);
  15. socket.on('connect', function () {
  16. if (from == 'pm') {
  17. me.roomInfo = {
  18. compilationUser: `${userID}@${compilationData._id}`,
  19. userID: userID
  20. };
  21. } else if (from == 'unitPrice') {
  22. me.roomInfo = {
  23. unitFile: unitPriceFileID
  24. }
  25. } else {
  26. me.roomInfo = {
  27. feeRate: me.getFeeRateRoomID(),
  28. unitFile: me.getUnitFileRoomID(),
  29. userIDProjectID: `${userID}@${projectObj.project.ID()}`
  30. };
  31. if (payload && payload.projectReadOnly === false) {
  32. me.roomInfo.projectID = `projectID${projectObj.project.ID()}`;
  33. }
  34. }
  35. const emitData = {
  36. roomData: me.roomInfo,
  37. payload
  38. };
  39. socket.emit('join', emitData);
  40. if (me.messages.length > 0) {//发送缓存消息;
  41. for (let m of me.messages) {
  42. socket.emit(m.message, m.data);
  43. }
  44. }
  45. if (typeof markReadProjectIDs !== 'undefined' && markReadProjectIDs.length) {
  46. SHARE_TO.emitPermissionChange(commonConstants.SharePermissionChangeType.READ, userID, null, [], { markReadProjectIDs });
  47. }
  48. console.log('连接成功');
  49. });
  50. //=========================================================
  51. //造价书页面接收消息部分
  52. socket.on('feeRateChange', function (data) {
  53. //data = JSON.parse(data);
  54. $("#message").html('费率文件已被修改,<a href="javascript:void(0);" id="load-data" onclick="window.location.reload()">点击加载并重新进行造价计算</a>');
  55. $("#notify").show();
  56. //alert('费率文件已经修改,请刷新页面');
  57. //window.location.reload();
  58. });
  59. socket.on('unitFileChange', function (data) {
  60. /*console.log(data);
  61. if (data.newValue === undefined) {
  62. return false;
  63. }*/
  64. $("#message").html('市场单价已被修改,<a href="javascript:void(0);" id="load-data" onclick="window.location.reload()">点击加载并重新进行造价计算</a>');
  65. $("#notify").show();
  66. });
  67. socket.on('changeFileNotify', function (data) {//收到文件改变的消息
  68. if (data.projectID == projectObj.project.ID()) {//如果是同个项目,则给出提示,否则忽略
  69. let preString = "";
  70. if (data.name == 'feeRate') {
  71. preString = "费率文件";
  72. }
  73. if (data.name == 'unitFile') {
  74. preString = "单价文件";
  75. }
  76. $("#message").html(preString + '已被修改,<a href="javascript:void(0);" id="load-data" onclick="window.location.reload()">点击加载并重新进行造价计算</a>');
  77. $("#notify").show();
  78. }
  79. });
  80. socket.on('handleAvatarList', function ({ editingUsers }) {
  81. projectInfoObj.handleAvatarList(editingUsers);
  82. });
  83. if(typeof SHARE_TO !== 'undefined') SHARE_TO.permissionChangeListener();
  84. //=============================================================================================
  85. //项目管理页面接收消息部分
  86. socket.on('refreshProjectIcon', function (data) {//收到刷新图标消息
  87. if (data.projectID && typeof projTreeObj !== 'undefined') projTreeObj.refreshProjectIcon(data.projectID);
  88. });
  89. socket.on('fileDataChange', function (data) {//收到单价文件、费率文件内容修改、文件切换、另存(暂时能共用,以后有需要可分离)推送消息
  90. if (data.projectID && typeof projTreeObj !== 'undefined') projTreeObj.refreshWhenFileDateChange(data.projectID);
  91. });
  92. // 项目管理树数据发生变化,提示刷新
  93. socket.on('pmTreeChange', function ({ expandState, selection }) {
  94. const isActive = $('#tab_pm_all').hasClass('active');
  95. if (isActive) {
  96. $("#message").html(`树结构发生变化,请<a href="javascript:void(0);" id="load-data">点击刷新列表</a>`);
  97. $('#load-data').on('click', () => projTreeObj.handleNotifyClick(expandState, selection));
  98. $('#notify > button').hide();
  99. $('#empty-modal').modal('show');
  100. $("#notify").show();
  101. }
  102. });
  103. },
  104. getFeeRateRoomID: function () {
  105. return projectObj.project.FeeRate.getActivateFeeRateFileID();
  106. },
  107. getUnitFileRoomID: function () {
  108. return projectObj.project.projectGLJ.datas.constData.roomId ? projectObj.project.projectGLJ.datas.constData.roomId : roomId;
  109. }
  110. }