ChatView.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <template>
  2. <div class="chat-container">
  3. <aside class="sidebar">
  4. <h2>需求</h2>
  5. <ul class="demand-list">
  6. <li v-for="(demand, index) in demands" :key="index">
  7. <a href="#"><i class="fas fa-eye"></i> {{ demand }}</a>
  8. </li>
  9. </ul>
  10. </aside>
  11. <main class="chat-area">
  12. <section class="chat-header">
  13. <h2>聊天界面</h2>
  14. </section>
  15. <section class="chat-body">
  16. <div class="message user-message">
  17. <p>请输入您的问题</p>
  18. </div>
  19. <div class="message bot-message">
  20. <p>正在建设中...</p>
  21. </div>
  22. </section>
  23. <footer class="chat-footer">
  24. <form @submit.prevent="sendMessage">
  25. <input type="text" v-model="message" placeholder="在这里输入消息...">
  26. <button type="submit" class="send-button">发送</button>
  27. <label for="upload-file" class="upload-button">上传文件</label>
  28. <input id="upload-file" type="file" @change="handleFileUpload">
  29. </form>
  30. </footer>
  31. </main>
  32. </div>
  33. </template>
  34. <script>
  35. export default {
  36. data() {
  37. return {
  38. demands: ['需求1', '需求2', '需求3'],
  39. message: '',
  40. selectedFile: null
  41. };
  42. },
  43. methods: {
  44. sendMessage() {
  45. if (this.message.trim()) {
  46. // Send message logic here
  47. this.message = '';
  48. }
  49. },
  50. handleFileUpload(event) {
  51. this.selectedFile = event.target.files[0];
  52. // Handle file upload logic here
  53. }
  54. }
  55. };
  56. </script>
  57. <style scoped>
  58. .chat-container {
  59. display: flex;
  60. height: 100vh;
  61. }
  62. .sidebar {
  63. width: 25%;
  64. background-color: purple;
  65. color: white;
  66. padding: 20px;
  67. }
  68. .demand-list {
  69. list-style-type: none;
  70. padding: 0;
  71. }
  72. .demand-list li {
  73. margin: 10px 0;
  74. }
  75. .demand-list a {
  76. color: white;
  77. text-decoration: none;
  78. }
  79. .chat-area {
  80. flex-grow: 1;
  81. display: flex;
  82. flex-direction: column;
  83. }
  84. .chat-header {
  85. background-color: lightgray;
  86. padding: 10px;
  87. }
  88. .chat-body {
  89. flex-grow: 1;
  90. overflow-y: auto;
  91. padding: 10px;
  92. }
  93. .message {
  94. margin-bottom: 10px;
  95. border-radius: 5px;
  96. padding: 10px;
  97. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  98. }
  99. .user-message {
  100. background-color: green;
  101. align-self: flex-end;
  102. }
  103. .bot-message {
  104. background-color: lightblue;
  105. align-self: flex-start;
  106. }
  107. .chat-footer {
  108. background-color: lightgray;
  109. padding: 10px;
  110. display: flex;
  111. align-items: center;
  112. }
  113. .chat-footer form {
  114. display: flex;
  115. flex-grow: 1;
  116. }
  117. .chat-footer input[type="text"] {
  118. flex-grow: 1;
  119. border-radius: 5px;
  120. padding: 5px;
  121. }
  122. .send-button {
  123. margin-left: 10px;
  124. background-color: blue;
  125. color: white;
  126. border: none;
  127. cursor: pointer;
  128. border-radius: 5px;
  129. padding: 5px 10px;
  130. }
  131. .upload-button {
  132. margin-left: 10px;
  133. background-color: gray;
  134. color: white;
  135. border: none;
  136. cursor: pointer;
  137. border-radius: 5px;
  138. padding: 5px 10px;
  139. }
  140. .upload-button:hover {
  141. background-color: darkgray;
  142. }
  143. .send-button:hover {
  144. background-color: darkblue;
  145. }
  146. </style>