From 8e5874a30ae9b194968393b2399bbba193eaa313 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期三, 20 十一月 2024 17:14:00 +0800
Subject: [PATCH] 项目管理

---
 src/views/safetyReview/projectManage/components/chooseExpert.vue |  185 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 163 insertions(+), 22 deletions(-)

diff --git a/src/views/safetyReview/projectManage/components/chooseExpert.vue b/src/views/safetyReview/projectManage/components/chooseExpert.vue
index 59ffcd2..579d5c1 100644
--- a/src/views/safetyReview/projectManage/components/chooseExpert.vue
+++ b/src/views/safetyReview/projectManage/components/chooseExpert.vue
@@ -13,7 +13,11 @@
           </template>
         </el-table-column>
         <el-table-column label="身份证号" prop="idCard" align="center" />
-        <el-table-column label="等级" prop="level" align="center" />
+        <el-table-column label="等级" prop="ratingLevel" align="center" >
+          <template #default="scope">
+            <span>{{scope.row.ratingLevel == 1 ?'一级':scope.row.ratingLevel == 1?'二级':'三级'}}</span>
+          </template>
+        </el-table-column>
         <el-table-column label="专业领域" prop="domain" align="center" />
         <el-table-column fixed="right" label="操作" align="center" class-name="small-padding fixed-width" width="180">
           <template #default="scope">
@@ -43,10 +47,8 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="允许级别:">
-              <el-checkbox-group v-model="checkList">
-                <el-checkbox label="一级" value="一级" />
-                <el-checkbox label="二级" value="二级" />
-                <el-checkbox label="三级" value="三级" />
+              <el-checkbox-group v-model="queryParams.ratingLevel">
+                <el-checkbox v-for="item in state.levelList" :label="item.id" :key="item.id">{{ item.name }}</el-checkbox>
               </el-checkbox-group>
             </el-form-item>
           </el-col>
@@ -60,6 +62,7 @@
           <el-col :span="24">
             <el-form-item label="拟选用人数:">
               <el-input
+                  clearable
                   v-model.trim="queryParams.num"
                   placeholder="请输入拟选用人数"
                   @input="queryParams.num = queryParams.num.replace(/[^0-9]/g,' ')"
@@ -77,11 +80,15 @@
           </template>
         </el-table-column>
         <el-table-column label="身份证号" prop="idCard" align="center" />
-        <el-table-column label="等级" prop="level" align="center" />
+        <el-table-column label="等级" prop="ratingLevel" align="center" >
+          <template #default="scope">
+           <span>{{scope.row.ratingLevel == 1 ?'一级':scope.row.ratingLevel == 1?'二级':'三级'}}</span>
+          </template>
+        </el-table-column>
         <el-table-column label="专业领域" prop="domain" align="center" />
         <el-table-column fixed="right" label="操作" align="center" class-name="small-padding fixed-width" width="180">
           <template #default="scope">
-            <el-button link type="primary" @click="delF(scope.row)" >删除</el-button>
+            <el-button link type="primary" @click="delR(scope.row)" >删除</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -91,10 +98,11 @@
 </template>
 
 <script setup>
-import {onMounted, ref} from "vue";
+import {onMounted, reactive, ref} from "vue";
 import expertsList from './expertsList.vue'
 import {getExpertTypes} from "@/api/form";
 import {ElMessage} from "element-plus";
+import {addProject, choose, expertRound, getCheckInfo} from "@/api/projectManage";
 
 const emit = defineEmits(["getNextStatus"]);
 const fTableRef  = ref(null);
@@ -110,6 +118,29 @@
 const expertType = ref([])
 const checkList = ref([])
 const domainList = ref([])
+const state = reactive({
+  formData: {
+    id:null,
+    saveData: [],
+    delData: []
+  },
+  levelList: [
+    {
+      id: 1,
+      name: '一级'
+    },
+    {
+      id: 2,
+      name: '二级'
+    },
+    {
+      id: 3,
+      name: '三级'
+    },
+  ]
+})
+
+
 
 onMounted(() =>{
   getDomain()
@@ -122,44 +153,154 @@
       return;
     }
   }
-
   //保存按钮
   if(type === 'add'){
+    let fData = []
+    let rData = []
     //成功后自动到下一步 项目id
-    emit('getNextStatus', 2);
+    const {...data} = state.formData
+    data.id = val
+    if(fixedDataList.value && fixedDataList.value.length > 0){
+      fData = fixedDataList.value.map(item => {
+        return {
+          expertId: item.id,
+          expertName:item.name,
+          selectionMode: 1,
+          teamLeader: null
+        }
+      })
+    }
+    if(randomDataList.value && randomDataList.value.length > 0){
+      rData = randomDataList.value.map(item => {
+        return {
+          expertId: item.id,
+          expertName:item.name,
+          selectionMode: 2,
+          teamLeader: null
+        }
+      })
+    }
+    data.saveData = fData.concat(rData)
 
+    const res = await choose(data);
+    if(res.code == 200){
+      ElMessage.success('新增成功')
+      emit('getNextStatus', val);
+      reset()
+    }else{
+      ElMessage.warning(res.message)
+    }
   }else if(type === 'clickEdit'){
-    //变更按钮
+    let fData = []
+    let rData = []
+    const {...data} = state.formData
+    data.id = val
+    if(fixedDataList.value && fixedDataList.value.length > 0){
+      fData = fixedDataList.value.map(item => {
+        return {
+          id: item.expertId ? item.id : '',
+          expertId: item.expertId ? item.expertId : item.id,
+          expertName:item.name,
+          selectionMode: 1,
+          teamLeader: null
+        }
+      })
+    }
+    if(randomDataList.value && randomDataList.value.length > 0){
+      rData = randomDataList.value.map(item => {
+        return {
+          id: item.expertId ? item.id : '',
+          expertId: item.expertId ? item.expertId : item.id,
+          expertName:item.name,
+          selectionMode: 2,
+          teamLeader: null
+        }
+      })
+    }
+    data.saveData = fData.concat(rData)
+    const res = await choose(data);
+    if(res.code == 200){
+      ElMessage.success('修改成功')
+    }else{
+      ElMessage.warning(res.message)
+    }
 
   }else if(type === 'detail'){
-    console.log("view222222",type,val)
+    const param = {
+      id: val
+    }
+    const res = await  getCheckInfo(param);
+    if(res.code == 200){
+      fixedDataList.value = res.data.projectExpertCheckResp.filter(item => item.selectionMode === 1)
+      randomDataList.value = res.data.projectExpertCheckResp.filter(item => item.selectionMode === 2)
+      console.log('res',fixedDataList.value)
+    }else{
+      ElMessage.warning(res.message)
+    }
   }
 }
 
 const chooseExpert = (type) => {
-  expertsListRef.value.openDialog(type,fixedDataList.value)
+  expertsListRef.value.openDialog(type,fixedDataList.value,domainList.value)
 }
 const getSelected = (type,data)=>{
-  fixedDataList.value = JSON.parse(JSON.stringify(data))
+  const selectData = JSON.parse(JSON.stringify(data))
+  if(fixedDataList.value && fixedDataList.value.length > 0){
+    fixedDataList.value.forEach(item => {
+      if(item.expertId){
+        selectData.forEach((i,index) => {
+          if(i.id == item.expertId){
+            selectData[index] = item
+          }
+        })
+      }
+    })
+  }
+  fixedDataList.value = selectData
 }
 const delF = (val) => {
+  if(val.expertId){
+    state.formData.delData.push(val.id)
+  }
   fixedDataList.value = fixedDataList.value.filter(item => item.id != val.id)
 }
 
+const delR = (val) => {
+  if(val.expertId){
+    state.formData.delData.push(val.id)
+  }
+  randomDataList.value = randomDataList.value.filter(item => item.id != val.id)
+}
 const professionChange=(value)=> {
-  console.log(value,'val')
+  queryParams.value.domain = value.map(item => item[1])
 }
 const getDomain = async () => {
-  // const res = await getExpertTypes()
-  // if(res.code == 200){
-  //   domainList.value = res.data
-  // }else{
-  //   ElMessage.warning(res.message)
-  // }
+  const res = await getExpertTypes()
+  if(res.code == 200){
+    domainList.value = res.data
+  }else{
+    ElMessage.warning(res.message)
+  }
 }
 
-const random = () => {
+const random = async () => {
+  console.log('11',randomDataList.value)
+  randomDataList.value.forEach(item => {
+    if(item.expertId){
+      state.formData.delData.push(item.id)
+    }
+  })
+  if(queryParams.value.num =='' || queryParams.value.num == undefined){
+    ElMessage.warning('拟选用人数不能为空')
+    return
+  }
   rLoading.value = true
+  const res = await expertRound(queryParams.value)
+  if(res.code == 200){
+    randomDataList.value = res.data
+  }else{
+    ElMessage.warning(res.message)
+  }
   rLoading.value = false
 }
 

--
Gitblit v1.9.2