Skip to content

Commit 41a0b1a

Browse files
committed
fix: add sync messages for user synchronization feedback in chat-user.ts and SyncUsersDialog.vue
1 parent 816825d commit 41a0b1a

File tree

4 files changed

+47
-15
lines changed

4 files changed

+47
-15
lines changed

ui/src/locales/lang/en-US/views/chat-user.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,10 @@ export default {
2020
confirmMessage: 'All members in this group will be removed after deletion. Proceed with caution!',
2121
},
2222
batchDeleteMember: 'Remove selected {count} members?',
23+
},
24+
syncMessage: {
25+
title: 'Successfully synced {count} users',
26+
usernameExist: 'The following usernames already exist:',
27+
nicknameExist: 'The following nicknames already exist:',
2328
}
24-
}
29+
}

ui/src/locales/lang/zh-CN/views/chat-user.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,10 @@ export default {
2020
confirmMessage: '删除后,该用户组下的成员将全部移除,请谨慎操作!',
2121
},
2222
batchDeleteMember: '是否移除选中的 {count} 个成员?',
23+
},
24+
syncMessage: {
25+
title: '成功同步 {count} 个用户',
26+
usernameExist: '以下用户名已存在:',
27+
nicknameExist: '以下姓名已存在:',
2328
}
2429
}

ui/src/locales/lang/zh-Hant/views/chat-user.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,10 @@ export default {
2020
confirmMessage: '刪除後,該用戶組下的成員將全部移除,請謹慎操作!',
2121
},
2222
batchDeleteMember: '是否移除選中的 {count} 個成員?',
23+
},
24+
syncMessage: {
25+
title: '成功同步 {count} 個用戶',
26+
usernameExist: '以下用戶名已存在:',
27+
nicknameExist: '以下姓名已存在:',
2328
}
24-
}
29+
}

ui/src/views/system-chat-user/chat-user/component/SyncUsersDialog.vue

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
<template>
22
<el-dialog v-model="dialogVisible" :close-on-click-modal="false" :close-on-press-escape="false"
3-
:destroy-on-close="true" width="600">
3+
:destroy-on-close="true" width="600">
44
<template #header>
55
<h4 class="mb-8 medium">{{ t('views.chatUser.syncUsers') }}</h4>
66
<div class="color-secondary lighter">{{ t('views.chatUser.syncUsersTip') }}</div>
77
</template>
8-
<el-form label-position="top" ref="formRef" :rules="rules" :model="form" require-asterisk-position="right">
8+
<el-form label-position="top" ref="formRef" :rules="rules" :model="form"
9+
require-asterisk-position="right">
910
<el-form-item :label="$t('views.userManage.source.label')" prop="sync_type">
1011
<el-select v-model="form.sync_type" :placeholder="$t('common.selectPlaceholder')">
1112
<el-option :label="t('views.userManage.source.local')" value="LOCAL">
@@ -25,10 +26,10 @@
2526
</template>
2627

2728
<script setup lang="ts">
28-
import { ref, reactive } from 'vue'
29-
import type { FormInstance } from 'element-plus'
30-
import { MsgSuccess } from '@/utils/message'
31-
import { t } from '@/locales'
29+
import {ref, reactive} from 'vue'
30+
import type {FormInstance} from 'element-plus'
31+
import {MsgError, MsgSuccess} from '@/utils/message'
32+
import {t} from '@/locales'
3233
import userManageApi from '@/api/system/chat-user'
3334
3435
const emit = defineEmits<{
@@ -46,29 +47,45 @@ const form = ref<{
4647
})
4748
4849
function open() {
49-
form.value = { ...defaultForm }
50+
form.value = {...defaultForm}
5051
dialogVisible.value = true
5152
}
5253
5354
const formRef = ref<FormInstance>();
5455
5556
const rules = reactive({
56-
sync_type: [{ required: true, message: t('common.selectPlaceholder'), trigger: 'blur' }],
57+
sync_type: [{required: true, message: t('common.selectPlaceholder'), trigger: 'blur'}],
5758
})
5859
5960
const loading = ref<boolean>(false)
6061
const submit = async (formEl: FormInstance | undefined) => {
6162
if (!formEl) return
6263
await formEl.validate((valid) => {
6364
if (valid) {
64-
userManageApi.batchSync(form.value.sync_type, loading).then(() => {
65-
MsgSuccess(t('common.syncSuccess'))
66-
emit('refresh')
67-
dialogVisible.value = false
65+
userManageApi.batchSync(form.value.sync_type, loading).then((res) => {
66+
if (res.data) {
67+
const count = res.data.success_count
68+
if (res.data.conflict_users && res.data.conflict_users.length > 0) {
69+
// 遍历res.data.conflict_users, 他是一个数组里面是对象
70+
let ErrorMsg = ''
71+
res.data.conflict_users.forEach((item: any) => {
72+
if (item.type === 'username') {
73+
ErrorMsg += '\n\n' + t('views.chatUser.syncMessage.usernameExist') + " [ " + item.users.join(',') + '\n' + ' ]'
74+
}
75+
if (item.type === 'nick_name') {
76+
ErrorMsg += '\n\n' + t('views.chatUser.syncMessage.nicknameExist') + " [ " + item.users.join(',') + '\n' + ' ]'
77+
}
78+
})
79+
MsgSuccess(t('views.chatUser.syncMessage.title', {count: count}) + ErrorMsg)
80+
emit('refresh')
81+
dialogVisible.value = false
82+
}
83+
}
84+
6885
})
6986
}
7087
})
7188
}
7289
73-
defineExpose({ open })
90+
defineExpose({open})
7491
</script>

0 commit comments

Comments
 (0)