|
|
@@ -202,10 +202,38 @@
|
|
|
<img :src="activeExpert.avatar" :alt="activeExpert.name" />
|
|
|
<!-- <span v-else>{{ activeExpert.name.slice(0, 1) }}</span> -->
|
|
|
</div>
|
|
|
- <div class="profile-tags">
|
|
|
- <span v-for="tag in activeExpert.tags" :key="tag" class="profile-tag">{{
|
|
|
- tag
|
|
|
- }}</span>
|
|
|
+ <div class="profile-summary">
|
|
|
+ <div class="summary-item summary-name">
|
|
|
+ <span class="summary-label">姓名</span>
|
|
|
+ <strong>{{ activeExpert.name }}</strong>
|
|
|
+ </div>
|
|
|
+ <div class="summary-item">
|
|
|
+ <span class="summary-label">年龄</span>
|
|
|
+ <strong>{{ activeExpert.age || '-' }}</strong>
|
|
|
+ </div>
|
|
|
+ <div class="summary-item">
|
|
|
+ <span class="summary-label">学历 / 职称</span>
|
|
|
+ <strong
|
|
|
+ >{{ activeExpert.education }} /
|
|
|
+ {{ activeExpert.professionalTitle || '-' }}</strong
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div class="summary-item summary-wide">
|
|
|
+ <span class="summary-label">工作经历</span>
|
|
|
+ <strong>{{ activeExpert.formerPost || '-' }}</strong>
|
|
|
+ </div>
|
|
|
+ <div class="summary-item summary-wide">
|
|
|
+ <span class="summary-label">现任岗位</span>
|
|
|
+ <strong>{{ activeExpert.company }} {{ activeExpert.jobTitle || '-' }}</strong>
|
|
|
+ </div>
|
|
|
+ <div class="summary-item summary-wide">
|
|
|
+ <span class="summary-label">工作成果</span>
|
|
|
+ <strong>{{ activeExpert.achievement || '-' }}</strong>
|
|
|
+ </div>
|
|
|
+ <div class="summary-item summary-wide">
|
|
|
+ <span class="summary-label">其他荣誉</span>
|
|
|
+ <strong>{{ activeExpert.honors || '-' }}</strong>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
@@ -751,6 +779,7 @@ type ExpertProfile = {
|
|
|
formerPost: string
|
|
|
jobTitle: string
|
|
|
professionalTitle: string
|
|
|
+ honors: string
|
|
|
tags: string[]
|
|
|
achievement: string
|
|
|
records: ExpertRecord[]
|
|
|
@@ -772,6 +801,7 @@ type ExpertItem = {
|
|
|
education: string
|
|
|
specialDirection: number[]
|
|
|
achievement: string
|
|
|
+ remark?: string
|
|
|
softwareSkills: number[]
|
|
|
teams?: Array<{ id: number; teamName?: string }>
|
|
|
}
|
|
|
@@ -927,6 +957,7 @@ const buildExpertProfile = (expert: ExpertItem, groupLabel?: string): ExpertProf
|
|
|
formerPost: expert.formerPost || '',
|
|
|
jobTitle: expert.jobTitle || '',
|
|
|
professionalTitle: expert.professionalTitle || '',
|
|
|
+ honors: expert.remark || '',
|
|
|
tags: [expert.professionalTitle].filter(Boolean),
|
|
|
achievement: expert.achievement || '暂无',
|
|
|
records: []
|
|
|
@@ -2108,6 +2139,42 @@ onMounted(async () => {
|
|
|
display: block;
|
|
|
}
|
|
|
|
|
|
+.profile-summary {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 8px;
|
|
|
+}
|
|
|
+
|
|
|
+.summary-item {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 3px;
|
|
|
+ padding: 9px 10px;
|
|
|
+ border: 1px solid #dbe3df;
|
|
|
+ border-radius: 8px;
|
|
|
+ background: #fdfefe;
|
|
|
+ overflow-wrap: anywhere;
|
|
|
+}
|
|
|
+
|
|
|
+.summary-label {
|
|
|
+ color: #7a8a89;
|
|
|
+ font-size: 11px;
|
|
|
+ line-height: 1.3;
|
|
|
+}
|
|
|
+
|
|
|
+.summary-item strong {
|
|
|
+ color: #203130;
|
|
|
+ font-size: 12px;
|
|
|
+ font-weight: 700;
|
|
|
+ line-height: 1.55;
|
|
|
+ white-space: pre-line;
|
|
|
+}
|
|
|
+
|
|
|
+.summary-name strong {
|
|
|
+ color: #b45172;
|
|
|
+ font-size: 18px;
|
|
|
+}
|
|
|
+
|
|
|
.profile-tags {
|
|
|
display: flex;
|
|
|
gap: 8px;
|