fix: id兼容, 通知入口
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 5m0s
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 5m0s
This commit is contained in:
@@ -34,7 +34,7 @@
|
||||
<!-- 表格 -->
|
||||
<ArtTable
|
||||
ref="tableRef"
|
||||
row-key="ID"
|
||||
row-key="id"
|
||||
:loading="loading"
|
||||
:data="accountList"
|
||||
:currentPage="pagination.page"
|
||||
@@ -120,8 +120,11 @@
|
||||
<ElEmpty v-if="filteredAvailableRoles.length === 0" description="暂无角色" />
|
||||
<template v-else-if="isPlatformUser">
|
||||
<ElCheckboxGroup v-model="rolesToAdd" class="role-list">
|
||||
<div v-for="role in filteredAvailableRoles" :key="role.ID" class="role-item">
|
||||
<ElCheckbox :label="role.ID" :disabled="selectedRoles.includes(role.ID)">
|
||||
<div v-for="role in filteredAvailableRoles" :key="getRoleId(role)" class="role-item">
|
||||
<ElCheckbox
|
||||
:label="getRoleId(role)"
|
||||
:disabled="selectedRoles.includes(getRoleId(role))"
|
||||
>
|
||||
<span class="role-info">
|
||||
<span>{{ role.role_name }}</span>
|
||||
<ElTag :type="role.role_type === 1 ? 'primary' : 'success'" size="small">
|
||||
@@ -134,8 +137,11 @@
|
||||
</template>
|
||||
<template v-else>
|
||||
<ElRadioGroup v-model="roleToAdd" class="role-list">
|
||||
<div v-for="role in filteredAvailableRoles" :key="role.ID" class="role-item">
|
||||
<ElRadio :label="role.ID" :disabled="selectedRoles.includes(role.ID)">
|
||||
<div v-for="role in filteredAvailableRoles" :key="getRoleId(role)" class="role-item">
|
||||
<ElRadio
|
||||
:label="getRoleId(role)"
|
||||
:disabled="selectedRoles.includes(getRoleId(role))"
|
||||
>
|
||||
<span class="role-info">
|
||||
<span>{{ role.role_name }}</span>
|
||||
<ElTag :type="role.role_type === 1 ? 'primary' : 'success'" size="small">
|
||||
@@ -177,7 +183,7 @@
|
||||
<div class="role-list">
|
||||
<div
|
||||
v-for="role in filteredAssignedRoles"
|
||||
:key="role.ID"
|
||||
:key="getRoleId(role)"
|
||||
class="role-item assigned-role-item"
|
||||
>
|
||||
<span class="role-info">
|
||||
@@ -186,7 +192,12 @@
|
||||
{{ role.role_type === 1 ? '平台角色' : '客户角色' }}
|
||||
</ElTag>
|
||||
</span>
|
||||
<ElButton type="danger" size="small" link @click="removeSingleRole(role.ID)">
|
||||
<ElButton
|
||||
type="danger"
|
||||
size="small"
|
||||
link
|
||||
@click="removeSingleRole(getRoleId(role))"
|
||||
>
|
||||
移除
|
||||
</ElButton>
|
||||
</div>
|
||||
@@ -231,6 +242,7 @@
|
||||
import type { SearchFormItem } from '@/types'
|
||||
import type { PlatformAccount, PlatformRole } from '@/types/api'
|
||||
import { formatDateTime } from '@/utils/business/format'
|
||||
import { getCompatibleNumericId } from '@/utils/business/id'
|
||||
import { useAuth } from '@/composables/useAuth'
|
||||
|
||||
defineOptions({ name: 'CommonAccountList' })
|
||||
@@ -287,6 +299,9 @@
|
||||
// 是否为平台用户(平台用户可多选,其他单选)
|
||||
const isPlatformUser = computed(() => currentAccountType.value === 2)
|
||||
|
||||
const getAccountId = (account: PlatformAccount | any) => getCompatibleNumericId(account) ?? 0
|
||||
const getRoleId = (role: PlatformRole | any) => getCompatibleNumericId(role) ?? 0
|
||||
|
||||
// 搜索表单初始值
|
||||
const initialSearchState = {
|
||||
username: '',
|
||||
@@ -646,7 +661,9 @@
|
||||
|
||||
// 计算属性:过滤后的已分配角色
|
||||
const filteredAssignedRoles = computed(() => {
|
||||
const assignedRolesList = allRoles.value.filter((role) => selectedRoles.value.includes(role.ID))
|
||||
const assignedRolesList = allRoles.value.filter((role) =>
|
||||
selectedRoles.value.includes(getRoleId(role))
|
||||
)
|
||||
if (!rightRoleFilter.value) return assignedRolesList
|
||||
const keyword = rightRoleFilter.value.toLowerCase()
|
||||
return assignedRolesList.filter((role) => role.role_name.toLowerCase().includes(keyword))
|
||||
@@ -654,7 +671,12 @@
|
||||
|
||||
// 显示分配角色对话框
|
||||
const showRoleDialog = async (row: PlatformAccount) => {
|
||||
currentAccountId.value = (row as any).id
|
||||
const accountId = getAccountId(row)
|
||||
if (!accountId) {
|
||||
ElMessage.error('当前账号缺少账号标识,无法分配角色')
|
||||
return
|
||||
}
|
||||
currentAccountId.value = accountId
|
||||
currentAccountName.value = row.username
|
||||
currentAccountType.value = row.user_type
|
||||
selectedRoles.value = []
|
||||
@@ -671,12 +693,12 @@
|
||||
await loadAllRoles('', roleType)
|
||||
|
||||
// 先加载当前账号的角色,再打开对话框
|
||||
const res = await AccountService.getAccountRoles((row as any).id)
|
||||
const res = await AccountService.getAccountRoles(accountId)
|
||||
if (res.code === 0) {
|
||||
// 提取角色ID数组
|
||||
const roles = res.data || []
|
||||
// 兼容 ID 和 id 两种字段名
|
||||
selectedRoles.value = roles.map((role: any) => role.ID || role.id)
|
||||
selectedRoles.value = roles.map((role: any) => getRoleId(role)).filter((id) => id > 0)
|
||||
// 数据加载完成后再打开对话框
|
||||
roleDialogVisible.value = true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user