diff --git a/src/views/chat/index.vue b/src/views/chat/index.vue
index 58ad7cc..a1d0f23 100644
--- a/src/views/chat/index.vue
+++ b/src/views/chat/index.vue
@@ -39,7 +39,7 @@
+ @keydown="handleInputKeydown" @paste="handlePaste" />
@@ -684,6 +684,46 @@ const handleImageChange = (e) => {
e.target.value = ''
}
+// 处理粘贴发送图片
+const handlePaste = (e) => {
+ try {
+ const clipboard = e.clipboardData || window.clipboardData
+ if (!clipboard) return
+ const items = clipboard.items || []
+ if (!items || items.length === 0) return
+
+ // 收集剪贴板中的图片文件
+ const imageFiles = []
+ for (let i = 0; i < items.length; i++) {
+ const it = items[i]
+ if (it && it.kind === 'file') {
+ const file = it.getAsFile && it.getAsFile()
+ if (file && file.type && file.type.startsWith('image/')) {
+ imageFiles.push(file)
+ }
+ }
+ }
+
+ if (imageFiles.length === 0) {
+ // 没有图片,保持默认粘贴文本行为
+ return
+ }
+
+ // 阻止默认插入到文本框,走图片发送逻辑
+ e.preventDefault()
+
+ // 如果有多张,只处理第一张并提示
+ if (imageFiles.length > 1) {
+ ElMessage({ type: 'info', message: '一次仅发送第一张图片' })
+ }
+
+ // 使用现有上传发送流程
+ uploadImageFile(imageFiles[0])
+ } catch (err) {
+ // 失败时不影响默认粘贴行为
+ }
+}
+
// 拖拽事件处理
const handleDragEnter = (e) => {
e.preventDefault()