feat(platform): separate internal evidence navigation
This commit is contained in:
@@ -75,6 +75,8 @@ const navGroups = [
|
||||
]
|
||||
}
|
||||
];
|
||||
const customerNavGroups = navGroups.filter((group) => group.audience !== '内部');
|
||||
const internalNavGroups = navGroups.filter((group) => group.audience === '内部');
|
||||
|
||||
const customerPrimaryPath = [
|
||||
{ label: '车辆地图', page: 'map' as const },
|
||||
@@ -181,6 +183,7 @@ export function AppShell({
|
||||
}) {
|
||||
const [keyword, setKeyword] = useState('');
|
||||
const [searching, setSearching] = useState(false);
|
||||
const [internalEvidenceExpanded, setInternalEvidenceExpanded] = useState(false);
|
||||
const amapConfigured = isAMapConfigured();
|
||||
const alertLabel = alertButtonLabel(linkIssueCount, activeAlertRuleCount, p0AlertRuleCount);
|
||||
const alertClassName = alertButtonClassName(linkIssueCount, activeAlertRuleCount, p0AlertRuleCount);
|
||||
@@ -269,7 +272,7 @@ export function AppShell({
|
||||
</div>
|
||||
</div>
|
||||
<div className="vp-nav-groups">
|
||||
{navGroups.map((group) => (
|
||||
{customerNavGroups.map((group) => (
|
||||
<div key={group.title} className="vp-nav-group">
|
||||
<div className="vp-nav-section-title">
|
||||
<span className="vp-nav-section-title-main">
|
||||
@@ -286,6 +289,48 @@ export function AppShell({
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
<div className="vp-internal-evidence-zone" aria-label="内部证据区">
|
||||
<div className="vp-internal-evidence-zone-head">
|
||||
<div>
|
||||
<strong>内部证据区</strong>
|
||||
<span>运维证据只在客户问题需要解释时展开,不作为客户默认入口。</span>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
aria-label={internalEvidenceExpanded ? '收起内部证据区' : '展开内部证据区'}
|
||||
onClick={() => setInternalEvidenceExpanded((value) => !value)}
|
||||
>
|
||||
{internalEvidenceExpanded ? '收起' : '展开'}
|
||||
</button>
|
||||
</div>
|
||||
<div className={internalEvidenceExpanded ? 'vp-internal-evidence-zone-body vp-internal-evidence-zone-body-open' : 'vp-internal-evidence-zone-body'}>
|
||||
{internalNavGroups.map((group) => (
|
||||
<div key={group.title} className="vp-nav-group vp-nav-group-internal">
|
||||
<div className="vp-nav-section-title">
|
||||
<span className="vp-nav-section-title-main">
|
||||
<span>{group.title}</span>
|
||||
<Tag size="small" color="grey">{group.audience}</Tag>
|
||||
</span>
|
||||
<small>{group.description}</small>
|
||||
</div>
|
||||
<div className="vp-internal-evidence-actions">
|
||||
{group.items.map((item) => (
|
||||
<button
|
||||
key={item.itemKey}
|
||||
type="button"
|
||||
className={selectedPage === item.itemKey ? 'vp-internal-evidence-action vp-internal-evidence-action-active' : 'vp-internal-evidence-action'}
|
||||
aria-label={`内部证据区 ${item.text}`}
|
||||
onClick={() => onChange(item.itemKey as PageKey)}
|
||||
>
|
||||
<span>{item.icon}</span>
|
||||
<strong>{item.text}</strong>
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
<main className="vp-main">
|
||||
|
||||
Reference in New Issue
Block a user