mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-21 22:53:56 +08:00
Merge pull request #3273 from xinnan-tech/agent-delete-name-confirm
feat: 删除智能体前需要用户进行确认
This commit is contained in:
Generated
+15
@@ -91,6 +91,9 @@ importers:
|
|||||||
pinia-plugin-persistedstate:
|
pinia-plugin-persistedstate:
|
||||||
specifier: 3.2.1
|
specifier: 3.2.1
|
||||||
version: 3.2.1(pinia@2.0.36(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)))
|
version: 3.2.1(pinia@2.0.36(typescript@5.7.2)(vue@3.5.15(typescript@5.7.2)))
|
||||||
|
sm-crypto:
|
||||||
|
specifier: ^0.3.13
|
||||||
|
version: 0.3.14
|
||||||
vue:
|
vue:
|
||||||
specifier: ^3.4.21
|
specifier: ^3.4.21
|
||||||
version: 3.5.15(typescript@5.7.2)
|
version: 3.5.15(typescript@5.7.2)
|
||||||
@@ -4719,6 +4722,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
|
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
jsbn@1.1.0:
|
||||||
|
resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==}
|
||||||
|
|
||||||
jsdoc-type-pratt-parser@4.1.0:
|
jsdoc-type-pratt-parser@4.1.0:
|
||||||
resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==}
|
resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==}
|
||||||
engines: {node: '>=12.0.0'}
|
engines: {node: '>=12.0.0'}
|
||||||
@@ -6020,6 +6026,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==}
|
resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
|
sm-crypto@0.3.14:
|
||||||
|
resolution: {integrity: sha512-sR7NuGAJH93Om8keAF2/rj1EqFzEiUey4aKGyDo3nQ2BiVqhgq8UkiIoIp5qhV9w4pG7qArhfqyewcG8AbhXbg==}
|
||||||
|
|
||||||
source-map-js@1.2.1:
|
source-map-js@1.2.1:
|
||||||
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@@ -12652,6 +12661,8 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
argparse: 2.0.1
|
argparse: 2.0.1
|
||||||
|
|
||||||
|
jsbn@1.1.0: {}
|
||||||
|
|
||||||
jsdoc-type-pratt-parser@4.1.0: {}
|
jsdoc-type-pratt-parser@4.1.0: {}
|
||||||
|
|
||||||
jsdom@16.7.0:
|
jsdom@16.7.0:
|
||||||
@@ -14145,6 +14156,10 @@ snapshots:
|
|||||||
ansi-styles: 6.2.1
|
ansi-styles: 6.2.1
|
||||||
is-fullwidth-code-point: 5.0.0
|
is-fullwidth-code-point: 5.0.0
|
||||||
|
|
||||||
|
sm-crypto@0.3.14:
|
||||||
|
dependencies:
|
||||||
|
jsbn: 1.1.0
|
||||||
|
|
||||||
source-map-js@1.2.1: {}
|
source-map-js@1.2.1: {}
|
||||||
|
|
||||||
source-map-support@0.5.21:
|
source-map-support@0.5.21:
|
||||||
|
|||||||
@@ -71,6 +71,13 @@ export default {
|
|||||||
'home.inputPlaceholder': 'z.B. Kundenservice-Assistent, Sprachassistent, Wissens-F&A',
|
'home.inputPlaceholder': 'z.B. Kundenservice-Assistent, Sprachassistent, Wissens-F&A',
|
||||||
'home.createError': 'Der Name muss zwischen 1 und 64 Zeichen lang sein.',
|
'home.createError': 'Der Name muss zwischen 1 und 64 Zeichen lang sein.',
|
||||||
'home.createNow': 'Jetzt erstellen',
|
'home.createNow': 'Jetzt erstellen',
|
||||||
|
'home.deleteConfirmTitle': 'Agent löschen',
|
||||||
|
'home.confirmDeleteAgent': 'Das Löschen kann nicht rückgängig gemacht werden. Geben Sie den Agentennamen "{agentName}" ein, um zu bestätigen.',
|
||||||
|
'home.deleteAgentNamePlaceholder': 'Agentennamen eingeben',
|
||||||
|
'home.deleteAgentNameMismatch': 'Der Agentenname stimmt nicht überein',
|
||||||
|
'home.deleteAgentPasteForbidden': 'Bitte geben Sie den Agentennamen manuell ein. Einfügen ist nicht erlaubt.',
|
||||||
|
'home.deleteAgentMissingInfo': 'Agenteninformationen konnten nicht bestätigt werden. Bitte aktualisieren und erneut versuchen.',
|
||||||
|
'home.deleteAgentSuccess': 'Agent erfolgreich gelöscht',
|
||||||
'home.justNow': 'Gerade eben',
|
'home.justNow': 'Gerade eben',
|
||||||
'home.minutesAgo': 'Minuten her',
|
'home.minutesAgo': 'Minuten her',
|
||||||
'home.hoursAgo': 'Stunden her',
|
'home.hoursAgo': 'Stunden her',
|
||||||
|
|||||||
@@ -71,6 +71,13 @@ export default {
|
|||||||
'home.inputPlaceholder': 'e.g. Customer Service Assistant, Voice Assistant, Knowledge Q&A',
|
'home.inputPlaceholder': 'e.g. Customer Service Assistant, Voice Assistant, Knowledge Q&A',
|
||||||
'home.createError': 'The name length must be between 1 and 64 characters',
|
'home.createError': 'The name length must be between 1 and 64 characters',
|
||||||
'home.createNow': 'Create Now',
|
'home.createNow': 'Create Now',
|
||||||
|
'home.deleteConfirmTitle': 'Delete Agent',
|
||||||
|
'home.confirmDeleteAgent': 'Deletion cannot be undone. Type the agent name "{agentName}" to confirm.',
|
||||||
|
'home.deleteAgentNamePlaceholder': 'Enter agent name',
|
||||||
|
'home.deleteAgentNameMismatch': 'The agent name does not match',
|
||||||
|
'home.deleteAgentPasteForbidden': 'Please type the agent name manually. Pasting is not allowed.',
|
||||||
|
'home.deleteAgentMissingInfo': 'Unable to confirm agent information. Please refresh and try again.',
|
||||||
|
'home.deleteAgentSuccess': 'Agent deleted successfully',
|
||||||
'home.justNow': 'Just now',
|
'home.justNow': 'Just now',
|
||||||
'home.minutesAgo': 'minutes ago',
|
'home.minutesAgo': 'minutes ago',
|
||||||
'home.hoursAgo': 'hours ago',
|
'home.hoursAgo': 'hours ago',
|
||||||
|
|||||||
@@ -71,6 +71,13 @@ export default {
|
|||||||
'home.inputPlaceholder': 'ex: Assistente de Atendimento, Assistente de Voz, Perguntas e Respostas',
|
'home.inputPlaceholder': 'ex: Assistente de Atendimento, Assistente de Voz, Perguntas e Respostas',
|
||||||
'home.createError': 'O comprimento do nome deve estar entre 1 e 64 caracteres',
|
'home.createError': 'O comprimento do nome deve estar entre 1 e 64 caracteres',
|
||||||
'home.createNow': 'Criar Agora',
|
'home.createNow': 'Criar Agora',
|
||||||
|
'home.deleteConfirmTitle': 'Excluir Agente',
|
||||||
|
'home.confirmDeleteAgent': 'A exclusão não pode ser desfeita. Digite o nome do agente "{agentName}" para confirmar.',
|
||||||
|
'home.deleteAgentNamePlaceholder': 'Digite o nome do agente',
|
||||||
|
'home.deleteAgentNameMismatch': 'O nome do agente não corresponde',
|
||||||
|
'home.deleteAgentPasteForbidden': 'Digite o nome do agente manualmente. Colar não é permitido.',
|
||||||
|
'home.deleteAgentMissingInfo': 'Não foi possível confirmar as informações do agente. Atualize a página e tente novamente.',
|
||||||
|
'home.deleteAgentSuccess': 'Agente excluído com sucesso',
|
||||||
'home.justNow': 'Agora mesmo',
|
'home.justNow': 'Agora mesmo',
|
||||||
'home.minutesAgo': 'minutos atrás',
|
'home.minutesAgo': 'minutos atrás',
|
||||||
'home.hoursAgo': 'horas atrás',
|
'home.hoursAgo': 'horas atrás',
|
||||||
|
|||||||
@@ -71,6 +71,13 @@ export default {
|
|||||||
'home.inputPlaceholder': 'ví dụ: Trợ lý chăm sóc khách hàng, Trợ lý giọng nói, Hỏi đáp kiến thức',
|
'home.inputPlaceholder': 'ví dụ: Trợ lý chăm sóc khách hàng, Trợ lý giọng nói, Hỏi đáp kiến thức',
|
||||||
'home.createError': 'Độ dài tên phải từ 1 đến 64 ký tự',
|
'home.createError': 'Độ dài tên phải từ 1 đến 64 ký tự',
|
||||||
'home.createNow': 'Tạo ngay',
|
'home.createNow': 'Tạo ngay',
|
||||||
|
'home.deleteConfirmTitle': 'Xóa đại lý',
|
||||||
|
'home.confirmDeleteAgent': 'Không thể hoàn tác sau khi xóa. Nhập tên đại lý "{agentName}" để xác nhận.',
|
||||||
|
'home.deleteAgentNamePlaceholder': 'Nhập tên đại lý',
|
||||||
|
'home.deleteAgentNameMismatch': 'Tên đại lý không khớp',
|
||||||
|
'home.deleteAgentPasteForbidden': 'Vui lòng nhập thủ công tên đại lý. Không được dán.',
|
||||||
|
'home.deleteAgentMissingInfo': 'Không thể xác nhận thông tin đại lý. Vui lòng tải lại rồi thử lại.',
|
||||||
|
'home.deleteAgentSuccess': 'Đã xóa đại lý thành công',
|
||||||
'home.justNow': 'Vừa xong',
|
'home.justNow': 'Vừa xong',
|
||||||
'home.minutesAgo': 'phút trước',
|
'home.minutesAgo': 'phút trước',
|
||||||
'home.hoursAgo': 'giờ trước',
|
'home.hoursAgo': 'giờ trước',
|
||||||
|
|||||||
@@ -71,6 +71,13 @@ export default {
|
|||||||
'home.inputPlaceholder': '例如:客服助手、语音助理、知识问答',
|
'home.inputPlaceholder': '例如:客服助手、语音助理、知识问答',
|
||||||
'home.createError': '名称长度必须在 1 到 64 个字符之间',
|
'home.createError': '名称长度必须在 1 到 64 个字符之间',
|
||||||
'home.createNow': '立即创建',
|
'home.createNow': '立即创建',
|
||||||
|
'home.deleteConfirmTitle': '删除智能体',
|
||||||
|
'home.confirmDeleteAgent': '删除后无法恢复。请输入智能体名称“{agentName}”确认删除。',
|
||||||
|
'home.deleteAgentNamePlaceholder': '请输入智能体名称',
|
||||||
|
'home.deleteAgentNameMismatch': '输入的智能体名称不匹配',
|
||||||
|
'home.deleteAgentPasteForbidden': '请手动输入智能体名称,不允许粘贴',
|
||||||
|
'home.deleteAgentMissingInfo': '无法确认智能体信息,请刷新后重试',
|
||||||
|
'home.deleteAgentSuccess': '智能体删除成功',
|
||||||
'home.justNow': '刚刚',
|
'home.justNow': '刚刚',
|
||||||
'home.minutesAgo': '分钟前',
|
'home.minutesAgo': '分钟前',
|
||||||
'home.hoursAgo': '小时前',
|
'home.hoursAgo': '小时前',
|
||||||
|
|||||||
@@ -92,6 +92,13 @@ export default {
|
|||||||
'home.inputPlaceholder': '例如:客服助手、語音助理、知識問答',
|
'home.inputPlaceholder': '例如:客服助手、語音助理、知識問答',
|
||||||
'home.createError': '暱稱長度必須在 1 到 64 個字元之間。',
|
'home.createError': '暱稱長度必須在 1 到 64 個字元之間。',
|
||||||
'home.createNow': '立即創建',
|
'home.createNow': '立即創建',
|
||||||
|
'home.deleteConfirmTitle': '刪除智能體',
|
||||||
|
'home.confirmDeleteAgent': '刪除後無法復原。請輸入智能體名稱「{agentName}」確認刪除。',
|
||||||
|
'home.deleteAgentNamePlaceholder': '請輸入智能體名稱',
|
||||||
|
'home.deleteAgentNameMismatch': '輸入的智能體名稱不匹配',
|
||||||
|
'home.deleteAgentPasteForbidden': '請手動輸入智能體名稱,不允許貼上',
|
||||||
|
'home.deleteAgentMissingInfo': '無法確認智能體資訊,請重新整理後再試',
|
||||||
|
'home.deleteAgentSuccess': '智能體刪除成功',
|
||||||
'home.justNow': '剛剛',
|
'home.justNow': '剛剛',
|
||||||
'home.minutesAgo': '分鐘前',
|
'home.minutesAgo': '分鐘前',
|
||||||
'home.hoursAgo': '小時前',
|
'home.hoursAgo': '小時前',
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { Agent } from '@/api/agent/types'
|
import type { Agent } from '@/api/agent/types'
|
||||||
import { onMounted, ref } from 'vue'
|
import { computed, onMounted, ref } from 'vue'
|
||||||
// 在组件挂载后设置导航栏标题
|
// 在组件挂载后设置导航栏标题
|
||||||
import { useMessage } from 'wot-design-uni'
|
import { useMessage } from 'wot-design-uni'
|
||||||
import useZPaging from 'z-paging/components/z-paging/js/hooks/useZPaging.js'
|
import useZPaging from 'z-paging/components/z-paging/js/hooks/useZPaging.js'
|
||||||
@@ -53,6 +53,14 @@ const pagingRef = ref()
|
|||||||
useZPaging(pagingRef)
|
useZPaging(pagingRef)
|
||||||
// 消息组件
|
// 消息组件
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
|
const deleteDialogVisible = ref(false)
|
||||||
|
const deleteTargetAgent = ref<Agent | null>(null)
|
||||||
|
const deleteConfirmText = ref('')
|
||||||
|
const deleteAgentLoading = ref(false)
|
||||||
|
|
||||||
|
const isDeleteAgentNameMatched = computed(() => {
|
||||||
|
return !!deleteTargetAgent.value?.agentName && deleteConfirmText.value === deleteTargetAgent.value.agentName
|
||||||
|
})
|
||||||
|
|
||||||
// z-paging查询列表数据
|
// z-paging查询列表数据
|
||||||
async function queryList(pageNo: number, pageSize: number) {
|
async function queryList(pageNo: number, pageSize: number) {
|
||||||
@@ -89,19 +97,53 @@ async function handleCreateAgent(agentName: string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function openDeleteAgentDialog(agent: Agent) {
|
||||||
|
if (!agent.id || !agent.agentName) {
|
||||||
|
toast.error(t('home.deleteAgentMissingInfo'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteTargetAgent.value = agent
|
||||||
|
deleteConfirmText.value = ''
|
||||||
|
deleteDialogVisible.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeDeleteAgentDialog() {
|
||||||
|
if (deleteAgentLoading.value)
|
||||||
|
return
|
||||||
|
|
||||||
|
deleteDialogVisible.value = false
|
||||||
|
deleteTargetAgent.value = null
|
||||||
|
deleteConfirmText.value = ''
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleDeleteAgentPaste() {
|
||||||
|
toast.warning(t('home.deleteAgentPasteForbidden'))
|
||||||
|
}
|
||||||
|
|
||||||
// 删除智能体
|
// 删除智能体
|
||||||
async function handleDeleteAgent(agent: Agent) {
|
async function handleDeleteAgent() {
|
||||||
|
if (!deleteTargetAgent.value || !isDeleteAgentNameMatched.value || deleteAgentLoading.value)
|
||||||
|
return
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await deleteAgent(agent.id)
|
deleteAgentLoading.value = true
|
||||||
|
await deleteAgent(deleteTargetAgent.value.id)
|
||||||
// 删除成功后刷新列表
|
// 删除成功后刷新列表
|
||||||
pagingRef.value.reload()
|
pagingRef.value.reload()
|
||||||
toast.success(`${t('home.agentName')}${t('message.deleteSuccess')}`)
|
toast.success(t('home.deleteAgentSuccess'))
|
||||||
|
deleteDialogVisible.value = false
|
||||||
|
deleteTargetAgent.value = null
|
||||||
|
deleteConfirmText.value = ''
|
||||||
}
|
}
|
||||||
catch (error: any) {
|
catch (error: any) {
|
||||||
console.error('删除智能体失败:', error)
|
console.error('删除智能体失败:', error)
|
||||||
const errorMessage = error?.message || t('message.deleteFail')
|
const errorMessage = error?.message || t('message.deleteFail')
|
||||||
toast.error(errorMessage)
|
toast.error(errorMessage)
|
||||||
}
|
}
|
||||||
|
finally {
|
||||||
|
deleteAgentLoading.value = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 进入编辑页面
|
// 进入编辑页面
|
||||||
@@ -254,7 +296,7 @@ onMounted(() => {
|
|||||||
|
|
||||||
<template #right>
|
<template #right>
|
||||||
<view class="swipe-actions">
|
<view class="swipe-actions">
|
||||||
<view class="action-btn delete-btn" @click.stop="handleDeleteAgent(agent)">
|
<view class="action-btn delete-btn" @click.stop="openDeleteAgentDialog(agent)">
|
||||||
<wd-icon name="delete" />
|
<wd-icon name="delete" />
|
||||||
<text>{{ t('home.delete') }}</text>
|
<text>{{ t('home.delete') }}</text>
|
||||||
</view>
|
</view>
|
||||||
@@ -283,6 +325,79 @@ onMounted(() => {
|
|||||||
<!-- MessageBox 组件 -->
|
<!-- MessageBox 组件 -->
|
||||||
<wd-message-box />
|
<wd-message-box />
|
||||||
</z-paging>
|
</z-paging>
|
||||||
|
|
||||||
|
<wd-popup
|
||||||
|
v-model="deleteDialogVisible"
|
||||||
|
position="center"
|
||||||
|
custom-style="width: 88%; max-width: 420px; border-radius: 16px;"
|
||||||
|
:close-on-click-modal="!deleteAgentLoading"
|
||||||
|
safe-area-inset-bottom
|
||||||
|
@close="closeDeleteAgentDialog"
|
||||||
|
>
|
||||||
|
<view class="delete-agent-dialog">
|
||||||
|
<view class="delete-agent-header">
|
||||||
|
<text class="delete-agent-title">
|
||||||
|
{{ t('home.deleteConfirmTitle') }}
|
||||||
|
</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="delete-agent-body">
|
||||||
|
<view class="delete-agent-content">
|
||||||
|
<wd-icon name="warning" custom-class="delete-agent-warning" />
|
||||||
|
<view class="delete-agent-message">
|
||||||
|
<text
|
||||||
|
class="delete-agent-copy-guard delete-agent-tip"
|
||||||
|
@copy.stop.prevent
|
||||||
|
@cut.stop.prevent
|
||||||
|
@contextmenu.stop.prevent
|
||||||
|
@longpress.stop.prevent
|
||||||
|
>
|
||||||
|
{{ t('home.confirmDeleteAgent', { agentName: deleteTargetAgent?.agentName || '' }) }}
|
||||||
|
</text>
|
||||||
|
<view
|
||||||
|
class="delete-agent-copy-guard delete-agent-target"
|
||||||
|
@copy.stop.prevent
|
||||||
|
@cut.stop.prevent
|
||||||
|
@contextmenu.stop.prevent
|
||||||
|
@longpress.stop.prevent
|
||||||
|
>
|
||||||
|
<text>{{ deleteTargetAgent?.agentName || '' }}</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<input
|
||||||
|
v-model="deleteConfirmText"
|
||||||
|
class="delete-agent-input"
|
||||||
|
type="text"
|
||||||
|
:maxlength="deleteTargetAgent?.agentName?.length || 64"
|
||||||
|
:placeholder="t('home.deleteAgentNamePlaceholder')"
|
||||||
|
:disabled="deleteAgentLoading"
|
||||||
|
@paste.stop.prevent="handleDeleteAgentPaste"
|
||||||
|
@drop.stop.prevent="handleDeleteAgentPaste"
|
||||||
|
@contextmenu.stop.prevent
|
||||||
|
>
|
||||||
|
<text v-if="deleteConfirmText && !isDeleteAgentNameMatched" class="delete-agent-helper">
|
||||||
|
{{ t('home.deleteAgentNameMismatch') }}
|
||||||
|
</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="delete-agent-footer">
|
||||||
|
<wd-button type="info" custom-class="delete-agent-button" :disabled="deleteAgentLoading" @click="closeDeleteAgentDialog">
|
||||||
|
{{ t('common.cancel') }}
|
||||||
|
</wd-button>
|
||||||
|
<wd-button
|
||||||
|
type="primary"
|
||||||
|
custom-class="delete-agent-button"
|
||||||
|
:loading="deleteAgentLoading"
|
||||||
|
:disabled="!isDeleteAgentNameMatched"
|
||||||
|
@click="handleDeleteAgent"
|
||||||
|
>
|
||||||
|
{{ t('common.confirm') }}
|
||||||
|
</wd-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</wd-popup>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@@ -587,4 +702,103 @@ onMounted(() => {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
border-top: 1rpx solid #eeeeee;
|
border-top: 1rpx solid #eeeeee;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.delete-agent-dialog {
|
||||||
|
overflow: hidden;
|
||||||
|
background: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-header {
|
||||||
|
padding: 32rpx 32rpx 20rpx;
|
||||||
|
border-bottom: 1rpx solid #f0f0f0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-title {
|
||||||
|
font-size: 32rpx;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #232338;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-body {
|
||||||
|
padding: 32rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-content {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 16rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.delete-agent-warning) {
|
||||||
|
margin-top: 4rpx;
|
||||||
|
color: #e6a23c;
|
||||||
|
font-size: 40rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-message {
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-tip {
|
||||||
|
display: block;
|
||||||
|
color: #606266;
|
||||||
|
font-size: 28rpx;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-target {
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
padding: 18rpx 20rpx;
|
||||||
|
border: 1rpx solid #ebeef5;
|
||||||
|
border-radius: 12rpx;
|
||||||
|
background: #f5f7fa;
|
||||||
|
color: #303133;
|
||||||
|
font-size: 30rpx;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.5;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-copy-guard {
|
||||||
|
user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-input {
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 100%;
|
||||||
|
height: 80rpx;
|
||||||
|
margin-top: 28rpx;
|
||||||
|
padding: 0 20rpx;
|
||||||
|
border: 1rpx solid #eeeeee;
|
||||||
|
border-radius: 12rpx;
|
||||||
|
background: #f5f7fb;
|
||||||
|
color: #232338;
|
||||||
|
font-size: 28rpx;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-helper {
|
||||||
|
display: block;
|
||||||
|
min-height: 32rpx;
|
||||||
|
margin-top: 10rpx;
|
||||||
|
color: #f56c6c;
|
||||||
|
font-size: 24rpx;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-footer {
|
||||||
|
display: flex;
|
||||||
|
gap: 16rpx;
|
||||||
|
padding: 24rpx 32rpx 32rpx;
|
||||||
|
border-top: 1rpx solid #eeeeee;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.delete-agent-button) {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ export default async ({ command, mode }) => {
|
|||||||
&& mode === 'production'
|
&& mode === 'production'
|
||||||
&& visualizer({
|
&& visualizer({
|
||||||
filename: './node_modules/.cache/visualizer/stats.html',
|
filename: './node_modules/.cache/visualizer/stats.html',
|
||||||
open: true,
|
open: false,
|
||||||
gzipSize: true,
|
gzipSize: true,
|
||||||
brotliSize: true,
|
brotliSize: true,
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleDelete() {
|
handleDelete() {
|
||||||
this.$emit('delete', this.device.agentId)
|
this.$emit('delete', this.device)
|
||||||
},
|
},
|
||||||
handleConfigure() {
|
handleConfigure() {
|
||||||
this.$router.push({ path: '/role-config', query: { agentId: this.device.agentId } });
|
this.$router.push({ path: '/role-config', query: { agentId: this.device.agentId } });
|
||||||
@@ -212,4 +212,4 @@ export default {
|
|||||||
.device-item-tooltip[x-placement^="bottom"] .popper__arrow {
|
.device-item-tooltip[x-placement^="bottom"] .popper__arrow {
|
||||||
border-bottom-color: transparent !important;
|
border-bottom-color: transparent !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -736,7 +736,12 @@ export default {
|
|||||||
'home.justNow': 'Gerade eben',
|
'home.justNow': 'Gerade eben',
|
||||||
'home.minutesAgo': 'Vor {minutes} Minuten',
|
'home.minutesAgo': 'Vor {minutes} Minuten',
|
||||||
'home.hoursAgo': 'Vor {hours} Stunden {minutes} Minuten',
|
'home.hoursAgo': 'Vor {hours} Stunden {minutes} Minuten',
|
||||||
'home.confirmDeleteAgent': 'Sind Sie sicher, dass Sie diesen Agenten löschen möchten?',
|
'home.deleteConfirmTitle': 'Agent löschen',
|
||||||
|
'home.confirmDeleteAgent': 'Das Löschen kann nicht rückgängig gemacht werden. Geben Sie den Agentennamen "{agentName}" ein, um zu bestätigen.',
|
||||||
|
'home.deleteAgentNamePlaceholder': 'Agentennamen eingeben',
|
||||||
|
'home.deleteAgentNameMismatch': 'Der Agentenname stimmt nicht überein',
|
||||||
|
'home.deleteAgentPasteForbidden': 'Bitte geben Sie den Agentennamen manuell ein. Einfügen ist nicht erlaubt.',
|
||||||
|
'home.deleteAgentMissingInfo': 'Agenteninformationen konnten nicht bestätigt werden. Bitte aktualisieren und erneut versuchen.',
|
||||||
'home.deleteSuccess': 'Löschen erfolgreich',
|
'home.deleteSuccess': 'Löschen erfolgreich',
|
||||||
'home.deleteFailed': 'Löschen fehlgeschlagen',
|
'home.deleteFailed': 'Löschen fehlgeschlagen',
|
||||||
'home.enableMemory': 'Bitte aktivieren Sie zuerst den Speicher auf der \"Rolle konfigurieren\" Seite',
|
'home.enableMemory': 'Bitte aktivieren Sie zuerst den Speicher auf der \"Rolle konfigurieren\" Seite',
|
||||||
|
|||||||
@@ -736,7 +736,12 @@ export default {
|
|||||||
'home.justNow': 'Just now',
|
'home.justNow': 'Just now',
|
||||||
'home.minutesAgo': '{minutes} minutes ago',
|
'home.minutesAgo': '{minutes} minutes ago',
|
||||||
'home.hoursAgo': '{hours} hours {minutes} minutes ago',
|
'home.hoursAgo': '{hours} hours {minutes} minutes ago',
|
||||||
'home.confirmDeleteAgent': 'Are you sure you want to delete this agent?',
|
'home.deleteConfirmTitle': 'Delete Agent',
|
||||||
|
'home.confirmDeleteAgent': 'Deletion cannot be undone. Type the agent name "{agentName}" to confirm.',
|
||||||
|
'home.deleteAgentNamePlaceholder': 'Enter agent name',
|
||||||
|
'home.deleteAgentNameMismatch': 'The agent name does not match',
|
||||||
|
'home.deleteAgentPasteForbidden': 'Please type the agent name manually. Pasting is not allowed.',
|
||||||
|
'home.deleteAgentMissingInfo': 'Unable to confirm agent information. Please refresh and try again.',
|
||||||
'home.deleteSuccess': 'Delete successful',
|
'home.deleteSuccess': 'Delete successful',
|
||||||
'home.deleteFailed': 'Delete failed',
|
'home.deleteFailed': 'Delete failed',
|
||||||
'home.enableMemory': 'Please enable memory in the "Config Role" page first',
|
'home.enableMemory': 'Please enable memory in the "Config Role" page first',
|
||||||
|
|||||||
@@ -736,7 +736,12 @@ export default {
|
|||||||
'home.justNow': 'Agora mesmo',
|
'home.justNow': 'Agora mesmo',
|
||||||
'home.minutesAgo': 'Há {minutes} minutos',
|
'home.minutesAgo': 'Há {minutes} minutos',
|
||||||
'home.hoursAgo': 'Há {hours} horas e {minutes} minutos',
|
'home.hoursAgo': 'Há {hours} horas e {minutes} minutos',
|
||||||
'home.confirmDeleteAgent': 'Tem certeza de que deseja excluir este agente?',
|
'home.deleteConfirmTitle': 'Excluir Agente',
|
||||||
|
'home.confirmDeleteAgent': 'A exclusão não pode ser desfeita. Digite o nome do agente "{agentName}" para confirmar.',
|
||||||
|
'home.deleteAgentNamePlaceholder': 'Digite o nome do agente',
|
||||||
|
'home.deleteAgentNameMismatch': 'O nome do agente não corresponde',
|
||||||
|
'home.deleteAgentPasteForbidden': 'Digite o nome do agente manualmente. Colar não é permitido.',
|
||||||
|
'home.deleteAgentMissingInfo': 'Não foi possível confirmar as informações do agente. Atualize a página e tente novamente.',
|
||||||
'home.deleteSuccess': 'Excluído com sucesso',
|
'home.deleteSuccess': 'Excluído com sucesso',
|
||||||
'home.deleteFailed': 'Falha ao excluir',
|
'home.deleteFailed': 'Falha ao excluir',
|
||||||
'home.enableMemory': 'Por favor, ative a memória na página "Configurar Papel" primeiro',
|
'home.enableMemory': 'Por favor, ative a memória na página "Configurar Papel" primeiro',
|
||||||
|
|||||||
@@ -736,7 +736,12 @@ export default {
|
|||||||
'home.justNow': 'Vừa xong',
|
'home.justNow': 'Vừa xong',
|
||||||
'home.minutesAgo': '{minutes} phút trước',
|
'home.minutesAgo': '{minutes} phút trước',
|
||||||
'home.hoursAgo': '{hours} giờ {minutes} phút trước',
|
'home.hoursAgo': '{hours} giờ {minutes} phút trước',
|
||||||
'home.confirmDeleteAgent': 'Bạn có chắc chắn muốn xóa tác nhân này?',
|
'home.deleteConfirmTitle': 'Xóa đại lý',
|
||||||
|
'home.confirmDeleteAgent': 'Không thể hoàn tác sau khi xóa. Nhập tên tác nhân "{agentName}" để xác nhận.',
|
||||||
|
'home.deleteAgentNamePlaceholder': 'Nhập tên tác nhân',
|
||||||
|
'home.deleteAgentNameMismatch': 'Tên tác nhân không khớp',
|
||||||
|
'home.deleteAgentPasteForbidden': 'Vui lòng nhập thủ công tên tác nhân. Không được dán.',
|
||||||
|
'home.deleteAgentMissingInfo': 'Không thể xác nhận thông tin tác nhân. Vui lòng tải lại rồi thử lại.',
|
||||||
'home.deleteSuccess': 'Xóa thành công',
|
'home.deleteSuccess': 'Xóa thành công',
|
||||||
'home.deleteFailed': 'Xóa thất bại',
|
'home.deleteFailed': 'Xóa thất bại',
|
||||||
'home.enableMemory': 'Vui lòng bật bộ nhớ trong trang \"Cấu hình vai trò\" trước',
|
'home.enableMemory': 'Vui lòng bật bộ nhớ trong trang \"Cấu hình vai trò\" trước',
|
||||||
|
|||||||
@@ -736,7 +736,12 @@ export default {
|
|||||||
'home.justNow': '刚刚',
|
'home.justNow': '刚刚',
|
||||||
'home.minutesAgo': '{minutes}分钟前',
|
'home.minutesAgo': '{minutes}分钟前',
|
||||||
'home.hoursAgo': '{hours}小时{minutes}分钟前',
|
'home.hoursAgo': '{hours}小时{minutes}分钟前',
|
||||||
'home.confirmDeleteAgent': '确定要删除该智能体吗?',
|
'home.deleteConfirmTitle': '删除智能体',
|
||||||
|
'home.confirmDeleteAgent': '删除后无法恢复。请输入智能体名称“{agentName}”确认删除。',
|
||||||
|
'home.deleteAgentNamePlaceholder': '请输入智能体名称',
|
||||||
|
'home.deleteAgentNameMismatch': '输入的智能体名称不匹配',
|
||||||
|
'home.deleteAgentPasteForbidden': '请手动输入智能体名称,不允许粘贴',
|
||||||
|
'home.deleteAgentMissingInfo': '无法确认智能体信息,请刷新后重试',
|
||||||
'home.deleteSuccess': '删除成功',
|
'home.deleteSuccess': '删除成功',
|
||||||
'home.deleteFailed': '删除失败',
|
'home.deleteFailed': '删除失败',
|
||||||
'home.enableMemory': '请先在“配置角色”界面开启记忆',
|
'home.enableMemory': '请先在“配置角色”界面开启记忆',
|
||||||
|
|||||||
@@ -736,7 +736,12 @@ export default {
|
|||||||
'home.justNow': '剛剛',
|
'home.justNow': '剛剛',
|
||||||
'home.minutesAgo': '{minutes}分鐘前',
|
'home.minutesAgo': '{minutes}分鐘前',
|
||||||
'home.hoursAgo': '{hours}小時{minutes}分鐘前',
|
'home.hoursAgo': '{hours}小時{minutes}分鐘前',
|
||||||
'home.confirmDeleteAgent': '確定要刪除該智能體嗎?',
|
'home.deleteConfirmTitle': '刪除智能體',
|
||||||
|
'home.confirmDeleteAgent': '刪除後無法復原。請輸入智能體名稱「{agentName}」確認刪除。',
|
||||||
|
'home.deleteAgentNamePlaceholder': '請輸入智能體名稱',
|
||||||
|
'home.deleteAgentNameMismatch': '輸入的智能體名稱不匹配',
|
||||||
|
'home.deleteAgentPasteForbidden': '請手動輸入智能體名稱,不允許貼上',
|
||||||
|
'home.deleteAgentMissingInfo': '無法確認智能體資訊,請重新整理後再試',
|
||||||
'home.deleteSuccess': '刪除成功',
|
'home.deleteSuccess': '刪除成功',
|
||||||
'home.deleteFailed': '刪除失敗',
|
'home.deleteFailed': '刪除失敗',
|
||||||
'home.enableMemory': '請先在「配置角色」介面開啟記憶',
|
'home.enableMemory': '請先在「配置角色」介面開啟記憶',
|
||||||
|
|||||||
@@ -73,6 +73,60 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<AddWisdomBodyDialog :visible.sync="addDeviceDialogVisible" @confirm="handleWisdomBodyAdded" />
|
<AddWisdomBodyDialog :visible.sync="addDeviceDialogVisible" @confirm="handleWisdomBodyAdded" />
|
||||||
|
<el-dialog
|
||||||
|
:visible.sync="deleteAgentDialogVisible"
|
||||||
|
:close-on-click-modal="!isDeletingAgent"
|
||||||
|
:close-on-press-escape="!isDeletingAgent"
|
||||||
|
:show-close="!isDeletingAgent"
|
||||||
|
width="520px"
|
||||||
|
append-to-body
|
||||||
|
class="delete-agent-dialog"
|
||||||
|
@closed="resetDeleteAgentDialog"
|
||||||
|
>
|
||||||
|
<template slot="title">
|
||||||
|
<div class="delete-agent-title">
|
||||||
|
<img src="@/assets/knowledge-base/level.png" class="delete-agent-title-icon" />
|
||||||
|
<span>{{ $t('home.deleteConfirmTitle') }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div class="delete-agent-content">
|
||||||
|
<i class="el-icon-warning-outline delete-agent-warning"></i>
|
||||||
|
<div class="delete-agent-message">
|
||||||
|
<div class="delete-agent-copy-guard" @copy.prevent @cut.prevent @contextmenu.prevent>
|
||||||
|
{{ $t('home.confirmDeleteAgent', { agentName: deleteTargetAgentName }) }}
|
||||||
|
</div>
|
||||||
|
<div class="delete-agent-target delete-agent-copy-guard" @copy.prevent @cut.prevent @contextmenu.prevent>
|
||||||
|
{{ deleteTargetAgentName }}
|
||||||
|
</div>
|
||||||
|
<el-input
|
||||||
|
ref="deleteAgentConfirmInput"
|
||||||
|
v-model="deleteAgentConfirmText"
|
||||||
|
class="delete-agent-input"
|
||||||
|
:placeholder="$t('home.deleteAgentNamePlaceholder')"
|
||||||
|
clearable
|
||||||
|
@paste.native.prevent="handleDeleteAgentPaste"
|
||||||
|
@drop.native.prevent="handleDeleteAgentPaste"
|
||||||
|
@contextmenu.native.prevent
|
||||||
|
@keyup.enter.native="confirmDeleteAgent"
|
||||||
|
/>
|
||||||
|
<div v-if="deleteAgentConfirmText && !isDeleteAgentNameMatched" class="delete-agent-helper">
|
||||||
|
{{ $t('home.deleteAgentNameMismatch') }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<span slot="footer" class="delete-agent-footer">
|
||||||
|
<el-button class="delete-agent-cancel" :disabled="isDeletingAgent" @click="closeDeleteAgentDialog">{{ $t('button.cancel') }}</el-button>
|
||||||
|
<el-button
|
||||||
|
class="delete-agent-confirm"
|
||||||
|
type="primary"
|
||||||
|
:loading="isDeletingAgent"
|
||||||
|
:disabled="!isDeleteAgentNameMatched"
|
||||||
|
@click="confirmDeleteAgent"
|
||||||
|
>
|
||||||
|
{{ $t('button.ok') }}
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
</el-main>
|
</el-main>
|
||||||
<el-footer>
|
<el-footer>
|
||||||
<version-footer />
|
<version-footer />
|
||||||
@@ -116,6 +170,11 @@ export default {
|
|||||||
search: "",
|
search: "",
|
||||||
showHistory: false,
|
showHistory: false,
|
||||||
searchHistory: [],
|
searchHistory: [],
|
||||||
|
deleteAgentDialogVisible: false,
|
||||||
|
deleteTargetAgentId: '',
|
||||||
|
deleteTargetAgentName: '',
|
||||||
|
deleteAgentConfirmText: '',
|
||||||
|
isDeletingAgent: false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -123,6 +182,9 @@ export default {
|
|||||||
...mapState({
|
...mapState({
|
||||||
userInfo: (state) => state.userInfo,
|
userInfo: (state) => state.userInfo,
|
||||||
}),
|
}),
|
||||||
|
isDeleteAgentNameMatched() {
|
||||||
|
return !!this.deleteTargetAgentName && this.deleteAgentConfirmText === this.deleteTargetAgentName;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
async mounted() {
|
async mounted() {
|
||||||
@@ -193,27 +255,61 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
// 删除智能体
|
// 删除智能体
|
||||||
handleDeleteAgent(agentId) {
|
handleDeleteAgent(device) {
|
||||||
this.$confirm(this.$t('home.confirmDeleteAgent'), '提示', {
|
const targetAgent = typeof device === 'object'
|
||||||
confirmButtonText: this.$t('button.ok'),
|
? device
|
||||||
cancelButtonText: this.$t('button.cancel'),
|
: this.devices.find((item) => item.agentId === device || item.id === device);
|
||||||
type: 'warning'
|
const agentId = targetAgent?.agentId || targetAgent?.id;
|
||||||
}).then(() => {
|
const agentName = targetAgent?.agentName || '';
|
||||||
Api.agent.deleteAgent(agentId, (res) => {
|
|
||||||
if (res.data.code === 0) {
|
if (!agentId || !agentName) {
|
||||||
this.$message.success({
|
this.$message.error(this.$t('home.deleteAgentMissingInfo'));
|
||||||
message: this.$t('home.deleteSuccess'),
|
return;
|
||||||
showClose: true
|
}
|
||||||
});
|
|
||||||
this.fetchAgentList(); // 刷新列表
|
this.deleteTargetAgentId = agentId;
|
||||||
} else {
|
this.deleteTargetAgentName = agentName;
|
||||||
this.$message.error({
|
this.deleteAgentConfirmText = '';
|
||||||
message: res.data.msg || this.$t('home.deleteFailed'),
|
this.deleteAgentDialogVisible = true;
|
||||||
showClose: true
|
this.$nextTick(() => {
|
||||||
});
|
if (this.$refs.deleteAgentConfirmInput) {
|
||||||
}
|
this.$refs.deleteAgentConfirmInput.focus();
|
||||||
});
|
}
|
||||||
}).catch(() => { });
|
});
|
||||||
|
},
|
||||||
|
handleDeleteAgentPaste() {
|
||||||
|
this.$message.warning(this.$t('home.deleteAgentPasteForbidden'));
|
||||||
|
},
|
||||||
|
closeDeleteAgentDialog() {
|
||||||
|
if (this.isDeletingAgent) return;
|
||||||
|
this.deleteAgentDialogVisible = false;
|
||||||
|
},
|
||||||
|
resetDeleteAgentDialog() {
|
||||||
|
this.deleteTargetAgentId = '';
|
||||||
|
this.deleteTargetAgentName = '';
|
||||||
|
this.deleteAgentConfirmText = '';
|
||||||
|
this.isDeletingAgent = false;
|
||||||
|
},
|
||||||
|
confirmDeleteAgent() {
|
||||||
|
if (!this.isDeleteAgentNameMatched || this.isDeletingAgent) return;
|
||||||
|
|
||||||
|
this.isDeletingAgent = true;
|
||||||
|
Api.agent.deleteAgent(this.deleteTargetAgentId, (res) => {
|
||||||
|
this.isDeletingAgent = false;
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
this.$message.success({
|
||||||
|
message: this.$t('home.deleteSuccess'),
|
||||||
|
showClose: true
|
||||||
|
});
|
||||||
|
this.deleteAgentDialogVisible = false;
|
||||||
|
this.fetchAgentList(); // 刷新列表
|
||||||
|
} else {
|
||||||
|
this.$message.error({
|
||||||
|
message: res.data.msg || this.$t('home.deleteFailed'),
|
||||||
|
showClose: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
handleShowChatHistory({ agentId, agentName }) {
|
handleShowChatHistory({ agentId, agentName }) {
|
||||||
this.currentAgentId = agentId;
|
this.currentAgentId = agentId;
|
||||||
@@ -641,4 +737,169 @@ export default {
|
|||||||
rgba(255, 255, 255, 0));
|
rgba(255, 255, 255, 0));
|
||||||
animation: shimmer 1.5s infinite;
|
animation: shimmer 1.5s infinite;
|
||||||
}
|
}
|
||||||
</style>
|
|
||||||
|
.delete-agent-content {
|
||||||
|
display: flex;
|
||||||
|
gap: 12px;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-title {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #2f3a5f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-title-icon {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-warning {
|
||||||
|
color: #e6a23c;
|
||||||
|
font-size: 24px;
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-message {
|
||||||
|
flex: 1;
|
||||||
|
color: #606266;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-target {
|
||||||
|
margin-top: 14px;
|
||||||
|
padding: 10px 12px;
|
||||||
|
border: 1px solid #ebeef5;
|
||||||
|
border-radius: 4px;
|
||||||
|
background: #f5f7fa;
|
||||||
|
color: #303133;
|
||||||
|
font-weight: 600;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-copy-guard {
|
||||||
|
user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-input {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-input::v-deep .el-input__inner {
|
||||||
|
height: 42px;
|
||||||
|
border-color: #d8dce8;
|
||||||
|
border-radius: 4px;
|
||||||
|
background: #fff;
|
||||||
|
color: #303133;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-helper {
|
||||||
|
min-height: 18px;
|
||||||
|
margin-top: 6px;
|
||||||
|
color: #f56c6c;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-footer {
|
||||||
|
display: inline-flex;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-dialog::v-deep .el-dialog {
|
||||||
|
border-radius: 10px;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-dialog::v-deep .el-dialog__header {
|
||||||
|
padding: 16px 20px 12px;
|
||||||
|
background: linear-gradient(135deg, #e2eeff, #edeafe);
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-dialog::v-deep .el-dialog__headerbtn {
|
||||||
|
top: 12px;
|
||||||
|
right: 16px;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
border: none;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: #fff;
|
||||||
|
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-dialog::v-deep .el-dialog__headerbtn .el-dialog__close {
|
||||||
|
font-size: 18px;
|
||||||
|
color: #666;
|
||||||
|
position: static;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-dialog::v-deep .el-dialog__headerbtn:hover {
|
||||||
|
background: #fff;
|
||||||
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-dialog::v-deep .el-dialog__headerbtn:hover .el-dialog__close {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-dialog::v-deep .el-dialog__body {
|
||||||
|
padding: 28px 32px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-dialog::v-deep .el-dialog__footer {
|
||||||
|
padding: 12px 32px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-cancel,
|
||||||
|
.delete-agent-confirm {
|
||||||
|
min-width: 92px;
|
||||||
|
height: 40px;
|
||||||
|
padding: 0 20px;
|
||||||
|
border-radius: 6px;
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-cancel {
|
||||||
|
color: #fff;
|
||||||
|
background: #4d94f7;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-cancel:hover,
|
||||||
|
.delete-agent-cancel:focus {
|
||||||
|
color: #fff;
|
||||||
|
background: #4d94f7;
|
||||||
|
opacity: 0.88;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-confirm {
|
||||||
|
background: linear-gradient(to right, #4a7cfd, #8154fc);
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-confirm:hover,
|
||||||
|
.delete-agent-confirm:focus {
|
||||||
|
background: linear-gradient(to right, #4a7cfd, #8154fc);
|
||||||
|
opacity: 0.88;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-agent-confirm.is-disabled,
|
||||||
|
.delete-agent-confirm.is-disabled:hover,
|
||||||
|
.delete-agent-confirm.is-disabled:focus {
|
||||||
|
background: linear-gradient(to right, #4a7cfd, #8154fc);
|
||||||
|
border: none;
|
||||||
|
opacity: 0.45;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user