海南旅游SAAS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

241 lines
7.8 KiB

4 years ago
  1. <style>
  2. .chat-container { padding: 20px 40px; }
  3. .msg-chat {
  4. position: relative; background-color: white; padding: 40px 20px;
  5. border-top-right-radius: 8px; border-bottom-right-radius: 8px;
  6. }
  7. .msg-chat-list { min-height: 800px; max-height: 800px; overflow-y: auto; overflow-x: hidden; }
  8. .msg-user { margin: 5px 0px; line-height: 30px; }
  9. .msg-name { display: inline-block; font-size: 14px; font-weight: bold; padding: 0px 5px; }
  10. .msg-avatar { display: inline-block; }
  11. .msg-avatar img { width: 30px; height: 30px; border-radius: 50%; }
  12. .msg-content { display: inline-block; background-color: #f4f4f4; padding: 20px; border-radius: 10px; }
  13. .msg-content-image { max-width: 120px; max-height: 120px; }
  14. .msg-send { position: absolute; bottom: 0; left: 0; z-index: 999; }
  15. .msg-send .input-group-addon { width: 40px; border: none; line-height: 2.7; background-color: #dbe3e6; cursor: pointer; }
  16. .msg-send .input-group-addon.msg-text { background-color: #586cb1; color: white; padding: 5px 10px; width: 60px; line-height: 2.8; }
  17. .msg-time { padding: 0 5px; color: gray; font-size: 12px; margin: 5px 0; }
  18. .msg-list {
  19. position: relative; background-color: white;
  20. border-top-left-radius: 5px; border-bottom-left-radius: 5px; min-height: 900px;
  21. max-height: 1000px; border-right: 1px solid #dbe3e6; overflow-y: auto;
  22. padding: 20px 10px;
  23. }
  24. .msg-list-item { position: relative; border: 1px solid #dbe3e6; padding: 10px; border-radius: 5px; margin-bottom: 1px; cursor: pointer; }
  25. .msg-list-item:hover { border-color: green; }
  26. .msg-list-title { font-weight: bold; font-size: 14px; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; border-radius: 5px; padding: 2px 5px; overflow: hidden; text-overflow: ellipsis; margin-bottom: 5px; }
  27. .msg-list-content { color: gray; background-color: #f4f4f4; border-radius: 5px; padding: 2px 5px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  28. .msg-list-badge {
  29. position: absolute; right: 5px; top: 5px;
  30. width: 10px; height: 10px; border-radius: 10px;
  31. }
  32. .background-red { background-color: red; }
  33. .background-gray { background-color: gray; }
  34. </style>
  35. <div class="row chat-container">
  36. <div class="col-lg-3 col-md-4 msg-list">
  37. @foreach($user_list as $key => $item)
  38. <div class="msg-list-item" onclick="window.location.href = '?workorder_id={{$item['workorder_id']}}'">
  39. <div class="msg-user">
  40. <div class="msg-avatar">
  41. <img src="{{$item['avatar']}}" alt="头像" title="头像" />
  42. </div>
  43. <div class="msg-name">
  44. {{$item['name']}}
  45. </div>
  46. </div>
  47. <div class="msg-list-title">
  48. {{$item['content']}}
  49. </div>
  50. <div class="msg-list-content">
  51. {{$item['last_message']}}
  52. </div>
  53. <div class="msg-time">
  54. {{$item['last_message_time']}}
  55. </div>
  56. @if($item['unread'] == true)
  57. <div class="msg-list-badge background-red"></div>
  58. @else
  59. <div class="msg-list-badge background-gray"></div>
  60. @endif
  61. </div>
  62. @endforeach
  63. </div>
  64. <div class="col-lg-9 col-md-8 msg-chat">
  65. <div class="input-group input-group-lg msg-send">
  66. <input name="msg-input" type="text" class="form-control" style="border-radius: 0; border-color: #dbe3e6; text-align: center;">
  67. <div class="input-group-addon msg-image"><span class="fa fa-picture-o"></span></div>
  68. <div class="input-group-addon msg-text">发送</div>
  69. <input type="file" class="hidden image" name="image">
  70. </div>
  71. <div class="msg-chat-list">
  72. @foreach($msg_list as $key => $item)
  73. @if($item['type'] == 'op')
  74. <div class="row">
  75. <div class="col-lg-11 text-left">
  76. <div class="msg-user">
  77. <div class="msg-avatar">
  78. <img src="{{$item['avatar']}}" alt="头像" title="头像" />
  79. </div>
  80. <div class="msg-name">
  81. {{$item['name']}}
  82. </div>
  83. </div>
  84. <div class="msg-content">
  85. @if($item['it_type'] == 1)
  86. {{$item['content']}}
  87. @elseif($item['it_type'] == 2)
  88. <img class="msg-content-image" src="{{$item['content']}}" alt="图片" title="图片" />
  89. @endif
  90. </div>
  91. <div class="msg-time">
  92. 2021-01-01 12:02:03
  93. </div>
  94. </div>
  95. </div>
  96. @elseif($item['type'] == 'my')
  97. <div class="row">
  98. <div class="col-lg-11 offset-1 text-right">
  99. <div class="msg-user">
  100. <div class="msg-name">
  101. {{$item['name']}}
  102. </div>
  103. <div class="msg-avatar">
  104. <img src="{{$item['avatar']}}" alt="头像" title="头像" />
  105. </div>
  106. </div>
  107. <div class="msg-content text-left">
  108. @if($item['it_type'] == 1)
  109. {{$item['content']}}
  110. @elseif($item['it_type'] == 2)
  111. <img class="msg-content-image" src="{{$item['content']}}" alt="图片" title="图片" />
  112. @endif
  113. </div>
  114. <div class="msg-time">
  115. 2021-01-01 12:02:03
  116. </div>
  117. </div>
  118. </div>
  119. @endif
  120. @endforeach
  121. </div>
  122. </div>
  123. <div class="hidden-forms">
  124. <input type="hidden" name="workorder-id" value="{{$workorder['workorder_id']??1}}">
  125. </div>
  126. </div>
  127. <div class="template-op hidden">
  128. <div class="row">
  129. <div class="col-lg-11 text-left">
  130. <div class="msg-user">
  131. <div class="msg-avatar">
  132. <img src="http://local.base_pro.com/vendor/dcat-admin/images/default-avatar.jpg" alt="头像" title="头像" />
  133. </div>
  134. <div class="msg-name">
  135. 代理商AbcD
  136. </div>
  137. </div>
  138. <div class="msg-content">#contents</div>
  139. <div class="msg-time">#times</div>
  140. </div>
  141. </div>
  142. </div>
  143. <div class="template-my hidden">
  144. <div class="row">
  145. <div class="col-lg-11 offset-1 text-right">
  146. <div class="msg-user">
  147. <div class="msg-name">
  148. {{$user->name}}
  149. </div>
  150. <div class="msg-avatar">
  151. <img src="{{$user->avatar}}" alt="头像" title="头像" />
  152. </div>
  153. </div>
  154. <div class="msg-content text-left">#contents</div>
  155. <div class="msg-time">#times</div>
  156. </div>
  157. </div>
  158. </div>
  159. <script>
  160. Dcat.ready(function() {
  161. $('.msg-image').on('click', function (e) {
  162. $('.image').click();
  163. });
  164. $('.image').on('change', function (e) {
  165. let formData = new FormData()
  166. formData.append("image", $(this)[0].files[0])
  167. formData.append("workorder_id", $('input[name=workorder-id]').val())
  168. $.ajax({
  169. url: '/admin-agent/send_image',
  170. type: 'POST',
  171. data: formData,
  172. processData: false,
  173. contentType: false,
  174. dataType: 'json',
  175. success: function(res) {
  176. let imageUrl = 'https://hainan.lanzulive.com/'+res.data.content
  177. let msgTime = res.data.created_at
  178. let templateHtml = $('.template-my').html()
  179. let imgDoc = '<img class="msg-content-image" src="'+imageUrl+'" alt="图片" title="图片" />'
  180. templateHtml = templateHtml.replace('#contents', imgDoc)
  181. templateHtml = templateHtml.replace('#times', msgTime)
  182. $(".msg-chat-list").append(templateHtml)
  183. $(".msg-chat-list").animate({ scrollTop: $(".msg-chat-list")[0].scrollHeight - $('.msg-chat-list').height() }, 1)
  184. },
  185. error: function (error) {
  186. console.log(error)
  187. }
  188. });
  189. });
  190. $('input[name=msg-input]').on('keyup', function (e) {
  191. if (e.keyCode == 13) {
  192. $('.msg-text').click()
  193. }
  194. });
  195. $('.msg-text').on('click', function (e) {
  196. let msgText = $('input[name=msg-input]').val()
  197. let workorderId = $('input[name=workorder-id]').val()
  198. $.ajax({
  199. url: '/admin-agent/send_text',
  200. type: 'POST',
  201. data: {content: msgText, workorder_id: workorderId},
  202. dataType: 'json',
  203. success: function(res) {
  204. let msgText = res.data.content
  205. let msgTime = res.data.created_at
  206. let templateHtml = $('.template-my').html()
  207. templateHtml = templateHtml.replace('#contents', msgText)
  208. templateHtml = templateHtml.replace('#times', msgTime)
  209. $(".msg-chat-list").append(templateHtml)
  210. $('input[name=msg-input]').val('')
  211. $(".msg-chat-list").animate({ scrollTop: $(".msg-chat-list")[0].scrollHeight - $('.msg-chat-list').height() }, 1)
  212. },
  213. error: function (error) {
  214. console.log(error)
  215. }
  216. });
  217. });
  218. });
  219. </script>