From 15574bd38d741e06e2b48b00ad2b9d2ab6888290 Mon Sep 17 00:00:00 2001 From: teukkk Date: Tue, 1 Jul 2025 16:21:46 +0800 Subject: [PATCH] fix: workspaceFormItem rules --- ui/src/components/workspace-dropdown/index.vue | 2 +- ui/src/layout/layout-template/MainLayout.vue | 2 +- .../component/DropdownMenu.vue | 2 +- ui/src/views/system-chat-user/group/index.vue | 2 +- .../system/role/component/MemberFormContent.vue | 2 +- ui/src/views/system/role/index.vue | 2 +- .../system/user-manage/component/UserDrawer.vue | 15 ++++++++++++++- ui/src/views/system/user-manage/index.vue | 4 ++-- ui/src/views/system/workspace/index.vue | 8 ++------ 9 files changed, 24 insertions(+), 15 deletions(-) diff --git a/ui/src/components/workspace-dropdown/index.vue b/ui/src/components/workspace-dropdown/index.vue index bf43b8c59..d5c2a5b64 100644 --- a/ui/src/components/workspace-dropdown/index.vue +++ b/ui/src/components/workspace-dropdown/index.vue @@ -40,7 +40,7 @@ import type { WorkspaceItem } from '@/api/type/workspace' const props = defineProps({ data: { - type: Array, + type: Array, default: () => [], }, currentWorkspace: { diff --git a/ui/src/layout/layout-template/MainLayout.vue b/ui/src/layout/layout-template/MainLayout.vue index 4a5145b64..6fa6bd1dd 100644 --- a/ui/src/layout/layout-template/MainLayout.vue +++ b/ui/src/layout/layout-template/MainLayout.vue @@ -28,7 +28,7 @@ const { } = route as any const isShared = computed(() => { - return folderId === 'shared' || route.name.includes('ResourceManagement') + return folderId === 'shared' || route.name?.includes('ResourceManagement') }) const { theme } = useStore() const isDefaultTheme = computed(() => { diff --git a/ui/src/views/application-workflow/component/DropdownMenu.vue b/ui/src/views/application-workflow/component/DropdownMenu.vue index 29b4b9151..79b50f0c6 100644 --- a/ui/src/views/application-workflow/component/DropdownMenu.vue +++ b/ui/src/views/application-workflow/component/DropdownMenu.vue @@ -177,7 +177,7 @@ const filter_menu_nodes = computed(() => { if (!search_text.value) return menuNodes; const searchTerm = search_text.value.toLowerCase(); - return menuNodes.reduce((result, item) => { + return menuNodes.reduce((result: any[], item) => { const filteredList = item.list.filter(listItem => listItem.label.toLowerCase().includes(searchTerm) ); diff --git a/ui/src/views/system-chat-user/group/index.vue b/ui/src/views/system-chat-user/group/index.vue index 605e482a8..2467acb8e 100644 --- a/ui/src/views/system-chat-user/group/index.vue +++ b/ui/src/views/system-chat-user/group/index.vue @@ -310,7 +310,7 @@ async function refresh(group?: ListItem) { if (group) { current.value = group } else { - current.value = list.value.find(item => item.id === current.value.id) + current.value = list.value.find(item => item.id === current.value?.id) } } diff --git a/ui/src/views/system/role/component/MemberFormContent.vue b/ui/src/views/system/role/component/MemberFormContent.vue index c1bff3529..728920953 100644 --- a/ui/src/views/system/role/component/MemberFormContent.vue +++ b/ui/src/views/system/role/component/MemberFormContent.vue @@ -4,7 +4,7 @@
- item.id === currentRole.value.id) + currentRole.value = customRoleList.value.find(item => item.id === currentRole.value?.id) } } diff --git a/ui/src/views/system/user-manage/component/UserDrawer.vue b/ui/src/views/system/user-manage/component/UserDrawer.vue index 8cd1146dd..93bfb9df3 100644 --- a/ui/src/views/system/user-manage/component/UserDrawer.vue +++ b/ui/src/views/system/user-manage/component/UserDrawer.vue @@ -137,6 +137,20 @@ async function getWorkspaceFormItem() { path: 'workspace_ids', label: t('views.role.member.workspace'), hidden: (e) => adminRoleList.value.find(item => item.id === e.role_id), + rules: [ + { + validator: (rule, value, callback) => { + const match = rule.field?.match(/\[(\d+)\]/); + const isAdmin = adminRoleList.value.some(role => role.id === list.value[parseInt(match?.[1] ?? '', 10)].role_id); + if (!isAdmin && (!value || value.length === 0)) { + callback(new Error(`${t('common.selectPlaceholder')}${t('views.role.member.workspace')}`)); + } else { + callback(); + } + }, + trigger: 'change', + }, + ], selectProps: { options: res.data?.map((item) => ({ @@ -275,7 +289,6 @@ const submit = async (formEl: FormInstance | undefined) => { ...userForm.value, role_setting: list.value } - console.log(list.value) if (isEdit.value) { userManageApi.putUserManage(userForm.value.id, params, loading).then((res) => { emit('refresh') diff --git a/ui/src/views/system/user-manage/index.vue b/ui/src/views/system/user-manage/index.vue index e288fc6a6..a8cebd633 100644 --- a/ui/src/views/system/user-manage/index.vue +++ b/ui/src/views/system/user-manage/index.vue @@ -125,7 +125,7 @@