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