admin-dashboard.component.html 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <header class="page-header">
  2. <div><p>ADMIN OVERVIEW</p><h1>管理概览</h1><span>查看核心业务数据与迁移运行状态</span></div>
  3. <button type="button" (click)="load()" [disabled]="loading()"><lucide-icon [img]="icons.RefreshCw" [size]="17" [class.spin]="loading()" />刷新数据</button>
  4. </header>
  5. @if (loading() && !data()) {
  6. <div class="state"><lucide-icon class="spin" [img]="icons.LoaderCircle" [size]="28" />正在通过云函数汇总数据…</div>
  7. } @else if (error()) {
  8. <div class="state error"><strong>暂时无法载入概览</strong><span>{{ error() }}</span><button type="button" (click)="load()">重新加载</button></div>
  9. } @else {
  10. @if (data(); as dashboard) {
  11. <section class="welcome">
  12. <div><span>欢迎回来</span><h2>{{ dashboard.identity.displayName || dashboard.identity.username }}</h2><p>当前数据范围:{{ dashboard.identity.company ? '所属帐套' : (dashboard.identity.isSuperAdmin ? '全部帐套' : '未分配帐套') }}</p></div>
  13. <div class="migration-progress"><span>规范化迁移登记</span><strong>{{ dashboard.migration.registeredRecords | number }}</strong><small>SQL Server 来源记录</small></div>
  14. </section>
  15. <section class="metric-grid">
  16. @for (metric of dashboard.metrics; track metric.className) {
  17. <a [routerLink]="metric.route" class="metric-card">
  18. <span>{{ metric.label }}</span><strong>{{ metric.count | number }}</strong><small>{{ metric.className }}</small><lucide-icon [img]="icons.ArrowRight" [size]="18" />
  19. </a>
  20. }
  21. </section>
  22. <section class="status-grid">
  23. <article>
  24. <div class="status-icon blue"><lucide-icon [img]="icons.Database" [size]="22" /></div>
  25. <div><span>来源对象</span><strong>{{ dashboard.migration.sourceObjects }}</strong><small>表、视图与函数审计登记</small></div>
  26. </article>
  27. <article>
  28. <div class="status-icon green"><lucide-icon [img]="icons.TableProperties" [size]="22" /></div>
  29. <div><span>已迁移业务类</span><strong>{{ dashboard.migration.migratedClasses }}</strong><small>Parse 规范化类</small></div>
  30. </article>
  31. <article>
  32. <div class="status-icon amber"><lucide-icon [img]="icons.FunctionSquare" [size]="22" /></div>
  33. <div><span>已部署云函数</span><strong>{{ dashboard.migration.cloudFunctions }}</strong><small>Function 表有效记录</small></div>
  34. </article>
  35. </section>
  36. }
  37. }