DialogQuestion.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <template>
  2. <div class="dialog-item dialog-question">
  3. <BtnSelectItem v-if="select_btn_visible" @change="handleSelectChange" />
  4. <div class="dialog-main question-main">
  5. <div class="dialog-content question-content">
  6. <div class="question-main-content">
  7. <DialogContent :content="question.content" :show_think="false" class="question-content-core-text">
  8. </DialogContent>
  9. <FileUploadPreviewV2
  10. v-if="question_attached_files.length !== 0"
  11. :file_list="question_attached_files"
  12. :enable_remove="false"
  13. />
  14. </div>
  15. </div>
  16. <div class="dialog-icon question-icon">
  17. <img :src="question.client_custom_icon" />
  18. </div>
  19. </div>
  20. </div>
  21. </template>
  22. <script setup>
  23. import { computed } from 'vue';
  24. import BtnSelectItem from './BtnSelectItem.vue';
  25. import DialogContent from '../conversation-content/DialogContent.vue';
  26. import FileUploadPreviewV2 from '../file-preview/FileUploadPreviewV2.vue';
  27. const props = defineProps({
  28. show_select: true,
  29. /**
  30. * 用户提问数据
  31. */
  32. question: Object
  33. });
  34. const select_btn_visible = computed(() => {
  35. return props.show_select === true;
  36. });
  37. const question_attached_files = computed(() => {
  38. if (Array.isArray(props.question.client_custom_upload_file_list)) {
  39. return props.question.client_custom_upload_file_list;
  40. } else {
  41. return [];
  42. }
  43. });
  44. const emit = defineEmits(['select']);
  45. const handleSelectChange = () => {
  46. emit('select');
  47. };
  48. </script>
  49. <style src="./dialog-item-common.css" />
  50. <style lang="css" scoped>
  51. .dialog-question {
  52. color: var(--color-text-1);
  53. display: flex;
  54. justify-content: space-between;
  55. }
  56. .question-main {
  57. }
  58. .question-content {
  59. display: flex;
  60. justify-content: flex-end;
  61. }
  62. .question-content-core-text {
  63. background-color: rgb(var(--primary-6));
  64. color: #fff;
  65. }
  66. .question-icon {
  67. margin-left: 22px;
  68. border-radius: 50%;
  69. }
  70. .question-icon img {
  71. width: 100%;
  72. }
  73. .question-main-content {
  74. display: flex;
  75. flex-direction: column;
  76. align-items: flex-end;
  77. }
  78. </style>