您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

195 行
11 KiB

  1. <div class="home-container pb-5">
  2. <div class="pt-4">
  3. <div class="container">
  4. <h1>{{ 'user.hello' | translate }} {{ user?.firstName }}!</h1>
  5. <p *ngIf="userIsAdmin"><a routerLink="/users">Manage Users</a></p>
  6. </div>
  7. </div>
  8. <div class="spt-home-cards">
  9. <div class="container">
  10. <div class="row pt-4 pb-4 d-flex">
  11. <div class="col d-flex">
  12. <a class="card" routerLink="/customer" routerLinkActive="active">
  13. <div class="card-body position-relative bi bi-emoji-heart-eyes">
  14. <h3 class="position-absolute m-0">{{ 'basic.customer' | translate }}</h3>
  15. </div>
  16. </a>
  17. </div>
  18. <div class="col d-flex">
  19. <a class="card" routerLink="/supplier" routerLinkActive="active">
  20. <div class="card-body position-relative bi bi-emoji-kiss">
  21. <h3 class="position-absolute m-0">{{ 'basic.supplier' | translate }}</h3>
  22. </div>
  23. </a>
  24. </div>
  25. <div class="col d-flex">
  26. <a class="card" routerLink="/service" routerLinkActive="active">
  27. <div class="card-body position-relative bi bi-emoji-smile">
  28. <h3 class="position-absolute m-0">{{ 'basic.service' | translate }}</h3>
  29. </div>
  30. </a>
  31. </div>
  32. </div>
  33. </div>
  34. <div class="container mb-5">
  35. <div class="row pt-4 pb-4 d-flex">
  36. <div class="col d-flex">
  37. <a class="card" routerLink="/products" routerLinkActive="active">
  38. <div class="card-body position-relative bi bi-droplet-fill">
  39. <h3 class="position-absolute m-0">{{ 'basic.products' | translate }}</h3>
  40. </div>
  41. </a>
  42. </div>
  43. <div class="col d-flex">
  44. <a class="card" routerLink="/tasks" routerLinkActive="active">
  45. <div class="card-body position-relative bi bi-list-check">
  46. <h3 class="position-absolute m-0">{{ 'basic.tasks' | translate }}</h3>
  47. </div>
  48. </a>
  49. </div>
  50. <div class="col d-flex">
  51. <a class="card" routerLink="/documents" routerLinkActive="active">
  52. <div class="card-body position-relative bi bi-journals">
  53. <h3 class="position-absolute m-0">{{ 'basic.documents' | translate }}</h3>
  54. </div>
  55. </a>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. <div class="container spt-container">
  61. <app-toggle #togglePosts [headline]="('user.my' | translate) + ' ' + ('basic.tasks' | translate)">
  62. <div class="spt-accordion position-relative">
  63. <button class="btn btn-primary toggle-btn" (click)="openModalNewTask()">{{'basic.new-task' | translate}}</button>
  64. <div class="tasks mb-3" *ngFor="let task of tasks">
  65. <div class="card p-3">
  66. <div class="position-relative" data-bs-toggle="collapse" [attr.data-bs-target]="'#collapse-' + ApiConverter.extractId(task.id)"
  67. aria-expanded="false"
  68. aria-controls="collapseExample">
  69. <h3 class="m-0">{{task.partnerName}}</h3>
  70. <span class="info d-flex position-absolute">
  71. <span class="due-date">{{ task.dueAt | date:'dd.MM.YYYY':'GMT+0000' }}</span>
  72. <span class="importance" [attr.data-importance]="task.prio"></span>
  73. </span>
  74. <h2 class="m-0">{{task.headline}}</h2>
  75. </div>
  76. <div class="collapse" id="collapse-{{ApiConverter.extractId(task.id)}}">
  77. <div class="pt-3 pe-5 position-relative">
  78. <p class="m-0" [innerHTML]="apiConverter.getSafeLongtext(task.description)"></p>
  79. <p>Zugewiesen an: {{task.assignedToName}}</p>
  80. <span *ngIf="task.createdBy === user?.id" class="position-absolute bi bi-pencil p-2"
  81. data-type="user-tool" data-action="edit" (click)="openModalEditTask(task)"></span>
  82. </div>
  83. </div>
  84. </div>
  85. <ng-container *ngIf="task.id && taskNotesVisibility.get(task.id)">
  86. <div class="card ms-5" *ngFor="let taskNote of task.taskNotes">
  87. <div class="card-body">
  88. <div class="d-flex justify-content-between align-items-center">
  89. <p>{{ taskNote.createdAt | date:'dd.MM.YYYY' }}</p>
  90. <p>{{ taskNote.ownerName }}</p>
  91. </div>
  92. <div>
  93. <p>{{ taskNote.message }}</p>
  94. </div>
  95. <span *ngIf="taskNote.owner === user?.id" class="position-absolute bi bi-pencil p-2"
  96. data-type="user-tool" data-action="edit" (click)="openModalEditTaskNote(taskNote)"></span>
  97. </div>
  98. </div>
  99. </ng-container>
  100. <div class="d-flex justify-content-end mt-1">
  101. <span *ngIf="task.taskNotes?.length !== 0" role="button" class="badge bg-secondary p-2 me-2"
  102. (click)="showTaskNotes(task)">
  103. <ng-container *ngIf="task.id && taskNotesVisibility.get(task.id)">{{ 'basic.hide-comments' | translate }}</ng-container>
  104. <ng-container *ngIf="task.id && !taskNotesVisibility.get(task.id)">{{ 'basic.show-comments' | translate }}</ng-container>
  105. </span>
  106. <span role="button" class="badge bg-secondary p-2" (click)="openModalNewTaskNote(task)">{{'basic.comment-it' | translate}}</span>
  107. </div>
  108. </div>
  109. <mat-paginator *ngIf="tasks.length > 0" class="rounded-1"
  110. [pageSizeOptions]="[10,20,30]"
  111. [length]="tasksLength"
  112. (page)="tasksHandlePageEvent($event)"
  113. [pageSize]="tasksPageSize"
  114. [pageIndex]="tasksPageIndex"
  115. showFirstLastButtons>
  116. </mat-paginator>
  117. </div>
  118. </app-toggle>
  119. </div>
  120. <!-- <div class="container spt-container">-->
  121. <!-- <div class="d-flex justify-content-between align-items-start">-->
  122. <!-- <h2>{{'user.my' | translate}} {{'basic.customer' | translate}}</h2>-->
  123. <!-- </div>-->
  124. <!-- <table mat-table [dataSource]="dataSource" matSort (matSortChange)="onSortChange($event)"-->
  125. <!-- class="mat-elevation-z8 mb-3">-->
  126. <!-- <ng-container matColumnDef="pos">-->
  127. <!-- <th mat-header-cell *matHeaderCellDef>-->
  128. <!-- {{ 'overview.number' | translate }}-->
  129. <!-- </th>-->
  130. <!-- <td mat-cell-->
  131. <!-- *matCellDef="let element">{{ (pageSize * pageIndex) + dataSource.filteredData.indexOf(element) + 1 }}-->
  132. <!-- </td>-->
  133. <!-- </ng-container>-->
  134. <!-- <ng-container matColumnDef="image">-->
  135. <!-- <th mat-header-cell *matHeaderCellDef>-->
  136. <!-- {{ 'overview.logo' | translate }}-->
  137. <!-- </th>-->
  138. <!-- <td mat-cell *matCellDef="let element">-->
  139. <!-- <img role="button" src="{{ element.logoUrl }}" (click)="navigateToPartnerDetails(element)" width="40"-->
  140. <!-- height="40"/>-->
  141. <!-- </td>-->
  142. <!-- </ng-container>-->
  143. <!-- <ng-container matColumnDef="name">-->
  144. <!-- <th mat-header-cell *matHeaderCellDef mat-sort-header-->
  145. <!-- sortActionDescription="{{ 'overview.sort' | translate }}: {{ partnerNameOne }}">-->
  146. <!-- {{ partnerNameOne }}-->
  147. <!-- </th>-->
  148. <!-- <td mat-cell *matCellDef="let element"><span role="button"-->
  149. <!-- (click)="navigateToPartnerDetails(element)">{{ element.name }}</span>-->
  150. <!-- </td>-->
  151. <!-- </ng-container>-->
  152. <!-- <ng-container matColumnDef="address">-->
  153. <!-- <th mat-header-cell *matHeaderCellDef mat-sort-header="address"-->
  154. <!-- sortActionDescription="{{ 'overview.sort' | translate }}: {{ 'overview.address' | translate }}">-->
  155. <!-- {{ 'overview.address' | translate }}-->
  156. <!-- </th>-->
  157. <!-- <td mat-cell *matCellDef="let element">{{ element.street }} {{ element.streetNo }}-->
  158. <!-- <br/>{{ element.zip }} {{ element.city }}-->
  159. <!-- <br/>{{ element.country }}-->
  160. <!-- </td>-->
  161. <!-- </ng-container>-->
  162. <!-- <ng-container matColumnDef="website">-->
  163. <!-- <th mat-header-cell *matHeaderCellDef mat-sort-header-->
  164. <!-- sortActionDescription="{{ 'overview.sort' | translate }}: {{ 'overview.website' | translate }}">-->
  165. <!-- {{ 'overview.website' | translate }}-->
  166. <!-- </th>-->
  167. <!-- <td mat-cell *matCellDef="let element"><a href="{{ element.website }}"-->
  168. <!-- target="_blank">{{ element.website }}</a>-->
  169. <!-- </td>-->
  170. <!-- </ng-container>-->
  171. <!-- <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>-->
  172. <!-- <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>-->
  173. <!-- </table>-->
  174. <!-- <mat-paginator class="rounded-1"-->
  175. <!-- [pageSizeOptions]="[10,25,50]"-->
  176. <!-- [length]="length"-->
  177. <!-- (page)="handlePageEvent($event)"-->
  178. <!-- [pageSize]="pageSize"-->
  179. <!-- [pageIndex]="pageIndex"-->
  180. <!-- showFirstLastButtons>-->
  181. <!-- </mat-paginator>-->
  182. <!-- </div>-->
  183. </div>