feat(ui): conversation account binding for send/receive primary/backup

- Filter account selector by conversation channelType
- Add sortOrder priority input
- Use currentBindConversation ref for binding context
This commit is contained in:
2026-07-08 17:48:31 +08:00
parent fc6dbb2ca3
commit ec0733cb28

View File

@@ -95,7 +95,7 @@
<el-form-item label="账号">
<el-select v-model="bindAccountForm.accountId" placeholder="选择账号" style="width: 100%">
<el-option
v-for="a in accounts"
v-for="a in filteredBindAccounts"
:key="a.id"
:label="a.accountName"
:value="a.id"
@@ -110,6 +110,9 @@
<el-option label="接收备用号" :value="4" />
</el-select>
</el-form-item>
<el-form-item label="优先级">
<el-input-number v-model="bindAccountForm.sortOrder" :min="0" style="width: 100%" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="bindAccountVisible = false">取消</el-button>
@@ -214,6 +217,12 @@ function formatAccountName(id: number | undefined) {
return accountMap.value.get(id) || id
}
const filteredBindAccounts = computed(() => {
const channelType = currentBindConversation.value?.channelType
if (!channelType) return accounts.value
return accounts.value.filter((a: any) => a.channelType === channelType)
})
function formatConversationType(type: number | undefined) {
if (type === 1) return '单聊'
if (type === 2) return '群聊'
@@ -312,23 +321,25 @@ async function handleDelete(row: any) {
}
const bindAccountVisible = ref(false)
const currentConversationId = ref<number | undefined>()
const currentBindConversation = ref<any>(null)
const bindAccountForm = reactive({
accountId: undefined as number | undefined,
bindingType: 1,
sortOrder: 0,
})
function openBindAccount(row: any) {
currentConversationId.value = row.id
currentBindConversation.value = row
bindAccountForm.accountId = undefined
bindAccountForm.bindingType = 1
bindAccountForm.sortOrder = 0
bindAccountVisible.value = true
}
async function handleBindAccount() {
if (!currentConversationId.value) return
if (!bindAccountForm.accountId || !currentBindConversation.value) return
try {
await bindConversationAccount(currentConversationId.value, bindAccountForm)
await bindConversationAccount(currentBindConversation.value.id, bindAccountForm)
ElMessage.success('绑定成功')
bindAccountVisible.value = false
await loadConversations()
@@ -337,6 +348,8 @@ async function handleBindAccount() {
}
}
const currentConversationId = ref<number | undefined>()
const bindTagsVisible = ref(false)
const bindTagsForm = reactive({
tagIds: [] as number[],