From 165b783a95f330632b77037cd999317c3a6a4c55 Mon Sep 17 00:00:00 2001
From: archer <545436317@qq.com>
Date: Fri, 30 May 2025 17:27:21 +0800
Subject: [PATCH] perf: ux
---
.../MemberManager/PermissionSelect.tsx | 108 +++++++++---------
.../pageComponents/app/detail/RouteTab.tsx | 33 ++++--
2 files changed, 79 insertions(+), 62 deletions(-)
diff --git a/projects/app/src/components/support/permission/MemberManager/PermissionSelect.tsx b/projects/app/src/components/support/permission/MemberManager/PermissionSelect.tsx
index 674394d4a..3d5989aa2 100644
--- a/projects/app/src/components/support/permission/MemberManager/PermissionSelect.tsx
+++ b/projects/app/src/components/support/permission/MemberManager/PermissionSelect.tsx
@@ -105,7 +105,6 @@ function PermissionSelect({
const per = new Permission({ per: perValue });
per.addPer(...selectedMultipleValues);
onChange(per.value);
- setIsOpen(false);
};
useOutsideClick({
@@ -187,61 +186,60 @@ function PermissionSelect({
);
})}
-
+ {permissionSelectList.multipleCheckBoxList.length > 0 && (
+ <>
+
+ {permissionSelectList.multipleCheckBoxList.map((item) => {
+ const isChecked = selectedMultipleValues.includes(item.value);
+ const isDisabled = new Permission({ per: selectedSingleValue }).checkPer(
+ item.value
+ );
+ const change = () => {
+ if (isDisabled) return;
+ const per = new Permission({ per: value });
+ if (isChecked) {
+ per.removePer(item.value);
+ } else {
+ per.addPer(item.value);
+ }
+ onChange(per.value);
+ };
+ return (
+
+
+
+ {t(item.name as any)}
+
+ {t(item.description as any)}
+
+
+
+ );
+ })}
+ >
+ )}
- {/* {permissionSelectList.multipleCheckBoxList.length > 0 && (
- 其他权限(多选)
- )} */}
-
- {permissionSelectList.multipleCheckBoxList.map((item) => {
- const isChecked = selectedMultipleValues.includes(item.value);
- const isDisabled = new Permission({ per: selectedSingleValue }).checkPer(item.value);
- const change = () => {
- if (isDisabled) return;
- const per = new Permission({ per: value });
- if (isChecked) {
- per.removePer(item.value);
- } else {
- per.addPer(item.value);
- }
- onChange(per.value);
- };
- return (
-
-
-
- {t(item.name as any)}
- {t(item.description as any)}
-
-
- );
- })}
{onDelete && (
<>
diff --git a/projects/app/src/pageComponents/app/detail/RouteTab.tsx b/projects/app/src/pageComponents/app/detail/RouteTab.tsx
index 2d5bcb468..c1958b70f 100644
--- a/projects/app/src/pageComponents/app/detail/RouteTab.tsx
+++ b/projects/app/src/pageComponents/app/detail/RouteTab.tsx
@@ -1,5 +1,5 @@
import { Box, HStack } from '@chakra-ui/react';
-import React, { useCallback, useMemo } from 'react';
+import React, { useCallback, useEffect, useMemo } from 'react';
import { AppContext, TabEnum } from './context';
import { useRouter } from 'next/router';
import { useTranslation } from 'next-i18next';
@@ -25,11 +25,17 @@ const RouteTab = () => {
const tabList = useMemo(
() => [
- {
- label:
- appDetail.type === AppTypeEnum.plugin ? t('app:setting_plugin') : t('app:setting_app'),
- id: TabEnum.appEdit
- },
+ ...(appDetail.permission.hasWritePer
+ ? [
+ {
+ label:
+ appDetail.type === AppTypeEnum.plugin
+ ? t('app:setting_plugin')
+ : t('app:setting_app'),
+ id: TabEnum.appEdit
+ }
+ ]
+ : []),
...(appDetail.permission.hasManagePer
? [
{
@@ -40,9 +46,22 @@ const RouteTab = () => {
: []),
...(appDetail.permission.hasLogPer ? [{ label: t('app:chat_logs'), id: TabEnum.logs }] : [])
],
- [appDetail.permission.hasManagePer, appDetail.type]
+ [
+ appDetail.permission.hasLogPer,
+ appDetail.permission.hasManagePer,
+ appDetail.permission.hasWritePer,
+ appDetail.type,
+ t
+ ]
);
+ useEffect(() => {
+ // 没找到合适的 id,则自动跳转
+ if (!tabList.find((item) => item.id === currentTab)) {
+ setCurrentTab(tabList[0].id);
+ }
+ }, [tabList, currentTab, setCurrentTab]);
+
return (
{tabList.map((tab) => (