ChatCore.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <template>
  2. <div>
  3. <!-- 根据选中的对话类型显示不同组件 -->
  4. <component
  5. :is="selectedComponent"
  6. :openVideoRef="openVideoRef"
  7. :selectChatUserRef="selectChatUserRef"
  8. v-if="selectChatUser"
  9. ></component>
  10. </div>
  11. </template>
  12. <script setup>
  13. import { computed, defineProps, ref, inject, watch } from 'vue';
  14. import ChatUser from './ChatUser.vue';
  15. import ChatRobot from './ChatRobot.vue';
  16. import ChatOfficial from './ChatOfficial.vue';
  17. import ChatGroup from './ChatGroup.vue';
  18. import ChatFile from './ChatFile.vue'
  19. // 定义接收的 props
  20. const props = defineProps({
  21. selectChatUser: {
  22. type: Object,
  23. default: null
  24. },
  25. openVideo: {
  26. type: Boolean,
  27. default: false
  28. },
  29. });
  30. // 使用 ref 来存储 selectChatUser 的值
  31. const selectChatUserRef = ref({});
  32. const openVideoRef = ref(false);
  33. // 特殊处理公众号对话与其他类型账号对话组件,公众号切换公众号推文组件、其他账号切换消息发送/展示组件
  34. const selectedComponent = computed(() => {
  35. selectChatUserRef.value = props.selectChatUser;
  36. openVideoRef.value = props.openVideo;
  37. if (props.selectChatUser.roleCode === 0) {
  38. return ChatFile;
  39. } else if (props.selectChatUser.roleCode <= 3) {
  40. return ChatUser;
  41. } else if (props.selectChatUser.roleCode === 4) {
  42. return ChatGroup;
  43. } else if (props.selectChatUser.roleCode === 5) {
  44. return ChatRobot;
  45. } else if (props.selectChatUser.roleCode === 6) {
  46. return ChatOfficial;
  47. }
  48. });
  49. </script>