customer-service-layout.html 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <!-- 顶部导航栏 -->
  2. <header class="top-navbar">
  3. <div class="navbar-left">
  4. <button class="menu-toggle" (click)="toggleSidebar()">
  5. <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor">
  6. <line x1="3" y1="12" x2="21" y2="12"></line>
  7. <line x1="3" y1="6" x2="21" y2="6"></line>
  8. <line x1="3" y1="18" x2="21" y2="18"></line>
  9. </svg>
  10. </button>
  11. <h1 class="app-title">客服工作台</h1>
  12. </div>
  13. <div class="navbar-center">
  14. <div class="search-container">
  15. <input
  16. type="text"
  17. [(ngModel)]="searchTerm"
  18. placeholder="搜索项目、客户或动态..."
  19. class="search-input"
  20. (keyup.enter)="handleSearch()"
  21. />
  22. <button class="search-button" (click)="handleSearch()">
  23. <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor">
  24. <circle cx="11" cy="11" r="8"></circle>
  25. <path d="m21 21-4.35-4.35"></path>
  26. </svg>
  27. </button>
  28. </div>
  29. </div>
  30. <div class="navbar-right">
  31. <button class="notification-btn" (click)="toggleNotifications()">
  32. <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor">
  33. <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>
  34. </svg>
  35. <span class="notification-badge">{{ notifications().length }}</span>
  36. </button>
  37. <!-- 通知下拉菜单 -->
  38. <div class="notification-dropdown" *ngIf="showNotifications()">
  39. <div class="notification-header">
  40. <h3>消息通知</h3>
  41. <button class="close-btn" (click)="toggleNotifications()">
  42. <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
  43. <line x1="18" y1="6" x2="6" y2="18"></line>
  44. <line x1="6" y1="6" x2="18" y2="18"></line>
  45. </svg>
  46. </button>
  47. </div>
  48. <div class="notification-list">
  49. <div *ngFor="let notification of notifications()" class="notification-item">
  50. <div class="notification-icon">
  51. <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
  52. <circle cx="12" cy="12" r="10"></circle>
  53. <line x1="12" y1="8" x2="12" y2="12"></line>
  54. <line x1="12" y1="16" x2="12.01" y2="16"></line>
  55. </svg>
  56. </div>
  57. <div class="notification-content">
  58. <p>{{ notification }}</p>
  59. </div>
  60. </div>
  61. </div>
  62. <div class="notification-footer">
  63. <a href="#" class="view-all">查看全部</a>
  64. </div>
  65. </div>
  66. <div class="user-profile">
  67. <div style="width: 40px; height: 40px; background-color: #FFCCCC; color: #555555; display: flex; align-items: center; justify-content: center; font-size: 13.333333333333334px; font-weight: bold;" class="user-avatar" title="用户头像">CS</div>
  68. <span class="user-name">客服小李</span>
  69. </div>
  70. </div>
  71. </header>
  72. <!-- 主要内容区 -->
  73. <main class="main-content">
  74. <!-- 左侧侧边栏 -->
  75. <aside class="sidebar" [class.collapsed]="!sidebarOpen">
  76. <nav class="sidebar-nav">
  77. <a routerLink="/customer-service/dashboard" class="nav-item" routerLinkActive="active">
  78. <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor">
  79. <path d="M3 13h8V3H3v10zm0 8h8v-6H3v6zm10 0h8V11h-8v10zm0-18v6h8V3h-8z"></path>
  80. </svg>
  81. <span>工作台</span>
  82. </a>
  83. <a routerLink="/customer-service/consultation-order" class="nav-item" routerLinkActive="active">
  84. <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor">
  85. <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
  86. </svg>
  87. <span>客户咨询</span>
  88. </a>
  89. <a routerLink="/customer-service/project-list" class="nav-item" routerLinkActive="active">
  90. <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor">
  91. <line x1="8" y1="6" x2="21" y2="6"></line>
  92. <line x1="8" y1="12" x2="21" y2="12"></line>
  93. <line x1="8" y1="18" x2="21" y2="18"></line>
  94. <line x1="3" y1="6" x2="3.01" y2="6"></line>
  95. <line x1="3" y1="12" x2="3.01" y2="12"></line>
  96. <line x1="3" y1="18" x2="3.01" y2="18"></line>
  97. </svg>
  98. <span>项目列表</span>
  99. </a>
  100. <a routerLink="/customer-service/project-detail/1" class="nav-item" routerLinkActive="active">
  101. <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor">
  102. <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path>
  103. <polyline points="14 2 14 8 20 8"></polyline>
  104. <line x1="16" y1="13" x2="8" y2="13"></line>
  105. <line x1="16" y1="17" x2="8" y2="17"></line>
  106. <polyline points="10 9 9 9 8 9"></polyline>
  107. </svg>
  108. <span>项目详情(示例:复用设计师详情,客服只读)</span>
  109. </a>
  110. <a routerLink="/customer-service/case-library" class="nav-item" routerLinkActive="active">
  111. <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor">
  112. <path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path>
  113. <path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path>
  114. </svg>
  115. <span>案例库</span>
  116. </a>
  117. </nav>
  118. <div class="sidebar-footer">
  119. <div class="storage-info">
  120. <span>在线时长: 4.5h</span>
  121. </div>
  122. <button class="logout-btn" (click)="logout()">
  123. <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
  124. <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path>
  125. <polyline points="16 17 21 12 16 7"></polyline>
  126. <line x1="21" y1="12" x2="9" y2="12"></line>
  127. </svg>
  128. <span>退出登录</span>
  129. </button>
  130. </div>
  131. </aside>
  132. <!-- 中间内容区 -->
  133. <div class="content-wrapper" [class.expanded]="!sidebarOpen">
  134. <router-outlet />
  135. </div>
  136. </main>