|
@@ -93,7 +93,7 @@
|
|
|
<div class="feedback-date">{{ formatDate(feedback.date) }}</div>
|
|
|
<div class="feedback-rating">
|
|
|
<span *ngFor="let star of [1,2,3,4,5]">
|
|
|
- <i class="fa" [ngClass]="{ 'fa-star': star <= feedback.rating, 'fa-star-o': star > feedback.rating }" style="color: #FFD700;"></i>
|
|
|
+ <i class="fa" [ngClass]="{ 'fa-star': star <= feedback.rating, 'fa-star-o': star > feedback.rating }"></i>
|
|
|
</span>
|
|
|
</div>
|
|
|
<div class="feedback-content">{{ feedback.content }}</div>
|
|
@@ -267,7 +267,7 @@
|
|
|
<h4 class="card-title">项目团队</h4>
|
|
|
<div class="team-info">
|
|
|
<div class="team-member">
|
|
|
- <div style="width: 64px; height: 48px; background-color: #DCDCDC; color: #555555; display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: bold;" class="member-avatar" title="客服小李">IMG</div>
|
|
|
+ <div class="member-avatar" title="客服小李">IMG</div>
|
|
|
<div class="member-details">
|
|
|
<div class="member-name">客服小李</div>
|
|
|
<div class="member-role">客户经理</div>
|
|
@@ -279,7 +279,7 @@
|
|
|
</button>
|
|
|
</div>
|
|
|
<div class="team-member">
|
|
|
- <div style="width: 91px; height: 48px; background-color: #DCDCDC; color: #555555; display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: bold;" class="member-avatar" title="张设计师">IMG</div>
|
|
|
+ <div class="member-avatar" title="张设计师">IMG</div>
|
|
|
<div class="member-details">
|
|
|
<div class="member-name">张设计师</div>
|
|
|
<div class="member-role">主设计师</div>
|
|
@@ -431,90 +431,6 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <!-- 修复消息输入区域,避免重复定义 -->
|
|
|
- <div class="message-input-area">
|
|
|
- <!-- 只使用单向绑定 + input事件 -->
|
|
|
- <textarea
|
|
|
- [value]="newMessage()"
|
|
|
- (input)="onMessageInput($event)"
|
|
|
- placeholder="输入消息内容..."
|
|
|
- rows="3"
|
|
|
- (keydown.enter.shift)="$event.preventDefault()"
|
|
|
- (keydown.enter)="sendMessage()"
|
|
|
- ></textarea>
|
|
|
- <div class="message-actions">
|
|
|
- <button class="secondary-btn">
|
|
|
- <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor">
|
|
|
- <path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"></path>
|
|
|
- <polyline points="14 2 14 8 20 8"></polyline>
|
|
|
- </svg>
|
|
|
- <span>上传文件</span>
|
|
|
- </button>
|
|
|
- <button class="primary-btn" (click)="sendMessage()" [disabled]="!newMessage().trim()">
|
|
|
- <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor">
|
|
|
- <line x1="22" y1="2" x2="11" y2="13"></line>
|
|
|
- <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>
|
|
|
- </svg>
|
|
|
- <span>发送</span>
|
|
|
- </button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- 文件标签内容 -->
|
|
|
- <div *ngIf="activeTab() === 'files'" class="tab-content">
|
|
|
- <div class="files-filter">
|
|
|
- <div class="filter-options">
|
|
|
- <button class="filter-btn active">全部文件</button>
|
|
|
- <button class="filter-btn">文档</button>
|
|
|
- <button class="filter-btn">图片</button>
|
|
|
- <button class="filter-btn">表格</button>
|
|
|
- </div>
|
|
|
- <div class="search-box">
|
|
|
- <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
|
|
|
- <circle cx="11" cy="11" r="8"></circle>
|
|
|
- <line x1="21" y1="21" x2="16.65" y2="16.65"></line>
|
|
|
- </svg>
|
|
|
- <input type="text" placeholder="搜索文件...">
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="files-list">
|
|
|
- <div *ngFor="let file of files()" class="file-item">
|
|
|
- <div class="file-icon" [class.type-document]="file.type === 'document'" [class.type-image]="file.type === 'image'" [class.type-spreadsheet]="file.type === 'spreadsheet'">
|
|
|
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor">
|
|
|
- <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path>
|
|
|
- <polyline points="14 2 14 8 20 8"></polyline>
|
|
|
- <line x1="16" y1="13" x2="8" y2="13"></line>
|
|
|
- <line x1="16" y1="17" x2="8" y2="17"></line>
|
|
|
- <polyline points="10 9 9 9 8 9"></polyline>
|
|
|
- </svg>
|
|
|
- </div>
|
|
|
- <div class="file-info">
|
|
|
- <h4 class="file-name">{{ file.name }}</h4>
|
|
|
- <div class="file-meta">
|
|
|
- <span class="file-uploader">上传者:{{ file.uploadedBy }}</span>
|
|
|
- <span class="file-date">{{ formatDate(file.uploadedAt) }}</span>
|
|
|
- <span class="file-size">{{ file.size }}</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="file-actions">
|
|
|
- <button class="action-btn btn-hover-effect" (click)="previewFile(file)" title="预览">
|
|
|
- <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor">
|
|
|
- <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
|
|
- </svg>
|
|
|
- </button>
|
|
|
- <button class="action-btn btn-hover-effect" (click)="downloadFile(file)" title="下载">
|
|
|
- <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor">
|
|
|
- <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
|
|
|
- <polyline points="7 10 12 15 17 10"></polyline>
|
|
|
- <line x1="12" y1="15" x2="12" y2="3"></line>
|
|
|
- </svg>
|
|
|
- </button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|