fix: add sync messages for user synchronization feedback in chat-user.ts and SyncUsersDialog.vue

This commit is contained in:
wxg0103 2025-07-15 17:50:32 +08:00
parent 816825d5de
commit 41a0b1adca
4 changed files with 47 additions and 15 deletions

View File

@ -20,5 +20,10 @@ export default {
confirmMessage: 'All members in this group will be removed after deletion. Proceed with caution!',
},
batchDeleteMember: 'Remove selected {count} members?',
},
syncMessage: {
title: 'Successfully synced {count} users',
usernameExist: 'The following usernames already exist:',
nicknameExist: 'The following nicknames already exist:',
}
}
}

View File

@ -20,5 +20,10 @@ export default {
confirmMessage: '删除后,该用户组下的成员将全部移除,请谨慎操作!',
},
batchDeleteMember: '是否移除选中的 {count} 个成员?',
},
syncMessage: {
title: '成功同步 {count} 个用户',
usernameExist: '以下用户名已存在:',
nicknameExist: '以下姓名已存在:',
}
}

View File

@ -20,5 +20,10 @@ export default {
confirmMessage: '刪除後,該用戶組下的成員將全部移除,請謹慎操作!',
},
batchDeleteMember: '是否移除選中的 {count} 個成員?',
},
syncMessage: {
title: '成功同步 {count} 個用戶',
usernameExist: '以下用戶名已存在:',
nicknameExist: '以下姓名已存在:',
}
}
}

View File

@ -1,11 +1,12 @@
<template>
<el-dialog v-model="dialogVisible" :close-on-click-modal="false" :close-on-press-escape="false"
:destroy-on-close="true" width="600">
:destroy-on-close="true" width="600">
<template #header>
<h4 class="mb-8 medium">{{ t('views.chatUser.syncUsers') }}</h4>
<div class="color-secondary lighter">{{ t('views.chatUser.syncUsersTip') }}</div>
</template>
<el-form label-position="top" ref="formRef" :rules="rules" :model="form" require-asterisk-position="right">
<el-form label-position="top" ref="formRef" :rules="rules" :model="form"
require-asterisk-position="right">
<el-form-item :label="$t('views.userManage.source.label')" prop="sync_type">
<el-select v-model="form.sync_type" :placeholder="$t('common.selectPlaceholder')">
<el-option :label="t('views.userManage.source.local')" value="LOCAL">
@ -25,10 +26,10 @@
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import type { FormInstance } from 'element-plus'
import { MsgSuccess } from '@/utils/message'
import { t } from '@/locales'
import {ref, reactive} from 'vue'
import type {FormInstance} from 'element-plus'
import {MsgError, MsgSuccess} from '@/utils/message'
import {t} from '@/locales'
import userManageApi from '@/api/system/chat-user'
const emit = defineEmits<{
@ -46,14 +47,14 @@ const form = ref<{
})
function open() {
form.value = { ...defaultForm }
form.value = {...defaultForm}
dialogVisible.value = true
}
const formRef = ref<FormInstance>();
const rules = reactive({
sync_type: [{ required: true, message: t('common.selectPlaceholder'), trigger: 'blur' }],
sync_type: [{required: true, message: t('common.selectPlaceholder'), trigger: 'blur'}],
})
const loading = ref<boolean>(false)
@ -61,14 +62,30 @@ const submit = async (formEl: FormInstance | undefined) => {
if (!formEl) return
await formEl.validate((valid) => {
if (valid) {
userManageApi.batchSync(form.value.sync_type, loading).then(() => {
MsgSuccess(t('common.syncSuccess'))
emit('refresh')
dialogVisible.value = false
userManageApi.batchSync(form.value.sync_type, loading).then((res) => {
if (res.data) {
const count = res.data.success_count
if (res.data.conflict_users && res.data.conflict_users.length > 0) {
// res.data.conflict_users
let ErrorMsg = ''
res.data.conflict_users.forEach((item: any) => {
if (item.type === 'username') {
ErrorMsg += '\n\n' + t('views.chatUser.syncMessage.usernameExist') + " [ " + item.users.join(',') + '\n' + ' ]'
}
if (item.type === 'nick_name') {
ErrorMsg += '\n\n' + t('views.chatUser.syncMessage.nicknameExist') + " [ " + item.users.join(',') + '\n' + ' ]'
}
})
MsgSuccess(t('views.chatUser.syncMessage.title', {count: count}) + ErrorMsg)
emit('refresh')
dialogVisible.value = false
}
}
})
}
})
}
defineExpose({ open })
defineExpose({open})
</script>