feat(admin): conversation scene and account binding by scene
This commit is contained in:
@@ -28,6 +28,11 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="channelType" label="渠道" />
|
||||
<el-table-column prop="conversationScene" label="场景" width="100">
|
||||
<template #default="{ row }">
|
||||
{{ formatConversationScene(row.conversationScene) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="channelConversationId" label="渠道会话ID" show-overflow-tooltip />
|
||||
<el-table-column prop="conversationName" label="名称" />
|
||||
<el-table-column prop="ownerAccountId" label="负责人">
|
||||
@@ -71,6 +76,12 @@
|
||||
<el-form-item label="渠道">
|
||||
<el-input v-model="dialogForm.channelType" placeholder="wecom" />
|
||||
</el-form-item>
|
||||
<el-form-item label="场景">
|
||||
<el-select v-model="dialogForm.conversationScene" placeholder="选择场景" style="width: 100%">
|
||||
<el-option label="内部群" :value="1" />
|
||||
<el-option label="外部群" :value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="渠道会话ID">
|
||||
<el-input v-model="dialogForm.channelConversationId" placeholder="roomid_xxx" />
|
||||
</el-form-item>
|
||||
@@ -114,6 +125,12 @@
|
||||
<el-form-item label="渠道">
|
||||
<el-input v-model="dialogForm.channelType" placeholder="wecom" />
|
||||
</el-form-item>
|
||||
<el-form-item label="场景">
|
||||
<el-select v-model="dialogForm.conversationScene" placeholder="选择场景" style="width: 100%">
|
||||
<el-option label="内部群" :value="1" />
|
||||
<el-option label="外部群" :value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="渠道会话ID">
|
||||
<el-input v-model="dialogForm.channelConversationId" :disabled="isEdit" placeholder="roomid_xxx" />
|
||||
</el-form-item>
|
||||
@@ -270,6 +287,7 @@ const editingId = ref<number | null>(null)
|
||||
const dialogForm = reactive({
|
||||
conversationType: 2,
|
||||
channelType: 'wecom',
|
||||
conversationScene: undefined as number | undefined,
|
||||
channelConversationId: '',
|
||||
conversationName: '',
|
||||
ownerAccountId: undefined as number | undefined,
|
||||
@@ -311,6 +329,7 @@ watch([searchQuery, typeFilter], () => {
|
||||
function resetDialogForm() {
|
||||
dialogForm.conversationType = 2
|
||||
dialogForm.channelType = 'wecom'
|
||||
dialogForm.conversationScene = undefined
|
||||
dialogForm.channelConversationId = ''
|
||||
dialogForm.conversationName = ''
|
||||
dialogForm.ownerAccountId = undefined
|
||||
@@ -320,6 +339,7 @@ function resetDialogForm() {
|
||||
function fillDialogForm(row: any) {
|
||||
dialogForm.conversationType = row.conversationType ?? 2
|
||||
dialogForm.channelType = row.channelType ?? 'wecom'
|
||||
dialogForm.conversationScene = row.conversationScene ?? undefined
|
||||
dialogForm.channelConversationId = row.channelConversationId ?? ''
|
||||
dialogForm.conversationName = row.conversationName ?? ''
|
||||
dialogForm.ownerAccountId = row.ownerAccountId
|
||||
@@ -359,11 +379,14 @@ function formatAccountName(id: number | undefined) {
|
||||
}
|
||||
|
||||
const filteredBindAccounts = computed(() => {
|
||||
const channelType = currentBindConversation.value?.channelType
|
||||
if (!channelType) return accounts.value
|
||||
return accounts.value.filter((a: any) =>
|
||||
a.channelType?.toLowerCase() === channelType?.toLowerCase()
|
||||
)
|
||||
const scene = currentBindConversation.value?.conversationScene
|
||||
if (scene === 1) {
|
||||
return accounts.value.filter((a: any) => a.accountType === 6)
|
||||
}
|
||||
if (scene === 2) {
|
||||
return accounts.value.filter((a: any) => a.accountType === 3)
|
||||
}
|
||||
return accounts.value
|
||||
})
|
||||
|
||||
function formatConversationType(type: number | undefined) {
|
||||
@@ -372,6 +395,12 @@ function formatConversationType(type: number | undefined) {
|
||||
return type ?? '-'
|
||||
}
|
||||
|
||||
function formatConversationScene(scene: number | undefined) {
|
||||
if (scene === 1) return '内部群'
|
||||
if (scene === 2) return '外部群'
|
||||
return scene ?? '-'
|
||||
}
|
||||
|
||||
function formatParticipantType(type: number | undefined) {
|
||||
if (type === 1) return '群主'
|
||||
return '成员'
|
||||
@@ -447,6 +476,7 @@ async function handleSave() {
|
||||
const payload = {
|
||||
conversationType: dialogForm.conversationType,
|
||||
channelType: dialogForm.channelType,
|
||||
conversationScene: dialogForm.conversationScene,
|
||||
channelConversationId: dialogForm.channelConversationId,
|
||||
conversationName: dialogForm.conversationName,
|
||||
ownerAccountId: dialogForm.ownerAccountId,
|
||||
@@ -473,6 +503,7 @@ async function handleStatusChange(row: any, val: any) {
|
||||
await updateConversation(row.id, {
|
||||
conversationType: row.conversationType,
|
||||
channelType: row.channelType,
|
||||
conversationScene: row.conversationScene,
|
||||
channelConversationId: row.channelConversationId,
|
||||
conversationName: row.conversationName,
|
||||
ownerAccountId: row.ownerAccountId,
|
||||
|
||||
Reference in New Issue
Block a user