From 0e10023893bd1c0580dddf9dd1c2d4cbc55b090d Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期一, 02 十二月 2024 13:49:13 +0800
Subject: [PATCH] 更新

---
 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