connection.js 4.0 KB

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