diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 1df3f49..0def5aa 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -2,6 +2,7 @@ import { h, nextTick, onBeforeUnmount, onMounted, ref } from 'vue' import type { DataTableColumns, FormInst } from 'naive-ui' import { NButton, NCheckbox, NDropdown, NIcon, NPopconfirm, NProgress, NSpace, NSwitch, NTag, NUpload, NUploadDragger } from 'naive-ui' +import NovaDialog from '@/components/common/NovaDialog.vue' import { addUser, batchDeleteUsers, @@ -29,7 +30,6 @@ import { coiMsgBox, coiMsgError, coiMsgInfo, coiMsgSuccess, coiMsgWarning } from // 响应式数据 const loading = ref(false) const tableData = ref([]) -const showModal = ref(false) const modalTitle = ref('新增用户') const formRef = ref(null) const searchFormRef = ref(null) @@ -38,8 +38,14 @@ const currentUser = ref(null) const selectedRows = ref([]) const roleOptions = ref([]) +// 弹框引用 +const userDialogRef = ref() +const roleDialogRef = ref() +const resetPwdDialogRef = ref() +const avatarDialogRef = ref() +const importDialogRef = ref() + // 角色分配相关 -const showRoleModal = ref(false) const roleModalTitle = ref('分配角色') const currentAssignUser = ref(null) const availableRoles = ref<{ label: string, value: number }[]>([]) @@ -47,7 +53,6 @@ const selectedRoleIds = ref([]) const roleLoading = ref(false) // 重置密码相关 -const showResetPwdModal = ref(false) const resetPwdFormRef = ref(null) const currentResetUser = ref(null) const resetPwdForm = ref({ @@ -56,12 +61,10 @@ const resetPwdForm = ref({ }) // 头像查看相关 -const showAvatarModal = ref(false) const currentAvatar = ref('') const currentAvatarUser = ref(null) // 导入相关 -const showImportModal = ref(false) const importLoading = ref(false) const selectedFile = ref(null) const updateSupport = ref(false) @@ -488,7 +491,7 @@ function handleAdd() { remark: '', roleIds: [], } - showModal.value = true + userDialogRef.value?.novaOpen() } // 编辑用户 @@ -509,7 +512,7 @@ function handleEdit(user: UserVo) { remark: user.remark || '', roleIds: user.roleIds || [], } - showModal.value = true + userDialogRef.value?.novaOpen() } // 删除用户 @@ -595,7 +598,7 @@ function handleResetPassword(user: UserVo) { newPassword: '', confirmPassword: '', } - showResetPwdModal.value = true + resetPwdDialogRef.value?.novaOpen() } // 执行重置密码 @@ -619,7 +622,7 @@ async function handleConfirmResetPassword() { const { isSuccess } = await resetUserPassword(currentResetUser.value.userId, resetPwdForm.value.newPassword) if (isSuccess) { coiMsgSuccess(`用户「${currentResetUser.value.userName}」密码重置成功`) - showResetPwdModal.value = false + resetPwdDialogRef.value?.novaClose() } else { coiMsgError('重置密码失败,请稍后重试') @@ -633,7 +636,7 @@ async function handleConfirmResetPassword() { // 取消重置密码 function handleCancelResetPassword() { - showResetPwdModal.value = false + resetPwdDialogRef.value?.novaClose() resetPwdForm.value = { newPassword: '', confirmPassword: '', @@ -679,12 +682,12 @@ function handleViewAvatar(user: UserVo) { currentAvatar.value = blobUrl createdBlobUrls.value.push(blobUrl) } - showAvatarModal.value = true + avatarDialogRef.value?.novaOpen() } // 关闭头像查看 function handleCloseAvatar() { - showAvatarModal.value = false + avatarDialogRef.value?.novaClose() // 如果是生成的默认头像,释放URL if (currentAvatar.value.startsWith('blob:')) { URL.revokeObjectURL(currentAvatar.value) @@ -826,7 +829,7 @@ function handleImport() { selectedFile.value = null updateSupport.value = false uploadProgress.value = 0 - showImportModal.value = true + importDialogRef.value?.novaOpen() } // 文件选择处理 @@ -891,7 +894,7 @@ async function handleConfirmImport() { ) // 关闭模态框并刷新列表 - showImportModal.value = false + importDialogRef.value?.novaClose() await getUserList() } else { @@ -916,7 +919,7 @@ async function handleConfirmImport() { // 取消导入 function handleCancelImport() { - showImportModal.value = false + importDialogRef.value?.novaClose() selectedFile.value = null updateSupport.value = false uploadProgress.value = 0 @@ -954,7 +957,7 @@ async function handleAssignRole(user: UserVo) { // 预选用户当前角色(使用后端返回的用户角色ID) selectedRoleIds.value = userRoleIds - showRoleModal.value = true + roleDialogRef.value?.novaOpen() } else { coiMsgInfo('当前系统没有可分配的角色') @@ -992,7 +995,7 @@ async function handleConfirmAssignRole() { if (response.isSuccess) { coiMsgSuccess('角色分配成功') - showRoleModal.value = false + roleDialogRef.value?.novaClose() // 更新当前用户的角色信息 if (currentAssignUser.value) { @@ -1016,7 +1019,7 @@ async function handleConfirmAssignRole() { // 取消分配角色 function handleCancelAssignRole() { - showRoleModal.value = false + roleDialogRef.value?.novaClose() currentAssignUser.value = null selectedRoleIds.value = [] availableRoles.value = [] @@ -1059,7 +1062,7 @@ async function handleSubmit() { if (isSuccess) { coiMsgSuccess(isEdit.value ? '用户信息更新成功' : '用户创建成功') - showModal.value = false + userDialogRef.value?.novaClose() await getUserList() } else { @@ -1074,7 +1077,7 @@ async function handleSubmit() { // 取消操作 function handleCancel() { - showModal.value = false + userDialogRef.value?.novaClose() } // 组件挂载时获取数据 @@ -1339,317 +1342,290 @@ onBeforeUnmount(() => { - - + - - - - + + - - + + + + + + + +