From 0d5f2c20521598c01bc2a2d6376ab564b5effc2a Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期二, 10 十二月 2024 08:54:59 +0800 Subject: [PATCH] 修改bug --- src/views/safetyReview/projectManage/components/expertsList.vue | 294 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 294 insertions(+), 0 deletions(-) diff --git a/src/views/safetyReview/projectManage/components/expertsList.vue b/src/views/safetyReview/projectManage/components/expertsList.vue new file mode 100644 index 0000000..cf258f0 --- /dev/null +++ b/src/views/safetyReview/projectManage/components/expertsList.vue @@ -0,0 +1,294 @@ +<template> + <div class="notice"> + <el-dialog + v-model="dialogVisible" + :title="title" + width="60%" + > + <el-form :model="queryParams" :inline="true" label-width="90px"> + <el-form-item label="姓名"> + <el-input + v-model.trim="queryParams.name" + placeholder="姓名" + clearable + style="width: 250px" + /> + </el-form-item> + <el-form-item label="手机号"> + <el-input + v-model.trim="queryParams.phone" + placeholder="手机号" + clearable + style="width: 250px" + /> + </el-form-item> + <el-form-item label="等级"> + <el-select v-model="queryParams.ratingLevel" clearable style="width: 250px" placeholder="等级" > + <el-option + v-for="item in levelList" + :key="item.id" + :label="item.name" + :value="item.id" + /> + </el-select> + </el-form-item> + <el-form-item label="专业领域"> + <el-cascader + clearable + style="width: 100%" + v-model="expertType" + :options="domainList" + :props="{ expandTrigger: 'hover',value: 'classifyName',label: 'classifyName' }" + @change="professionChange" + > + </el-cascader> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="Search" @click="search">搜索</el-button> + <el-button icon="Refresh" @click="research">重置</el-button> + </el-form-item> + </el-form> + <el-table v-loading="loading" ref="tableRef" :data="expertList" :border="true" row-key="id" @select="select" @selection-change="handleSelectionChange"> + <el-table-column type="selection" :reserve-selection="true" width="55" /> + <el-table-column label="姓名" align="center" prop="name" /> + <el-table-column label="身份证号" align="center" prop="idCard" /> + <el-table-column label="出生日期" align="center" prop="birthdayName" /> + <el-table-column label="性别" align="center" prop="sex" > + <template #default="scope"> + <span>{{scope.row.sex === 0 ? '男' : '女'}}</span> + </template> + </el-table-column> + <el-table-column label="学历" align="center" prop="degree" /> + <el-table-column label="所学专业" align="center" prop="speciality" /> + <el-table-column label="职称" align="center" prop="title"/> + <el-table-column label="在岗情况" align="center" prop="dutyStatus" > + <template #default="scope"> + <span>{{scope.row.dutyStatus === 0 ? '在岗' : '退休'}}</span> + </template> + </el-table-column> + <el-table-column label="单位全称" align="center" prop="companyName" width="180"/> + <el-table-column label="现从事专业及方向" align="center" prop="currentProfession"/> + <el-table-column label="联系方式" align="center" prop="phone"/> + <el-table-column label="支撑方向" align="center" prop="supportName" width="165"/> + <el-table-column label="专家领域" align="center" prop="domain"/> + <el-table-column label="入库分级" align="center" prop="level"/> + </el-table> + <pagination + v-show="total > 0" + :total="total" + v-model:page="queryParams.pageNum" + v-model:limit="queryParams.pageSize" + @pagination="getList" + /> + <template #footer> + <span class="dialog-footer"> + <el-button @click="dialogVisible = false" size="default">取 消</el-button> + <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button> + </span> + </template> + </el-dialog> + <project-dialog ref="projectRef" @getList="getList"></project-dialog> + </div> +</template> +<script setup> +import {getCurrentInstance, onMounted, reactive, ref, toRefs, defineEmits, nextTick} from "vue"; +import {getDictList} from "@/api/backManage/evaluate"; +import {ElMessage, ElMessageBox} from "element-plus"; +import projectDialog from "@/views/safetyReview/userManage/expertUsers/components/projectDialog.vue" +import Cookies from "js-cookie"; +import {delMonitor, getExpertList, getMonitorList} from "@/api/sysUsers"; +import {getExpertsList, getExpertTypes} from "@/api/form"; +const { proxy } = getCurrentInstance(); +const loading = ref(false); +const emit = defineEmits(['getName']) +const data = reactive({ + queryParams: { + pageNum: 1, + pageSize: 10, + name: '', + phone: '', + ratingLevel: '', + smallClassify: null, + bigClassify: null, + }, + total: 0, + choosed: [], + expertList: [], + domainList: [], + dialogVisible: false, + title: '', + selected: [], + expertType: [], + levelList: [ + { + id: 1, + name: '一级' + }, + { + id: 2, + name: '二级' + }, + { + id: 3, + name: '三级' + }, + ] +}) +const tableRef = ref() +const { queryParams, total, expertList, domainList, levelList , dialogVisible,title,selected, expertType } = toRefs(data); + +const openDialog = (type,choosedData,domainList) => { + research() + nextTick(() => { + tableRef.value.clearSelection() + }) + data.dialogVisible = true + data.choosed = choosedData.map(item => { + return{ + ...item, + id: item.expertId ? item.expertId : item.id + } + }) + nextTick(() => { + data.choosed.forEach(item => { + tableRef.value.toggleRowSelection(item, true); + }) + }) + data.domainList = domainList + data.selected = [] + data.title = type + +} + +const onSubmit = async () => { + if(data.selected.length>0){ + data.choosed = JSON.parse(JSON.stringify(data.selected)) + data.selected.length = 0 + data.queryParams.pageNum = 1 + data.queryParams.pageSize = 10 + emit('getName',data.title,data.choosed) + tableRef.value.clearSelection() + data.dialogVisible = false + }else{ + ElMessage.warning('请选择专家') + } +} + +const getList = async () => { + loading.value = true; + const res = await getExpertsList(data.queryParams) + if(res.code == 200){ + data.expertList = res.rows.map(item => { + return{ + ...item, + birthdayName: item.birthday ? item.birthday.slice(0,10) : '', + supportName: item.supportDirectionSafety.split(',') + } + }) + data.expertList.forEach(item => { + item.supportName.forEach((s,index) => { + switch (s){ + case '1': + item.supportName[index] = '现场检查' + break; + case '2': + item.supportName[index] = '调查评估' + break; + case '3': + item.supportName[index] = '咨询服务' + break; + case '4': + item.supportName[index] = '教育培训' + break; + case '5': + item.supportName[index] = '其他' + break; + } + }) + }) + data.total = res.total + }else{ + ElMessage.warning(res.msg) + } + loading.value = false; +} +const projectRef = ref(); +const openList = (val) => { + projectRef.value.openDialog(val); +} + +// const getDomain = async () => { +// const res = await getExpertTypes() +// if(res.code == 200){ +// data.domainList = res.data +// }else{ +// ElMessage.warning(res.message) +// } +// } + +const select = ((selection, row) => { + // data.expertList.forEach(item => { + // + // }) + // nextTick(() => { + // tableRef.value.toggleRowSelection(item, true) + // }) + + // tableRef.value.clearSelection() + // if(selection.length == 0) { + // return + // } + // tableRef.value.toggleRowSelection(row, true); +}) + +const handleSelectionChange = (val) => { + data.selected = val +} + +const search = ()=>{ + data.queryParams.pageNum = 1 + getList() +} + +const research = ()=>{ + data.expertType = [] + data.queryParams = { + pageNum: 1, + pageSize: 10, + name: '', + phone: '', + ratingLevel: '', + smallClassify: null, + bigClassify: null, + } + getList() +} + +const professionChange=(value)=> { + console.log(value,'val') + data.queryParams.domain = value[1] +} + +defineExpose({ + openDialog +}); + +</script> + +<style scoped lang="scss"> +.notice{ + :deep(.el-form .el-form-item__label) { + font-size: 15px; + } + + ::v-deep(.el-table th.el-table__cell:nth-child(1) .cell) { + visibility: hidden; + } + + .file { + display: flex; + flex-direction: column; + align-items: flex-start; + } +} +</style> -- Gitblit v1.9.2