feat(auth): use Wayne native role APIs

This commit is contained in:
mac
2026-07-21 17:05:48 +08:00
parent 981e9557fe
commit c324e2ec59
15 changed files with 685 additions and 315 deletions
+1 -2
View File
@@ -59,7 +59,6 @@ export const businessLineApi = {
business_line_id: number
target_user_id: number
target_business_line_id: number
permission: 0 | 1
}): Promise<void> {
await request('/auth/api/v1/business-lines/authorizations', {
method: 'POST',
@@ -69,7 +68,7 @@ export const businessLineApi = {
async listWayneNamespaces(): Promise<WayneNamespace[]> {
const data = await request('/auth/api/v1/wayne/namespaces')
const items = Array.isArray(data.data) ? data.data : Array.isArray(data.items) ? data.items : []
const items = Array.isArray(data.data?.list) ? data.data.list : []
return items.map((item: any) => ({
id: Number(item.id),
name: item.name || '',
+7 -2
View File
@@ -6,9 +6,14 @@ export interface UserOption {
}
export const userApi = {
async list(): Promise<UserOption[]> {
async list(params: { businessLineId?: number } = {}): Promise<UserOption[]> {
const token = getToken()
const response = await fetch('/auth/api/v1/users', {
const query = new URLSearchParams()
if (params.businessLineId) {
query.set('business_line_id', String(params.businessLineId))
}
const path = query.toString() ? `/auth/api/v1/users?${query}` : '/auth/api/v1/users'
const response = await fetch(path, {
headers: {
Accept: 'application/json',
...(token ? { Authorization: `Bearer ${token}` } : {}),
@@ -19,9 +19,6 @@
<el-option v-for="item in businessLineStore.items" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="权限">
<el-segmented v-model="grantForm.permission" :options="permissionOptions" />
</el-form-item>
<el-button type="primary" :loading="granting" @click="grantPermission">保存分配</el-button>
</el-form>
@@ -72,18 +69,11 @@ const savingWayneNamespaces = ref(false)
const grantForm = reactive<{
target_user_id: number | null
target_business_line_id: number | null
permission: 0 | 1
}>({
target_user_id: null,
target_business_line_id: null,
permission: 1,
})
const permissionOptions = [
{ label: '管理员', value: 0 },
{ label: '普通用户', value: 1 },
]
watch(
() => businessLineStore.current?.id,
(id) => {
@@ -139,7 +129,6 @@ async function grantPermission() {
business_line_id: businessLineID,
target_user_id: grantForm.target_user_id,
target_business_line_id: grantForm.target_business_line_id,
permission: grantForm.permission,
})
ElMessage.success('已保存业务线分配')
} catch (error) {
+14 -2
View File
@@ -239,10 +239,11 @@ const operatorStateDetail = computed(() => {
watch(
() => businessLineStore.current?.id,
async () => {
selectedUserId.value = null
selectedNamespaceId.value = null
selectedRoleIds.value = []
userRoles.value = null
await loadBusinessLineData()
await Promise.all([loadUsers(), loadBusinessLineData()])
},
)
@@ -286,14 +287,25 @@ async function loadSystems() {
}
async function loadUsers() {
const businessLineId = currentBusinessLineId.value
if (!businessLineId) {
users.value = []
selectedUserId.value = null
return
}
loadingUsers.value = true
try {
users.value = await userApi.list()
users.value = await userApi.list({ businessLineId })
if (!selectedUserId.value && users.value.length) {
selectedUserId.value = users.value[0].uid
await loadSelectedUserRoles()
} else if (selectedUserId.value && !users.value.some((user) => user.uid === selectedUserId.value)) {
selectedUserId.value = users.value[0]?.uid || null
await loadSelectedUserRoles()
}
} catch (error) {
users.value = []
selectedUserId.value = null
ElMessage.error(error instanceof Error ? error.message : '查询用户失败')
} finally {
loadingUsers.value = false