connection.js 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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 port = window.location.protocol === 'http:' ? 3300 : 3301;
  12. socket = io(window.location.protocol + '//' + hostName + ':' + port);
  13. socket.on('connect', function () {
  14. if (from == 'pm') {
  15. me.roomInfo = {
  16. userID: userID
  17. };
  18. }else if(from == 'unitPrice'){
  19. me.roomInfo = {
  20. unitFile:unitPriceFileID
  21. }
  22. } else {
  23. me.roomInfo={
  24. feeRate:me.getFeeRateRoomID(),
  25. unitFile:me.getUnitFileRoomID(),
  26. userIDProjectID: `${userID}@${projectObj.project.ID()}`
  27. };
  28. if (payload && payload.projectReadOnly === false) {
  29. me.roomInfo.projectID = `projectID${projectObj.project.ID()}`;
  30. }
  31. }
  32. const emitData = {
  33. roomData: me.roomInfo,
  34. payload
  35. };
  36. socket.emit('join', emitData);
  37. if (me.messages.length > 0) {//发送缓存消息;
  38. for (let m of me.messages) {
  39. socket.emit(m.message, m.data);
  40. }
  41. }
  42. console.log('连接成功');
  43. });
  44. //=========================================================
  45. //造价书页面接收消息部分
  46. socket.on('feeRateChange', function (data) {
  47. //data = JSON.parse(data);
  48. $("#message").html('费率文件已被修改,<a href="javascript:void(0);" id="load-data" onclick="window.location.reload()">点击加载并重新进行造价计算</a>');
  49. $("#notify").show();
  50. //alert('费率文件已经修改,请刷新页面');
  51. //window.location.reload();
  52. });
  53. socket.on('unitFileChange', function (data) {
  54. /*console.log(data);
  55. if (data.newValue === undefined) {
  56. return false;
  57. }*/
  58. $("#message").html('市场单价已被修改,<a href="javascript:void(0);" id="load-data" onclick="window.location.reload()">点击加载并重新进行造价计算</a>');
  59. $("#notify").show();
  60. });
  61. socket.on('changeFileNotify', function (data) {//收到文件改变的消息
  62. if (data.projectID == projectObj.project.ID()) {//如果是同个项目,则给出提示,否则忽略
  63. let preString = "";
  64. if (data.name == 'feeRate') {
  65. preString = "费率文件";
  66. }
  67. if (data.name == 'unitFile') {
  68. preString = "单价文件";
  69. }
  70. $("#message").html(preString + '已被修改,<a href="javascript:void(0);" id="load-data" onclick="window.location.reload()">点击加载并重新进行造价计算</a>');
  71. $("#notify").show();
  72. }
  73. });
  74. socket.on('handleAvatarList', function ({ editingUsers }) {
  75. projectInfoObj.handleAvatarList(editingUsers);
  76. });
  77. SHARE_TO.permissionChangeListener();
  78. //=============================================================================================
  79. //项目管理页面接收消息部分
  80. socket.on('refreshProjectIcon', function (data) {//收到刷新图标消息
  81. if (data.projectID && typeof projTreeObj !== 'undefined') projTreeObj.refreshProjectIcon(data.projectID);
  82. });
  83. socket.on('fileDataChange', function (data) {//收到单价文件、费率文件内容修改、文件切换、另存(暂时能共用,以后有需要可分离)推送消息
  84. if (data.projectID && typeof projTreeObj !== 'undefined') projTreeObj.refreshWhenFileDateChange(data.projectID);
  85. });
  86. },
  87. getFeeRateRoomID: function () {
  88. return projectObj.project.FeeRate.getActivateFeeRateFileID();
  89. },
  90. getUnitFileRoomID: function () {
  91. return projectObj.project.projectGLJ.datas.constData.roomId ? projectObj.project.projectGLJ.datas.constData.roomId : roomId;
  92. }
  93. }