refactor(system): 更新系统管理模块组件引用

- 更新用户管理页面中的组件引用从Nova到Coi
- 更新角色管理页面中的组件引用从Nova到Coi
- 更新相关事件处理和方法调用
- 确保功能保持不变
This commit is contained in:
Leo 2025-07-07 15:53:05 +08:00
parent d71fd44a8a
commit b944e3751f
2 changed files with 69 additions and 69 deletions

View File

@ -146,7 +146,7 @@
/>
<!-- 空状态 -->
<NovaEmpty
<CoiEmpty
v-else
:type="getEmptyType()"
:title="getEmptyTitle()"
@ -161,7 +161,7 @@
type="primary"
size="medium"
round
class="nova-empty__action-btn"
class="coi-empty__action-btn"
@click="handleEmptyAction"
>
<template #icon>
@ -173,7 +173,7 @@
{{ getEmptyActionText() }}
</NButton>
</template>
</NovaEmpty>
</CoiEmpty>
</div>
<!-- 分页器 -->
@ -195,15 +195,15 @@
</div>
<!-- 角色表单弹框 -->
<NovaDialog
<CoiDialog
ref="roleDialogRef"
:title="modalTitle"
:width="700"
height="auto"
confirm-text="确定"
cancel-text="取消"
@nova-confirm="handleSubmit"
@nova-cancel="handleCancel"
@coi-confirm="handleSubmit"
@coi-cancel="handleCancel"
>
<template #content>
<div class="px-3 py-2">
@ -275,18 +275,18 @@
</n-form>
</div>
</template>
</NovaDialog>
</CoiDialog>
<!-- 菜单权限分配弹框 -->
<NovaDialog
<CoiDialog
ref="menuDialogRef"
title="分配菜单权限"
:width="500"
height="auto"
confirm-text="确定"
cancel-text="取消"
@nova-confirm="handleConfirmAssignMenu"
@nova-cancel="handleCancelAssignMenu"
@coi-confirm="handleConfirmAssignMenu"
@coi-cancel="handleCancelAssignMenu"
>
<template #content>
<div class="p-3">
@ -362,7 +362,7 @@
</div>
</div>
</template>
</NovaDialog>
</CoiDialog>
</div>
</template>
@ -373,8 +373,8 @@ import { NButton, NIcon, NPopconfirm, NSpace, NSwitch, NTag, NTooltip, NTree } f
import IconParkOutlineEditOne from '~icons/icon-park-outline/edit-one'
import IconParkOutlineDelete from '~icons/icon-park-outline/delete'
import IconParkOutlineShield from '~icons/icon-park-outline/shield'
import NovaDialog from '@/components/common/NovaDialog.vue'
import NovaEmpty from '@/components/common/NovaEmpty.vue'
import CoiDialog from '@/components/common/CoiDialog.vue'
import CoiEmpty from '@/components/common/CoiEmpty.vue'
import {
addRole,
batchDeleteRoles,
@ -809,7 +809,7 @@ async function handleAdd() {
}
}
roleDialogRef.value?.novaOpen()
roleDialogRef.value?.coiOpen()
}
//
@ -825,7 +825,7 @@ function handleEdit(role: RoleVo) {
remark: role.remark || '',
sorted: role.sorted || 1,
}
roleDialogRef.value?.novaOpen()
roleDialogRef.value?.coiOpen()
}
//
@ -947,7 +947,7 @@ async function handleAssignMenu(role: RoleVo) {
checkedKeys.value = roleMenuResponse.data.map(id => String(id))
}
menuDialogRef.value?.novaOpen()
menuDialogRef.value?.coiOpen()
}
else {
coiMsgError('获取菜单数据失败')
@ -1019,7 +1019,7 @@ async function handleConfirmAssignMenu() {
if (response.isSuccess) {
coiMsgSuccess('菜单权限分配成功')
menuDialogRef.value?.novaClose()
menuDialogRef.value?.coiClose()
}
else {
coiMsgError(response.message || '菜单权限分配失败')
@ -1035,7 +1035,7 @@ async function handleConfirmAssignMenu() {
//
function handleCancelAssignMenu() {
menuDialogRef.value?.novaClose()
menuDialogRef.value?.coiClose()
currentAssignRole.value = null
menuData.value = []
expandedKeys.value = []
@ -1140,7 +1140,7 @@ async function handleSubmit() {
if (isSuccess) {
coiMsgSuccess(isEdit.value ? '角色信息更新成功' : '角色创建成功')
roleDialogRef.value?.novaClose()
roleDialogRef.value?.coiClose()
await getRoleList()
}
else {
@ -1154,7 +1154,7 @@ async function handleSubmit() {
//
function handleCancel() {
roleDialogRef.value?.novaClose()
roleDialogRef.value?.coiClose()
}
//
@ -1412,8 +1412,8 @@ onMounted(() => {
}
}
/* NovaEmpty按钮样式 */
.nova-empty__action-btn {
/* CoiEmpty按钮样式 */
.coi-empty__action-btn {
position: relative;
overflow: hidden;
transition: all 0.3s ease;
@ -1422,7 +1422,7 @@ onMounted(() => {
border: none;
}
.nova-empty__action-btn::before {
.coi-empty__action-btn::before {
content: '';
position: absolute;
top: 0;
@ -1433,12 +1433,12 @@ onMounted(() => {
transition: left 0.6s ease;
}
.nova-empty__action-btn:hover {
.coi-empty__action-btn:hover {
transform: translateY(-2px);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
}
.nova-empty__action-btn:hover::before {
.coi-empty__action-btn:hover::before {
left: 100%;
}

View File

@ -220,7 +220,7 @@
/>
<!-- 空状态 -->
<NovaEmpty
<CoiEmpty
v-else
:type="getEmptyType()"
:title="getEmptyTitle()"
@ -235,7 +235,7 @@
type="primary"
size="medium"
round
class="nova-empty__action-btn"
class="coi-empty__action-btn"
@click="handleEmptyAction"
>
<template #icon>
@ -247,7 +247,7 @@
{{ getEmptyActionText() }}
</NButton>
</template>
</NovaEmpty>
</CoiEmpty>
</div>
<!-- 分页器 -->
@ -269,15 +269,15 @@
</div>
<!-- 用户表单弹框 -->
<NovaDialog
<CoiDialog
ref="userDialogRef"
:title="modalTitle"
:width="800"
height="auto"
confirm-text="确定"
cancel-text="取消"
@nova-confirm="handleSubmit"
@nova-cancel="handleCancel"
@coi-confirm="handleSubmit"
@coi-cancel="handleCancel"
>
<template #content>
<div class="px-3 py-2">
@ -407,18 +407,18 @@
</n-form>
</div>
</template>
</NovaDialog>
</CoiDialog>
<!-- 角色分配弹框 -->
<NovaDialog
<CoiDialog
ref="roleDialogRef"
:title="roleModalTitle"
:width="600"
height="auto"
confirm-text="确定"
cancel-text="取消"
@nova-confirm="handleConfirmAssignRole"
@nova-cancel="handleCancelAssignRole"
@coi-confirm="handleConfirmAssignRole"
@coi-cancel="handleCancelAssignRole"
>
<template #content>
<div class="p-3 space-y-4">
@ -467,18 +467,18 @@
</div>
</div>
</template>
</NovaDialog>
</CoiDialog>
<!-- 重置密码弹框 -->
<NovaDialog
<CoiDialog
ref="resetPwdDialogRef"
title="重置用户密码"
:width="500"
height="auto"
confirm-text="确认重置"
cancel-text="取消"
@nova-confirm="handleConfirmResetPassword"
@nova-cancel="handleCancelResetPassword"
@coi-confirm="handleConfirmResetPassword"
@coi-cancel="handleCancelResetPassword"
>
<template #content>
<div class="p-3 space-y-4">
@ -544,16 +544,16 @@
</div>
</div>
</template>
</NovaDialog>
</CoiDialog>
<!-- 头像查看弹框 -->
<NovaDialog
<CoiDialog
ref="avatarDialogRef"
:width="600"
height="auto"
cancel-text="关闭"
:show-confirm="false"
@nova-cancel="handleCloseAvatar"
@coi-cancel="handleCloseAvatar"
>
<template #header>
<div class="flex items-center gap-3">
@ -595,18 +595,18 @@
</div>
</div>
</template>
</NovaDialog>
</CoiDialog>
<!-- 导入用户弹框 -->
<NovaDialog
<CoiDialog
ref="importDialogRef"
title="导入用户数据"
:width="600"
height="auto"
confirm-text="开始导入"
cancel-text="取消"
@nova-confirm="handleConfirmImport"
@nova-cancel="handleCancelImport"
@coi-confirm="handleConfirmImport"
@coi-cancel="handleCancelImport"
>
<template #content>
<div class="p-3 space-y-6">
@ -698,7 +698,7 @@
</div>
</div>
</template>
</NovaDialog>
</CoiDialog>
</div>
</template>
@ -710,8 +710,8 @@ import IconParkOutlineEditOne from '~icons/icon-park-outline/edit-one'
import IconParkOutlineDelete from '~icons/icon-park-outline/delete'
import IconParkOutlineRefresh from '~icons/icon-park-outline/refresh'
import IconParkOutlineUserPositioning from '~icons/icon-park-outline/user-positioning'
import NovaDialog from '@/components/common/NovaDialog.vue'
import NovaEmpty from '@/components/common/NovaEmpty.vue'
import CoiDialog from '@/components/common/CoiDialog.vue'
import CoiEmpty from '@/components/common/CoiEmpty.vue'
import {
addUser,
batchDeleteUsers,
@ -1246,7 +1246,7 @@ function handleAdd() {
remark: '',
roleIds: [],
}
userDialogRef.value?.novaOpen()
userDialogRef.value?.coiOpen()
}
//
@ -1309,7 +1309,7 @@ async function handleEdit(user: UserVo) {
}
}
userDialogRef.value?.novaOpen()
userDialogRef.value?.coiOpen()
}
//
@ -1395,7 +1395,7 @@ function handleResetPassword(user: UserVo) {
newPassword: '',
confirmPassword: '',
}
resetPwdDialogRef.value?.novaOpen()
resetPwdDialogRef.value?.coiOpen()
}
//
@ -1419,7 +1419,7 @@ async function handleConfirmResetPassword() {
const { isSuccess } = await resetUserPassword(currentResetUser.value.userId, resetPwdForm.value.newPassword)
if (isSuccess) {
coiMsgSuccess(`用户「${currentResetUser.value.userName}」密码重置成功`)
resetPwdDialogRef.value?.novaClose()
resetPwdDialogRef.value?.coiClose()
}
else {
coiMsgError('重置密码失败,请稍后重试')
@ -1433,7 +1433,7 @@ async function handleConfirmResetPassword() {
//
function handleCancelResetPassword() {
resetPwdDialogRef.value?.novaClose()
resetPwdDialogRef.value?.coiClose()
resetPwdForm.value = {
newPassword: '',
confirmPassword: '',
@ -1479,12 +1479,12 @@ function handleViewAvatar(user: UserVo) {
currentAvatar.value = blobUrl
createdBlobUrls.value.push(blobUrl)
}
avatarDialogRef.value?.novaOpen()
avatarDialogRef.value?.coiOpen()
}
//
function handleCloseAvatar() {
avatarDialogRef.value?.novaClose()
avatarDialogRef.value?.coiClose()
// URL
if (currentAvatar.value.startsWith('blob:')) {
URL.revokeObjectURL(currentAvatar.value)
@ -1626,7 +1626,7 @@ function handleImport() {
selectedFile.value = null
updateSupport.value = false
uploadProgress.value = 0
importDialogRef.value?.novaOpen()
importDialogRef.value?.coiOpen()
}
//
@ -1691,7 +1691,7 @@ async function handleConfirmImport() {
)
//
importDialogRef.value?.novaClose()
importDialogRef.value?.coiClose()
await getUserList()
}
else {
@ -1716,7 +1716,7 @@ async function handleConfirmImport() {
//
function handleCancelImport() {
importDialogRef.value?.novaClose()
importDialogRef.value?.coiClose()
selectedFile.value = null
updateSupport.value = false
uploadProgress.value = 0
@ -1754,7 +1754,7 @@ async function handleAssignRole(user: UserVo) {
// 使ID
selectedRoleIds.value = userRoleIds
roleDialogRef.value?.novaOpen()
roleDialogRef.value?.coiOpen()
}
else {
coiMsgInfo('当前系统没有可分配的角色')
@ -1792,7 +1792,7 @@ async function handleConfirmAssignRole() {
if (response.isSuccess) {
coiMsgSuccess('角色分配成功')
roleDialogRef.value?.novaClose()
roleDialogRef.value?.coiClose()
//
if (currentAssignUser.value) {
@ -1816,7 +1816,7 @@ async function handleConfirmAssignRole() {
//
function handleCancelAssignRole() {
roleDialogRef.value?.novaClose()
roleDialogRef.value?.coiClose()
currentAssignUser.value = null
selectedRoleIds.value = []
availableRoles.value = []
@ -1859,7 +1859,7 @@ async function handleSubmit() {
if (isSuccess) {
coiMsgSuccess(isEdit.value ? '用户信息更新成功' : '用户创建成功')
userDialogRef.value?.novaClose()
userDialogRef.value?.coiClose()
await getUserList()
}
else {
@ -1874,7 +1874,7 @@ async function handleSubmit() {
//
function handleCancel() {
userDialogRef.value?.novaClose()
userDialogRef.value?.coiClose()
}
//
@ -2077,8 +2077,8 @@ onBeforeUnmount(() => {
border-color: #40a9ff;
}
/* NovaEmpty按钮样式 */
.nova-empty__action-btn {
/* CoiEmpty按钮样式 */
.coi-empty__action-btn {
position: relative;
overflow: hidden;
transition: all 0.3s ease;
@ -2087,7 +2087,7 @@ onBeforeUnmount(() => {
border: none;
}
.nova-empty__action-btn::before {
.coi-empty__action-btn::before {
content: '';
position: absolute;
top: 0;
@ -2098,12 +2098,12 @@ onBeforeUnmount(() => {
transition: left 0.6s ease;
}
.nova-empty__action-btn:hover {
.coi-empty__action-btn:hover {
transform: translateY(-2px);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
}
.nova-empty__action-btn:hover::before {
.coi-empty__action-btn:hover::before {
left: 100%;
}