yanghao 3 недель назад
Родитель
Сommit
f3937aa732
2 измененных файлов с 98 добавлено и 36 удалено
  1. 11 28
      src/views/expert/list/index.vue
  2. 87 8
      src/views/expert/team/index.vue

+ 11 - 28
src/views/expert/list/index.vue

@@ -152,11 +152,6 @@
             </div>
 
             <div class="profile-main">
-              <div class="info-block">
-                <span class="info-label">团队所属公司</span>
-                <strong>{{ activeExpert.company }}</strong>
-              </div>
-
               <div class="info-block">
                 <span class="info-label">专家序列 / 梯队 / 学历</span>
                 <strong
@@ -165,16 +160,6 @@
                 >
               </div>
 
-              <div class="info-block">
-                <span class="info-label">所属团队</span>
-                <strong>{{
-                  currentExpertDetail?.teams
-                    ?.map((team) => team.teamName)
-                    .filter(Boolean)
-                    .join('、') || '-'
-                }}</strong>
-              </div>
-
               <div class="info-block">
                 <span class="info-label">专业方向</span>
                 <strong>{{ activeExpert.direction.join('、') || '-' }}</strong>
@@ -211,8 +196,10 @@
               </div>
 
               <div class="profile-actions">
-                <el-button type="success" size="large" @click="handleJoinTeam">加入团队</el-button>
-                <el-button size="large" plain @click="handleEdit">维护档案</el-button>
+                <el-button type="primary" size="large" @click="handleJoinTeam">加入团队</el-button>
+                <el-button size="large" type="primary" plain @click="handleEdit"
+                  >维护档案</el-button
+                >
                 <el-button size="large" plain>下载履历</el-button>
               </div>
             </div>
@@ -455,7 +442,9 @@
 
       <template #footer>
         <el-button @click="closeDialog">取 消</el-button>
-        <el-button type="primary" @click="submitExpertForm" :loading="submitLoading">确 定</el-button>
+        <el-button type="primary" @click="submitExpertForm" :loading="submitLoading"
+          >确 定</el-button
+        >
       </template>
     </Dialog>
 
@@ -862,7 +851,7 @@ const buildExpertProfile = (expert: ExpertItem, groupLabel?: string): ExpertProf
     formerPost: expert.formerPost || '',
     jobTitle: expert.jobTitle || '',
     professionalTitle: expert.professionalTitle || '',
-    tags: [groupLabel, ...teamNames, expert.professionalTitle].filter(Boolean),
+    tags: [expert.professionalTitle].filter(Boolean),
     achievement: expert.achievement || '暂无',
     records: []
   }
@@ -981,9 +970,7 @@ const syncTeamSelection = async () => {
   syncingTeamSelection.value = true
   try {
     teamTableRef.value?.clearSelection()
-    const selectedTeamIds = new Set(
-      Object.keys(tempSelectedTeamMap.value).map((id) => Number(id))
-    )
+    const selectedTeamIds = new Set(Object.keys(tempSelectedTeamMap.value).map((id) => Number(id)))
     teamList.value.forEach((row) => {
       if (selectedTeamIds.has(row.id)) {
         teamTableRef.value?.toggleRowSelection(row, true)
@@ -1021,9 +1008,7 @@ const openTeamDialog = async () => {
   teamDialogMode.value = 'form'
   teamDialogVisible.value = true
   tempSelectedTeams.value = [...selectedTeams.value]
-  tempSelectedTeamMap.value = Object.fromEntries(
-    selectedTeams.value.map((team) => [team.id, team])
-  )
+  tempSelectedTeamMap.value = Object.fromEntries(selectedTeams.value.map((team) => [team.id, team]))
   await getTeamOptionsList()
 }
 
@@ -1050,9 +1035,7 @@ const ensureSelectedTeams = async (teamIds: number[]) => {
 
   selectedTeams.value = teamIds.map((id) => teamMap.get(id)).filter(Boolean)
   tempSelectedTeams.value = [...selectedTeams.value]
-  tempSelectedTeamMap.value = Object.fromEntries(
-    selectedTeams.value.map((team) => [team.id, team])
-  )
+  tempSelectedTeamMap.value = Object.fromEntries(selectedTeams.value.map((team) => [team.id, team]))
 }
 
 const handleJoinTeam = async () => {

+ 87 - 8
src/views/expert/team/index.vue

@@ -63,6 +63,7 @@
             class="team-logo"
             :preview-src-list="[row.avatar]"
             preview-teleported
+            @click.stop
           />
           <span v-else>-</span>
         </template>
@@ -159,9 +160,34 @@
         </div>
       </div>
 
-      <el-table :data="teamMembers" class="member-table" table-layout="fixed">
+      <el-table
+        :data="teamMembers"
+        class="member-table"
+        style="margin-top: 20px"
+        table-layout="fixed"
+      >
         <el-table-column prop="expertName" label="专家姓名" min-width="100" fixed="left" />
-        <el-table-column label="所属公司" min-width="180">
+        <el-table-column label="头像" align="center" width="120">
+          <template #default="{ row }">
+            <el-image
+              :src="row.avatar"
+              fit="cover"
+              class="team-logo"
+              :preview-src-list="[row.avatar]"
+              preview-teleported
+              @click.stop
+            />
+          </template>
+        </el-table-column>
+        <el-table-column prop="echelonLabel" label="梯队" align="center" min-width="100" />
+        <el-table-column
+          prop="expertRankLabel"
+          show-overflow-tooltip
+          label="序列"
+          align="center"
+          min-width="100"
+        />
+        <el-table-column label="所属公司" align="center" min-width="120">
           <template #default="{ row }">
             {{ getDeptName(row.deptId) || '-' }}
           </template>
@@ -169,22 +195,69 @@
         <el-table-column
           prop="professionalTitle"
           label="职称"
+          align="center"
+          min-width="120"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          prop="jobTitle"
+          label="岗位"
+          min-width="120"
+          show-overflow-tooltip
+          align="center"
+        />
+        <el-table-column
+          prop="formerPost"
+          align="center"
+          label="历任岗位"
+          min-width="120"
+          show-overflow-tooltip
+        />
+
+        <el-table-column
+          prop="school"
+          align="center"
+          label="出生日期"
+          min-width="150"
+          show-overflow-tooltip
+        >
+          <template #default="{ row }">
+            {{ formatDate(row.birthday).substring(0, 10) || '-' }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="school"
+          align="center"
+          label="毕业院校"
+          min-width="150"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          prop="educationLabel"
+          align="center"
+          label="学历"
           min-width="120"
           show-overflow-tooltip
         />
-        <el-table-column prop="jobTitle" label="岗位" min-width="120" show-overflow-tooltip />
-        <el-table-column prop="school" label="毕业院校" min-width="150" show-overflow-tooltip />
-        <el-table-column prop="educationLabel" label="学历" min-width="120" show-overflow-tooltip />
         <el-table-column
           prop="specialDirection"
           label="专业方向"
-          min-width="120"
+          min-width="150"
+          align="center"
           show-overflow-tooltip
         >
           <template #default="scope">
             {{ getSpecialDirectionLabels(scope.row.specialDirection) }}
           </template>
         </el-table-column>
+
+        <el-table-column
+          prop="achievement"
+          align="center"
+          label="主要业绩"
+          min-width="120"
+          show-overflow-tooltip
+        />
       </el-table>
     </div>
   </el-drawer>
@@ -204,7 +277,7 @@ import {
 import * as DeptApi from '@/api/system/dept'
 import { defaultProps } from '@/utils/tree'
 import { formatDate } from '@/utils/formatTime'
-import { DICT_TYPE, getStrDictOptions, getIntDictOptions } from '@/utils/dict'
+import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 
 type TeamFormData = {
   id?: number
@@ -351,7 +424,13 @@ const normalizeTeamMembers = (data: any): TeamMember[] => {
     jobTitle: item.jobTitle || '',
     school: item.school || '',
     educationLabel: item.educationLabel || '',
-    specialDirection: Array.isArray(item.specialDirection) ? item.specialDirection : []
+    specialDirection: Array.isArray(item.specialDirection) ? item.specialDirection : [],
+    avatar: item.avatar || '',
+    formerPost: item.formerPost || '',
+    echelonLabel: item.echelonLabel || '',
+    expertRankLabel: item.expertRankLabel || '',
+    achievement: item.achievement || '',
+    birthday: item.birthday || ''
   }))
 }