diff --git a/furniture-3d-system/docs/架构设计/permission-design-v2.md b/furniture-3d-system/docs/架构设计/permission-design-v2.md
index 187fe390..cfff2941 100644
--- a/furniture-3d-system/docs/架构设计/permission-design-v2.md
+++ b/furniture-3d-system/docs/架构设计/permission-design-v2.md
@@ -85,12 +85,12 @@ businessRoles includes DESIGN / PLANNING / PURCHASING / WAREHOUSE
- 旧权限角色迁移为 `role=USER`。
- 原业务身份追加 `businessRoles=['DESIGN']`。
-- `User / AccountTemplate / ApprovalWorkflow.businessRoles` 统一补齐为非空数组。
+- `User / ApprovalWorkflow.businessRoles` 统一补齐为非空数组。
- 新请求不再允许写入旧设计权限角色;旧值应返回 400,并提示“设计师已迁移为业务类型:设计”。
## 页面展示
-- 用户管理、个人中心、交接弹窗、账号模板和审批页面展示“业务类型”。
+- 用户管理、个人中心、交接弹窗和审批页面展示“业务类型”。
- 权限角色筛选和表单只出现 4 个权限角色。
- 页面文案应保持低噪音,不用大段说明解释权限体系。
diff --git a/furniture-3d-system/prisma/migrations/20260515100000_remove_account_templates/migration.sql b/furniture-3d-system/prisma/migrations/20260515100000_remove_account_templates/migration.sql
new file mode 100644
index 00000000..18df14d9
--- /dev/null
+++ b/furniture-3d-system/prisma/migrations/20260515100000_remove_account_templates/migration.sql
@@ -0,0 +1,9 @@
+ALTER TABLE "User" DROP CONSTRAINT IF EXISTS "User_accountTemplateId_fkey";
+
+DROP INDEX IF EXISTS "User_accountTemplateId_idx";
+
+ALTER TABLE "User"
+ DROP COLUMN IF EXISTS "accountTemplateId",
+ DROP COLUMN IF EXISTS "accountTemplateOverrides";
+
+DROP TABLE IF EXISTS "AccountTemplate";
diff --git a/furniture-3d-system/prisma/schema.prisma b/furniture-3d-system/prisma/schema.prisma
index 880a77b3..63515117 100644
--- a/furniture-3d-system/prisma/schema.prisma
+++ b/furniture-3d-system/prisma/schema.prisma
@@ -1041,11 +1041,6 @@ model User {
// 状态
status UserStatus @default(PENDING)
- // 岗位模板
- accountTemplateId String?
- accountTemplate AccountTemplate? @relation(fields: [accountTemplateId], references: [id], onDelete: SetNull)
- accountTemplateOverrides Json?
-
// 关联
createdProducts Product[] @relation("ProductCreator")
ownedSKUs ProductSKU[] @relation("SKUOwner")
@@ -1071,7 +1066,6 @@ model User {
addedProductCollaborators ProductCollaborator[] @relation("ProductCollaboratorAddedBy")
feedbacks Feedback[] @relation("FeedbackSubmitter")
assignedFeedbacks Feedback[] @relation("FeedbackAssignee")
- createdAccountTemplates AccountTemplate[] @relation("AccountTemplateCreator")
createdApprovalWorkflows ApprovalWorkflow[] @relation("ApprovalWorkflowCreator")
approvalWorkflowChanges ApprovalWorkflowFieldChange[]
@@ -1089,7 +1083,6 @@ model User {
@@index([status])
@@index([loginSource])
@@index([employeeDirectoryId])
- @@index([accountTemplateId])
}
model EmployeeLookupCache {
@@ -1179,30 +1172,6 @@ model Team {
@@index([departmentId])
}
-model AccountTemplate {
- id String @id @default(cuid())
-
- name String @unique
- code String @unique
- description String?
- isActive Boolean @default(true)
- role Role
- businessRoles BusinessAccountType[] @default([])
- defaultScope Json?
- defaultFieldPermissions Json?
-
- createdBy String
- creator User @relation("AccountTemplateCreator", fields: [createdBy], references: [id])
-
- users User[]
-
- createdAt DateTime @default(now())
- updatedAt DateTime @updatedAt
-
- @@index([isActive])
- @@index([createdBy])
-}
-
model ApprovalWorkflow {
id String @id @default(cuid())
diff --git a/furniture-3d-system/src/app/admin/themes/ThemeManagementClient.tsx b/furniture-3d-system/src/app/admin/themes/ThemeManagementClient.tsx
index 0e62daa0..4e81e87d 100644
--- a/furniture-3d-system/src/app/admin/themes/ThemeManagementClient.tsx
+++ b/furniture-3d-system/src/app/admin/themes/ThemeManagementClient.tsx
@@ -269,8 +269,8 @@ export default function ThemeManagementClient() {
inspector={
-
-
+
+
diff --git a/furniture-3d-system/src/app/api/account-templates/[id]/route.ts b/furniture-3d-system/src/app/api/account-templates/[id]/route.ts
deleted file mode 100644
index e1f69bfd..00000000
--- a/furniture-3d-system/src/app/api/account-templates/[id]/route.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import { NextRequest } from 'next/server'
-import { handleRequest, jsonError, jsonSuccess } from '@/server/core/response'
-import { AppError } from '@/server/core/errors'
-import { accountTemplateService } from '@/server/services/account-template.service'
-
-export async function GET(
- request: NextRequest,
- { params }: { params: Promise<{ id: string }> }
-) {
- return handleRequest(
- request,
- async (ctx) => {
- const { id } = await params
- try {
- const template = await accountTemplateService.getById(id)
- return jsonSuccess({ template }, 200, ctx.requestId)
- } catch (error) {
- if (error instanceof AppError) {
- return jsonError(error.code, error.message, error.statusCode, ctx.requestId)
- }
- throw error
- }
- },
- { allowedRoles: ['SUPER_ADMIN', 'ADMIN', 'SUPERVISOR_DEPARTMENT', 'SUPERVISOR_TEAM'] }
- )
-}
-
-export async function PUT(
- request: NextRequest,
- { params }: { params: Promise<{ id: string }> }
-) {
- return handleRequest(
- request,
- async (ctx) => {
- const { id } = await params
- const body = await request.json()
- try {
- const template = await accountTemplateService.update(id, body)
- return jsonSuccess({ message: '岗位模板更新成功', template }, 200, ctx.requestId)
- } catch (error) {
- if (error instanceof AppError) {
- return jsonError(error.code, error.message, error.statusCode, ctx.requestId)
- }
- throw error
- }
- },
- { allowedRoles: ['SUPER_ADMIN', 'ADMIN'] }
- )
-}
diff --git a/furniture-3d-system/src/app/api/account-templates/route.ts b/furniture-3d-system/src/app/api/account-templates/route.ts
deleted file mode 100644
index 15a2bf25..00000000
--- a/furniture-3d-system/src/app/api/account-templates/route.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { NextRequest } from 'next/server'
-import { handleRequest, jsonError, jsonSuccess } from '@/server/core/response'
-import { AppError } from '@/server/core/errors'
-import { accountTemplateService } from '@/server/services/account-template.service'
-
-export async function GET(request: NextRequest) {
- return handleRequest(
- request,
- async (ctx) => {
- const templates = await accountTemplateService.list(ctx.user)
- return jsonSuccess({ templates }, 200, ctx.requestId)
- },
- { allowedRoles: ['SUPER_ADMIN', 'ADMIN', 'SUPERVISOR_DEPARTMENT', 'SUPERVISOR_TEAM'] }
- )
-}
-
-export async function POST(request: NextRequest) {
- return handleRequest(
- request,
- async (ctx) => {
- const body = await request.json()
- try {
- const template = await accountTemplateService.create(body, ctx.user)
- return jsonSuccess({ message: '岗位模板创建成功', template }, 201, ctx.requestId)
- } catch (error) {
- if (error instanceof AppError) {
- return jsonError(error.code, error.message, error.statusCode, ctx.requestId)
- }
- throw error
- }
- },
- { allowedRoles: ['SUPER_ADMIN', 'ADMIN'] }
- )
-}
diff --git a/furniture-3d-system/src/app/api/users/[id]/route.ts b/furniture-3d-system/src/app/api/users/[id]/route.ts
index 303146e0..5ba86e2d 100644
--- a/furniture-3d-system/src/app/api/users/[id]/route.ts
+++ b/furniture-3d-system/src/app/api/users/[id]/route.ts
@@ -41,7 +41,7 @@ export async function PUT(
return handleRequest(request, async (ctx) => {
const { id } = await params
const body = await request.json()
- const { email, name, password, departmentId, phone, status, accountTemplateId } = body as {
+ const { email, name, password, departmentId, phone, status } = body as {
email?: string
name?: string
password?: string
@@ -49,7 +49,6 @@ export async function PUT(
departmentId?: string | null
phone?: string | null
status?: UserStatus
- accountTemplateId?: string | null
}
const role = parseUserRoleInput(body.role)
const businessRoles = 'businessRoles' in body
@@ -59,7 +58,7 @@ export async function PUT(
try {
const updatedUser = await userManagementService.updateUser(
id,
- { email, name, password, role, businessRoles, departmentId, teamId: null, phone, status, accountTemplateId },
+ { email, name, password, role, businessRoles, departmentId, teamId: null, phone, status },
ctx.user
)
diff --git a/furniture-3d-system/src/app/api/users/route.ts b/furniture-3d-system/src/app/api/users/route.ts
index dbe92b02..656cb2ac 100644
--- a/furniture-3d-system/src/app/api/users/route.ts
+++ b/furniture-3d-system/src/app/api/users/route.ts
@@ -56,7 +56,7 @@ export async function GET(request: NextRequest) {
export async function POST(request: NextRequest) {
return handleRequest(request, async (ctx) => {
const body = await request.json()
- const { email, name, password, departmentId, phone, accountTemplateId } = body
+ const { email, name, password, departmentId, phone } = body
const role = parseUserRoleInput(body.role)
const jobNumber = typeof body.jobNumber === 'string' ? body.jobNumber : undefined
const businessRoles = 'businessRoles' in body
@@ -73,7 +73,7 @@ export async function POST(request: NextRequest) {
}
try {
- const createInput = { email, name, password, role, departmentId, phone, accountTemplateId }
+ const createInput = { email, name, password, role, departmentId, phone }
const normalizedCreateInput = {
...createInput,
...(businessRoles ? { businessRoles } : {}),
diff --git a/furniture-3d-system/src/app/login/page.tsx b/furniture-3d-system/src/app/login/page.tsx
index a341a7ae..fdd707be 100644
--- a/furniture-3d-system/src/app/login/page.tsx
+++ b/furniture-3d-system/src/app/login/page.tsx
@@ -16,7 +16,6 @@ import Link from 'next/link';
import { useRouter } from 'next/navigation';
import { Button } from '@/components/ui/Button';
import { Input } from '@/components/ui/Input';
-import { LargeTitle, Body, Footnote, Caption2 } from '@/components/ui/Typography';
import { useToast, ToastContainer } from '@/components/ui/Toast';
import { getApiErrorMessage } from '@/lib/utils';
import type { ApiResponse } from '@/lib/api';
@@ -25,6 +24,30 @@ import { APP_BRAND_LOGO_SRC, APP_BRAND_NAME } from '@/lib/branding';
// 登录请求超时时间(毫秒)
const LOGIN_TIMEOUT_MS = 15000;
+const authDisplayTitleClass =
+ 'text-[32px] font-semibold leading-[1.18] tracking-normal text-[var(--obs-shell-title)] xl:text-[40px]';
+
+const authDisplaySubtitleClass =
+ 'text-[20px] font-medium leading-8 tracking-normal text-[var(--obs-shell-muted)] xl:text-[24px]';
+
+const authPageTitleClass =
+ 'text-[28px] font-semibold leading-9 tracking-normal text-[var(--obs-shell-title)]';
+
+const authPageSubtitleClass =
+ 'mt-2 text-[14px] font-medium leading-6 tracking-normal text-[var(--obs-shell-muted)]';
+
+const authFieldClass =
+ 'space-y-1.5 [&>label]:mb-0 [&>label]:text-[13px] [&>label]:font-semibold [&>label]:leading-5 [&>label]:tracking-normal [&>label]:text-[var(--obs-shell-muted)]';
+
+const authInputClass =
+ 'text-[14px] font-semibold leading-5 tracking-normal placeholder:text-[var(--obs-shell-subtle)]';
+
+const authLinkClass =
+ 'text-[13px] font-semibold leading-5 tracking-normal text-[var(--obs-shell-title)] hover:underline';
+
+const authMutedTextClass =
+ 'text-[13px] font-medium leading-5 tracking-normal text-[var(--obs-shell-muted)]';
+
interface LoginSuccessData {
message: string;
redirectPath?: string;
@@ -188,18 +211,18 @@ export default function LoginPage() {
/>
{/* 主标题 - 响应式字号 */}
-
+
{APP_BRAND_NAME}
{/* 副标题 - 响应式字号 */}
-
+
专业的家具装配与展示解决方案
{/* 底部辅助文案 */}
-
+
Designed for Assembly
@@ -224,19 +247,19 @@ export default function LoginPage() {
{/* 移动端:视觉调整后的标题 (加大字号) */}
-
+
{APP_BRAND_NAME}
{/* 桌面端:显示功能标题 */}
-
+
登录
-
-
+
+
进入您的工作台以开始管理产品
-
+
@@ -253,7 +276,8 @@ export default function LoginPage() {
required
variant="filled"
size="large"
- className="bg-(--color-background-secondary) border border-(--color-separator) focus:border-(--color-blue) focus:bg-(--color-background-primary) transition-all"
+ containerClassName={authFieldClass}
+ className={`bg-(--color-background-secondary) border border-(--color-separator) focus:border-(--color-blue) focus:bg-(--color-background-primary) transition-all ${authInputClass}`}
/>
@@ -267,12 +291,13 @@ export default function LoginPage() {
required
variant="filled"
size="large"
- className="bg-(--color-background-secondary) border border-(--color-separator) focus:border-(--color-blue) focus:bg-(--color-background-primary) transition-all"
+ containerClassName={authFieldClass}
+ className={`bg-(--color-background-secondary) border border-(--color-separator) focus:border-(--color-blue) focus:bg-(--color-background-primary) transition-all ${authInputClass}`}
/>
-
- 注册账号
+
+ 注册账号
@@ -294,7 +319,7 @@ export default function LoginPage() {
type="submit"
variant="filled"
size="large"
- className="w-full rounded-full h-12 text-base font-semibold shadow-apple-lg shadow-apple-blue/20 hover:shadow-apple-blue/30 active:scale-[0.98] transition-all mt-2"
+ className="w-full rounded-full h-12 text-[14px] font-semibold leading-5 tracking-normal shadow-apple-lg shadow-apple-blue/20 hover:shadow-apple-blue/30 active:scale-[0.98] transition-all mt-2"
loading={isLoading}
>
登录
@@ -303,7 +328,7 @@ export default function LoginPage() {
@@ -311,7 +336,7 @@ export default function LoginPage() {
type="button"
variant="gray"
size="large"
- className="w-full rounded-full h-12 text-base font-semibold gap-3"
+ className="w-full rounded-full h-12 text-[14px] font-semibold leading-5 tracking-normal gap-3"
loading={isDingtalkLoading}
onClick={handleDingtalkLogin}
>
@@ -326,7 +351,7 @@ export default function LoginPage() {
{/* 移动端底部版权 - 绝对定位到底部 */}
- {APP_BRAND_NAME}
+ {APP_BRAND_NAME}
diff --git a/furniture-3d-system/src/app/profile/page.tsx b/furniture-3d-system/src/app/profile/page.tsx
index e0c832db..c324b662 100644
--- a/furniture-3d-system/src/app/profile/page.tsx
+++ b/furniture-3d-system/src/app/profile/page.tsx
@@ -89,7 +89,7 @@ function ProfileContent() {
-
+
@@ -122,7 +122,7 @@ function ProfileContent() {
diff --git a/furniture-3d-system/src/app/register/page.tsx b/furniture-3d-system/src/app/register/page.tsx
index 339f6867..759c9177 100644
--- a/furniture-3d-system/src/app/register/page.tsx
+++ b/furniture-3d-system/src/app/register/page.tsx
@@ -5,13 +5,39 @@ import Link from 'next/link';
import { useRouter } from 'next/navigation';
import { Button } from '@/components/ui/Button';
import { Input } from '@/components/ui/Input';
-import { LargeTitle, Body, Footnote, Caption2 } from '@/components/ui/Typography';
import { useToast, ToastContainer } from '@/components/ui/Toast';
import { getApiErrorMessage } from '@/lib/utils';
import type { ApiResponse } from '@/lib/api';
const REGISTER_TIMEOUT_MS = 15000;
+const authDisplayTitleClass =
+ 'text-[36px] font-semibold leading-[1.15] tracking-normal text-[var(--obs-shell-title)] xl:text-[48px]';
+
+const authDisplaySubtitleClass =
+ 'text-[20px] font-medium leading-8 tracking-normal text-[var(--obs-shell-muted)] xl:text-[24px]';
+
+const authPageTitleClass =
+ 'text-[28px] font-semibold leading-9 tracking-normal text-[var(--obs-shell-title)]';
+
+const authPageSubtitleClass =
+ 'mt-2 text-[14px] font-medium leading-6 tracking-normal text-[var(--obs-shell-muted)]';
+
+const authFieldClass =
+ 'space-y-1.5 [&>label]:mb-0 [&>label]:text-[13px] [&>label]:font-semibold [&>label]:leading-5 [&>label]:tracking-normal [&>label]:text-[var(--obs-shell-muted)]';
+
+const authInputClass =
+ 'text-[14px] font-semibold leading-5 tracking-normal placeholder:text-[var(--obs-shell-subtle)]';
+
+const authHelperClass =
+ 'text-[12px] font-medium leading-5 tracking-normal text-[var(--obs-shell-subtle)]';
+
+const authLinkClass =
+ 'text-[13px] font-semibold leading-5 tracking-normal text-[var(--obs-shell-title)] hover:underline';
+
+const authMutedTextClass =
+ 'text-[13px] font-medium leading-5 tracking-normal text-[var(--obs-shell-muted)]';
+
interface RegisterSuccessData {
message: string;
user: {
@@ -101,16 +127,16 @@ export default function RegisterPage() {
-
+
3D Furniture System
-
+
注册后先等待后台激活,再进入系统
-
+
Register For Workspace Access
@@ -127,10 +153,10 @@ export default function RegisterPage() {
-
注册
-
+
注册
+
所有新账号都会先进入待激活状态,管理员审核通过后才能登录
-
+
@@ -147,7 +173,9 @@ export default function RegisterPage() {
helperText="系统会用工号匹配员工库,匹配成功后仍需管理员激活"
variant="filled"
size="large"
- className="bg-(--color-background-secondary) border border-(--color-separator) focus:border-(--color-blue) focus:bg-(--color-background-primary) transition-all"
+ containerClassName={authFieldClass}
+ messageClassName={authHelperClass}
+ className={`bg-(--color-background-secondary) border border-(--color-separator) focus:border-(--color-blue) focus:bg-(--color-background-primary) transition-all ${authInputClass}`}
/>
@@ -208,32 +241,32 @@ export default function RegisterPage() {
type="submit"
variant="filled"
size="large"
- className="w-full rounded-full h-12 text-base font-semibold shadow-apple-lg shadow-apple-blue/20 hover:shadow-apple-blue/30 active:scale-[0.98] transition-all mt-2"
+ className="w-full rounded-full h-12 text-[14px] font-semibold leading-5 tracking-normal shadow-apple-lg shadow-apple-blue/20 hover:shadow-apple-blue/30 active:scale-[0.98] transition-all mt-2"
loading={isLoading}
>
注册账号
-
- 注册成功后不会自动放行登录。管理员在后台激活并分配角色后,你才能正式进入系统。
-
+
+ 注册成功后不会自动放行登录。管理员在后台激活并分配账号权限后,你才能正式进入系统。
+
-
+
已有账号?
{' '}
-
+
返回登录
-
+
- 3D Furniture System v1.0
+ 3D Furniture System v1.0
diff --git a/furniture-3d-system/src/app/users/page.tsx b/furniture-3d-system/src/app/users/page.tsx
index c414295b..aad5368e 100644
--- a/furniture-3d-system/src/app/users/page.tsx
+++ b/furniture-3d-system/src/app/users/page.tsx
@@ -40,7 +40,7 @@ import { BUSINESS_ACCOUNT_TYPE_LABELS, BUSINESS_ACCOUNT_TYPE_OPTIONS } from '@/l
import { useDebounce } from '@/hooks/usePerformance'
const ROLE_OPTIONS = [
- { value: '', label: '所有权限角色', icon: Users },
+ { value: '', label: '所有账号权限', icon: Users },
{ value: 'SUPER_ADMIN', label: '超级管理员', icon: KeyRound },
{ value: 'ADMIN', label: '管理员', icon: ShieldCheck },
{ value: 'SUPERVISOR', label: '主管', icon: Briefcase },
@@ -309,7 +309,7 @@ function UsersPageContent() {
}
rail={
-
+
{ROLE_OPTIONS.map((option) => (
-
-
-
- 0
- ? selectedUser.accountTemplateOverrides!.overrideFields!.join(' / ')
- : '无'}
- />
-
diff --git a/furniture-3d-system/src/components/ui/Input.tsx b/furniture-3d-system/src/components/ui/Input.tsx
index 1ba0309a..8112ae54 100644
--- a/furniture-3d-system/src/components/ui/Input.tsx
+++ b/furniture-3d-system/src/components/ui/Input.tsx
@@ -33,6 +33,8 @@ export interface InputProps extends Omit(
label,
helperText,
errorText,
+ messageClassName,
required = false,
leftIcon,
rightIcon,
@@ -181,16 +184,30 @@ export const Input = React.forwardRef(
{/* 帮助文本或错误文本 */}
{(errorText || helperText) && (
-
- {errorText || helperText}
-
+ messageClassName ? (
+
+ {errorText || helperText}
+
+ ) : (
+
+ {errorText || helperText}
+
+ )
)}
)
diff --git a/furniture-3d-system/src/components/ui/Select.tsx b/furniture-3d-system/src/components/ui/Select.tsx
index 95501498..a0d21270 100644
--- a/furniture-3d-system/src/components/ui/Select.tsx
+++ b/furniture-3d-system/src/components/ui/Select.tsx
@@ -49,6 +49,8 @@ export interface SelectProps extends Omit(
searchable = false,
searchPlaceholder = '搜索',
emptyText = '没有匹配项',
+ tone = 'apple',
disabled,
value,
onChange,
@@ -94,6 +97,14 @@ export const Select = React.forwardRef(
)
: options
const enabledOptions = filteredOptions.filter((o) => !o.disabled)
+ const selectedOptionClass =
+ tone === 'obsidian'
+ ? 'text-[var(--obs-shell-title)] bg-[var(--obs-shell-control-bg)]'
+ : 'text-apple-blue bg-apple-blue/5'
+ const selectedIconClass =
+ tone === 'obsidian'
+ ? 'text-[var(--obs-shell-title)]'
+ : 'text-apple-blue'
// 点击外部关闭
useEffect(() => {
@@ -331,12 +342,12 @@ export const Select = React.forwardRef(
className={cn(
'flex items-center gap-2 px-3 py-2 cursor-pointer text-sm transition-colors',
!hasValue
- ? 'text-apple-blue bg-apple-blue/5'
+ ? selectedOptionClass
: 'text-apple-label-tertiary hover:bg-apple-bg-secondary',
)}
>
{placeholder}
- {!hasValue && }
+ {!hasValue && }
)}
{filteredOptions.length === 0 ? (
@@ -362,7 +373,7 @@ export const Select = React.forwardRef(
? 'opacity-40 cursor-not-allowed'
: 'cursor-pointer',
!option.disabled && isSelected
- ? 'text-apple-blue bg-apple-blue/5'
+ ? selectedOptionClass
: !option.disabled && isHighlighted
? 'bg-apple-bg-secondary text-apple-label-primary'
: 'text-apple-label-primary hover:bg-apple-bg-secondary',
@@ -370,7 +381,7 @@ export const Select = React.forwardRef(
>
{option.label}
{isSelected && (
-
+
)}
)
diff --git a/furniture-3d-system/src/components/users/ActivateUserModal.tsx b/furniture-3d-system/src/components/users/ActivateUserModal.tsx
index 106e9448..1ff92b36 100644
--- a/furniture-3d-system/src/components/users/ActivateUserModal.tsx
+++ b/furniture-3d-system/src/components/users/ActivateUserModal.tsx
@@ -161,7 +161,7 @@ export function ActivateUserModal({
setErrors({});
if (!formData.role) {
- setErrors({ role: '请选择激活后的角色' });
+ setErrors({ role: '请选择账号权限' });
return;
}
@@ -224,14 +224,14 @@ export function ActivateUserModal({
- 账号激活后即可正式登录。你只能把该账号设置为低于你自己的角色等级。
+ 账号激活后即可正式登录。你只能把该账号设置为低于你自己的账号权限等级。
{user.name}