From 72cd0674ad6380807ed4767386e2d2f5b180e678 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期四, 13 十一月 2025 17:10:10 +0800
Subject: [PATCH] 修改
---
src/views/safetyReview/projectManage/components/expertsList.vue | 315 ++++++++++++++++++++++++----------------------------
1 files changed, 145 insertions(+), 170 deletions(-)
diff --git a/src/views/safetyReview/projectManage/components/expertsList.vue b/src/views/safetyReview/projectManage/components/expertsList.vue
index fbe7987..c132417 100644
--- a/src/views/safetyReview/projectManage/components/expertsList.vue
+++ b/src/views/safetyReview/projectManage/components/expertsList.vue
@@ -6,134 +6,73 @@
width="60%"
>
<el-form :model="queryParams" :inline="true" label-width="90px">
- <el-form-item label="专业类别">
- <el-radio-group v-model="queryParams.expertType">
- <el-radio-button label="">全部</el-radio-button>
- <el-radio-button label="1">安全评价</el-radio-button>
- <el-radio-button label="2">检验检测</el-radio-button>
- </el-radio-group>
- </el-form-item>
<el-form-item label="姓名">
<el-input
- v-model="queryParams.name"
+ v-model.trim="queryParams.name"
placeholder="姓名"
+ clearable
style="width: 250px"
/>
</el-form-item>
<el-form-item label="手机号">
<el-input
- v-model="queryParams.phone"
+ v-model.trim="queryParams.phone"
placeholder="手机号"
+ clearable
style="width: 250px"
/>
</el-form-item>
- <el-form-item label="评价师等级">
- <el-select v-model="queryParams.level" style="width: 250px" placeholder="评价师等级" >
+ <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.name"
- />
- </el-select>
- </el-form-item>
- <el-form-item label="专业方向">
- <el-select v-model="queryParams.major" value-key="id" style="width: 250px" placeholder="专业方向">
- <el-option
- v-for="item in majorList"
- :key="item.id"
- :label="item.label"
:value="item.id"
/>
</el-select>
</el-form-item>
- <el-form-item label="专业方向">
- <el-select v-model="queryParams.post" style="width: 250px" placeholder="请选择职务">
- <el-option
- v-for="item in postList"
- :key="item.id"
- :label="item.name"
- :value="item.name"
- />
- </el-select>
+ <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="dataList" :border="true" @select="select" @selection-change="handleSelectionChange">
- <el-table-column type="selection" width="55" />
- <el-table-column label="用户ID" prop="id" align="center" />
- <el-table-column label="姓名" prop="name" align="center" width="110" />
- <el-table-column label="手机号" prop="phone" align="center" width="125" />
- <el-table-column label="用户名" prop="username" align="center" width="110" />
- <el-table-column label="性别" prop="sex" align="center" >
+ <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 v-if="scope.row.sex === 0">男</span>
- <span v-if="scope.row.sex === 1">女</span>
+ <span>{{scope.row.sex === 0 ? '男' : '女'}}</span>
</template>
</el-table-column>
- <el-table-column label="所属机构" prop="agency.name" align="center" width="110" />
- <el-table-column label="社保" prop="socialSecurity" align="center" width="120">
+ <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">
- <div class="demo-image__preview" v-if="scope.row.socialAttach && scope.row.socialAttach.length>0">
- <el-image
- style="width: 100px; height: 100px"
- :src= "scope.row.socialAttach[0]"
- :zoom-rate="1.2"
- :max-scale="7"
- :min-scale="0.2"
- :preview-src-list="scope.row.socialAttach"
- :initial-index="0"
- fit="cover"
- preview-teleported="true"
- />
- </div>
+ <span>{{scope.row.dutyStatus === 0 ? '在岗' : '退休'}}</span>
</template>
</el-table-column>
- <el-table-column label="医保" prop="medicalInsurance" align="center" width="120">
- <template #default="scope">
- <div class="demo-image__preview" v-if="scope.row.medicalAttach && scope.row.medicalAttach.length>0">
- <el-image
- style="width: 100px; height: 100px"
- :src="scope.row.medicalAttach[0]"
- :zoom-rate="1.2"
- :max-scale="7"
- :min-scale="0.2"
- :preview-src-list="scope.row.medicalAttach"
- :initial-index="0"
- fit="cover"
- preview-teleported="true"
- />
- </div>
- </template>
- </el-table-column>
- <el-table-column label="工资清单" prop="salaryList" align="center" width="120">
- <template #default="scope">
- <div class="demo-image__preview" v-if="scope.row.salaryAttach && scope.row.salaryAttach.length>0">
- <el-image
- style="width: 100px; height: 100px"
- :src= "scope.row.salaryAttach[0]"
- :zoom-rate="1.2"
- :max-scale="7"
- :min-scale="0.2"
- :preview-src-list="scope.row.salaryAttach"
- :initial-index="0"
- fit="cover"
- preview-teleported="true"
- />
- </div>
- </template>
- </el-table-column>
- <el-table-column label="职务" prop="post" align="center" width="120" />
- <el-table-column label="职称" prop="jobTitle" align="center" />
- <el-table-column label="专业方向" prop="majorNames" align="center" width="100" />
- <el-table-column label="评价师等级" prop="level" align="center" width="100" />
- <el-table-column label="业绩汇总" prop="summary" align="center" />
- <el-table-column label="最近评价时间" prop="lastTime" align="center" width="120" />
+ <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"
@@ -148,14 +87,17 @@
</span>
</template>
</el-dialog>
+ <project-dialog ref="projectRef" @getList="getList"></project-dialog>
</div>
</template>
<script setup>
-import {getCurrentInstance, onMounted, reactive, ref, toRefs,defineEmits} from "vue";
+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'])
@@ -163,121 +105,149 @@
queryParams: {
pageNum: 1,
pageSize: 10,
- expertType: "",
name: '',
phone: '',
- level: '',
- major: null,
- post: ''
+ ratingLevel: '',
+ smallClassify: null,
+ bigClassify: null,
},
total: 0,
- dataList: [],
- majorList: [],
+ choosed: [],
+ expertList: [],
+ domainList: [],
+ dialogVisible: false,
+ title: '',
+ selected: [],
+ expertType: [],
levelList: [
{
- id: '1',
+ id: 1,
name: '一级'
},
{
- id: '2',
+ id: 2,
name: '二级'
},
{
- id: '3',
+ id: 3,
name: '三级'
},
- {
- id: '4',
- name: '其他'
- },
- ],
- postList: [
- {
- id: '1',
- name: '法人'
- },
- {
- id: '2',
- name: '过程控制负责人'
- },
- {
- id: '3',
- name: '机构负责人'
- },
- {
- id: '4',
- name: '技术负责人'
- },
- {
- id: '5',
- name: '员工'
- },
- ],
- dialogVisible: false,
- title: '',
- selected: []
+ ]
})
const tableRef = ref()
-const { queryParams, total, dataList, majorList, levelList, postList, dialogVisible,title,selected } = toRefs(data);
+const { queryParams, total, expertList, domainList, levelList , dialogVisible,title,selected, expertType } = toRefs(data);
-const openDialog = (type) => {
- getMajor()
+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
- data.dialogVisible = true
+
}
const onSubmit = async () => {
- if(data.selected.length>0)
- emit('getName',data.title,data.selected[data.selected.length - 1])
- data.dialogVisible = false
+ 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 getExpertList(data.queryParams)
+ loading.value = true;
+ const res = await getExpertsList(data.queryParams)
if(res.code == 200){
- data.dataList = res.data.list.map(item => {
+ data.expertList = res.rows.map(item => {
return{
...item,
- socialAttach: item.socialAttach.map(s => { return import.meta.env.VITE_APP_BASE_API + '/' + s.path}),
- medicalAttach: item.medicalAttach.map(s => { return import.meta.env.VITE_APP_BASE_API + '/' + s.path}),
- salaryAttach: item.salaryAttach.map(s => { return import.meta.env.VITE_APP_BASE_API + '/' + s.path})
+ birthdayName: item.birthday ? item.birthday.slice(0,10) : '',
+ supportName: item.supportDirectionSafety?.split(',')
}
})
- console.log('RES',data.dataList)
- data.total = res.data.total
+ 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.message)
+ ElMessage.warning(res.msg)
}
- loading.value = false
+ loading.value = false;
+}
+const projectRef = ref();
+const openList = (val) => {
+ projectRef.value.openDialog(val);
}
-const getMajor = async () => {
- const queryParams = {
- pageNum: 1,
- pageSize: 50,
- dictType: 'sys_major_orientation'
- }
- const res = await getDictList(queryParams);
- if(res.code === 200){
- data.majorList = res.data.list
- }else{
- ElMessage.warning(res.message)
- }
-}
+// 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) => {
- data.selected = val
+ // debugger
+ // data.selected = val
}
const search = ()=>{
@@ -286,19 +256,24 @@
}
const research = ()=>{
+ data.expertType = []
data.queryParams = {
pageNum: 1,
pageSize: 10,
- expertType: "",
name: '',
phone: '',
- level: '',
- major: null,
- post: ''
+ ratingLevel: '',
+ smallClassify: null,
+ bigClassify: null,
}
getList()
}
+const professionChange=(value)=> {
+ console.log(value,'val')
+ data.queryParams.domain = value[1]
+}
+
defineExpose({
openDialog
});
--
Gitblit v1.9.2