project-bottom-card.component.html 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <div class="project-bottom-card">
  2. <!-- 加载状态 -->
  3. @if (loading) {
  4. <div class="card-skeleton">
  5. <div class="title-skeleton"></div>
  6. <div class="buttons-skeleton">
  7. <div class="button-skeleton"></div>
  8. <div class="button-skeleton"></div>
  9. </div>
  10. </div>
  11. } @else {
  12. <!-- 项目内容 -->
  13. <div class="card-content">
  14. <!-- 左侧:项目标题和状态 -->
  15. <div class="project-info">
  16. <h2 class="project-title">{{ getProjectTitle() }}</h2>
  17. <div class="project-meta">
  18. <span class="status-badge" [class]="getStatusClass()">
  19. {{ getProjectStatus() }}
  20. </span>
  21. @if (project?.get('deadline')) {
  22. <span class="deadline">
  23. 截止: {{ project!.get('deadline') | date:'MM-dd' }}
  24. </span>
  25. }
  26. </div>
  27. </div>
  28. <!-- 右侧:操作按钮 -->
  29. <div class="action-buttons">
  30. <button
  31. class="action-button files-button"
  32. (click)="onShowFiles()"
  33. [disabled]="loading">
  34. <div class="button-content">
  35. <svg class="button-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  36. <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path>
  37. <polyline points="14,2 14,8 20,8"></polyline>
  38. <line x1="16" y1="13" x2="8" y2="13"></line>
  39. <line x1="16" y1="17" x2="8" y2="17"></line>
  40. <polyline points="10,9 9,9 8,9"></polyline>
  41. </svg>
  42. <span class="button-text">文件</span>
  43. @if (fileCount > 0) {
  44. <span class="button-badge">{{ fileCount }}</span>
  45. }
  46. </div>
  47. </button>
  48. <button
  49. class="action-button members-button"
  50. (click)="onShowMembers()"
  51. [disabled]="loading">
  52. <div class="button-content">
  53. <svg class="button-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  54. <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
  55. <circle cx="9" cy="7" r="4"></circle>
  56. <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
  57. <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
  58. </svg>
  59. <span class="button-text">成员</span>
  60. @if (memberCount > 0) {
  61. <span class="button-badge">{{ memberCount }}</span>
  62. }
  63. </div>
  64. </button>
  65. </div>
  66. </div>
  67. }
  68. </div>