notice.vue 875 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <template>
  2. <li class="app-tools-notice" @click="openChatBox">
  3. <el-badge :value="number" :hidden="number === 0">
  4. <i class="el-icon-message-solid"></i>
  5. </el-badge>
  6. <!-- 聊天盒子 -->
  7. <cl-chat ref="chat" @message="updateNum"></cl-chat>
  8. </li>
  9. </template>
  10. <script>
  11. export default {
  12. name: "cl-chat-notice",
  13. data() {
  14. return {
  15. visible: false,
  16. number: 0
  17. };
  18. },
  19. created() {
  20. this.refresh();
  21. },
  22. methods: {
  23. refresh() {
  24. this.$service.im.session.unreadCount().then((res) => {
  25. this.number = Number(res);
  26. });
  27. },
  28. updateNum(isOpen) {
  29. this.number += isOpen ? 0 : 1;
  30. },
  31. openChatBox() {
  32. this.$refs["chat"].open();
  33. this.number = 0;
  34. }
  35. }
  36. };
  37. </script>
  38. <style lang="scss" scoped>
  39. .app-tools-notice {
  40. position: relative;
  41. .el-icon-message-solid {
  42. font-size: 20px;
  43. }
  44. /deep/.el-badge {
  45. transform: scale(0.8);
  46. }
  47. }
  48. </style>