fix: add sync messages for user synchronization feedback in chat-user.ts and SyncUsersDialog.vue
This commit is contained in:
parent
816825d5de
commit
41a0b1adca
@ -20,5 +20,10 @@ export default {
|
|||||||
confirmMessage: 'All members in this group will be removed after deletion. Proceed with caution!',
|
confirmMessage: 'All members in this group will be removed after deletion. Proceed with caution!',
|
||||||
},
|
},
|
||||||
batchDeleteMember: 'Remove selected {count} members?',
|
batchDeleteMember: 'Remove selected {count} members?',
|
||||||
|
},
|
||||||
|
syncMessage: {
|
||||||
|
title: 'Successfully synced {count} users',
|
||||||
|
usernameExist: 'The following usernames already exist:',
|
||||||
|
nicknameExist: 'The following nicknames already exist:',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,5 +20,10 @@ export default {
|
|||||||
confirmMessage: '删除后,该用户组下的成员将全部移除,请谨慎操作!',
|
confirmMessage: '删除后,该用户组下的成员将全部移除,请谨慎操作!',
|
||||||
},
|
},
|
||||||
batchDeleteMember: '是否移除选中的 {count} 个成员?',
|
batchDeleteMember: '是否移除选中的 {count} 个成员?',
|
||||||
|
},
|
||||||
|
syncMessage: {
|
||||||
|
title: '成功同步 {count} 个用户',
|
||||||
|
usernameExist: '以下用户名已存在:',
|
||||||
|
nicknameExist: '以下姓名已存在:',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,5 +20,10 @@ export default {
|
|||||||
confirmMessage: '刪除後,該用戶組下的成員將全部移除,請謹慎操作!',
|
confirmMessage: '刪除後,該用戶組下的成員將全部移除,請謹慎操作!',
|
||||||
},
|
},
|
||||||
batchDeleteMember: '是否移除選中的 {count} 個成員?',
|
batchDeleteMember: '是否移除選中的 {count} 個成員?',
|
||||||
|
},
|
||||||
|
syncMessage: {
|
||||||
|
title: '成功同步 {count} 個用戶',
|
||||||
|
usernameExist: '以下用戶名已存在:',
|
||||||
|
nicknameExist: '以下姓名已存在:',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,11 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog v-model="dialogVisible" :close-on-click-modal="false" :close-on-press-escape="false"
|
<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>
|
<template #header>
|
||||||
<h4 class="mb-8 medium">{{ t('views.chatUser.syncUsers') }}</h4>
|
<h4 class="mb-8 medium">{{ t('views.chatUser.syncUsers') }}</h4>
|
||||||
<div class="color-secondary lighter">{{ t('views.chatUser.syncUsersTip') }}</div>
|
<div class="color-secondary lighter">{{ t('views.chatUser.syncUsersTip') }}</div>
|
||||||
</template>
|
</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-form-item :label="$t('views.userManage.source.label')" prop="sync_type">
|
||||||
<el-select v-model="form.sync_type" :placeholder="$t('common.selectPlaceholder')">
|
<el-select v-model="form.sync_type" :placeholder="$t('common.selectPlaceholder')">
|
||||||
<el-option :label="t('views.userManage.source.local')" value="LOCAL">
|
<el-option :label="t('views.userManage.source.local')" value="LOCAL">
|
||||||
@ -25,10 +26,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive } from 'vue'
|
import {ref, reactive} from 'vue'
|
||||||
import type { FormInstance } from 'element-plus'
|
import type {FormInstance} from 'element-plus'
|
||||||
import { MsgSuccess } from '@/utils/message'
|
import {MsgError, MsgSuccess} from '@/utils/message'
|
||||||
import { t } from '@/locales'
|
import {t} from '@/locales'
|
||||||
import userManageApi from '@/api/system/chat-user'
|
import userManageApi from '@/api/system/chat-user'
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
@ -46,14 +47,14 @@ const form = ref<{
|
|||||||
})
|
})
|
||||||
|
|
||||||
function open() {
|
function open() {
|
||||||
form.value = { ...defaultForm }
|
form.value = {...defaultForm}
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
const formRef = ref<FormInstance>();
|
const formRef = ref<FormInstance>();
|
||||||
|
|
||||||
const rules = reactive({
|
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)
|
const loading = ref<boolean>(false)
|
||||||
@ -61,14 +62,30 @@ const submit = async (formEl: FormInstance | undefined) => {
|
|||||||
if (!formEl) return
|
if (!formEl) return
|
||||||
await formEl.validate((valid) => {
|
await formEl.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
userManageApi.batchSync(form.value.sync_type, loading).then(() => {
|
userManageApi.batchSync(form.value.sync_type, loading).then((res) => {
|
||||||
MsgSuccess(t('common.syncSuccess'))
|
if (res.data) {
|
||||||
emit('refresh')
|
const count = res.data.success_count
|
||||||
dialogVisible.value = false
|
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>
|
</script>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user