feat(Smart Question): Add question copy

This commit is contained in:
dataeaseShu
2025-10-24 11:22:28 +08:00
committed by dataeaseShu
parent d120cfd063
commit 4d35a731b0
7 changed files with 30 additions and 8 deletions
@@ -1,11 +1,14 @@
<script setup lang="ts">
import type { ChatMessage } from '@/api/chat.ts'
import icon_copy_outlined from '@/assets/embedded/icon_copy_outlined.svg'
import { useI18n } from 'vue-i18n'
import { useClipboard } from '@vueuse/core'
const props = defineProps<{
message?: ChatMessage
}>()
const { t } = useI18n()
const { copy } = useClipboard({ legacy: true })
function clickAnalysis() {
console.info('analysis_record_id: ' + props.message?.record?.analysis_record_id)
@@ -13,6 +16,17 @@ function clickAnalysis() {
function clickPredict() {
console.info('predict_record_id: ' + props.message?.record?.predict_record_id)
}
const copyCode = () => {
const str = props.message?.content || ''
copy(str as string)
.then(function () {
ElMessage.success(t('embedded.copy_successful'))
})
.catch(function () {
ElMessage.error(t('embedded.copy_failed'))
})
}
</script>
<template>
@@ -24,6 +38,13 @@ function clickPredict() {
{{ t('qa.data_predict') }}
</span>
<span style="width: 100%">{{ message?.content }}</span>
<div style="position: absolute; right: 12px; bottom: -24px">
<el-tooltip :offset="12" effect="dark" :content="t('datasource.copy')" placement="top">
<el-icon style="cursor: pointer" size="16" @click="copyCode">
<icon_copy_outlined></icon_copy_outlined>
</el-icon>
</el-tooltip>
</div>
</div>
</template>
@@ -39,6 +60,7 @@ function clickPredict() {
padding: 12px 16px;
color: rgba(31, 35, 41, 1);
background: rgba(245, 246, 247, 1);
position: relative;
word-wrap: break-word;
white-space: pre-wrap;
+1 -1
View File
@@ -55,7 +55,7 @@ const copyCode = () => {
ElMessage.success(t('embedded.copy_successful'))
})
.catch(function () {
ElMessage.error(t('embedded.copy_successful'))
ElMessage.error(t('embedded.copy_failed'))
})
}
const buttonRef = ref()
+1 -1
View File
@@ -292,7 +292,7 @@ const copyCode = (row: any, key: any = 'app_secret') => {
ElMessage.success(t('embedded.copy_successful'))
})
.catch(function () {
ElMessage.error(t('embedded.copy_successful'))
ElMessage.error(t('embedded.copy_failed'))
})
}
</script>
@@ -461,7 +461,7 @@ const copyJsCode = () => {
ElMessage.success(t('embedded.copy_successful'))
})
.catch(function () {
ElMessage.error(t('embedded.copy_successful'))
ElMessage.error(t('embedded.copy_failed'))
})
}
@@ -471,7 +471,7 @@ const copyJsCodeFull = () => {
ElMessage.success(t('embedded.copy_successful'))
})
.catch(function () {
ElMessage.error(t('embedded.copy_successful'))
ElMessage.error(t('embedded.copy_failed'))
})
}
const copyCode = () => {
@@ -480,7 +480,7 @@ const copyCode = () => {
ElMessage.success(t('embedded.copy_successful'))
})
.catch(function () {
ElMessage.error(t('embedded.copy_successful'))
ElMessage.error(t('embedded.copy_failed'))
})
}
const certificateBeforeClose = () => {
+1 -1
View File
@@ -70,7 +70,7 @@ const copyCode = () => {
ElMessage.success(t('embedded.copy_successful'))
})
.catch(function () {
ElMessage.error(t('embedded.copy_successful'))
ElMessage.error(t('embedded.copy_failed'))
})
}
const cancelDelete = () => {
+1 -1
View File
@@ -65,7 +65,7 @@ const copyCode = () => {
ElMessage.success(t('embedded.copy_successful'))
})
.catch(function () {
ElMessage.error(t('embedded.copy_successful'))
ElMessage.error(t('embedded.copy_failed'))
})
}
const cancelDelete = () => {
+1 -1
View File
@@ -517,7 +517,7 @@ const copyText = () => {
ElMessage.success(t('embedded.copy_successful'))
})
.catch(function () {
ElMessage.error(t('embedded.copy_successful'))
ElMessage.error(t('embedded.copy_failed'))
})
}