马宇豪
2024-11-26 81eb726dec221cce6e0be422a69c01916ac13bf0
src/views/safetyReview/expertManage/postEvaluation/components/expertList.vue
@@ -2,42 +2,62 @@
    <div class="notice">
        <el-dialog
            v-model="dialogVisible"
            title="专家评估"
            :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()">评分</el-button>
                <el-button type="primary" link @click="openEvaluate(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 +65,55 @@
import {reactive, ref, toRefs} from 'vue'
import {ElMessage} from "element-plus";
import Evaluate from "./evaluate";
import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate";
import {
  getProjectExpertEvaluationList,
} from "@/api/backManage/evaluate";
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: '',
  projectCheckTime: '',
  title: ''
})
const {tableData,total,queryParams,projectName,title,projectCheckTime} = toRefs(state)
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
  if(type == 'view'){
    state.title = '专家列表'
        }else{
            ElMessage.warning(res.message)
    state.title = '专家评估'
        }
    }
  state.queryParams.id = value.id
  state.projectName = value.projectName
  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 openEvaluate = (value)=>{
  evaluateRef.value.openDialog(value,state.projectName,state.projectCheckTime)
    }
const closeEvaluate = ()=>{
  dialogVisible.value = false
  emit('getList')
}
defineExpose({