对比新文件 |
| | |
| | | <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(() => { |
| | | if(tableRef.value){ |
| | | 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); |
| | | data.selected = [row] |
| | | }) |
| | | |
| | | const handleSelectionChange = (val) => { |
| | | // debugger |
| | | // 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> |