Ver Fonte

专家库调整

yanghao há 4 dias atrás
pai
commit
6ff83cf4c5

+ 55 - 23
src/views/expert/list/index.vue

@@ -220,11 +220,16 @@
                 </div>
                 <div class="summary-item">
                   <span class="summary-label"><Icon icon="ep:office-building" />目前所在单位</span>
-                  <strong>{{ activeExpert.company || '-' }}</strong>
+                  <strong>{{ activeExpert.deptName || '-' }}</strong>
                 </div>
                 <div class="summary-item">
                   <span class="summary-label"><Icon icon="ep:phone" />联系方式</span>
-                  <strong>{{ activeExpert.contact || '-' }}</strong>
+                  <strong>{{ activeExpert.phone || '-' }}</strong>
+                </div>
+
+                <div class="summary-item">
+                  <span class="summary-label"><Icon icon="ep:eleme" />邮箱</span>
+                  <strong>{{ activeExpert.email || '-' }}</strong>
                 </div>
               </div>
             </div>
@@ -273,14 +278,12 @@
                 <el-button
                   size="large"
                   type="primary"
-                  plain
                   @click="handleEdit"
                   v-hasPermi="['rd:expert-pool:update']"
                   >维护档案</el-button
                 >
                 <el-button
                   size="large"
-                  plain
                   type="danger"
                   @click="handleDeleteExpert"
                   v-hasPermi="['rd:expert-pool:delete']"
@@ -500,6 +503,22 @@
           </el-col>
         </el-row>
 
+        <el-row :gutter="20">
+          <el-col :span="24">
+            <el-form-item label="联系电话" prop="phone">
+              <el-input v-model="formData.phone" placeholder="请输入联系电话" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row :gutter="20">
+          <el-col :span="24">
+            <el-form-item label="邮箱" prop="email">
+              <el-input v-model="formData.email" placeholder="请输入邮箱" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
         <el-row :gutter="20">
           <el-col :span="24">
             <el-form-item label="工作经历" prop="formerPost">
@@ -638,7 +657,9 @@ const defaultFormData = () => ({
   formerPost: '',
   jobTitle: '',
   professionalTitle: '',
-  expertRank: []
+  expertRank: [],
+  phone: '',
+  email: ''
 })
 
 const deptList2 = ref<Tree[]>([]) // 树形结构
@@ -716,7 +737,9 @@ const buildFormDataFromExpertDetail = (detail: any) => {
     formerPost: detail?.formerPost || '',
     jobTitle: detail?.jobTitle || '',
     professionalTitle: detail?.professionalTitle || '',
-    expertRank: detail?.expertRank || []
+    expertRank: detail?.expertRank || [],
+    phone: detail?.phone || '',
+    email: detail?.email || ''
   }
 }
 
@@ -774,6 +797,9 @@ type ExpertProfile = {
   tags: string[]
   achievement: string
   records: ExpertRecord[]
+  phone: string
+  email: string
+  deptName: string
 }
 
 type ExpertItem = {
@@ -800,6 +826,8 @@ type ExpertItem = {
   softwareSkills: number[]
   teams?: Array<{ id: number; teamName?: string }>
   sort?: number // 同梯队同序列内的排序值
+  email: string
+  deptName: string
 }
 
 type ExpertGroup = {
@@ -958,7 +986,10 @@ const buildExpertProfile = (expert: ExpertItem, groupLabel?: string): ExpertProf
     honors: expert.remark || '',
     tags: [expert.professionalTitle].filter(Boolean),
     achievement: expert.achievement || '暂无',
-    records: []
+    records: [],
+    phone: expert.phone || '',
+    email: expert.email || '',
+    deptName: expert.deptName || ''
   }
 }
 
@@ -1418,7 +1449,7 @@ onMounted(async () => {
   margin: 0 0 18px;
   padding: 18px 22px 20px;
 
-  border-radius: 10px;
+  border-radius: 5px;
   background: #fff;
   box-shadow: 0 2px 4px rgba(34, 57, 86, 0.06);
 }
@@ -1531,7 +1562,7 @@ onMounted(async () => {
   min-width: 0;
   padding: 28px 29px 26px;
 
-  border-radius: 10px;
+  border-radius: 5px;
   box-sizing: border-box;
   background: #fff;
   box-shadow: 0 2px 4px rgba(34, 57, 86, 0.06);
@@ -2186,7 +2217,7 @@ onMounted(async () => {
   margin: 0;
   color: #102234;
   font-size: 18px;
-  font-weight: 800;
+  font-weight: normal;
 }
 
 .drawer-header p {
@@ -2203,9 +2234,9 @@ onMounted(async () => {
   margin: 18px;
   padding: 16px;
   border: 1px solid rgba(28, 44, 62, 0.08);
-  border-radius: 8px;
+  border-radius: 5px;
   background: #fff;
-  box-shadow: 0 8px 30px rgba(28, 44, 62, 0.06);
+  // box-shadow: 0 8px 30px rgba(28, 44, 62, 0.06);
 }
 
 .profile-aside {
@@ -2220,7 +2251,7 @@ onMounted(async () => {
   justify-content: center;
   min-height: 150px;
   max-height: 150px;
-  border-radius: 14px;
+  border-radius: 5px;
   background: linear-gradient(145deg, #b7d3cd, #e8f0ee);
   color: #0f5b58;
   font-size: 46px;
@@ -2247,8 +2278,8 @@ onMounted(async () => {
   flex-direction: column;
   gap: 3px;
   padding: 9px 10px;
-  border: 1px solid #dbe3df;
-  border-radius: 8px;
+  border-bottom: 1px dashed rgba(28, 44, 62, 0.08);
+  border-radius: 5px;
   background: #fdfefe;
   overflow-wrap: anywhere;
 }
@@ -2305,8 +2336,9 @@ onMounted(async () => {
 
 .info-block {
   padding: 12px 14px;
-  border: 1px solid #dbe3df;
-  border-radius: 12px;
+  border: none;
+  border-bottom: 1px dashed rgba(28, 44, 62, 0.08);
+
   background: #fdfefe;
 }
 
@@ -2319,9 +2351,9 @@ onMounted(async () => {
 }
 
 .info-block strong {
-  color: #203130;
-  font-size: 13px;
-  font-weight: 800;
+  // color: #203130;
+  // font-size: 13px;
+  font-weight: normal;
   line-height: 1.55;
 }
 
@@ -2345,8 +2377,8 @@ onMounted(async () => {
 
 .record-panel {
   margin: 0 20px 26px;
-  border: 1px solid rgba(28, 44, 62, 0.08);
-  border-radius: 8px;
+
+  border-radius: 5px;
   overflow: hidden;
   background: #fff;
   // box-shadow: 0 8px 30px rgba(28, 44, 62, 0.05);
@@ -2361,7 +2393,7 @@ onMounted(async () => {
   margin: 0;
   color: #1e2d3a;
   font-size: 18px;
-  font-weight: 800;
+  font-weight: normal;
 }
 
 .record-header p {

+ 2 - 2
src/views/researchProject/breakdown/index.vue

@@ -154,9 +154,9 @@
     </div>
 
     <el-empty v-if="!taskTree.length" description="暂未分解任务">
-      <el-button type="primary" @click="openTaskForm()">
+      <!-- <el-button type="primary" @click="openTaskForm()">
         <Icon icon="ep:plus" /> 新增一级任务
-      </el-button>
+      </el-button> -->
     </el-empty>
 
     <el-table

+ 8 - 2
src/views/researchProject/list/index.vue

@@ -40,7 +40,13 @@
   <ContentWrap style="border: none">
     <zm-table v-loading="loading" :data="list" row-key="id">
       <zm-table-column label="项目名称" prop="projectName" min-width="220" show-overflow-tooltip />
-      <zm-table-column label="立项时间" prop="projectDate" min-width="220" show-overflow-tooltip />
+      <zm-table-column label="立项时间" prop="projectDate" min-width="220" show-overflow-tooltip>
+        <template #default="scope">
+          <span v-if="scope.row.projectDate">
+            {{ formatToDate(scope.row.projectDate) }}
+          </span>
+        </template>
+      </zm-table-column>
       <zm-table-column
         label="计划结题时间"
         prop="planEndDate"
@@ -610,7 +616,7 @@ import {
   approvePre,
   approveFormal
 } from '@/api/project'
-import dayjs from 'dayjs'
+import { formatToDateTime, formatToDate } from '@/utils/dateUtil'
 
 defineOptions({ name: 'ResearchProjectList' })