From b609f77709c4646daf155341475ae14fc0c7943d Mon Sep 17 00:00:00 2001
From: 祖安之光 <11848914+light-of-zuan@user.noreply.gitee.com>
Date: 星期五, 27 六月 2025 13:25:30 +0800
Subject: [PATCH] 修改

---
 src/views/safetyReview/expertManage/postEvaluation/components/expertList.vue |  195 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 151 insertions(+), 44 deletions(-)

diff --git a/src/views/safetyReview/expertManage/postEvaluation/components/expertList.vue b/src/views/safetyReview/expertManage/postEvaluation/components/expertList.vue
index a5a6180..4af447f 100644
--- a/src/views/safetyReview/expertManage/postEvaluation/components/expertList.vue
+++ b/src/views/safetyReview/expertManage/postEvaluation/components/expertList.vue
@@ -2,42 +2,64 @@
     <div class="notice">
         <el-dialog
             v-model="dialogVisible"
-            title="专家评估"
-            width="500px"
+            :title="title"
+            width="75%"
+            @close="closeEvaluate"
         >
           <el-table :data="tableData" border style="width: 100%">
             <el-table-column type="index" width="55" align="center" />
             <el-table-column label="姓名" align="center" prop="name" />
-            <el-table-column label="性别" align="center" prop="birthday" />
-            <el-table-column label="身份证号" align="center" prop="birthday" />
-            <el-table-column label="等级" align="center" prop="degree" />
-            <el-table-column label="专业领域" align="center">
+            <el-table-column label="性别" align="center" prop="sex">
               <template #default="scope">
-                {{findNodeById(expertTypes,scope.row.bigClassify)}}/{{findNodeById(expertTypes,scope.row.smallClassify)}}
+                {{scope.row.sex == 0?'男':scope.row.sex == 1?'女':'未知'}}
               </template>
             </el-table-column>
-            <el-table-column label="选用方式" align="center" prop="birthday" />
-            <el-table-column label="是否为组长" align="center" prop="degree" />
-            <el-table-column label="评估状态" align="center" prop="state">
+            <el-table-column label="身份证号" align="center" prop="idCard" />
+            <el-table-column label="等级" align="center" prop="ratingLevel">
               <template #default="scope">
-                <el-tag :type="scope.row.state==0?'info':scope.row.state==1?'':scope.row.state==2?'success':scope.row.state==3?'danger':'warning'">
-                  {{scope.row.state==0?'暂存':scope.row.state==1?'审核中':scope.row.state==2?'审核通过':scope.row.state==3?'审核驳回':scope.row.state==4?'已作废':'--'}}
+                {{scope.row.ratingLevel == 1?'一级':scope.row.ratingLevel == 2?'二级':scope.row.ratingLevel == 3?'三级':'暂无'}}
+              </template>
+            </el-table-column>
+            <el-table-column label="专业领域" align="center" prop="domain"/>
+            <el-table-column label="选用方式" align="center" prop="selectionMode">
+              <template #default="scope">
+                {{scope.row.selectionMode == 1?'固定':scope.row.selectionMode == 2?'随机':'其他'}}
+              </template>
+            </el-table-column>
+            <el-table-column label="是否为组长" align="center" prop="teamLeader">
+              <template #default="scope">
+                {{scope.row.teamLeader == 0?'否':scope.row.teamLeader == 1?'是':'未知'}}
+              </template>
+            </el-table-column>
+            <el-table-column label="评估状态" align="center" prop="evaluationState">
+              <template #default="scope">
+                <el-tag :type="scope.row.evaluationState == 0?'info':scope.row.evaluationState==1?'success':''">
+                  {{scope.row.evaluationState ==0?'未评估':scope.row.evaluationState==1?'已评估':'--'}}
                 </el-tag>
               </template>
             </el-table-column>
-            <el-table-column label="考评总分" align="center" prop="degree" />
-            <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+            <el-table-column label="考评总分" align="center" prop="score" />
+            <el-table-column v-if="title == '专家评估'" label="操作" align="center" class-name="small-padding fixed-width">
               <template #default="scope">
-                <el-button type="primary" link @click="openEvaluate('edit',scope.row)">评分</el-button>
+                <el-button v-if="scope.row.evaluationState ==0" type="primary" link @click="openEvaluate('add',scope.row)">考评与报销</el-button>
+                <el-button v-if="scope.row.evaluationState ==1" type="primary" link @click="openEvaluate('view',scope.row)">查看</el-button>
+                <el-button v-if="scope.row.evaluationState ==1" type="success" link @click="downloadFile(scope.row)">导出考评表</el-button>
               </template>
             </el-table-column>
           </el-table>
+          <pagination
+              v-show="total > 0"
+              :total="total"
+              v-model:page="queryParams.pageNum"
+              v-model:limit="queryParams.pageSize"
+              @pagination="getEvaluationList"
+          />
             <template #footer>
               <span class="dialog-footer">
-                <el-button type="primary"  @click="dialogVisible = false" size="default" v-preReClick>确认</el-button>
+                <el-button type="primary" @click="closeEvaluate" size="default" v-preReClick>确认</el-button>
               </span>
             </template>
-          <evaluate ref="evaluateRef"></evaluate>
+          <evaluate ref="evaluateRef" @getList="getEvaluationList()"></evaluate>
         </el-dialog>
     </div>
 </template>
@@ -45,43 +67,128 @@
 import {reactive, ref, toRefs} from 'vue'
 import {ElMessage} from "element-plus";
 import Evaluate from "./evaluate";
-import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate";
+import {
+  getExpertEvaDetail,
+  getProjectExpertEvaluationList,
+} from "@/api/backManage/evaluate";
+import {generateWordDocument} from "@/views/safetyReview/projectManage/components/exportWord";
 const dialogVisible = ref(false);
 const evaluateRef = ref()
-const title = ref("");
 const emit = defineEmits(["getList"]);
 const state = reactive({
-
-
+  tableData: [],
+  total: null,
+  queryParams: {
+    id: null,
+    pageNum: 1,
+    pageSize: 10
+  },
+  projectName: '',
+  deptName: '',
+  projectCheckTime: '',
+  title: '',
+  rateList: [
+    {label: '优秀',value: 1},
+    {label: '合格',value: 2},
+    {label: '基本合格',value: 3},
+    {label: '不合格',value: 4}
+  ],
+  directionList: [
+    {
+      value: '1',
+      label: '现场检查'
+    },
+    {
+      value: '2',
+      label: '调查评估'
+    },
+    {
+      value: '3',
+      label: '咨询服务'
+    },
+    {
+      value: '4',
+      label: '教育培训'
+    },
+    {
+      value: '5',
+      label: '其他'
+    }
+  ]
 })
-
-const openDialog = async (type, value) => {
-    if(type === 'edit') {
-        state.form = value;
-        const param = {
-            dictId: value.id
-        }
-        const res = await getDictDetail(param);
-        if(res.code === 200){
-            state.form = res.data
-        }else{
-            ElMessage.warning(res.message)
-        }
-    }
-    dialogVisible.value = true;
+const {tableData,total,queryParams,projectName,title,projectCheckTime} = toRefs(state)
+const openDialog = async (type,value) => {
+  if(type == 'view'){
+    state.title = '专家列表'
+  }else{
+    state.title = '专家评估'
+  }
+  state.queryParams.id = value.id
+  state.projectName = value.projectName
+  state.deptName = value.deptName
+  state.projectCheckTime = value.projectCheckTime
+  await getEvaluationList()
+  dialogVisible.value = true;
 }
 
-const openEvaluate = ()=>{
-  // evaluateRef.value.openDialog()
+const getEvaluationList = async () => {
+  const res = await getProjectExpertEvaluationList(state.queryParams)
+  if(res.code == 200){
+    state.tableData = res.rows
+    state.total = res.total
+  }else{
+    ElMessage.warning(res.msg)
+  }
 }
 
-const reset = () => {
-    state.form = {
-        id: '',
-        label: '',
-        value: '',
-        dictType: "sys_assess_type",
+
+const downloadFile = async (val) => {
+  const res = await getExpertEvaDetail({projectExpertId: val.id});
+  if(res.code == 200){
+    let outData = res.data
+    outData.deptName = state.deptName
+    outData.name = val.name
+    outData.sex = val.sex == 0?'男':'女'
+    outData.domain = val.domain
+    outData.jobCategory = res.data.jobCategory?res.data.jobCategory.split(',').map(item=>{ return state.directionList.find(i=>i.value == item)?.label}):'暂无'
+    outData.professionalEthicsList = state.rateList.map(i => ({...i, checked: i.value !== res.data.professionalEthics}))
+    outData.impartialHonestList = state.rateList.map(i=> ({...i, checked: i.value !== res.data.impartialHonest}))
+    outData.comprehensiveCoordinationList = state.rateList.map(i=> ({...i, checked: i.value !== res.data.comprehensiveCoordination}))
+    outData.professionalAbilityList = state.rateList.map(i=> ({...i, checked: i.value !== res.data.professionalAbility}))
+    outData.expressingOpinionsList = state.rateList.map(i=> ({...i, checked: i.value !== res.data.expressingOpinions}))
+    outData.comprehensiveEvaluationList = state.rateList.map(i=> ({...i, checked: i.value !== res.data.comprehensiveEvaluation}))
+    try {
+      generateWordDocument('/evaluateFile.docx',outData, outData.name + '专家考评表.docx');
+    } catch (error){
+      ElMessage({
+        type: 'warning',
+        message: '导出失败'
+      });
     }
+  }else{
+    ElMessage.warning(res.msg)
+  }
+  // data.companyName = data.companyName != '' ? data.companyName: '-'
+  // data.projectCheckTime = data.projectCheckTime != '' ? data.projectCheckTime: '-'
+  // data.tableData = state.dataList.map(item => {
+  //   return {
+  //     ...item,
+  //     ratingLevel: item.ratingLevel == 1 ? '一级' : item.ratingLevel == 2 ? '二级':item.ratingLevel == 3 ? '三级' : '',
+  //     sex: item.sex == 0 ? '男' : '女',
+  //     selectionMode: item.selectionMode == 1 ? '固定' : '随机',
+  //     teamLeader: item.teamLeader == 1 ? '是' : '否',
+  //   }
+  // })
+
+};
+
+const openEvaluate = (type,value)=>{
+  evaluateRef.value.openDialog(type,value,state.projectName,state.projectCheckTime)
+}
+
+const closeEvaluate = ()=>{
+  dialogVisible.value = false
+  emit('getList')
 }
 
 defineExpose({

--
Gitblit v1.9.2