diff --git a/frontend/src/pages/access/users/index.tsx b/frontend/src/pages/access/users/index.tsx index 4690c81..7ab549a 100644 --- a/frontend/src/pages/access/users/index.tsx +++ b/frontend/src/pages/access/users/index.tsx @@ -1,4 +1,4 @@ -import { Avatar, Button, Card, Col, Drawer, Form, Input, Popconfirm, Row, Select, Space, Switch, Tag, TreeSelect, Typography, Upload, message } from "antd"; +import { Avatar, Button, Card, Col, Drawer, Form, Input, Popconfirm, Row, Select, Space, Switch, Table, Tag, TreeSelect, Typography, Upload, message } from "antd"; import type { DefaultOptionType } from "antd/es/select"; import { useEffect, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; @@ -7,9 +7,8 @@ import { createUser, deleteUser, getUserDetail, listOrgs, listRoles, listTenants import { useDict } from "@/hooks/useDict"; import { usePermission } from "@/hooks/usePermission"; import PageHeader from "@/components/shared/PageHeader"; -import ListTable from "@/components/shared/ListTable/ListTable"; -import AppPagination from "@/components/shared/AppPagination"; import { LOGIN_NAME_PATTERN, sanitizeLoginName } from "@/utils/loginName"; +import { getStandardPagination } from "@/utils/pagination"; import type { SysOrg, SysRole, SysTenant, SysUser } from "@/types"; import "./index.less"; @@ -102,6 +101,7 @@ export default function Users() { const activeTenantId = useMemo(() => Number(localStorage.getItem("activeTenantId") || 0), []); const selectedTenantId = Form.useWatch("tenantId", form); const memberships = (Form.useWatch("memberships", form) || []) as Membership[]; + const passwordValue = Form.useWatch("password", form); const tenantMap = useMemo(() => { const map: Record = {}; @@ -216,6 +216,7 @@ export default function Users() { ...detail, roleIds: roleIds || [], password: "", + confirmPassword: "", tenantId: (detail as any).tenantId || detail.memberships?.[0]?.tenantId, orgId: (detail as any).orgId || detail.memberships?.[0]?.orgId, memberships: detail.memberships || [] @@ -304,24 +305,24 @@ export default function Users() { }, ...(isPlatformMode ? [{ - title: t("users.tenant"), - key: "tenant", - render: (_: any, record: SysUser) => { - if (record.memberships && record.memberships.length > 0) { - return ( -
- {record.memberships.slice(0, 2).map((membership: any) => ( - - {tenantMap[membership.tenantId] || `Tenant ${membership.tenantId}`} - - ))} - {record.memberships.length > 2 && +{record.memberships.length - 2} more} -
- ); - } - return {t("usersExt.noTenant")}; + title: t("users.tenant"), + key: "tenant", + render: (_: any, record: SysUser) => { + if (record.memberships && record.memberships.length > 0) { + return ( +
+ {record.memberships.slice(0, 2).map((membership: any) => ( + + {tenantMap[membership.tenantId] || `Tenant ${membership.tenantId}`} + + ))} + {record.memberships.length > 2 && +{record.memberships.length - 2} more} +
+ ); } - }] + return {t("usersExt.noTenant")}; + } + }] : []), { title: t("users.orgNode"), @@ -385,10 +386,10 @@ export default function Users() {
- {isPlatformMode && } className="users-search-input" style={{ width: 300 }} value={searchText} onChange={(event) => { setSearchText(event.target.value); setCurrent(1); }} allowClear aria-label={t("common.search")} /> - - + {isPlatformMode && } className="users-search-input" style={{ width: 300 }} value={searchText} onChange={(event) => { setSearchText(event.target.value); setCurrent(1); }} allowClear aria-label={t("common.search")} /> + + {can("sys:user:create") && } @@ -396,18 +397,9 @@ export default function Users() { -
- +
+ { setCurrent(page); setPageSize(size); })} /> - { - setCurrent(page); - setPageSize(size); - }} - />