fix: 右键删除国际化 + 移除连接卡片左键事件

- 修复删除确认弹窗使用正确的 i18n key (connection.deleteConfirm)
- 删除按钮使用 common.delete 而非不存在的 connection.delete
- 新增 switchTo i18n key (5 种语言)
- ConnectionCard 移除 @click 左键事件
- 右键菜单新增「切换到」选项 (已连接但非活跃时显示)
This commit is contained in:
2026-07-11 00:30:47 +08:00
parent b032c15164
commit 260cbb36d0
7 changed files with 23 additions and 18 deletions
@@ -15,18 +15,6 @@ const statusColor = computed(() => {
const assignedColor = computed(() => props.connection.color || '') const assignedColor = computed(() => props.connection.color || '')
function handleClick() {
if (isConn.value) {
if (isActive.value) {
connStore.disconnect()
} else {
connStore.switchTo(props.connection.id)
}
} else {
connStore.connect(props.connection)
}
}
function onDragStart(e: DragEvent) { function onDragStart(e: DragEvent) {
if (e.dataTransfer) { if (e.dataTransfer) {
e.dataTransfer.setData('text/plain', props.connection.id) e.dataTransfer.setData('text/plain', props.connection.id)
@@ -45,7 +33,6 @@ function onDragStart(e: DragEvent) {
'border-left': assignedColor ? `3px solid ${assignedColor}` : undefined, 'border-left': assignedColor ? `3px solid ${assignedColor}` : undefined,
}" }"
draggable="true" draggable="true"
@click="handleClick"
@dragstart="onDragStart" @dragstart="onDragStart"
> >
<div class="card-status" /> <div class="card-status" />
+18 -5
View File
@@ -19,6 +19,9 @@ const ctxMenu = ref<{ visible: boolean; x: number; y: number; conn: ConnectionCo
const ctxIsConnected = computed(() => const ctxIsConnected = computed(() =>
ctxMenu.value.conn ? connStore.isConnectedById(ctxMenu.value.conn.id) : false, ctxMenu.value.conn ? connStore.isConnectedById(ctxMenu.value.conn.id) : false,
) )
const ctxIsActive = computed(() =>
ctxMenu.value.conn ? connStore.activeId === ctxMenu.value.conn.id : false,
)
function onContextMenu(e: MouseEvent, conn: ConnectionConfig) { function onContextMenu(e: MouseEvent, conn: ConnectionConfig) {
ctxMenu.value = { visible: true, x: e.clientX, y: e.clientY, conn } ctxMenu.value = { visible: true, x: e.clientX, y: e.clientY, conn }
@@ -38,6 +41,11 @@ function ctxDisconnect() {
closeCtxMenu() closeCtxMenu()
} }
function ctxSwitch() {
if (ctxMenu.value.conn) connStore.switchTo(ctxMenu.value.conn.id)
closeCtxMenu()
}
function ctxEdit() { function ctxEdit() {
if (ctxMenu.value.conn) emit('edit', ctxMenu.value.conn) if (ctxMenu.value.conn) emit('edit', ctxMenu.value.conn)
closeCtxMenu() closeCtxMenu()
@@ -65,11 +73,11 @@ async function ctxDelete() {
if (!conn) return if (!conn) return
try { try {
await ElMessageBox.confirm( await ElMessageBox.confirm(
`${t('connection.delete')}: ${conn.name}?`, t('connection.deleteConfirm'),
t('common.confirm'), t('common.confirm'),
{ {
type: 'warning', type: 'warning',
confirmButtonText: t('connection.delete'), confirmButtonText: t('common.delete'),
cancelButtonText: t('common.cancel'), cancelButtonText: t('common.cancel'),
}, },
) )
@@ -210,9 +218,14 @@ async function handleImport() {
<button class="ctx-item" @click="ctxConnect" v-if="!ctxIsConnected"> <button class="ctx-item" @click="ctxConnect" v-if="!ctxIsConnected">
{{ t('connection.connect') }} {{ t('connection.connect') }}
</button> </button>
<button class="ctx-item" @click="ctxDisconnect" v-else> <template v-else>
{{ t('connection.disconnect') }} <button class="ctx-item" @click="ctxSwitch" v-if="!ctxIsActive">
</button> {{ t('connection.switchTo') }}
</button>
<button class="ctx-item" @click="ctxDisconnect">
{{ t('connection.disconnect') }}
</button>
</template>
<div class="ctx-divider" /> <div class="ctx-divider" />
<button class="ctx-item" @click="ctxEdit">{{ t('connection.edit') }}</button> <button class="ctx-item" @click="ctxEdit">{{ t('connection.edit') }}</button>
<button class="ctx-item" @click="ctxDuplicate">{{ t('connection.duplicate') }}</button> <button class="ctx-item" @click="ctxDuplicate">{{ t('connection.duplicate') }}</button>
+1
View File
@@ -55,6 +55,7 @@ export default {
selectFile: 'Datei auswählen', selectFile: 'Datei auswählen',
connect: 'Verbinden', connect: 'Verbinden',
disconnect: 'Trennen', disconnect: 'Trennen',
switchTo: 'Wechseln zu',
deleteConfirm: 'Diese Verbindung löschen?', deleteConfirm: 'Diese Verbindung löschen?',
testSuccess: 'Erfolgreich verbunden', testSuccess: 'Erfolgreich verbunden',
testFailed: 'Verbindung fehlgeschlagen', testFailed: 'Verbindung fehlgeschlagen',
+1
View File
@@ -55,6 +55,7 @@ export default {
selectFile: 'Select File', selectFile: 'Select File',
connect: 'Connect', connect: 'Connect',
disconnect: 'Disconnect', disconnect: 'Disconnect',
switchTo: 'Switch to',
deleteConfirm: 'Delete this connection?', deleteConfirm: 'Delete this connection?',
testSuccess: 'Connected successfully', testSuccess: 'Connected successfully',
testFailed: 'Connection failed', testFailed: 'Connection failed',
+1
View File
@@ -55,6 +55,7 @@ export default {
selectFile: 'ファイルを選択', selectFile: 'ファイルを選択',
connect: '接続', connect: '接続',
disconnect: '切断', disconnect: '切断',
switchTo: '切り替え',
deleteConfirm: 'この接続を削除しますか?', deleteConfirm: 'この接続を削除しますか?',
testSuccess: '接続に成功しました', testSuccess: '接続に成功しました',
testFailed: '接続に失敗しました', testFailed: '接続に失敗しました',
+1
View File
@@ -55,6 +55,7 @@ export default {
selectFile: '파일 선택', selectFile: '파일 선택',
connect: '연결', connect: '연결',
disconnect: '연결 해제', disconnect: '연결 해제',
switchTo: '전환',
deleteConfirm: '이 연결을 삭제하시겠습니까?', deleteConfirm: '이 연결을 삭제하시겠습니까?',
testSuccess: '연결 성공', testSuccess: '연결 성공',
testFailed: '연결 실패', testFailed: '연결 실패',
+1
View File
@@ -55,6 +55,7 @@ export default {
selectFile: '选择文件', selectFile: '选择文件',
connect: '连接', connect: '连接',
disconnect: '断开', disconnect: '断开',
switchTo: '切换到',
deleteConfirm: '删除此连接?', deleteConfirm: '删除此连接?',
testSuccess: '连接成功', testSuccess: '连接成功',
testFailed: '连接失败', testFailed: '连接失败',