connection.js 4.0 KB

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