import Add from "@mui/icons-material/Add"; import EditOutlined from "@mui/icons-material/EditOutlined"; import TextField from "@mui/material/TextField"; import Tooltip from "@mui/material/Tooltip"; import { formatMillis } from "@/shared/utils/time.js"; import { AdminSwitch } from "@/shared/ui/AdminSwitch.jsx"; import { DataState } from "@/shared/ui/DataState.jsx"; import { IconButton } from "@/shared/ui/IconButton.jsx"; import { managerStatusFilters, statusLabels } from "@/features/host-org/constants.js"; import { HostOrgActionModal } from "@/features/host-org/components/HostOrgActionModal.jsx"; import { HostOrgPerson, hostOrgRegionName } from "@/features/host-org/components/HostOrgIdentity.jsx"; import { HostOrgTable } from "@/features/host-org/components/HostOrgTable.jsx"; import { HostOrgToolbar } from "@/features/host-org/components/HostOrgToolbar.jsx"; import { useHostManagersPage } from "@/features/host-org/hooks/useHostManagersPage.js"; import { createOptionsColumnFilter, createTextColumnFilter } from "@/shared/ui/tableFilters.js"; import styles from "@/features/host-org/host-org.module.css"; const managerPermissionOptions = [ { key: "canGrantAvatarFrame", label: "头像框" }, { key: "canGrantVehicle", label: "Car" }, { key: "canUpdateUserLevel", label: "升级等级" }, { key: "canAddBdLeader", label: "BD Leader" }, { key: "canAddAdmin", label: "Admin" }, { key: "canAddSuperadmin", label: "Superadmin" }, { key: "canBlockUser", label: "Block User" }, ]; const managerColumns = [ { key: "userId", label: "经理", render: (item) => , width: "minmax(220px, 1.25fr)", }, { key: "regionId", label: "区域", render: (item, _index, context) => hostOrgRegionName(item, context?.regionOptions), width: "minmax(130px, 0.75fr)", }, { key: "contact", label: "联系方式", render: (item) => item.contact || "-", width: "minmax(150px, 0.85fr)", }, { key: "permissions", label: "权限详情", render: (item) => , width: "minmax(270px, 1.35fr)", }, { key: "status", label: "状态", render: (item) => , width: "minmax(90px, 0.7fr)", }, { key: "bdLeaderCount", label: "BD Leader/Admin", render: (item) => item.bdLeaderCount || 0, width: "minmax(140px, 0.8fr)", }, { key: "lastInvitedAtMs", label: "最近邀请", render: (item) => formatMillis(item.lastInvitedAtMs), width: "minmax(170px, 1fr)", }, { key: "updatedAtMs", label: "更新时间", render: (item) => formatMillis(item.updatedAtMs), width: "minmax(170px, 1fr)", }, { key: "actions", label: "操作", render: (item, _index, context) => , resizable: false, width: "88px", }, ]; export function HostManagersPage() { const page = useHostManagersPage(); const isEditing = page.activeAction === "manager-edit"; const formDisabled = isEditing ? !page.abilities.canUpdate : !page.abilities.canCreate; const items = page.data.items || []; const total = page.data.total || 0; const toolbarActions = [ page.abilities.canCreate ? { icon: , label: "添加经理", onClick: page.openManagerForm, variant: "primary" } : null, ].filter(Boolean); const columns = managerColumns.map((column) => { if (column.key === "userId") { return { ...column, filter: createTextColumnFilter({ placeholder: "搜索经理", value: page.query, onChange: page.changeQuery, }), }; } if (column.key === "status") { return { ...column, filter: createOptionsColumnFilter({ options: managerStatusFilters, placeholder: "搜索状态", value: page.status, onChange: page.changeStatus, }), }; } return column; }); return (
0 ? { page: page.page, pageSize: page.data.pageSize || 50, total, onPageChange: page.setPage, } : undefined } rowKey={(item) => `manager-${item.userId}`} />
page.setManagerForm({ ...page.managerForm, targetUserId: event.target.value })} /> page.setManagerForm({ ...page.managerForm, contact: event.target.value })} />
); } function ManagerUser({ item }) { return ( ); } function ManagerStatus({ item }) { const active = item.status === "active"; return ( {statusLabels[item.status] || item.status || "-"} ); } function ManagerPermissions({ item }) { return (
{managerPermissionOptions.map((permission) => { const enabled = item?.[permission.key] !== false; return ( {permission.label} {enabled ? "开" : "关"} ); })}
); } function ManagerActions({ item, page }) { const disabled = !page?.abilities?.canUpdate; return (
page.openManagerEdit(item)}>
); } function PermissionSwitchGrid({ disabled, form, onChange }) { return (
{managerPermissionOptions.map((permission) => ( ))}
); }